You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
weaver-hrm-organization/src/com/engine/organization/thread/OrganizationSyncEc.java

523 lines
23 KiB
Java

package com.engine.organization.thread;
import com.engine.common.util.ServiceUtil;
import com.engine.hrm.service.impl.HrmJobServiceImpl;
import com.engine.hrm.service.impl.OrganizationServiceImpl;
import com.engine.organization.entity.commom.RecordInfo;
import com.engine.organization.entity.company.po.CompPO;
import com.engine.organization.entity.department.po.DepartmentPO;
import com.engine.organization.entity.job.po.JobPO;
import com.engine.organization.enums.LogModuleNameEnum;
import com.engine.organization.enums.OperateTypeEnum;
import com.engine.organization.mapper.comp.CompMapper;
import com.engine.organization.mapper.department.DepartmentMapper;
import com.engine.organization.mapper.hrmresource.SystemDataMapper;
import com.engine.organization.mapper.job.JobMapper;
import com.engine.organization.util.OrganizationAssert;
import com.engine.organization.util.db.MapperProxyFactory;
import com.engine.organization.util.relation.EcHrmRelationUtil;
import com.engine.organization.util.relation.ResourceSyncUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author:dxfeng
* @createTime: 2022/08/26
* @version: 1.0
*/
public class OrganizationSyncEc {
private final LogModuleNameEnum moduleName;
private final OperateTypeEnum operateType;
private Map<String, Object> params;
private final User user;
private JobPO oldJobPO;
Map<String, Object> resultMap;
private boolean throwException = true;
private SystemDataMapper getSystemDataMapper() {
return MapperProxyFactory.getProxy(SystemDataMapper.class);
}
public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params) {
this.moduleName = moduleName;
this.operateType = operateType;
this.params = params;
this.user = user;
}
public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params, boolean throwException) {
this.moduleName = moduleName;
this.operateType = operateType;
this.params = params;
this.user = user;
this.throwException = throwException;
}
public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params, JobPO oldJobPO) {
this.moduleName = moduleName;
this.operateType = operateType;
this.params = params;
this.user = user;
this.oldJobPO = oldJobPO;
}
3 years ago
public OrganizationSyncEc(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map<String, Object> params, JobPO oldJobPO, boolean throwException) {
this.moduleName = moduleName;
this.operateType = operateType;
this.params = params;
this.user = user;
this.oldJobPO = oldJobPO;
this.throwException = throwException;
}
public Map<String, Object> sync() {
switch (moduleName) {
case COMPANY:
refreshCompany();
break;
case DEPARTMENT:
refreshDepartment();
break;
case JOB:
refreshJob();
break;
case RESOURCE:
refreshResource();
default:
break;
}
3 years ago
if (throwException && null != resultMap) {
OrganizationAssert.isTrue("1".equals(Util.null2String(resultMap.get("status"))) || "1".equals(Util.null2String(resultMap.get("sign"))), Util.null2String(resultMap.get("message")));
}
return resultMap;
}
/**
* HrmSubCompany
*/
private void refreshCompany() {
switch (operateType) {
case ADD:
addCompany();
break;
case UPDATE:
updateCompany();
break;
case CANCELED:
cancelCompany();
break;
default:
break;
}
}
/**
* HrmDepartment
*/
private void refreshDepartment() {
switch (operateType) {
case ADD:
addDepartment();
break;
case UPDATE:
updateDepartment();
break;
case CANCELED:
cancelDepartment();
break;
default:
break;
}
}
private void refreshJob() {
switch (operateType) {
case ADD:
addJob();
break;
case UPDATE:
updateJob();
break;
case CANCELED:
cancelJob();
break;
default:
break;
}
}
private void refreshResource(){
switch (operateType) {
case ADD:
addResource();
break;
case UPDATE:
updateResource();
break;
case CANCELED:
default:
break;
}
}
private void addResource() {
Map<String, Object> convertParams = ResourceSyncUtil.convertEcResourceParams(params);
this.resultMap = ResourceSyncUtil.addResource(user, convertParams);
}
private void updateResource() {
Map<String, Object> convertParams = ResourceSyncUtil.convertEcResourceParams(params);
this.resultMap = ResourceSyncUtil.editResourceBase(user, convertParams);
}
/**
*
*
* <p>
* 1ECHrmJobTitles
* <p>
* 2sql
* <p>
* 3jobtitlename
* <p>
* 4--
*/
private void addJob() {
// 判断是否存在同名岗位、存在不做处理,不存在,在“默认职务分类--默认职务”下新建岗位
String jobName = Util.null2String(params.get("job_name"));
RecordInfo hrmJobActivity = getSystemDataMapper().getHrmJobTitleByName(jobName);
Map<String, Object> map = new HashMap<>();
//存在且已封存,对岗位解封
if (null != hrmJobActivity) {
map.put("ids", hrmJobActivity.getId());
map.put("canceled", "docanceled");
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user);
} else {
// 不存在则新建职务
map.put("operateIp", Util.null2String(user.getLoginip()));
map.put("jobtitlemark", jobName);
map.put("jobtitlename", jobName);
map.put("jobactivityid", Util.null2String(params.get("jobactivityid")));
map.put("jobresponsibility", Util.null2String(params.get("work_duty")));
map.put("jobcompetency", Util.null2String(params.get("work_authority")));
map.put("jobtitleremark", Util.null2String(params.get("description")));
map.put("jobtitlecode", Util.null2String(params.get("job_no")));
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).addJobTitle(map, user);
}
}
/**
*
*/
private void updateJob() {
Long jclJobId = oldJobPO.getId();
String oldName = oldJobPO.getJobName();
String newName = Util.null2String(params.get("job_name"));
RecordInfo oldHrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(oldName);
Map<String, Object> map = new HashMap<>();
// 修改前不存在共用
if (EcHrmRelationUtil.isNotExistJob(oldName, jclJobId)) {
// 修改后不存在共用、直接修改EC岗位表数据
if (EcHrmRelationUtil.isNotExistJob(newName, jclJobId)) {
// 查询ec表ID
RecordInfo hrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(newName);
3 years ago
if (null != hrmJobTitle) {
map.put("id", Util.null2String(hrmJobTitle.getId()));
map.put("operateIp", Util.null2String(user.getLoginip()));
map.put("jobtitlemark", newName);
map.put("jobtitlename", newName);
map.put("jobactivityid", Util.null2String(params.get("jobactivityid")));
map.put("jobresponsibility", Util.null2String(params.get("work_duty")));
map.put("jobcompetency", Util.null2String(params.get("work_authority")));
map.put("jobtitleremark", Util.null2String(params.get("description")));
map.put("jobtitlecode", Util.null2String(params.get("job_no")) + "_" + System.currentTimeMillis());
// 修改岗位表数据
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).editJobTitle(map, user);
} else {
// 不存在则新建职务
map.put("operateIp", Util.null2String(user.getLoginip()));
map.put("jobtitlemark", newName);
map.put("jobtitlename", newName);
map.put("jobactivityid", Util.null2String(params.get("jobactivityid")));
map.put("jobresponsibility", Util.null2String(params.get("work_duty")));
map.put("jobcompetency", Util.null2String(params.get("work_authority")));
map.put("jobtitleremark", Util.null2String(params.get("description")));
map.put("jobtitlecode", Util.null2String(params.get("job_no")) + "_" + System.currentTimeMillis());
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).addJobTitle(map, user);
}
} else {
// 修改后存在共用、不修改岗位表数据更新对应人员的岗位信息为当前岗位的ID
RecordInfo hrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(newName);
// 查询原分部、原岗位下的人员并更新岗位ID
List<Long> hrmResourceIds = getSystemDataMapper().getHrmResourceIds(oldJobPO.getParentDept(), oldHrmJobTitle.getId());
if (CollectionUtils.isNotEmpty(hrmResourceIds)) {
3 years ago
getSystemDataMapper().updateResourceJobTitleByIds(Util.null2String(hrmJobTitle.getId()), hrmResourceIds);
}
// 封存原名称岗位
map.put("ids", oldHrmJobTitle.getId());
map.put("canceled", "canceled");
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user);
}
} else {
// 修改前存在共用,不对原有数据进行操作。
// 修改后不存在共用、新建岗位更新原有岗位下人员的岗位ID
if (EcHrmRelationUtil.isNotExistJob(newName, jclJobId)) {
RecordInfo hrmJobActivity = getSystemDataMapper().getHrmJobTitleByName(newName);
//存在且已封存,对岗位解封
if (null != hrmJobActivity) {
map.put("ids", hrmJobActivity.getId());
map.put("canceled", "docanceled");
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user);
} else {
// 不存在则新建职务
map.put("operateIp", Util.null2String(user.getLoginip()));
map.put("jobtitlemark", newName);
map.put("jobtitlename", newName);
map.put("jobactivityid", Util.null2String(params.get("jobactivityid")));
map.put("jobresponsibility", Util.null2String(params.get("work_duty")));
map.put("jobcompetency", Util.null2String(params.get("work_authority")));
map.put("jobtitleremark", Util.null2String(params.get("description")));
map.put("jobtitlecode", Util.null2String(params.get("job_no")));
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).addJobTitle(map, user);
}
} else {
this.resultMap = new HashMap<>();
this.resultMap.put("sign", "1");
}
// 查询原分部、原岗位下的人员并更新岗位ID
RecordInfo hrmJobTitle = getSystemDataMapper().getHrmJobTitleByName(newName);
List<Long> hrmResourceIds = getSystemDataMapper().getHrmResourceIds(oldJobPO.getParentDept(), oldHrmJobTitle.getId());
if (CollectionUtils.isNotEmpty(hrmResourceIds)) {
getSystemDataMapper().updateResourceJobTitleByIds(Util.null2String(hrmJobTitle.getId()), hrmResourceIds);
}
}
}
/**
*
*/
private void cancelJob() {
Map<String, Object> map = new HashMap<>();
RecordInfo hrmJobTitleByName = getSystemDataMapper().getHrmJobTitleByName(oldJobPO.getJobName());
3 years ago
if (null == hrmJobTitleByName) {
return;
}
if (0 == oldJobPO.getForbiddenTag()) {
// 启用
map.put("ids", hrmJobTitleByName.getId());
map.put("canceled", "docanceled");
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user);
} else {
// 禁用
List<JobPO> jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listByNameExceptId(oldJobPO.getJobName(), oldJobPO.getId());
// 不存在共用
if (CollectionUtils.isEmpty(jobPOS)) {
map.put("ids", hrmJobTitleByName.getId());
map.put("canceled", "canceled");
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user);
} else {
List<JobPO> collect = jobPOS.stream().filter(item -> 0 == item.getForbiddenTag()).collect(Collectors.toList());
// 不存在非禁用
if (CollectionUtils.isEmpty(collect)) {
map.put("ids", hrmJobTitleByName.getId());
map.put("canceled", "canceled");
this.resultMap = ServiceUtil.getService(HrmJobServiceImpl.class, user).doCanceled(map, user);
}
}
}
}
/**
*
*/
private void addDepartment() {
Map<String, Object> map = new HashMap<>();
map.put("departmentmark", Util.null2String(params.get("dept_name_short")));
map.put("departmentname", Util.null2String(params.get("dept_name")));
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_comp"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("subcompanyid1", EcHrmRelationUtil.getEcCompanyId(parentCompany));
}
// 上级部门通过UUID联查ec表ID
String parentDepartment = Util.null2String(params.get("parent_dept"));
if (StringUtils.isNotBlank(parentDepartment)) {
map.put("supdepid", EcHrmRelationUtil.getEcDepartmentId(parentDepartment));
}
map.put("showorder", Util.null2String(params.get("show_order")));
map.put("departmentcode", Util.null2String(params.get("dept_no")));
map.put("coadjutant", Util.null2String(params.get("dept_principal")));
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addDepartment(map, user);
// 更新jcl_org_dept表 uuid字段
//if ("1".equals(Util.null2String(resultMap.get("status"))) && null != resultMap.get("id")) {
// updateJclUUID(Util.null2String(resultMap.get("id")), HRM_DEPARTMENT, JCL_DEPARTMENT);
//}
}
/**
*
*/
private void cancelDepartment() {
String departmentIds = Util.null2String(params.get("id"));
String forbiddenTag = Util.null2String(params.get("forbiddenTag"));
List<String> idList = new ArrayList<>();
String[] split = departmentIds.split(",");
if (StringUtils.isBlank(forbiddenTag)) {
long currentTimeMillis = System.currentTimeMillis();
for (String s : split) {
DepartmentPO departmentPO = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(Long.parseLong(s));
params.put("dept_name_short", departmentPO.getDeptNameShort() + currentTimeMillis);
params.put("dept_name", departmentPO.getDeptName() + currentTimeMillis);
params.put("parent_comp", departmentPO.getParentComp());
params.put("parent_dept", departmentPO.getParentDept());
params.put("show_order", departmentPO.getShowOrder());
params.put("dept_no", departmentPO.getDeptNo() + currentTimeMillis);
params.put("dept_principal", departmentPO.getDeptPrincipal());
updateDepartment();
idList.add(EcHrmRelationUtil.getEcDepartmentId(s));
}
} else {
for (String s : split) {
idList.add(EcHrmRelationUtil.getEcDepartmentId(s));
}
}
Map<String, Object> map = new HashMap<>();
map.put("id", StringUtils.join(idList, ","));
if ("0".equals(forbiddenTag)) {
// 解封
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentISCanceled(map, user);
} else {
// 封存
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentCancel(map, user);
}
}
/**
*
*/
private void updateDepartment() {
Map<String, Object> map = new HashMap<>();
// 获取ec表ID
map.put("id", EcHrmRelationUtil.getEcDepartmentId(Util.null2String(params.get("id"))));
map.put("departmentmark", Util.null2String(params.get("dept_name_short")));
map.put("departmentname", Util.null2String(params.get("dept_name")));
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_comp"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("subcompanyid1", EcHrmRelationUtil.getEcCompanyId(parentCompany));
}
// 上级部门通过UUID联查ec表ID
String parentDepartment = Util.null2String(params.get("parent_dept"));
if (StringUtils.isNotBlank(parentDepartment)) {
map.put("supdepid", EcHrmRelationUtil.getEcDepartmentId(parentDepartment));
}
map.put("showorder", Util.null2String(params.get("show_order")));
map.put("departmentcode", Util.null2String(params.get("dept_no")));
map.put("coadjutant", Util.null2String(params.get("dept_principal")));
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).editDepartment(map, user);
}
/**
*
*/
private void addCompany() {
Map<String, Object> map = new HashMap<>();
map.put("subcompanyname", Util.null2String(params.get("comp_name_short")));
// 上级分部通过UUID联查ec表ID
String ecCompany = Util.null2String(params.get("ec_company"));
if (StringUtils.isNotBlank(ecCompany)) {
map.put("supsubcomid", ecCompany);
}
map.put("subcompanycode", params.get("comp_no").toString());
map.put("subcompanydesc", params.get("comp_name").toString());
map.put("showorder", Util.null2String(params.get("show_order")));
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addSubCompany(map, user);
//
//// 更新jcl_org_comp表 uuid字段
//if ("1".equals(Util.null2String(resultMap.get("status"))) && null != resultMap.get("id")) {
// updateJclUUID(Util.null2String(resultMap.get("id")), HRM_COMPANY, JCL_COMPANY);
//}
}
/**
*
*/
private void updateCompany() {
Map<String, Object> map = new HashMap<>();
// 获取ec表ID
map.put("id", EcHrmRelationUtil.getEcCompanyId(Util.null2String(params.get("id"))));
// 上级分部通过UUID联查ec表ID
String parentCompany = Util.null2String(params.get("parent_company"));
if (StringUtils.isNotBlank(parentCompany)) {
map.put("supsubcomid", EcHrmRelationUtil.getEcCompanyId(parentCompany));
}
map.put("subcompanycode", Util.null2String(params.get("comp_no")));
map.put("subcompanyname", Util.null2String(params.get("comp_name_short")));
map.put("subcompanydesc", Util.null2String(params.get("comp_name")));
map.put("showorder", Util.null2String(params.get("show_order")));
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).editSubCompany(map, user);
}
/**
*
*/
private void cancelCompany() {
String companyIds = Util.null2String(params.get("id"));
String forbiddenTag = Util.null2String(params.get("forbiddenTag"));
List<String> idList = new ArrayList<>();
String[] split = companyIds.split(",");
if (StringUtils.isBlank(forbiddenTag)) {
long currentTimeMillis = System.currentTimeMillis();
for (String s : split) {
// 更新名称为:名称+时间戳
CompPO comp = MapperProxyFactory.getProxy(CompMapper.class).listById(Long.parseLong(s));
params.put("parent_company", comp.getParentCompany());
params.put("comp_no", comp.getCompNo() + currentTimeMillis);
params.put("comp_name", comp.getCompName() + currentTimeMillis);
params.put("comp_name_short", comp.getCompNameShort() + currentTimeMillis);
params.put("show_order", comp.getShowOrder());
updateCompany();
idList.add(EcHrmRelationUtil.getEcCompanyId(s));
}
} else {
for (String s : split) {
idList.add(EcHrmRelationUtil.getEcCompanyId(s));
}
}
Map<String, Object> map = new HashMap<>();
map.put("id", StringUtils.join(idList, ","));
if ("0".equals(forbiddenTag)) {
// 解封
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyISCanceled(map, user);
} else {
// 删除封存、禁用封存
this.resultMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyCancel(map, user);
}
}
}