From 790c88cf9b3e75a1a2cada8bd94e6ec9493854ad Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 7 Aug 2024 11:05:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=B1=BD=E5=B9=B4=E5=BA=A6?= =?UTF-8?q?=E5=88=B6=E4=BF=AE=E8=AE=A2=E6=B5=81=E7=A8=8B=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessESAnnualInitEndListener.java | 5 +- .../impl/ProcessEsAnnualInitServiceImpl.java | 60 ++++++++++++++++++- 2 files changed, 60 insertions(+), 5 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..5396f6aa 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 @@ -13,7 +13,6 @@ import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionTy import com.jero.modules.activiti.process.esRevision.entity.ProcessEsRevision; import com.jero.modules.activiti.process.esRevision.entity.vo.ESRevisionDataVO; import com.jero.modules.activiti.process.esRevision.service.EsRevisionService; -import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; @@ -49,9 +48,6 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener { @Resource private EnterpriseStandardUtil esUtil; - @Resource - private ProcessAllService processAllService; - /** * 流程结束之后需要把数据存入企标计划数据库 * @@ -65,6 +61,7 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener { // 根据流程实例Id找到所有流程业务数据 LambdaQueryWrapper esAnnualInitWrapper = new LambdaQueryWrapper<>(); esAnnualInitWrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); + esAnnualInitWrapper.eq(ProcessEsAnnualInit::getExecutionId, delegateExecution.getId()); List annualInits = annualInitService.list(esAnnualInitWrapper); if (annualInits == null || annualInits.isEmpty()) { log.info("年度制修订标准化发起流程结束 监听执行器未找到流程业务数据"); 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 f0ce1912..85b1e04c 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; @@ -20,13 +21,17 @@ import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualIni import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper; 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("提交的新企标编号中有重复企标编号,请检查!"); + } + } + List idList = dataList.stream().map(ProcessEsAnnualInit::getId).collect(Collectors.toList()); + wrapper.in(ProcessEsAnnualInit::getId, idList); remove(wrapper); saveBatch(dataList); break; @@ -447,6 +469,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(); @@ -591,6 +634,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()); + } }