https://cic_irc.yuque.com/tyl581/ggwv9w/kqq2zumnm4w057wy
case1:根据出单机构获取所属省市区
说明:组织机构管营一体概念与用法:出单机构的可选范围/用法。
1、组织员工岗位对外接口文档:接口2.根据组织编码查询path详情。
2、对结果进行逆序。
3、取最近的一个经营组织。获取经营组织的详情(所属省市区)。
OrganizationCodeDTO organizationCodeDTO = new OrganizationCodeDTO();
organizationCodeDTO.setBranchOrgCode("出单机构");
ResultModelSupport<List<OrgInfoDTO>> organizationInfoList = organizationRpcFacade.getOrganizationPathByCode(organizationCodeDTO);
if (CollectionUtils.isEmpty(organizationInfoList.getData())) {
//处理自己的异常提示
return new ArrayList<>();
}
List<OrgInfoDTO> data = organizationInfoList.getData();
//对结果进行逆序
Collections.reverse(data);
for (OrgInfoDTO orgInfoDTO : data) {
//查找最近的经营组织
if (orgInfoDTO.getBranchOrgType() == 0) {
//直接获取经营组织详情
OrgOperationDetailDTO orgOperationDetailDTO = orgInfoDTO.getOrgOperationDetailDTO();
//所属省
String belongedProvinceCode = orgOperationDetailDTO.getBelongedProvinceCode();
//所属市
String belongedCityCode = orgOperationDetailDTO.getBelongedCityCode();
//所属区
String belongedDistrictCode = orgOperationDetailDTO.getBelongedDistrictCode();
}
}
case2:迁移aaas-facade服务转换组织树结构
对应接口3.根据组织编码查询本级以及本级以下所有组织列表(包含子孙节点)
文档地址:组织员工岗位对外接口文档
1、获取List
OrganizationCodeDTO organizationCodeDTO = new OrganizationCodeDTO();
ResultModelSupport<List<OrgInfoDTO>> orgChildByParentCode = organizationRpcFacade.getOrgChildByParentCode(organizationCodeDTO);
2、aaas-facade服务中AbossBranchOrganizationSimpleTreeDTO对象
根据各自的使用场景可以适当精简AbossBranchOrganizationSimpleTreeDTO对象的字段:
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author dongyikuan
* @version 1.0.0
* @ClassName AbossBranchOrganizationSimpleTreeDTO.java
* @Description AbossBranchOrganizationSimpleTreeDTO information
* @createTime 2023年09月21日 16:14:00
*/
@Data
public class AbossBranchOrganizationSimpleTreeDTO implements Serializable {
/**
* 分支机构编码
*/
private String branchOrgCode;
/**
* 分支机构名称
*/
private String branchOrgName;
/**
* 分支机构状态
*/
private String branchOrgStatus;
/**
* 分支机构简称
*/
private String simpleName;
/**
* 分支机构上级编码
*/
private String branchOrgParentCode;
/**
* 分支机构上级名称
*/
private String branchOrgParentName;
/**
* path
*/
private String branchOrgPath;
/**
* 是否专营机构
*/
private String orgIsFranchise;
/**
* 专营类型
*/
private String orgFranchiseType;
/**
* 是否设立出单组织
*/
private String orgIsSetIssue;
/**
* 设立独立账套
*/
private String orgIsSetBooks;
/**
* 机构类型:0.经营组织,1.管理组织,2.销售组织,3.外部组织
*/
private Integer branchOrgType;
/**
* 经营组织状态
*/
private String branchOrgState;
/**
* 所属地域类型
*/
private String branchOrgRegionType;
/**
* 分支机构层级
*/
private String branchOrgHierarchy;
/**
* 分支机构级别
*/
private String branchOrgLevel;
/**
* 是否管营一体
*/
private String isManageOperation;
/**
* 所属省
*/
private String provinceCode;
/**
* 所属市
*/
private String cityCode;
/**
* 所属区
*/
private String countyCode;
private List<AbossBranchOrganizationSimpleTreeDTO> childBranchOrgList;
}
3、OrgInfoDTO 转换 AbossBranchOrganizationSimpleTreeDTO赋值
//获取data
List<OrgInfoDTO> orgInfoDTOList = orgChildByParentCode.getData();
if (CollectionUtils.isEmpty(orgInfoDTOList)) {
return new ArrayList<OrgInfoDTO>;
}
//转换map,赋值branchOrgParentName
Map<String, OrgInfoDTO> orgInfoDTOMap = orgInfoDTOList.stream().collect(Collectors.toMap(dto -> dto.getBranchOrgCode(), dto -> dto, (k1, k2) -> k1));
//OrgInfoDTO 转换 AbossBranchOrganizationSimpleTreeDTO
List<AbossBranchOrganizationSimpleTreeDTO> simpleTreeDTOList = new ArrayList<>();
orgInfoDTOList.stream().forEach(orgInfoDTO -> {
AbossBranchOrganizationSimpleTreeDTO abossBranchOrganizationSimpleTreeDTO = new AbossBranchOrganizationSimpleTreeDTO();
abossBranchOrganizationSimpleTreeDTO.setBranchOrgCode(orgInfoDTO.getBranchOrgCode());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgType(orgInfoDTO.getBranchOrgType());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgName(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgName());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgStatus(String.valueOf(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgStatus()));
abossBranchOrganizationSimpleTreeDTO.setSimpleName(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgSimpleName());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgParentCode(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgManageParentCode());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgPath(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgManagePath());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgParentName(
"210000000000".equals(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgManageParentCode()) ?
"中华联合财产保险股份有限公司" : Objects.nonNull(orgInfoDTOMap.get(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgManageParentCode())) ?
orgInfoDTOMap.get(orgInfoDTO.getOrgBasicDetailDTO().getBranchOrgManageParentCode()).getOrgBasicDetailDTO().getBranchOrgName() : null);
abossBranchOrganizationSimpleTreeDTO.setOrgIsSetIssue(
orgInfoDTO.getBranchOrgType() == 0 ? orgInfoDTO.getOrgOperationDetailDTO().getIsSetIssue() : orgInfoDTO.getBranchOrgType() == 1 ?
orgInfoDTO.getOrgManageDetailDTO().getIsSetIssue() : null);
if (Objects.nonNull(orgInfoDTO.getOrgOperationDetailDTO())) {
abossBranchOrganizationSimpleTreeDTO.setOrgIsFranchise(orgInfoDTO.getOrgOperationDetailDTO().getIsFranchise());
abossBranchOrganizationSimpleTreeDTO.setOrgFranchiseType(orgInfoDTO.getOrgOperationDetailDTO().getFranchiseType());
abossBranchOrganizationSimpleTreeDTO.setOrgIsSetBooks(orgInfoDTO.getOrgOperationDetailDTO().getIsSetBooks());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgState(orgInfoDTO.getOrgOperationDetailDTO().getBranchOrgState());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgRegionType(orgInfoDTO.getOrgOperationDetailDTO().getBelongedRegionType());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgHierarchy(orgInfoDTO.getOrgOperationDetailDTO().getBranchOrgHierarchy());
abossBranchOrganizationSimpleTreeDTO.setBranchOrgLevel(orgInfoDTO.getOrgOperationDetailDTO().getBranchOrgLevel());
abossBranchOrganizationSimpleTreeDTO.setProvinceCode(orgInfoDTO.getOrgOperationDetailDTO().getBelongedProvinceCode());
abossBranchOrganizationSimpleTreeDTO.setCityCode(orgInfoDTO.getOrgOperationDetailDTO().getBelongedCityCode());
abossBranchOrganizationSimpleTreeDTO.setCountyCode(orgInfoDTO.getOrgOperationDetailDTO().getBelongedDistrictCode());
}
abossBranchOrganizationSimpleTreeDTO.setIsManageOperation(
Objects.nonNull(orgInfoDTO.getOrgManageDetailDTO()) ? orgInfoDTO.getOrgManageDetailDTO().getIsBothManageOperation() : null);
simpleTreeDTOList.add(abossBranchOrganizationSimpleTreeDTO);
});
List<AbossBranchOrganizationSimpleTreeDTO> organizationSimpleTreeDTOList = changeBranchOrganizationSimpleTree(simpleTreeDTOList);
return organizationSimpleTreeDTOList;
4、转换树结构
private List<AbossBranchOrganizationSimpleTreeDTO> changeBranchOrganizationSimpleTree(List<AbossBranchOrganizationSimpleTreeDTO> abossBranchOrganizationSimpleTreeDTOS) {
Map<String, AbossBranchOrganizationSimpleTreeDTO> map = abossBranchOrganizationSimpleTreeDTOS.stream().collect(Collectors.toMap(dto -> dto.getBranchOrgCode(), dto -> dto, (k1, k2) -> k1));
List<AbossBranchOrganizationSimpleTreeDTO> targetList = new ArrayList<>();
Iterator<AbossBranchOrganizationSimpleTreeDTO> iterator = abossBranchOrganizationSimpleTreeDTOS.iterator();
while (iterator.hasNext()) {
AbossBranchOrganizationSimpleTreeDTO it = iterator.next();
if (map.containsKey(it.getBranchOrgParentCode())) {
AbossBranchOrganizationSimpleTreeDTO innerDto = map.get(it.getBranchOrgParentCode());
List<AbossBranchOrganizationSimpleTreeDTO> child = innerDto.getChildBranchOrgList();
if (CollectionUtils.isEmpty(child)) {
child = new ArrayList<>();
child.add(it);
innerDto.setChildBranchOrgList(child);
} else {
child.add(it);
}
} else {
targetList.add(it);
}
}
return targetList;
}
case3:根据员工工号获取员工所在的分公司
1、获取员工的归属组织,branchOrgCode。
2、根据归属组织获取path详情。
EmployeeCodeQueryDTO employeeCodeQueryDTO = new EmployeeCodeQueryDTO();
employeeCodeQueryDTO.setEmployeeCodeList("员工编码集合");
PageResultModelSupport<PageInfo<EmployeeInfoDTO>> employeeInfoByCodes = employeeBasicRpcFacade.getEmployeeInfoByCodes(employeeCodeQueryDTO);
List<EmployeeInfoDTO> employeeInfoDTOList = (List<EmployeeInfoDTO>) employeeInfoByCodes.getData();
if (CollectionUtils.isEmpty(employeeInfoDTOList)) {
//处理自己的异常提示
return new ArrayList<>();
}
employeeInfoDTOList.stream().forEach(employeeInfoDTO -> {
//员工的归属组织
String branchOrgCode = employeeInfoDTO.getBranchOrgCode();
//根据员工归属组织获取path详情
OrganizationCodeDTO organizationCodeDTO = new OrganizationCodeDTO();
organizationCodeDTO.setBranchOrgCode(branchOrgCode);
ResultModelSupport<List<OrgInfoDTO>> organizationInfoList = organizationRpcFacade.getOrganizationPathByCode(organizationCodeDTO);
if (CollectionUtils.isEmpty(organizationInfoList.getData())) {
//处理自己的异常提示
return new ArrayList<>();
}
List<OrgInfoDTO> data = organizationInfoList.getData();
OrgInfoDTO orgInfoDTO = data.stream()
.filter(infoDTO -> infoDTO.getBranchOrgType() == 0)
.filter(infoDTO -> infoDTO.getOrgOperationDetailDTO().getBranchOrgHierarchy().equals("1"))
.findFirst().get();
//orgInfoDTO 就是分公司详情。
});
case4:OrgInfoDTO转换AbossBranchTreeResDTO
/**
* orgInfoDTOList 转换 abossBranchTreeResDTOList
*
* @param orgInfoDTOList
* @return
*/
public static List<AbossBranchTreeResDTO> convertListByManage(List<OrgInfoDTO> orgInfoDTOList) {
//转换map,赋值branchOrgParentName
Map<String, OrgInfoDTO> orgInfoDTOMap = orgInfoDTOList.stream().collect(Collectors.toMap(dto -> dto.getBranchOrgCode(), dto -> dto, (k1, k2) -> k1));
//OrgInfoDTO 转换 AbossBranchTreeResDTO
return orgInfoDTOList.stream().map(orgInfoDTO -> convertByManage(orgInfoDTO, orgInfoDTOMap)).collect(Collectors.toList());
}
🚩🚩****如果仅仅需要某一种类型的组织,可以按照类型去获取对应的组织DTO,一个组织只会有一种类型。
/**
* OrgInfoDTO 转换 AbossBranchTreeResDTO
*
* @param orgInfoDTO
* @param orgInfoDTOMap
* @return
*/
private static AbossBranchTreeResDTO convertByManage(OrgInfoDTO orgInfoDTO, Map<String, OrgInfoDTO> orgInfoDTOMap) {
AbossBranchTreeResDTO abossBranchTreeResDTO = new AbossBranchTreeResDTO();
abossBranchTreeResDTO.setBranchOrgCode(orgInfoDTO.getBranchOrgCode());
//获取基本信息
getOrgBasicInfoByManage(orgInfoDTO, orgInfoDTOMap, abossBranchTreeResDTO);
//获取经营组织
if (Objects.nonNull(orgInfoDTO.getOrgOperationDetailDTO())) {
getOperationOrgInfo(orgInfoDTO, abossBranchTreeResDTO);
}
//获取管理组织
if (Objects.nonNull(orgInfoDTO.getOrgManageDetailDTO())) {
OrgManageDetailDTO orgManageDetailDTO = orgInfoDTO.getOrgManageDetailDTO();
abossBranchTreeResDTO.setIsManageOpreation(orgManageDetailDTO.getIsBothManageOperation());
abossBranchTreeResDTO.setIsClaimsDept(orgManageDetailDTO.getIsClaimsDept());
abossBranchTreeResDTO.setOrgIsSetIssue(orgManageDetailDTO.getIsSetIssue());
abossBranchTreeResDTO.setBranchOrgUnitType(orgManageDetailDTO.getBranchOrgUnitTypeManage());
}
//获取销售组织
if (Objects.nonNull(orgInfoDTO.getOrgSaleDetaiDTO())) {
OrgSaleDetaiDTO orgSaleDetaiDTO = orgInfoDTO.getOrgSaleDetaiDTO();
abossBranchTreeResDTO.setBranchOrgManagementChannel(orgSaleDetaiDTO.getBranchOrgOperationChannel());
abossBranchTreeResDTO.setBranchOrgUnitType(orgSaleDetaiDTO.getBranchOrgUnitTypeSale());
}
return abossBranchTreeResDTO;
}
/**
* 获取基本信息
*
* @param orgInfoDTO
* @param orgInfoDTOMap
* @param abossBranchTreeResDTO
*/
private static void getOrgBasicInfoByManage(OrgInfoDTO orgInfoDTO, Map<String, OrgInfoDTO> orgInfoDTOMap, AbossBranchTreeResDTO abossBranchTreeResDTO) {
OrgBasicDetailDTO orgBasicDetailDTO = orgInfoDTO.getOrgBasicDetailDTO();
abossBranchTreeResDTO.setBranchOrgName(orgBasicDetailDTO.getBranchOrgName());
abossBranchTreeResDTO.setBranchOrgSimpleName(orgBasicDetailDTO.getBranchOrgSimpleName());
abossBranchTreeResDTO.setBranchOrgType(String.valueOf(orgInfoDTO.getBranchOrgType()));
//行政维度
abossBranchTreeResDTO.setBranchOrgParentCode(orgBasicDetailDTO.getBranchOrgManageParentCode());
abossBranchTreeResDTO.setBranchOrgPath(orgBasicDetailDTO.getBranchOrgManagePath());
OrgInfoDTO parentOrgInfoDTO = orgInfoDTOMap.get(orgBasicDetailDTO.getBranchOrgManageParentCode());
abossBranchTreeResDTO.setBranchOrgParentName(Objects.nonNull(parentOrgInfoDTO) ? parentOrgInfoDTO.getOrgBasicDetailDTO().getBranchOrgName() : null);
abossBranchTreeResDTO.setOrgIsSetIssue(orgInfoDTO.getBranchOrgType() == 0 ? orgInfoDTO.getOrgOperationDetailDTO().getIsSetIssue() : orgInfoDTO.getBranchOrgType() == 1 ? orgInfoDTO.getOrgManageDetailDTO().getIsSetIssue() : null);
}
/**
* 获取经营组织
*
* @param orgInfoDTO
* @param abossBranchTreeResDTO
*/
private static void getOperationOrgInfo(OrgInfoDTO orgInfoDTO, AbossBranchTreeResDTO abossBranchTreeResDTO) {
OrgOperationDetailDTO orgOperationDetailDTO = orgInfoDTO.getOrgOperationDetailDTO();
abossBranchTreeResDTO.setOrgIsFranchise(orgOperationDetailDTO.getIsFranchise());
abossBranchTreeResDTO.setOrgFranchiseType(orgOperationDetailDTO.getFranchiseType());
abossBranchTreeResDTO.setOrgIsSetBooks(orgOperationDetailDTO.getIsSetBooks());
abossBranchTreeResDTO.setBranchOrgHierarchy(orgOperationDetailDTO.getBranchOrgHierarchy());
abossBranchTreeResDTO.setBranchOrgLevel(orgOperationDetailDTO.getBranchOrgLevel());
abossBranchTreeResDTO.setBelongRegionType(orgOperationDetailDTO.getBelongedRegionType());
abossBranchTreeResDTO.setBranchOrgRegionType(orgOperationDetailDTO.getBelongedRegionType());
abossBranchTreeResDTO.setBranchOrgCategory(orgOperationDetailDTO.getBranchOrgCategory());
abossBranchTreeResDTO.setOrgIsSetIssue(orgOperationDetailDTO.getIsSetIssue());
}