feat: 企标复审流程监听器

This commit is contained in:
2023-11-20 15:56:49 +08:00
parent 4655da0fa8
commit 3f0437d5c9
3 changed files with 72 additions and 74 deletions
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -105,6 +106,7 @@ public class ProcessEsRecheck implements Serializable {
/**
* 复审意见 继续有效/修订/废止/封存
*/
@Dict(dicCode = "recheck_advice")
@ApiModelProperty(value = "复审意见 继续有效/修订/废止/封存")
private String recheckAdvice;
@@ -0,0 +1,20 @@
package com.jero.modules.activiti.process.esRecheck.entity;
/**
* @author: Mzaxd
* @Date: 2023/11/20 14:17
*/
public class ProcessRecheckConstants {
// 继续有效
public static final String RECHECK_CONTINUE_VALID = "1";
// 修订
public static final String RECHECK_INIT_CHANGE = "2";
// 废止
public static final String RECHECK_ABOLISH = "3";
// 封存
public static final String RECHECK_ARCHIVE = "4";
}
@@ -1,14 +1,20 @@
package com.jero.modules.activiti.process.esRecheck.listener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPApplicationCategoryEnum;
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.service.ProcessEsInitChangeService;
import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck;
import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService;
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.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
@@ -17,6 +23,8 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.*;
/**
* @author: Mzaxd
* @Date: 2023/10/10 14:14
@@ -25,86 +33,54 @@ import java.util.List;
@Component
public class ProcessESRecheckEndListener implements ExecutionListener {
@Resource
private EnterpriseStandardPlanService espService;
@Resource
private ProcessEsInitChangeService esInitChangeService;
/**
* 企标立项变更流程结束之后需要把数据存入企标计划数据库 然后自动发起企标制修订流程
* 1.继续有效:更新下次复审时间,不做其他处理。企标属性里留下复审记录(列表)(复审时间更新的逻辑待定)
* 2.修订:自动刚发起企标立项变更流程(修订模式)
* 3.废止:自动把企标的状态改为“废止”
* 4.封存:自动把企标的状态改为“封存”
* @param delegateExecution
*/
@Resource
private ProcessEsRecheckService esRecheckService;
@Resource
private ILawsEnterpriseStandardService esService;
@Resource
private ISysBaseAPI sysBaseAPI;
@Override
public void notify(DelegateExecution delegateExecution) {
log.info("企标立项变更流程结束 监听执行器开始执行");
// 获取流程实例ID
log.info("企标复审流程结束 监听执行器开始执行");
// 找到流程实例Id
String processInstanceId = delegateExecution.getProcessInstanceId();
// 根据流程实例Id找到所有流程业务数据
LambdaQueryWrapper<ProcessEsInitChange> esInitChangeWrapper = new LambdaQueryWrapper<>();
esInitChangeWrapper.eq(ProcessEsInitChange::getProcessInstanceId, processInstanceId);
List<ProcessEsInitChange> processEsInitChanges = esInitChangeService.list(esInitChangeWrapper);
String applicationCategory = processEsInitChanges.get(0).getApplicationCategory();
String projectType = processEsInitChanges.get(0).getProjectType();
List<EnterpriseStandardPlan> enterpriseStandardPlans;
if (ESPApplicationCategoryEnum.INITIATION.getValue().equals(applicationCategory)) {
// 立项新增-Id置空
for (ProcessEsInitChange processEsInitChange : processEsInitChanges) {
processEsInitChange.setId(null);
}
// 转换为企标计划数据并入库
enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class);
espService.saveBatch(enterpriseStandardPlans);
} else {
// 将Id设为企标计划的Id
for (ProcessEsInitChange processEsInitChange : processEsInitChanges) {
processEsInitChange.setId(processEsInitChange.getEspId());
}
// 完成时间变更
if (ESPProjectType.COMPLETE_TIME_CHANGE.getValue().equals(projectType)) {
enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class);
espService.saveOrUpdateBatch(enterpriseStandardPlans);
}
// 工作中止
if (ESPProjectType.WORK_TERMINATE.getValue().equals(projectType)) {
// 将企标计划变更状态设为取消
for (ProcessEsInitChange processEsInitChange : processEsInitChanges) {
processEsInitChange.setProjectStatus(ESPChangeType.CANCEL.getValue());
}
enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class);
espService.saveOrUpdateBatch(enterpriseStandardPlans);
}
// 责任部门变更
if (ESPProjectType.RESPONSIBLE_DEPT_CHANGE.getValue().equals(projectType)) {
// 将企标计划变更状态设为变更
for (ProcessEsInitChange processEsInitChange : processEsInitChanges) {
processEsInitChange.setProjectStatus(ESPChangeType.CHANGE.getValue());
}
enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class);
espService.saveOrUpdateBatch(enterpriseStandardPlans);
}
// 合并
if (ESPProjectType.MERGE.getValue().equals(projectType)) {
for (ProcessEsInitChange processEsInitChange : processEsInitChanges) {
processEsInitChange.setId(null);
}
// 删除两个老企标计划
espService.deleteById(processEsInitChanges.get(0).getStandardIdOne());
espService.deleteById(processEsInitChanges.get(0).getStandardIdTwo());
// 生成新企标计划
enterpriseStandardPlans = BeanCopyUtils.copyBeanList(processEsInitChanges, EnterpriseStandardPlan.class);
espService.saveOrUpdateBatch(enterpriseStandardPlans);
}
LambdaQueryWrapper<ProcessEsRecheck> recheckLambdaQueryWrapper = new LambdaQueryWrapper<>();
recheckLambdaQueryWrapper.eq(ProcessEsRecheck::getProcessInstanceId, processInstanceId);
ProcessEsRecheck recheck = esRecheckService.getOne(recheckLambdaQueryWrapper);
String recheckAdvice = recheck.getRecheckAdvice();
String standNo = recheck.getStandardNumber();
log.info("企标复审流程结束 监听执行器开始执行,企标编号为:{}", standNo);
if (RECHECK_CONTINUE_VALID.equals(recheckAdvice)) {
// TODO 继续有效
}
log.info("数据存入企标计划数据库");
// 软删除流程数据
esInitChangeService.removeByProcessInstanceId(processInstanceId);
log.info("软删除流程数据");
//TODO 发起制修订流程
log.info("自动发起企标制修订流程");
if (RECHECK_INIT_CHANGE.equals(recheckAdvice)) {
// TODO 修订
}
if (RECHECK_ABOLISH.equals(recheckAdvice)) {
// 废止
LambdaUpdateWrapper<LawsEnterpriseStandard> esWrapper = new LambdaUpdateWrapper<>();
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo);
esWrapper.set(LawsEnterpriseStandard::getStandardState, "9");
esService.update(esWrapper);
}
if (RECHECK_ARCHIVE.equals(recheckAdvice)) {
// 封存
LambdaUpdateWrapper<LawsEnterpriseStandard> esWrapper = new LambdaUpdateWrapper<>();
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standNo);
esWrapper.set(LawsEnterpriseStandard::getStandardState, "A");
esService.update(esWrapper);
}
log.info("企标复审流程监听执行器执行结束");
}
}