组织架构监听

This commit is contained in:
zhangchenbiao
2023-06-19 15:59:43 +08:00
parent c94f8083d6
commit f64d9b6354
5 changed files with 61 additions and 2 deletions

View File

@@ -74,4 +74,26 @@ public class RegionDAO {
return regionMapper.getRegionInfoByRegionId(regionId);
}
/**
* 判断一个节点是否是叶子节点
* @param regionId
* @return
*/
public boolean isLeafNode(String regionId){
Integer subCount = regionMapper.getSubNodeCountByRegionId(regionId);
return subCount <= CommonConstants.ZERO;
}
/**
* 删除区域
* @param regionId
* @return
*/
public Integer deleteRegionByRegionId(String regionId){
if(StringUtils.isBlank(regionId)){
return CommonConstants.ZERO;
}
return regionMapper.deleteRegionByRegionId(regionId);
}
}

View File

@@ -58,4 +58,17 @@ public interface RegionMapper {
* @return
*/
RegionDO getRegionInfoByRegionId(@Param("regionId") String regionId);
/**
* 获取区域的子节点个数
* @return
*/
Integer getSubNodeCountByRegionId(@Param("regionId") String regionId);
/**
* 删除区域
* @param regionId
* @return
*/
Integer deleteRegionByRegionId(@Param("regionId") String regionId);
}

View File

@@ -196,4 +196,12 @@
where
deleted = 0 and region_id= #{regionId}
</select>
<select id="getSubNodeCountByRegionId" resultType="integer">
select count(1) from region where deleted = 0 and parent_id = #{regionId}
</select>
<update id="deleteRegionByRegionId">
update region set deleted = 1 where region_id = #{regionId}
</update>
</mapper>

View File

@@ -11,6 +11,9 @@ import com.cool.store.dto.dept.DepartmentEventDTO;
*/
public interface EnterpriseSyncService {
/**
* 全量同步
*/
void syncAll();
/**

View File

@@ -85,7 +85,10 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService {
}
}
/**
* 同步组织架构
* @return
*/
private Pair<List<RegionDO>, Multimap<String, String>> syncRegion(){
//同步部门
List<SysDepartmentDTO> departments = isvHttpRequest.getSubDepartments(CommonConstants.ROOT_DEPT_ID_STR, true);
@@ -239,13 +242,23 @@ public class EnterpriseSyncServiceImpl implements EnterpriseSyncService {
dealUserLeaderDept(updateLeaderDeptMap);
break;
case DEPARTMENT_DELETED:
syncAll();
boolean leafNode = regionDAO.isLeafNode(departmentDetail.getId());
if(leafNode){
//叶子节点的时候会删除部门
regionDAO.deleteRegionByRegionId(departmentDetail.getId());
}else{
syncAll();
}
break;
default:
return;
}
}
/**
* 处理用户负责部门信息
* @param leaderDeptMap
*/
public void dealUserLeaderDept(Multimap<String, String> leaderDeptMap){
if(leaderDeptMap.isEmpty()){
return;