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 结果
*/
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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.extension.plugins.pagination.Page;
import com.warm.flow.core.entity.*;
@ -162,7 +163,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
List<FlowInstanceVo> flowInstanceVos = BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class);
if (CollUtil.isNotEmpty(flowInstanceVos)) {
List<Long> definitionIds = StreamUtils.toList(flowInstanceVos, FlowInstanceVo::getDefinitionId);
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectBatchIds(definitionIds);
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectByIds(definitionIds);
for (FlowInstanceVo vo : flowInstanceVos) {
flowDefinitions.stream().filter(e -> e.getId().toString().equals(vo.getDefinitionId().toString())).findFirst().ifPresent(e -> {
vo.setFlowName(e.getFlowName());
@ -178,9 +179,14 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
return build;
}
/**
* 获取流程图,流程记录
*
* @param businessId 业务id
*/
@Override
public Map<String, Object> getFlowImage(String businessId) {
Map<String, Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>(16);
FlowInstance flowInstance = instanceByBusinessId(businessId);
LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery();
wrapper.eq(FlowHisTask::getInstanceId, flowInstance.getId());
@ -231,4 +237,18 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
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.vo.*;
import org.dromara.workflow.handler.FlowProcessEventHandler;
@ -100,6 +102,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.flowCode(wfDefinitionConfigVo.getProcessKey());
flowParams.variable(startProcessBo.getVariables());
flowParams.setHandler(String.valueOf(LoginHelper.getUserId()));
flowParams.flowStatus(BusinessStatusEnum.DRAFT.getStatus());
Instance instance;
try {
instance = insService.start(startProcessBo.getBusinessKey(), flowParams);
@ -132,7 +135,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
//流程定义
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);
}
//办理任务监听
@ -144,13 +148,17 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.message(completeTaskBo.getMessage());
flowParams.handler(userId);
flowParams.permissionFlag(WorkflowUtils.permissionList());
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus())
.hisStatus(TaskStatusEnum.PASS.getStatus());
setHandler(taskService.skip(taskId, flowParams));
iFlwInstanceService.updateStatus(ins.getId(), BusinessStatusEnum.WAITING.getStatus());
//判断是否流程结束
Instance instance = insService.getById(ins.getId());
if (FlowStatus.isFinished(instance.getFlowStatus())) {
iFlwInstanceService.updateStatus(instance.getId(), BusinessStatusEnum.FINISH.getStatus());
//流程结束执行监听
flowProcessEventHandler.processHandler(definition.getFlowCode(), instance.getBusinessId(),
FlowStatus.FINISHED.getKey(), false);
BusinessStatusEnum.FINISH.getStatus(), false);
}
return true;
} catch (Exception e) {
@ -194,7 +202,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
public TableDataInfo<FlowTaskVo> getPageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
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);
return TableDataInfo.build(page);
}
@ -326,9 +334,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.variable(bo.getVariables());
if (nextNodeCode.equals(bo.getNodeCode())) {
flowParams.skipType(SkipType.REJECT.getKey());
flowParams.flowStatus(BusinessStatusEnum.BACK.getStatus());
} else {
flowParams.skipType(SkipType.PASS.getKey());
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus());
}
flowParams.hisStatus(TaskStatusEnum.BACK.getStatus());
flowParams.message(bo.getMessage());
flowParams.handler(userId);
flowParams.nodeCode(bo.getNodeCode());
@ -336,7 +347,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
Instance instance = taskService.skip(taskId, flowParams);
setHandler(instance);
flowProcessEventHandler.processHandler(definition.getFlowCode(),
instance.getBusinessId(), FlowStatus.REJECT.getKey(), false);
instance.getBusinessId(), BusinessStatusEnum.BACK.getStatus(), false);
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
@ -379,10 +390,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
flowParams.handler(String.valueOf(LoginHelper.getUserId()));
flowParams.message(bo.getComment());
flowParams.permissionFlag(WorkflowUtils.permissionList());
flowParams.flowStatus(BusinessStatusEnum.TERMINATION.getStatus())
.hisStatus(TaskStatusEnum.TERMINATION.getStatus());
taskService.termination(bo.getTaskId(), flowParams);
//流程终止监听
flowProcessEventHandler.processHandler(definition.getFlowCode(),
ins.getBusinessId(), FlowStatus.INVALID.getKey(), false);
ins.getBusinessId(), BusinessStatusEnum.TERMINATION.getStatus(), false);
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);