From 53f0aebd11edb75148706a012980bbff5148e640 Mon Sep 17 00:00:00 2001 From: zhangyuan Date: Tue, 19 Jul 2022 10:57:27 +0800 Subject: [PATCH] update --- .../com/epmet/dto/result/CustomerTreeDTO.java | 76 +++++++++++++++++++ .../EpmetCommonServiceOpenFeignClient.java | 11 +++ ...tCommonServiceOpenFeignClientFallback.java | 5 ++ .../epmet/controller/AreaCodeController.java | 12 +++ .../com/epmet/service/AreaCodeService.java | 3 + .../service/impl/AreaCodeServiceImpl.java | 58 ++++++++++++++ .../epmet/controller/AgencyController.java | 14 ++++ .../java/com/epmet/dao/CustomerAgencyDao.java | 10 +++ .../java/com/epmet/service/AgencyService.java | 10 +++ .../epmet/service/impl/AgencyServiceImpl.java | 34 +++++++++ .../resources/mapper/CustomerAgencyDao.xml | 11 +++ 11 files changed, 244 insertions(+) create mode 100644 epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CustomerTreeDTO.java diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CustomerTreeDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CustomerTreeDTO.java new file mode 100644 index 0000000000..08eec96007 --- /dev/null +++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/CustomerTreeDTO.java @@ -0,0 +1,76 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +/** + * 客户关系表(01.14 add) + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-02-03 + */ +@Data +public class CustomerTreeDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户id + */ + private String customerId; + + + /** + * 当前客户级别(社区级:community, +乡(镇、街道)级:street, +区县级: district, +市级: city +省级:province) + */ + private String level; + + /** + * 当前客户的地区编码,实际就是根组织的area_code + */ + private String areaCode; + + /** + * 当前客户的地区名称 + */ + private String areaName; + + /** + * 客户名称 + */ + private String customerName; + + /** + * 下一级 + */ + private List children; +} \ No newline at end of file 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 fb854155a2..9c80155953 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 @@ -109,6 +109,17 @@ public interface EpmetCommonServiceOpenFeignClient { @PostMapping("commonservice/areacode/areacodedetail") Result areaCodeDetail(@RequestBody AreaCodeDetailFormDTO formDTO); + /** + * 行政地区编码树查询 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author zhy + * @date 2022/7/6 15:07 + */ + @PostMapping("commonservice/areacode/areacodetree") + Result> areaCodeTree(@RequestBody List formDTO); + /** * @Description 行政地区编码查询 * @Param 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 9b8b0bdc3c..c9c457b0f6 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 @@ -84,6 +84,11 @@ public class EpmetCommonServiceOpenFeignClientFallback implements EpmetCommonSer return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "areaCodeDetail", formDTO); } + @Override + public Result> areaCodeTree(List formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_COMMON_SERVICE, "areaCodeTree", formDTO); + } + @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/controller/AreaCodeController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/AreaCodeController.java index a57e19bc99..ca212e908f 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 @@ -28,6 +28,7 @@ import com.epmet.dto.AreaCodeDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.dto.result.AreaCodeResultDTO; +import com.epmet.dto.result.CustomerTreeDTO; import com.epmet.service.AreaCodeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -141,4 +142,15 @@ public class AreaCodeController { public Result areaCodeDetail(@RequestBody AreaCodeDetailFormDTO formDTO){ return new Result().ok(areaCodeService.getAreaCodeDetail(formDTO)); } + + /** + * @Description 行政地区编码查询 + * @Param formDTO + * @author zxc + * @date 2021/1/7 下午1:41 + */ + @PostMapping("areacodetree") + public Result> areaCodeTree(@RequestBody CustomerTreeDTO formDTO){ + return new Result>().ok(areaCodeService.getAreaCodeTree(formDTO)); + } } \ No newline at end of file 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 232f3e7191..6467bb82f0 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 @@ -23,6 +23,7 @@ import com.epmet.dto.AreaCodeDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.dto.result.AreaCodeResultDTO; +import com.epmet.dto.result.CustomerTreeDTO; import com.epmet.entity.AreaCodeEntity; import java.util.List; @@ -126,4 +127,6 @@ public interface AreaCodeService extends BaseService { List nextArea(AreaCodeFormDTO formDTO); AreaCodeResultDTO getAreaCodeDetail(AreaCodeDetailFormDTO formDTO); + + List getAreaCodeTree(CustomerTreeDTO 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 f0eedca4ad..6d0289c1c4 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 @@ -39,6 +39,7 @@ import com.epmet.dto.AreaCodeDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.AreaCodeDictResultDTO; import com.epmet.dto.result.AreaCodeResultDTO; +import com.epmet.dto.result.CustomerTreeDTO; import com.epmet.entity.AreaCodeEntity; import com.epmet.redis.AreaCodeRedis; import com.epmet.service.AreaCodeChildService; @@ -772,6 +773,63 @@ public class AreaCodeServiceImpl extends BaseServiceImpl getAreaCodeTree(CustomerTreeDTO formDTO) { + List tree = new ArrayList<>(); + areaCodeHandle(formDTO.getLevel(), formDTO.getAreaCode(), tree); + return ConvertUtils.sourceToTarget(tree, CustomerTreeDTO.class); + } + + private void areaCodeHandle(String level, String areaCode, List tree) { + AreaCodeResultDTO result = new AreaCodeResultDTO(); + switch (level) { + case AreaCodeConstant.PROVINCE: + AreaCodeDTO province = baseDao.selectByProvinceCode(areaCode); + if (province != null) { + result.setAreaName(province.getProvinceName()); + result.setAreaCode(province.getProvinceCode()); + result.setParentCode(NumConstant.ZERO_STR); + result.setLevel(AreaCodeConstant.PROVINCE); + tree.add(result); + } + break; + case AreaCodeConstant.CITY: + AreaCodeDTO city = baseDao.selectByCityCode(areaCode); + if (city != null) { + result.setAreaName(city.getCityName()); + result.setAreaCode(city.getCityName()); + result.setParentCode(city.getProvinceCode()); + result.setLevel(AreaCodeConstant.CITY); + tree.add(result); + areaCodeHandle(AreaCodeConstant.PROVINCE, city.getProvinceCode(), tree); + } + break; + case AreaCodeConstant.DISTRICT: + AreaCodeDTO county = baseDao.selectByCountyCode(areaCode); + if (county != null) { + result.setAreaName(county.getCountyName()); + result.setAreaCode(county.getCountyCode()); + result.setParentCode(county.getCityCode()); + result.setLevel(AreaCodeConstant.DISTRICT); + tree.add(result); + areaCodeHandle(AreaCodeConstant.CITY, county.getCityCode(), tree); + } + break; + case AreaCodeConstant.STREET: + result = baseDao.selectByStreetCode(areaCode); + tree.add(result); + areaCodeHandle(AreaCodeConstant.DISTRICT, result.getParentCode(), tree); + break; + case AreaCodeConstant.COMMUNITY: + result = baseDao.selectByCommunityCode(areaCode); + tree.add(result); + areaCodeHandle(AreaCodeConstant.STREET, result.getParentCode(), tree); + break; + default: + log.warn("Level错误:" + level); + } + } + private String addDistrictAreaCode(String cityCode, String countyName) { AreaCodeDTO city = baseDao.selectByCityCode(cityCode); AreaCodeEntity insert = ConvertUtils.sourceToTarget(city, AreaCodeEntity.class); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 03a803a9b8..ae07816fa2 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java @@ -520,4 +520,18 @@ public class AgencyController { return new Result>().ok(dto); } + /** + * 客户树 + * + * @param + * @return com.epmet.commons.tools.utils.Result> + * @author zhy + * @date 2022/7/6 13:24 + */ + @RequestMapping("customertree") + public Result> customerTree(@LoginUser TokenDto tokenDto) { + return new Result>().ok(agencyService.getCustomerTree(tokenDto)); + } + + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java index ee3915ffa2..02630b9fb5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java @@ -364,6 +364,16 @@ public interface CustomerAgencyDao extends BaseDao { */ List getAreaSubAgency(@Param("areaCode") String areaCode); + /** + * 客户树根节点 + * + * @param + * @return java.util.List + * @author zhy + * @date 2022/7/6 13:32 + */ + List selectRootCustomer(); + CustomerAgencyEntity getAreaRootAgency(@Param("customerId") String customerId); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java index 40c0d4ef61..04c73a7756 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java @@ -189,4 +189,14 @@ public interface AgencyService { */ List getAreaSubAgency(TokenDto tokenDto, String areaCode); + /** + * 客户树 + * + * @param tokenDto + * @return java.util.List + * @author zhy + * @date 2022/7/6 13:32 + */ + List getCustomerTree(TokenDto tokenDto); + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java index 026bf12cf6..db30887818 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java @@ -923,6 +923,14 @@ public class AgencyServiceImpl implements AgencyService { return list; } + @Override + public List getCustomerTree(TokenDto tokenDto) { + List rootList = customerAgencyDao.selectRootCustomer(); + if (!rootList.isEmpty()) { + rootList.forEach(this::getSubCustomer); + } + return rootList; + } private CustomerAgencyEntity constructInsertEntity(AddAgencyV2FormDTO formDTO, CustomerAgencyDTO parent) { CustomerAgencyEntity insertEntity = ConvertUtils.sourceToTarget(formDTO, CustomerAgencyEntity.class); insertEntity.setOrganizationName(formDTO.getAgencyName()); @@ -972,4 +980,30 @@ public class AgencyServiceImpl implements AgencyService { return insertEntity; } + /** + * 处理子客户 + * + * @param customer + * @return com.epmet.dto.result.CustomerTreeDTO + * @author zhy + * @date 2022/7/6 13:54 + */ + private CustomerRelationTreeDTO getSubCustomer(CustomerTreeDTO customer) { + AreaCodeDetailFormDTO formDTO = new AreaCodeDetailFormDTO(); + formDTO.setAreaCode(customer.getAreaCode()); + formDTO.setLevel(customer.getLevel()); + Result area = epmetCommonServiceOpenFeignClient.areaCodeDetail(formDTO); + if (area.success()) { + if (area.getData() != null) { + customer.setAreaName(area.getData().getAreaName()); + } + } + List children = baseDao.selectSubCustomerByPid(customer.getCustomerId()); + customer.setChildren(children); + if (!children.isEmpty()) { + children.forEach(this::getSubCustomer); + } + return customer; + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml index 4ff4afb921..9ebd57a41d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml @@ -947,6 +947,17 @@ + +