package cn.huge.module.ctuser.service; import cn.huge.base.common.constant.GzRegionBaseEnum; import cn.huge.base.common.dto.SelectTermDTO; import cn.huge.base.common.exception.ServiceException; import cn.huge.base.common.utils.DateUtils; import cn.huge.base.common.utils.IdUtils; import cn.huge.base.common.utils.ObjectUtils; import cn.huge.base.common.utils.SelectTermUtils; import cn.huge.module.client.api.impl.UtilsClientImpl; import cn.huge.module.constant.BaseConsts; import cn.huge.module.ctuser.dao.mapper.CtUnitMapper; import cn.huge.module.ctuser.domain.po.*; import cn.huge.module.ctuser.dto.CtUnitTreeDTO; import cn.huge.module.ctuser.dto.CtUnitWeChatCountDTO; import cn.huge.module.cust.constant.UserBaseConsts; import cn.huge.module.cust.dto.CtUnitDTO; import cn.huge.module.cust.dto.CtUserDTO; import cn.huge.module.utils.TreeUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; /** * @author liyj * @version 1.0.0 * @title: 客户组织信息表业务逻辑处理 * @Description 客户组织信息表业务逻辑处理 * @company hugeinfo * @Time 2024-08-19 20:04:19 */ @Slf4j @Service @Transactional(rollbackFor = Exception.class) public class CtUnitService extends ServiceImpl { @Autowired private CtUnitMapper mapper; @Autowired private UtilsClientImpl utilsClient; @Autowired private CtDeptService ctDeptService; @Autowired private CtUserService ctUserService; @Autowired private CtAccountService ctAccountService; @Autowired private CtUseroleService ctUseroleService; /** * 更新对象 * * @param entity 对象 */ public void updateCtUnit(CtUnit entity) { try { mapper.updateCtUnit(entity); } catch (Exception e) { log.error("[CtUnitService.updateCtUnit]调用失败,异常信息:" + e, e); throw new ServiceException("CtUnitService.updateCtUnit", e); } } /** * 条件更新对象 * * @param entity 对象 * @param terms 条件 */ public void updateCtUnitTerms(CtUnit entity, Map terms) { try { mapper.updateCtUnitTerms(entity, terms); } catch (Exception e) { log.error("[CtUnitService.updateCtUnitTerms]调用失败,异常信息:" + e, e); throw new ServiceException("CtUnitService.updateCtUnitTerms", e); } } /** * 根据编号物理删除 * * @param id 查询条件集合 */ public void deleteCtUnit(String id) { try { mapper.deleteCtUnit(id); } catch (Exception e) { log.error("[CtUnitService.deleteCtUnit]调用失败,异常信息:" + e, e); throw new ServiceException("CtUnitService.deleteCtUnit", e); } } /** * 按条件查询 * * @param terms 条件 * @return List */ public List listTerms(Map terms) { return mapper.listTerms(terms); } /** * 按条件统计 * * @param terms 条件 * @return long */ public long countTerms(Map terms) { return mapper.countTerms(terms); } /** * 按条件分页查询 * * @param page 分页对象 * @param terms 条件 * @return Page */ public Page pageQuery(PageRequest page, Map terms) { long total = mapper.countTerms(terms); List content = mapper.pageTerms(page, terms); return new PageImpl(content, page, total); } /** * 新增或更新对象 * * @param ctUnit 实体对象 */ public void saveCtUnit(CtUnit ctUnit) { try { Date nowDate = DateUtils.getNowDate(); // 判断是否新增 if (IdUtils.checkNewId(ctUnit.getId())) { ctUnit.setId(utilsClient.getNewTimeId()); ctUnit.setCreateTime(nowDate); } ctUnit.setProv("440000"); ctUnit.setProvName("广东省"); ctUnit.setCity("440100"); ctUnit.setCityName("广州市"); ctUnit.setUpdateTime(nowDate); this.saveOrUpdate(ctUnit); } catch (Exception e) { log.error("[CtUnitService.saveCtUnit]调用失败,异常信息:" + e, e); throw new ServiceException("CtUnitService.saveCtUnit", e); } } /** * 获取所有组织(包含所有下级子组织) * * @param custId 客户编号 * @param firstId 某一级组织编号 * @return List */ public List listUnitTree(String custId, String firstId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.orderByDesc("create_time"); List ctUnits = mapper.selectList(queryWrapper); // 获取所有的 CtDept 的数量 QueryWrapper deptQueryWrapper = new QueryWrapper<>(); deptQueryWrapper.in("unit_id", ctUnits.stream().map(CtUnit::getId).collect(Collectors.toList())); List ctDepts = ctDeptService.list(deptQueryWrapper); // 将 CtDept 的数量存储在 Map 中 Map ctDeptCountMap = ctDepts.stream() .collect(Collectors.groupingBy(CtDept::getUnitId, Collectors.counting())); // 为每个 CtUnit 设置 CtDept 的数量 for (CtUnit ctUnit : ctUnits) { Long ctDeptsCount = ctDeptCountMap.getOrDefault(ctUnit.getId(), 0L); ctUnit.setCountCtDept(ctDeptsCount.intValue()); } return this.createTree(ctUnits, firstId); } /** * 创建某一级组织下树形结构 * * @param ctUnitList 所有组织集合 * @param firstId 某一级组织编号 * @return List */ public List createTree(List ctUnitList, String firstId) { List firstMapList = new ArrayList<>(); for (CtUnit ctUnit : ctUnitList) { for (CtUnit currentParam : ctUnitList) { if (currentParam.getId().equals(ctUnit.getParentId())) { addToMBean(currentParam, ctUnit); break; } } } //取第一级节点 for (CtUnit unit : ctUnitList) { if (StringUtils.isNotEmpty(firstId)) { if (firstId.equals(unit.getId())) { firstMapList.add(unit); } } else { if (BaseConsts.ROOT.equals(unit.getParentId()) || StringUtils.isEmpty(unit.getParentId())) { firstMapList.add(unit); } } } return firstMapList; } /** * 获取组织的子级组织 * * @param targetUnit 目标组织 * @param currentUnit 子级组织 */ public void addToMBean(CtUnit targetUnit, CtUnit currentUnit) { List childListObj = targetUnit.getChildren(); List childList = null; if (CollectionUtils.isEmpty(childListObj)) { childList = new ArrayList(); targetUnit.setChildren(childList); } else { childList = childListObj; } childList.add(currentUnit); } /** * 获取组织相关数据(包含组织下的部门) * * @param unitId 组织主键编号 * @return */ public CtUnit getUnitAndDept(String unitId) { // 组织详情 CtUnit ctUnit = mapper.selectById(unitId); // 组织人员数量 QueryWrapper userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.eq("unit_id", unitId); Integer countCtUser = ctUserService.count(userQueryWrapper); ctUnit.setCountCtUser(countCtUser); // 未配岗人员(单位下) userQueryWrapper.isNull("dept_id"); List unMatchUsers = ctUserService.list(userQueryWrapper); ctUnit.setUnMatchUsers(unMatchUsers); // 部门详情 QueryWrapper deptQueryWrapper = new QueryWrapper<>(); deptQueryWrapper.eq("unit_id", unitId); deptQueryWrapper.orderByDesc("create_time"); List ctDepts = ctDeptService.list(deptQueryWrapper); for (CtDept ctDept : ctDepts) { // 部门 userQueryWrapper.clear(); userQueryWrapper.eq("dept_id", ctDept.getId()); // 部门下成员 List matchUsers = ctUserService.list(userQueryWrapper); ctDept.setMatchUsers(matchUsers); // 部门人员数量 int countDeptUser = ctUserService.count(userQueryWrapper); ctDept.setCountCtUser(countDeptUser); } List ctDeptTrees = ctDeptService.createTree(ctDepts, null); ctUnit.setCtDepts(ctDeptTrees); // 部门数量 ctUnit.setCountCtDept(ctDepts.size()); return ctUnit; } /** * 更新对象 * * @param ctUnit 对象 */ public void updateTerms(CtUnit ctUnit) { mapper.updateTerms(ctUnit); } /** * 小程序统计机构数量 */ public CtUnitWeChatCountDTO wechatCountUnit() { CtUnitWeChatCountDTO ctUnitWeChatCountDTO = new CtUnitWeChatCountDTO(); QueryWrapper unitQueryWrapper = new QueryWrapper<>(); unitQueryWrapper.eq("unit_type", 1); Integer zzUnitNum = mapper.selectCount(unitQueryWrapper); if (ObjectUtils.isEmpty(zzUnitNum)) { zzUnitNum = 0; } ctUnitWeChatCountDTO.setZzUnitNum(zzUnitNum); List unitTypeList = Arrays.asList(2, 3, 4, 5); QueryWrapper unitQueryWrapper1 = new QueryWrapper<>(); unitQueryWrapper1.in("unit_type", unitTypeList); Integer tzUnitNum = mapper.selectCount(unitQueryWrapper1); if (ObjectUtils.isEmpty(tzUnitNum)) { tzUnitNum = 0; } ctUnitWeChatCountDTO.setTzUnitNum(tzUnitNum); return ctUnitWeChatCountDTO; } /** * 交办-选择组织 * * @param userId * @return */ public List unitChoose(String userId) { // 获取当前登录用户 CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); // 获取当前登录用户的部门 CtUnit loginUnit = mapper.selectById(loginUser.getUnitId()); // 市级交办 if (UserBaseConsts.UNIT_GRADE_1 == loginUnit.getUnitGrade()) { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); // 定义市直部门数组 List szbmList = new ArrayList<>(); // 定义区综治中心数组 List 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 result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 ctUnitList = null; if (UserBaseConsts.UNIT_TYPE_101 == loginUnit.getUnitType()) { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()); ctUnitList = mapper.selectList(ctUnitQueryWrapper); } else { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getParentId()); ctUnitList = mapper.selectList(ctUnitQueryWrapper); } // 定义市区直部门数组 List qzbmList = new ArrayList<>(); // 定义镇街综治中心数组 List 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 result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 zjbmList = new ArrayList<>(); //如果是综治中心,走交办流程获取机构。如果不是综治中心,是同级部门,则获取同级部门。 List zjCtUnitList = null; if (UserBaseConsts.UNIT_TYPE_101 == loginUnit.getUnitType()) { QueryWrapper 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); } else { QueryWrapper 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); } 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); } // 查询镇街部门数组 // QueryWrapper ctDeptQueryWrapper = new QueryWrapper<>(); // ctDeptQueryWrapper.eq("unit_id", loginUnit.getId()); // List deptList = ctDeptService.list(ctDeptQueryWrapper); // List 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 ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()).eq("unit_grade", UserBaseConsts.UNIT_GRADE_4); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); List 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 result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List firstChildren = new ArrayList<>(); // 村社 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 ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getParentId()); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); // List 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; } } public List unitChoose4Union(String userId) { // 获取当前登录用户 CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); // 获取当前登录用户的部门 CtUnit loginUnit = mapper.selectById(loginUser.getUnitId()); // 市级交办 if (UserBaseConsts.UNIT_GRADE_1 == loginUnit.getUnitGrade()) { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); // 定义市直部门数组 List szbmList = new ArrayList<>(); // 定义区综治中心数组 List 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 result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 ctUnitList = null; if (UserBaseConsts.UNIT_TYPE_101 == loginUnit.getUnitType()) { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()); ctUnitList = mapper.selectList(ctUnitQueryWrapper); } else { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getParentId()); ctUnitList = mapper.selectList(ctUnitQueryWrapper); } // 定义市区直部门数组 List qzbmList = new ArrayList<>(); // 定义镇街综治中心数组 List 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 result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 zjbmList = new ArrayList<>(); List qzbmList = new ArrayList<>(); //如果是综治中心,走交办流程获取机构。如果不是综治中心,是同级部门,则获取同级部门。 List zjCtUnitList = null; List qzCtUnitList = null; if (UserBaseConsts.UNIT_TYPE_101 == loginUnit.getUnitType()) { QueryWrapper 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 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 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 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 ctDeptQueryWrapper = new QueryWrapper<>(); // ctDeptQueryWrapper.eq("unit_id", loginUnit.getId()); // List deptList = ctDeptService.list(ctDeptQueryWrapper); // List 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 ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getId()).eq("unit_grade", UserBaseConsts.UNIT_GRADE_4); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); List 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 result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", loginUnit.getParentId()); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); // List 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; } } /** * 联合处置申请-选择组织 * * @param userId * @return */ public List assistApplyUnitChoose(String userId) { // 获取当前登录用户 CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); // 获取当前登录用户的部门 CtUnit loginUnit = mapper.selectById(loginUser.getUnitId()); QueryWrapper ctUnitQueryWrapper1 = new QueryWrapper<>(); ctUnitQueryWrapper1.eq("id", loginUnit.getParentId()); CtUnit superiorUnit = mapper.selectById(loginUnit.getParentId()); // 市级 if (UserBaseConsts.UNIT_GRADE_1 == superiorUnit.getUnitGrade()) { QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", superiorUnit.getId()); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); // 定义市直部门数组 List szbmList = new ArrayList<>(); // 定义区综治中心数组 List 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_101 == ctUnit.getUnitType()) { szbmList.add(unitSelectTerm); } if (UserBaseConsts.UNIT_TYPE_102 == ctUnit.getUnitType()) { qzzzxList.add(unitSelectTerm); } } // 封装返回数据 List result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 == superiorUnit.getUnitGrade()) { // 区级 QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", superiorUnit.getId()); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); // 定义市区直部门数组 List qzbmList = new ArrayList<>(); // 定义镇街综治中心数组 List 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_103 == ctUnit.getUnitType()) { zjzzzxList.add(unitSelectTerm); } } // 封装返回数据 List result = new ArrayList<>(); // 创建第一级 SelectTermDTO firstSelectTermDTO = new SelectTermDTO(); firstSelectTermDTO.setValue(loginUser.getUnitId()); firstSelectTermDTO.setLabel(loginUser.getUnitName()); firstSelectTermDTO.setCheckable(false); List 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 == superiorUnit.getUnitGrade()) { // 镇街 // 查询镇街部门数组 QueryWrapper ctDeptQueryWrapper = new QueryWrapper<>(); ctDeptQueryWrapper.eq("unit_id", superiorUnit.getId()); List deptList = ctDeptService.list(ctDeptQueryWrapper); List zjbmList = new ArrayList<>(); for (CtDept ctDept : deptList) { SelectTermDTO unitSelectTerm = new SelectTermDTO(); unitSelectTerm.setValue(ctDept.getId()); unitSelectTerm.setLabel(ctDept.getName()); unitSelectTerm.setParentId(superiorUnit.getId()); unitSelectTerm.setCheckable(true); zjbmList.add(unitSelectTerm); } // 查询村社数组 QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("parent_id", superiorUnit.getId()).eq("unit_grade", UserBaseConsts.UNIT_GRADE_4); List ctUnitList = mapper.selectList(ctUnitQueryWrapper); List 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 result = new ArrayList<>(); // 创建第一级 List firstChildren = new ArrayList<>(); // 村社 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); // 第一级子级 result.addAll(firstChildren); return result; } else { return new ArrayList<>(); } } /** * 获取上级综治中心 * * @param unitId 当前单位编号 * @return */ public CtUnitDTO getParentZzzx(String unitId) { try { // 查询当前单位的上级综治中心 QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("id", unitId).select("parent_id"); CtUnit loginCtUnit = mapper.selectOne(ctUnitQueryWrapper); ctUnitQueryWrapper.clear(); ctUnitQueryWrapper.eq("id", loginCtUnit.getParentId()).eq("unit_type", UserBaseConsts.UNIT_TYPE_101); CtUnit zzzxCtUnit = mapper.selectOne(ctUnitQueryWrapper); CtUnitDTO ctUnitDTO = new CtUnitDTO(); BeanUtils.copyProperties(zzzxCtUnit, ctUnitDTO); return ctUnitDTO; } catch (Exception e) { log.error("[CtUnitService.getParentZzzx]调用失败,异常信息:" + e, e); throw new ServiceException("CtUnitService.getParentZzzx", e); } } /** * 获取本级综治中心 * * @param unitId 当前单位编号 * @return */ public CtUnitDTO getBjZzzx(String unitId) { try { CtUnitDTO ctUnitDTO = new CtUnitDTO(); // 查询自己是否是综治中心 CtUnit loginCtUnit = mapper.selectById(unitId); if (UserBaseConsts.UNIT_TYPE_101 == loginCtUnit.getUnitType()) { BeanUtils.copyProperties(loginCtUnit, ctUnitDTO); } else { // 查询当前单位的上级综治中心 QueryWrapper ctUnitQueryWrapper = new QueryWrapper<>(); ctUnitQueryWrapper.eq("id", loginCtUnit.getParentId()).eq("unit_type", UserBaseConsts.UNIT_TYPE_101); CtUnit zzzxCtUnit = mapper.selectOne(ctUnitQueryWrapper); BeanUtils.copyProperties(zzzxCtUnit, ctUnitDTO); } return ctUnitDTO; } catch (Exception e) { log.error("[CtUnitService.getParentZzzx]调用失败,异常信息:" + e, e); throw new ServiceException("CtUnitService.getParentZzzx", e); } } public CtUnit selectUnitByGridId(String gridUnitId) { return mapper.selectUnitByGridId(gridUnitId); } /** * 转入人民调解系统列表-选择组织 * * @param userId * @return */ public List rmtjUnitChoose(String userId) { // 获取当前登录用户 CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); // 获取当前登录用户的部门 CtUnit loginUnit = mapper.selectById(loginUser.getUnitId()); // 市级 if (UserBaseConsts.UNIT_GRADE_1 == loginUnit.getUnitGrade()) { List selectTermDTOS = new ArrayList<>(); List units = mapper.listUnitSelectTerm(); if (CollectionUtils.isNotEmpty(units)) { // 构建树形结构 selectTermDTOS = SelectTermUtils.createTreeByFirst(units, loginUnit.getId()); } return selectTermDTOS; } else if (UserBaseConsts.UNIT_GRADE_2 == loginUnit.getUnitGrade()) { // 区级 List selectTermDTOS = new ArrayList<>(); List units = mapper.listUnitSelectTerm(); // 司法局查询区所有的 if (CollectionUtils.isNotEmpty(units)) { String firstId = null; if (UserBaseConsts.UNIT_TYPE_105 == loginUnit.getUnitType()) { firstId = loginUnit.getParentId(); } else { firstId = loginUnit.getId(); } // 构建树形结构 selectTermDTOS = SelectTermUtils.createTreeByFirst(units, firstId); } return selectTermDTOS; } else if (UserBaseConsts.UNIT_GRADE_3 == loginUnit.getUnitGrade()) { // 镇街级 List selectTermDTOS = new ArrayList<>(); List units = mapper.listUnitSelectTerm(); // 司法所查询镇街所有的 if (CollectionUtils.isNotEmpty(units)) { String firstId = null; if (UserBaseConsts.UNIT_TYPE_106 == loginUnit.getUnitType()) { firstId = loginUnit.getParentId(); } else { firstId = loginUnit.getId(); } // 构建树形结构 selectTermDTOS = SelectTermUtils.createTreeByFirst(units, firstId); } return selectTermDTOS; } else { // 村居级 List selectTermDTOS = new ArrayList<>(); List units = mapper.listUnitSelectTerm(); // 司法所查询镇街所有的 if (CollectionUtils.isNotEmpty(units)) { // 构建树形结构 selectTermDTOS = SelectTermUtils.createTreeByFirst(units, loginUnit.getId()); } return selectTermDTOS; } } /** * 查询客户下的法院 * * @param userId 用户编号 * @return List */ public List listCourt(String userId) { // 获取当前登录用户 CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); CtUnit ctUnitDTO = getById(loginUser.getUnitId()); Map terms = new HashMap<>(); if (ObjectUtils.isNotEmpty(ctUnitDTO.getArea())) { terms.put("area", ctUnitDTO.getArea()); } else { return new ArrayList<>(); } return mapper.listCourt(terms); } public CtUnit getUnitByRoad(String road) { QueryWrapper zjCtUnitQueryWrapper = new QueryWrapper<>(); zjCtUnitQueryWrapper.eq("road", road) .eq("unit_grade", UserBaseConsts.UNIT_GRADE_3) .eq("unit_type", UserBaseConsts.UNIT_TYPE_101); List zjCtUnitList = mapper.selectList(zjCtUnitQueryWrapper); if (zjCtUnitList != null && zjCtUnitList.size() > 0) return zjCtUnitList.get(0); else return null; } public CtUnit getUnitByArea(String area) { QueryWrapper zjCtUnitQueryWrapper = new QueryWrapper<>(); zjCtUnitQueryWrapper.eq("area", area) .eq("unit_grade", UserBaseConsts.UNIT_GRADE_2) .eq("unit_type", UserBaseConsts.UNIT_TYPE_101); List zjCtUnitList = mapper.selectList(zjCtUnitQueryWrapper); if (zjCtUnitList != null && zjCtUnitList.size() > 0) return zjCtUnitList.get(0); else return null; } public List unitTree(String userId) { CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); CtUnit ctUnit = mapper.selectById(loginUser.getUnitId()); QueryWrapper 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 ctUnits = mapper.selectList(queryWrapper); Set citySet = new HashSet<>(); Set areaSet = new HashSet<>(); Set roadSet = new HashSet<>(); Set villageSet = new HashSet<>(); Set unitSet = new HashSet<>(); Map areaCodeMap = new HashMap<>(); Map 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); } } List 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 tree = TreeUtils.createUserTree(treeList); return tree; } public List unitTree4Union(String userId) { CtUserDTO loginUser = ctUserService.clientGetUserAll(userId); CtUnit ctUnit = mapper.selectById(loginUser.getUnitId()); if (ctUnit.getUnitGrade() == 3) { ctUnit.setUnitGrade(2); } QueryWrapper 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 ctUnits = mapper.selectList(queryWrapper); Set citySet = new HashSet<>(); Set areaSet = new HashSet<>(); Set roadSet = new HashSet<>(); Set villageSet = new HashSet<>(); Set unitSet = new HashSet<>(); Map areaCodeMap = new HashMap<>(); Map 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); } } List 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 tree = TreeUtils.createUserTree(treeList); return tree; } }