人员同步接口新增同步劳动主体

This commit is contained in:
zengweihai 2024-05-31 16:52:20 +08:00
parent b1a5103114
commit b37cbebe5d
1 changed files with 25 additions and 9 deletions

View File

@ -40,6 +40,8 @@ public class UserTaskImpl extends AbstractTask {
private static Logger logger = LoggerFactory.getLogger(HrmDepartmentTaskImpl.class); private static Logger logger = LoggerFactory.getLogger(HrmDepartmentTaskImpl.class);
private static final int PAGESIZE = 20; private static final int PAGESIZE = 20;
private int CURPAGE = 1; private int CURPAGE = 1;
private String base_custom_data = "field0,field1";
private DynamicObjectCollection queryOrges; private DynamicObjectCollection queryOrges;
static boolean flag = false; //判断当前用户集合是否存在需要设置的用户还没存入系统的情况 static boolean flag = false; //判断当前用户集合是否存在需要设置的用户还没存入系统的情况
@ -53,6 +55,7 @@ public class UserTaskImpl extends AbstractTask {
QueryDTO queryDTO = new QueryDTO(); QueryDTO queryDTO = new QueryDTO();
queryDTO.setPagesize(PAGESIZE); queryDTO.setPagesize(PAGESIZE);
queryDTO.setCurpage(CURPAGE); queryDTO.setCurpage(CURPAGE);
queryDTO.setBase_custom_data(base_custom_data);
Query query = new Query(); Query query = new Query();
query.setQueryDTO(queryDTO); query.setQueryDTO(queryDTO);
@ -70,10 +73,17 @@ public class UserTaskImpl extends AbstractTask {
if(data != null) { if(data != null) {
//查询当前星瀚人员id集合 //查询当前星瀚人员id集合
DynamicObjectCollection queryUsers = QueryServiceHelper.query("bos_user", DynamicObjectCollection queryUsers = QueryServiceHelper.query("bos_user",
"id,number,shkd_oaid", null);//查询星瀚系统部门集合 "id,number,shkd_oaid", null);//查询星瀚系统人员集合
Map<Object, Long> userIds = new HashMap<Object, Long>();//存放系统中已经存在的用户id集合 Map<Object, Long> userIds = new HashMap<Object, Long>();//存放系统中已经存在的用户id集合
for (DynamicObject queryUser : queryUsers) { for (DynamicObject queryUser : queryUsers) {
userIds.put(queryUser.getString("number"), queryUser.getLong("id"));//存放已经存在的人员的id以及number userIds.put(queryUser.getString("shkd_oaid"), queryUser.getLong("id"));//存放已经存在的人员的id以及number
}
DynamicObjectCollection queryOrges = QueryServiceHelper.query("bos_adminorg",
"id,number", null);//查询星瀚部门集合
Map<Object, Long> orgIds = new HashMap<Object, Long>();//存放系统中已经存在的行政组织id集合
for (DynamicObject queryOrge : queryOrges) {
orgIds.put(queryOrge.getString("number"), queryOrge.getLong("id"));//存放已经存在的部门的id以及number
} }
List<UserParam> paramList = new ArrayList<>();//创建存放人员类的集合 List<UserParam> paramList = new ArrayList<>();//创建存放人员类的集合
@ -83,7 +93,7 @@ public class UserTaskImpl extends AbstractTask {
BigDecimal size = new BigDecimal(PAGESIZE);//设置页大小为20 BigDecimal size = new BigDecimal(PAGESIZE);//设置页大小为20
BigDecimal pageNumber = totalSize.divide(size, 0, RoundingMode.UP);//计算需要分页数量 BigDecimal pageNumber = totalSize.divide(size, 0, RoundingMode.UP);//计算需要分页数量
//查询成功取第一轮数据添加入参数集合 //查询成功取第一轮数据添加入参数集合
this.buildUserParam(paramList, dataList, userIds); this.buildUserParam(paramList, dataList, userIds,orgIds);
//判断分页数量是否大于1是则进行遍历后续数据 //判断分页数量是否大于1是则进行遍历后续数据
if (pageNumber.compareTo(new BigDecimal(1)) > 0) {//当页数为1时不需要再次查询接口直接去同步数据 if (pageNumber.compareTo(new BigDecimal(1)) > 0) {//当页数为1时不需要再次查询接口直接去同步数据
@ -92,7 +102,7 @@ public class UserTaskImpl extends AbstractTask {
CURPAGE = i + 1; CURPAGE = i + 1;
queryDTO.setCurpage(CURPAGE); queryDTO.setCurpage(CURPAGE);
JSONObject dataNext = this.getOAUserData(query);//获取查询的数据 JSONObject dataNext = this.getOAUserData(query);//获取查询的数据
this.buildUserParam(paramList,dataNext.getJSONArray("dataList"),userIds); this.buildUserParam(paramList,dataNext.getJSONArray("dataList"),userIds,orgIds);
} }
} }
UserServiceHelper.addOrUpdate(paramList); UserServiceHelper.addOrUpdate(paramList);
@ -112,7 +122,7 @@ public class UserTaskImpl extends AbstractTask {
paramList.clear(); paramList.clear();
userIds.clear(); userIds.clear();
queryUsers = QueryServiceHelper.query("bos_user", queryUsers = QueryServiceHelper.query("bos_user",
"id,number,shkd_oaid", null);//查询星瀚系统部门集合 "id,number,shkd_oaid", null);//查询星瀚系统人员集合
userIds = new HashMap<Object, Long>();//存放系统中已经存在的用户id集合 userIds = new HashMap<Object, Long>();//存放系统中已经存在的用户id集合
for (DynamicObject queryUser : queryUsers) { for (DynamicObject queryUser : queryUsers) {
userIds.put(queryUser.getString("shkd_oaid"), queryUser.getLong("id"));//存放已经存在的人员的id以及number userIds.put(queryUser.getString("shkd_oaid"), queryUser.getLong("id"));//存放已经存在的人员的id以及number
@ -121,7 +131,7 @@ public class UserTaskImpl extends AbstractTask {
CURPAGE = i ; CURPAGE = i ;
queryDTO.setCurpage(CURPAGE); queryDTO.setCurpage(CURPAGE);
JSONObject dataNext = this.getOAUserData(query);//获取查询的数据 JSONObject dataNext = this.getOAUserData(query);//获取查询的数据
this.buildUserParam(paramList,dataNext.getJSONArray("dataList"),userIds); this.buildUserParam(paramList,dataNext.getJSONArray("dataList"),userIds,orgIds);
} }
UserServiceHelper.addOrUpdate(paramList);//新增或更新全量数据 UserServiceHelper.addOrUpdate(paramList);//新增或更新全量数据
for (UserParam userParam : paramList) { for (UserParam userParam : paramList) {
@ -151,11 +161,11 @@ public class UserTaskImpl extends AbstractTask {
return data ; return data ;
} }
private void buildUserParam(List<UserParam> paramList,JSONArray dataList,Map<Object,Long> userIds) { private void buildUserParam(List<UserParam> paramList,JSONArray dataList,Map<Object,Long> userIds,Map<Object, Long> orgIds) {
for (int i = 0; i < dataList.size(); i++) { for (int i = 0; i < dataList.size(); i++) {
UserParam user = new UserParam(); UserParam user = new UserParam();
JSONObject userData = dataList.getJSONObject(i); JSONObject userData = dataList.getJSONObject(i);
Long workid = userIds.get(userData.getString("workcode")); Long workid = userIds.get(userData.getString("id"));
if (workid != null){ if (workid != null){
user.setId(workid); user.setId(workid);
user.setCustomUserId(workid); user.setCustomUserId(workid);
@ -170,6 +180,12 @@ public class UserTaskImpl extends AbstractTask {
dataMap.put("birthday", userData.getDate("birthday"));//生日 dataMap.put("birthday", userData.getDate("birthday"));//生日
dataMap.put("gender", "" .equals(userData.getString("sex")) ? "1" : "2"); //性别 dataMap.put("gender", "" .equals(userData.getString("sex")) ? "1" : "2"); //性别
dataMap.put("shkd_oaid",userData.getString("id")); dataMap.put("shkd_oaid",userData.getString("id"));
JSONObject base_custom_data = userData.getJSONObject("base_custom_data");
String field1= base_custom_data.getString("field1");
if (!"".equals(field1)){
dataMap.put("shkd_labororg",orgIds.get(field1));
}
// 职位分 // 职位分
if(workid == null){//若人不存在则更新部门 if(workid == null){//若人不存在则更新部门
@ -184,7 +200,7 @@ public class UserTaskImpl extends AbstractTask {
entryentity.put("position", userData.getString("jobactivityname")); // 职位 entryentity.put("position", userData.getString("jobactivityname")); // 职位
entryentity.put("isincharge", false); //负责人 entryentity.put("isincharge", false); //负责人
entryentity.put("ispartjob", false); //兼职 entryentity.put("ispartjob", false); //兼职
String managerId_oa = userData.getString("managerid");//获取上级人员id(oa) String managerId_oa = userData.getString("managerid");//获取上级人员id(oa)
Long managerId = userIds.get(managerId_oa);//直接上级id Long managerId = userIds.get(managerId_oa);//直接上级id
if (managerId != null){ if (managerId != null){
entryentity.put("superior", managerId); // 赋值直接上级 entryentity.put("superior", managerId); // 赋值直接上级