From ff087240b3dee29ce4e14ad0836e76b9fdf312cf Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 19 八月 2025 09:28:07 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/lianhelihua_sh

---
 server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java |  514 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 504 insertions(+), 10 deletions(-)

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 8ba0af2..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,6 +1,8 @@
 package com.doumee.service.business.impl;
 
-import com.doumee.core.constants.Constants;
+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;
 import com.doumee.core.exception.BusinessException;
@@ -10,14 +12,13 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.CategoryMapper;
 import com.doumee.dao.business.model.Category;
-import com.doumee.dao.business.model.Member;
+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.model.Company;
-import com.doumee.dao.business.model.Managers;
 import com.doumee.dao.business.vo.CategoryTree;
-import com.doumee.dao.business.vo.CompanyTree;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.service.business.CategoryService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -25,17 +26,24 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.CellType;
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
+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.*;
 import java.util.stream.Collectors;
 
 /**
@@ -46,6 +54,8 @@
 @Service
 public class CategoryServiceImpl implements CategoryService {
 
+    @Resource(name="sessionRedisTemplate")
+    private RedisTemplate<Object, Serializable> redisTemplate;
     @Autowired
     private CategoryMapper categoryMapper;
 
@@ -375,8 +385,492 @@
         }
         return categoryVOList;
     }
+    public   List<Category>  findAllListForDca() {
+        List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+                .eq(Category::getIsdeleted, Constants.ZERO)
+                .in(Category::getType, Constants.FOUR, Constants.SIX)//涓婚鍜岃瀵熼」
+                .orderByAsc(Category::getSortnum)
+        );
+        return  categoryList;
+    }
+    public   List<Category>  findListForDcaTree(   List<Category> categoryList) {
+        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)) {
+            long index = 1;
+            List<Category> pList = new ArrayList<>();
+            for (Category category : categoryList) {
+                if (category.getParentId() == null) {
+                    category.setChildList(new ArrayList<>());
+                    for (Category cc : categoryList) {
+                        if (Constants.equalsInteger(cc.getParentId(), category.getId())) {
+                            cc.setChildList(new ArrayList<>());
+                            for (Category ccc : categoryList) {
+                                if (Constants.equalsInteger(ccc.getParentId(), cc.getId())) {
+                                    cc.getChildList().add(ccc);
+                                }
+                            }
+                            category.getChildList().add(cc);
+                        }
+                    }
+                    pList.add(category);
+                }
+            }
+            return pList;
+        }
+        return  null;
+    }
+    public   List<Category>  findImportTreeForDca (  List<CategoryDcaProblemDto> categoryList,LoginUserInfo user, Date date) {
+        List<Category> pList = new ArrayList<>();
+        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(categoryList)) {
+            Integer index = 1;
+            for (CategoryDcaProblemDto categoryDcaProblemDto : categoryList) {
+                if(StringUtils.isBlank(categoryDcaProblemDto.getProblem())
+                        &&StringUtils.isBlank(categoryDcaProblemDto.getParentName())
+                        &&StringUtils.isBlank(categoryDcaProblemDto.getTypeName()) ){
+                    //鍘荤┖琛�
+                    continue;
+                }
+                if(StringUtils.isBlank(categoryDcaProblemDto.getParentName())){
+                    throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝琛ㄦ牸绗��"+(index + 1)+"銆戣涓�绾т富棰樹俊鎭笉鑳戒负绌猴紝璇疯繑鍥炴鏌ヨ〃鏍间俊鎭紒");
+                }
+                categoryDcaProblemDto.setProblem(StringUtils.defaultString(categoryDcaProblemDto.getProblem(),"").trim());
+                categoryDcaProblemDto.setTypeName(StringUtils.defaultString(categoryDcaProblemDto.getTypeName(),"").trim());
+                categoryDcaProblemDto.setParentName(StringUtils.defaultString(categoryDcaProblemDto.getParentName(),"").trim());
+                Category first = getNewCateFromListByName(categoryDcaProblemDto.getParentName(), pList);
+                if(first == null){
+                    first = new Category();
+                    first.setIsdeleted(Constants.ZERO);
+                    first.setCreateDate(date);
+                    first.setCreator(user.getId());
+                    first.setIsdeleted(Constants.ZERO);
+                    first.setStatus(Constants.ZERO);
+                    first.setEditDate(date);
+                    first.setEditor(user.getId());
+                    first.setName(categoryDcaProblemDto.getParentName());
+                    first.setType(Constants.FOUR);//涓婚
+                    first.setSortnum(index++);
+                    first.setChildList(new ArrayList<>());
+                    pList.add(first);
+                    List<Category> childList = getSecondListFromImport(first,0,categoryList);
+                    first.setChildList(childList);
+                }
+            }
+        }
+        return  pList;
+    }
+
+    private List<Category> getSecondListFromImport(Category parent,int type,   List<CategoryDcaProblemDto> categoryList) {
+        List<Category> pList = new ArrayList<>();
+        Integer index = 1;
+        for (CategoryDcaProblemDto categoryDcaProblemDto : categoryList) {
+            if(type ==0 && (StringUtils.isBlank(categoryDcaProblemDto.getTypeName()) || StringUtils.isBlank(categoryDcaProblemDto.getProblem()))){
+                //鍘荤┖琛�
+                continue;
+            }
+            if(type ==1 &&(StringUtils.isBlank(categoryDcaProblemDto.getProblem()))){
+                //鍘荤┖琛�
+                continue;
+            }
+            if(type ==0 && StringUtils.isBlank(categoryDcaProblemDto.getTypeName())){
+                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝琛ㄦ牸绗��"+(index + 1)+"銆戣浜岀骇涓婚淇℃伅涓嶈兘涓虹┖锛岃杩斿洖妫�鏌ヨ〃鏍间俊鎭紒");
+            }
+            if(type == 0 && !StringUtils.equals(categoryDcaProblemDto.getParentName(),parent.getName())){
+                //鍙鐞嗗瓙绾�
+                continue;
+            }
+            if(type == 1 && !StringUtils.equals(categoryDcaProblemDto.getTypeName(),parent.getName())){
+                //鍙鐞嗗瓙绾�
+                continue;
+            }
+            Category model = getNewCateFromListByName(type == 0 ?categoryDcaProblemDto.getTypeName():categoryDcaProblemDto.getProblem(), pList);
+            if(model == null){
+                model = new Category();
+                model.setIsdeleted(Constants.ZERO);
+                model.setCreateDate(parent.getCreateDate());
+                model.setCreator(parent.getCreator());
+                model.setIsdeleted(Constants.ZERO);
+                model.setStatus(Constants.ZERO);
+                model.setEditDate(parent.getCreateDate());
+                model.setEditor(parent.getCreator());
+                model.setName(type == 0 ?categoryDcaProblemDto.getTypeName():categoryDcaProblemDto.getProblem());
+                model.setType(type == 0 ? Constants.FOUR:Constants.SIX);//
+                model.setSortnum(index++);
+                model.setChildList(new ArrayList<>());
+                pList.add(model);
+            }
+            if(type == 0){
+                //濡傛灉鏄簩绾т富棰樺鐞嗚幏鍙栧瓙闆嗛儴闂�
+                List<Category> childList = getSecondListFromImport(model,1,categoryList);
+                model.setChildList(childList);
+            }
+        }
+        return  pList;
+    }
+
+    private Category getNewCateFromListByName(String parentName, List<Category> pList) {
+        if(pList ==null){
+            return  null;
+        }
+        for(Category cate : pList){
+            if(StringUtils.equals(parentName,cate.getName())){
+                    return cate;
+            }
+        }
+        return null;
+    }
+    private Category getNewCateFromListByNameAndParent(String parentName,int type,boolean isRoot, List<Category> pList) {
+        for(Category cate : pList){
+            if(StringUtils.equals(parentName,cate.getName()) && Constants.equalsInteger(cate.getType(),type)){
+                if(isRoot && cate.getParentId()==null){
+                    return cate;
+                }else  if(isRoot && cate.getParentId()==null){
+                    return cate;
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public   List<CategoryDcaProblemDto>  findListForDca(Category param){
+        long index =1;
+        List<CategoryDcaProblemDto>  categoryVOList = new ArrayList<>();
+        List<Category> pList = findListForDcaTree( findAllListForDca());
+        for (Category category:pList) {
+            if(category.getChildList().size() ==0){
+                CategoryDcaProblemDto categoryVO = new CategoryDcaProblemDto();
+                categoryVO.setIndex(index);
+                categoryVO.setParentName(category.getName());
+                index++;
+                categoryVOList.add(categoryVO);
+            }else{
+                for (Category cc:category.getChildList()) {
+                    if(cc.getChildList().size() ==0){
+                        CategoryDcaProblemDto categoryVO = new CategoryDcaProblemDto();
+                        categoryVO.setIndex(index);
+                        categoryVO.setParentName(category.getName());
+                        categoryVO.setTypeName(cc.getName());
+                        index++;
+                        categoryVOList.add(categoryVO);
+                    }else{
+                        for (Category ccc:cc.getChildList()) {
+                            CategoryDcaProblemDto categoryVO = new CategoryDcaProblemDto();
+                            categoryVO.setIndex(index);
+                            categoryVO.setParentName(category.getName());
+                            categoryVO.setTypeName(cc.getName());
+                            categoryVO.setProblem(ccc.getName());
+                            index++;
+                            categoryVOList.add(categoryVO);
+
+                        }
+                    }
+                }
+            }
+        }
+        return categoryVOList;
+    }
+
+
+    @Override
+    @PostConstruct
+    public String initRedis(){
+        redisTemplate.delete(Constants.RedisKeys.IMPORTING_CATEGORY);
+        return  "";
+    }
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public String importDcaBatch(MultipartFile file){
+        Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_CATEGORY);
+        if(importing!=null && importing){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ憳宸ュ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
+        }
+        redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_CATEGORY,true);
+        try {
+            ExcelImporter ie = null;
+            List<CategoryDcaProblemDto> dataList =null;
+            try {
+                ie = new ExcelImporter(file,0,0, CellType.STRING); // 纭繚鍗曞厓鏍肩被鍨嬩负瀛楃涓�);
+                dataList = ie.getDataList(CategoryDcaProblemDto.class,null);
+            }  catch (Exception e) {
+                e.printStackTrace();
+            }
+            if(dataList == null || dataList.size() ==0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�");
+            }
+            Date date = new Date();
+            LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+            List<Category> treeImportList =   findImportTreeForDca(dataList,user,date);//鏌ヨ鐜版湁鐨勫叏閮ㄤ富棰樿瀵熼」鏁版嵁
+            if(treeImportList == null || treeImportList.size() ==0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鐨勬湁鏁堟暟鎹负绌猴紒");
+            }
+            //鏌ヨ鐜版湁鐨勫叏閮ㄤ富棰樿瀵熼」鏁版嵁
+            List<Category> list = categoryMapper.selectJoinList(Category.class,new MPJLambdaWrapper<Category>()
+                             .selectAll(Category.class)
+//                             .select("t1.name",Category::getParentName)
+//                             .select("t2.name",Category::getRootName)
+//                             .leftJoin(Category.class,Category::getId,Category::getParentId)
+//                             .leftJoin( "category t2 on t1.parent_id=t2.id")
+                            .eq(Category::getIsdeleted, Constants.ZERO)
+                            .in(Category::getType, Constants.FOUR, Constants.SIX)//涓婚鍜岃瀵熼」
+                            .orderByAsc(Category::getSortnum)
+            ) ;
+            List<Category> treeList =   findListForDcaTree(list);//鏌ヨ鐜版湁鐨勫叏閮ㄤ富棰樿瀵熼」鏁版嵁
+            List<Integer> allUpdateIds = new ArrayList<>();
+            dealImportNewOrUpdateBiz(treeList,treeImportList,allUpdateIds);
+            dealDeletedList(list,allUpdateIds,user,date);//澶勭悊鍒犻櫎鐨勬暟鎹俊鎭�
+            dealTreePathInfo(treeImportList);
+            return "瀵煎叆鎴愬姛";
+        }catch (BusinessException e){
+            throw e;
+        }catch (Exception e){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鍛樺伐淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯");
+        }finally {
+            redisTemplate.delete(Constants.RedisKeys.IMPORTING_CATEGORY);
+        }
+    }
+
+    private void dealImportNewOrUpdateBiz(List<Category> treeList, List<Category> treeImportList, List<Integer> allUpdateIds) {
+        List<Category> newList = new ArrayList<>();
+        List<Category> updateList = new ArrayList<>();
+        for(Category tmodel :treeImportList){
+
+            //澶勭悊涓�绾т富棰樺鏀归�昏緫
+            //鏌ヨ鏄惁瀛樺湪鍚嶇О鐩稿悓鐨勪竴绾т富棰橈紝瀛樺湪鍒欐洿鏂帮紝涓嶅瓨鍦ㄥ垯鏂板
+            Category first = getNewCateFromListByName(tmodel.getName(),treeList);
+            if(first!=null){
+                tmodel.setId(first.getId());
+                tmodel.setChildMatchList(first.getChildList());
+                allUpdateIds.add(first.getId());
+                updateList.add(tmodel);
+            }else{
+                newList.add(tmodel);
+            }
+        }
+
+        //鍏堟壒閲忓鐞嗕竴绾т富棰樼殑澧炴敼鏁版嵁锛屽埛鏂颁竴绾т富棰樺璞$殑缂栫爜
+        if(newList.size() >0){
+            categoryMapper.insert(newList);
+        }
+        if( updateList.size() >0){
+            for(Category update :updateList){
+                categoryMapper.updateById(update);
+            }
+        }
+        dealSecChildList(newList,updateList,allUpdateIds,1);//澶勭悊浜岀骇鏁版嵁
+    }
+
+    private void dealDeletedList(List<Category> list, List<Integer> allUpdateIds, LoginUserInfo user, Date date) {
+        List<Integer> deleteList = new ArrayList<>();
+        for(Category cate : list){
+            for(Integer nowId : allUpdateIds){
+                if(Constants.equalsInteger(cate.getId(),nowId)){
+                    continue;
+                }
+                deleteList.add(cate.getId());
+            }
+        }
+        if(deleteList.size() >0){
+            //鍒犻櫎涓嶅瓨鍦ㄧ殑
+            categoryMapper.update(null,new UpdateWrapper<Category>().lambda()
+                    .set(Category::getIsdeleted,Constants.ONE)
+                    .set(Category::getEditor,user.getId())
+                    .set(Category::getEditDate,date)
+                    .in(Category::getId,deleteList));
+        }
+    }
+
+    private void dealSecChildList(List<Category> newList, List<Category> updateList,List<Integer> allUpdateIds,int level) {
+        List<Category> childNewList = new ArrayList<>();
+        List<Category> childUpdateList = new ArrayList<>();
+        if(newList.size() >0 || updateList.size()>0) {
+            for(Category c : newList){
+                if(c.getChildList()!=null && c.getChildList().size()>0){
+                    for(Category sec : c.getChildList()){
+                        sec.setParentId(c.getId());
+                    }
+                    childNewList.addAll(c.getChildList());
+                }
+            }
+            for(Category c : updateList){
+                if(c.getChildList()!=null && c.getChildList().size()>0){
+                    List<Category> tList = c.getChildMatchList();
+                    for(Category sec : c.getChildList()){
+                        sec.setParentId(c.getId());
+                        Category mmodel = getNewCateFromListByName(sec.getName(),tList);
+                        if(mmodel!=null){
+                            sec.setId(mmodel.getId());
+                            sec.setChildMatchList(mmodel.getChildList());
+                            allUpdateIds.add(mmodel.getId());
+                            childUpdateList.add(sec);
+                        }else{
+                            childNewList.add(sec);
+                        }
+                    }
+                }
+            }
+        }
+        if(childNewList.size() >0){
+            categoryMapper.insert(childNewList);
+        }
+        if( childUpdateList.size() >0){
+            for(Category update :childUpdateList){
+                categoryMapper.updateById(update);
+            }
+        }
+        if(level == 1){
+            dealSecChildList(childNewList,childUpdateList,allUpdateIds,2);//澶勭悊涓夌骇绾ф暟鎹�
+        }
+    }
+    private void dealTreePathInfo(List<Category> tree) {
+        if(tree!=null || tree.size()>0){
+            for(Category t : tree){
+                t.setIdPath(t.getId()+"/");
+                t.setNamePath(t.getName());
+                categoryMapper.updateById(t);
+                dealChildParentId(t,t.getChildList());
+            }
+        }
+    }
+
+    private void dealChildParentId(Category t, List<Category> childList) {
+        if(childList ==null || childList.size()==0){
+            return;
+        }
+        for(Category c : childList){
+            c.setParentId(t.getId());
+            c.setIdPath(t.getIdPath()+c.getId()+"/");
+            c.setNamePath(t.getNamePath()+"/"+c.getName());
+            categoryMapper.updateById(c);
+            if(t.getChildList()!=null || t.getChildList().size()==0){
+                //閫掑綊澶勭悊瀛愰泦
+                dealChildParentId(c,c.getChildList());
+            }
+        }
+    }
 
 
 
+    @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