代码开发
This commit is contained in:
parent
cbc94ae552
commit
d68f4eca19
@ -57,6 +57,13 @@ public class BpmProcessInstanceExtDO {
|
||||
* 枚举 {@link cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum}
|
||||
*/
|
||||
private Integer result;
|
||||
|
||||
/**
|
||||
*
|
||||
* 创建时间
|
||||
* */
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
* <p>
|
||||
@ -97,4 +104,6 @@ public class BpmProcessInstanceExtDO {
|
||||
* */
|
||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||
private Map<String, Object> ext;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -3,8 +3,7 @@ package cn.axzo.workflow.core.service;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
|
||||
@ -15,17 +14,20 @@ public interface BpmTaskService {
|
||||
/**
|
||||
* 待审核列表
|
||||
* */
|
||||
BpmPageResult<BpmTaskTodoPageItemVO> getTodoTaskPage(BpmTaskTodoBpmPageDTO taskTodoPageDTO);
|
||||
BpmPageResult<BpmTaskTodoPageItemRespVO> getTodoTaskPage(BpmTaskTodoBpmPageDTO taskTodoPageDTO);
|
||||
|
||||
/**
|
||||
* 已完成的审批列表
|
||||
* */
|
||||
BpmPageResult<BpmTaskDonePageItemVO> getDoneTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD);
|
||||
*
|
||||
* @return*/
|
||||
BpmPageResult<BpmTaskTodoPageItemRespVO> getDoneTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 我发起的审批列表
|
||||
* */
|
||||
BpmPageResult<BpmTaskDonePageItemVO> getOwnTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD);
|
||||
BpmPageResult<BpmTaskTodoPageItemRespVO> getOwnTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD);
|
||||
|
||||
/**
|
||||
* 同意
|
||||
|
||||
@ -1,8 +1,23 @@
|
||||
package cn.axzo.workflow.core.service.converter;
|
||||
|
||||
import cn.axzo.workflow.core.common.utils.BpmCollectionUtils;
|
||||
import cn.axzo.workflow.core.repository.entity.BpmTaskExtDO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemRespVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.flowable.common.engine.impl.db.SuspensionState;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.flowable.task.service.delegate.DelegateTask;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class BpmTaskConvert {
|
||||
|
||||
@ -19,4 +34,105 @@ public class BpmTaskConvert {
|
||||
taskExtDO.setUserName(task.getOwner());
|
||||
return taskExtDO;
|
||||
}
|
||||
|
||||
|
||||
public static List<BpmTaskDonePageItemRespVO> convertList2(List<HistoricTaskInstance> tasks,
|
||||
Map<String, BpmTaskExtDO> bpmTaskExtDOMap,
|
||||
Map<String, HistoricProcessInstance> historicProcessInstanceMap) {
|
||||
return BpmCollectionUtils.convertList(tasks, task -> {
|
||||
BpmTaskDonePageItemRespVO respVO = convert2(task);
|
||||
BpmTaskExtDO taskExtDO = bpmTaskExtDOMap.get(task.getId());
|
||||
BeanUtils.copyProperties(taskExtDO, respVO);
|
||||
HistoricProcessInstance processInstance = historicProcessInstanceMap.get(
|
||||
task.getProcessInstanceId());
|
||||
if (processInstance != null) {
|
||||
String startUserId = processInstance.getStartUserId();
|
||||
Long startWorkspaceId = null;
|
||||
Long startIdentityId = null;
|
||||
if (StringUtils.isNotBlank(startUserId)) {
|
||||
String[] s = startUserId.split("_");
|
||||
startWorkspaceId = Long.valueOf(s[0]);
|
||||
startIdentityId = Long.valueOf(s[1]);
|
||||
}
|
||||
|
||||
//convert
|
||||
BpmTaskTodoPageItemRespVO.ProcessInstance processInstance1 = new BpmTaskTodoPageItemRespVO.ProcessInstance();
|
||||
processInstance1.setId(processInstance.getId());
|
||||
processInstance1.setName(processInstance.getName());
|
||||
processInstance1.setProcessDefinitionId(processInstance.getProcessDefinitionId());
|
||||
processInstance1.setStartWorkspaceId(startWorkspaceId);
|
||||
processInstance1.setStartIdentityId(startIdentityId);
|
||||
respVO.setProcessInstance(processInstance1);
|
||||
}
|
||||
return respVO;
|
||||
});
|
||||
}
|
||||
|
||||
public static BpmTaskDonePageItemRespVO convert2(HistoricTaskInstance bean) {
|
||||
if ( bean == null ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
BpmTaskDonePageItemRespVO bpmTaskDonePageItemRespVO = new BpmTaskDonePageItemRespVO();
|
||||
|
||||
bpmTaskDonePageItemRespVO.setId( bean.getId() );
|
||||
bpmTaskDonePageItemRespVO.setName( bean.getName() );
|
||||
bpmTaskDonePageItemRespVO.setClaimTime( bean.getClaimTime() );
|
||||
bpmTaskDonePageItemRespVO.setCreateTime( bean.getCreateTime() );
|
||||
bpmTaskDonePageItemRespVO.setEndTime( bean.getEndTime() );
|
||||
bpmTaskDonePageItemRespVO.setDurationInMillis( bean.getDurationInMillis() );
|
||||
|
||||
return bpmTaskDonePageItemRespVO;
|
||||
}
|
||||
|
||||
BpmTaskConvert INSTANCE = Mappers.getMapper(BpmTaskConvert.class);
|
||||
|
||||
public static List<BpmTaskTodoPageItemRespVO> convertList1(List<Task> tasks,
|
||||
Map<String, ProcessInstance> processInstanceMap) {
|
||||
return BpmCollectionUtils.convertList(tasks, task -> {
|
||||
BpmTaskTodoPageItemRespVO respVO = convert1(task);
|
||||
ProcessInstance processInstance = processInstanceMap.get(task.getProcessInstanceId());
|
||||
if (processInstance != null) {
|
||||
String startUserId = processInstance.getStartUserId();
|
||||
Long startIdentityId = null;
|
||||
if (StringUtils.isNotBlank(startUserId)) {
|
||||
String[] s = startUserId.split("_");
|
||||
startIdentityId = Long.valueOf(s[1]);
|
||||
}
|
||||
|
||||
//convert
|
||||
BpmTaskTodoPageItemRespVO.ProcessInstance processInstance1 = new BpmTaskTodoPageItemRespVO.ProcessInstance();
|
||||
processInstance1.setId(processInstance.getId());
|
||||
processInstance1.setName(
|
||||
StrUtil.isBlank(processInstance.getName()) ? processInstance.getProcessDefinitionName()
|
||||
: processInstance.getName());
|
||||
processInstance1.setProcessDefinitionId(processInstance.getProcessDefinitionId());
|
||||
processInstance1.setStartIdentityId(startIdentityId);
|
||||
respVO.setProcessInstance(processInstance1);
|
||||
}
|
||||
return respVO;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public static BpmTaskTodoPageItemRespVO convert1(Task bean) {
|
||||
if ( bean == null ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
BpmTaskTodoPageItemRespVO bpmTaskTodoPageItemRespVO = new BpmTaskTodoPageItemRespVO();
|
||||
|
||||
bpmTaskTodoPageItemRespVO.setSuspensionState( convertSuspendedToSuspensionState( bean.isSuspended() ) );
|
||||
bpmTaskTodoPageItemRespVO.setId( bean.getId() );
|
||||
bpmTaskTodoPageItemRespVO.setName( bean.getName() );
|
||||
bpmTaskTodoPageItemRespVO.setClaimTime( bean.getClaimTime() );
|
||||
bpmTaskTodoPageItemRespVO.setCreateTime( bean.getCreateTime() );
|
||||
|
||||
return bpmTaskTodoPageItemRespVO;
|
||||
}
|
||||
|
||||
public static Integer convertSuspendedToSuspensionState(boolean suspended) {
|
||||
return suspended ? SuspensionState.SUSPENDED.getStateCode() :
|
||||
SuspensionState.ACTIVE.getStateCode();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,23 +1,36 @@
|
||||
package cn.axzo.workflow.core.service.dto.request.task;
|
||||
|
||||
import cn.axzo.workflow.core.service.dto.request.BpmPageParam;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class BpmTaskTodoBpmPageDTO extends BpmPageParam {
|
||||
|
||||
/**
|
||||
* 用户ID,唯一标识
|
||||
* */
|
||||
String userId;
|
||||
@ApiModelProperty(value = "用户ID,唯一标识", example = "1")
|
||||
private String userId;
|
||||
|
||||
@ApiModelProperty(value = "租户Id", example = "1")
|
||||
private String tenantId;
|
||||
|
||||
/**
|
||||
* 租户Id
|
||||
* */
|
||||
String tenantId;
|
||||
@ApiModelProperty(value = "审核单类型,多选就'逗号'分隔", example = "1")
|
||||
private String category;
|
||||
|
||||
@ApiModelProperty(value = "流程任务名", example = "芋道")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "开始的创建收间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date beginCreateTime;
|
||||
|
||||
@ApiModelProperty(value = "结束的创建时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endCreateTime;
|
||||
}
|
||||
|
||||
@ -1,10 +1,18 @@
|
||||
package cn.axzo.workflow.core.service.dto.response.task;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class BpmTaskDonePageItemVO extends BpmTaskTodoPageItemVO{
|
||||
@ApiModel("管理后台 - 流程任务的 Done 已完成的分页项 Response VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class BpmTaskDonePageItemRespVO extends BpmTaskTodoPageItemRespVO{
|
||||
|
||||
@ApiModelProperty(value = "结束时间", required = true)
|
||||
private Date endTime;
|
||||
@ -0,0 +1,234 @@
|
||||
package cn.axzo.workflow.core.service.dto.response.task;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@ApiModel("管理后台 - 流程任务的 Running 进行中的分页项 Response VO")
|
||||
public class BpmTaskTodoPageItemRespVO {
|
||||
|
||||
@ApiModelProperty(value = "任务编号", required = true, example = "1024")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "任务名字", required = true, example = "芋道")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "接收时间", required = true)
|
||||
private Date claimTime;
|
||||
|
||||
@ApiModelProperty(value = "创建时间", required = true)
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "激活状态", required = true, example = "1", notes = "参见 SuspensionState 枚举")
|
||||
private Integer suspensionState;
|
||||
|
||||
/**
|
||||
* 所属流程实例
|
||||
*/
|
||||
private ProcessInstance processInstance;
|
||||
|
||||
@ApiModel("流程实例")
|
||||
public static class ProcessInstance {
|
||||
|
||||
@ApiModelProperty(value = "审核单号", required = true, example = "20220622153500001")
|
||||
private String customProInstId;
|
||||
|
||||
@ApiModelProperty(value = "流程实例编号", required = true, example = "1024")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "流程实例名称", required = true, example = "芋道")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "流程定义的编号", required = true, example = "2048")
|
||||
private String processDefinitionId;
|
||||
|
||||
@ApiModelProperty(value = "审核单类型", example = "1")
|
||||
private String category;
|
||||
|
||||
@ApiModelProperty(value = "(企业/项目)工作台ID", required = true, example = "1")
|
||||
private Long startWorkspaceId;
|
||||
|
||||
@ApiModelProperty(value = "发起人所在项目部下的具体企业ID", example = "1")
|
||||
private Long startCompanyId;
|
||||
|
||||
@ApiModelProperty(value = "发起流程的安心筑用户身份id", required = true, example = "1")
|
||||
private Long startIdentityId;
|
||||
|
||||
@ApiModelProperty(value = "发起流程的安心筑用户姓名", required = true, example = "axzo")
|
||||
private String startUserName;
|
||||
|
||||
@ApiModelProperty(value = "流程的发起时间")
|
||||
private Date startTime;
|
||||
|
||||
@ApiModelProperty(value = "流程的结束时间")
|
||||
private Date endTime;
|
||||
|
||||
public Date getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(Date startTime) {
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public Date getEndTime() {
|
||||
return endTime;
|
||||
}
|
||||
|
||||
public void setEndTime(Date endTime) {
|
||||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
public String getCustomProInstId() {
|
||||
return customProInstId;
|
||||
}
|
||||
|
||||
public void setCustomProInstId(String customProInstId) {
|
||||
this.customProInstId = customProInstId;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getProcessDefinitionId() {
|
||||
return processDefinitionId;
|
||||
}
|
||||
|
||||
public void setProcessDefinitionId(String processDefinitionId) {
|
||||
this.processDefinitionId = processDefinitionId;
|
||||
}
|
||||
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
public void setCategory(String category) {
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
public Long getStartWorkspaceId() {
|
||||
return startWorkspaceId;
|
||||
}
|
||||
|
||||
public void setStartWorkspaceId(Long startWorkspaceId) {
|
||||
this.startWorkspaceId = startWorkspaceId;
|
||||
}
|
||||
|
||||
public Long getStartCompanyId() {
|
||||
return startCompanyId;
|
||||
}
|
||||
|
||||
public void setStartCompanyId(Long startCompanyId) {
|
||||
this.startCompanyId = startCompanyId;
|
||||
}
|
||||
|
||||
public Long getStartIdentityId() {
|
||||
return startIdentityId;
|
||||
}
|
||||
|
||||
public void setStartIdentityId(Long startIdentityId) {
|
||||
this.startIdentityId = startIdentityId;
|
||||
}
|
||||
|
||||
public String getStartUserName() {
|
||||
return startUserName;
|
||||
}
|
||||
|
||||
public void setStartUserName(String startUserName) {
|
||||
this.startUserName = startUserName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProcessInstance{" +
|
||||
"customProInstId='" + customProInstId + '\'' +
|
||||
", id='" + id + '\'' +
|
||||
", name='" + name + '\'' +
|
||||
", processDefinitionId='" + processDefinitionId + '\'' +
|
||||
", category='" + category + '\'' +
|
||||
", startWorkspaceId=" + startWorkspaceId +
|
||||
", startCompanyId=" + startCompanyId +
|
||||
", startIdentityId=" + startIdentityId +
|
||||
", startUserName='" + startUserName + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Date getClaimTime() {
|
||||
return claimTime;
|
||||
}
|
||||
|
||||
public void setClaimTime(Date claimTime) {
|
||||
this.claimTime = claimTime;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public Integer getSuspensionState() {
|
||||
return suspensionState;
|
||||
}
|
||||
|
||||
public void setSuspensionState(Integer suspensionState) {
|
||||
this.suspensionState = suspensionState;
|
||||
}
|
||||
|
||||
public ProcessInstance getProcessInstance() {
|
||||
return processInstance;
|
||||
}
|
||||
|
||||
public void setProcessInstance(
|
||||
ProcessInstance processInstance) {
|
||||
this.processInstance = processInstance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "BpmTaskTodoPageItemRespVO{" +
|
||||
"id='" + id + '\'' +
|
||||
", name='" + name + '\'' +
|
||||
", claimTime=" + claimTime +
|
||||
", createTime=" + createTime +
|
||||
", suspensionState=" + suspensionState +
|
||||
", processInstance=" + processInstance +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,35 +0,0 @@
|
||||
package cn.axzo.workflow.core.service.dto.response.task;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class BpmTaskTodoPageItemVO {
|
||||
|
||||
@ApiModelProperty(value = "流程实例编号", required = true, example = "1024")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "流程实例名称", required = true, example = "芋道")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "流程定义的编号", required = true, example = "2048")
|
||||
private String processDefinitionId;
|
||||
|
||||
@ApiModelProperty(value = "审核单类型", example = "1")
|
||||
private String category;
|
||||
|
||||
@ApiModelProperty(value = "发起流程的安心筑用户身份id", required = true, example = "1")
|
||||
private Long startUserId;
|
||||
|
||||
@ApiModelProperty(value = "发起流程的安心筑用户姓名", required = true, example = "axzo")
|
||||
private String startUserName;
|
||||
|
||||
@ApiModelProperty(value = "流程的发起时间")
|
||||
private Date startTime;
|
||||
|
||||
// 审核状态 1.审核中 2.已通过 3.已驳回 4.已撤销
|
||||
private Integer status;
|
||||
|
||||
}
|
||||
@ -4,6 +4,7 @@ import cn.axzo.workflow.core.common.enums.BpmProcessInstanceDeleteReasonEnum;
|
||||
import cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.core.common.enums.BpmProcessInstanceStatusEnum;
|
||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.common.utils.BpmCollectionUtils;
|
||||
import cn.axzo.workflow.core.repository.entity.BpmProcessDefinitionExtDO;
|
||||
import cn.axzo.workflow.core.repository.entity.BpmProcessInstanceExtDO;
|
||||
import cn.axzo.workflow.core.repository.mapper.BpmProcessInstanceExtMapper;
|
||||
@ -19,6 +20,7 @@ import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.flowable.common.engine.impl.identity.Authentication;
|
||||
import org.flowable.engine.*;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
@ -206,4 +208,15 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||
log.info("当前线程: {}", Thread.currentThread().getName());
|
||||
runtimeService.deleteProcessInstance(id, reason);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得流程实例 Map
|
||||
*
|
||||
* @param ids 流程实例的编号集合
|
||||
* @return 流程实例列表 Map
|
||||
*/
|
||||
public Map<String, ProcessInstance> getProcessInstanceMap(Set<String> ids) {
|
||||
return BpmCollectionUtils.convertMap(getProcessInstances(ids),
|
||||
ProcessInstance::getProcessInstanceId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,18 +4,21 @@ import cn.axzo.workflow.core.common.BpmConstants;
|
||||
import cn.axzo.workflow.core.common.enums.BpmProcessInstanceDeleteReasonEnum;
|
||||
import cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.common.utils.BpmCollectionUtils;
|
||||
import cn.axzo.workflow.core.repository.entity.BpmProcessInstanceExtDO;
|
||||
import cn.axzo.workflow.core.repository.entity.BpmTaskExtDO;
|
||||
import cn.axzo.workflow.core.repository.mapper.BpmProcessInstanceExtMapper;
|
||||
import cn.axzo.workflow.core.repository.mapper.BpmTaskExtMapper;
|
||||
import cn.axzo.workflow.core.service.BpmProcessInstanceService;
|
||||
import cn.axzo.workflow.core.service.BpmTaskService;
|
||||
import cn.axzo.workflow.core.service.converter.BpmTaskConvert;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO;
|
||||
import cn.azxo.framework.common.utils.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.engine.HistoryService;
|
||||
import org.flowable.engine.RepositoryService;
|
||||
@ -33,9 +36,12 @@ import org.springframework.transaction.support.TransactionSynchronizationManager
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.core.common.BpmConstants.*;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.*;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertSet;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@ -53,19 +59,75 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
private BpmProcessInstanceServiceImpl processInstanceService;
|
||||
@Resource
|
||||
private BpmTaskExtMapper taskExtMapper;
|
||||
@Resource
|
||||
private BpmProcessInstanceExtMapper bpmProcessInstanceExtMapper;
|
||||
|
||||
@Override
|
||||
public BpmPageResult<BpmTaskTodoPageItemVO> getTodoTaskPage(BpmTaskTodoBpmPageDTO taskTodoPageDTO) {
|
||||
public BpmPageResult<BpmTaskTodoPageItemRespVO> getTodoTaskPage(BpmTaskTodoBpmPageDTO taskTodoPageDTO) {
|
||||
BpmProcessInstanceExtDO one = null;
|
||||
|
||||
// 查询待办任务
|
||||
TaskQuery taskQuery = taskService.createTaskQuery()
|
||||
.taskAssignee(taskTodoPageDTO.getUserId()) // 分配给自己
|
||||
.orderByTaskCreateTime().desc(); // 创建时间倒序
|
||||
if (org.springframework.util.StringUtils.hasLength(taskTodoPageDTO.getCategory())) {
|
||||
List<String> categorys = Arrays.stream(taskTodoPageDTO.getCategory().split(","))
|
||||
.map(String::trim).collect(Collectors.toList());
|
||||
taskQuery.processCategoryIn(categorys);
|
||||
}
|
||||
if (StrUtil.isNotBlank(taskTodoPageDTO.getName())) {
|
||||
taskQuery.taskNameLike("%" + taskTodoPageDTO.getName() + "%");
|
||||
}
|
||||
if (taskTodoPageDTO.getBeginCreateTime() != null) {
|
||||
taskQuery.taskCreatedAfter(taskTodoPageDTO.getBeginCreateTime());
|
||||
}
|
||||
if (taskTodoPageDTO.getEndCreateTime() != null) {
|
||||
taskQuery.taskCreatedBefore(taskTodoPageDTO.getEndCreateTime());
|
||||
}
|
||||
if (Objects.nonNull(one)) {
|
||||
taskQuery.processInstanceId(one.getProcessInstanceId());
|
||||
}
|
||||
// 执行查询
|
||||
|
||||
List<Task> tasks = taskQuery.listPage((taskTodoPageDTO.getPageNo() - 1) * taskTodoPageDTO.getPageSize(), taskTodoPageDTO.getPageSize());
|
||||
if (CollUtil.isEmpty(tasks)) {
|
||||
BpmPageResult pageResult = new BpmPageResult(taskQuery.count());
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
Set<String> processInstanceIds = convertSet(tasks, Task::getProcessInstanceId);
|
||||
// 获得 ProcessInstance Map
|
||||
Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap(
|
||||
processInstanceIds);
|
||||
// 拼接结果
|
||||
List<BpmTaskTodoPageItemRespVO> bpmTaskTodoPageItemRespVOS = BpmTaskConvert.convertList1(
|
||||
tasks, processInstanceMap);
|
||||
|
||||
Map<String, BpmProcessInstanceExtDO> instanceExtMap = BpmCollectionUtils.convertMap(
|
||||
bpmProcessInstanceExtMapper.selectList(
|
||||
new LambdaQueryWrapper<BpmProcessInstanceExtDO>().in(
|
||||
BpmProcessInstanceExtDO::getProcessInstanceId, processInstanceIds)),
|
||||
BpmProcessInstanceExtDO::getProcessInstanceId, Function.identity(), (s, t) -> s);
|
||||
|
||||
// 设置发起人姓名
|
||||
bpmTaskTodoPageItemRespVOS.forEach(vo -> {
|
||||
BpmTaskTodoPageItemRespVO.ProcessInstance processInstance = vo.getProcessInstance();
|
||||
BpmProcessInstanceExtDO instanceExtDO = instanceExtMap.get(processInstance.getId());
|
||||
processInstance.setCustomProInstId(instanceExtDO.getCustomProInstId());
|
||||
processInstance.setCategory(instanceExtDO.getCategory());
|
||||
processInstance.setStartUserName(instanceExtDO.getStartUserName());
|
||||
processInstance.setStartTime(instanceExtDO.getCreateTime());
|
||||
});
|
||||
return new BpmPageResult<>(bpmTaskTodoPageItemRespVOS, taskQuery.count());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BpmPageResult<BpmTaskTodoPageItemRespVO> getDoneTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BpmPageResult<BpmTaskDonePageItemVO> getDoneTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BpmPageResult<BpmTaskDonePageItemVO> getOwnTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD) {
|
||||
public BpmPageResult<BpmTaskTodoPageItemRespVO> getOwnTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -4,8 +4,6 @@ import cn.axzo.workflow.core.service.BpmTaskService;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.process.BpmProcessInstanceVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemVO;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -39,9 +37,9 @@ public class BpmTaskController {
|
||||
* 已完成的审批列表
|
||||
* */
|
||||
@GetMapping("/getDoneTaskPage")
|
||||
public CommonResponse<BpmPageResult<BpmTaskDonePageItemVO>> getDoneTaskPage(@RequestBody BpmTaskTodoBpmPageDTO dto) {
|
||||
public CommonResponse<BpmPageResult<BpmTaskTodoPageItemRespVO>> getDoneTaskPage(@RequestBody BpmTaskTodoBpmPageDTO dto) {
|
||||
log.info("已完成的审批列表 getDoneTaskPage===>>>参数:{}", dto);
|
||||
BpmPageResult<BpmTaskDonePageItemVO> result=bpmTaskService.getDoneTaskPage(dto);
|
||||
BpmPageResult<BpmTaskTodoPageItemRespVO> result=bpmTaskService.getDoneTaskPage(dto);
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
|
||||
@ -50,9 +48,9 @@ public class BpmTaskController {
|
||||
* 我发起的审批列表
|
||||
* */
|
||||
@GetMapping("/getOwnTaskPage")
|
||||
public CommonResponse<BpmPageResult<BpmTaskDonePageItemVO>> getOwnTaskPage(@RequestBody BpmTaskTodoBpmPageDTO dto) {
|
||||
public CommonResponse<BpmPageResult<BpmTaskTodoPageItemRespVO>> getOwnTaskPage(@RequestBody BpmTaskTodoBpmPageDTO dto) {
|
||||
log.info("我发起的审批列表 getOwnTaskPage===>>>参数:{}", dto);
|
||||
BpmPageResult<BpmTaskDonePageItemVO> result=bpmTaskService.getOwnTaskPage(dto);
|
||||
BpmPageResult<BpmTaskTodoPageItemRespVO> result=bpmTaskService.getOwnTaskPage(dto);
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user