From 002e57c204201474c122e48f8656f7207ba110cb Mon Sep 17 00:00:00 2001 From: caihaohan Date: Thu, 25 Jul 2024 15:14:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B9=B4=E5=BA=A6=E5=88=B6=E4=BF=AE?= =?UTF-8?q?=E8=AE=A2=E6=B5=81=E7=A8=8B=E6=94=AF=E6=8C=81=E5=88=B6=E5=AE=9A?= =?UTF-8?q?=E5=B8=A6=E5=B0=8F=E6=95=B0=E7=82=B9=E4=BC=81=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessESAnnualInitEndListener.java | 11 +--- .../impl/ProcessEsAnnualInitServiceImpl.java | 59 ++++++++++++++++- .../ProcessESAnnualReportEndListener.java | 4 +- .../ProcessEsAnnualReportServiceImpl.java | 63 ++++++++++++++++++- 4 files changed, 123 insertions(+), 14 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java index aa3d7832..93df48f4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/listener/ProcessESAnnualInitEndListener.java @@ -1,14 +1,10 @@ package com.jero.modules.activiti.process.esAnnualInit.listener; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; -import com.jero.modules.activiti.entity.ProcessAll; -import com.jero.modules.activiti.enums.ProcessStatusEnum; -import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; import com.jero.modules.activiti.process.esAnnualInit.service.impl.ProcessEsAnnualInitServiceImpl; -import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType; import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; @@ -19,7 +15,6 @@ import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.util.BeanCopyUtils; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; -import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.ExecutionListener; @@ -27,7 +22,6 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.*; -import java.util.stream.Collectors; /** * @author: Mzaxd @@ -104,7 +98,8 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener { // 判断修订的新标准号是否有效 for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { // 制定生成新企标编号 - if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) { + if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue()) + && StrUtil.isBlank(esp.getNewEnStandardNo())) { map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esp.getEnStandardCode()); map.put(FieldCommon.ENTERPRISE_NAME_CODE, esp.getEnNameCode()); map.put(FieldCommon.STANDARD_CATEGORY_CODE, esp.getStandardCategoryCode()); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java index e12f6422..e317f77f 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/service/impl/ProcessEsAnnualInitServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.esAnnualInit.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -16,17 +17,21 @@ import com.jero.modules.activiti.process.common.enums.ProcessType; import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit; import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO; -import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService; import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper; +import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; +import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.util.ExcelUtils; +import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.util.ImportUtil; +import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; +import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.utils.UserUtils; @@ -59,7 +64,7 @@ import static com.jero.modules.activiti.process.esAnnualInit.entity.AnnualInitTa @Transactional(rollbackFor = JeroBootException.class) @Service public class ProcessEsAnnualInitServiceImpl extends ServiceImpl - implements ProcessEsAnnualInitService { + implements ProcessEsAnnualInitService, ESSequenceNumberProvider { @Resource private CommonAPI commonAPI; @@ -97,6 +102,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl d.setRejectFlag(YesOrNoEnum.YES.getValue())); } dbDataList.forEach(d -> d.setExecutionId(executionId)); + // 给制定的数据生成企标编号 updateBatchById(dbDataList); + this.batchGenerateStandardNo(dbDataList); // 转办 runtimeService.setVariableLocal(executionId, "approvalUser", curUserId); break; case STANDARD_ENGINEER_COLLECT: // 根据流程ID删除所有数据后新增 dataList = annualInitData.getDataList(); + // 判断新企标编号有没有重复的 + List collect = dataList.stream().map(ProcessEsAnnualInit::getNewEnStandardNo) + .filter(StrUtil::isNotBlank).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + int size = collect.size(); + if (size != collect.stream().distinct().count()) { + throw new JeroBootException("提交的新企标编号中有重复企标编号,请检查!"); + } + } remove(wrapper); saveBatch(dataList); break; @@ -443,6 +462,27 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl dbDataList) { + Calendar date = Calendar.getInstance(); + String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); + List enactDataList = dbDataList.stream() + .filter(d -> d.getProjectType().equals(ESPRevisionType.ENACT.getValue())) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(enactDataList)) { + for (ProcessEsAnnualInit data : enactDataList) { + // 生成企标编号 + Map map = new HashMap<>(); + map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, data.getEnStandardCode()); + map.put(FieldCommon.ENTERPRISE_NAME_CODE, data.getEnNameCode()); + map.put(FieldCommon.STANDARD_CATEGORY_CODE, data.getStandardCategoryCode()); + map.put(FieldCommon.YEAR_NUMBER, curYearNumber); + String newStandardNumber = esUtil.generateStandardNumber(map); + data.setNewEnStandardNo(newStandardNumber); + updateById(data); + } + } + } + @Override public void batchReject(AnnualInitDataVO annualInitData, String ids) { CommonVO commonVO = annualInitData.getCommonVO(); @@ -587,6 +627,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { + // 已经存在的标准 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessEsAnnualInit::getEnStandardCode, esCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsAnnualInit::getEnNameCode, esNameCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsAnnualInit::getStandardCategoryCode, categoryCodeDictValue); + lambdaQueryWrapper.isNotNull(ProcessEsAnnualInit::getNewEnStandardNo); + List esList = this.list(lambdaQueryWrapper); + + return esList.stream().map(ProcessEsAnnualInit::getNewEnStandardNo) + .map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java index dddb6010..0cfad9c0 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/listener/ProcessESAnnualReportEndListener.java @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.esAnnualReport.listener; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.common.exception.JeroBootException; import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; @@ -89,7 +90,8 @@ public class ProcessESAnnualReportEndListener implements ExecutionListener { // 判断修订的新标准号是否有效 for (EnterpriseStandardPlan esp : enterpriseStandardPlans) { // 制定生成新企标编号 - if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) { + if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue()) + && StrUtil.isBlank(esp.getNewEnStandardNo())) { map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esp.getEnStandardCode()); map.put(FieldCommon.ENTERPRISE_NAME_CODE, esp.getEnNameCode()); map.put(FieldCommon.STANDARD_CATEGORY_CODE, esp.getStandardCategoryCode()); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java index f9709ed4..74f7adab 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.esAnnualReport.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -21,14 +22,18 @@ import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualRe import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPChangeType; import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType; +import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.util.ExcelUtils; +import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; import com.jero.modules.laws.common.util.ImportUtil; +import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; +import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.utils.UserUtils; @@ -60,7 +65,7 @@ import static com.jero.modules.activiti.process.esAnnualReport.entity.AnnualRepo @Service @Transactional(rollbackFor = JeroBootException.class) public class ProcessEsAnnualReportServiceImpl extends ServiceImpl - implements ProcessEsAnnualReportService { + implements ProcessEsAnnualReportService, ESSequenceNumberProvider { @Resource private CommonAPI commonAPI; @@ -100,6 +105,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl collect = dataList.stream().map(ProcessEsAnnualReport::getNewEnStandardNo) + .filter(StrUtil::isNotBlank).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(collect)) { + int size = collect.size(); + if (size != collect.stream().distinct().count()) { + throw new JeroBootException("提交的新企标编号中有重复企标编号,请检查!"); + } + } wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getValue()); remove(wrapper); @@ -324,7 +345,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl dbDataList) { + Calendar date = Calendar.getInstance(); + String curYearNumber = String.valueOf(date.get(Calendar.YEAR)); + List enactDataList = dbDataList.stream() + .filter(d -> d.getProjectType().equals(ESPRevisionType.ENACT.getValue())) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(enactDataList)) { + for (ProcessEsAnnualReport data : enactDataList) { + // 生成企标编号 + Map map = new HashMap<>(); + map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, data.getEnStandardCode()); + map.put(FieldCommon.ENTERPRISE_NAME_CODE, data.getEnNameCode()); + map.put(FieldCommon.STANDARD_CATEGORY_CODE, data.getStandardCategoryCode()); + map.put(FieldCommon.YEAR_NUMBER, curYearNumber); + String newStandardNumber = esUtil.generateStandardNumber(map); + data.setNewEnStandardNo(newStandardNumber); + updateById(data); + } + } + } + + @Override + public List getSequenceNumbers(String esCodeDictValue, String esNameCodeDictValue, String categoryCodeDictValue) { + // 已经存在的标准 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessEsAnnualReport::getEnStandardCode, esCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsAnnualReport::getEnNameCode, esNameCodeDictValue); + lambdaQueryWrapper.eq(ProcessEsAnnualReport::getStandardCategoryCode, categoryCodeDictValue); + lambdaQueryWrapper.isNotNull(ProcessEsAnnualReport::getNewEnStandardNo); + List esList = this.list(lambdaQueryWrapper); + + return esList.stream().map(ProcessEsAnnualReport::getNewEnStandardNo) + .map(EnterpriseStandardUtil::getSequenceNoFromStandardNo).collect(Collectors.toList()); + } }