考勤数据库,组织架构、人员信息同步

kangrui
dxfeng 9 months ago
parent 75a145fbb9
commit 41436e3e81

@ -6,6 +6,7 @@ import com.engine.kr.entity.sync.KqResourceData;
import com.engine.kr.exception.CustomizeRunTimeException; import com.engine.kr.exception.CustomizeRunTimeException;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.formmode.IgnoreCaseHashMap; import weaver.formmode.IgnoreCaseHashMap;
import weaver.general.Util; import weaver.general.Util;
@ -29,15 +30,15 @@ import java.util.stream.Collectors;
*/ */
public class SyncKqOrgDataJob extends BaseCronJob { public class SyncKqOrgDataJob extends BaseCronJob {
private static final String COMPANY_TABLE = "hrmcompany"; private static final String COMPANY_TABLE = "hrmcompany";
private static final String SUB_COMPANY_TABLE = "uf_hrmsubcompany"; private static final String SUB_COMPANY_TABLE = "hrmsubcompany";
private static final String DEPARTMENT_TABLE = "uf_hrmdepartment"; private static final String DEPARTMENT_TABLE = "hrmdepartment";
private static final String RESOURCE_TABLE = "uf_hrmresource"; private static final String RESOURCE_TABLE = "hrmresource";
private static final boolean IS_DEV = false;
// 组织唯一代码 // 组织唯一代码
Map<String, KqOrgData> sysIdMap = new HashMap<>(); Map<String, KqOrgData> sysIdMap = new HashMap<>();
private String syncType;
@Override @Override
public void execute() { public void execute() {
RecordSet rs = new RecordSet(); RecordSet rs = new RecordSet();
@ -88,9 +89,14 @@ public class SyncKqOrgDataJob extends BaseCronJob {
} }
} }
if (IS_DEV) {
// 查询人员数据 //TODO 按照指定时间 查询人员数据
rs.executeSqlWithDataSource("select empno,empname,empsexid,empstatusid,dptsysid,empbirthday,empidno,empgrpdate,empnormaldate,empleavedate,empmobile,emplocaladdr,emphomeaddr from rs_emp ", "KAOQIN"); String sql = "select empno,empname,empsexid,empstatusid,dptsysid,empbirthday,empidno,empgrpdate,empnormaldate,empleavedate,empmobile,emplocaladdr,emphomeaddr from rs_emp ";
if (!"all".equals(syncType)) {
String currentDate = DateUtil.getCurrentDate();
sql += "where empgrpdate = '" + currentDate + "' or empleavedate = '" + currentDate + "'";
}
rs.executeSqlWithDataSource(sql, "KAOQIN");
List<KqResourceData> resourceList = new ArrayList<>(); List<KqResourceData> resourceList = new ArrayList<>();
while (rs.next()) { while (rs.next()) {
KqResourceData resourceData = new KqResourceData(); KqResourceData resourceData = new KqResourceData();
@ -127,7 +133,6 @@ public class SyncKqOrgDataJob extends BaseCronJob {
} }
}
rs.writeLog("考勤组织信息同步任务结束"); rs.writeLog("考勤组织信息同步任务结束");
} catch (Exception e) { } catch (Exception e) {
rs.writeLog("组织同步计划任务异常", e); rs.writeLog("组织同步计划任务异常", e);
@ -135,7 +140,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
} }
private void dealDepartmentData(RecordSet rs, KqOrgData departmentData, Map<String, List<KqOrgData>> parentMap, String subCompanyId, String supDepId) { private void dealDepartmentData(RecordSet rs, KqOrgData departmentData, Map<String, List<KqOrgData>> parentMap, String subCompanyId, String supDepId) {
//TODO 同步部门数据 // 同步部门数据
syncDepartmentData(rs, departmentData, subCompanyId, supDepId); syncDepartmentData(rs, departmentData, subCompanyId, supDepId);
List<KqOrgData> departmentList = parentMap.get(departmentData.getDptprcno()); List<KqOrgData> departmentList = parentMap.get(departmentData.getDptprcno());
@ -155,7 +160,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
} }
if (StringUtils.isBlank(id)) { if (StringUtils.isBlank(id)) {
// rs.writeLog("当前人员未在OA中查询到"+JSON.toJSONString(resourceData)); rs.writeLog("当前人员未在OA中查询到" + JSON.toJSONString(resourceData));
return; return;
} }
@ -180,6 +185,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 更新离职日期 // 更新离职日期
rs.executeUpdate("update cus_fielddata set field16 = ? where `SCOPE` ='HrmCustomFieldByInfoType' and SCOPEID =3 and id = ?", resourceData.getEmpleavedate(), id);
new ResourceComInfo().updateCache(id); new ResourceComInfo().updateCache(id);
} }
@ -196,12 +202,12 @@ public class SyncKqOrgDataJob extends BaseCronJob {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>(); IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("departmentmark", departmentData.getDptname()); dataMap.put("departmentmark", departmentData.getDptname());
dataMap.put("departmentname", departmentData.getDptname()); dataMap.put("departmentname", departmentData.getDptname());
dataMap.put("departmentcode", departmentData.getDptprcno()); dataMap.put("departmentcode", departmentData.getDptno());
dataMap.put("subcompanyid1", subCompanyId); dataMap.put("subcompanyid1", subCompanyId);
dataMap.put("supdepid", supDepId); dataMap.put("supdepid", supDepId);
dataMap.put("canceled", departmentData.getIsdelete()); dataMap.put("canceled", departmentData.getIsdelete());
// 判断有无当前分部数据 // 判断有无当前分部数据
rs.executeQuery("select id from " + DEPARTMENT_TABLE + " where departmentcode = ? ", departmentData.getDptprcno()); rs.executeQuery("select id from " + DEPARTMENT_TABLE + " where departmentcode = ? ", departmentData.getDptno());
if (rs.next()) { if (rs.next()) {
// 更新 // 更新
dataMap.put("id", rs.getString("id")); dataMap.put("id", rs.getString("id"));
@ -210,21 +216,21 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 新增 // 新增
insertData(dataMap, DEPARTMENT_TABLE); insertData(dataMap, DEPARTMENT_TABLE);
} }
rs.executeQuery("select id from " + DEPARTMENT_TABLE + " where departmentcode = ? ", departmentData.getDptprcno()); rs.executeQuery("select id from " + DEPARTMENT_TABLE + " where departmentcode = ? ", departmentData.getDptno());
if (rs.next()) { if (rs.next()) {
// 赋值OA中的ID // 赋值OA中的ID
departmentData.setOaId(rs.getString("id")); departmentData.setOaId(rs.getString("id"));
departmentData.setSubCompanyId(subCompanyId); departmentData.setSubCompanyId(subCompanyId);
sysIdMap.put(departmentData.getDptsysid(), departmentData); sysIdMap.put(departmentData.getDptsysid(), departmentData);
if(IS_DEV) {
DepartmentComInfo dci = new DepartmentComInfo(); DepartmentComInfo dci = new DepartmentComInfo();
dci.removeCompanyCache(); dci.removeCompanyCache();
dci.addCache(departmentData.getOaId()); dci.addCache(departmentData.getOaId());
HrmServiceManager hrmServiceManager = new HrmServiceManager(); HrmServiceManager hrmServiceManager = new HrmServiceManager();
hrmServiceManager.SynInstantDepartment(departmentData.getOaId(), "2"); hrmServiceManager.SynInstantDepartment(departmentData.getOaId(), "2");
MatrixUtil.updateDepartmentData(departmentData.getOaId()); MatrixUtil.updateDepartmentData(departmentData.getOaId());
}
} else { } else {
throw new CustomizeRunTimeException("当前部门同步失败," + JSON.toJSONString(departmentData)); throw new CustomizeRunTimeException("当前部门同步失败," + JSON.toJSONString(departmentData));
} }
@ -243,12 +249,12 @@ public class SyncKqOrgDataJob extends BaseCronJob {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>(); IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("subcompanyname", subCompany.getDptname()); dataMap.put("subcompanyname", subCompany.getDptname());
dataMap.put("subcompanydesc", subCompany.getDptname()); dataMap.put("subcompanydesc", subCompany.getDptname());
dataMap.put("subcompanycode", subCompany.getDptprcno()); dataMap.put("subcompanycode", subCompany.getDptno());
dataMap.put("companyid", companyId); dataMap.put("companyid", companyId);
dataMap.put("supsubcomid", "0"); dataMap.put("supsubcomid", "0");
dataMap.put("canceled", subCompany.getIsdelete()); dataMap.put("canceled", subCompany.getIsdelete());
// 判断有无当前分部数据 // 判断有无当前分部数据
rs.executeQuery("select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? ", subCompany.getDptprcno()); rs.executeQuery("select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? ", subCompany.getDptno());
if (rs.next()) { if (rs.next()) {
// 更新 // 更新
dataMap.put("id", rs.getString("id")); dataMap.put("id", rs.getString("id"));
@ -257,20 +263,18 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 新增 // 新增
insertData(dataMap, SUB_COMPANY_TABLE); insertData(dataMap, SUB_COMPANY_TABLE);
} }
rs.executeQuery("select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? ", subCompany.getDptprcno()); rs.executeQuery("select id from " + SUB_COMPANY_TABLE + " where subcompanycode = ? ", subCompany.getDptno());
if (rs.next()) { if (rs.next()) {
// 赋值OA中的ID // 赋值OA中的ID
subCompany.setOaId(rs.getString("id")); subCompany.setOaId(rs.getString("id"));
sysIdMap.put(subCompany.getDptsysid(), subCompany); sysIdMap.put(subCompany.getDptsysid(), subCompany);
// 刷新缓存 // 刷新缓存
if (IS_DEV) {
SubCompanyComInfo sci = new SubCompanyComInfo(); SubCompanyComInfo sci = new SubCompanyComInfo();
sci.removeCompanyCache(); sci.removeCompanyCache();
sci.addCache(subCompany.getOaId()); sci.addCache(subCompany.getOaId());
MatrixUtil.updateSubcompayData(subCompany.getOaId()); MatrixUtil.updateSubcompayData(subCompany.getOaId());
new weaver.hrm.appdetach.AppDetachComInfo().initSubDepAppData(); new weaver.hrm.appdetach.AppDetachComInfo().initSubDepAppData();
}
} else { } else {
throw new CustomizeRunTimeException("当前分部同步失败," + JSON.toJSONString(subCompany)); throw new CustomizeRunTimeException("当前分部同步失败," + JSON.toJSONString(subCompany));
} }
@ -370,5 +374,11 @@ public class SyncKqOrgDataJob extends BaseCronJob {
} }
} }
public String getSyncType() {
return syncType;
}
public void setSyncType(String syncType) {
this.syncType = syncType;
}
} }

Loading…
Cancel
Save