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.company.po.CompPO; 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.comp.CompMapper; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.util.db.MapperProxyFactory; 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 SystemDataMapper getSystemDataMapper() { return MapperProxyFactory.getProxy(SystemDataMapper.class); } private ExtMapper getExtMapper() { return MapperProxyFactory.getProxy(ExtMapper.class); } private CompMapper getCompMapper() { return MapperProxyFactory.getProxy(CompMapper.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; } } private void refreshDepartment() { switch (operateType) { case ADD: break; case UPDATE: break; case DELETE: break; default: break; } } private void refreshJob() { switch (operateType) { case ADD: break; case UPDATE: break; case DELETE: break; default: break; } } /** * 新增分部 */ private void addCompany() { Map map = new HashMap<>(); map.put("subcompanyname", params.get("comp_name_short").toString()); // 上级分部通过UUID联查ec表ID String parentCompany = Util.null2String(params.get("parent_company")); if (StringUtils.isNotBlank(parentCompany)) { map.put("supsubcomid", 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 stringObjectMap = ServiceUtil.getService(OrganizationServiceImpl.class, user).addSubCompany(map, user); // 更新jcl_org_comp表 uuid字段 if ("1".equals(Util.null2String(stringObjectMap.get("status"))) && null != stringObjectMap.get("id")) { String id = Util.null2String(stringObjectMap.get("id")); JSONObject hrmSubCompanyByID = getSystemDataMapper().getHrmSubCompanyByID(id); String uuid = hrmSubCompanyByID.getString("uuid"); Map companyMap = new HashMap<>(); companyMap.put("uuid", uuid); long companyId = Long.parseLong(Util.null2String(params.get("companyId"))); ExtendInfoParams infoParams = ExtendInfoParams.builder().tableName("JCL_ORG_COMP").params(companyMap).id(companyId).build(); getExtMapper().updateExt(infoParams); } } /** * 更新分部 */ private void updateCompany() { Map map = new HashMap<>(); // 获取ec表ID map.put("id", getEcCompanyId(Util.null2String(params.get("id")))); // 上级分部通过UUID联查ec表ID String parentCompany = Util.null2String(params.get("parent_company")); if (StringUtils.isNotBlank(parentCompany)) { map.put("supsubcomid", 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(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); } } /** * 根据jcl_org_comp.id获取HrmSubCompany.id * * @param companyId * @return */ private String getEcCompanyId(String companyId) { CompPO compPO = MapperProxyFactory.getProxy(CompMapper.class).listById(Long.parseLong(companyId)); JSONObject supSubCompany = MapperProxyFactory.getProxy(SystemDataMapper.class).getHrmSubCompanyByUUID(compPO.getUuid()); return supSubCompany.getString("id"); } }