Commit 057e22f9 by liyanlin

同步OA用户JOB

parent b03769eb
package com.blt.other.common.job;
import com.bailuntec.api.bailuntec.oa.OaApi;
import com.bailuntec.api.bailuntec.oa.response.OaDepartmentResp;
import com.bailuntec.api.bailuntec.oa.response.OaUserResp;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.blt.other.module.auth.dao.OaDepartmentMapper;
import com.blt.other.module.auth.model.OaDepartment;
import com.blt.other.module.auth.model.OaUser;
import com.blt.other.module.auth.service.IOaDepartmentService;
import com.blt.other.module.auth.service.IOaUserService;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author: li.yanlin
* @Description:
* @Date: Created in
* @Modified by:
*/
public class OaUserSyncJob extends QuartzJobBean {
private static Logger logger = LoggerFactory.getLogger(OaUserSyncJob.class);
@Autowired
private OaApi oaApi;
@Autowired
private IOaUserService oaUserService;
@Autowired
private IOaDepartmentService oaDepartmentService;
@Resource
OaDepartmentMapper oaDepartmentMapper;
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
}
private void syncOa() {
List<OaUserResp> oaUserRespList = oaApi.getAllUser();
List<OaDepartmentResp> oaDepartmentRespList = oaApi.getDeparmentList();
List<OaUser> oaUserList = oaUserRespList.stream().map(oaUserResp -> {
OaUser oaUser = new OaUser();
oaUser.setCompanyId(oaUserResp.getCompanyId());
oaUser.setDepartmentId(oaUserResp.getDepartmentId());
oaUser.setOaUserId(oaUserResp.getId());
oaUser.setUserAccount(oaUserResp.getUserAccount());
oaUser.setUserCode(oaUserResp.getUserCode());
oaUser.setUserName(oaUserResp.getUserName());
return oaUser;
})
.collect(Collectors.toList());
List<OaDepartment> oaDepartmentList = oaDepartmentRespList.stream().map(oaDepartmentResp -> {
OaDepartment oaDepartment = new OaDepartment();
oaDepartment.setCode(oaDepartmentResp.getCode());
oaDepartment.setCompanyId(oaDepartmentResp.getCompanyId());
oaDepartment.setManageUser1(oaDepartmentResp.getManageUser1());
oaDepartment.setManageUser2(oaDepartmentResp.getManageUser2());
oaDepartment.setName(oaDepartmentResp.getName());
oaDepartment.setSort(oaDepartmentResp.getSort());
oaDepartment.setParentId(oaDepartmentResp.getParentId());
oaDepartment.setDepartmentId(oaDepartmentResp.getDepartmentId());
oaDepartment.setFullName(oaDepartmentResp.getFullName());
return oaDepartment;
})
.collect(Collectors.toList());
Map<Integer, OaDepartment> oaDepartmentMap = oaDepartmentList.stream().collect(Collectors.toMap(
OaDepartment::getDepartmentId, oaDepartment -> oaDepartment, (k1, k2) -> k1
));
oaUserList.forEach(oaUser -> {
oaUser.setPrimaryDepartmentId(this.getPrimaryDepartment(oaDepartmentMap, oaDepartmentMap.get(oaUser.getDepartmentId())).getDepartmentId());
if (oaUserService.getOne(new LambdaQueryWrapper<OaUser>().eq(OaUser::getOaUserId, oaUser.getOaUserId())) == null) {
oaUserService.save(oaUser);
}
});
oaDepartmentList.forEach(oaDepartment -> {
if (oaDepartmentMapper.selectByDepartmentId(oaDepartment.getDepartmentId()) == null) {
oaDepartment.setUpdateUserId(0);
oaDepartmentService.save(oaDepartment);
} else {
oaDepartmentService.update(oaDepartment, new LambdaQueryWrapper<OaDepartment>()
.eq(OaDepartment::getDepartmentId, oaDepartment.getDepartmentId()));
}
});
}
private OaDepartment getPrimaryDepartment(Map<Integer, OaDepartment> departmentMap, OaDepartment oaDepartment) {
if (oaDepartment == null) {
return new OaDepartment();
}
if (oaDepartment.getParentId().equals(0) || oaDepartment.getParentId() == null) {
return oaDepartment;
}
return getPrimaryDepartment(departmentMap, departmentMap.get(oaDepartment.getParentId()));
}
}
package com.blt.other.common.job;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author: li.yanlin
* @Description: 同步OA用户,免得每次有新同事使用OA都要同步一次
* @Date: Created in 17:12 2021-04-24
* @Modified by:
*/
@Configuration
public class OaUserSyncJobConfiguration {
// 扫描主体列表时间间隔:(秒)
private static final int TIME = 60 * 60 * 2;
// JobDetail 定义要执行的 job
@Bean
public JobDetail oaUserSyncJobDetail() {
return JobBuilder.newJob(OaUserSyncJob.class)
.withIdentity("oaUserSyncJob")
.storeDurably().build();
}
// 触发 Bean 的 Trigger
@Bean
public Trigger oaUserSyncJobTrigger() {
SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(TIME).repeatForever();
return TriggerBuilder.newTrigger().forJob(oaUserSyncJobDetail())
.withIdentity("oaUserSyncTrigger")
.withSchedule(simpleScheduleBuilder).build();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment