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

部门文件审批功能实现

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