From a31d52d15a604ca3924808570ef15d019bceaa0e Mon Sep 17 00:00:00 2001 From: wulin Date: Wed, 19 Aug 2020 08:49:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=A1=E7=AE=97=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E4=BA=BA=E5=91=98=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lz/common/utils/DingTalkUtil.java | 6 ++-- .../lz/modules/app/dao/DepartmentsDao.java | 2 ++ .../app/service/DepartmentsService.java | 4 +++ .../service/impl/DepartmentsServiceImpl.java | 18 +++++++++- .../job/business/DingtalkBusiness.java | 33 ++++++++++++++++--- .../mapper/generator/DepartmentsDao.xml | 8 +++++ 6 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/lz/common/utils/DingTalkUtil.java b/src/main/java/com/lz/common/utils/DingTalkUtil.java index 8892ac5f..75a2c6f9 100644 --- a/src/main/java/com/lz/common/utils/DingTalkUtil.java +++ b/src/main/java/com/lz/common/utils/DingTalkUtil.java @@ -98,10 +98,10 @@ public class DingTalkUtil { * @param accessToken * @return */ - public List getDepartmentDetails(String accessToken, String departmentIds) { + public Map getDepartmentDetails(String accessToken, String departmentIds) { try { //下面获取所有部门的i就按单信息 - List list = new ArrayList<>(); + Map 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()); diff --git a/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java b/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java index de896c0d..142cfe19 100644 --- a/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java +++ b/src/main/java/com/lz/modules/app/dao/DepartmentsDao.java @@ -37,4 +37,6 @@ public interface DepartmentsDao extends BaseMapper { DepartmentsEntity selectByDepartmentId(@Param("departmentId") String departmentId); StaffDepartmentDto selectStaffAllDepartments(@Param("departmentId") String departmentId); + + int addDepartment(@Param("departments") DepartmentsEntity departments); } diff --git a/src/main/java/com/lz/modules/app/service/DepartmentsService.java b/src/main/java/com/lz/modules/app/service/DepartmentsService.java index dadf1055..52829f36 100644 --- a/src/main/java/com/lz/modules/app/service/DepartmentsService.java +++ b/src/main/java/com/lz/modules/app/service/DepartmentsService.java @@ -25,6 +25,8 @@ public interface DepartmentsService extends IService { void updateDepartmentInfos(List departmentInfosBos); + + List getDepartmentTree(); List selectByParentDepartmentId(String deparentId); @@ -34,5 +36,7 @@ public interface DepartmentsService extends IService { DepartmentsEntity selectByDepartmentId(String departmentId); StaffDepartmentDto selectStaffAllDepartments(String departmentId); + + void updateDepartmentInfo(DepartmentInfosBo departmentInfosBo); } diff --git a/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java b/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java index c3a1e016..3e9dc04b 100644 --- a/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java +++ b/src/main/java/com/lz/modules/app/service/impl/DepartmentsServiceImpl.java @@ -55,7 +55,7 @@ public class DepartmentsServiceImpl extends ServiceImpl getDepartmentTree() { - List departmentsParentsList = departmentsDao.getDepartmentsByparentId("0"); + List departmentsParentsList = departmentsDao.getDepartmentsByparentId("1"); getDepartmentTreeList(departmentsParentsList); return departmentsParentsList; } @@ -125,6 +125,22 @@ public class DepartmentsServiceImpl extends ServiceImpl 0){ - //获取所有的部门详情 - List departmentInfosBos = dingTalkUtil.getDepartmentDetails(token, "1"); + Map 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 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 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("部门信息为空"); } diff --git a/src/main/resources/mapper/generator/DepartmentsDao.xml b/src/main/resources/mapper/generator/DepartmentsDao.xml index 8f2ea29d..df137448 100644 --- a/src/main/resources/mapper/generator/DepartmentsDao.xml +++ b/src/main/resources/mapper/generator/DepartmentsDao.xml @@ -91,5 +91,13 @@ where a.department_id = #{departmentId} + + 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}) + + +