From 899c73b04d15a67b94bc3894a54c33418e285212 Mon Sep 17 00:00:00 2001
From: xusd <330628789@qq.com>
Date: Thu, 12 Jun 2025 16:31:50 +0800
Subject: [PATCH] feature:非警务纠纷优化

---
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java |  498 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 454 insertions(+), 44 deletions(-)

diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
index 6691d9a..6b8e111 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
@@ -547,6 +547,254 @@
         }
     }
 
+    public List<SelectTermDTO> unitChoose4Union(String userId) {
+        // 获取当前登录用户
+        CtUserDTO loginUser = ctUserService.clientGetUserAll(userId);
+        // 获取当前登录用户的部门
+        CtUnit loginUnit = mapper.selectById(loginUser.getUnitId());
+        // 市级交办
+        if (UserBaseConsts.UNIT_GRADE_1 == loginUnit.getUnitGrade()) {
+            QueryWrapper<CtUnit> ctUnitQueryWrapper = new QueryWrapper<>();
+            ctUnitQueryWrapper.eq("parent_id", loginUnit.getId());
+            List<CtUnit> ctUnitList = mapper.selectList(ctUnitQueryWrapper);
+            // 定义市直部门数组
+            List<SelectTermDTO> szbmList = new ArrayList<>();
+            // 定义区综治中心数组
+            List<SelectTermDTO> qzzzxList = new ArrayList<>();
+            for (CtUnit ctUnit : ctUnitList) {
+                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+                unitSelectTerm.setValue(ctUnit.getId());
+                unitSelectTerm.setLabel(ctUnit.getUnitName());
+                unitSelectTerm.setParentId(ctUnit.getParentId());
+                unitSelectTerm.setCheckable(true);
+                if (UserBaseConsts.UNIT_TYPE_102 == ctUnit.getUnitType()) {
+                    szbmList.add(unitSelectTerm);
+                }
+                if (UserBaseConsts.UNIT_TYPE_106 == ctUnit.getUnitType() || UserBaseConsts.UNIT_TYPE_105 == ctUnit.getUnitType() || UserBaseConsts.UNIT_TYPE_104 == ctUnit.getUnitType()) {
+                    szbmList.add(unitSelectTerm);
+                }
+                if (UserBaseConsts.UNIT_TYPE_101 == ctUnit.getUnitType()) {
+                    qzzzxList.add(unitSelectTerm);
+                }
+            }
+            // 封装返回数据
+            List<SelectTermDTO> result = new ArrayList<>();
+            // 创建第一级
+            SelectTermDTO firstSelectTermDTO = new SelectTermDTO();
+            firstSelectTermDTO.setValue(loginUser.getUnitId());
+            firstSelectTermDTO.setLabel(loginUser.getUnitName());
+            firstSelectTermDTO.setCheckable(false);
+            List<SelectTermDTO> firstChildren = new ArrayList<>();
+            // 市直部门
+            SelectTermDTO szbmSelectTermDTO = new SelectTermDTO();
+            szbmSelectTermDTO.setValue("szbm");
+            szbmSelectTermDTO.setLabel("市直部门");
+            szbmSelectTermDTO.setCheckable(false);
+            szbmSelectTermDTO.setChildren(szbmList);
+            firstChildren.add(szbmSelectTermDTO);
+            // 区综治中心
+            SelectTermDTO qzzzxSelectTermDTO = new SelectTermDTO();
+            qzzzxSelectTermDTO.setValue("qzzzx");
+            qzzzxSelectTermDTO.setLabel("区综治中心");
+            qzzzxSelectTermDTO.setCheckable(false);
+            qzzzxSelectTermDTO.setChildren(qzzzxList);
+            firstChildren.add(qzzzxSelectTermDTO);
+            // 第一级子级
+            firstSelectTermDTO.setChildren(firstChildren);
+            result.add(firstSelectTermDTO);
+            return result;
+        } else if (UserBaseConsts.UNIT_GRADE_2 == loginUnit.getUnitGrade()) {
+            // 区级交办
+            //如果是综治中心,走交办流程获取机构。如果不是综治中心,是同级部门,则获取同级部门。
+            List<CtUnit> ctUnitList = null;
+            if (UserBaseConsts.UNIT_TYPE_101 == loginUnit.getUnitType()) {
+                QueryWrapper<CtUnit> ctUnitQueryWrapper = new QueryWrapper<>();
+                ctUnitQueryWrapper.eq("parent_id", loginUnit.getId());
+                ctUnitList = mapper.selectList(ctUnitQueryWrapper);
+            } else {
+                QueryWrapper<CtUnit> ctUnitQueryWrapper = new QueryWrapper<>();
+                ctUnitQueryWrapper.eq("parent_id", loginUnit.getParentId());
+                ctUnitList = mapper.selectList(ctUnitQueryWrapper);
+            }
+            // 定义市区直部门数组
+            List<SelectTermDTO> qzbmList = new ArrayList<>();
+            // 定义镇街综治中心数组
+            List<SelectTermDTO> zjzzzxList = new ArrayList<>();
+            for (CtUnit ctUnit : ctUnitList) {
+                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+                unitSelectTerm.setValue(ctUnit.getId());
+                unitSelectTerm.setLabel(ctUnit.getUnitName());
+                unitSelectTerm.setParentId(ctUnit.getParentId());
+                unitSelectTerm.setCheckable(true);
+                if (UserBaseConsts.UNIT_TYPE_102 == ctUnit.getUnitType()) {
+                    qzbmList.add(unitSelectTerm);
+                }
+                if (UserBaseConsts.UNIT_TYPE_106 == ctUnit.getUnitType() || UserBaseConsts.UNIT_TYPE_105 == ctUnit.getUnitType() || UserBaseConsts.UNIT_TYPE_104 == ctUnit.getUnitType()) {
+                    qzbmList.add(unitSelectTerm);
+                }
+                if (UserBaseConsts.UNIT_TYPE_101 == ctUnit.getUnitType()) {
+                    zjzzzxList.add(unitSelectTerm);
+                }
+            }
+            // 封装返回数据
+            List<SelectTermDTO> result = new ArrayList<>();
+            // 创建第一级
+            SelectTermDTO firstSelectTermDTO = new SelectTermDTO();
+            firstSelectTermDTO.setValue(loginUser.getUnitId());
+            firstSelectTermDTO.setLabel(loginUser.getUnitName());
+            firstSelectTermDTO.setCheckable(false);
+            List<SelectTermDTO> firstChildren = new ArrayList<>();
+            // 市直部门
+            SelectTermDTO qzzbmSelectTermDTO = new SelectTermDTO();
+            qzzbmSelectTermDTO.setValue("qzbm");
+            qzzbmSelectTermDTO.setLabel("区直部门");
+            qzzbmSelectTermDTO.setCheckable(false);
+            qzzbmSelectTermDTO.setChildren(qzbmList);
+            firstChildren.add(qzzbmSelectTermDTO);
+            // 区综治中心
+            SelectTermDTO zjzzzxSelectTermDTO = new SelectTermDTO();
+            zjzzzxSelectTermDTO.setValue("zjzzzx");
+            zjzzzxSelectTermDTO.setLabel("街(镇)综治中心");
+            zjzzzxSelectTermDTO.setCheckable(false);
+            zjzzzxSelectTermDTO.setChildren(zjzzzxList);
+            firstChildren.add(zjzzzxSelectTermDTO);
+            // 第一级子级
+            firstSelectTermDTO.setChildren(firstChildren);
+            result.add(firstSelectTermDTO);
+            return result;
+        } else if (UserBaseConsts.UNIT_GRADE_3 == loginUnit.getUnitGrade()) {
+            // 镇街交办
+            // 查询镇街的直属部门组织
+            List<SelectTermDTO> zjbmList = new ArrayList<>();
+            List<SelectTermDTO> qzbmList = new ArrayList<>();
+            //如果是综治中心,走交办流程获取机构。如果不是综治中心,是同级部门,则获取同级部门。
+            List<CtUnit> zjCtUnitList = null;
+            List<CtUnit> qzCtUnitList = null;
+            if (UserBaseConsts.UNIT_TYPE_101 == loginUnit.getUnitType()) {
+                QueryWrapper<CtUnit> zjCtUnitQueryWrapper = new QueryWrapper<>();
+                zjCtUnitQueryWrapper.eq("parent_id", loginUnit.getId())
+                        .eq("unit_grade", UserBaseConsts.UNIT_GRADE_3)
+                        .in("unit_type", UserBaseConsts.UNIT_TYPE_102, UserBaseConsts.UNIT_TYPE_106, UserBaseConsts.UNIT_TYPE_104, UserBaseConsts.UNIT_TYPE_105);
+                zjCtUnitList = mapper.selectList(zjCtUnitQueryWrapper);
+
+                QueryWrapper<CtUnit> qzCtUnitQueryWrapper = new QueryWrapper<>();
+                qzCtUnitQueryWrapper.eq("parent_id", loginUnit.getParentId())
+                        .eq("unit_grade", UserBaseConsts.UNIT_GRADE_2)
+                        .in("unit_type", UserBaseConsts.UNIT_TYPE_102, UserBaseConsts.UNIT_TYPE_106, UserBaseConsts.UNIT_TYPE_104, UserBaseConsts.UNIT_TYPE_105);
+                qzCtUnitList = mapper.selectList(qzCtUnitQueryWrapper);
+
+            } else {
+                QueryWrapper<CtUnit> zjCtUnitQueryWrapper = new QueryWrapper<>();
+
+                zjCtUnitQueryWrapper.eq("parent_id", loginUnit.getParentId())
+                        .eq("unit_grade", UserBaseConsts.UNIT_GRADE_3)
+                        .in("unit_type", UserBaseConsts.UNIT_TYPE_102, UserBaseConsts.UNIT_TYPE_106, UserBaseConsts.UNIT_TYPE_104, UserBaseConsts.UNIT_TYPE_105);
+                zjCtUnitList = mapper.selectList(zjCtUnitQueryWrapper);
+
+                QueryWrapper<CtUnit> qzCtUnitQueryWrapper = new QueryWrapper<>();
+                CtUnit unit = getById(loginUnit.getParentId());
+                qzCtUnitQueryWrapper.eq("parent_id", unit.getParentId())
+                        .eq("unit_grade", UserBaseConsts.UNIT_GRADE_2)
+                        .in("unit_type", UserBaseConsts.UNIT_TYPE_102, UserBaseConsts.UNIT_TYPE_106, UserBaseConsts.UNIT_TYPE_104, UserBaseConsts.UNIT_TYPE_105);
+                qzCtUnitList = mapper.selectList(qzCtUnitQueryWrapper);
+            }
+
+            for (CtUnit zjCtUnit : zjCtUnitList) {
+                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+                unitSelectTerm.setValue(zjCtUnit.getId());
+                unitSelectTerm.setLabel(zjCtUnit.getUnitName());
+                unitSelectTerm.setParentId(zjCtUnit.getParentId());
+                unitSelectTerm.setCheckable(true);
+                zjbmList.add(unitSelectTerm);
+
+            }
+            for (CtUnit qzCtUnit : qzCtUnitList) {
+                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+                unitSelectTerm.setValue(qzCtUnit.getId());
+                unitSelectTerm.setLabel(qzCtUnit.getUnitName());
+                unitSelectTerm.setParentId(qzCtUnit.getParentId());
+                unitSelectTerm.setCheckable(true);
+                qzbmList.add(unitSelectTerm);
+            }
+
+            // 查询镇街部门数组
+//            QueryWrapper<CtDept> ctDeptQueryWrapper = new QueryWrapper<>();
+//            ctDeptQueryWrapper.eq("unit_id", loginUnit.getId());
+//            List<CtDept> deptList = ctDeptService.list(ctDeptQueryWrapper);
+//            List<SelectTermDTO> zjbmList = new ArrayList<>();
+//            for (CtDept ctDept: deptList){
+//                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+//                unitSelectTerm.setValue(ctDept.getId());
+//                unitSelectTerm.setLabel(ctDept.getName());
+//                unitSelectTerm.setParentId(loginUnit.getId());
+//                unitSelectTerm.setCheckable(true);
+//                zjbmList.add(unitSelectTerm);
+//            }
+
+            // 查询村社数组
+            QueryWrapper<CtUnit> ctUnitQueryWrapper = new QueryWrapper<>();
+            ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()).eq("unit_grade", UserBaseConsts.UNIT_GRADE_4);
+            List<CtUnit> ctUnitList = mapper.selectList(ctUnitQueryWrapper);
+            List<SelectTermDTO> csList = new ArrayList<>();
+            for (CtUnit ctUnit : ctUnitList) {
+                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+                unitSelectTerm.setValue(ctUnit.getId());
+                unitSelectTerm.setLabel(ctUnit.getUnitName());
+                unitSelectTerm.setParentId(ctUnit.getParentId());
+                unitSelectTerm.setCheckable(true);
+                csList.add(unitSelectTerm);
+            }
+            // 封装返回数据
+            List<SelectTermDTO> result = new ArrayList<>();
+            // 创建第一级
+            SelectTermDTO firstSelectTermDTO = new SelectTermDTO();
+            firstSelectTermDTO.setValue(loginUser.getUnitId());
+            firstSelectTermDTO.setLabel(loginUser.getUnitName());
+            firstSelectTermDTO.setCheckable(false);
+            List<SelectTermDTO> firstChildren = new ArrayList<>();
+            SelectTermDTO qzzbmSelectTermDTO = new SelectTermDTO();
+            qzzbmSelectTermDTO.setValue("qzbm");
+            qzzbmSelectTermDTO.setLabel("区直部门");
+            qzzbmSelectTermDTO.setCheckable(false);
+            qzzbmSelectTermDTO.setChildren(qzbmList);
+            firstChildren.add(qzzbmSelectTermDTO);
+            // 村社
+            SelectTermDTO zjbmSelectTermDTO = new SelectTermDTO();
+            zjbmSelectTermDTO.setValue("zjbm");
+            zjbmSelectTermDTO.setLabel("街(镇)部门");
+            zjbmSelectTermDTO.setCheckable(false);
+            zjbmSelectTermDTO.setChildren(zjbmList);
+            firstChildren.add(zjbmSelectTermDTO);
+            // 区综治中心
+            SelectTermDTO csSelectTermDTO = new SelectTermDTO();
+            csSelectTermDTO.setValue("cs");
+            csSelectTermDTO.setLabel("村(社)");
+            csSelectTermDTO.setCheckable(false);
+            csSelectTermDTO.setChildren(csList);
+            firstChildren.add(csSelectTermDTO);
+            // 第一级子级
+            firstSelectTermDTO.setChildren(firstChildren);
+            result.add(firstSelectTermDTO);
+            return result;
+        } else {
+            // todo
+            QueryWrapper<CtUnit> ctUnitQueryWrapper = new QueryWrapper<>();
+            ctUnitQueryWrapper.eq("parent_id", loginUnit.getParentId());
+            List<CtUnit> ctUnitList = mapper.selectList(ctUnitQueryWrapper);
+            //
+            List<SelectTermDTO> unitList = new ArrayList<>();
+            for (CtUnit ctUnit : ctUnitList) {
+                SelectTermDTO unitSelectTerm = new SelectTermDTO();
+                unitSelectTerm.setValue(ctUnit.getId());
+                unitSelectTerm.setLabel(ctUnit.getUnitName());
+                unitSelectTerm.setParentId(ctUnit.getParentId());
+                unitSelectTerm.setCheckable(true);
+                unitList.add(unitSelectTerm);
+            }
+            return unitList;
+        }
+    }
+
     /**
      * 联合处置申请-选择组织
      *
@@ -872,11 +1120,11 @@
         else return null;
     }
 
-    public List<CtUnitTreeDTO> unitTree(String userId){
+    public List<CtUnitTreeDTO> unitTree(String userId) {
         CtUserDTO loginUser = ctUserService.clientGetUserAll(userId);
         CtUnit ctUnit = mapper.selectById(loginUser.getUnitId());
         QueryWrapper<CtUnit> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("delete_status",0);
+        queryWrapper.eq("delete_status", 0);
         if (ctUnit.getUnitGrade().equals(1)) {
             queryWrapper.eq("city", ctUnit.getCity());
             queryWrapper.in("unit_grade", Arrays.asList(1, 2, 3, 4));
@@ -891,39 +1139,39 @@
             queryWrapper.in("unit_grade", Arrays.asList(4));
         }
         List<CtUnit> ctUnits = mapper.selectList(queryWrapper);
-        
+
         Set<CtUnitTreeDTO> citySet = new HashSet<>();
         Set<CtUnitTreeDTO> areaSet = new HashSet<>();
         Set<CtUnitTreeDTO> roadSet = new HashSet<>();
         Set<CtUnitTreeDTO> villageSet = new HashSet<>();
         Set<CtUnitTreeDTO> unitSet = new HashSet<>();
 
-        Map<String,String> areaCodeMap = new HashMap<>();
-        Map<String,String> areaNameMap = new HashMap<>();
+        Map<String, String> areaCodeMap = new HashMap<>();
+        Map<String, String> areaNameMap = new HashMap<>();
         for (CtUnit unit : ctUnits) {
-            if(unit.getUnitGrade() == 1 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)){
-                areaCodeMap.put(unit.getCity(),unit.getId());
-                areaNameMap.put(unit.getCity(),unit.getUnitName());
+            if (unit.getUnitGrade() == 1 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getCity(), unit.getId());
+                areaNameMap.put(unit.getCity(), unit.getUnitName());
             }
-            if(unit.getUnitGrade() == 2 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)){
-                areaCodeMap.put(unit.getArea(),unit.getId());
-                areaNameMap.put(unit.getArea(),unit.getUnitName());
+            if (unit.getUnitGrade() == 2 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getArea(), unit.getId());
+                areaNameMap.put(unit.getArea(), unit.getUnitName());
             }
-            if(unit.getUnitGrade() == 3 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)){
-                areaCodeMap.put(unit.getRoad(),unit.getId());
-                areaNameMap.put(unit.getRoad(),unit.getUnitName());
+            if (unit.getUnitGrade() == 3 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getRoad(), unit.getId());
+                areaNameMap.put(unit.getRoad(), unit.getUnitName());
             }
-            if(unit.getUnitGrade() == 4 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)){
-                areaCodeMap.put(unit.getVillage(),unit.getId());
-                areaNameMap.put(unit.getVillage(),unit.getUnitName());
+            if (unit.getUnitGrade() == 4 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getVillage(), unit.getId());
+                areaNameMap.put(unit.getVillage(), unit.getUnitName());
             }
         }
         for (CtUnit unit : ctUnits) {
             CtUnitTreeDTO ctUnitTreeDTO = new CtUnitTreeDTO();
             ctUnitTreeDTO.setValue(unit.getId());
             ctUnitTreeDTO.setLabel(unit.getUnitName());
-            if(unit.getUnitGrade() == 1 && ctUnit.getUnitGrade() == 1){
-                ctUnitTreeDTO.setParentId(unit.getCity()+"01-dept");
+            if (unit.getUnitGrade() == 1 && ctUnit.getUnitGrade() == 1) {
+                ctUnitTreeDTO.setParentId(unit.getCity() + "01-dept");
 
                 CtUnitTreeDTO city = new CtUnitTreeDTO();
                 city.setValue(areaCodeMap.get(unit.getCity()));
@@ -933,91 +1181,253 @@
                 citySet.add(city);
 
                 CtUnitTreeDTO cityDept = new CtUnitTreeDTO();
-                cityDept.setValue(unit.getCity()+"01-dept");
+                cityDept.setValue(unit.getCity() + "01-dept");
                 cityDept.setLabel("市直部门");
                 cityDept.setParentId(areaCodeMap.get(unit.getCity()));
                 cityDept.setCheckable(false);
                 areaSet.add(cityDept);
 
                 CtUnitTreeDTO cityArea = new CtUnitTreeDTO();
-                cityArea.setValue(unit.getCity()+"02-area");
+                cityArea.setValue(unit.getCity() + "02-area");
                 cityArea.setLabel("各区");
                 cityArea.setParentId(areaCodeMap.get(unit.getCity()));
                 cityArea.setCheckable(false);
                 areaSet.add(cityArea);
-            }else if(unit.getUnitGrade() == 2){
-                if(ObjectUtils.isEmpty(areaCodeMap.get(unit.getArea()))){
+            } else if (unit.getUnitGrade() == 2) {
+                if (ObjectUtils.isEmpty(areaCodeMap.get(unit.getArea()))) {
                     continue;
                 }
-                ctUnitTreeDTO.setParentId(unit.getArea()+"01-dept");
+                ctUnitTreeDTO.setParentId(unit.getArea() + "01-dept");
 
                 CtUnitTreeDTO area = new CtUnitTreeDTO();
                 area.setValue(areaCodeMap.get(unit.getArea()));
                 area.setLabel(areaNameMap.get(unit.getArea()));
-                if(ctUnit.getUnitGrade().equals(2)){
+                if (ctUnit.getUnitGrade().equals(2)) {
                     area.setParentId("root");
-                }else{
-                    area.setParentId(unit.getCity()+"02-area");
+                } else {
+                    area.setParentId(unit.getCity() + "02-area");
                 }
                 area.setCheckable(true);
                 areaSet.add(area);
 
                 CtUnitTreeDTO areaDept = new CtUnitTreeDTO();
-                areaDept.setValue(unit.getArea()+"01-dept");
+                areaDept.setValue(unit.getArea() + "01-dept");
                 areaDept.setLabel("区直部门");
                 areaDept.setParentId(areaCodeMap.get(unit.getArea()));
                 areaDept.setCheckable(false);
                 areaSet.add(areaDept);
 
                 CtUnitTreeDTO cityRoad = new CtUnitTreeDTO();
-                cityRoad.setValue(unit.getArea()+"02-road");
+                cityRoad.setValue(unit.getArea() + "02-road");
                 cityRoad.setLabel("各镇街");
                 cityRoad.setParentId(areaCodeMap.get(unit.getArea()));
                 cityRoad.setCheckable(false);
                 areaSet.add(cityRoad);
-            }else if(unit.getUnitGrade() == 3){
-                if(ObjectUtils.isEmpty(areaCodeMap.get(unit.getRoad()))){
+            } else if (unit.getUnitGrade() == 3) {
+                if (ObjectUtils.isEmpty(areaCodeMap.get(unit.getRoad()))) {
                     continue;
                 }
-                ctUnitTreeDTO.setParentId(unit.getRoad()+"01-dept");
+                ctUnitTreeDTO.setParentId(unit.getRoad() + "01-dept");
 
                 CtUnitTreeDTO road = new CtUnitTreeDTO();
                 road.setValue(areaCodeMap.get(unit.getRoad()));
                 road.setLabel(areaNameMap.get(unit.getRoad()));
-                if(ctUnit.getUnitGrade().equals(3)){
+                if (ctUnit.getUnitGrade().equals(3)) {
                     road.setParentId("root");
-                }else{
-                    road.setParentId(unit.getArea()+"02-road");
+                } else {
+                    road.setParentId(unit.getArea() + "02-road");
                 }
                 road.setCheckable(true);
                 roadSet.add(road);
 
                 CtUnitTreeDTO roadDept = new CtUnitTreeDTO();
-                roadDept.setValue(unit.getRoad()+"01-dept");
+                roadDept.setValue(unit.getRoad() + "01-dept");
                 roadDept.setLabel("镇街直部门");
                 roadDept.setParentId(areaCodeMap.get(unit.getRoad()));
                 roadDept.setCheckable(false);
                 villageSet.add(roadDept);
 
-                CtUnitTreeDTO cityVillage= new CtUnitTreeDTO();
-                cityVillage.setValue(unit.getRoad()+"02-village");
+                CtUnitTreeDTO cityVillage = new CtUnitTreeDTO();
+                cityVillage.setValue(unit.getRoad() + "02-village");
                 cityVillage.setLabel("各社区");
                 cityVillage.setParentId(areaCodeMap.get(unit.getRoad()));
                 cityVillage.setCheckable(false);
                 villageSet.add(cityVillage);
 
-            }else if(unit.getUnitGrade() == 4){
-                if(ObjectUtils.isEmpty(unit.getRoad())){
+            } else if (unit.getUnitGrade() == 4) {
+                if (ObjectUtils.isEmpty(unit.getRoad())) {
                     continue;
                 }
-                if(ctUnit.getUnitGrade().equals(4)){
+                if (ctUnit.getUnitGrade().equals(4)) {
                     ctUnitTreeDTO.setParentId("root");
-                }else{
-                    ctUnitTreeDTO.setParentId(unit.getRoad()+"02-village");
+                } else {
+                    ctUnitTreeDTO.setParentId(unit.getRoad() + "02-village");
                 }
             }
             ctUnitTreeDTO.setCheckable(true);
-            if(!unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)){
+            if (!unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                unitSet.add(ctUnitTreeDTO);
+            }
+        }
+        List<CtUnitTreeDTO> treeList = new ArrayList<>();
+        treeList.addAll(citySet);
+        treeList.addAll(TreeUtils.sort(areaSet));
+        treeList.addAll(TreeUtils.sort(roadSet));
+        treeList.addAll(TreeUtils.sort(villageSet));
+        treeList.addAll(TreeUtils.sort(unitSet));
+        List<CtUnitTreeDTO> tree = TreeUtils.createUserTree(treeList);
+        return tree;
+    }
+
+    public List<CtUnitTreeDTO> unitTree4Union(String userId) {
+        CtUserDTO loginUser = ctUserService.clientGetUserAll(userId);
+        CtUnit ctUnit = mapper.selectById(loginUser.getUnitId());
+        if (ctUnit.getUnitGrade() == 3) {
+            ctUnit.setUnitGrade(2);
+        }
+        QueryWrapper<CtUnit> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("delete_status", 0);
+        if (ctUnit.getUnitGrade().equals(1)) {
+            queryWrapper.eq("city", ctUnit.getCity());
+            queryWrapper.in("unit_grade", Arrays.asList(1, 2, 3, 4));
+        } else if (ctUnit.getUnitGrade().equals(2)) {
+            queryWrapper.eq("area", ctUnit.getArea());
+            queryWrapper.in("unit_grade", Arrays.asList(2, 3, 4));
+        } else if (ctUnit.getUnitGrade().equals(3)) {
+            queryWrapper.eq("road", ctUnit.getRoad());
+            queryWrapper.in("unit_grade", Arrays.asList(3, 4));
+        } else if (ctUnit.getUnitGrade().equals(4)) {
+            queryWrapper.eq("village", ctUnit.getVillage());
+            queryWrapper.in("unit_grade", Arrays.asList(4));
+        }
+        List<CtUnit> ctUnits = mapper.selectList(queryWrapper);
+
+        Set<CtUnitTreeDTO> citySet = new HashSet<>();
+        Set<CtUnitTreeDTO> areaSet = new HashSet<>();
+        Set<CtUnitTreeDTO> roadSet = new HashSet<>();
+        Set<CtUnitTreeDTO> villageSet = new HashSet<>();
+        Set<CtUnitTreeDTO> unitSet = new HashSet<>();
+
+        Map<String, String> areaCodeMap = new HashMap<>();
+        Map<String, String> areaNameMap = new HashMap<>();
+        for (CtUnit unit : ctUnits) {
+            if (unit.getUnitGrade() == 1 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getCity(), unit.getId());
+                areaNameMap.put(unit.getCity(), unit.getUnitName());
+            }
+            if (unit.getUnitGrade() == 2 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getArea(), unit.getId());
+                areaNameMap.put(unit.getArea(), unit.getUnitName());
+            }
+            if (unit.getUnitGrade() == 3 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getRoad(), unit.getId());
+                areaNameMap.put(unit.getRoad(), unit.getUnitName());
+            }
+            if (unit.getUnitGrade() == 4 && unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
+                areaCodeMap.put(unit.getVillage(), unit.getId());
+                areaNameMap.put(unit.getVillage(), unit.getUnitName());
+            }
+        }
+        for (CtUnit unit : ctUnits) {
+            CtUnitTreeDTO ctUnitTreeDTO = new CtUnitTreeDTO();
+            ctUnitTreeDTO.setValue(unit.getId());
+            ctUnitTreeDTO.setLabel(unit.getUnitName());
+            if (unit.getUnitGrade() == 1 && ctUnit.getUnitGrade() == 1) {
+                ctUnitTreeDTO.setParentId(unit.getCity() + "01-dept");
+
+                CtUnitTreeDTO city = new CtUnitTreeDTO();
+                city.setValue(areaCodeMap.get(unit.getCity()));
+                city.setLabel(areaNameMap.get(unit.getCity()));
+                city.setParentId("root");
+                city.setCheckable(true);
+                citySet.add(city);
+
+                CtUnitTreeDTO cityDept = new CtUnitTreeDTO();
+                cityDept.setValue(unit.getCity() + "01-dept");
+                cityDept.setLabel("市直部门");
+                cityDept.setParentId(areaCodeMap.get(unit.getCity()));
+                cityDept.setCheckable(false);
+                areaSet.add(cityDept);
+
+                CtUnitTreeDTO cityArea = new CtUnitTreeDTO();
+                cityArea.setValue(unit.getCity() + "02-area");
+                cityArea.setLabel("各区");
+                cityArea.setParentId(areaCodeMap.get(unit.getCity()));
+                cityArea.setCheckable(false);
+                areaSet.add(cityArea);
+            } else if (unit.getUnitGrade() == 2) {
+                if (ObjectUtils.isEmpty(areaCodeMap.get(unit.getArea()))) {
+                    continue;
+                }
+                ctUnitTreeDTO.setParentId(unit.getArea() + "01-dept");
+
+                CtUnitTreeDTO area = new CtUnitTreeDTO();
+                area.setValue(areaCodeMap.get(unit.getArea()));
+                area.setLabel(areaNameMap.get(unit.getArea()));
+                if (ctUnit.getUnitGrade().equals(2)) {
+                    area.setParentId("root");
+                } else {
+                    area.setParentId(unit.getCity() + "02-area");
+                }
+                area.setCheckable(true);
+                areaSet.add(area);
+
+                CtUnitTreeDTO areaDept = new CtUnitTreeDTO();
+                areaDept.setValue(unit.getArea() + "01-dept");
+                areaDept.setLabel("区直部门");
+                areaDept.setParentId(areaCodeMap.get(unit.getArea()));
+                areaDept.setCheckable(false);
+                areaSet.add(areaDept);
+
+                CtUnitTreeDTO cityRoad = new CtUnitTreeDTO();
+                cityRoad.setValue(unit.getArea() + "02-road");
+                cityRoad.setLabel("各镇街");
+                cityRoad.setParentId(areaCodeMap.get(unit.getArea()));
+                cityRoad.setCheckable(false);
+                areaSet.add(cityRoad);
+            } else if (unit.getUnitGrade() == 3) {
+                if (ObjectUtils.isEmpty(areaCodeMap.get(unit.getRoad()))) {
+                    continue;
+                }
+                ctUnitTreeDTO.setParentId(unit.getRoad() + "01-dept");
+
+                CtUnitTreeDTO road = new CtUnitTreeDTO();
+                road.setValue(areaCodeMap.get(unit.getRoad()));
+                road.setLabel(areaNameMap.get(unit.getRoad()));
+                if (ctUnit.getUnitGrade().equals(3)) {
+                    road.setParentId("root");
+                } else {
+                    road.setParentId(unit.getArea() + "02-road");
+                }
+                road.setCheckable(true);
+                roadSet.add(road);
+
+                CtUnitTreeDTO roadDept = new CtUnitTreeDTO();
+                roadDept.setValue(unit.getRoad() + "01-dept");
+                roadDept.setLabel("镇街直部门");
+                roadDept.setParentId(areaCodeMap.get(unit.getRoad()));
+                roadDept.setCheckable(false);
+                villageSet.add(roadDept);
+
+                CtUnitTreeDTO cityVillage = new CtUnitTreeDTO();
+                cityVillage.setValue(unit.getRoad() + "02-village");
+                cityVillage.setLabel("各社区");
+                cityVillage.setParentId(areaCodeMap.get(unit.getRoad()));
+                cityVillage.setCheckable(false);
+                villageSet.add(cityVillage);
+
+            } else if (unit.getUnitGrade() == 4) {
+                if (ObjectUtils.isEmpty(unit.getRoad())) {
+                    continue;
+                }
+                if (ctUnit.getUnitGrade().equals(4)) {
+                    ctUnitTreeDTO.setParentId("root");
+                } else {
+                    ctUnitTreeDTO.setParentId(unit.getRoad() + "02-village");
+                }
+            }
+            ctUnitTreeDTO.setCheckable(true);
+            if (!unit.getUnitType().equals(UserBaseConsts.UNIT_TYPE_101)) {
                 unitSet.add(ctUnitTreeDTO);
             }
         }

--
Gitblit v1.8.0