feat: 企标复审计划批量发起问题

This commit is contained in:
2024-09-24 18:11:00 +08:00
parent d9d407e7a0
commit ef5d43e7f8
3 changed files with 36 additions and 13 deletions
@@ -8,6 +8,8 @@ import com.jero.common.aspect.TranslationAspect;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
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.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.enums.ProcessType;
@@ -19,6 +21,7 @@ import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckServi
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.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
@@ -38,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.jero.modules.activiti.process.esRecheck.entity.RecheckTaskNameConstant.*;
@@ -83,6 +87,9 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
@Resource
private EnterpriseStandardRecheckPlanService esRecheckPlanService;
@Resource
private ProcessAllService processAllService;
@Override
public void startProcess(ESRecheckDataVO recheckData) {
// 执行流程发起前的操作
@@ -343,8 +350,8 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
String deptId = es.getMainDraftingUnit();
String standardNo = es.getStandardNumber();
if (StrUtil.isBlank(deptId)) {
log.error("企标复审流程发起失败,企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo);
return;
log.error("企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo);
throw new JeroBootException("企标编号为" + standardNo + "的主起草部门为空,无法找到其联络人");
}
String standardizationUser = contactManageService.findContactUserByDept(deptId);
String standardEngineer = null;
@@ -352,8 +359,17 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
standardEngineer = contactManageService.findStandardEngineerByDept(deptId);
}
if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) {
log.error("企标复审流程发起失败,无法找到企标编号为{}的联络人和标准化工程师", standardNo);
return;
log.error("无法找到企标编号为{}的联络人和标准化工程师", standardNo);
throw new JeroBootException("无法找到企标编号为" + standardNo + "的联络人和标准化工程师", standardNo);
}
// 判断有没有正在进行中的复审流程
List<ProcessAll> processAlls = processAllService.list(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getPrcType, ProcessTypeEnum.ES_RECHECK.getValue())
.like(ProcessAll::getPrcName, recheckPlan.getStandardNo())
.ne(ProcessAll::getPrcStatus, ProcessStatusEnum.WITHDRAWN.getValue()));
if (!processAlls.isEmpty()) {
log.error("企标编号为{}的企标已经有复审流程在运行中", standardNo);
throw new JeroBootException("企标编号为" + standardNo + "的企标已经有复审流程在运行中");
}
// 构建发起流程数据
ESRecheckDataVO esRecheckDataVO = getEsRecheckDataVO(es, standardizationUser, standardEngineer, recheckPlan);
@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
import com.jero.modules.activiti.process.esRecheck.entity.ProcessEsRecheck;
import com.jero.modules.activiti.process.esRecheck.entity.vo.ESRecheckDataVO;
import com.jero.modules.activiti.process.esRecheck.service.ProcessEsRecheckService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO;
@@ -18,7 +15,6 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanSer
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 com.jero.modules.laws.system.service.ILawsContactManageService;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
@@ -28,7 +24,10 @@ import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.*;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.*;
@@ -121,7 +120,11 @@ public class ESRecheckPlanJob implements Job {
recheckPlan.setRecheckDate(recheckDate);
esRecheckPlanService.save(recheckPlan);
// 自动发起流程
recheckService.autoStartProcess(es, recheckPlan);
try {
recheckService.autoStartProcess(es, recheckPlan);
} catch (Exception e) {
log.error("企标编号{}复审流程发起失败,原因:{}", es.getStandardNumber(), e.getMessage());
}
log.info("企标编号为{}的企标已经达到35个月,已经自动发起复审流程", es.getStandardNumber());
} else {
// 如果已经有复审计划,则需要判断是否到达复审日期前一个月,如果到达则需要发起流程,已经发起过流程的不能重复发送
@@ -140,7 +143,11 @@ public class ESRecheckPlanJob implements Job {
continue;
}
if (now.isAfter(minusMonths) && now.isBefore(recheckLocalDate)) {
recheckService.autoStartProcess(es, recheckPlan);
try {
recheckService.autoStartProcess(es, recheckPlan);
} catch (Exception e) {
log.error("企标编号{}复审流程发起失败,原因:{}", es.getStandardNumber(), e.getMessage());
}
log.info("企标编号为{}的企标已经达到复审日期前一个月,已经自动发起复审流程", es.getStandardNumber());
}
}
@@ -94,7 +94,7 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<Enterp
}
@Override
public void batchStartRecheckPlan(String recheckPlanIds) {
public synchronized void batchStartRecheckPlan(String recheckPlanIds) {
if (StrUtil.isBlank(recheckPlanIds)) {
throw new JeroBootException("请选择要启动的复审计划");
}
@@ -113,7 +113,7 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<Enterp
}
}
if (!errMsgList.isEmpty()) {
throw new JeroBootException(String.join(",", errMsgList));
throw new JeroBootException(String.join("<br>", errMsgList));
}
}
}