fix(征求意见流程): 临时提交

This commit is contained in:
yjz
2024-01-31 14:16:59 +08:00
parent 60c31739a2
commit 58a8665d31
8 changed files with 180 additions and 9 deletions
@@ -0,0 +1,11 @@
package com.jero.modules.activiti.process.fb.job;
/**
* @ClassName: DesignEngineerOverDueJob3
* @Description:
* @Author: yjz
* @Date: 2024-01-31 10:59
* @Version: 1.0
**/
public class DepartLeaderStartOverDueJob {
}
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
public class OverDueJob implements Job {
public class DesignEngineerOverDueJob implements Job {
@Resource
private IProcessFbStandardConsultationService processFbStandardConsultationService;
@Resource
@@ -48,17 +48,13 @@ public class OverDueJob implements Job {
private TaskService taskService;
/**
* 征求意见流程-超过征求意见结束日期存在设计师未提交意见时应该汇总生成一条待办给下一节点
* 征求意见流程-超过征求意见结束日期存在设计师未提交意见时直接流转到下一节点任务
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,应该汇总生成一条待办给下一节点定时任务开始");
log.info("征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,直接流转到下一节点任务开始");
// 查询所有未完成的 设计工程师填写征求意见 节点
List<String> designEngineerNodeList = Arrays.asList(ConsultationTaskKey.DESIGN_ENGINEER_1,
ConsultationTaskKey.DESIGN_ENGINEER_2);
@@ -112,6 +108,6 @@ public class OverDueJob implements Job {
}
}
}
log.info("征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,应该汇总生成一条待办给下一节点定时任务结束");
log.info("征求意见流程-超过征求意见结束日期,存在设计师未提交意见时,直接流转到下一节点任务开始");
}
}
@@ -0,0 +1,93 @@
package com.jero.modules.activiti.process.fb.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName: DesignEngineerOverDueJob2
* @Description:
* @Author: yjz
* @Date: 2024-01-31 10:59
* @Version: 1.0
**/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
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;
@Resource
private RuntimeService runtimeService;
/**
* 征求意见流程-超过征求意见结束日期,模块负责人部分未分发时
* @param jobExecutionContext
* @throws JobExecutionException
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("征求意见流程-超过征求意见结束日期,模块负责人 部分/全部 未分发时任务开始");
// 查询超过征求意见结束日期的模块负责人分发节点情况
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()
.map(NodeDispose::getProcessInstanceId)
.collect(Collectors.toList());
// 部分未完成审批数据
List<ProcessApprovalRecord> processApprovalRecordList = processApprovalRecordService.list(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.in(ProcessApprovalRecord::getProcessInstanceId, processInstanceIdList)
.isNull(ProcessApprovalRecord::getEndTime));
for (ProcessApprovalRecord processApprovalRecord : processApprovalRecordList) {
// 设置网关条件
Map<String, Object> map = new HashMap<>();
map.put(FbCommon.VARIABLE_PASS_FIRST, "overDue");
runtimeService.setVariablesLocal(processApprovalRecord.getProcessInstanceId(), map);
// 完成任务
taskService.complete(processApprovalRecord.getTaskId());
}
}
log.info("征求意见流程-超过征求意见结束日期,模块负责人 部分/全部 未分发时任务结束");
}
}
@@ -2,6 +2,10 @@ package com.jero.modules.activiti.process.fb.mapper;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.activiti.process.fb.vo.NodeDispose;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 标准征求意见流程表
@@ -11,4 +15,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface ProcessFbStandardConsultationMapper extends BaseMapper<ProcessFbStandardConsultation> {
/**
* 已超期节点任务处理数量查询
* @param nodeId
* @return
*/
List<NodeDispose> findNodeDisposeCount(@Param("nodeId") String nodeId);
}
@@ -15,4 +15,19 @@
<result column="related_file" property="relatedFile" />
<result column="consultation_due_date" property="consultationDueDate" />
</resultMap>
<select id="findNodeDisposeCount" resultType="com.jero.modules.activiti.process.fb.vo.NodeDispose">
SELECT * FROM (
SELECT COUNT(*) count,
SUM(IF(par.end_time IS NULL, 1, 0)) unFinished,
SUM(IF(par.end_time IS NOT NULL, 1, 0)) finished,
par.process_instance_id
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}
AND pfsc.consultation_due_date &lt; DATE_FORMAT(NOW(), '%Y-%m-%d')
GROUP BY par.process_instance_id) t
where finished &lt;&gt; count
</select>
</mapper>
@@ -1,8 +1,9 @@
package com.jero.modules.activiti.process.fb.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.fb.entity.ProcessFbConsultationUserLink;
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation;
import com.baomidou.mybatisplus.extension.service.IService;
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;
@@ -64,4 +65,11 @@ public interface IProcessFbStandardConsultationService extends IService<ProcessF
* @Description: 根据任务id和业务id查询关联表集合
**/
List<ProcessFbConsultationUserLink> listByTaskIdAndBusinessId(String taskId, String businessId);
/**
* 已超期节点任务处理数量查询
* @param nodeId
* @return
*/
List<NodeDispose> findNodeDisposeCount(String nodeId);
}
@@ -28,6 +28,7 @@ import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardConsultation
import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardPurchase;
import com.jero.modules.activiti.process.fb.mapper.ProcessFbStandardConsultationMapper;
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;
@@ -90,6 +91,9 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
@Resource
private ProcessDraftService processDraftService;
@Resource
private ProcessFbStandardConsultationMapper processFbStandardConsultationMapper;
public static final String EXCEPTION = "目前还未开发,请联系管理员";
@@ -568,6 +572,11 @@ public class ProcessFbStandardConsultationServiceImpl extends ServiceImpl<Proces
return processFbConsultationUserLinkService.list(queryWrapper);
}
@Override
public List<NodeDispose> findNodeDisposeCount(String nodeId) {
return processFbStandardConsultationMapper.findNodeDisposeCount(nodeId);
}
/**
* @Author: liao
* @Date: 2023/11/13 16:00
@@ -0,0 +1,29 @@
package com.jero.modules.activiti.process.fb.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @ClassName: NodeDispose
* @Description:
* @Author: yjz
* @Date: 2024-01-31 11:06
* @Version: 1.0
**/
@Data
public class NodeDispose implements Serializable {
/**总数*/
@ApiModelProperty(value = "总数")
private Long count;
/**未完成数量*/
@ApiModelProperty(value = "未完成数量")
private Long unFinished;
/**已完成数量*/
@ApiModelProperty(value = "已完成数量")
private Long finished;
/**流程实例id*/
@ApiModelProperty(value = "流程实例id")
private String processInstanceId;
}