fix: 年度制修订流程结束后自动发起企标制修订流程生成企标编号BUG

This commit is contained in:
2023-12-28 15:04:33 +08:00
parent f796fbf790
commit 448d2d4365
5 changed files with 82 additions and 10 deletions
@@ -3,19 +3,25 @@ package com.jero.modules.activiti.process.esAnnualInit.listener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.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.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 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;
/**
* @author: Mzaxd
@@ -34,6 +40,9 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener {
@Resource
private EsRevisionService esRevisionService;
@Resource
private EnterpriseStandardUtil esUtil;
/**
* 流程结束之后需要把数据存入企标计划数据库
*
@@ -58,16 +67,35 @@ public class ProcessESAnnualInitEndListener implements ExecutionListener {
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
esp.setApplicationCategory(esp.getProjectType());
}
espService.saveBatch(enterpriseStandardPlans);
log.info("数据存入企标计划数据库");
// 自动发起制修订流程
log.info("自动发起企标制修订流程");
// 生成企标编号
Map<String, Object> map = new HashMap<>();
String newStandardNumber;
// 获取当前年份
Calendar date = Calendar.getInstance();
String curYearNumber = String.valueOf(date.get(Calendar.YEAR));
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
// 制定生成新企标编号
if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) {
map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esp.getEnStandardCode());
map.put(FieldCommon.ENTERPRISE_NAME_CODE, esp.getEnNameCode());
map.put(FieldCommon.STANDARD_CATEGORY_CODE, esp.getStandardCategoryCode());
map.put(FieldCommon.YEAR_NUMBER, curYearNumber);
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();
ProcessEsRevision revision = new ProcessEsRevision();
revision.setEspId(esp.getId());
revisionDataVO.setData(revision);
esRevisionService.autoStartProcess(revisionDataVO);
log.info("自动发起企标制修订流程");
}
}
}
@@ -7,16 +7,21 @@ 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.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 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;
/**
* @author: Mzaxd
@@ -35,6 +40,9 @@ public class ProcessESAnnualReportEndListener implements ExecutionListener {
@Resource
private EsRevisionService esRevisionService;
@Resource
private EnterpriseStandardUtil esUtil;
/**
* 流程结束之后需要把数据存入企标计划数据库
*
@@ -59,16 +67,35 @@ public class ProcessESAnnualReportEndListener implements ExecutionListener {
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
esp.setApplicationCategory(esp.getProjectType());
}
espService.saveBatch(enterpriseStandardPlans);
log.info("数据存入企标计划数据库");
// 自动发起制修订流程
log.info("自动发起企标制修订流程");
// 生成企标编号
Map<String, Object> map = new HashMap<>();
String newStandardNumber;
// 获取当前年份
Calendar date = Calendar.getInstance();
String curYearNumber = String.valueOf(date.get(Calendar.YEAR));
for (EnterpriseStandardPlan esp : enterpriseStandardPlans) {
// 制定生成新企标编号
if (esp.getApplicationCategory().equals(ESPRevisionType.ENACT.getValue())) {
map.put(FieldCommon.ENTERPRISE_STANDARD_CODE, esp.getEnStandardCode());
map.put(FieldCommon.ENTERPRISE_NAME_CODE, esp.getEnNameCode());
map.put(FieldCommon.STANDARD_CATEGORY_CODE, esp.getStandardCategoryCode());
map.put(FieldCommon.YEAR_NUMBER, curYearNumber);
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();
ProcessEsRevision revision = new ProcessEsRevision();
revision.setEspId(esp.getId());
revisionDataVO.setData(revision);
esRevisionService.autoStartProcess(revisionDataVO);
log.info("自动发起企标制修订流程");
}
}
}
@@ -413,7 +413,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict));
item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict));
item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict));
item.setEnStandardSystem(excelUtils.translateDictValue("node_name", "id", "laws_tree_node", item.getWorkGroup(), listDict));
item.setEnStandardSystem(excelUtils.translateDictValue("node_name", "id", "laws_tree_node", item.getEnStandardSystem(), listDict));
item.setDraftPlannedCompleteDate(importUtil.convertDate(item.getDraftPlannedCompleteDateString()));
item.setSolicitationDraftPlanCompleteDate(importUtil.convertDate(item.getSolicitationDraftPlanCompleteDateString()));
item.setPlanApprovalDate(importUtil.convertDate(item.getPlanApprovalDateString()));
@@ -189,7 +189,10 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
// 人员
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, variables);
// 根据流程实例id更新流程总表
String standardNo = StrUtil.isNotBlank(esp.getNewEnStandardNo()) ? esp.getNewEnStandardNo() : esp.getOriginEnStandardNo();
String standardNo = esp.getNewEnStandardNo();
if (StrUtil.isBlank(standardNo)) {
throw new JeroBootException("企标计划Id为{}的企标计划新企标编号为空,无法正常自动发起制修订流程", esp.getId());
}
String newStandardName = esp.getNewEnStandardName();
String revisionType = esp.getProjectType().equals(ESPRevisionType.ENACT.getValue()) ? "制定" : "修订";
String prcName = standardNo + "-" + newStandardName + "-" + revisionType;
@@ -100,6 +100,20 @@ public class EnterpriseStandardUtil {
return standardNumber;
}
/**
* 改变企标编号的年代号
*
* @param oldStandardNumber 老企标编号
* @param newYearNumber 新年代号
* @return 新企标编号
*/
public String changeStandardNumberYearNumber(String oldStandardNumber, String newYearNumber) {
// 截取-前面的内容
String oldStandardNumberPrefix = oldStandardNumber.substring(0, oldStandardNumber.lastIndexOf('-'));
String newStandardNumber = oldStandardNumberPrefix + "-" + newYearNumber;
log.info("改变年代号后的新企标标准号:{}", newStandardNumber);
return newStandardNumber;
}
private String transEsCode(String esCode) {