增加计算部门人员功能
This commit is contained in:
parent
577cb7c1fe
commit
a31d52d15a
@ -98,10 +98,10 @@ public class DingTalkUtil {
|
||||
* @param accessToken
|
||||
* @return
|
||||
*/
|
||||
public List<DepartmentInfosBo> getDepartmentDetails(String accessToken, String departmentIds) {
|
||||
public Map<String, DepartmentInfosBo> getDepartmentDetails(String accessToken, String departmentIds) {
|
||||
try {
|
||||
//下面获取所有部门的i就按单信息
|
||||
List<DepartmentInfosBo> list = new ArrayList<>();
|
||||
Map<String, DepartmentInfosBo> list = new HashMap<>();
|
||||
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/department/list");
|
||||
OapiDepartmentListRequest req = new OapiDepartmentListRequest();
|
||||
req.setFetchChild(true);
|
||||
@ -130,7 +130,7 @@ public class DingTalkUtil {
|
||||
departmentInfosBo.setStatus(1);
|
||||
departmentInfosBo.setOrder(json.getInteger("order"));
|
||||
|
||||
list.add(departmentInfosBo);
|
||||
list.put(departmentInfosBo.getId(), departmentInfosBo);
|
||||
}
|
||||
}else{
|
||||
logger.info("获取部门详情异常{}", rsp.getBody());
|
||||
|
||||
@ -37,4 +37,6 @@ public interface DepartmentsDao extends BaseMapper<DepartmentsEntity> {
|
||||
DepartmentsEntity selectByDepartmentId(@Param("departmentId") String departmentId);
|
||||
|
||||
StaffDepartmentDto selectStaffAllDepartments(@Param("departmentId") String departmentId);
|
||||
|
||||
int addDepartment(@Param("departments") DepartmentsEntity departments);
|
||||
}
|
||||
|
||||
@ -25,6 +25,8 @@ public interface DepartmentsService extends IService<DepartmentsEntity> {
|
||||
|
||||
void updateDepartmentInfos(List<DepartmentInfosBo> departmentInfosBos);
|
||||
|
||||
|
||||
|
||||
List<DepartmentsDto> getDepartmentTree();
|
||||
|
||||
List<DepartmentsDto> selectByParentDepartmentId(String deparentId);
|
||||
@ -34,5 +36,7 @@ public interface DepartmentsService extends IService<DepartmentsEntity> {
|
||||
DepartmentsEntity selectByDepartmentId(String departmentId);
|
||||
|
||||
StaffDepartmentDto selectStaffAllDepartments(String departmentId);
|
||||
|
||||
void updateDepartmentInfo(DepartmentInfosBo departmentInfosBo);
|
||||
}
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ public class DepartmentsServiceImpl extends ServiceImpl<DepartmentsDao, Departme
|
||||
|
||||
@Override
|
||||
public List<DepartmentsDto> getDepartmentTree() {
|
||||
List<DepartmentsDto> departmentsParentsList = departmentsDao.getDepartmentsByparentId("0");
|
||||
List<DepartmentsDto> departmentsParentsList = departmentsDao.getDepartmentsByparentId("1");
|
||||
getDepartmentTreeList(departmentsParentsList);
|
||||
return departmentsParentsList;
|
||||
}
|
||||
@ -125,6 +125,22 @@ public class DepartmentsServiceImpl extends ServiceImpl<DepartmentsDao, Departme
|
||||
departmentsEntity.setStatus(departmentInfosBo.getStatus()); //部门状态【0 无效,1 有效】
|
||||
return departmentsEntity;
|
||||
}
|
||||
@Override
|
||||
public void updateDepartmentInfo(DepartmentInfosBo departmentInfosBo) {
|
||||
try {
|
||||
departmentsDao.updateDepartmentStatus();
|
||||
DepartmentsEntity departmentsEntity = convertDepartmentEntity(departmentInfosBo);
|
||||
DepartmentsEntity departmentBo = departmentsDao.getDepartmentByDepartmentId(departmentInfosBo.getId());
|
||||
if (departmentBo != null) {
|
||||
departmentsEntity.setId(departmentBo.getId());
|
||||
departmentsDao.updateDepartment(departmentsEntity);
|
||||
}else{
|
||||
departmentsDao.addDepartment(departmentsEntity);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.info("updateDepartmentInfos error : " + e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -23,7 +23,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author fumeiai
|
||||
@ -86,21 +88,39 @@ public class DingtalkBusiness {
|
||||
//获取Token
|
||||
String token = dingTalkUtil.getAccessToken(appid);
|
||||
if(token != null && token.length() > 0){
|
||||
|
||||
//获取所有的部门详情
|
||||
List<DepartmentInfosBo> departmentInfosBos = dingTalkUtil.getDepartmentDetails(token, "1");
|
||||
Map<String, DepartmentInfosBo> departmentInfosBos = dingTalkUtil.getDepartmentDetails(token, "1");
|
||||
if(departmentInfosBos.size() > 0){
|
||||
//更新数据库中的部门相关信息
|
||||
departmentsService.updateDepartmentInfos(departmentInfosBos);
|
||||
//departmentsService.updateDepartmentInfos(departmentInfosBos);
|
||||
//删除原有的对应关系下面在更新
|
||||
departmentsStaffRelateService.deleteAllRelates();
|
||||
//未在飞书组织架构里的成员,置为离职(全部置为离职,再把在职的恢复)
|
||||
staffOccupationService.updateAllOccupation();
|
||||
//获取飞书部门对应的用户详情
|
||||
for (DepartmentInfosBo departmentInfo : departmentInfosBos) {
|
||||
for (String key : departmentInfosBos.keySet()) {
|
||||
DepartmentInfosBo departmentInfo = departmentInfosBos.get(key);
|
||||
//获取部门用户详情
|
||||
List<DepartmentStaffBo> staffs = dingTalkUtil.getDepartmentStaffDetails(token, departmentInfo.getId());
|
||||
logger.info("=============================" + departmentInfo.getName() + "================================");
|
||||
|
||||
//departmentInfo.setMemberCount(staffs.size());//设置部门人数,钉钉没有返回部门人数,只能这样设置
|
||||
//计算父类的
|
||||
DepartmentInfosBo integer = departmentInfo;
|
||||
while(!integer.getParentId().equals("1")){
|
||||
integer = departmentInfosBos.get(integer.getParentId());
|
||||
if(integer.getMemberCount() == null){
|
||||
integer.setMemberCount(0);
|
||||
}
|
||||
integer.setMemberCount(integer.getMemberCount() + staffs.size());
|
||||
|
||||
}
|
||||
//获取自己的
|
||||
if(departmentInfo.getMemberCount() == null){
|
||||
departmentInfo.setMemberCount(0);
|
||||
}
|
||||
departmentInfo.setMemberCount(departmentInfo.getMemberCount() + staffs.size());
|
||||
|
||||
if(staffs.size() > 0){
|
||||
//循环录入到员工信息表中
|
||||
List<StaffEntity> staffIds = staffService.updateStaffsInfo(staffs);
|
||||
@ -111,6 +131,11 @@ public class DingtalkBusiness {
|
||||
enterStaffOccupationInfos(staffs);
|
||||
}
|
||||
}
|
||||
for (String key : departmentInfosBos.keySet()) {
|
||||
DepartmentInfosBo departmentInfo = departmentInfosBos.get(key);
|
||||
departmentsService.updateDepartmentInfo(departmentInfo);
|
||||
}
|
||||
|
||||
}else{
|
||||
logger.info("部门信息为空");
|
||||
}
|
||||
|
||||
@ -91,5 +91,13 @@
|
||||
where a.department_id = #{departmentId}
|
||||
</select>
|
||||
|
||||
<insert id="addDepartment" useGeneratedKeys="true" keyProperty="id">
|
||||
INSERT INTO
|
||||
lz_departments(department_id,department_parent_id,member_count,department_name,chat_id,leader_employee_id,leader_open_id,status)
|
||||
VALUES
|
||||
(#{department.departmentId},#{department.departmentParentId},#{department.memberCount},#{department.departmentName},#{department.chatId},#{department.leaderEmployeeId},#{department.leaderOpenId},#{department.status})
|
||||
|
||||
</insert>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user