广州市综治平台后端
xusd
2025-06-16 4ad498e34ed020b3c1ce0d972dd0512cfe01bf82
dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
@@ -547,6 +547,257 @@
        }
    }
    public List<SelectTermDTO> unitChoose4Union(String userId) {
        // 获取当前登录用户
        CtUserDTO loginUser = ctUserService.clientGetUserAll(userId);
        // 获取当前登录用户的部门
        CtUnit loginUnit = mapper.selectById(loginUser.getUnitId());
        if(loginUnit.getUnitGrade()==4){
            loginUnit.setUnitGrade(3);
        }
        // 市级交办
        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 +1123,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 +1142,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 +1184,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);
            }
        }