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

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 org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.formmode.IgnoreCaseHashMap;
import weaver.general.Util;
@ -29,15 +30,15 @@ import java.util.stream.Collectors;
*/
public class SyncKqOrgDataJob extends BaseCronJob {
private static final String COMPANY_TABLE = "hrmcompany";
private static final String SUB_COMPANY_TABLE = "uf_hrmsubcompany";
private static final String DEPARTMENT_TABLE = "uf_hrmdepartment";
private static final String RESOURCE_TABLE = "uf_hrmresource";
private static final boolean IS_DEV = false;
private static final String SUB_COMPANY_TABLE = "hrmsubcompany";
private static final String DEPARTMENT_TABLE = "hrmdepartment";
private static final String RESOURCE_TABLE = "hrmresource";
// 组织唯一代码
Map<String, KqOrgData> sysIdMap = new HashMap<>();
private String syncType;
@Override
public void execute() {
RecordSet rs = new RecordSet();
@ -88,45 +89,49 @@ public class SyncKqOrgDataJob extends BaseCronJob {
}
}
if (IS_DEV) {
// 查询人员数据
rs.executeSqlWithDataSource("select empno,empname,empsexid,empstatusid,dptsysid,empbirthday,empidno,empgrpdate,empnormaldate,empleavedate,empmobile,emplocaladdr,emphomeaddr from rs_emp ", "KAOQIN");
List<KqResourceData> resourceList = new ArrayList<>();
while (rs.next()) {
KqResourceData resourceData = new KqResourceData();
resourceData.setEmpno(rs.getString("empno"));
resourceData.setEmpname(rs.getString("empname"));
resourceData.setEmpsexid(rs.getString("empsexid"));
resourceData.setEmpstatusid(rs.getString("empstatusid"));
resourceData.setDptsysid(rs.getString("dptsysid"));
resourceData.setEmpbirthday(rs.getString("empbirthday"));
resourceData.setEmpidno(rs.getString("empidno"));
resourceData.setEmpgrpdate(rs.getString("empgrpdate"));
resourceData.setEmpnormaldate(rs.getString("empnormaldate"));
resourceData.setEmpleavedate(rs.getString("empleavedate"));
resourceData.setEmpmobile(rs.getString("empmobile"));
resourceData.setEmplocaladdr(rs.getString("emplocaladdr"));
resourceData.setEmphomeaddr(rs.getString("emphomeaddr"));
resourceList.add(resourceData);
}
//TODO 按照指定时间 查询人员数据
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<>();
while (rs.next()) {
KqResourceData resourceData = new KqResourceData();
resourceData.setEmpno(rs.getString("empno"));
resourceData.setEmpname(rs.getString("empname"));
resourceData.setEmpsexid(rs.getString("empsexid"));
resourceData.setEmpstatusid(rs.getString("empstatusid"));
resourceData.setDptsysid(rs.getString("dptsysid"));
resourceData.setEmpbirthday(rs.getString("empbirthday"));
resourceData.setEmpidno(rs.getString("empidno"));
resourceData.setEmpgrpdate(rs.getString("empgrpdate"));
resourceData.setEmpnormaldate(rs.getString("empnormaldate"));
resourceData.setEmpleavedate(rs.getString("empleavedate"));
resourceData.setEmpmobile(rs.getString("empmobile"));
resourceData.setEmplocaladdr(rs.getString("emplocaladdr"));
resourceData.setEmphomeaddr(rs.getString("emphomeaddr"));
resourceList.add(resourceData);
}
// 处理人员数据
for (KqResourceData resourceData : resourceList) {
KqOrgData kqOrgData = sysIdMap.get(resourceData.getDptsysid());
if (null == kqOrgData || StringUtils.isBlank(kqOrgData.getOaId()) || StringUtils.isBlank(kqOrgData.getSubCompanyId())) {
// 上级部门不存在的,或者非部门下的人员,该组织下的人员跳过处理
continue;
}
String departmentId = kqOrgData.getOaId();
String subCompanyId = kqOrgData.getSubCompanyId();
// 处理人员数据
for (KqResourceData resourceData : resourceList) {
KqOrgData kqOrgData = sysIdMap.get(resourceData.getDptsysid());
if (null == kqOrgData || StringUtils.isBlank(kqOrgData.getOaId()) || StringUtils.isBlank(kqOrgData.getSubCompanyId())) {
// 上级部门不存在的,或者非部门下的人员,该组织下的人员跳过处理
continue;
}
String departmentId = kqOrgData.getOaId();
String subCompanyId = kqOrgData.getSubCompanyId();
// 只做更新,不新增
syncResourceData(rs, resourceData, subCompanyId, departmentId);
// 只做更新,不新增
syncResourceData(rs, resourceData, subCompanyId, departmentId);
}
}
rs.writeLog("考勤组织信息同步任务结束");
} catch (Exception 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) {
//TODO 同步部门数据
// 同步部门数据
syncDepartmentData(rs, departmentData, subCompanyId, supDepId);
List<KqOrgData> departmentList = parentMap.get(departmentData.getDptprcno());
@ -155,7 +160,7 @@ public class SyncKqOrgDataJob extends BaseCronJob {
}
if (StringUtils.isBlank(id)) {
// rs.writeLog("当前人员未在OA中查询到"+JSON.toJSONString(resourceData));
rs.writeLog("当前人员未在OA中查询到" + JSON.toJSONString(resourceData));
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);
}
@ -196,12 +202,12 @@ public class SyncKqOrgDataJob extends BaseCronJob {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("departmentmark", departmentData.getDptname());
dataMap.put("departmentname", departmentData.getDptname());
dataMap.put("departmentcode", departmentData.getDptprcno());
dataMap.put("departmentcode", departmentData.getDptno());
dataMap.put("subcompanyid1", subCompanyId);
dataMap.put("supdepid", supDepId);
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()) {
// 更新
dataMap.put("id", rs.getString("id"));
@ -210,21 +216,21 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 新增
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()) {
// 赋值OA中的ID
departmentData.setOaId(rs.getString("id"));
departmentData.setSubCompanyId(subCompanyId);
sysIdMap.put(departmentData.getDptsysid(), departmentData);
if(IS_DEV) {
DepartmentComInfo dci = new DepartmentComInfo();
dci.removeCompanyCache();
dci.addCache(departmentData.getOaId());
HrmServiceManager hrmServiceManager = new HrmServiceManager();
hrmServiceManager.SynInstantDepartment(departmentData.getOaId(), "2");
MatrixUtil.updateDepartmentData(departmentData.getOaId());
}
DepartmentComInfo dci = new DepartmentComInfo();
dci.removeCompanyCache();
dci.addCache(departmentData.getOaId());
HrmServiceManager hrmServiceManager = new HrmServiceManager();
hrmServiceManager.SynInstantDepartment(departmentData.getOaId(), "2");
MatrixUtil.updateDepartmentData(departmentData.getOaId());
} else {
throw new CustomizeRunTimeException("当前部门同步失败," + JSON.toJSONString(departmentData));
}
@ -243,12 +249,12 @@ public class SyncKqOrgDataJob extends BaseCronJob {
IgnoreCaseHashMap<String, Object> dataMap = new IgnoreCaseHashMap<>();
dataMap.put("subcompanyname", subCompany.getDptname());
dataMap.put("subcompanydesc", subCompany.getDptname());
dataMap.put("subcompanycode", subCompany.getDptprcno());
dataMap.put("subcompanycode", subCompany.getDptno());
dataMap.put("companyid", companyId);
dataMap.put("supsubcomid", "0");
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()) {
// 更新
dataMap.put("id", rs.getString("id"));
@ -257,20 +263,18 @@ public class SyncKqOrgDataJob extends BaseCronJob {
// 新增
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()) {
// 赋值OA中的ID
subCompany.setOaId(rs.getString("id"));
sysIdMap.put(subCompany.getDptsysid(), subCompany);
// 刷新缓存
if (IS_DEV) {
SubCompanyComInfo sci = new SubCompanyComInfo();
sci.removeCompanyCache();
sci.addCache(subCompany.getOaId());
MatrixUtil.updateSubcompayData(subCompany.getOaId());
new weaver.hrm.appdetach.AppDetachComInfo().initSubDepAppData();
}
SubCompanyComInfo sci = new SubCompanyComInfo();
sci.removeCompanyCache();
sci.addCache(subCompany.getOaId());
MatrixUtil.updateSubcompayData(subCompany.getOaId());
new weaver.hrm.appdetach.AppDetachComInfo().initSubDepAppData();
} else {
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