add 添加任务作废
update 调整监听
This commit is contained in:
parent
cc2e306620
commit
91cc65890c
@ -2,6 +2,9 @@ package org.dromara.workflow.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
@ -9,6 +12,7 @@ import org.dromara.warm.flow.core.entity.Instance;
|
||||
import org.dromara.warm.flow.core.service.InsService;
|
||||
import org.dromara.workflow.domain.bo.FlowCancelBo;
|
||||
import org.dromara.workflow.domain.bo.FlowInstanceBo;
|
||||
import org.dromara.workflow.domain.bo.FlowInvalidBo;
|
||||
import org.dromara.workflow.domain.vo.FlowInstanceVo;
|
||||
import org.dromara.workflow.service.IFlwInstanceService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -131,4 +135,16 @@ public class FlwInstanceController extends BaseController {
|
||||
return R.ok(flwInstanceService.getInstanceVariable(instanceId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 作废流程
|
||||
*
|
||||
* @param bo 参数
|
||||
*/
|
||||
@Log(title = "流程实例管理", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/processInvalid")
|
||||
public R<Boolean> processInvalid(@Validated @RequestBody FlowInvalidBo bo) {
|
||||
return R.ok(flwInstanceService.processInvalid(bo));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,31 @@
|
||||
package org.dromara.workflow.domain.bo;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 作废请求对象
|
||||
*
|
||||
* @author may
|
||||
*/
|
||||
@Data
|
||||
public class FlowInvalidBo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 流程实例id
|
||||
*/
|
||||
@NotNull(message = "流程实例id为空", groups = AddGroup.class)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 审批意见
|
||||
*/
|
||||
private String comment;
|
||||
}
|
@ -1,20 +1,17 @@
|
||||
package org.dromara.workflow.listener;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.event.ProcessEvent;
|
||||
import org.dromara.common.core.enums.BusinessStatusEnum;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.warm.flow.core.dto.FlowParams;
|
||||
import org.dromara.warm.flow.core.entity.Definition;
|
||||
import org.dromara.warm.flow.core.entity.Instance;
|
||||
import org.dromara.warm.flow.core.listener.GlobalListener;
|
||||
import org.dromara.warm.flow.core.listener.ListenerVariable;
|
||||
import org.dromara.warm.flow.orm.entity.FlowTask;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
|
||||
import org.dromara.workflow.service.IFlwInstanceService;
|
||||
import org.dromara.workflow.service.IFlwTaskService;
|
||||
import org.springframework.stereotype.Component;
|
||||
@ -38,12 +35,11 @@ public class WorkflowGlobalListener implements GlobalListener {
|
||||
public void finish(ListenerVariable listenerVariable) {
|
||||
Instance instance = listenerVariable.getInstance();
|
||||
Definition definition = listenerVariable.getDefinition();
|
||||
FlowParams flowParams = listenerVariable.getFlowParams();
|
||||
//撤销,退回,作废,终止发送事件
|
||||
if (flowParams != null && StringUtils.isNotBlank(flowParams.getFlowStatus()) && BusinessStatusEnum.initialState(flowParams.getFlowStatus())) {
|
||||
publishProcessEvent(flowParams.getFlowStatus(), definition.getFlowCode(), instance.getBusinessId());
|
||||
log.info("流程监听器流程状态:{}", flowParams.getFlowStatus());
|
||||
}
|
||||
if (StringUtils.isNotBlank(instance.getFlowStatus()) && BusinessStatusEnum.initialState(instance.getFlowStatus())) {
|
||||
publishProcessEvent(instance.getFlowStatus(), definition.getFlowCode(), instance.getBusinessId());
|
||||
log.info("流程监听器流程状态:{}", instance.getFlowStatus());
|
||||
} else {
|
||||
List<FlowTask> flowTasks = iFlwTaskService.selectByInstId(instance.getId());
|
||||
if (CollUtil.isEmpty(flowTasks)) {
|
||||
// 若流程已结束,更新状态为已完成并发送完成事件
|
||||
@ -51,6 +47,7 @@ public class WorkflowGlobalListener implements GlobalListener {
|
||||
publishProcessEvent(BusinessStatusEnum.FINISH.getStatus(), definition.getFlowCode(), instance.getBusinessId());
|
||||
log.info("流程结束,流程状态:{}", BusinessStatusEnum.FINISH.getStatus());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import org.dromara.warm.flow.core.entity.Instance;
|
||||
import org.dromara.warm.flow.orm.entity.FlowInstance;
|
||||
import org.dromara.workflow.domain.bo.FlowCancelBo;
|
||||
import org.dromara.workflow.domain.bo.FlowInstanceBo;
|
||||
import org.dromara.workflow.domain.bo.FlowInvalidBo;
|
||||
import org.dromara.workflow.domain.vo.FlowInstanceVo;
|
||||
|
||||
import java.util.List;
|
||||
@ -140,4 +141,12 @@ public interface IFlwInstanceService {
|
||||
* @return 结果
|
||||
*/
|
||||
List<FlowInstance> selectByTaskIdList(List<Long> taskIdList);
|
||||
|
||||
/**
|
||||
* 作废流程
|
||||
*
|
||||
* @param bo 参数
|
||||
* @return 结果
|
||||
*/
|
||||
boolean processInvalid(FlowInvalidBo bo);
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ import org.dromara.warm.flow.orm.mapper.FlowNodeMapper;
|
||||
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||
import org.dromara.workflow.domain.bo.FlowCancelBo;
|
||||
import org.dromara.workflow.domain.bo.FlowInstanceBo;
|
||||
import org.dromara.workflow.domain.bo.FlowInvalidBo;
|
||||
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
||||
import org.dromara.workflow.domain.vo.FlowInstanceVo;
|
||||
import org.dromara.workflow.domain.vo.VariableVo;
|
||||
@ -363,4 +364,28 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 作废流程
|
||||
*
|
||||
* @param bo 参数
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean processInvalid(FlowInvalidBo bo) {
|
||||
try {
|
||||
List<FlowTask> flowTaskList = flwTaskService.selectByInstId(bo.getId());
|
||||
for (FlowTask flowTask : flowTaskList) {
|
||||
FlowParams flowParams = new FlowParams();
|
||||
flowParams.message(bo.getComment());
|
||||
flowParams.flowStatus(BusinessStatusEnum.INVALID.getStatus())
|
||||
.hisStatus(TaskStatusEnum.INVALID.getStatus());
|
||||
taskService.termination(flowTask.getId(), flowParams);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new ServiceException(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -400,7 +400,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService, AssigneeService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean terminationTask(FlowTerminationBo bo) {
|
||||
try {
|
||||
//流程定义
|
||||
FlowParams flowParams = new FlowParams();
|
||||
flowParams.message(bo.getComment());
|
||||
flowParams.flowStatus(BusinessStatusEnum.TERMINATION.getStatus())
|
||||
|
Loading…
x
Reference in New Issue
Block a user