diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/constant/ScreenConstant.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/constant/ScreenConstant.java index 5ea0aa7cbf..e9729e7a23 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/constant/ScreenConstant.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/evaluationindex/screen/constant/ScreenConstant.java @@ -21,4 +21,7 @@ public interface ScreenConstant { String MONTH_ID = "month"; String YEAR_ID = "year"; + + String GET_AREA_TREE_FAILURE = "查询行政地区编码树失败......"; + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/AgencyController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/AgencyController.java index 86a6f3213e..53646ee6dc 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/AgencyController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/AgencyController.java @@ -3,6 +3,8 @@ package com.epmet.datareport.controller.screen; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.datareport.service.evaluationindex.screen.AgencyService; +import com.epmet.dto.form.AreaCodeDictFormDTO; +import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.evaluationindex.screen.dto.form.CompartmentByBizTypeFormDTO; import com.epmet.evaluationindex.screen.dto.form.CompartmentFormDTO; import com.epmet.evaluationindex.screen.dto.form.TreeByTypeFormDTO; @@ -11,6 +13,8 @@ import com.epmet.evaluationindex.screen.dto.result.TreeResultDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 组织相关api * @@ -66,4 +70,15 @@ public class AgencyController { return new Result().ok(agencyService.compartmentByBizType(compartmentFormDTO)); } + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + @PostMapping("areacodedict") + public Result> areaCodeDictTree(@RequestBody AreaCodeDictFormDTO formDTO){ + return new Result>().ok(agencyService.areaCodeDictTree(formDTO)); + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/AgencyService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/AgencyService.java index 046eaccbef..144e12fe1a 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/AgencyService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/AgencyService.java @@ -1,11 +1,15 @@ package com.epmet.datareport.service.evaluationindex.screen; +import com.epmet.dto.form.AreaCodeDictFormDTO; +import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.evaluationindex.screen.dto.form.CompartmentByBizTypeFormDTO; import com.epmet.evaluationindex.screen.dto.form.CompartmentFormDTO; import com.epmet.evaluationindex.screen.dto.form.TreeByTypeFormDTO; import com.epmet.evaluationindex.screen.dto.result.CompartmentResultDTO; import com.epmet.evaluationindex.screen.dto.result.TreeResultDTO; +import java.util.List; + /** * 组织相关api * @@ -35,4 +39,12 @@ public interface AgencyService { CompartmentResultDTO compartmentByBizType(CompartmentByBizTypeFormDTO compartmentFormDTO); + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + List areaCodeDictTree(AreaCodeDictFormDTO formDTO); + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java index ff1fdaabd7..880e07f357 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/AgencyServiceImpl.java @@ -3,10 +3,13 @@ package com.epmet.datareport.service.evaluationindex.screen.impl; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.utils.Result; import com.epmet.constant.DataSourceConstant; import com.epmet.datareport.dao.evaluationindex.screen.ScreenCustomerAgencyDao; import com.epmet.datareport.dao.evaluationindex.screen.ScreenCustomerGridDao; import com.epmet.datareport.service.evaluationindex.screen.AgencyService; +import com.epmet.dto.form.AreaCodeDictFormDTO; +import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.evaluationindex.screen.constant.ScreenConstant; import com.epmet.evaluationindex.screen.dto.form.CompartmentByBizTypeFormDTO; import com.epmet.evaluationindex.screen.dto.form.CompartmentFormDTO; @@ -14,9 +17,11 @@ import com.epmet.evaluationindex.screen.dto.form.TreeByTypeFormDTO; import com.epmet.evaluationindex.screen.dto.result.AgencyDistributionResultDTO; import com.epmet.evaluationindex.screen.dto.result.CompartmentResultDTO; import com.epmet.evaluationindex.screen.dto.result.TreeResultDTO; +import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import org.apache.ibatis.exceptions.TooManyResultsException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; @@ -35,6 +40,8 @@ public class AgencyServiceImpl implements AgencyService { private ScreenCustomerAgencyDao screenCustomerAgencyDao; @Autowired private ScreenCustomerGridDao screenCustomerGridDao; + @Autowired + private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient; /** * @Description 1、组织机构树 @@ -223,4 +230,22 @@ public class AgencyServiceImpl implements AgencyService { } return agencyAreaInfo; } + + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + @Override + public List areaCodeDictTree(AreaCodeDictFormDTO formDTO) { + Result> listResult = commonServiceOpenFeignClient.areaCodeDictTree(formDTO); + if (!listResult.success()){ + throw new RenException(ScreenConstant.GET_AREA_TREE_FAILURE); + } + if (!CollectionUtils.isEmpty(listResult.getData())){ + return listResult.getData(); + } + return new ArrayList<>(); + } } diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/AreaCodeDictFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/AreaCodeDictFormDTO.java new file mode 100644 index 0000000000..1f25e5db33 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/AreaCodeDictFormDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/1/7 下午1:26 + */ +@Data +public class AreaCodeDictFormDTO implements Serializable { + + private static final long serialVersionUID = 5780301376757138238L; + + /** + * 根结点code 不传,则返回全部 + */ + private String rootAreaCode; +} diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/AreaCodeDictResultDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/AreaCodeDictResultDTO.java new file mode 100644 index 0000000000..641ce7cf78 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/AreaCodeDictResultDTO.java @@ -0,0 +1,43 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2021/1/7 下午1:32 + */ +@Data +public class AreaCodeDictResultDTO implements Serializable { + + private static final long serialVersionUID = -1312164785403693464L; + + /** + * 编码 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 下一级 + */ + private List children; + + @JsonIgnore + private String parentCode; + + public AreaCodeDictResultDTO() { + this.code = ""; + this.name = ""; + this.parentCode = ""; + this.children = new ArrayList<>(); + } +} diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java index a29e1f5203..03bae0640b 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/EpmetCommonServiceOpenFeignClient.java @@ -2,15 +2,8 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.form.CostDayFormDTO; -import com.epmet.dto.form.ExternalAppAuthFormDTO; -import com.epmet.dto.form.GetJwtAccessTokenFormDTO; -import com.epmet.dto.form.WorkDayFormDTO; -import com.epmet.dto.result.CostDayResultDTO; -import com.epmet.dto.form.WorkMinuteFormDTO; -import com.epmet.dto.result.AppIdInfoResultDTO; -import com.epmet.dto.result.ExternalAppAuthResultDTO; -import com.epmet.dto.result.WorkDayResultDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; import com.epmet.feign.fallback.EpmetCommonServiceOpenFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -101,4 +94,13 @@ public interface EpmetCommonServiceOpenFeignClient { */ @PostMapping("commonservice/workday/workminutes") Result> workMinutes(@RequestBody WorkMinuteFormDTO param); + + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + @PostMapping("commonservice/areacode/areacodedicttree") + Result> areaCodeDictTree(@RequestBody AreaCodeDictFormDTO formDTO); } diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java index bd397df1d0..e7a9500143 100644 --- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/feign/fallback/EpmetCommonServiceOpenFeignClientFallback.java @@ -3,15 +3,8 @@ package com.epmet.feign.fallback; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; -import com.epmet.dto.form.CostDayFormDTO; -import com.epmet.dto.form.ExternalAppAuthFormDTO; -import com.epmet.dto.form.GetJwtAccessTokenFormDTO; -import com.epmet.dto.form.WorkDayFormDTO; -import com.epmet.dto.form.WorkMinuteFormDTO; -import com.epmet.dto.result.CostDayResultDTO; -import com.epmet.dto.result.AppIdInfoResultDTO; -import com.epmet.dto.result.ExternalAppAuthResultDTO; -import com.epmet.dto.result.WorkDayResultDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.*; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import org.springframework.stereotype.Component; @@ -86,4 +79,9 @@ public class EpmetCommonServiceOpenFeignClientFallback implements EpmetCommonSer public Result> workMinutes(WorkMinuteFormDTO param) { return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "workMinutes", param); } + + @Override + public Result> areaCodeDictTree(AreaCodeDictFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "areaCodeDictTree", formDTO); + } } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/constant/AreaCodeConstant.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/constant/AreaCodeConstant.java new file mode 100644 index 0000000000..1968766228 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/constant/AreaCodeConstant.java @@ -0,0 +1,14 @@ +package com.epmet.constant; + +/** + * @Author zxc + * @DateTime 2021/1/7 下午4:53 + */ +public interface AreaCodeConstant { + + /** + * redis的key + */ + String SCREEN_TREE = "epmet:screen:tree:areacode"; + +} diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java index 89d7a3460c..3853c46ffa 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java @@ -25,10 +25,13 @@ import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.AreaCodeDTO; +import com.epmet.dto.form.AreaCodeDictFormDTO; +import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.service.AreaCodeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; @@ -81,4 +84,15 @@ public class AreaCodeController { return new Result(); } + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + @PostMapping("areacodedicttree") + public Result> areaCodeDictTree(@RequestBody AreaCodeDictFormDTO formDTO){ + return new Result>().ok(areaCodeService.areaCodeDictTree(formDTO)); + } + } \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeChildDao.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeChildDao.java index 643005e45b..a0b28216b9 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeChildDao.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeChildDao.java @@ -18,9 +18,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.AreaCodeChildDTO; import com.epmet.entity.AreaCodeChildEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * (4-5)街道/城镇和社区/村地区code * @@ -29,5 +32,7 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface AreaCodeChildDao extends BaseDao { - + + List selectAllChild(); + } \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeDao.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeDao.java index a45a6c19c7..037af23936 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeDao.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/dao/AreaCodeDao.java @@ -18,9 +18,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.AreaCodeDTO; import com.epmet.entity.AreaCodeEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 大陆省市区地区码 * @@ -29,5 +32,7 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface AreaCodeDao extends BaseDao { - + + List selectAllArea(); + } \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java index fba7158cd7..d1c6218ea0 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/redis/AreaCodeRedis.java @@ -17,6 +17,7 @@ package com.epmet.redis; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.redis.RedisUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,11 +37,15 @@ public class AreaCodeRedis { } - public void set(){ - + public void set(String key,Object o){ + redisUtils.set(key,o, NumConstant.ONE_NEG); } - public String get(String id){ + public String get(String key){ + Object o = redisUtils.get(key); + if (null != o){ + return o.toString(); + } return null; } diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/AreaCodeService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/AreaCodeService.java index 7804b678e1..110c0586ca 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/AreaCodeService.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/AreaCodeService.java @@ -20,7 +20,10 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.AreaCodeDTO; +import com.epmet.dto.form.AreaCodeDictFormDTO; +import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.entity.AreaCodeEntity; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.Map; @@ -92,4 +95,12 @@ public interface AreaCodeService extends BaseService { * @date 2021-01-07 */ void delete(String[] ids); + + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + List areaCodeDictTree(AreaCodeDictFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java index b3b2eafc80..ae06d00ccc 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java +++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java @@ -17,14 +17,21 @@ package com.epmet.service.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.constant.AreaCodeConstant; +import com.epmet.dao.AreaCodeChildDao; import com.epmet.dao.AreaCodeDao; +import com.epmet.dto.AreaCodeChildDTO; import com.epmet.dto.AreaCodeDTO; +import com.epmet.dto.form.AreaCodeDictFormDTO; +import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.entity.AreaCodeEntity; import com.epmet.redis.AreaCodeRedis; import com.epmet.service.AreaCodeService; @@ -32,10 +39,11 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; /** * 大陆省市区地区码 @@ -48,6 +56,8 @@ public class AreaCodeServiceImpl extends BaseServiceImpl page(Map params) { @@ -101,4 +111,156 @@ public class AreaCodeServiceImpl extends BaseServiceImpl areaCodeDictTree(AreaCodeDictFormDTO formDTO) { + List tree = new ArrayList<>(); + String s = areaCodeRedis.get(AreaCodeConstant.SCREEN_TREE); + if (StringUtils.isNotBlank(s)){ + tree = JSON.parseArray(s,AreaCodeDictResultDTO.class); + }else { + List areaCodeDictResultDTOS = disposeTree(); + areaCodeRedis.set(AreaCodeConstant.SCREEN_TREE,areaCodeDictResultDTOS); + tree = areaCodeDictResultDTOS; + } + if (StringUtils.isBlank(formDTO.getRootAreaCode())){ + return tree; + } + List treeByRootAreaCode = getTreeByRootAreaCode(tree, formDTO.getRootAreaCode()); + return treeByRootAreaCode; + } + + /** + * @Description 行政区树查询 + * @Param + * @author zxc + * @date 2021/1/8 上午8:57 + */ + public List disposeTree(){ + List areaCodeDTOS = baseDao.selectAllArea(); + List areaCodeChildDTOS = childDao.selectAllChild(); + List result = new ArrayList<>(); + List fourResult = new ArrayList<>(); + List cityResult = new ArrayList<>(); + + // 街道-社区 + Map> groupByLevel = areaCodeChildDTOS.stream().collect(Collectors.groupingBy(AreaCodeChildDTO::getLevel)); + List levelFive = groupByLevel.get(NumConstant.FIVE); + Map> groupByPCode = levelFive.stream().collect(Collectors.groupingBy(AreaCodeChildDTO::getPCode)); + List levelFour = groupByLevel.get(NumConstant.FOUR); + levelFour.forEach(four -> { + AreaCodeDictResultDTO dto = new AreaCodeDictResultDTO(); + dto.setCode(four.getCode()); + dto.setName(four.getName()); + dto.setParentCode(four.getPCode()); + groupByPCode.forEach((pCode,v) -> { + if (dto.getCode().equals(pCode)){ + List fiveResult = new ArrayList<>(); + v.forEach(five -> { + AreaCodeDictResultDTO fiveDto = new AreaCodeDictResultDTO(); + fiveDto.setCode(five.getCode()); + fiveDto.setName(five.getName()); + fiveResult.add(fiveDto); + }); + List fiveSort = fiveResult.stream().sorted(Comparator.comparing(AreaCodeDictResultDTO::getCode)).collect(Collectors.toList()); + dto.setChildren(fiveSort); + } + }); + fourResult.add(dto); + }); + List fourSort = new ArrayList<>(); + if (!CollectionUtils.isEmpty(fourResult)){ + fourSort = fourResult.stream().sorted(Comparator.comparing(AreaCodeDictResultDTO::getCode)).collect(Collectors.toList()); + } + + // 省市区 + Map> groupByCity = areaCodeDTOS.stream().collect(Collectors.groupingBy(AreaCodeDTO::getCityCode)); + Map> groupByProvince = areaCodeDTOS.stream().collect(Collectors.groupingBy(AreaCodeDTO::getProvinceCode)); + List finalFourSort = fourSort; + groupByCity.forEach((c, v) -> { + AreaCodeDictResultDTO cityDto = new AreaCodeDictResultDTO(); + cityDto.setName(v.get(NumConstant.ZERO).getCityName()); + cityDto.setCode(v.get(NumConstant.ZERO).getCityCode()); + cityDto.setParentCode(v.get(NumConstant.ZERO).getProvinceCode()); + List threeResult = new ArrayList<>(); + v.forEach(three -> { + AreaCodeDictResultDTO dto = new AreaCodeDictResultDTO(); + dto.setCode(three.getCountyCode()); + dto.setName(three.getCountyName()); + List fourOnceResult = new ArrayList<>(); + finalFourSort.forEach(four -> { + if (dto.getCode().equals(four.getParentCode())){ + fourOnceResult.add(four); + } + }); + dto.setChildren(fourOnceResult); + threeResult.add(dto); + }); + List threeSort = threeResult.stream().sorted(Comparator.comparing(AreaCodeDictResultDTO::getCode)).collect(Collectors.toList()); + cityDto.setChildren(threeSort); + cityResult.add(cityDto); + }); + groupByProvince.forEach((p,v) -> { + AreaCodeDictResultDTO dto = new AreaCodeDictResultDTO(); + dto.setCode(p); + dto.setName(v.get(NumConstant.ZERO).getProvinceName()); + List cityOnceResult = new ArrayList<>(); + cityResult.forEach(c -> { + if (dto.getCode().equals(c.getParentCode())){ + cityOnceResult.add(c); + } + }); + List citySort = cityOnceResult.stream().sorted(Comparator.comparing(AreaCodeDictResultDTO::getCode)).collect(Collectors.toList()); + dto.setChildren(citySort); + result.add(dto); + }); + List collect = result.stream().sorted(Comparator.comparing(AreaCodeDictResultDTO::getCode)).collect(Collectors.toList()); + return collect; + } + + /** + * @Description 根据节点获取组织区域树【遍历】,传参只能是 省,市,区级别 + * @Param tree + * @Param rootAreaCode + * @author zxc + * @date 2021/1/8 上午10:02 + */ + public List getTreeByRootAreaCode(List tree , String rootAreaCode){ + List result = new ArrayList<>(); + AtomicReference flag = new AtomicReference<>(false); + if (!CollectionUtils.isEmpty(tree)){ + // 省级获取 + tree.forEach(t -> { + if (rootAreaCode.equals(t.getCode())){ + result.add(t); + flag.set(true); + } + // 市级获取 + if (!CollectionUtils.isEmpty(t.getChildren()) && flag.get() == false){ + t.getChildren().forEach(c -> { + if (rootAreaCode.equals(c.getCode())){ + result.add(c); + flag.set(true); + } + // 区级获取 + if (!CollectionUtils.isEmpty(c.getChildren()) && flag.get() == false){ + c.getChildren().forEach(three -> { + if (rootAreaCode.equals(three.getCode()) && flag.get() == false){ + result.add(three); + flag.set(true); + } + }); + } + }); + } + }); + } + return result; + } + } \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeChildDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeChildDao.xml index 516654d215..0dfe0d02f1 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeChildDao.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeChildDao.xml @@ -4,4 +4,7 @@ + \ No newline at end of file diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeDao.xml index f3942f9da3..5c038a2a14 100644 --- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeDao.xml +++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/AreaCodeDao.xml @@ -4,4 +4,7 @@ + \ No newline at end of file