From f6c41a3467d8f715e22c91b8c54a37a0e1a1ed29 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 8 Sep 2022 15:36:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=90=88=E5=B9=B6=E9=87=8D?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fieldset/param/FieldTransferParam.java | 20 +++ .../mapper/hrmresource/SystemDataMapper.java | 2 + .../mapper/hrmresource/SystemDataMapper.xml | 5 + .../service/impl/CompServiceImpl.java | 4 + .../service/impl/DepartmentServiceImpl.java | 121 +++++++++++------- .../service/impl/ImportCommonServiceImpl.java | 9 +- .../util/relation/EcHrmRelationUtil.java | 3 + 7 files changed, 115 insertions(+), 49 deletions(-) create mode 100644 src/com/engine/organization/entity/fieldset/param/FieldTransferParam.java diff --git a/src/com/engine/organization/entity/fieldset/param/FieldTransferParam.java b/src/com/engine/organization/entity/fieldset/param/FieldTransferParam.java new file mode 100644 index 00000000..f6419cfc --- /dev/null +++ b/src/com/engine/organization/entity/fieldset/param/FieldTransferParam.java @@ -0,0 +1,20 @@ +package com.engine.organization.entity.fieldset.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2022/09/08 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class FieldTransferParam { + private String id; + private String name; +} diff --git a/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.java b/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.java index bcef9501..c544a538 100644 --- a/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.java +++ b/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.java @@ -43,6 +43,8 @@ public interface SystemDataMapper { List getHrmResourceIds(@Param("departmentId") Long departmentId, @Param("jobTitle") String jobTitle); + List getHrmResourceIdsByDept(@Param("departmentId") String departmentId); + /** * 更新人员岗位 * diff --git a/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.xml b/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.xml index f6d35f6e..2869f0ef 100644 --- a/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.xml +++ b/src/com/engine/organization/mapper/hrmresource/SystemDataMapper.xml @@ -181,6 +181,11 @@ select max(id) from hrmresource + \ 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 66ad696d..1593e546 100644 --- a/src/com/engine/organization/service/impl/CompServiceImpl.java +++ b/src/com/engine/organization/service/impl/CompServiceImpl.java @@ -206,6 +206,8 @@ public class CompServiceImpl extends Service implements CompService { String ecCompany = Util.null2String(params.get("ec_company")); if (StringUtils.isNotBlank(ecCompany)) { params.put("parent_company", EcHrmRelationUtil.getJclCompanyId(ecCompany).getId()); + }else{ + params.put("parent_company", ""); } new OrganizationSyncEc(user, LogModuleNameEnum.COMPANY, OperateTypeEnum.UPDATE, params).sync(); // 更新主表数据 @@ -371,6 +373,8 @@ public class CompServiceImpl extends Service implements CompService { CompPO jclCompanyId = EcHrmRelationUtil.getJclCompanyId(targetCompanyId + ""); if (null != jclCompanyId) { compPO.setParentCompany(jclCompanyId.getId()); + } else { + compPO.setParentCompany(null); } Map map = new HashMap<>(); map.put("id", compPO.getId()); diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index 7be24c46..c21be478 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrm.entity.RuleCodeType; import com.engine.organization.component.OrganizationWeaTable; +import com.engine.organization.entity.DeleteParam; import com.engine.organization.entity.codesetting.po.CodeRulePO; import com.engine.organization.entity.commom.RecordInfo; import com.engine.organization.entity.company.bo.CompBO; @@ -38,6 +39,7 @@ import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.service.DepartmentService; import com.engine.organization.service.ExtService; import com.engine.organization.thread.DepartmentTriggerRunnable; +import com.engine.organization.thread.HrmResourceTriggerRunnable; import com.engine.organization.thread.JobTriggerRunnable; import com.engine.organization.thread.OrganizationSyncEc; import com.engine.organization.util.*; @@ -50,6 +52,7 @@ import com.engine.organization.util.relation.EcHrmRelationUtil; import com.engine.organization.util.tree.SearchTreeUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import weaver.conn.RecordSet; import weaver.general.StringUtil; import weaver.general.Util; import weaver.hrm.User; @@ -293,6 +296,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService params.put("ec_company", EcHrmRelationUtil.getEcCompanyId(jclDepartmentId.getParentComp() + "")); } + } else { + params.put("parent_dept", ""); } new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.UPDATE, params).sync(); // 更新主表数据 @@ -307,7 +312,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 刷新岗位所属分部 refreshJobComp(searchParam.getId(), parentComp); List childList = getDepartmentMapper().getDeptListByPId(searchParam.getId()); - forbiddenChildTag(parentComp, childList, false); + String ecCompanyId = EcHrmRelationUtil.getEcCompanyId(Util.null2String(parentComp)); + forbiddenChildTag(parentComp, ecCompanyId, childList); return searchParam.getId(); } @@ -549,19 +555,20 @@ public class DepartmentServiceImpl extends Service implements DepartmentService @Override public int mergeDepartment(DepartmentMergeParam mergeParam) { - //TODO 逻辑重写,被合并部门,子元素全部转移。被合并部门删除、封存 HasRightUtil.hasRight(user, RIGHT_NAME, false); - int updateCount; + // 被合并部门 Long ecParamDepartment = mergeParam.getDepartment(); - DepartmentPO jclDepartmentId = EcHrmRelationUtil.getJclDepartmentId(ecParamDepartment + ""); - Long jclParamDepartment = jclDepartmentId.getId(); - OrganizationAssert.isFalse(mergeParam.getId().equals(jclParamDepartment), "所选部门与待合并部门一致,无需操作"); + DepartmentPO targetDepartment = EcHrmRelationUtil.getJclDepartmentId(ecParamDepartment + ""); + + // 断言判断 + OrganizationAssert.isFalse(null == targetDepartment, "被合并部门数据有误,暂时无法合并"); + OrganizationAssert.isFalse(mergeParam.getId().equals(targetDepartment.getId()), "所选部门与待合并部门一致,无需操作"); OrganizationAssert.notNull(mergeParam.getDepartment(), "请选择需要合并的部门"); OrganizationAssert.notBlank(mergeParam.getMergeName(), "请输入合并后的名称"); - // 合并到的部门 - DepartmentPO targetDepartment = getDepartmentMapper().getDeptById(jclParamDepartment); + // 不可选择合并的数据,本身及子部门 Set disableIds = new HashSet<>(); + // 添加选择部门本身 disableIds.add(mergeParam.getId()); List deptListByPId = getDepartmentMapper().getDeptListByPId(mergeParam.getId()); if (CollectionUtils.isNotEmpty(deptListByPId)) { @@ -569,31 +576,56 @@ public class DepartmentServiceImpl extends Service implements DepartmentService } OrganizationAssert.isFalse(disableIds.contains(targetDepartment.getId()), "请勿选择当前部门本身及其子部门"); - //TODO 被合并部门 - DepartmentPO mergeDepartment = getDepartmentMapper().getDeptById(mergeParam.getId()); - mergeDepartment.setDeptName(mergeParam.getMergeName()); - mergeDepartment.setDeptNameShort(mergeParam.getMergeName()); - - mergeDepartment.setParentDept(jclParamDepartment); - mergeDepartment.setEcDepartment(ecParamDepartment); - mergeDepartment.setParentComp(targetDepartment.getParentComp()); - mergeDepartment.setEcCompany(targetDepartment.getEcCompany()); - // 禁用 - mergeDepartment.setForbiddenTag(1); - // 更新EC表部门 - updateEcDepartment(mergeDepartment); - // 封存EC表部门 - cancelEcDepartment(mergeDepartment.getId()); - - updateCount = getDepartmentMapper().updateBaseDept(mergeDepartment); + // 查询该部门下一级部门 + List firstChildDeptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId()); + // 更新所属部门、所属分部 + for (DepartmentPO departmentPO : firstChildDeptList) { + departmentPO.setParentDept(targetDepartment.getId()); + departmentPO.setEcDepartment(ecParamDepartment); + departmentPO.setParentComp(targetDepartment.getParentComp()); + departmentPO.setEcCompany(targetDepartment.getEcCompany()); + updateEcDepartment(departmentPO); + getDepartmentMapper().updateBaseDept(departmentPO); + // 更新组织架构图 + new Thread(new DepartmentTriggerRunnable(departmentPO.getId())).start(); + } + // 查询该部门一级岗位、更新岗位所属分部、所属部门 + //List firstChildJobList = getJobMapper().listJobsByDepartmentId(mergeParam.getId()); + // 批量更新部门、所属分部 + RecordSet rs = new RecordSet(); + String targetEcDeptId = EcHrmRelationUtil.getEcDepartmentId(targetDepartment.getId().toString()); + String mergeEcDeptId = EcHrmRelationUtil.getEcDepartmentId(mergeParam.getId().toString()); + rs.executeUpdate("update jcl_org_job set parent_comp =?,ec_company =?,parent_dept =?,ec_department =? where parent_dept =?", targetDepartment.getParentComp(), targetDepartment.getEcCompany(), targetDepartment.getId(), targetEcDeptId, mergeParam.getId()); + // 更新当前部门下的人员 + List hrmResourceIds = getSystemDataMapper().getHrmResourceIdsByDept(mergeEcDeptId); + rs.executeUpdate("update hrmresource set SUBCOMPANYID1 =?,DEPARTMENTID =? where DEPARTMENTID =?", targetDepartment.getEcCompany(), targetEcDeptId, mergeEcDeptId); + // 更新人员组织架构图 + for (Long hrmResourceId : hrmResourceIds) { + new Thread(new HrmResourceTriggerRunnable(hrmResourceId)).start(); + } + // 更新子部门下岗位的所属分部 + for (DepartmentPO departmentPO : firstChildDeptList) { + List deptList = getDepartmentMapper().getDeptListByPId(departmentPO.getId()); + forbiddenChildTag(targetDepartment.getParentComp(), Util.null2String(targetDepartment.getEcCompany()), deptList); + } + // 原部门删除 + Map map = new HashMap<>(); + map.put("id", mergeParam.getId()); + new OrganizationSyncEc(user, LogModuleNameEnum.DEPARTMENT, OperateTypeEnum.CANCELED, map).sync(); + // 删除拓展表、明细表 + MapperProxyFactory.getProxy(ExtMapper.class).deleteByID("jcl_org_deptext", mergeParam.getId()); + MapperProxyFactory.getProxy(ExtDTMapper.class).deleteByMainID("jcl_org_deptext_dt1", mergeParam.getId()); + getDepartmentMapper().deleteByIds(DeleteParam.builder().ids(mergeParam.getId().toString()).build().getIds()); // 更新组织架构图 - new Thread(new DepartmentTriggerRunnable(mergeDepartment.getId())).start(); - // 刷新岗位分部 - refreshJobComp(mergeDepartment.getId(), mergeDepartment.getParentComp()); - // 合并后部门及子部门禁用 - List deptList = getDepartmentMapper().getDeptListByPId(mergeParam.getId()); - forbiddenChildTag(targetDepartment.getParentComp(), deptList, true); - return updateCount; + new Thread(new DepartmentTriggerRunnable(getDepartmentMapper().getDeptById(mergeParam.getId()))).start(); + // 更新部门合并后名称 + targetDepartment.setDeptName(mergeParam.getMergeName()); + targetDepartment.setDeptNameShort(mergeParam.getMergeName()); + updateEcDepartment(targetDepartment); + getDepartmentMapper().updateBaseDept(targetDepartment); + // 更新组织架构图 + new Thread(new DepartmentTriggerRunnable(targetDepartment.getId())).start(); + return 0; } @Override @@ -656,7 +688,8 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 刷新岗位分部 refreshJobComp(deptById.getId(), deptById.getParentComp()); List deptList = getDepartmentMapper().getDeptListByPId(deptById.getId()); - forbiddenChildTag(deptById.getParentComp(), deptList, false); + String ecCompanyId = EcHrmRelationUtil.getEcCompanyId(Util.null2String(deptById.getParentComp())); + forbiddenChildTag(deptById.getParentComp(), ecCompanyId, deptList); // 递归更新下级部门、岗位 return updateBaseDept; } @@ -667,19 +700,11 @@ public class DepartmentServiceImpl extends Service implements DepartmentService * @param parentComp * @param deptList */ - void forbiddenChildTag(Long parentComp, List deptList, boolean isForbidden) { + void forbiddenChildTag(Long parentComp, String ecCompanyId, List deptList) { if (CollectionUtils.isNotEmpty(deptList)) { for (DepartmentPO departmentPO : deptList) { departmentPO.setParentComp(parentComp); - String ecCompanyId = EcHrmRelationUtil.getEcCompanyId(parentComp + ""); - if (StringUtils.isNotBlank(ecCompanyId)) { - departmentPO.setEcCompany(Long.parseLong(ecCompanyId)); - } - if (isForbidden) { - departmentPO.setForbiddenTag(1); - // 封存EC表部门 - cancelEcDepartment(departmentPO.getId()); - } + departmentPO.setEcCompany(Long.parseLong(ecCompanyId)); // 更新EC表部门 updateEcDepartment(departmentPO); @@ -688,8 +713,16 @@ public class DepartmentServiceImpl extends Service implements DepartmentService new Thread(new DepartmentTriggerRunnable(departmentPO.getId())).start(); // 刷新岗位所属分部 refreshJobComp(departmentPO.getId(), parentComp); + // 更新当前部门下的人员 + List hrmResourceIds = getSystemDataMapper().getHrmResourceIdsByDept(departmentPO.getId().toString()); + String ecDepartmentId = EcHrmRelationUtil.getEcDepartmentId(departmentPO.getId().toString()); + new RecordSet().executeUpdate("update hrmresource set SUBCOMPANYID1 =? where DEPARTMENTID =?", ecCompanyId, ecDepartmentId); + // 更新人员组织架构图 + for (Long hrmResourceId : hrmResourceIds) { + new Thread(new HrmResourceTriggerRunnable(hrmResourceId)).start(); + } List childList = getDepartmentMapper().getDeptListByPId(departmentPO.getId()); - forbiddenChildTag(parentComp, childList, isForbidden); + forbiddenChildTag(parentComp, ecCompanyId, childList); } } } diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index cc633554..298de2d2 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -14,7 +14,7 @@ import com.engine.organization.entity.SelectOptionParam; import com.engine.organization.entity.commom.RecordInfo; import com.engine.organization.entity.extend.param.ExtendInfoParams; import com.engine.organization.entity.extend.po.ExtendInfoPO; -import com.engine.organization.entity.fieldset.param.FieldTypeTreeParam; +import com.engine.organization.entity.fieldset.param.FieldTransferParam; import com.engine.organization.entity.jclimport.po.CusFormFieldPO; import com.engine.organization.entity.jclimport.po.JclImportHistoryDetailPO; import com.engine.organization.entity.jclimport.po.JclImportHistoryPO; @@ -153,16 +153,15 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ mergeList.addAll(hrmFieldBeanList); mergeList.addAll(customFieldList); - // TODO 分部、部门 - List fieldDatas = mergeList.stream().map(item -> FieldTypeTreeParam.builder().id(item.getFieldId()).name(item.getFieldLabel()).build()).collect(Collectors.toList()); - List selectedKeys = mergeList.stream().filter(item -> ("1".equals(item.getRequired()) || "workcode".equals(item.getFieldName()) || "subcompanyid1".equals(item.getFieldName()) || "departmentid".equals(item.getFieldName()))).map(CusFormFieldPO::getFieldId).collect(Collectors.toList()); + List fieldDatas = mergeList.stream().map(item -> FieldTransferParam.builder().id(item.getTableName() + +item.getFieldId()).name(item.getFieldLabel()).build()).collect(Collectors.toList()); + List selectedKeys = mergeList.stream().filter(item -> ("1".equals(item.getRequired()) || "workcode".equals(item.getFieldName()) || "subcompanyid1".equals(item.getFieldName()) || "departmentid".equals(item.getFieldName()))).map(item->item.getTableName()+item.getFieldId()).collect(Collectors.toList()); returnMaps.put("data", fieldDatas); returnMaps.put("selectedKeys", selectedKeys); } else { List infoPOList = getExtendInfoMapper().listFields(extendType, "", tableName, "", "1"); List filterList = infoPOList.stream().filter(item -> !excludeFields.contains(item.getFieldName()) && 6 != item.getControlType()).collect(Collectors.toList()); - List fieldDatas = filterList.stream().map(item -> FieldTypeTreeParam.builder().id(item.getId()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); + List fieldDatas = filterList.stream().map(item -> FieldTransferParam.builder().id(item.getId().toString()).name(item.getFieldNameDesc()).build()).collect(Collectors.toList()); List selectedKeys = filterList.stream().filter(item -> (0 == item.getIsSystemDefault()) && 1 == item.getIsrequired()).map(ExtendInfoPO::getId).collect(Collectors.toList()); returnMaps.put("data", fieldDatas); returnMaps.put("selectedKeys", selectedKeys); diff --git a/src/com/engine/organization/util/relation/EcHrmRelationUtil.java b/src/com/engine/organization/util/relation/EcHrmRelationUtil.java index 593d6058..53ab7152 100644 --- a/src/com/engine/organization/util/relation/EcHrmRelationUtil.java +++ b/src/com/engine/organization/util/relation/EcHrmRelationUtil.java @@ -50,6 +50,9 @@ public class EcHrmRelationUtil { public static String getEcCompanyId(String companyId) { CompPO compPO = getCompMapper().listById(Long.parseLong(companyId)); RecordInfo supSubCompany = getSystemDataMapper().getHrmObjectByUUID(HRM_COMPANY, compPO.getUuid()); + if (null == supSubCompany) { + return "0"; + } return supSubCompany.getId(); }