update 调整办理 驳回 终止等状态

This commit is contained in:
gssong 2024-10-27 13:20:27 +08:00
parent c409a3a582
commit dcb1e6e05f
3 changed files with 48 additions and 7 deletions

View File

@ -83,4 +83,12 @@ public interface IFlwInstanceService {
* @return 结果 * @return 结果
*/ */
Map<String, Object> getFlowImage(String businessId); Map<String, Object> getFlowImage(String businessId);
/**
* 按照实例id更新状态
*
* @param instanceId 实例id
* @param status 状态
*/
void updateStatus(Long instanceId, String status);
} }

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.warm.flow.core.entity.*; import com.warm.flow.core.entity.*;
@ -162,7 +163,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
List<FlowInstanceVo> flowInstanceVos = BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class); List<FlowInstanceVo> flowInstanceVos = BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class);
if (CollUtil.isNotEmpty(flowInstanceVos)) { if (CollUtil.isNotEmpty(flowInstanceVos)) {
List<Long> definitionIds = StreamUtils.toList(flowInstanceVos, FlowInstanceVo::getDefinitionId); List<Long> definitionIds = StreamUtils.toList(flowInstanceVos, FlowInstanceVo::getDefinitionId);
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectBatchIds(definitionIds); List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectByIds(definitionIds);
for (FlowInstanceVo vo : flowInstanceVos) { for (FlowInstanceVo vo : flowInstanceVos) {
flowDefinitions.stream().filter(e -> e.getId().toString().equals(vo.getDefinitionId().toString())).findFirst().ifPresent(e -> { flowDefinitions.stream().filter(e -> e.getId().toString().equals(vo.getDefinitionId().toString())).findFirst().ifPresent(e -> {
vo.setFlowName(e.getFlowName()); vo.setFlowName(e.getFlowName());
@ -178,9 +179,14 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
return build; return build;
} }
/**
* 获取流程图,流程记录
*
* @param businessId 业务id
*/
@Override @Override
public Map<String, Object> getFlowImage(String businessId) { public Map<String, Object> getFlowImage(String businessId) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>(16);
FlowInstance flowInstance = instanceByBusinessId(businessId); FlowInstance flowInstance = instanceByBusinessId(businessId);
LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery();
wrapper.eq(FlowHisTask::getInstanceId, flowInstance.getId()); wrapper.eq(FlowHisTask::getInstanceId, flowInstance.getId());
@ -231,4 +237,18 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
return 0 + ""; return 0 + "";
} }
} }
/**
* 按照实例id更新状态
*
* @param instanceId 实例id
* @param status 状态
*/
@Override
public void updateStatus(Long instanceId, String status) {
LambdaUpdateWrapper<FlowInstance> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(FlowInstance::getFlowStatus, status);
wrapper.eq(FlowInstance::getId, instanceId);
flowInstanceMapper.update(wrapper);
}
} }

View File

@ -22,12 +22,14 @@ import com.warm.flow.orm.mapper.FlowSkipMapper;
import com.warm.flow.orm.mapper.FlowTaskMapper; import com.warm.flow.orm.mapper.FlowTaskMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.bo.*;
import org.dromara.workflow.domain.vo.*; import org.dromara.workflow.domain.vo.*;
import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.handler.FlowProcessEventHandler;
@ -100,6 +102,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.flowCode(wfDefinitionConfigVo.getProcessKey()); flowParams.flowCode(wfDefinitionConfigVo.getProcessKey());
flowParams.variable(startProcessBo.getVariables()); flowParams.variable(startProcessBo.getVariables());
flowParams.setHandler(String.valueOf(LoginHelper.getUserId())); flowParams.setHandler(String.valueOf(LoginHelper.getUserId()));
flowParams.flowStatus(BusinessStatusEnum.DRAFT.getStatus());
Instance instance; Instance instance;
try { try {
instance = insService.start(startProcessBo.getBusinessKey(), flowParams); instance = insService.start(startProcessBo.getBusinessKey(), flowParams);
@ -132,7 +135,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
//流程定义 //流程定义
Definition definition = defService.getById(flowTask.getDefinitionId()); Definition definition = defService.getById(flowTask.getDefinitionId());
//流程提交监听 //流程提交监听
if (FlowStatus.TOBESUBMIT.getKey().equals(ins.getFlowStatus()) || FlowStatus.REJECT.getKey().equals(ins.getFlowStatus())) { if (BusinessStatusEnum.DRAFT.getStatus().equals(ins.getFlowStatus()) || BusinessStatusEnum.CANCEL.getStatus().equals(ins.getFlowStatus())
|| BusinessStatusEnum.BACK.getStatus().equals(ins.getFlowStatus())) {
flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true); flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true);
} }
//办理任务监听 //办理任务监听
@ -144,13 +148,17 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.message(completeTaskBo.getMessage()); flowParams.message(completeTaskBo.getMessage());
flowParams.handler(userId); flowParams.handler(userId);
flowParams.permissionFlag(WorkflowUtils.permissionList()); flowParams.permissionFlag(WorkflowUtils.permissionList());
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus())
.hisStatus(TaskStatusEnum.PASS.getStatus());
setHandler(taskService.skip(taskId, flowParams)); setHandler(taskService.skip(taskId, flowParams));
iFlwInstanceService.updateStatus(ins.getId(), BusinessStatusEnum.WAITING.getStatus());
//判断是否流程结束 //判断是否流程结束
Instance instance = insService.getById(ins.getId()); Instance instance = insService.getById(ins.getId());
if (FlowStatus.isFinished(instance.getFlowStatus())) { if (FlowStatus.isFinished(instance.getFlowStatus())) {
iFlwInstanceService.updateStatus(instance.getId(), BusinessStatusEnum.FINISH.getStatus());
//流程结束执行监听 //流程结束执行监听
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance.getBusinessId(), flowProcessEventHandler.processHandler(definition.getFlowCode(), instance.getBusinessId(),
FlowStatus.FINISHED.getKey(), false); BusinessStatusEnum.FINISH.getStatus(), false);
} }
return true; return true;
} catch (Exception e) { } catch (Exception e) {
@ -194,7 +202,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
public TableDataInfo<FlowTaskVo> getPageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { public TableDataInfo<FlowTaskVo> getPageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>(); QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
queryWrapper.in("t.processed_by", WorkflowUtils.permissionList()); queryWrapper.in("t.processed_by", WorkflowUtils.permissionList());
queryWrapper.in("t.flow_status", FlowStatus.APPROVAL.getKey()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus());
Page<FlowTaskVo> page = buildTaskWaitingPage(pageQuery, queryWrapper, flowTaskBo); Page<FlowTaskVo> page = buildTaskWaitingPage(pageQuery, queryWrapper, flowTaskBo);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -326,9 +334,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.variable(bo.getVariables()); flowParams.variable(bo.getVariables());
if (nextNodeCode.equals(bo.getNodeCode())) { if (nextNodeCode.equals(bo.getNodeCode())) {
flowParams.skipType(SkipType.REJECT.getKey()); flowParams.skipType(SkipType.REJECT.getKey());
flowParams.flowStatus(BusinessStatusEnum.BACK.getStatus());
} else { } else {
flowParams.skipType(SkipType.PASS.getKey()); flowParams.skipType(SkipType.PASS.getKey());
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus());
} }
flowParams.hisStatus(TaskStatusEnum.BACK.getStatus());
flowParams.message(bo.getMessage()); flowParams.message(bo.getMessage());
flowParams.handler(userId); flowParams.handler(userId);
flowParams.nodeCode(bo.getNodeCode()); flowParams.nodeCode(bo.getNodeCode());
@ -336,7 +347,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
Instance instance = taskService.skip(taskId, flowParams); Instance instance = taskService.skip(taskId, flowParams);
setHandler(instance); setHandler(instance);
flowProcessEventHandler.processHandler(definition.getFlowCode(), flowProcessEventHandler.processHandler(definition.getFlowCode(),
instance.getBusinessId(), FlowStatus.REJECT.getKey(), false); instance.getBusinessId(), BusinessStatusEnum.BACK.getStatus(), false);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
@ -379,10 +390,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.handler(String.valueOf(LoginHelper.getUserId())); flowParams.handler(String.valueOf(LoginHelper.getUserId()));
flowParams.message(bo.getComment()); flowParams.message(bo.getComment());
flowParams.permissionFlag(WorkflowUtils.permissionList()); flowParams.permissionFlag(WorkflowUtils.permissionList());
flowParams.flowStatus(BusinessStatusEnum.TERMINATION.getStatus())
.hisStatus(TaskStatusEnum.TERMINATION.getStatus());
taskService.termination(bo.getTaskId(), flowParams); taskService.termination(bo.getTaskId(), flowParams);
//流程终止监听 //流程终止监听
flowProcessEventHandler.processHandler(definition.getFlowCode(), flowProcessEventHandler.processHandler(definition.getFlowCode(),
ins.getBusinessId(), FlowStatus.INVALID.getKey(), false); ins.getBusinessId(), BusinessStatusEnum.TERMINATION.getStatus(), false);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);