fix 81039 工作中心-流程中心-草稿:按创建时间排序无效

This commit is contained in:
lijiarao
2024-01-26 15:12:01 +08:00
parent f3c7849ea1
commit df53fedd30
4 changed files with 36 additions and 77 deletions
@@ -1,17 +1,20 @@
package com.jero.modules.activiti.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.process.common.common.DraftCommon;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
@@ -19,6 +22,7 @@ import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.vo.DelegateTaskParam;
import com.jero.modules.activiti.vo.ResolveTaskParam;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -30,6 +34,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import java.util.Objects;
/**
* @author liJiaRao
@@ -118,8 +123,10 @@ public class WorkCenterController {
@ApiOperation(value = "查询流程审批记录")
@GetMapping("/getApprovalRecordList")
public Result<?> getApprovalRecordList(ProcessApprovalRecord processApprovalRecord,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
Page<ProcessApprovalRecord> page = new Page<>(1, Integer.MAX_VALUE);
Page<ProcessApprovalRecord> page = new Page<>(pageNo, pageSize);
Page<ProcessApprovalRecord> pageList;
try {
pageList = processApprovalRecordService.pageList(page, processApprovalRecord, req);
@@ -135,15 +142,28 @@ public class WorkCenterController {
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProcessDraft> queryWrapper = new QueryWrapper<>();
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String userId = loginUser.getId();
queryWrapper.eq("create_by",userId);
Integer prcType = processDraft.getPrcType();
queryWrapper.eq(prcType != null, "prc_type", prcType);
LambdaQueryWrapper<ProcessDraft> queryWrapper = QueryGenerator.initQueryWrapper(processDraft,req.getParameterMap()).lambda();
queryWrapper.eq(ProcessDraft::getUserId, CurrentUserUtil.getId());
queryWrapper.isNull(ProcessDraft::getTaskId);
queryWrapper.and(a -> {
a.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE)
.or()
.isNull(ProcessDraft::getSaveSource);
});
//queryWrapper.eq(!Objects.isNull(processDraft.getPrcType()), ProcessDraft::getPrcType, processDraft.getPrcType());
Page<ProcessDraft> page = new Page<>(pageNo, pageSize);
IPage<ProcessDraft> sentList = processDraftService.page(page, queryWrapper);
sentList.getRecords().forEach(item -> {
String taskId = item.getTaskId();
if (StringUtils.isBlank(taskId)){
return;
}
ProcessApprovalRecord record = processApprovalRecordService.getToDoByTaskId(taskId);
if (record != null) {
item.setNodeId(record.getNodeId());
item.setNodeName(record.getTaskName());
}
});
return Result.OK(sentList);
}
@@ -52,7 +52,10 @@
</select>
<select id="getAllList" resultType="com.jero.modules.activiti.entity.ProcessAll">
select p.*, group_concat(par.user_id) as handleUserId
select p.*, case
when p.prc_status = 1 then group_concat(par.user_id)
when p.prc_status = 3 then group_concat(par2.user_id)
end as handleUserId
from (
select pa.*, max(par.create_time) as receivedTaskTime, max(par.end_time) as completedTaskTime, par.node_id
from process_all pa
@@ -62,6 +65,9 @@
LEFT JOIN (
SELECT user_id,process_instance_id from process_approval_record WHERE finish_flag = 1
) par ON p.process_instance_id = par.process_instance_id
LEFT JOIN (
SELECT user_id,process_instance_id from process_approval_record WHERE finish_flag = 4
) par2 ON p.process_instance_id = par2.process_instance_id
group by p.process_instance_id
<include refid="order"/>
</select>
@@ -30,6 +30,7 @@ import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.springframework.web.bind.annotation.GetMapping;
@@ -82,54 +83,4 @@ public class ProcessFbInfoController {
return Result.OK(processNodeList);
}
@ApiOperation(value = "查询草稿")
@GetMapping("/getDraftList")
public Result<IPage<ProcessDraft>> getDraftList(ProcessDraft processDraft,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
LambdaQueryWrapper<ProcessDraft> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessDraft::getUserId, CurrentUserUtil.getId());
queryWrapper.isNull(ProcessDraft::getTaskId);
queryWrapper.and(a -> {
a.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE)
.or()
.isNull(ProcessDraft::getSaveSource);
});
queryWrapper.eq(!Objects.isNull(processDraft.getPrcType()), ProcessDraft::getPrcType, processDraft.getPrcType());
Page<ProcessDraft> page = new Page<>(pageNo, pageSize);
IPage<ProcessDraft> sentList = processDraftService.page(page, queryWrapper);
sentList.getRecords().forEach(item -> {
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(item.getTaskId());
if (record != null) {
item.setNodeId(record.getNodeId());
item.setNodeName(record.getTaskName());
}
});
return Result.OK(sentList);
}
@ApiOperation(value = "测试")
@GetMapping("/test")
public Result<T> test() {
String processInstanceId = "20231117135055516";
// 查询正在执行的多实例子流程的执行实例列表
List<Execution> executions = runtimeService.createExecutionQuery()
.processInstanceId(processInstanceId)
.activityId("depart_leader_start_1") // 指定多实例活动的ID
.list();
// 遍历执行实例列表
System.out.println("processInstanceId: " + processInstanceId);
for (Execution execution : executions) {
// 获取执行实例的ID,即每个实例的唯一标识
System.out.println("Id: " + execution.getId());
System.out.println("SuperExecutionId: " + execution.getSuperExecutionId());
System.out.println("ParentId: " + execution.getParentId());
System.out.println("RootProcessInstanceId: " + execution.getRootProcessInstanceId());
System.out.println("ProcessInstanceId: " + execution.getProcessInstanceId());
// 执行其他逻辑,例如查询与该实例相关的任务等
}
return Result.OK();
}
}
@@ -159,24 +159,6 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
.eq(ProcessAll::getId, processAll.getId())
.set(ProcessAll::getPrcStatus, ProcessStatusEnum.WITHDRAWN.getValue()));
// 更新最后一条待办人员为流程发起人
WorkCenterController workCenterController = SpringContextUtil.getBean(WorkCenterController.class);
ProcessApprovalRecord processApprovalRecord1 = new ProcessApprovalRecord();
processApprovalRecord1.setProcessInstanceId(processInstanceId);
Result<?> approvalRecordList = workCenterController.getApprovalRecordList(processApprovalRecord1, null);
if (!Objects.isNull(approvalRecordList.getResult())){
Page<ProcessApprovalRecord> pageList = (Page<ProcessApprovalRecord>) approvalRecordList.getResult();
if (CollectionUtils.isNotEmpty(pageList.getRecords())){
List<ProcessApprovalRecord> processApprovalRecords = JSON.parseArray(JSON.toJSONString(pageList.getRecords()), ProcessApprovalRecord.class);
if (CollectionUtils.isNotEmpty(processApprovalRecords)){
approvalRecordService.update(
new LambdaUpdateWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getId, processApprovalRecords.get(0).getId())
.set(ProcessApprovalRecord::getUserId, processApprovalRecords.get(processApprovalRecords.size() - 1).getOriginUserId()));
}
}
}
//新增撤销审批记录
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
ProcessApprovalRecord processApprovalRecord = new ProcessApprovalRecord();