一、数据库表结构
1、mysql数据库建表语句
-- ----------------------------
-- Table structure for t_sap_dept
-- ----------------------------
DROP TABLE IF EXISTS `t_sap_dept`;
CREATE TABLE `t_sap_dept` (
`add_user` varchar(32) NOT NULL COMMENT '创建人',
`add_time` datetime NOT NULL COMMENT '创建时间',
`update_user` varchar(32) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`valid_status` varchar(3) DEFAULT NULL COMMENT '是否有效 0 无效 1 有效',
`delete_status` varchar(3) DEFAULT NULL COMMENT '是否删除 0 未删除 1 已删除',
`org_id` varchar(32) NOT NULL COMMENT '部门id',
`org_name` varchar(150) NOT NULL COMMENT '部门名称',
`org_level` varchar(2) DEFAULT NULL COMMENT '部门层级',
`status` varchar(3) DEFAULT NULL COMMENT '是否启用 0 未启用 1 启用',
`sup_org_id` varchar(32) DEFAULT NULL COMMENT '上级组织id',
`flag1` varchar(255) DEFAULT NULL,
`flag2` varchar(255) DEFAULT NULL,
`flag3` varchar(255) DEFAULT NULL,
`flag4` varchar(255) DEFAULT NULL,
PRIMARY KEY (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、mysql数据库插入语句
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '00030437', '天猫信息服务有限 ', NULL, '1', '00037534', 'D', '', '', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '00032794', '技术管理科', NULL, '1', '00030437', 'E', '', '0086040002', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '00032797', '用户运营模块', NULL, '1', '00030437', 'F', '', '0086090002', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '00034537', '产品管理模块', NULL, '1', '00030437', 'F', '', '0086040001', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '00037364', '风控平台模块', NULL, '1', '10000551', 'F', '', '', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000548', '技术二模块', NULL, '1', '00032794', 'F', '', '0086040002', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000549', '技术三模块', NULL, '1', '00032794', 'F', '', '0086040002', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000550', '运维模块', NULL, '1', '00032794', 'F', '', '0086040002', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000551', '业务发展一科', NULL, '1', '00030437', 'E', '', '', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000552', '业务发展二科', NULL, '1', '00030437', 'E', '', '', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000553', '技术一模块', NULL, '1', '00032794', 'F', '', '0086040002', 'U');
INSERT INTO t_sap_dept VALUES ('system', '2021-2-24 17:12:53', NULL, NULL, '1', '0', '10000554', '金融业务模块', NULL, '1', '10000551', 'F', '', '', 'U');
3、mysql数据库插入截图

二、创建数据库实体类
1、创建实体类SapDept
package com.tianmao.demand.synchrous.entity;
import com.tianmao.db.boot.entity.BaseEntity;
import java.util.Date;
/**
* 部门表
*
*/
public class SapDept extends BaseEntity {
private static final long serialVersionUID = 5275435492439961860L;
/**
* 状态-无效
*/
public static String STATUS_FALSE = "0";
/**
* 状态-有效
*/
public static String STATUS_TRUE = "1";
/**删除状态 0-未删除 1-删除*/
private String deleteStatus;
/**有效状态 0-无效 1-有效*/
private String validStatus;
/**新增人userId*/
private String addUser;
/**新增时间*/
private Date addTime;
/**更新人userId*/
private String updateUser;
/**更新时间*/
private Date updateTime;
/**部门ID*/
private String orgId;
/**部门名称*/
private String orgName;
/**上级部门ID*/
private String supOrgId;
/**部门层级*/
private String orgLevel;
/**部门状态*/
private String status;
/**标记1*/
private String flag1;
/**标记2*/
private String flag2;
/**标记3*/
private String flag3;
/**标记4*/
private String flag4;
public String getDeleteStatus() {
return deleteStatus;
}
public void setDeleteStatus(String deleteStatus) {
this.deleteStatus = deleteStatus;
}
public String getValidStatus() {
return validStatus;
}
public void setValidStatus(String validStatus) {
this.validStatus = validStatus;
}
public String getAddUser() {
return addUser;
}
public void setAddUser(String addUser) {
this.addUser = addUser;
}
public Date getAddTime() {
return addTime;
}
public void setAddTime(Date addTime) {
this.addTime = addTime;
}
public String getUpdateUser() {
return updateUser;
}
public void setUpdateUser(String updateUser) {
this.updateUser = updateUser;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public String getSupOrgId() {
return supOrgId;
}
public void setSupOrgId(String supOrgId) {
this.supOrgId = supOrgId;
}
public String getOrgLevel() {
return orgLevel;
}
public void setOrgLevel(String orgLevel) {
this.orgLevel = orgLevel;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getFlag1() {
return flag1;
}
public void setFlag1(String flag1) {
this.flag1 = flag1;
}
public String getFlag2() {
return flag2;
}
public void setFlag2(String flag2) {
this.flag2 = flag2;
}
public String getFlag3() {
return flag3;
}
public void setFlag3(String flag3) {
this.flag3 = flag3;
}
public String getFlag4() {
return flag4;
}
public void setFlag4(String flag4) {
this.flag4 = flag4;
}
}
2、数据库Mapper文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yutong.demand.synchrous.mapper.SapDeptMapper">
<resultMap id="BaseResultMap" type="com.yutong.demand.synchrous.entity.SapDept" >
<id column="org_id" property="orgId" jdbcType="VARCHAR" />
<result column="add_user" property="addUser" jdbcType="VARCHAR" />
<result column="add_time" property="addTime" jdbcType="TIMESTAMP" />
<result column="update_user" property="updateUser" jdbcType="VARCHAR" />
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
<result column="valid_status" property="validStatus" jdbcType="VARCHAR" />
<result column="delete_status" property="deleteStatus" jdbcType="VARCHAR" />
<result column="org_name" property="orgName" jdbcType="VARCHAR" />
<result column="org_level" property="orgLevel" jdbcType="VARCHAR" />
<result column="status" property="status" jdbcType="VARCHAR" />
<result column="sup_org_id" property="supOrgId" jdbcType="VARCHAR" />
<result column="flag1" property="flag1" jdbcType="VARCHAR" />
<result column="flag2" property="flag2" jdbcType="VARCHAR" />
<result column="flag3" property="flag3" jdbcType="VARCHAR" />
<result column="flag4" property="flag4" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
org_id, add_user, add_time, update_user, update_time, valid_status, delete_status,
org_name, org_level, status, sup_org_id, flag1, flag2, flag3, flag4
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
SELECT
<include refid="Base_Column_List" />
FROM t_sap_dept
WHERE org_id = #{orgId,jdbcType=VARCHAR}
</select>
<select id="selectByEntity" resultMap="BaseResultMap" parameterType="com.yutong.demand.synchrous.entity.SapDept" >
SELECT
<include refid="Base_Column_List" />
FROM t_sap_dept
<where>
<if test="orgId != null" >
AND org_id = #{orgId,jdbcType=VARCHAR}
</if>
<if test="addUser != null" >
AND add_user = #{addUser,jdbcType=VARCHAR}
</if>
<if test="addTime != null" >
AND add_time = #{addTime,jdbcType=TIMESTAMP}
</if>
<if test="updateUser != null" >
AND update_user = #{updateUser,jdbcType=VARCHAR}
</if>
<if test="updateTime != null" >
AND update_time = #{updateTime,jdbcType=TIMESTAMP}
</if>
<if test="validStatus != null" >
AND valid_status = #{validStatus,jdbcType=VARCHAR}
</if>
<if test="deleteStatus != null" >
AND delete_status = #{deleteStatus,jdbcType=VARCHAR}
</if>
<if test="orgName != null" >
AND org_name = #{orgName,jdbcType=VARCHAR}
</if>
<if test="orgLevel != null" >
AND org_level = #{orgLevel,jdbcType=VARCHAR}
</if>
<if test="status != null" >
AND status = #{status,jdbcType=VARCHAR}
</if>
<if test="supOrgId != null" >
AND sup_org_id = #{supOrgId,jdbcType=VARCHAR}
</if>
<if test="flag1 != null" >
AND flag1 = #{flag1,jdbcType=VARCHAR}
</if>
<if test="flag2 != null" >
AND flag2 = #{flag2,jdbcType=VARCHAR}
</if>
<if test="flag3 != null" >
AND flag3 = #{flag3,jdbcType=VARCHAR}
</if>
<if test="flag4 != null" >
AND flag4 = #{flag4,jdbcType=VARCHAR}
</if>
</where>
</select>
<select id="selectByMap" resultMap="BaseResultMap" parameterType="java.util.Map" >
SELECT
<include refid="Base_Column_List" />
FROM t_sap_dept
<where>
<if test="orgId != null" >
AND org_id = #{orgId,jdbcType=VARCHAR}
</if>
<if test="addUser != null" >
AND add_user = #{addUser,jdbcType=VARCHAR}
</if>
<if test="addTime != null" >
AND add_time = #{addTime,jdbcType=TIMESTAMP}
</if>
<if test="updateUser != null" >
AND update_user = #{updateUser,jdbcType=VARCHAR}
</if>
<if test="updateTime != null" >
AND update_time = #{updateTime,jdbcType=TIMESTAMP}
</if>
<if test="validStatus != null" >
AND valid_status = #{validStatus,jdbcType=VARCHAR}
</if>
<if test="deleteStatus != null" >
AND delete_status = #{deleteStatus,jdbcType=VARCHAR}
</if>
<if test="orgName != null" >
AND org_name = #{orgName,jdbcType=VARCHAR}
</if>
<if test="orgLevel != null" >
AND org_level = #{orgLevel,jdbcType=VARCHAR}
</if>
<if test="status != null" >
AND status = #{status,jdbcType=VARCHAR}
</if>
<if test="supOrgId != null" >
AND sup_org_id = #{supOrgId,jdbcType=VARCHAR}
</if>
<if test="flag1 != null" >
AND flag1 = #{flag1,jdbcType=VARCHAR}
</if>
<if test="flag2 != null" >
AND flag2 = #{flag2,jdbcType=VARCHAR}
</if>
<if test="flag3 != null" >
AND flag3 = #{flag3,jdbcType=VARCHAR}
</if>
<if test="flag4 != null" >
AND flag4 = #{flag4,jdbcType=VARCHAR}
</if>
</where>
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
DELETE FROM t_sap_dept
WHERE org_id = #{orgId,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.yutong.demand.synchrous.entity.SapDept">
INSERT INTO t_sap_dept (
org_id, add_user, add_time, update_user, update_time, valid_status, delete_status,
org_name, org_level, status, sup_org_id, flag1, flag2, flag3, flag4
)
VALUES (
#{orgId,jdbcType=VARCHAR},#{addUser,jdbcType=VARCHAR},#{addTime,jdbcType=TIMESTAMP},
#{updateUser,jdbcType=VARCHAR},#{updateTime,jdbcType=TIMESTAMP},#{validStatus,jdbcType=VARCHAR},
#{deleteStatus,jdbcType=VARCHAR},#{orgName,jdbcType=VARCHAR},#{orgLevel,jdbcType=VARCHAR},
#{status,jdbcType=VARCHAR},#{supOrgId,jdbcType=VARCHAR},#{flag1,jdbcType=VARCHAR},#{flag2,jdbcType=VARCHAR},
#{flag3,jdbcType=VARCHAR},#{flag4,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.yutong.demand.synchrous.entity.SapDept">
INSERT INTO t_sap_dept
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="orgId != null" >
org_id,
</if>
<if test="addUser != null" >
add_user,
</if>
<if test="addTime != null" >
add_time,
</if>
<if test="updateUser != null" >
update_user,
</if>
<if test="updateTime != null" >
update_time,
</if>
<if test="validStatus != null" >
valid_status,
</if>
<if test="deleteStatus != null" >
delete_status,
</if>
<if test="orgName != null" >
org_name,
</if>
<if test="orgLevel != null" >
org_level,
</if>
<if test="status != null" >
status,
</if>
<if test="supOrgId != null" >
sup_org_id,
</if>
<if test="flag1 != null" >
flag1,
</if>
<if test="flag2 != null" >
flag2,
</if>
<if test="flag3 != null" >
flag3,
</if>
<if test="flag4 != null" >
flag4,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="orgId != null" >
#{orgId,jdbcType=VARCHAR},
</if>
<if test="addUser != null" >
#{addUser,jdbcType=VARCHAR},
</if>
<if test="addTime != null" >
#{addTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUser != null" >
#{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null" >
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="validStatus != null" >
#{validStatus,jdbcType=VARCHAR},
</if>
<if test="deleteStatus != null" >
#{deleteStatus,jdbcType=VARCHAR},
</if>
<if test="orgName != null" >
#{orgName,jdbcType=VARCHAR},
</if>
<if test="orgLevel != null" >
#{orgLevel,jdbcType=VARCHAR},
</if>
<if test="status != null" >
#{status,jdbcType=VARCHAR},
</if>
<if test="supOrgId != null" >
#{supOrgId,jdbcType=VARCHAR},
</if>
<if test="flag1 != null" >
#{flag1,jdbcType=VARCHAR},
</if>
<if test="flag2 != null" >
#{flag2,jdbcType=VARCHAR},
</if>
<if test="flag3 != null" >
#{flag3,jdbcType=VARCHAR},
</if>
<if test="flag4 != null" >
#{flag4,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.yutong.demand.synchrous.entity.SapDept">
UPDATE t_sap_dept
<set>
<if test="addUser != null" >
add_user = #{addUser,jdbcType=VARCHAR},
</if>
<if test="addTime != null" >
add_time = #{addTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUser != null" >
update_user = #{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null" >
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="validStatus != null" >
valid_status = #{validStatus,jdbcType=VARCHAR},
</if>
<if test="deleteStatus != null" >
delete_status = #{deleteStatus,jdbcType=VARCHAR},
</if>
<if test="orgName != null" >
org_name = #{orgName,jdbcType=VARCHAR},
</if>
<if test="orgLevel != null" >
org_level = #{orgLevel,jdbcType=VARCHAR},
</if>
<if test="status != null" >
status = #{status,jdbcType=VARCHAR},
</if>
<if test="supOrgId != null" >
sup_org_id = #{supOrgId,jdbcType=VARCHAR},
</if>
<if test="flag1 != null" >
flag1 = #{flag1,jdbcType=VARCHAR},
</if>
<if test="flag2 != null" >
flag2 = #{flag2,jdbcType=VARCHAR},
</if>
<if test="flag3 != null" >
flag3 = #{flag3,jdbcType=VARCHAR},
</if>
<if test="flag4 != null" >
flag4 = #{flag4,jdbcType=VARCHAR},
</if>
</set>
WHERE org_id = #{orgId,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.yutong.demand.synchrous.entity.SapDept">
UPDATE t_sap_dept
SET add_user = #{addUser,jdbcType=VARCHAR},
add_time = #{addTime,jdbcType=TIMESTAMP},
update_user = #{updateUser,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=TIMESTAMP},
valid_status = #{validStatus,jdbcType=VARCHAR},
delete_status = #{deleteStatus,jdbcType=VARCHAR},
org_name = #{orgName,jdbcType=VARCHAR},
org_level = #{orgLevel,jdbcType=VARCHAR},
status = #{status,jdbcType=VARCHAR},
sup_org_id = #{supOrgId,jdbcType=VARCHAR},
flag1 = #{flag1,jdbcType=VARCHAR},
flag2 = #{flag2,jdbcType=VARCHAR},
flag3 = #{flag3,jdbcType=VARCHAR},
flag4 = #{flag4,jdbcType=VARCHAR}
WHERE org_id = #{orgId,jdbcType=VARCHAR}
</update>
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO t_sap_dept (
org_id, add_user, add_time, update_user, update_time, valid_status, delete_status,
org_name, org_level, status, sup_org_id, flag1, flag2, flag3, flag4
)
VALUES
<foreach collection="list" item="item" separator="," index="index">
(
#{item.orgId,jdbcType=VARCHAR},#{item.addUser,jdbcType=VARCHAR},#{item.addTime,jdbcType=TIMESTAMP},
#{item.updateUser,jdbcType=VARCHAR},#{item.updateTime,jdbcType=TIMESTAMP},#{item.validStatus,jdbcType=VARCHAR},
#{item.deleteStatus,jdbcType=VARCHAR},#{item.orgName,jdbcType=VARCHAR},#{item.orgLevel,jdbcType=VARCHAR},
#{item.status,jdbcType=VARCHAR},#{item.supOrgId,jdbcType=VARCHAR},#{item.flag1,jdbcType=VARCHAR},#{item.flag2,jdbcType=VARCHAR},
#{item.flag3,jdbcType=VARCHAR},#{item.flag4,jdbcType=VARCHAR}
)
</foreach>
</insert>
<!-- 查询部门数量 -->
<select id="getDeptCount" parameterType="com.yutong.demand.synchrous.entity.SapDept" resultType="java.util.Map">
SELECT count(1) as "totalCount" FROM t_sap_dept
<where>
<if test="supOrgId != null and supOrgId != ''" >
AND sup_org_id = #{supOrgId, jdbcType=VARCHAR}
</if>
<if test="validStatus != null and validStatus != '' " >
AND valid_status = #{validStatus, jdbcType=VARCHAR}
</if>
<if test="deleteStatus != null and deleteStatus != ''" >
AND delete_status = #{deleteStatus, jdbcType=VARCHAR}
</if>
</where>
</select>
<!-- 清除部门数量 -->
<delete id="clearData" parameterType="java.lang.Object" >
truncate table t_sap_dept
</delete>
<select id="getByOrgIds" parameterType="java.util.List" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM t_sap_dept
WHERE valid_status = '1' and delete_status = '0'
<if test="list != null and list.size() > 0 ">
<foreach collection="list" item="item" open=" and org_id in (" separator="," close=")" >
#{item, jdbcType=VARCHAR}
</foreach>
</if>
</select>
</mapper>
3、申明SapDeptService类
package com.tianmao.demand.synchrous.service;
import com.tianmao.demand.synchrous.entity.SapDept;
import com.tianmao.demand.synchrous.entity.vo.DeptDataVO;
import java.util.List;
/**
* 同步集团部门服务接口
*
*/
public interface SapDeptService {
/**
* 组织列表[天猫网络及其子部门]
*
*
* @return
*/
DeptDataVO.OrgALLTreeVO<DeptDataVO.OrgALLTreeVO> findOrgAllTree();
/**
* 组织ID列表[天猫网络及其子部门]
*
*
* @return
*/
List<String> findAllOrgIdList();
}
4、SapDeptService类实现
package com.tianmao.demand.synchrous.service.impl;
import com.alibaba.fastjson.JSON;
import com.tianmao.utils.CollectionUtils;
import com.tianmao.utils.StringUtils;
import com.tianmao.demand.synchrous.component.SapRootDeptConfig;
import com.tianmao.demand.synchrous.dao.SapDeptDao;
import com.tianmao.demand.synchrous.entity.SapDept;
import com.tianmao.demand.synchrous.entity.vo.DeptDataVO;
import com.tianmao.demand.synchrous.service.SapDeptService;
import com.tianmao.demand.synchrous.utils.SpSapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
* 同步集团员工信息到本地
*/
@Service
public class SapDeptServiceImpl implements SapDeptService {
private static Logger logger = LoggerFactory.getLogger(SapDeptServiceImpl.class);
@Autowired
private SapRootDeptConfig sapRootDeptConfig;
@Autowired
private SapDeptDao sapDeptDao;
@Override
public DeptDataVO.OrgALLTreeVO<DeptDataVO.OrgALLTreeVO> findOrgAllTree() {
DeptDataVO.OrgALLTreeVO<DeptDataVO.OrgALLTreeVO> treeOrgVO = new DeptDataVO.OrgALLTreeVO();
//1、获取全部相关组织
SapDept sapDept = new SapDept();
sapDept.setStatus(SapDept.VALID_STATUS_TRUE);
sapDept.setValidStatus(SapDept.VALID_STATUS_TRUE);
sapDept.setDeleteStatus(SapDept.DELETE_STATUS_FALSE);
List<SapDept> sapDeptList = sapDeptDao.select(sapDept);
// 根部门ID
String rootOrgId = sapRootDeptConfig.getOrgId();
//2.获取根节点
List<SapDept> rootOrgList = sapDeptList.stream().filter(m -> {
if (StringUtils.equals(rootOrgId, m.getOrgId())) {
return true;
} else {
return false;
}
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(rootOrgList)) {
SapDept rootOrg = rootOrgList.get(0);
treeOrg(treeOrgVO, sapDeptList, rootOrg);
}
return treeOrgVO;
}
/**
* 获取组织人员树状结构
*
* @param orgTreeVO 返回类
* @param sapDeptList 组织列表
* @param supSapDept 上级组织节点
*/
private void treeOrg(DeptDataVO.OrgALLTreeVO<DeptDataVO.OrgALLTreeVO> orgTreeVO, List<SapDept> sapDeptList, SapDept supSapDept) {
BeanUtils.copyProperties(supSapDept, orgTreeVO);
List<DeptDataVO.OrgALLTreeVO> orgNameVOList = sapDeptList.stream().filter(m -> StringUtils.equals(supSapDept.getOrgId(), m.getSupOrgId())).map(m -> {
DeptDataVO.OrgALLTreeVO<DeptDataVO.OrgALLTreeVO> nodeOrgTreeVO = new DeptDataVO.OrgALLTreeVO();
BeanUtils.copyProperties(m, nodeOrgTreeVO);
treeOrg(nodeOrgTreeVO, sapDeptList, m);
return nodeOrgTreeVO;
}).collect(Collectors.toList());
orgTreeVO.setOrgNodes(orgNameVOList);
}
@Override
public List<String> findAllOrgIdList() {
List<String> orgIdList = new ArrayList<>();
DeptDataVO.OrgALLTreeVO<DeptDataVO.OrgALLTreeVO> orgAllTree = findOrgAllTree();
if(orgAllTree != null){
orgIdList.add(orgAllTree.getOrgId());
getChildNodeOrgId(orgIdList, orgAllTree.getOrgNodes());
}
return orgIdList;
}
private void getChildNodeOrgId(List<String> orgIdList, List<DeptDataVO.OrgALLTreeVO> orgNodes){
if(CollectionUtils.isNotEmpty(orgNodes)){
orgNodes.stream().forEach(new Consumer<DeptDataVO.OrgALLTreeVO>() {
@Override
public void accept(DeptDataVO.OrgALLTreeVO orgALLTreeVO) {
orgIdList.add(orgALLTreeVO.getOrgId());
getChildNodeOrgId(orgIdList, orgALLTreeVO.getOrgNodes());
}
});
}
}
}
链接: 配置类链接地址.
版权声明:本文为xiaomoyao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。