From a36648ea39f805959f975908b3932d2ec03eacb1 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 25 Oct 2022 11:09:14 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=8A=B1=E5=90=8D=E5=86=8C=E6=A0=91BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/service/impl/HrmResourceServiceImpl.java | 5 +++-- src/com/engine/organization/util/tree/SearchTreeUtil.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java index 4c30f42c..aaa53686 100644 --- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java @@ -576,7 +576,9 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic for (DepartmentPO departmentPO : filterDeparts) { buildParentDepts(departmentPO, builderDeparts); } - List deptTrees = SearchTreeUtil.builderTreeMode(DepartmentBO.buildSetToSearchTree(builderDeparts, false)); + List departmentTrees = DepartmentBO.buildSetToSearchTree(builderDeparts, false); + List searchTrees = SearchTreeUtil.builderTreeMode(departmentTrees, jobTrees); + List deptTrees = SearchTreeUtil.builderTreeMode(departmentTrees); // 添加部门的上级分部 String parentCompS = deptTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(",")); if (!StringUtil.isEmpty(parentCompS)) { @@ -589,7 +591,6 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic for (CompPO compPO : filterComps) { buildParentComps(compPO, builderComps); } - List searchTrees = SearchTreeUtil.builderTreeMode(deptTrees, jobTrees); return SearchTreeUtil.builderTreeMode(CompBO.buildSetToSearchTree(builderComps), searchTrees); } diff --git a/src/com/engine/organization/util/tree/SearchTreeUtil.java b/src/com/engine/organization/util/tree/SearchTreeUtil.java index 5ff6bdee..2ec73a8c 100644 --- a/src/com/engine/organization/util/tree/SearchTreeUtil.java +++ b/src/com/engine/organization/util/tree/SearchTreeUtil.java @@ -108,7 +108,7 @@ public class SearchTreeUtil { Map> childMap = deptTrees.stream().collect(Collectors.groupingBy(SearchTree::getParentComp)); boolean isAdd = !childMap.isEmpty(); return treeList.stream().peek(e -> { - List treeNodes = new ArrayList<>(); + Set treeNodes = new HashSet<>(); List nodes = parentMap.get(e.getId()); if (CollectionUtils.isNotEmpty(nodes)) { treeNodes.addAll(nodes); @@ -119,7 +119,7 @@ public class SearchTreeUtil { if (CollectionUtils.isNotEmpty(e.getSubs())) { treeNodes.addAll(e.getSubs()); } - e.setSubs(treeNodes); + e.setSubs( new ArrayList<>(treeNodes)); }).peek(item -> { if (CollectionUtils.isNotEmpty(item.getSubs())) { item.setIsParent(true); -- 2.40.0.windows.1 From b2fc9d3e0c5f411fd96ab96276ce277bd030363b Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 25 Oct 2022 15:43:02 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E3=80=81=E5=B2=97=E4=BD=8D=E9=83=A8=E9=97=A8=E3=80=81=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E4=B8=8B=E6=8B=89=E6=A1=86BUG=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/SelectOptionParam.java | 11 ++- .../mapper/resource/ResourceMapper.java | 2 + .../mapper/resource/ResourceMapper.xml | 5 ++ .../service/impl/HrmResourceServiceImpl.java | 68 +++++++++++++++++-- .../service/impl/ImportCommonServiceImpl.java | 11 +++ .../service/impl/JobServiceImpl.java | 40 +++++++---- 6 files changed, 117 insertions(+), 20 deletions(-) diff --git a/src/com/engine/organization/entity/SelectOptionParam.java b/src/com/engine/organization/entity/SelectOptionParam.java index c89470c0..c2121532 100644 --- a/src/com/engine/organization/entity/SelectOptionParam.java +++ b/src/com/engine/organization/entity/SelectOptionParam.java @@ -33,8 +33,15 @@ public class SelectOptionParam { int size = datas.size(); for (int i = 0; i < size; i++) { JSONObject jsonObject = (JSONObject) datas.get(i); - SearchConditionOption option = new SearchConditionOption(StringUtils.isEmpty(jsonObject.getString("key")) ? i + "" : jsonObject.getString("key"), jsonObject.getString("option")); - selectOptions.add(option); + // 只显示未封存的数据 + if (!"1".equals(jsonObject.getString("unuse"))) { + SearchConditionOption option = new SearchConditionOption(StringUtils.isEmpty(jsonObject.getString("key")) ? i + "" : jsonObject.getString("key"), jsonObject.getString("option")); + selectOptions.add(option); + // 设置默认数据 + if ("1".equals(jsonObject.getString("default"))) { + option.setSelected(true); + } + } } } return selectOptions; diff --git a/src/com/engine/organization/mapper/resource/ResourceMapper.java b/src/com/engine/organization/mapper/resource/ResourceMapper.java index e18d6a68..424ec55c 100644 --- a/src/com/engine/organization/mapper/resource/ResourceMapper.java +++ b/src/com/engine/organization/mapper/resource/ResourceMapper.java @@ -22,4 +22,6 @@ public interface ResourceMapper { int updateResourceJob(@Param("originalJobId") Long originalJobId, @Param("targetJobId") Long targetJobId, @Param("parentComp") Long parentComp, @Param("parentDept") Long parentDept, @Param("ecCompany") Long ecCompany, @Param("ecDepartment") Long ecDepartment); HrmResourcePO getResourceById(@Param("id") String id); + + List listByNo(@Param("workCode") String workCode); } diff --git a/src/com/engine/organization/mapper/resource/ResourceMapper.xml b/src/com/engine/organization/mapper/resource/ResourceMapper.xml index 8a729a69..3199f53d 100644 --- a/src/com/engine/organization/mapper/resource/ResourceMapper.xml +++ b/src/com/engine/organization/mapper/resource/ResourceMapper.xml @@ -102,6 +102,11 @@ from jcl_org_hrmresource t where delete_type = 0 and id = #{id} + diff --git a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java index aaa53686..ec082250 100644 --- a/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java +++ b/src/com/engine/organization/service/impl/HrmResourceServiceImpl.java @@ -6,9 +6,11 @@ import com.api.browser.bean.SearchConditionItem; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrm.entity.RuleCodeType; import com.engine.hrm.util.face.HrmFaceCheckManager; 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; import com.engine.organization.entity.company.po.CompPO; @@ -19,6 +21,7 @@ import com.engine.organization.entity.hrmresource.bo.HrmRelationBO; import com.engine.organization.entity.hrmresource.param.HrmRelationSaveParam; import com.engine.organization.entity.hrmresource.param.HrmResourceSearchParam; import com.engine.organization.entity.hrmresource.po.HrmRelationPO; +import com.engine.organization.entity.hrmresource.po.HrmResourcePO; import com.engine.organization.entity.hrmresource.vo.HrmResourceVO; import com.engine.organization.entity.job.bo.JobBO; import com.engine.organization.entity.job.po.JobPO; @@ -26,6 +29,7 @@ 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; import com.engine.organization.mapper.extend.ExtendTitleMapper; @@ -35,6 +39,7 @@ import com.engine.organization.mapper.hrmresource.SystemDataMapper; import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.mapper.post.PostInfoMapper; import com.engine.organization.mapper.post.PostMapper; +import com.engine.organization.mapper.resource.ResourceMapper; import com.engine.organization.mapper.scheme.GradeMapper; import com.engine.organization.mapper.scheme.LevelMapper; import com.engine.organization.mapper.scheme.SchemeMapper; @@ -47,6 +52,7 @@ import com.engine.organization.util.HasRightUtil; import com.engine.organization.util.MenuBtn; import com.engine.organization.util.OrganizationAssert; import com.engine.organization.util.OrganizationFormItemUtil; +import com.engine.organization.util.coderule.CodeRuleUtil; import com.engine.organization.util.db.DBType; import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.page.PageUtil; @@ -153,6 +159,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic return MapperProxyFactory.getProxy(HrmResourceMapper.class); } + private static ResourceMapper getResourceMapper() { + return MapperProxyFactory.getProxy(ResourceMapper.class); + } + private ExtendTitleMapper getExtendTitleMapper() { return MapperProxyFactory.getProxy(ExtendTitleMapper.class); } @@ -206,7 +216,10 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic @Override public Long saveBaseForm(Map params) { HasRightUtil.hasRight(user, RIGHT_NAME, false); - + String workCode = (String) params.get("work_code"); + // 判断是否开启自动编号 + workCode = repeatDetermine(workCode); + params.put("work_code", workCode); // 完善新增参数 completeParams(params); @@ -271,6 +284,13 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic if ("0".equals(groupId)) { groupId = GROUP_ID.toString(); } + // 判断编号是否重复 + String workCode = Util.null2String(params.get("work_code")); + HrmResourcePO resourceById = getResourceMapper().getResourceById(id.toString()); + if (!workCode.equals(resourceById.getWorkCode())) { + workCode = repeatDetermine(workCode); + params.put("work_code", workCode); + } // 完善更新参数 completeParams(params); @@ -576,9 +596,9 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic for (DepartmentPO departmentPO : filterDeparts) { buildParentDepts(departmentPO, builderDeparts); } - List departmentTrees = DepartmentBO.buildSetToSearchTree(builderDeparts, false); - List searchTrees = SearchTreeUtil.builderTreeMode(departmentTrees, jobTrees); - List deptTrees = SearchTreeUtil.builderTreeMode(departmentTrees); + List departmentList = DepartmentBO.buildSetToSearchTree(builderDeparts, false); + List deptTrees = SearchTreeUtil.builderTreeMode(departmentList); + List searchTrees = SearchTreeUtil.builderTreeMode(departmentList, jobTrees); // 添加部门的上级分部 String parentCompS = deptTrees.stream().map(SearchTree::getParentComp).collect(Collectors.joining(",")); if (!StringUtil.isEmpty(parentCompS)) { @@ -683,8 +703,11 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic params.put("company_id", jobById.getParentComp()); params.put("ec_department", jobById.getEcDepartment()); params.put("ec_company", jobById.getEcCompany()); - // 职级 - params.put("job_level", jobById.getGradeId()); + // 等级方案、岗位序列、职等、职级 + params.put("scheme_id", jobById.getSchemeId()); + params.put("sequence_id", jobById.getSequenceId()); + params.put("job_level", jobById.getLevelId()); + params.put("job_grade", jobById.getGradeId()); String showOrder = Util.null2String(params.get("show_order")); // 初始化排序字段 if (StringUtils.isBlank(showOrder)) { @@ -699,4 +722,37 @@ public class HrmResourceServiceImpl extends Service implements HrmResourceServic } } } + + /** + * 判断编号是否重复 + * + * @return + */ + public static String repeatDetermine(String workCode) { + CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.USER.getValue()); + if (StringUtils.isNotBlank(workCode)) { + workCode = CodeRuleUtil.generateCode(RuleCodeType.USER, workCode); + List list = getResourceMapper().listByNo(Util.null2String(workCode)); + OrganizationAssert.isEmpty(list, "编号不允许重复"); + } else { + if (null != codeRuleByType && "1".equals(codeRuleByType.getSerialEnable())) { + workCode = autoCreateWorkCode(); + } + } + return workCode; + } + + /** + * 自动编号处理 + * + * @return + */ + private static String autoCreateWorkCode() { + String generateCode = CodeRuleUtil.generateCode(RuleCodeType.USER, ""); + List list = getResourceMapper().listByNo(Util.null2String(generateCode)); + if (CollectionUtils.isNotEmpty(list)) { + generateCode = autoCreateWorkCode(); + } + return generateCode; + } } diff --git a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java index f3b8a265..41f6aff8 100644 --- a/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java +++ b/src/com/engine/organization/service/impl/ImportCommonServiceImpl.java @@ -1376,7 +1376,18 @@ public class ImportCommonServiceImpl extends Service implements ImportCommonServ saveImportDetailLog(historyDetailPO); continue; } + // 自动编号 + String workCode = Util.null2String(map.get("work_code")); + try { + // 自动编号 + workCode = HrmResourceServiceImpl.repeatDetermine(workCode); + map.put("work_code", workCode); + } catch (Exception e) { + historyDetailPO.setOperateDetail(Util.null2String(e.getMessage())); + historyDetailPO.setStatus("0"); + saveImportDetailLog(historyDetailPO); + } map.put("creator", user.getUID()); map.put("delete_type", 0); map.put("create_time", new Date()); diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index e93f62be..e7fe8307 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -361,12 +361,20 @@ public class JobServiceImpl extends Service implements JobService { jobNo = repeatDetermine(jobNo); params.put("job_no", jobNo); params.put("is_key", null == searchParam.getIsKey() ? 0 : searchParam.getIsKey()); - Long ecDepartment = searchParam.getEcDepartment(); - DepartmentPO jclDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(ecDepartment)); - params.put("parent_dept", jclDepartment.getId()); - params.put("parent_comp", jclDepartment.getParentComp()); - if (null != jclDepartment.getParentComp()) { - params.put("ec_company", EcHrmRelationUtil.getEcCompanyId(Util.null2String(jclDepartment.getParentComp()))); + if (null != searchParam.getParentJob()) { + JobPO parentJob = getJobMapper().getJobById(searchParam.getParentJob()); + params.put("parent_dept", parentJob.getParentDept()); + params.put("parent_comp", parentJob.getParentComp()); + params.put("ec_company", parentJob.getEcCompany()); + params.put("ec_department", parentJob.getEcDepartment()); + } else { + Long ecDepartment = searchParam.getEcDepartment(); + DepartmentPO jclDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(ecDepartment)); + params.put("parent_dept", jclDepartment.getId()); + params.put("parent_comp", jclDepartment.getParentComp()); + if (null != jclDepartment.getParentComp()) { + params.put("ec_company", EcHrmRelationUtil.getEcCompanyId(Util.null2String(jclDepartment.getParentComp()))); + } } if (StringUtils.isBlank(params.get("show_order").toString())) { @@ -406,12 +414,20 @@ public class JobServiceImpl extends Service implements JobService { // 更新主表数据 params.put("is_key", searchParam.getIsKey()); - Long ecDepartment = searchParam.getEcDepartment(); - DepartmentPO jclDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(ecDepartment)); - params.put("parent_dept", jclDepartment.getId()); - params.put("parent_comp", jclDepartment.getParentComp()); - if (null != jclDepartment.getParentComp()) { - params.put("ec_company", EcHrmRelationUtil.getEcCompanyId(Util.null2String(jclDepartment.getParentComp()))); + if (null != searchParam.getParentJob()) { + JobPO parentJob = getJobMapper().getJobById(searchParam.getParentJob()); + params.put("parent_dept", parentJob.getParentDept()); + params.put("parent_comp", parentJob.getParentComp()); + params.put("ec_company", parentJob.getEcCompany()); + params.put("ec_department", parentJob.getEcDepartment()); + } else { + Long ecDepartment = searchParam.getEcDepartment(); + DepartmentPO jclDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(ecDepartment)); + params.put("parent_dept", jclDepartment.getId()); + params.put("parent_comp", jclDepartment.getParentComp()); + if (null != jclDepartment.getParentComp()) { + params.put("ec_company", EcHrmRelationUtil.getEcCompanyId(Util.null2String(jclDepartment.getParentComp()))); + } } params.put("jobactivityid", JOB_ACTIVITY_ID); new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.UPDATE, params, oldJobPO).sync(); -- 2.40.0.windows.1 From 7258ee742def9af2ee9cafacd567f84727162b2e Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 25 Oct 2022 16:24:18 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=BC=96=E5=88=B6=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/organization/service/impl/StaffServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/organization/service/impl/StaffServiceImpl.java b/src/com/engine/organization/service/impl/StaffServiceImpl.java index 01166d5b..5a88abd1 100644 --- a/src/com/engine/organization/service/impl/StaffServiceImpl.java +++ b/src/com/engine/organization/service/impl/StaffServiceImpl.java @@ -78,7 +78,7 @@ public class StaffServiceImpl extends Service implements StaffService { // 判断编制导入模板是否存在,不存在则创建该文件 static { try { - String outPutPath = GCONST.getRootPath() + "/hrm/import/template/staff.xls"; + String outPutPath = GCONST.getRootPath() + File.separator + "hrm" + File.separator + "import" + File.separator + "template" + File.separator + "staff.xls"; File excelPathFile = new File(outPutPath); if (!excelPathFile.exists()) { String columns = "方案编号,方案名称,分部,部门,岗位,编制数"; -- 2.40.0.windows.1