From e217ecbe16a38a942b7a70e9e91b83cfb823a7f5 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 13 Jul 2022 10:55:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=83=A8=E6=9B=B4=E6=96=B0EC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/department/po/DepartmentPO.java | 2 + .../mapper/department/DepartmentMapper.xml | 5 +- .../mapper/hrmresource/SystemDataMapper.java | 5 +- .../mapper/hrmresource/SystemDataMapper.xml | 9 +- .../service/impl/CompServiceImpl.java | 2 +- .../service/impl/DepartmentServiceImpl.java | 67 +++++++- .../thread/OrganizationRunable.java | 148 ++++++++++++++++-- 7 files changed, 211 insertions(+), 27 deletions(-) diff --git a/src/com/engine/organization/entity/department/po/DepartmentPO.java b/src/com/engine/organization/entity/department/po/DepartmentPO.java index aef54892..d4f5528f 100644 --- a/src/com/engine/organization/entity/department/po/DepartmentPO.java +++ b/src/com/engine/organization/entity/department/po/DepartmentPO.java @@ -39,6 +39,8 @@ public class DepartmentPO { private Integer forbiddenTag; + private String uuid; + private Long creator; private int deleteType; diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml index d316c68e..fe32a135 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -16,6 +16,8 @@ + + @@ -32,7 +34,8 @@ t.dept_principal, t.show_order, t.description, - t.forbidden_tag + t.forbidden_tag, + t.uuid - select * - from hrmsubcompany + from ${tableName} where id = #{id} - select * - from hrmsubcompany + from ${tableName} where uuid = #{uuid} + \ No newline at end of file diff --git a/src/com/engine/organization/service/impl/CompServiceImpl.java b/src/com/engine/organization/service/impl/CompServiceImpl.java index 363fde67..15c1799e 100644 --- a/src/com/engine/organization/service/impl/CompServiceImpl.java +++ b/src/com/engine/organization/service/impl/CompServiceImpl.java @@ -149,7 +149,7 @@ public class CompServiceImpl extends Service implements CompService { params.put("show_order", maxShowOrder + 1); } Long id = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_COMP, params, "", null); - params.put("companyId", id); + params.put("id", id); new Thread(new OrganizationRunable(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.ADD, params)).start(); return id; } diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index ea131aca..00be5817 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -24,6 +24,8 @@ import com.engine.organization.entity.job.po.JobPO; import com.engine.organization.entity.job.vo.SingleJobTreeVO; import com.engine.organization.entity.searchtree.SearchTree; import com.engine.organization.entity.searchtree.SearchTreeParams; +import com.engine.organization.enums.LogModuleNameEnum; +import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.mapper.codesetting.CodeRuleMapper; import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.department.DepartmentMapper; @@ -31,6 +33,7 @@ import com.engine.organization.mapper.extend.ExtendTitleMapper; import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.service.DepartmentService; import com.engine.organization.service.ExtService; +import com.engine.organization.thread.OrganizationRunable; import com.engine.organization.util.*; import com.engine.organization.util.coderule.CodeRuleUtil; import com.engine.organization.util.db.MapperProxyFactory; @@ -192,18 +195,24 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 判断是否开启自动编号 deptNo = repeatDetermine(deptNo); params.put("dept_no", deptNo); - if (StringUtils.isBlank((String) params.get("show_order"))) { + if (StringUtils.isBlank(Util.null2String(params.get("show_order")))) { int maxShowOrder = getDepartmentMapper().getMaxShowOrder(); params.put("show_order", maxShowOrder + 1); } - - return getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", null); + Long departmentId = getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", null); + params.put("id", departmentId); + new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.ADD, params)).start(); + return departmentId; } @Override public int updateForbiddenTagById(DeptSearchParam params) { HasRightUtil.hasRight(user, RIGHT_NAME, false); DepartmentPO departmentPO = DepartmentPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build(); + Map map = new HashMap<>(); + map.put("id", departmentPO.getId()); + map.put("forbiddenTag", departmentPO.getForbiddenTag()); + new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start(); return getDepartmentMapper().updateForbiddenTagById(departmentPO); } @@ -224,6 +233,7 @@ public class DepartmentServiceImpl extends Service implements DepartmentService } // 更新主表数据 getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPT, params, "", searchParam.getId()); + new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, params)).start(); // 更新主表拓展表 getExtService(user).updateExtForm(user, EXTEND_TYPE, JCL_ORG_DEPTEXT, params, groupId, searchParam.getId()); //更新明细表 @@ -236,6 +246,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService public int deleteByIds(Collection ids) { HasRightUtil.hasRight(user, RIGHT_NAME, false); OrganizationAssert.notEmpty(ids, "请选择要删除的数据"); + Map map = new HashMap<>(); + map.put("id", StringUtils.join(ids, ",")); + new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start(); return getDepartmentMapper().deleteByIds(ids); } @@ -392,6 +405,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 显示顺序字段 deptById.setShowOrder(maxShowOrder + i + 1); insertCount += getDepartmentMapper().insertIgnoreNull(deptById); + // 更新EC表部门 + updateEcDepartment(deptById); + // TODO 新增岗位信息 if ("1".equals(copyParam.getCopyJob())) { List jobPOS = MapperProxyFactory.getProxy(JobMapper.class).listJobsByDepartmentId(idList.get(i)); Integer maxJobOrder = MapperProxyFactory.getProxy(JobMapper.class).getMaxShowOrder(); @@ -441,6 +457,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 禁用 mergeDepartment.setForbiddenTag(1); updateCount += getDepartmentMapper().updateBaseDept(mergeDepartment); + // 更新EC表部门 + updateEcDepartment(mergeDepartment); + // 封存EC表部门 + cancelEcDepartment(mergeDepartment.getId()); // 合并后部门及子部门禁用 List deptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId()); forbiddenChildTag(parentComp, deptList); @@ -486,9 +506,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService Long department = moveParam.getDepartment(); OrganizationAssert.notNull(department, "请选择要转移到的部门"); deptById.setParentDept(department); - deptById.setParentComp(null); + DepartmentPO parentDepartment = getDepartmentMapper().getDeptById(department); + deptById.setParentComp(parentDepartment.getParentComp()); } - return getDepartmentMapper().updateBaseDept(deptById); + int updateBaseDept = getDepartmentMapper().updateBaseDept(deptById); + // 更新EC部门 + updateEcDepartment(deptById); + return updateBaseDept; } /** @@ -503,6 +527,10 @@ public class DepartmentServiceImpl extends Service implements DepartmentService departmentPO.setParentComp(parentComp); departmentPO.setForbiddenTag(1); getDepartmentMapper().updateBaseDept(departmentPO); + // 更新EC表部门 + updateEcDepartment(departmentPO); + // 封存EC表部门 + cancelEcDepartment(departmentPO.getId()); List childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId()); forbiddenChildTag(parentComp, childList); } @@ -619,4 +647,33 @@ public class DepartmentServiceImpl extends Service implements DepartmentService } } + /** + * 更新EC表部门 + * + * @param departmentPO + */ + private void updateEcDepartment(DepartmentPO departmentPO) { + Map map = new HashMap<>(); + map.put("dept_name_short", departmentPO.getDeptNameShort()); + map.put("dept_name", departmentPO.getDeptName()); + map.put("parent_comp", departmentPO.getParentComp()); + map.put("parent_dept", departmentPO.getParentDept()); + map.put("show_order", departmentPO.getShowOrder()); + map.put("dept_no", departmentPO.getDeptNo()); + map.put("dept_principal", departmentPO.getDeptPrincipal()); + map.put("id", departmentPO.getId()); + new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, map)).start(); + } + + /** + * 封存EC表部门 + * + * @param id + */ + private void cancelEcDepartment(Long id) { + Map map = new HashMap<>(); + map.put("id", id); + new Thread(new OrganizationRunable(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map)).start(); + } + } diff --git a/src/com/engine/organization/thread/OrganizationRunable.java b/src/com/engine/organization/thread/OrganizationRunable.java index c884bd9d..de196d81 100644 --- a/src/com/engine/organization/thread/OrganizationRunable.java +++ b/src/com/engine/organization/thread/OrganizationRunable.java @@ -4,10 +4,12 @@ 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.department.po.DepartmentPO; 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.department.DepartmentMapper; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.util.db.MapperProxyFactory; @@ -31,6 +33,12 @@ public class OrganizationRunable implements Runnable { 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); } @@ -43,6 +51,10 @@ public class OrganizationRunable implements Runnable { return MapperProxyFactory.getProxy(CompMapper.class); } + private DepartmentMapper getDepartmentMapper() { + return MapperProxyFactory.getProxy(DepartmentMapper.class); + } + public OrganizationRunable(User user, LogModuleNameEnum moduleName, OperateTypeEnum operateType, Map params) { this.moduleName = moduleName; @@ -87,13 +99,19 @@ public class OrganizationRunable implements Runnable { } } + /** + * 刷新HrmDepartment表数据 + */ private void refreshDepartment() { switch (operateType) { case ADD: + addDepartment(); break; case UPDATE: + updateDepartment(); break; - case DELETE: + case CANCELED: + cancelDepartment(); break; default: break; @@ -113,12 +131,92 @@ public class OrganizationRunable implements Runnable { } } + /** + * 新增部门 + */ + 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", getEcCompanyId(parentCompany)); + } + + // 上级部门通过UUID联查ec表ID + String parentDepartment = Util.null2String(params.get("parent_dept")); + if (StringUtils.isNotBlank(parentDepartment)) { + map.put("supdepid", 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(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", 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", getEcCompanyId(parentCompany)); + } + + // 上级部门通过UUID联查ec表ID + String parentDepartment = Util.null2String(params.get("parent_dept")); + if (StringUtils.isNotBlank(parentDepartment)) { + map.put("supdepid", 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", params.get("comp_name_short").toString()); + map.put("subcompanyname", Util.null2String(params.get("comp_name_short"))); // 上级分部通过UUID联查ec表ID String parentCompany = Util.null2String(params.get("parent_company")); @@ -129,18 +227,11 @@ public class OrganizationRunable implements Runnable { 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); + Map returnMap = 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); + if ("1".equals(Util.null2String(returnMap.get("status"))) && null != returnMap.get("id")) { + updateJclUUID(Util.null2String(returnMap.get("id")), HRM_COMPANY, JCL_COMPANY); } } @@ -187,6 +278,23 @@ public class OrganizationRunable implements Runnable { } + /** + * 更新聚才林组织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); + } + /** * 根据jcl_org_comp.id获取HrmSubCompany.id * @@ -194,8 +302,20 @@ public class OrganizationRunable implements Runnable { * @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()); + CompPO compPO = getCompMapper().listById(Long.parseLong(companyId)); + JSONObject supSubCompany = getSystemDataMapper().getHrmObjectByUUID(HRM_COMPANY, compPO.getUuid()); return supSubCompany.getString("id"); } + + /** + * 根据jcl_org_dept.id获取HrmDepartment.id + * + * @param departmentId + * @return + */ + private String getEcDepartmentId(String departmentId) { + DepartmentPO departmentPO = getDepartmentMapper().getDeptById(Long.parseLong(departmentId)); + JSONObject supDepartment = getSystemDataMapper().getHrmObjectByUUID(HRM_DEPARTMENT, departmentPO.getUuid()); + return supDepartment.getString("id"); + } }