fix: 81954 年度计划--修订--归档节点需要校验入库的企标编号的唯一性
This commit is contained in:
+27
-9
@@ -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();
|
||||
|
||||
+16
-9
@@ -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();
|
||||
|
||||
+67
-8
@@ -10,6 +10,7 @@ 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.esInitChange.entity.ProcessEsInitChange;
|
||||
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPRevisionType;
|
||||
import com.jero.modules.activiti.process.esInitChange.service.ProcessEsInitChangeService;
|
||||
import com.jero.modules.activiti.service.ProcessAllService;
|
||||
import com.jero.modules.laws.common.constant.FieldCommon;
|
||||
@@ -118,7 +119,7 @@ public class EnterpriseStandardUtil {
|
||||
* 改变企标编号的年代号
|
||||
*
|
||||
* @param oldStandardNumber 老企标编号
|
||||
* @param newYearNumber 新年代号
|
||||
* @param newYearNumber 新年代号
|
||||
* @return 新企标编号
|
||||
*/
|
||||
public String changeStandardNumberYearNumber(String oldStandardNumber, String newYearNumber) {
|
||||
@@ -255,22 +256,27 @@ public class EnterpriseStandardUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean verifyEnStandardNumber(String StandardNumber) {
|
||||
List<String> duplicateStandardNumbers = this.verifyBatchEsNumber(Collections.singletonList(StandardNumber));
|
||||
return duplicateStandardNumbers.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验企标编号是否不重复
|
||||
*
|
||||
* @param StandardNumber
|
||||
* @return
|
||||
* @param StandardNumbers 需要校验的企标编号
|
||||
* @return 返回重复的企标编号 没有重复则返回空集合
|
||||
*/
|
||||
public boolean verifyEnStandardNumber(String StandardNumber) {
|
||||
public List<String> verifyBatchEsNumber(List<String> standardNumbers) {
|
||||
// 判断是否和企标库中重复
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
|
||||
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, StandardNumber);
|
||||
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, standardNumbers);
|
||||
esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getInteger());
|
||||
List<String> numList = esService.list(esWrapper)
|
||||
.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList());
|
||||
// 判断是否和企标计划库中重复
|
||||
LambdaQueryWrapper<EnterpriseStandardPlan> planWrapper = new LambdaQueryWrapper<>();
|
||||
planWrapper.eq(EnterpriseStandardPlan::getNewEnStandardNo, StandardNumber);
|
||||
planWrapper.in(EnterpriseStandardPlan::getNewEnStandardNo, standardNumbers);
|
||||
planWrapper.eq(EnterpriseStandardPlan::getDelFlag, YesOrNoEnum.NO.getInteger());
|
||||
numList.addAll(espService.list(planWrapper)
|
||||
.stream().map(EnterpriseStandardPlan::getNewEnStandardNo).collect(Collectors.toList()));
|
||||
@@ -285,12 +291,65 @@ public class EnterpriseStandardUtil {
|
||||
processInstanceIdList = paList.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||
}
|
||||
LambdaQueryWrapper<ProcessEsInitChange> initChangeWrapper = new LambdaQueryWrapper<>();
|
||||
initChangeWrapper.eq(ProcessEsInitChange::getNewEnStandardNo, StandardNumber);
|
||||
initChangeWrapper.in(ProcessEsInitChange::getNewEnStandardNo, standardNumbers);
|
||||
initChangeWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue());
|
||||
initChangeWrapper.in(ProcessEsInitChange::getProcessInstanceId, processInstanceIdList);
|
||||
numList.addAll(initChangeService.list(initChangeWrapper)
|
||||
.stream().map(ProcessEsInitChange::getNewEnStandardNo).collect(Collectors.toList()));
|
||||
return !numList.contains(StandardNumber);
|
||||
List<String> duplicateStandardNumbers = new ArrayList<>();
|
||||
for (String standardNumber : standardNumbers) {
|
||||
if (numList.contains(standardNumber)) {
|
||||
duplicateStandardNumbers.add(standardNumber);
|
||||
}
|
||||
}
|
||||
return duplicateStandardNumbers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验企标编号是否不重复
|
||||
*
|
||||
* @param plans 需要校验的企标计划
|
||||
* @return 有问题的计划的原企标编号(去重过的)
|
||||
*/
|
||||
public List<String> verifyEsNumberByPlans(List<EnterpriseStandardPlan> plans) {
|
||||
List<String> standardNumbers = plans.stream()
|
||||
.map(EnterpriseStandardPlan::getNewEnStandardNo).collect(Collectors.toList());
|
||||
// 判断是否和企标库中重复
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
|
||||
esWrapper.in(LawsEnterpriseStandard::getStandardNumber, standardNumbers);
|
||||
esWrapper.eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getInteger());
|
||||
List<String> numList = esService.list(esWrapper)
|
||||
.stream().map(LawsEnterpriseStandard::getStandardNumber).collect(Collectors.toList());
|
||||
// 判断是否和企标计划库中重复
|
||||
LambdaQueryWrapper<EnterpriseStandardPlan> planWrapper = new LambdaQueryWrapper<>();
|
||||
planWrapper.in(EnterpriseStandardPlan::getNewEnStandardNo, standardNumbers);
|
||||
planWrapper.eq(EnterpriseStandardPlan::getDelFlag, YesOrNoEnum.NO.getInteger());
|
||||
numList.addAll(espService.list(planWrapper)
|
||||
.stream().map(EnterpriseStandardPlan::getNewEnStandardNo).collect(Collectors.toList()));
|
||||
// 判断是否和立项流程中重复
|
||||
// 已经撤回的立项流程不需要判断重复
|
||||
LambdaQueryWrapper<ProcessAll> processAllLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
processAllLambdaQueryWrapper.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_INIT_CHANGE.getValue());
|
||||
processAllLambdaQueryWrapper.ne(ProcessAll::getPrcStatus, ProcessStatusEnum.WITHDRAWN.getValue());
|
||||
List<ProcessAll> paList = processAllService.list(processAllLambdaQueryWrapper);
|
||||
List<String> processInstanceIdList = new ArrayList<>();
|
||||
if (paList != null && !paList.isEmpty()) {
|
||||
processInstanceIdList = paList.stream().map(ProcessAll::getProcessInstanceId).collect(Collectors.toList());
|
||||
}
|
||||
LambdaQueryWrapper<ProcessEsInitChange> initChangeWrapper = new LambdaQueryWrapper<>();
|
||||
initChangeWrapper.in(ProcessEsInitChange::getNewEnStandardNo, standardNumbers);
|
||||
initChangeWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue());
|
||||
initChangeWrapper.in(ProcessEsInitChange::getProcessInstanceId, processInstanceIdList);
|
||||
numList.addAll(initChangeService.list(initChangeWrapper)
|
||||
.stream().map(ProcessEsInitChange::getNewEnStandardNo).collect(Collectors.toList()));
|
||||
List<String> duplicateStandardNumbers = new ArrayList<>();
|
||||
for (EnterpriseStandardPlan esp : plans) {
|
||||
if (numList.contains(esp.getNewEnStandardNo())) {
|
||||
duplicateStandardNumbers.add(esp.getOriginEnStandardNo());
|
||||
}
|
||||
}
|
||||
duplicateStandardNumbers = duplicateStandardNumbers.stream().distinct().collect(Collectors.toList());
|
||||
return duplicateStandardNumbers;
|
||||
}
|
||||
|
||||
// 判断是否是空Excel
|
||||
|
||||
Reference in New Issue
Block a user