+ * 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 @@
+
+