fix(征求意见流程): 80298
This commit is contained in:
@@ -24,6 +24,8 @@ public class ResultCommon {
|
||||
public static final String SUCCESSFULLY_DELETED_IN_BULK = "successfully.deleted.in.bulk";
|
||||
/**未找到对应数据*/
|
||||
public static final String NO_CORRESPONDING_DATA_FOUND = "no.corresponding.data.found";
|
||||
/**已过期*/
|
||||
public static final String OVER_DUE = "over.due";
|
||||
/**参数不识别*/
|
||||
public static final String PARAMETER_NOT_RECOGNIZED = "parameter.not.recognized";
|
||||
|
||||
|
||||
@@ -193,4 +193,10 @@ public class ProcessApprovalRecord {
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "完成注记 搜索用")
|
||||
private String finishFlagSearch;
|
||||
|
||||
/**
|
||||
* 超期标识(0:未超期 1:已超期)
|
||||
*/
|
||||
@ApiModelProperty(value = "超期标识(0:未超期 1:已超期)")
|
||||
private String overDue;
|
||||
}
|
||||
+7
-3
@@ -188,9 +188,13 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
||||
date.setTime(createTime.getTime() + 1000);
|
||||
}
|
||||
DateBetween between = date.between(createTime);
|
||||
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
||||
approvalRecord.setEndTime(date);
|
||||
approvalRecord.setOverTime(between.toString());
|
||||
|
||||
// 征求意见流程 超期待办特殊处理
|
||||
if (YesOrNoEnum.NO.getValue().equals(approvalRecord.getOverDue())){
|
||||
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
||||
approvalRecord.setEndTime(date);
|
||||
approvalRecord.setOverTime(between.toString());
|
||||
}
|
||||
|
||||
Map<String, Object> variables = delegateTask.getVariables();
|
||||
// 第一个节点不需要设置commitFlag 非审批节点也不需要设置commitFlag
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
</if>
|
||||
</sql>
|
||||
<select id="getTodoList" resultType="com.jero.modules.activiti.entity.ProcessAll">
|
||||
select pa.*,par.create_time as receivedTaskTime,par.task_id,par.task_name, par.node_id
|
||||
select pa.*,par.create_time as receivedTaskTime,par.task_id,par.task_name, par.node_id, par.over_due
|
||||
from process_all pa
|
||||
left join process_approval_record par on pa.process_instance_id = par.process_instance_id
|
||||
${ew.customSqlSegment}
|
||||
|
||||
+2
-1
@@ -219,10 +219,11 @@ public class EsInspectRectifyFlowServiceImpl implements IEsInspectRectifyFlowSer
|
||||
Map<String, Object> map = esInspectReportFlowVO.getMap();
|
||||
map.put("responsible_dictText", sysUserService.dictByIdsOrUserNames(String.valueOf(map.get("responsible")), ""));
|
||||
ProcessEsInspectRectify processEsInspectRectify = esInspectReportFlowVO.getProcessEsInspectRectify();
|
||||
ProcessEsInspectRectifyVO processEsInspectRectifyVO = processEsInspectRectifyService.queryByProjectId(processEsInspectRectify.getProjectId());
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("revocation", true);
|
||||
jsonObject.put("personInfo", map);
|
||||
jsonObject.put("draftData", processEsInspectRectify);
|
||||
jsonObject.put("draftData", processEsInspectRectifyVO);
|
||||
processDraft.setInfoJsonStr(jsonObject.toJSONString());
|
||||
processDraftService.save(processDraft);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ public class FbCommon {
|
||||
public static final String VARIABLE_DESIGN_ENGINEER_LIST = "designEngineerList"; // 设计工程师
|
||||
public static final String VARIABLE_DESIGN_ENGINEER_ID = "designEngineerId"; // 设计工程师
|
||||
public static final String VARIABLE_PASS_FIRST = "passFirst"; // 主管级领导是否分发
|
||||
public static final String OVER_DUE = "overDue"; // 模块负责人分发超期
|
||||
public static final String VARIABLE_PASS_SECOND = "passSecond"; // 主管级领导审批是否通过
|
||||
public static final String VARIABLE_PASS_THIRD = "passThird"; // 法规工程师审批是否通过
|
||||
public static final String VARIABLE_PASS_FOURTH = "passFourth"; // 驳回流程是否分发
|
||||
|
||||
+82
-1
@@ -1,5 +1,27 @@
|
||||
package com.jero.modules.activiti.process.fb.job;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey;
|
||||
import com.jero.modules.activiti.process.fb.common.FbCommon;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
|
||||
import com.jero.modules.activiti.process.fb.vo.NodeDispose;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.engine.RuntimeService;
|
||||
import org.activiti.engine.TaskService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @ClassName: DesignEngineerOverDueJob3
|
||||
* @Description:
|
||||
@@ -7,5 +29,64 @@ package com.jero.modules.activiti.process.fb.job;
|
||||
* @Date: 2024-01-31 10:59
|
||||
* @Version: 1.0
|
||||
**/
|
||||
public class DepartLeaderStartOverDueJob {
|
||||
@Slf4j
|
||||
@Transactional(rollbackFor = RuntimeException.class)
|
||||
public class DepartLeaderStartOverDueJob implements Job {
|
||||
@Resource
|
||||
private IProcessFbStandardConsultationService processFbStandardConsultationService;
|
||||
@Resource
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@Resource
|
||||
private RuntimeService runtimeService;
|
||||
|
||||
/**
|
||||
* 征求意见流程-超过征求意见结束日期,各部所主管级领导未分发时
|
||||
* @param jobExecutionContext
|
||||
* @throws JobExecutionException
|
||||
*/
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
log.info("征求意见流程-超过征求意见结束日期,各部所主管级领导 部分/全部 未分发时任务开始");
|
||||
long num = 0L;
|
||||
// 查询超过征求意见结束日期的各部所主管级领导未分发节点情况
|
||||
List<NodeDispose> nodeDisposeCount =
|
||||
processFbStandardConsultationService.findNodeDisposeCount(ConsultationTaskKey.DEPART_LEADER_START_1);
|
||||
if (CollectionUtils.isNotEmpty(nodeDisposeCount)){
|
||||
List<String> processInstanceIdList = nodeDisposeCount.stream()
|
||||
.map(NodeDispose::getProcessInstanceId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 未完成审批数据
|
||||
List<ProcessApprovalRecord> processApprovalRecordList = processApprovalRecordService.list(
|
||||
new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.in(ProcessApprovalRecord::getProcessInstanceId, processInstanceIdList)
|
||||
.eq(ProcessApprovalRecord::getNodeId, ConsultationTaskKey.DEPART_LEADER_START_1)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
|
||||
.isNull(ProcessApprovalRecord::getEndTime));
|
||||
|
||||
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecordList) {
|
||||
num += 1;
|
||||
// 设置网关条件
|
||||
runtimeService.setVariableLocal(processApprovalRecord.getProcessInstanceId(),
|
||||
FbCommon.VARIABLE_PASS_FIRST, "overDue");
|
||||
// 完成任务
|
||||
taskService.complete(processApprovalRecord.getTaskId());
|
||||
}
|
||||
|
||||
// 更新超期标识
|
||||
if (!processApprovalRecordList.isEmpty()){
|
||||
List<String> idList = processApprovalRecordList.stream()
|
||||
.map(ProcessApprovalRecord::getId).collect(Collectors.toList());
|
||||
processApprovalRecordService.update(
|
||||
new LambdaUpdateWrapper<ProcessApprovalRecord>()
|
||||
.in(ProcessApprovalRecord::getId, idList)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
|
||||
.set(ProcessApprovalRecord::getOverDue, YesOrNoEnum.YES.getValue()));
|
||||
}
|
||||
}
|
||||
log.info("征求意见流程-超过征求意见结束日期,各部所主管级领导 部分/全部 未分发时任务结束");
|
||||
log.info("征求意见流程-超过征求意见结束日期, 任务数量{}", num);
|
||||
}
|
||||
}
|
||||
|
||||
+34
-24
@@ -1,11 +1,11 @@
|
||||
package com.jero.modules.activiti.process.fb.job;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey;
|
||||
import com.jero.modules.activiti.process.fb.common.FbCommon;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessFbConsultationListService;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessFbConsultationUserLinkService;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
|
||||
import com.jero.modules.activiti.process.fb.vo.NodeDispose;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
@@ -19,9 +19,7 @@ import org.quartz.JobExecutionException;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -37,10 +35,6 @@ public class ModuleOwnerStartOverDueJob implements Job {
|
||||
@Resource
|
||||
private IProcessFbStandardConsultationService processFbStandardConsultationService;
|
||||
@Resource
|
||||
private IProcessFbConsultationUserLinkService processFbConsultationUserLinkService;
|
||||
@Resource
|
||||
private IProcessFbConsultationListService processFbConsultationListService;
|
||||
@Resource
|
||||
private ProcessApprovalRecordService processApprovalRecordService;
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@@ -48,46 +42,62 @@ public class ModuleOwnerStartOverDueJob implements Job {
|
||||
private RuntimeService runtimeService;
|
||||
|
||||
/**
|
||||
* 征求意见流程-超过征求意见结束日期,模块负责人部分未分发时
|
||||
* 征求意见流程-超过征求意见结束日期,模块负责人未分发时
|
||||
* @param jobExecutionContext
|
||||
* @throws JobExecutionException
|
||||
*/
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
log.info("征求意见流程-超过征求意见结束日期,模块负责人 部分/全部 未分发时任务开始");
|
||||
long num = 0L;
|
||||
// 查询超过征求意见结束日期的模块负责人分发节点情况
|
||||
List<NodeDispose> nodeDisposeCount =
|
||||
processFbStandardConsultationService.findNodeDisposeCount(ConsultationTaskKey.MODULE_OWNER_START);
|
||||
if (CollectionUtils.isNotEmpty(nodeDisposeCount)){
|
||||
// 部分未完成
|
||||
List<NodeDispose> sectorUnFinishedList = nodeDisposeCount.stream()
|
||||
.filter(v -> !v.getUnFinished().equals(v.getCount()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 全部未完成
|
||||
List<NodeDispose> allUnFinishedList = nodeDisposeCount.stream()
|
||||
.filter(v -> v.getUnFinished().equals(v.getCount()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<String> processInstanceIdList = sectorUnFinishedList.stream()
|
||||
/**
|
||||
* // 部分未完成
|
||||
* List<NodeDispose> sectorUnFinishedList = nodeDisposeCount.stream()
|
||||
* .filter(v -> !v.getUnFinished().equals(v.getCount()))
|
||||
* .collect(Collectors.toList());
|
||||
*
|
||||
* // 全部未完成
|
||||
* List<NodeDispose> allUnFinishedList = nodeDisposeCount.stream()
|
||||
* .filter(v -> v.getUnFinished().equals(v.getCount()))
|
||||
* .collect(Collectors.toList());
|
||||
*/
|
||||
List<String> processInstanceIdList = nodeDisposeCount.stream()
|
||||
.map(NodeDispose::getProcessInstanceId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 部分未完成审批数据
|
||||
// 未完成审批数据
|
||||
List<ProcessApprovalRecord> processApprovalRecordList = processApprovalRecordService.list(
|
||||
new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.in(ProcessApprovalRecord::getProcessInstanceId, processInstanceIdList)
|
||||
.eq(ProcessApprovalRecord::getNodeId, ConsultationTaskKey.MODULE_OWNER_START)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
|
||||
.isNull(ProcessApprovalRecord::getEndTime));
|
||||
|
||||
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecordList) {
|
||||
num += 1;
|
||||
// 设置网关条件
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put(FbCommon.VARIABLE_PASS_FIRST, "overDue");
|
||||
runtimeService.setVariablesLocal(processApprovalRecord.getProcessInstanceId(), map);
|
||||
runtimeService.setVariableLocal(processApprovalRecord.getProcessInstanceId(),
|
||||
FbCommon.OVER_DUE, true);
|
||||
// 完成任务
|
||||
taskService.complete(processApprovalRecord.getTaskId());
|
||||
}
|
||||
|
||||
// 更新超期标识
|
||||
if (!processApprovalRecordList.isEmpty()){
|
||||
List<String> idList = processApprovalRecordList.stream()
|
||||
.map(ProcessApprovalRecord::getId).collect(Collectors.toList());
|
||||
processApprovalRecordService.update(
|
||||
new LambdaUpdateWrapper<ProcessApprovalRecord>()
|
||||
.in(ProcessApprovalRecord::getId, idList)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue())
|
||||
.set(ProcessApprovalRecord::getOverDue, YesOrNoEnum.YES.getValue()));
|
||||
}
|
||||
}
|
||||
log.info("征求意见流程-超过征求意见结束日期,模块负责人 部分/全部 未分发时任务结束");
|
||||
log.info("征求意见流程-超过征求意见结束日期, 任务数量{}", num);
|
||||
}
|
||||
}
|
||||
|
||||
+7
-1
@@ -47,7 +47,13 @@ public class TaskListenerService {
|
||||
|
||||
LambdaQueryWrapper<ProcessFbConsultationUserLink> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(ProcessFbConsultationUserLink::getBusinessId, processAll.getProjectId());
|
||||
String userId = CurrentUserUtil.getId();
|
||||
String userId = "";
|
||||
try {
|
||||
userId = CurrentUserUtil.getId();
|
||||
}catch (Exception e){
|
||||
return;
|
||||
}
|
||||
|
||||
ProcessFbConsultationUserLink userLink;
|
||||
switch (taskDefinitionKey) {
|
||||
case ConsultationTaskKey.MODULE_OWNER_START: // 模块负责人分发
|
||||
|
||||
+2
-2
@@ -17,8 +17,8 @@ public interface ProcessFbStandardConsultationMapper extends BaseMapper<ProcessF
|
||||
|
||||
/**
|
||||
* 已超期节点任务处理数量查询
|
||||
* @param nodeId
|
||||
* @param nodeIds
|
||||
* @return
|
||||
*/
|
||||
List<NodeDispose> findNodeDisposeCount(@Param("nodeId") String nodeId);
|
||||
List<NodeDispose> findNodeDisposeCount(@Param("nodeIds") String nodeIds);
|
||||
}
|
||||
|
||||
+4
-1
@@ -25,7 +25,10 @@
|
||||
FROM process_approval_record par
|
||||
LEFT JOIN process_all pa ON par.process_instance_id = pa.process_instance_id
|
||||
LEFT JOIN process_fb_standard_consultation pfsc ON pa.project_id = pfsc.id
|
||||
WHERE node_id = #{nodeId}
|
||||
WHERE node_id IN
|
||||
<foreach collection="nodeIds.split(',')" item="item" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND pfsc.consultation_due_date < DATE_FORMAT(NOW(), '%Y-%m-%d')
|
||||
GROUP BY par.process_instance_id) t
|
||||
where finished <> count
|
||||
|
||||
+12
@@ -72,4 +72,16 @@ public interface IProcessFbStandardConsultationService extends IService<ProcessF
|
||||
* @return
|
||||
*/
|
||||
List<NodeDispose> findNodeDisposeCount(String nodeId);
|
||||
|
||||
/**
|
||||
* 超期判断
|
||||
* @param taskId
|
||||
*/
|
||||
void isOverDue(String taskId);
|
||||
|
||||
/**
|
||||
* 修改标准状态为发布或报批后,征求意见流程的超期待办,流程结束,不进入已办中
|
||||
* @param id
|
||||
*/
|
||||
void endOverDueBackLog(String id);
|
||||
}
|
||||
|
||||
+6
@@ -48,6 +48,12 @@ public interface IProcessHandleService {
|
||||
**/
|
||||
void isMyTask(String taskId);
|
||||
|
||||
/**
|
||||
* 超期判断
|
||||
* @param taskId
|
||||
*/
|
||||
void isOverDue(String taskId);
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/6 14:22
|
||||
|
||||
+77
-7
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.api.dto.message.SendMessageDTO;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.api.vo.SendMessageAPI;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.SnowflakeUtils;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
@@ -14,6 +15,7 @@ import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeLink;
|
||||
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
|
||||
import com.jero.modules.activiti.process.fb.common.ConsultationNodeSort;
|
||||
@@ -31,10 +33,7 @@ import com.jero.modules.activiti.process.fb.service.*;
|
||||
import com.jero.modules.activiti.process.fb.vo.NodeDispose;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessFbStandardConsultationVO;
|
||||
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
|
||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.service.WorkCenterService;
|
||||
import com.jero.modules.activiti.service.*;
|
||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
|
||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||
@@ -94,6 +93,8 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
|
||||
@Resource
|
||||
private ProcessFbStandardConsultationMapper processFbStandardConsultationMapper;
|
||||
@Resource
|
||||
private ProcessAllService processAllService;
|
||||
|
||||
public static final String EXCEPTION = "目前还未开发,请联系管理员";
|
||||
|
||||
@@ -161,6 +162,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
|
||||
BasicTaskInfoDTO taskInfo = processInfoVO.getBasicTaskInfoDTO(); // 任务信息
|
||||
String taskId = taskInfo.getTaskId();
|
||||
isOverDue(taskId);
|
||||
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
processHandleService.isMyTask(taskId); // 判断是否拥有任务处理权
|
||||
@@ -288,6 +290,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
|
||||
BasicTaskInfoDTO taskInfoDTO = processInfoVO.getBasicTaskInfoDTO();
|
||||
String taskId = taskInfoDTO.getTaskId();
|
||||
isOverDue(taskId);
|
||||
|
||||
ProcessFbStandardConsultation processFbStandardConsultation = businessInfoDTO.getProcessFbStandardConsultation();
|
||||
|
||||
@@ -335,6 +338,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
**/
|
||||
@Override
|
||||
public void transfer(String taskId, String toUserId, String projectId) {
|
||||
isOverDue(taskId);
|
||||
processHandleService.transfer(taskId, toUserId);
|
||||
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
@@ -573,8 +577,66 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NodeDispose> findNodeDisposeCount(String nodeId) {
|
||||
return processFbStandardConsultationMapper.findNodeDisposeCount(nodeId);
|
||||
public List<NodeDispose> findNodeDisposeCount(String nodeIds) {
|
||||
return processFbStandardConsultationMapper.findNodeDisposeCount(nodeIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isOverDue(String taskId) {
|
||||
// 判断是否超期数据
|
||||
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(
|
||||
new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.eq(ProcessApprovalRecord::getTaskId, taskId), false);
|
||||
if (!Objects.isNull(processApprovalRecord)
|
||||
&& YesOrNoEnum.YES.getValue().equals(processApprovalRecord.getOverDue())){
|
||||
throw new JeroBootException(ResultCommon.OVER_DUE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endOverDueBackLog(String id) {
|
||||
// 未结束的流程
|
||||
List<ProcessFbStandardConsultation> list = list(new LambdaQueryWrapper<ProcessFbStandardConsultation>()
|
||||
.eq(ProcessFbStandardConsultation::getStandardId, id)
|
||||
.isNull(ProcessFbStandardConsultation::getConsultationEndDate));
|
||||
|
||||
if (!list.isEmpty()){
|
||||
// 超期节点
|
||||
List<String> nodeIdList = Arrays.asList(ConsultationTaskKey.DEPART_LEADER_START_1, ConsultationTaskKey.MODULE_OWNER_START);
|
||||
List<NodeDispose> nodeDisposeCount = findNodeDisposeCount(String.join(",", nodeIdList));
|
||||
|
||||
// 全部未完成
|
||||
List<NodeDispose> allUnFinishedList = nodeDisposeCount.stream()
|
||||
.filter(v -> v.getUnFinished().equals(v.getCount())).collect(Collectors.toList());
|
||||
List<String> processInstanceId = allUnFinishedList.stream()
|
||||
.map(NodeDispose::getProcessInstanceId).collect(Collectors.toList());
|
||||
|
||||
// 查询含有超期的待办
|
||||
List<String> idList = list.stream().map(ProcessFbStandardConsultation::getId).collect(Collectors.toList());
|
||||
List<ProcessApprovalRecord> processApprovalRecords = processApprovalRecordService.list(
|
||||
new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.in(ProcessApprovalRecord::getProjectId, idList)
|
||||
.in(ProcessApprovalRecord::getProcessInstanceId , processInstanceId)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.YES.getValue()));
|
||||
// 结束流程
|
||||
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecords) {
|
||||
runtimeService.deleteProcessInstance(processApprovalRecord.getProcessInstanceId(),"结束流程");
|
||||
//更新流程总表状态
|
||||
processAllService.update(new LambdaUpdateWrapper<ProcessAll>()
|
||||
.eq(ProcessAll::getProjectId, processApprovalRecord.getProjectId())
|
||||
.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue()));
|
||||
}
|
||||
|
||||
if (!processApprovalRecords.isEmpty()){
|
||||
List<String> processApprovalRecordIdList = processApprovalRecords.stream().map(ProcessApprovalRecord::getId).collect(Collectors.toList());
|
||||
//清除超期标识
|
||||
processApprovalRecordService.update(
|
||||
new LambdaUpdateWrapper<ProcessApprovalRecord>()
|
||||
.in(ProcessApprovalRecord::getId, processApprovalRecordIdList)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.YES.getValue())
|
||||
.set(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -591,6 +653,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
processInfoVO.setBusinessId(businessBasicInfo.getId());
|
||||
|
||||
String taskId = taskInfo.getTaskId();
|
||||
isOverDue(taskId);
|
||||
processHandleService.isMyTask(taskId);
|
||||
|
||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||
@@ -662,12 +725,18 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
.set(ProcessFbStandardConsultation::getUpdateTime, date));
|
||||
|
||||
// 发送邮件
|
||||
|
||||
try {
|
||||
sendMessage(businessId);
|
||||
} catch (Exception e) {
|
||||
log.error("邮件发送失败!" + e.getMessage());
|
||||
}
|
||||
|
||||
// 清除超期待办
|
||||
processApprovalRecordService.update(
|
||||
new LambdaUpdateWrapper<ProcessApprovalRecord>()
|
||||
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
|
||||
.eq(ProcessApprovalRecord::getOverDue, YesOrNoEnum.YES.getValue())
|
||||
.set(ProcessApprovalRecord::getOverDue, YesOrNoEnum.NO.getValue()));
|
||||
} else {
|
||||
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
|
||||
log.info("还剩 {} 个任务待完成", taskList.size());
|
||||
@@ -753,6 +822,7 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
|
||||
|
||||
List<String> ids = userLinkList.stream().map(ProcessFbConsultationUserLink::getId).collect(Collectors.toList());
|
||||
String processInstanceId = task.getProcessInstanceId();
|
||||
runtimeService.setVariableLocal(processInstanceId, FbCommon.OVER_DUE, false);
|
||||
runtimeService.setVariableLocal(processInstanceId, FbCommon.VARIABLE_DESIGN_ENGINEER_LIST, ids);
|
||||
saveNodeUserLink(processInstanceId, ConsultationNodeSort.DESIGN_ENGINEER_LIST, designEngineerIdList, taskDefinitionKey);
|
||||
|
||||
|
||||
+14
@@ -3,6 +3,7 @@ package com.jero.modules.activiti.process.fb.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.entity.ProcessAll;
|
||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||
@@ -291,6 +292,18 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
//}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isOverDue(String taskId) {
|
||||
// 判断是否超期数据
|
||||
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(
|
||||
new LambdaQueryWrapper<ProcessApprovalRecord>()
|
||||
.eq(ProcessApprovalRecord::getTaskId, taskId), false);
|
||||
if (!Objects.isNull(processApprovalRecord)
|
||||
&& YesOrNoEnum.YES.getValue().equals(processApprovalRecord.getOverDue())){
|
||||
throw new JeroBootException(ResultCommon.OVER_DUE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/6 14:23
|
||||
@@ -553,6 +566,7 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
|
||||
throw new JeroBootException(ResultCommon.NO_PERMISSION);
|
||||
}
|
||||
if (StringUtils.isNotBlank(taskId)) {
|
||||
isOverDue(taskId);
|
||||
isMyTask(taskId);
|
||||
}
|
||||
|
||||
|
||||
+18
-1
@@ -9,14 +9,15 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.modules.activiti.process.fb.service.IProcessFbStandardConsultationService;
|
||||
import com.jero.modules.laws.common.constant.FieldCommon;
|
||||
import com.jero.common.api.vo.ResultCommon;
|
||||
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
|
||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||
import com.jero.modules.laws.common.util.ImportUtil;
|
||||
@@ -163,6 +164,9 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
@Resource
|
||||
private ILawsEnterpriseStandardService esService;
|
||||
|
||||
@Resource
|
||||
private IProcessFbStandardConsultationService processFbStandardConsultationService;
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/8/23 16:57
|
||||
@@ -772,6 +776,19 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
||||
if (StringUtils.isBlank(standardSystem)) {
|
||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, FieldCommon.STANDARD_SYSTEM);
|
||||
}
|
||||
|
||||
// 标准状态
|
||||
String standardState = (String) parameterMap.get(FieldCommon.STANDARD_STATE);
|
||||
// 报批 或 发布
|
||||
if (standardState.contains("3") || standardState.contains("4")){
|
||||
// 修改标准状态为发布或报批后,征求意见流程的超期待办,流程结束,不进入已办中
|
||||
try {
|
||||
processFbStandardConsultationService.endOverDueBackLog(String.valueOf(parameterMap.get("id")));
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 获取操作模块
|
||||
String module = parameterMap.get(FieldCommon.MODULE).toString();
|
||||
parameterMap.remove(FieldCommon.MODULE);
|
||||
|
||||
@@ -21,6 +21,7 @@ successfully.deleted.in.bulk=successfully deleted in bulk
|
||||
cannot.duplicate.favorites=cannot duplicate favorites
|
||||
please.select.data=please select data
|
||||
no.corresponding.data.found=no corresponding data found
|
||||
over.due=The operation has expired and cannot continue
|
||||
the.toplevel.group.cannot.be.deleted=the toplevel group cannot be deleted
|
||||
please.select.personnel.and.workgroup=please select personnel and workgroup
|
||||
work.no.already.exists=work no already exists
|
||||
|
||||
@@ -22,6 +22,7 @@ successfully.deleted.in.bulk=successfully deleted in bulk
|
||||
cannot.duplicate.favorites=cannot duplicate favorites
|
||||
please.select.data=please select data
|
||||
no.corresponding.data.found=no corresponding data found
|
||||
over.due=The operation has expired and cannot continue
|
||||
the.toplevel.group.cannot.be.deleted=the toplevel group cannot be deleted
|
||||
please.select.personnel.and.workgroup=please select personnel and workgroup
|
||||
work.no.already.exists=work no already exists
|
||||
|
||||
@@ -21,6 +21,7 @@ successfully.deleted.in.bulk=\u6279\u91CF\u5220\u9664\u6210\u529F
|
||||
cannot.duplicate.favorites=\u4E0D\u80FD\u91CD\u590D\u6536\u85CF
|
||||
please.select.data=\u8BF7\u9009\u62E9\u6570\u636E
|
||||
no.corresponding.data.found=\u672A\u627E\u5230\u5BF9\u5E94\u6570\u636E
|
||||
over.due=\u5DF2\u8FC7\u671F\u4E0D\u80FD\u518D\u7EE7\u7EED\u64CD\u4F5C
|
||||
the.toplevel.group.cannot.be.deleted=\u6700\u9AD8\u7EA7\u7EC4\u522B\u4E0D\u80FD\u5220\u9664
|
||||
please.select.personnel.and.workgroup=\u8BF7\u9009\u62E9\u4EBA\u5458\u548C\u5DE5\u4F5C\u7EC4
|
||||
work.no.already.exists=\u5DE5\u53F7\u5DF2\u5B58\u5728
|
||||
|
||||
Reference in New Issue
Block a user