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.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; 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.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CommonVO;
import com.jero.modules.activiti.process.common.enums.ProcessType; 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.dto.BasicProcessInfoDTO;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; 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.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.util.CurrentUserUtil;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
@@ -38,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import static com.jero.modules.activiti.process.esRecheck.entity.RecheckTaskNameConstant.*; import static com.jero.modules.activiti.process.esRecheck.entity.RecheckTaskNameConstant.*;
@@ -83,6 +87,9 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
@Resource @Resource
private EnterpriseStandardRecheckPlanService esRecheckPlanService; private EnterpriseStandardRecheckPlanService esRecheckPlanService;
@Resource
private ProcessAllService processAllService;
@Override @Override
public void startProcess(ESRecheckDataVO recheckData) { public void startProcess(ESRecheckDataVO recheckData) {
// 执行流程发起前的操作 // 执行流程发起前的操作
@@ -343,8 +350,8 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
String deptId = es.getMainDraftingUnit(); String deptId = es.getMainDraftingUnit();
String standardNo = es.getStandardNumber(); String standardNo = es.getStandardNumber();
if (StrUtil.isBlank(deptId)) { if (StrUtil.isBlank(deptId)) {
log.error("企标复审流程发起失败,企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo); log.error("企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo);
return; throw new JeroBootException("企标编号为" + standardNo + "的主起草部门为空,无法找到其联络人");
} }
String standardizationUser = contactManageService.findContactUserByDept(deptId); String standardizationUser = contactManageService.findContactUserByDept(deptId);
String standardEngineer = null; String standardEngineer = null;
@@ -352,8 +359,17 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
standardEngineer = contactManageService.findStandardEngineerByDept(deptId); standardEngineer = contactManageService.findStandardEngineerByDept(deptId);
} }
if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) { if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) {
log.error("企标复审流程发起失败,无法找到企标编号为{}的联络人和标准化工程师", standardNo); log.error("无法找到企标编号为{}的联络人和标准化工程师", standardNo);
return; 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); 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.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.constant.enums.YesOrNoEnum; 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.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.activiti.process.esRecheck.service.ProcessEsRecheckService;
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardRecheckPlan;
import com.jero.modules.laws.enterprise.entity.dto.ESQueryCommonDTO; 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.enterprise.util.BeanCopyUtils;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.laws.system.service.ILawsContactManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
@@ -28,7 +24,10 @@ import javax.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; 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 java.util.stream.Collectors;
import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.*; import static com.jero.modules.activiti.process.esRecheck.entity.ProcessRecheckConstants.*;
@@ -121,7 +120,11 @@ public class ESRecheckPlanJob implements Job {
recheckPlan.setRecheckDate(recheckDate); recheckPlan.setRecheckDate(recheckDate);
esRecheckPlanService.save(recheckPlan); 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()); log.info("企标编号为{}的企标已经达到35个月,已经自动发起复审流程", es.getStandardNumber());
} else { } else {
// 如果已经有复审计划,则需要判断是否到达复审日期前一个月,如果到达则需要发起流程,已经发起过流程的不能重复发送 // 如果已经有复审计划,则需要判断是否到达复审日期前一个月,如果到达则需要发起流程,已经发起过流程的不能重复发送
@@ -140,7 +143,11 @@ public class ESRecheckPlanJob implements Job {
continue; continue;
} }
if (now.isAfter(minusMonths) && now.isBefore(recheckLocalDate)) { 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()); log.info("企标编号为{}的企标已经达到复审日期前一个月,已经自动发起复审流程", es.getStandardNumber());
} }
} }
@@ -94,7 +94,7 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<Enterp
} }
@Override @Override
public void batchStartRecheckPlan(String recheckPlanIds) { public synchronized void batchStartRecheckPlan(String recheckPlanIds) {
if (StrUtil.isBlank(recheckPlanIds)) { if (StrUtil.isBlank(recheckPlanIds)) {
throw new JeroBootException("请选择要启动的复审计划"); throw new JeroBootException("请选择要启动的复审计划");
} }
@@ -113,7 +113,7 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<Enterp
} }
} }
if (!errMsgList.isEmpty()) { if (!errMsgList.isEmpty()) {
throw new JeroBootException(String.join(",", errMsgList)); throw new JeroBootException(String.join("<br>", errMsgList));
} }
} }
} }