提交 64a1c745 authored 作者: hzh's avatar hzh

部门文件审批功能实现

上级 be28c0e2
......@@ -23,13 +23,23 @@ public interface RemoteWorkflowService {
* 获取当前流程状态
*
* @param taskId 任务id
* @return 当前流程状态
*/
String getBusinessStatusByTaskId(String taskId);
/**
* 根据业务id获取流程key集合
* @param businessKey 业务id
* @return 流程key集合
*/
String[] getTaskDefinitionKeyListByBusinessKey(String businessKey);
/**
* 获取当前流程状态
*
* @param businessKey 业务id
* @return 当前流程状态
*/
String getBusinessStatus(String businessKey);
......
......@@ -3,7 +3,9 @@ package org.dromara.workflow.dubbo;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.workflow.api.domain.RemoteWorkflowService;
import org.dromara.workflow.domain.vo.ActHistoryInfoVo;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.service.WorkflowService;
import java.util.List;
......@@ -21,6 +23,7 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
private final WorkflowService workflowService;
private final IActHiProcinstService actHiProcinstService;
private final IActProcessInstanceService processInstanceService;
@Override
public boolean deleteRunAndHisInstance(List<String> businessKeys) {
......@@ -32,6 +35,12 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
return workflowService.getBusinessStatusByTaskId(taskId);
}
@Override
public String[] getTaskDefinitionKeyListByBusinessKey(String businessKey) {
List<ActHistoryInfoVo> ahiList = processInstanceService.getHistoryRecord(businessKey);
return ahiList.toArray(new String[0]);
}
@Override
public String getBusinessStatus(String businessKey) {
return workflowService.getBusinessStatus(businessKey);
......
......@@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.workflow.api.domain.RemoteWorkflowService;
import org.dromara.workflow.api.domain.event.ProcessEvent;
import org.dromara.workflow.api.domain.event.ProcessTaskEvent;
import org.dromara.workflow.domain.FileApprove;
......@@ -18,7 +21,10 @@ import org.dromara.workflow.mapper.FileApproveMapper;
import org.dromara.workflow.service.IFileApproveService;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
......@@ -33,6 +39,8 @@ import java.util.Map;
public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, FileApproveBo, FileApprove> implements IFileApproveService {
private final FileApproveMapper baseMapper;
@DubboReference
private final RemoteWorkflowService workflowService;
@Override
public BaseMapperPlus<FileApprove, FileApproveVo> mapper() {
......@@ -71,6 +79,14 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
return MapstructUtils.convert(update, FileApproveVo.class);
}
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
List<String> idList = StreamUtils.toList(ids, String::valueOf);
workflowService.deleteRunAndHisInstance(idList);
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 总体流程监听(例如: 提交 退回 撤销 终止 作废等)
* 正常使用只需#processEvent.key=='leave1'
......@@ -102,9 +118,9 @@ public class FileApproveServiceImpl extends AbstractBaseService<FileApproveVo, F
@EventListener(condition = "#processTaskEvent.key.startsWith('dept_file_approve')")
public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
// 所有demo案例的申请人节点id
String[] ids = {};
String[] ids = workflowService.getTaskDefinitionKeyListByBusinessKey(processTaskEvent.getBusinessKey());
if (StringUtils.equalsAny(processTaskEvent.getTaskDefinitionKey(), ids)) {
log.info("当前任务执行了{}", processTaskEvent.toString());
log.info("当前任务执行了{}", processTaskEvent);
FileApprove fa = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey()));
fa.setStatus(BusinessStatusEnum.WAITING.getStatus());
baseMapper.updateById(fa);
......
......@@ -147,10 +147,9 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
@EventListener(condition = "#processTaskEvent.key.startsWith('leave')")
public void processTaskHandler(ProcessTaskEvent processTaskEvent) {
// 所有demo案例的申请人节点id
String[] ids = {"Activity_14633hx", "Activity_19b1i4j", "Activity_0uscrk3",
"Activity_0uscrk3", "Activity_0x6b71j", "Activity_0zy3g6j", "Activity_06a55t0"};
String[] ids = workflowService.getTaskDefinitionKeyListByBusinessKey(processTaskEvent.getBusinessKey());
if (StringUtils.equalsAny(processTaskEvent.getTaskDefinitionKey(), ids)) {
log.info("当前任务执行了{}", processTaskEvent.toString());
log.info("当前任务执行了{}", processTaskEvent);
TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey()));
testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
baseMapper.updateById(testLeave);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论