fix: 81954 年度计划--修订--归档节点需要校验入库的企标编号的唯一性

This commit is contained in:
2024-02-23 13:43:30 +08:00
parent c61e9aae81
commit f9d0d0ed39
3 changed files with 110 additions and 26 deletions
@@ -1,27 +1,33 @@
package com.jero.modules.activiti.process.esAnnualInit.listener;
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;
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;
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;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: Mzaxd
@@ -43,6 +49,9 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener {
@Resource
private EnterpriseStandardUtil esUtil;
@Resource
private ProcessAllService processAllService;
/**
* 流程结束之后需要把数据存入企标计划数据库
*
@@ -77,6 +86,20 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener {
// 获取当前年份
Calendar date = Calendar.getInstance();
String curYearNumber = String.valueOf(date.get(Calendar.YEAR));
List<EnterpriseStandardPlan> needValidList = new ArrayList<>();
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
// 修订只改年代号
if (esp.getApplicationCategory().equals(ESPRevisionType.MODIFY.getValue())) {
newStandardNumber = esUtil.changeStandardNumberYearNumber(esp.getOriginEnStandardNo(), curYearNumber);
esp.setNewEnStandardNo(newStandardNumber);
needValidList.add(esp);
}
}
List<String> duplicateStandardNumbers = esUtil.verifyEsNumberByPlans(needValidList);
if (duplicateStandardNumbers != null && !duplicateStandardNumbers.isEmpty()) {
throw new JeroBootException("原企标编号" + String.join(",", duplicateStandardNumbers) + "修订后,与已存在的企标编号重复,请删除后重新提交");
}
// 判断修订的新标准号是否有效
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
// 制定生成新企标编号
if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) {
@@ -87,11 +110,6 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener {
newStandardNumber = esUtil.generateStandardNumber(map);
esp.setNewEnStandardNo(newStandardNumber);
}
// 修订只改年代号
if (esp.getApplicationCategory().equals(ESPRevisionType.MODIFY.getValue())) {
newStandardNumber = esUtil.changeStandardNumberYearNumber(esp.getOriginEnStandardNo(), curYearNumber);
esp.setNewEnStandardNo(newStandardNumber);
}
espService.save(esp);
log.info("数据存入企标计划数据库");
ESRevisionDataVO revisionDataVO = new ESRevisionDataVO();
@@ -1,6 +1,7 @@
package com.jero.modules.activiti.process.esAnnualReport.listener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import com.jero.modules.activiti.process.esAnnualReport.service.impl.ProcessEsAnnualReportServiceImpl;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType;
@@ -18,10 +19,7 @@ import org.activiti.engine.delegate.ExecutionListener;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @author: Mzaxd
@@ -73,6 +71,20 @@ public class ProcessESAnnualReportEndListener implements ExecutionListener {
// 获取当前年份
Calendar date = Calendar.getInstance();
String curYearNumber = String.valueOf(date.get(Calendar.YEAR));
List<EnterpriseStandardPlan> needValidList = new ArrayList<>();
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
// 修订只改年代号
if (esp.getApplicationCategory().equals(ESPRevisionType.MODIFY.getValue())) {
newStandardNumber = esUtil.changeStandardNumberYearNumber(esp.getOriginEnStandardNo(), curYearNumber);
esp.setNewEnStandardNo(newStandardNumber);
needValidList.add(esp);
}
}
List<String> duplicateStandardNumbers = esUtil.verifyEsNumberByPlans(needValidList);
if (duplicateStandardNumbers != null && !duplicateStandardNumbers.isEmpty()) {
throw new JeroBootException("原企标编号" + String.join(",", duplicateStandardNumbers) + "修订后,与已存在的企标编号重复,请删除后重新提交");
}
// 判断修订的新标准号是否有效
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
// 制定生成新企标编号
if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) {
@@ -83,11 +95,6 @@ public class ProcessESAnnualReportEndListener implements ExecutionListener {
newStandardNumber = esUtil.generateStandardNumber(map);
esp.setNewEnStandardNo(newStandardNumber);
}
// 修订只改年代号
if (esp.getApplicationCategory().equals(ESPRevisionType.MODIFY.getValue())) {
newStandardNumber = esUtil.changeStandardNumberYearNumber(esp.getOriginEnStandardNo(), curYearNumber);
esp.setNewEnStandardNo(newStandardNumber);
}
espService.save(esp);
log.info("数据存入企标计划数据库");
ESRevisionDataVO revisionDataVO = new ESRevisionDataVO();