21 changed files with 466 additions and 15 deletions
@ -0,0 +1,26 @@ |
|||||
|
package com.epmet.commons.tools.utils; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 描述一下 |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2021/2/4 20:49 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class AgencyNode<T> implements Serializable { |
||||
|
|
||||
|
private String areaCode; |
||||
|
|
||||
|
private String parentAreaCode; |
||||
|
|
||||
|
/** |
||||
|
* 子节点列表 |
||||
|
*/ |
||||
|
private List<T> subAgencyList = new ArrayList<>(); |
||||
|
} |
@ -0,0 +1,73 @@ |
|||||
|
package com.epmet.commons.tools.utils; |
||||
|
|
||||
|
|
||||
|
import com.epmet.commons.tools.validator.AssertUtils; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.LinkedHashMap; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 描述一下 |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2021/2/4 20:49 |
||||
|
*/ |
||||
|
public class AgencyTreeUtils { |
||||
|
|
||||
|
/** |
||||
|
* 根据pid,构建树节点 |
||||
|
*/ |
||||
|
public static <T extends AgencyNode> List<T> build(List<T> agencyNodes, String parentAreaCode) { |
||||
|
//pid不能为空
|
||||
|
AssertUtils.isNull(parentAreaCode, "parentAreaCode"); |
||||
|
|
||||
|
List<T> treeList = new ArrayList<>(); |
||||
|
for (T agencyNode : agencyNodes) { |
||||
|
if (parentAreaCode.equals(agencyNode.getParentAreaCode())) { |
||||
|
treeList.add(findChildren(agencyNodes, agencyNode)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return treeList; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查找子节点 |
||||
|
*/ |
||||
|
private static <T extends AgencyNode> T findChildren(List<T> agencyNodes, T rootNode) { |
||||
|
for (T agencyNode : agencyNodes) { |
||||
|
if (rootNode.getAreaCode().equals(agencyNode.getParentAreaCode())) { |
||||
|
rootNode.getSubAgencyList().add(findChildren(agencyNodes, agencyNode)); |
||||
|
} |
||||
|
} |
||||
|
return rootNode; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 构建树节点 |
||||
|
*/ |
||||
|
public static <T extends AgencyNode> List<T> build(List<T> agencyNodes) { |
||||
|
List<T> result = new ArrayList<>(); |
||||
|
|
||||
|
//list转map
|
||||
|
Map<String, T> nodeMap = new LinkedHashMap<>(agencyNodes.size()); |
||||
|
for (T agencyNode : agencyNodes) { |
||||
|
nodeMap.put(agencyNode.getAreaCode(), agencyNode); |
||||
|
} |
||||
|
|
||||
|
for (T node : nodeMap.values()) { |
||||
|
T parent = nodeMap.get(node.getParentAreaCode()); |
||||
|
if (parent != null && !(node.getAreaCode().equals(parent.getAreaCode()))) { |
||||
|
parent.getSubAgencyList().add(node); |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
result.add(node); |
||||
|
} |
||||
|
|
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
package com.epmet.dto.result.plugins; |
||||
|
|
||||
|
import com.epmet.commons.tools.utils.AgencyNode; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 008、当前用户的数据权限(多客户版本) 返参DTO |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2021/2/3 20:33 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class AgencyNodeDTO extends AgencyNode<AgencyNodeDTO> implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = -3745920378557792529L; |
||||
|
/** |
||||
|
* 直属机关Id |
||||
|
* */ |
||||
|
private String agencyId; |
||||
|
|
||||
|
/** |
||||
|
* 直属机关名称 |
||||
|
* */ |
||||
|
private String agencyName; |
||||
|
|
||||
|
/** |
||||
|
* 机关级别(社区级:community, 乡(镇、街道)级:street, 区县级: district, 市级: city 省级:province) |
||||
|
* */ |
||||
|
private String level; |
||||
|
|
||||
|
/** |
||||
|
* 当前agencyId所属的客户id add02.03 |
||||
|
* */ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 直属机关直属网格列表 |
||||
|
* */ |
||||
|
private List<GridNodeDTO> gridList = new ArrayList<>(); |
||||
|
|
||||
|
/** |
||||
|
* 直属机关直属部门列表 |
||||
|
* */ |
||||
|
private List<DeptNodeDTO> departmentList = new ArrayList<>(); |
||||
|
|
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
package com.epmet.dto.result.plugins; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @Description 部门信息 |
||||
|
* @ClassName ExtDeptResultDTO |
||||
|
* @Auth wangc |
||||
|
* @Date 2020-08-17 17:16 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class DeptNodeDTO implements Serializable { |
||||
|
private static final long serialVersionUID = 1792371558965832432L; |
||||
|
|
||||
|
/** |
||||
|
* 部门Id |
||||
|
* */ |
||||
|
private String deptId; |
||||
|
|
||||
|
/** |
||||
|
* 部门名称 |
||||
|
* */ |
||||
|
private String deptName; |
||||
|
|
||||
|
/** |
||||
|
* 当前deptId所属的customerId add02.03 |
||||
|
* */ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 当前deptId对应的地区编码 add02.03 |
||||
|
* */ |
||||
|
private String areaCode; |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
package com.epmet.dto.result.plugins; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* 008、当前用户的数据权限(多客户版本) 返参DTO |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2021/2/3 20:33 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class GridNodeDTO implements Serializable { |
||||
|
private static final long serialVersionUID = -4531574240525562587L; |
||||
|
|
||||
|
/** |
||||
|
* 网格Id |
||||
|
* */ |
||||
|
private String gridId; |
||||
|
|
||||
|
/** |
||||
|
* 网格名称 |
||||
|
* */ |
||||
|
private String gridName; |
||||
|
|
||||
|
/** |
||||
|
* 当前gridId所属的客户id add02.03 |
||||
|
* */ |
||||
|
private String customerId; |
||||
|
|
||||
|
/** |
||||
|
* 当前gridId对应的地区编码 add02.03 |
||||
|
* */ |
||||
|
private String areaCode; |
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
package com.epmet.feign; |
||||
|
|
||||
|
import com.epmet.commons.tools.constant.ServiceConstant; |
||||
|
import com.epmet.commons.tools.utils.Result; |
||||
|
import com.epmet.dto.result.plugins.AgencyNodeDTO; |
||||
|
import com.epmet.feign.impl.DataReportOpenFeignClientFallBack; |
||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||
|
import org.springframework.web.bind.annotation.PathVariable; |
||||
|
|
||||
|
/** |
||||
|
* 本服务对外开放的API,其他服务通过引用此client调用该服务 |
||||
|
* |
||||
|
* @author yinzuomei@elink-cn.com |
||||
|
* @date 2021/2/3 22:05 |
||||
|
*/ |
||||
|
// @FeignClient(name = ServiceConstant.DATA_REPORT_SERVER, fallback = DataReportOpenFeignClientFallBack.class,url = "localhost:8109")
|
||||
|
@FeignClient(name = ServiceConstant.DATA_REPORT_SERVER, fallback = DataReportOpenFeignClientFallBack.class) |
||||
|
public interface DataReportOpenFeignClient { |
||||
|
/** |
||||
|
* @param agencyId |
||||
|
* @description 查询当前组织及下级组织树 |
||||
|
* @Date 2021/2/3 22:05 |
||||
|
**/ |
||||
|
@GetMapping("/data/report/screen/agency/querystaffagencytree/{agencyId}") |
||||
|
Result<AgencyNodeDTO> queryStaffAgencyTree(@PathVariable("agencyId") String agencyId); |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
package com.epmet.feign.impl; |
||||
|
|
||||
|
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.result.plugins.AgencyNodeDTO; |
||||
|
import com.epmet.feign.DataReportOpenFeignClient; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
@Component |
||||
|
public class DataReportOpenFeignClientFallBack implements DataReportOpenFeignClient { |
||||
|
/** |
||||
|
* @param agencyId |
||||
|
* @description 查询当前组织及下级组织树 |
||||
|
* @Date 2021/2/3 22:05 |
||||
|
**/ |
||||
|
@Override |
||||
|
public Result<AgencyNodeDTO> queryStaffAgencyTree(String agencyId) { |
||||
|
return ModuleUtils.feignConError(ServiceConstant.DATA_REPORT_SERVER, "queryStaffAgencyTree",agencyId); |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue