package com.engine.organization.thread; import com.alibaba.fastjson.JSONObject; import com.engine.common.util.ServiceUtil; import com.engine.hrm.service.impl.OrganizationServiceImpl; import com.engine.organization.entity.extend.param.ExtendInfoParams; import com.engine.organization.enums.LogModuleNameEnum; import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.relation.EcHrmRelationUtil; 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; /** * @author:dxfeng * @createTime: 2022/07/12 * @version: 1.0 */ public class OrganizationRunable implements Runnable { private LogModuleNameEnum moduleName; private OperateTypeEnum operateType; private Map params; private User user; private static final String HRM_COMPANY = "hrmsubcompany"; private static final String HRM_DEPARTMENT = "hrmdepartment"; private static final String JCL_COMPANY = "jcl_org_comp"; private static final String JCL_DEPARTMENT = "jcl_org_dept"; private SystemDataMapper getSystemDataMapper() { return MapperProxyFactory.getProxy(SystemDataMapper.class); } private ExtMapper getExtMapper() { return MapperProxyFactory.getProxy(ExtMapper.class); } public OrganizationRunable(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map params) { this.moduleName = moduleName; this.operateType = operateType; this.params = params; this.user = user; } @Override public void run() { switch (moduleName) { case COMPANY: refreshCompany(); break; case DEPARTMENT: refreshDepartment(); break; case JOB: refreshJob(); break; default: break; } } /** * 刷新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: break; case UPDATE: break; case DELETE: break; default: break; } } /** * 新增部门 */ private void addDepartment() { Map 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"))); Map returnMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addDepartment(map, user); // 更新jcl_org_dept表 uuid字段 if ("1".equals(Util.null2String(returnMap.get("status"))) && null != returnMap.get("id")) { updateJclUUID(Util.null2String(returnMap.get("id")), HRM_DEPARTMENT, JCL_DEPARTMENT); } } /** * 封存、解封部门 */ private void cancelDepartment() { String departmentIds = Util.null2String(params.get("id")); String forbiddenTag = Util.null2String(params.get("forbiddenTag")); List idList = new ArrayList<>(); String[] split = departmentIds.split(","); for (String s : split) { idList.add(EcHrmRelationUtil.getEcDepartmentId(s)); } Map map = new HashMap<>(); map.put("id", StringUtils.join(idList, ",")); if (StringUtils.isBlank(forbiddenTag) || "1".equals(forbiddenTag)) { // 封存 ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentCancel(map, user); } else { // 解封 ServiceUtil.getService(OrganizationServiceImpl.class, user).doDepartmentISCanceled(map, user); } } /** * 更新部门 */ private void updateDepartment() { Map 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"))); ServiceUtil.getService(OrganizationServiceImpl.class, user).editDepartment(map, user); } /** * 新增分部 */ private void addCompany() { Map map = new HashMap<>(); map.put("subcompanyname", Util.null2String(params.get("comp_name_short"))); // 上级分部通过UUID联查ec表ID String parentCompany = Util.null2String(params.get("parent_company")); if (StringUtils.isNotBlank(parentCompany)) { map.put("supsubcomid", EcHrmRelationUtil.getEcCompanyId(parentCompany)); } 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"))); Map returnMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addSubCompany(map, user); // 更新jcl_org_comp表 uuid字段 if ("1".equals(Util.null2String(returnMap.get("status"))) && null != returnMap.get("id")) { updateJclUUID(Util.null2String(returnMap.get("id")), HRM_COMPANY, JCL_COMPANY); } } /** * 更新分部 */ private void updateCompany() { Map 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"))); 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 idList = new ArrayList<>(); String[] split = companyIds.split(","); for (String s : split) { idList.add(EcHrmRelationUtil.getEcCompanyId(s)); } Map map = new HashMap<>(); map.put("id", StringUtils.join(idList, ",")); if (StringUtils.isBlank(forbiddenTag) || "1".equals(forbiddenTag)) { // 封存 ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyCancel(map, user); } else { // 解封 ServiceUtil.getService(OrganizationServiceImpl.class, user).doSubCompanyISCanceled(map, user); } } /** * 更新聚才林组织UUID * * @param id * @param ecTableName * @param jclTableName */ private void updateJclUUID(String id, String ecTableName, String jclTableName) { JSONObject hrmDepartment = getSystemDataMapper().getHrmObjectByID(ecTableName, id); String uuid = hrmDepartment.getString("uuid"); Map departmentMap = new HashMap<>(); departmentMap.put("uuid", uuid); long departmentId = Long.parseLong(Util.null2String(params.get("id"))); ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName(jclTableName).params(departmentMap).id(departmentId).build(); getExtMapper().updateExt(infoParams); } }