From d53365aba39c7a0d9b1d0935b5ee0ed7065ce32e Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 6 Jun 2022 13:17:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E7=BC=96?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/company/bo/CompBO.java | 18 ++++- .../codesetting/CodeRuleDetailMapper.java | 13 ++++ .../codesetting/CodeRuleDetailMapper.xml | 11 ++- .../mapper/codesetting/CodeRuleMapper.java | 2 + .../mapper/codesetting/CodeRuleMapper.xml | 9 ++- .../organization/mapper/job/JobMapper.xml | 8 +- .../service/CodeSettingService.java | 8 +- .../service/impl/CodeSettingServiceImpl.java | 73 ++++++++++++++++--- .../service/impl/CompServiceImpl.java | 18 +++++ .../service/impl/DepartmentServiceImpl.java | 17 +++++ .../service/impl/JobServiceImpl.java | 17 +++++ .../wrapper/CodeSettingWrapper.java | 5 +- 12 files changed, 179 insertions(+), 20 deletions(-) diff --git a/src/com/engine/organization/entity/company/bo/CompBO.java b/src/com/engine/organization/entity/company/bo/CompBO.java index 8f7e492b..a66cc2bd 100644 --- a/src/com/engine/organization/entity/company/bo/CompBO.java +++ b/src/com/engine/organization/entity/company/bo/CompBO.java @@ -65,7 +65,23 @@ public class CompBO { if (null == param) { return null; } - return CompPO.builder().id(param.getId() == null ? 0 : param.getId()).compNo(param.getCompNo()).compName(param.getCompName()).compNameShort(param.getCompNameShort()).parentCompany(param.getParentCompany()).orgCode(param.getOrgCode()).industry(param.getIndustry()).compPrincipal(param.getCompPrincipal()).description(param.getDescription()).forbiddenTag(param.getForbiddenTag() == null ? null : param.getForbiddenTag() ? 0 : 1).deleteType(0).createTime(new Date()).updateTime(new Date()).creator(employeeId).build(); + return CompPO + .builder() + .id(param.getId() == null ? 0 : param.getId()) + .compNo(param.getCompNo()) + .compName(param.getCompName()) + .compNameShort(param.getCompNameShort()) + .parentCompany(param.getParentCompany()) + .orgCode(param.getOrgCode()) + .industry(param.getIndustry()) + .compPrincipal(param.getCompPrincipal()) + .description(param.getDescription()) + .forbiddenTag(param.getForbiddenTag() == null ? null : param.getForbiddenTag() ? 0 : 1) + .deleteType(0) + .createTime(new Date()) + .updateTime(new Date()) + .creator(employeeId) + .build(); } diff --git a/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.java b/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.java index 190256be..5f3a57a7 100644 --- a/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.java +++ b/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.java @@ -1,5 +1,10 @@ package com.engine.organization.mapper.codesetting; +import com.engine.organization.entity.codesetting.po.CodeRuleDetailPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + /** * @Author weaver_cl * @Description: TODO @@ -9,4 +14,12 @@ package com.engine.organization.mapper.codesetting; public interface CodeRuleDetailMapper { void delete(Long codeRuleId); + + /** + * 批量插入明细表数据 + * + * @param codeRuleDetailPOs + * @return + */ + void batchInsert(@Param("codeRuleDetailPOs") List codeRuleDetailPOs); } diff --git a/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.xml b/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.xml index 1a26183b..89d1bfba 100644 --- a/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.xml +++ b/src/com/engine/organization/mapper/codesetting/CodeRuleDetailMapper.xml @@ -2,8 +2,17 @@ + + insert into hrm_coderuledetail (coderuleid, ruletype, rulevalue, showorder) values + + (#{CodeRuleDetailPO.coderuleId},#{CodeRuleDetailPO.ruleType},#{CodeRuleDetailPO.ruleValue},#{CodeRuleDetailPO.showOrder}) + + + - delete from JCL_CODERULE_DETAIL where coderule_id = #{codeRuleId} + delete + from JCL_CODERULE_DETAIL + where coderule_id = #{codeRuleId} \ No newline at end of file diff --git a/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.java b/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.java index 69f1e3b7..b42bcdd9 100644 --- a/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.java +++ b/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.java @@ -13,6 +13,8 @@ public interface CodeRuleMapper { Long getCodeRuleId(@Param("serialType") String serialType); + CodeRulePO getCodeRuleByType(@Param("serialType") String serialType); + void updateCodeRule(@Param("codeRulePO") CodeRulePO codeRulePO); void insertCodeRule(CodeRulePO codeRulePO); diff --git a/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.xml b/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.xml index 6368201e..28d40a6d 100644 --- a/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.xml +++ b/src/com/engine/organization/mapper/codesetting/CodeRuleMapper.xml @@ -8,6 +8,12 @@ where serial_type = #{serialType} + + update JCL_CODERULE @@ -21,7 +27,8 @@ - INSERT INTO JCL_CODERULE diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml index 6a6123b2..5e8ce87a 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.xml +++ b/src/com/engine/organization/mapper/job/JobMapper.xml @@ -197,9 +197,9 @@ d.scheme_name, FROM jcl_org_job t - inner join jcl_org_comp a on + left join jcl_org_comp a on t.parent_comp = a.id - inner join jcl_org_dept b on + left join jcl_org_dept b on t.parent_dept = b.id left join jcl_org_sequence c on t.sequence_id = c.id @@ -235,9 +235,9 @@ d.scheme_name, FROM jcl_org_job t - inner join jcl_org_comp a on + left join jcl_org_comp a on t.parent_comp = a.id - inner join jcl_org_dept b on + left join jcl_org_dept b on t.parent_dept = b.id left join jcl_org_sequence c on t.sequence_id = c.id diff --git a/src/com/engine/organization/service/CodeSettingService.java b/src/com/engine/organization/service/CodeSettingService.java index 1c19b309..35358237 100644 --- a/src/com/engine/organization/service/CodeSettingService.java +++ b/src/com/engine/organization/service/CodeSettingService.java @@ -22,7 +22,7 @@ public interface CodeSettingService { * 保存更新 * @param params */ - void saveOrUpdateCodeSetting(CodeSaveParam params); + String saveOrUpdateCodeSetting(CodeSaveParam params); /** * 获取主表id @@ -30,4 +30,10 @@ public interface CodeSettingService { * @return */ Long getCodeRuleId(String serialType); + + /** + * 获取编码规则配置信息 + * @return + */ + String getCodeSetting(String serialType); } diff --git a/src/com/engine/organization/service/impl/CodeSettingServiceImpl.java b/src/com/engine/organization/service/impl/CodeSettingServiceImpl.java index 820c2f94..47fa87da 100644 --- a/src/com/engine/organization/service/impl/CodeSettingServiceImpl.java +++ b/src/com/engine/organization/service/impl/CodeSettingServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.organization.service.impl; +import com.alibaba.fastjson.JSONObject; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrm.entity.RuleCodeType; @@ -13,6 +14,9 @@ import com.engine.organization.service.CodeSettingService; import com.engine.organization.util.OrganizationAssert; import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.response.ReturnResult; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -29,7 +33,7 @@ import java.util.Map; public class CodeSettingServiceImpl extends Service implements CodeSettingService { public CodeSettingService getCodeSettingService(User user) { - return ServiceUtil.getService(CodeSettingServiceImpl.class,user); + return ServiceUtil.getService(CodeSettingServiceImpl.class, user); } @Override @@ -55,27 +59,78 @@ public class CodeSettingServiceImpl extends Service implements CodeSettingServic } @Override - public void saveOrUpdateCodeSetting(CodeSaveParam params) { - OrganizationAssert.notNull(params,"参数不能为空"); + public String saveOrUpdateCodeSetting(CodeSaveParam params) { + OrganizationAssert.notNull(params, "参数不能为空"); Long codeRuleId = getCodeSettingService(user).getCodeRuleId(params.getSerialType()); - CodeRulePO codeRulePO = CodeSettingBO.buildCodeRule(params,(long)user.getUID(),codeRuleId); + CodeRulePO codeRulePO = CodeSettingBO.buildCodeRule(params, (long) user.getUID(), codeRuleId); //1.新增或更新主表 - if (codeRulePO != null) { + if (codeRuleId != null) { MapperProxyFactory.getProxy(CodeRuleMapper.class).updateCodeRule(codeRulePO); - }else { + } else { MapperProxyFactory.getProxy(CodeRuleMapper.class).insertCodeRule(codeRulePO); } //2.插入明细表 codeRuleId = getCodeSettingService(user).getCodeRuleId(params.getSerialType()); MapperProxyFactory.getProxy(CodeRuleDetailMapper.class).delete(codeRuleId); - List codeRuleDetailPO = CodeSettingBO.bulidCodeDetailList(params.getCodeSaveDetailParams(),(long)user.getUID(),codeRuleId); - - + List codeRuleDetailPOs = CodeSettingBO.bulidCodeDetailList(params.getCodeSaveDetailParams(), (long) user.getUID(), codeRuleId); + if (CollectionUtils.isEmpty(codeRuleDetailPOs)) { + MapperProxyFactory.getProxy(CodeRuleDetailMapper.class).batchInsert(codeRuleDetailPOs); + } + Map apidatas = new HashMap<>(); + apidatas.put("coderuleid", codeRuleId); + return JSONObject.toJSONString(apidatas); } @Override public Long getCodeRuleId(String serialType) { return MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleId(serialType); } + + @Override + public String getCodeSetting(String serialType) { + Map datas = new HashMap<>(); + CodeRulePO codeRulePO = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(serialType); + if (null != codeRulePO) { + datas.put("serialtype", serialType); + datas.put("serialenable", Util.null2String(codeRulePO.getSerialEnable(), "0")); + String oneselftype = Util.null2String(codeRulePO.getOneselfType(), ""); + if (StringUtils.isNotEmpty(oneselftype)) { + String[] oneselftypes = oneselftype.split(","); + // 日期流水 + Map dateSerialMap = new HashMap<>(); + dateSerialMap.put("enable", "0"); + // 机构流水 + Map deptSerialMap = new HashMap<>(); + deptSerialMap.put("enable", "0"); + // 岗位 + Map jobtitlesSerialMap = new HashMap<>(); + jobtitlesSerialMap.put("enable", "0"); + for (String type : oneselftypes) { + switch (RuleCodeType.getByValue(type)) { + case YEAR: + case MONTH: + case DAY: + dateSerialMap.put("enable", "1"); + dateSerialMap.put("key", type); + break; + case SUBCOMPANY: + case DEPARTMENT: + deptSerialMap.put("enable", "1"); + deptSerialMap.put("key", type); + break; + case JOBTITLES: + jobtitlesSerialMap.put("enable", "1"); + jobtitlesSerialMap.put("key", type); + break; + } + } + datas.put("dateSerial", dateSerialMap); + datas.put("deptSerial", deptSerialMap); + datas.put("jobtitlesSerial", jobtitlesSerialMap); + } + + } + return null; + } } diff --git a/src/com/engine/organization/service/impl/CompServiceImpl.java b/src/com/engine/organization/service/impl/CompServiceImpl.java index 4a0df575..b26aa625 100644 --- a/src/com/engine/organization/service/impl/CompServiceImpl.java +++ b/src/com/engine/organization/service/impl/CompServiceImpl.java @@ -10,11 +10,15 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; 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.CodeRuleManager; import com.engine.organization.component.OrganizationWeaTable; +import com.engine.organization.entity.codesetting.po.CodeRulePO; import com.engine.organization.entity.company.bo.CompBO; import com.engine.organization.entity.company.dto.CompListDTO; import com.engine.organization.entity.company.param.CompSearchParam; import com.engine.organization.entity.company.po.CompPO; +import com.engine.organization.mapper.codesetting.CodeRuleMapper; import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.extend.ExtendGroupMapper; import com.engine.organization.service.CompService; @@ -115,6 +119,13 @@ public class CompServiceImpl extends Service implements CompService { @Override public int saveBaseComp(CompSearchParam params) { + try { + // 处理自动编号 + String compNo = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType.SUBCOMPANY, params.getCompNo()); + params.setCompNo(compNo); + } catch (Exception e) { + throw new RuntimeException(e); + } List list = getCompMapper().listByNo(Util.null2String(params.getCompNo())); OrganizationAssert.isEmpty(list, "编号不允许重复"); CompPO compPO = CompBO.convertParamToPO(params, (long) user.getUID()); @@ -253,6 +264,13 @@ public class CompServiceImpl extends Service implements CompService { // 编号 SearchConditionItem compNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "编号", "compNo"); compNoItem.setRules("required|string"); + // 判断是否开启自动编号 + CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.SUBCOMPANY.getValue()); + if ("1".equals(codeRuleByType.getSerialEnable())) { + compNoItem.setViewAttr(2); + compNoItem.setHelpfulTip("编号为空,则按照指定规则自动生成编号"); + } + // 名称 SearchConditionItem compNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "compName"); compNameItem.setRules("required|string"); diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index c958b145..c81f90a5 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -10,7 +10,10 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; 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.CodeRuleManager; import com.engine.organization.component.OrganizationWeaTable; +import com.engine.organization.entity.codesetting.po.CodeRulePO; import com.engine.organization.entity.company.bo.CompBO; import com.engine.organization.entity.company.po.CompPO; import com.engine.organization.entity.department.bo.DepartmentBO; @@ -23,6 +26,7 @@ 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.mapper.codesetting.CodeRuleMapper; import com.engine.organization.mapper.comp.CompMapper; import com.engine.organization.mapper.department.DepartmentMapper; import com.engine.organization.mapper.extend.ExtendGroupMapper; @@ -196,6 +200,14 @@ public class DepartmentServiceImpl extends Service implements DepartmentService @Override public int saveBaseForm(DeptSearchParam params) { + try { + // 处理自动编号 + String departmentNo = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. + DEPARTMENT, params.getDeptNo()); + params.setDeptNo(departmentNo); + } catch (Exception e) { + throw new RuntimeException(e); + } List list = getDepartmentMapper().listByNo(Util.null2String(params.getDeptNo())); OrganizationAssert.isEmpty(list, "编号不允许重复"); DepartmentPO departmentPO = DepartmentBO.convertParamsToPO(params, user.getUID()); @@ -337,6 +349,11 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 编号 SearchConditionItem deptNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "编号", "deptNo"); deptNoItem.setRules("required|string"); + CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.DEPARTMENT.getValue()); + if ("1".equals(codeRuleByType.getSerialEnable())) { + deptNoItem.setViewAttr(2); + deptNoItem.setHelpfulTip("编号为空,则按照指定规则自动生成编号"); + } // 名称 SearchConditionItem deptNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "departmentName"); deptNameItem.setRules("required|string"); diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index b8224b9d..2da44b0f 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -10,8 +10,11 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; 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.CodeRuleManager; 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.company.bo.CompBO; import com.engine.organization.entity.company.po.CompPO; import com.engine.organization.entity.department.bo.DepartmentBO; @@ -27,6 +30,7 @@ import com.engine.organization.entity.job.po.JobPO; import com.engine.organization.entity.scheme.po.GradePO; import com.engine.organization.entity.searchtree.SearchTree; import com.engine.organization.entity.searchtree.SearchTreeParams; +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.ExtendGroupMapper; @@ -284,6 +288,11 @@ public class JobServiceImpl extends Service implements JobService { // 编号 SearchConditionItem jobNoItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "编号", "jobNo"); jobNoItem.setRules("required|string"); + CodeRulePO codeRuleByType = MapperProxyFactory.getProxy(CodeRuleMapper.class).getCodeRuleByType(RuleCodeType.JOBTITLES.getValue()); + if ("1".equals(codeRuleByType.getSerialEnable())) { + jobNoItem.setViewAttr(2); + jobNoItem.setHelpfulTip("编号为空,则按照指定规则自动生成编号"); + } // 名称 SearchConditionItem jobNameItem = OrganizationFormItemUtil.inputItem(user, 2, 16, 3, 50, "名称", "jobName"); jobNameItem.setRules("required|string"); @@ -377,6 +386,14 @@ public class JobServiceImpl extends Service implements JobService { @Override public int saveBaseForm(JobSearchParam params) { + try { + // 处理自动编号 + String jobNo = CodeRuleManager.getCodeRuleManager().generateRuleCode(RuleCodeType. + DEPARTMENT, params.getJobNo()); + params.setJobNo(jobNo); + } catch (Exception e) { + throw new RuntimeException(e); + } List list = getJobMapper().listByNo(Util.null2String(params.getJobNo())); OrganizationAssert.isEmpty(list, "编号不允许重复"); JobPO jobPO = JobBO.convertParamsToPO(params, user.getUID()); diff --git a/src/com/engine/organization/wrapper/CodeSettingWrapper.java b/src/com/engine/organization/wrapper/CodeSettingWrapper.java index d5df6b93..a65bc52a 100644 --- a/src/com/engine/organization/wrapper/CodeSettingWrapper.java +++ b/src/com/engine/organization/wrapper/CodeSettingWrapper.java @@ -17,7 +17,7 @@ import weaver.hrm.User; public class CodeSettingWrapper extends Service { public CodeSettingService getCodeSettingService(User user) { - return ServiceUtil.getService(CodeSettingServiceImpl.class,user); + return ServiceUtil.getService(CodeSettingServiceImpl.class, user); } public ReturnResult getHasRight(String serialtype) { @@ -25,7 +25,6 @@ public class CodeSettingWrapper extends Service { } public ReturnResult saveOrUpdateCodeSetting(CodeSaveParam params) { - getCodeSettingService(user).saveOrUpdateCodeSetting(params); - return ReturnResult.successed(); + return ReturnResult.successed(getCodeSettingService(user).saveOrUpdateCodeSetting(params)); } }