提交修改

This commit is contained in:
quyixiao 2020-08-19 18:41:59 +08:00
commit 547ad3b9f8
6 changed files with 63 additions and 8 deletions

View File

@ -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());

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}
}

View File

@ -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("部门信息为空");
}

View File

@ -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>