fix: 79963 企标复审计划--默认条件查询失败

This commit is contained in:
2024-01-15 18:17:35 +08:00
parent 89b85525b4
commit bb6df92398
6 changed files with 152 additions and 55 deletions
@@ -451,6 +451,16 @@ public class ActFlowCommonService {
* @param data
*/
public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) {
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, data);
processHandleService.saveToDraft(processInfoVo);
}
public void saveFirstNodeDraftCustomUserId(CommonVO common, ProcessTypeEnum processTypeEnum, Object data, String userId) {
ProcessInfoVO processInfoVo = this.getProcessInfoVo(common, processTypeEnum, data);
processHandleService.saveToDraftCustomUserId(processInfoVo, userId);
}
private ProcessInfoVO getProcessInfoVo(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) {
// 将archiveData转为Json
String dataJson = JSON.toJSONString(data);
ProcessInfoVO<ESArchiveDataVO> processInfoVO = new ProcessInfoVO<>();
@@ -467,6 +477,6 @@ public class ActFlowCommonService {
processInfoVO.setInfoJsonStr(dataJson);
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
processHandleService.saveToDraft(processInfoVO);
return processInfoVO;
}
}
@@ -144,7 +144,7 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
// 强制撤回
common.setProcessInstanceId(processInstanceId);
actFlowCommonService.saveFirstNodeDraft(common, ProcessTypeEnum.ES_RECHECK, recheckData);
actFlowCommonService.saveFirstNodeDraftCustomUserId(common, ProcessTypeEnum.ES_RECHECK, recheckData, userId);
}
public Map<String, Object> setVariables(Map<String, Object> flowUser) {
@@ -62,6 +62,13 @@ public interface IProcessHandleService {
**/
void updateProcessAll(ProcessInfoVO processInfoVO);
/**
* @Author: caihaohan
* @Date: 2024/1/15 10:45
* @Description: 更新流程总表
**/
void updateProcessAllCustomUserId(ProcessInfoVO processInfoVO, String userId);
/**
* @Author: liao
* @Date: 2023/11/3 10:52
@@ -76,6 +83,9 @@ public interface IProcessHandleService {
**/
void saveToDraft(ProcessInfoVO processInfoVO);
void saveToDraftCustomUserId(ProcessInfoVO processInfoVO, String userId);
/**
* @Author: yjz
* @Date: 2023/11/3 10:29
@@ -101,6 +111,12 @@ public interface IProcessHandleService {
**/
void deleteMyDraft(String taskId, String businessId, Integer processType);
/**
* @Author: caihaohan
* @Date: 2024/1/15 16:48
* @Description: 删除自己的草稿
**/
void deleteMyDraftCustomUserId(String taskId, String businessId, Integer processType, String userId);
/**
* @Author: liao
@@ -46,7 +46,7 @@ import java.util.*;
@Service
@Slf4j
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessHandleServiceImpl implements IProcessHandleService{
public class ProcessHandleServiceImpl implements IProcessHandleService {
@Resource
private RuntimeService runtimeService;
@@ -177,7 +177,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
.orderByDesc(ProcessApprovalRecord::getCreateTime));
if (!processApprovalRecordList.isEmpty()){
if (!processApprovalRecordList.isEmpty()) {
ProcessApprovalRecord processApprovalRecord = processApprovalRecordList.get(0);
processApprovalRecordList.remove(0);
Optional<ProcessApprovalRecord> optional = processApprovalRecordList.stream().filter(v ->
@@ -185,7 +185,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
&& v.getNodeId().equals(processApprovalRecord.getNodeId())).findFirst();
optional.ifPresent(v -> {
// 是否转办过
if (StringUtils.isNotBlank(v.getTransferBy())){
if (StringUtils.isNotBlank(v.getTransferBy())) {
// 转办给转办人
taskService.setAssignee(processApprovalRecord.getTaskId(), v.getUserId());
// 更新流程审批记录表
@@ -292,7 +292,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
public void updateProcessAll(ProcessInfoVO processInfoVO) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId());
if (Objects.isNull(process)){
if (Objects.isNull(process)) {
process = new ProcessAll();
}
process.setCreateUserId(CurrentUserUtil.getId()); // 流程创建人
@@ -305,6 +305,28 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
processAllService.updateById(process);
}
/**
* @Author: liao
* @Date: 2023/11/3 10:46
* @Description: 更新流程总表
**/
@Override
public void updateProcessAllCustomUserId(ProcessInfoVO processInfoVO, String userId) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId());
if (Objects.isNull(process)) {
process = new ProcessAll();
}
process.setCreateUserId(userId); // 流程创建人
process.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称
process.setMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明
process.setPrcMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明
process.setDueTime(basicProcessInfoDTO.getProcessDueDate()); // 流程截止时间
process.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型
process.setProjectId(processInfoVO.getBusinessId()); // 业务id
processAllService.updateById(process);
}
/**
* @Author: liao
* @Date: 2023/11/3 10:53
@@ -314,7 +336,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
public void updateApprovalRecord(ProcessInfoVO processInfoVO) {
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(basicTaskInfoDTO.getTaskId());
if (Objects.isNull(approvalRecord)){
if (Objects.isNull(approvalRecord)) {
approvalRecord = new ProcessApprovalRecord();
}
approvalRecord.setCommitFlag(basicTaskInfoDTO.getCommitFlag()); // 审批意见(1通过,2驳回)
@@ -333,31 +355,39 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
**/
@Override
public void saveToDraft(ProcessInfoVO processInfoVO) {
this.saveToDraft(processInfoVO, CurrentUserUtil.getId());
}
@Override
public void saveToDraftCustomUserId(ProcessInfoVO processInfoVO, String userId) {
this.saveToDraft(processInfoVO, userId);
}
private void saveToDraft(ProcessInfoVO processInfoVO, String userId) {
BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO();
BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
String taskId = null;
String handleText = null;
String handleFile = null;
if (basicTaskInfoDTO != null){
if (basicTaskInfoDTO != null) {
taskId = basicTaskInfoDTO.getTaskId();
handleText = basicTaskInfoDTO.getHandleText();
handleFile = basicTaskInfoDTO.getHandleFile();
}else {
} else {
processInfoVO.setBasicTaskInfoDTO(new BasicTaskInfoDTO());
}
// 保存
updateProcessAll(processInfoVO);
updateProcessAllCustomUserId(processInfoVO, userId);
updateApprovalRecord(processInfoVO);
// 删除自己的草稿
String draftId = processInfoVO.getDraftId();
if (StringUtils.isNotBlank(draftId)){
if (StringUtils.isNotBlank(draftId)) {
processDraftService.removeById(draftId);
}
deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType());
deleteMyDraftCustomUserId(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType(), userId);
// 根据是否有taskId区分保存来源(待办、草稿)
BasicTaskInfoDTO basicTaskInfoDTO1 = processInfoVO.getBasicTaskInfoDTO();
ProcessDraft processDraft = new ProcessDraft();
processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id
processDraft.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id
@@ -368,7 +398,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
processDraft.setTaskId(taskId); // 任务id
processDraft.setHandleText(handleText); // 流程审批信息-备注
processDraft.setHandleFile(handleFile); // 流程审批信息-附件
processDraft.setUserId(CurrentUserUtil.getId()); // 用户id
processDraft.setUserId(userId); // 用户id
processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串
processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回)
processDraftService.save(processDraft);
@@ -391,15 +421,15 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO();
processInfoVO.setBusinessId(processDraft.getProjectId()); // 业务id
basicProcessInfoDTO.setProcessInstanceId(processDraft.getProcessInstanceId()) ; // 流程实例id
basicProcessInfoDTO.setProcessName(processDraft.getPrcName()) ; // 流程名称
basicProcessInfoDTO.setProcessType(processDraft.getPrcType()) ; // 流程类型
basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()) ; // 流程信息-截止日期
basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()) ; // 流程信息-流程说明
basicTaskInfoDTO.setTaskId(processDraft.getTaskId()) ; // 任务id
basicTaskInfoDTO.setHandleText(processDraft.getHandleText()) ; // 流程审批信息-备注
basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile()) ; // 流程审批信息-附件
processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr()) ;//草稿信息json字符串
basicProcessInfoDTO.setProcessInstanceId(processDraft.getProcessInstanceId()); // 流程实例id
basicProcessInfoDTO.setProcessName(processDraft.getPrcName()); // 流程名称
basicProcessInfoDTO.setProcessType(processDraft.getPrcType()); // 流程类型
basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()); // 流程信息-截止日期
basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()); // 流程信息-流程说明
basicTaskInfoDTO.setTaskId(processDraft.getTaskId()); // 任务id
basicTaskInfoDTO.setHandleText(processDraft.getHandleText()); // 流程审批信息-备注
basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile()); // 流程审批信息-附件
processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr());//草稿信息json字符串
processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO);
processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO);
@@ -440,6 +470,31 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
}
}
/**
* @Author: caihaohan
* @Date: 2024/1/15 16:46
* @Description: 删除自己的草稿
**/
@Override
public void deleteMyDraftCustomUserId(String taskId, String businessId, Integer processType, String userId) {
LambdaQueryWrapper<ProcessDraft> deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(ProcessDraft::getUserId, userId);
if (processType != null) {
deleteWrapper.eq(ProcessDraft::getPrcType, processType);
}
if (StringUtils.isNotBlank(businessId)) {
deleteWrapper.eq(ProcessDraft::getProjectId, businessId);
}
if (StringUtils.isNotBlank(taskId)) {
deleteWrapper.eq(ProcessDraft::getTaskId, taskId);
}
deleteWrapper.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE);
List<ProcessDraft> processDraftList = processDraftService.list(deleteWrapper);
for (ProcessDraft processDraft : processDraftList) {
processDraftService.removeById(processDraft.getId());
}
}
/**
* @Author: liao
* @Date: 2023/11/3 11:14
@@ -490,7 +545,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
basicTaskInfoDTO.setHandleText(processDraft.getHandleText());
basicTaskInfoDTO.setTaskId(processDraft.getTaskId());
processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr());
}else {
} else {
// 流程信息
ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProjectId, projectId));
@@ -506,7 +561,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProjectId, projectId)
.eq(StringUtils.isNotBlank(taskId), ProcessApprovalRecord::getTaskId, taskId));
if (!Objects.isNull(processApprovalRecord)){
if (!Objects.isNull(processApprovalRecord)) {
basicTaskInfoDTO.setTaskId(processApprovalRecord.getTaskId());
basicTaskInfoDTO.setHandleText(processApprovalRecord.getCommitText());
basicTaskInfoDTO.setHandleFile(processApprovalRecord.getCommitFile());
@@ -524,11 +579,11 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
String taskId = null;
String handleText = null;
String handleFile = null;
if (basicTaskInfoDTO != null){
if (basicTaskInfoDTO != null) {
taskId = basicTaskInfoDTO.getTaskId();
handleText = basicTaskInfoDTO.getHandleText();
handleFile = basicTaskInfoDTO.getHandleFile();
}else {
} else {
processInfoVO.setBasicTaskInfoDTO(new BasicTaskInfoDTO());
}
@@ -538,14 +593,14 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
// 删除自己的草稿
String draftId = processInfoVO.getDraftId();
if (StringUtils.isNotBlank(draftId)){
if (StringUtils.isNotBlank(draftId)) {
processDraftService.removeById(draftId);
}
deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType());
// 根据是否有taskId区分保存来源(待办、草稿)
BasicTaskInfoDTO basicTaskInfoDTO1 = processInfoVO.getBasicTaskInfoDTO();
// 非发起节点不保存到草稿
if (StringUtils.isBlank(basicTaskInfoDTO1.getTaskId())){
if (StringUtils.isBlank(basicTaskInfoDTO1.getTaskId())) {
ProcessDraft processDraft = new ProcessDraft();
processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id
processDraft.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id
@@ -650,6 +705,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
/**
* 保存流程定义节点用户
*
* @param processInstanceId
* @param nodeId
* @param userIdList
@@ -664,7 +720,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
queryWrapper.eq(ProcessNode::getIsView, 1);
queryWrapper.eq(ProcessNode::getXmlNodeId, nodeId);
ProcessNode processNode = processNodeService.getOne(queryWrapper, false);
if (processNode == null){
if (processNode == null) {
return;
}
List<ProcessNodeLink> linkList = new ArrayList<>();
@@ -676,7 +732,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService{
link.setUserId(userId);
linkList.add(link);
});
if (!linkList.isEmpty()){
if (!linkList.isEmpty()) {
processNodeLinkService.saveBatch(linkList, linkList.size());
}
}
@@ -2,12 +2,17 @@ package com.jero.modules.laws.enterprise.job;
import cn.hutool.core.util.StrUtil;
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.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;
import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardRecheckPlanVo;
import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardRecheckPlanMapper;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService;
import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
@@ -22,10 +27,7 @@ import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -48,6 +50,9 @@ public class ESRecheckPlanJob implements Job {
@Resource
private ProcessEsRecheckService recheckService;
@Resource
private EnterpriseStandardRecheckPlanMapper esRecheckPlanMapper;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
List<LawsEnterpriseStandard> allEs = esService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>().eq(LawsEnterpriseStandard::getDelFlag, YesOrNoEnum.NO.getValue()));
@@ -100,6 +105,35 @@ public class ESRecheckPlanJob implements Job {
}
}
}
// 遍历所有复审计划数据 如果当前时间超过复审日期7天,则显示下一次复审日期
IPage<EnterpriseStandardRecheckPlanVo> page = new Page<>(1, Integer.MAX_VALUE);
List<EnterpriseStandardRecheckPlanVo> records = esRecheckPlanMapper.page(page, new ESQueryCommonDTO()).getRecords();
records.forEach(recheckPlan -> {
// 获取复审日期前7天的时间戳
long sevenDaysAfterRecheck = recheckPlan.getRecheckDate().getTime() + (8L * 24 * 60 * 60 * 1000);
// 检查当前时间是否在复审日期前7天内
if (System.currentTimeMillis() > sevenDaysAfterRecheck) {
// 获取发布日期
Date releaseDate = recheckPlan.getReleaseDate();
// 使用Calendar进行日期的加减
Calendar calendar = Calendar.getInstance();
if (releaseDate != null) {
calendar.setTime(releaseDate); // 设置发布日期
calendar.add(Calendar.YEAR, 6); // 在发布日期的基础上加三年
// 如果新的日期小于等于复审日期,则在复审日期的基础上加三年
if (calendar.getTime().getTime() <= recheckPlan.getRecheckDate().getTime()) {
calendar.setTime(recheckPlan.getRecheckDate());
calendar.add(Calendar.YEAR, 3);
}
// 将新的复审日期设置回对象中
recheckPlan.setRecheckDate(calendar.getTime());
}
}
});
List<EnterpriseStandardRecheckPlan> enterpriseStandardRecheckPlans = BeanCopyUtils
.copyBeanList(records, EnterpriseStandardRecheckPlan.class);
esRecheckPlanService.updateBatchById(enterpriseStandardRecheckPlans);
log.info("企标复审计划定时任务执行完成");
}
@@ -38,26 +38,7 @@ public class EnterpriseStandardRecheckPlanServiceImpl extends ServiceImpl<Enterp
@Override
public IPage<EnterpriseStandardRecheckPlanVo> queryPageList(ESQueryCommonDTO esRecheckPlan, Integer pageNo, Integer pageSize) {
IPage<EnterpriseStandardRecheckPlanVo> page = new Page<>(pageNo, pageSize);
// 遍历数据 如果当前时间超过复审日期7天,则显示下一次复审日期
List<EnterpriseStandardRecheckPlanVo> records = esRecheckPlanMapper.page(page, esRecheckPlan).getRecords();
records.forEach(recheckPlan -> {
// 获取复审日期前7天的时间戳
long sevenDaysAfterRecheck = recheckPlan.getRecheckDate().getTime() + (8L * 24 * 60 * 60 * 1000);
// 检查当前时间是否在复审日期前7天内
if (System.currentTimeMillis() > sevenDaysAfterRecheck) {
// 获取发布日期
Date releaseDate = recheckPlan.getReleaseDate();
// 使用Calendar进行日期的加减
Calendar calendar = Calendar.getInstance();
if (releaseDate != null) {
calendar.setTime(releaseDate); // 设置发布日期
calendar.add(Calendar.YEAR, 6); // 在发布日期的基础上加三年
// 将新的复审日期设置回对象中
recheckPlan.setRecheckDate(calendar.getTime());
}
}
});
return page.setRecords(records);
return esRecheckPlanMapper.page(page, esRecheckPlan);
}
@Override