1
This commit is contained in:
parent
d9b206f625
commit
66042357eb
@ -90,7 +90,7 @@ public class BpmTransformUtil {
|
||||
if(StringUtils.isNotBlank(parentId)){
|
||||
BpmJsonNode parentNode = childNodeMap.get(parentId);
|
||||
if(parentNode!=null){
|
||||
if(BpmFlowNodeType.NODE_CONDITION.getType().equals(parentNode.getType()) ){
|
||||
if(BpmFlowNodeType.NODE_ROUTER.getType().equals(parentNode.getType()) ){
|
||||
sequenceFlowId=parentNode.getId();
|
||||
flow.setName(parentNode.getName());
|
||||
if(!ObjectUtils.isEmpty(parentNode.getProperty()) && !Boolean.TRUE.equals(parentNode.getProperty().getDefaultCondition())){
|
||||
@ -130,7 +130,7 @@ public class BpmTransformUtil {
|
||||
|
||||
public static String create(String fromId, BpmJsonNode flowNode, Process process,BpmnModel bpmnModel,List<SequenceFlow> sequenceFlows,Map<String,BpmJsonNode> childNodeMap) throws InvocationTargetException, IllegalAccessException {
|
||||
String nodeType = flowNode.getType();
|
||||
if (BpmFlowNodeType.NODE_CONDITION.isEqual(nodeType)) {
|
||||
if (BpmFlowNodeType.NODE_ROUTER.isEqual(nodeType)) {
|
||||
return createExclusiveGatewayBuilder(fromId, flowNode,process,bpmnModel,sequenceFlows,childNodeMap);
|
||||
} else if (BpmFlowNodeType.NODE_TASK.isEqual(nodeType)) {
|
||||
childNodeMap.put(flowNode.getId(),flowNode);
|
||||
@ -242,7 +242,7 @@ public class BpmTransformUtil {
|
||||
if (Objects.nonNull(childNode) &&StringUtils.isNotBlank(childNode.getId()) ) {
|
||||
String parentId = childNode.getParentId();
|
||||
BpmJsonNode parentChildNode = childNodeMap.get(parentId);
|
||||
if(BpmFlowNodeType.NODE_CONDITION.getType().equals(parentChildNode.getType())){
|
||||
if(BpmFlowNodeType.NODE_ROUTER.getType().equals(parentChildNode.getType())){
|
||||
String endExId= parentChildNode.getId()+"end";
|
||||
process.addFlowElement(createExclusiveGateWayEnd(endExId));
|
||||
if (incoming == null || incoming.isEmpty()) {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
package cn.axzo.workflow.core.listener;
|
||||
|
||||
public interface BpmProcessEventListener {
|
||||
|
||||
}
|
||||
|
||||
@ -47,21 +47,12 @@ public class BpmTaskConvert {
|
||||
task.getProcessInstanceId());
|
||||
if (processInstance != null) {
|
||||
String startUserId = processInstance.getStartUserId();
|
||||
Long startWorkspaceId = null;
|
||||
Long startIdentityId = null;
|
||||
if (StringUtils.isNotBlank(startUserId)) {
|
||||
String[] s = startUserId.split("_");
|
||||
startWorkspaceId = Long.valueOf(s[0]);
|
||||
startIdentityId = Long.valueOf(s[1]);
|
||||
}
|
||||
|
||||
//convert
|
||||
BpmTaskTodoPageItemRespVO.ProcessInstance processInstance1 = new BpmTaskTodoPageItemRespVO.ProcessInstance();
|
||||
processInstance1.setId(processInstance.getId());
|
||||
processInstance1.setName(processInstance.getName());
|
||||
processInstance1.setProcessDefinitionId(processInstance.getProcessDefinitionId());
|
||||
processInstance1.setStartWorkspaceId(startWorkspaceId);
|
||||
processInstance1.setStartIdentityId(startIdentityId);
|
||||
processInstance1.setStartIdentityId(Long.valueOf(startUserId));
|
||||
respVO.setProcessInstance(processInstance1);
|
||||
}
|
||||
return respVO;
|
||||
|
||||
@ -84,4 +84,20 @@ public class BpmJsonNode {
|
||||
public void setBranches(List<BpmJsonNode> branches) {
|
||||
this.branches = branches;
|
||||
}
|
||||
|
||||
public BpmJsonNodeProperty getProperty() {
|
||||
return property;
|
||||
}
|
||||
|
||||
public void setProperty(BpmJsonNodeProperty property) {
|
||||
this.property = property;
|
||||
}
|
||||
|
||||
public Map getIncoming() {
|
||||
return incoming;
|
||||
}
|
||||
|
||||
public void setIncoming(Map incoming) {
|
||||
this.incoming = incoming;
|
||||
}
|
||||
}
|
||||
|
||||
@ -33,4 +33,7 @@ public class BpmTaskTodoBpmPageDTO extends BpmPageParam {
|
||||
@ApiModelProperty(value = "结束的创建时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endCreateTime;
|
||||
|
||||
@ApiModelProperty(value = "审核单号", example = "20220622143500001")
|
||||
private String customProInstId;
|
||||
}
|
||||
|
||||
@ -26,12 +26,11 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
||||
@Override
|
||||
public void notify(DelegateExecution execution) {
|
||||
String currentActivityId = execution.getCurrentActivityId();
|
||||
Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess();
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(currentActivityId);
|
||||
|
||||
String variable=currentActivityId+"assigneeList";
|
||||
List usersValue = (List) execution.getVariable(variable);
|
||||
if(usersValue==null){
|
||||
Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess();
|
||||
UserTask userTask = (UserTask) mainProcess.getFlowElement(currentActivityId);
|
||||
|
||||
BpmTaskCalculateDTO calculateDTO = new BpmTaskCalculateDTO();
|
||||
calculateDTO.setTaskId(userTask.getId());
|
||||
@ -43,7 +42,6 @@ public class EngineExecutionStartListener implements ExecutionListener {
|
||||
calculateDTO.setTaskDefinitionKey(currentActivityId);
|
||||
|
||||
List<BpmTaskDelegateAssigner> assigners = bpmTaskDelegate.calculateAssignerAtExecution(calculateDTO);
|
||||
|
||||
List<String> assigneeIdList= new ArrayList<>();
|
||||
for (BpmTaskDelegateAssigner user : assigners) {
|
||||
assigneeIdList.add(user.getAssignerId());
|
||||
|
||||
@ -215,4 +215,19 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
|
||||
return BpmCollectionUtils.convertMap(getProcessInstances(ids),
|
||||
ProcessInstance::getProcessInstanceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得历史的流程实例 Map
|
||||
*
|
||||
* @param ids 流程实例的编号集合
|
||||
* @return 历史的流程实例列表 Map
|
||||
*/
|
||||
public Map<String, HistoricProcessInstance> getHistoricProcessInstanceMap(Set<String> ids) {
|
||||
return BpmCollectionUtils.convertMap(getHistoricProcessInstances(ids),
|
||||
HistoricProcessInstance::getId);
|
||||
}
|
||||
|
||||
public List<HistoricProcessInstance> getHistoricProcessInstances(Set<String> ids) {
|
||||
return historyService.createHistoricProcessInstanceQuery().processInstanceIds(ids).list();
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ import cn.axzo.workflow.core.service.converter.BpmTaskConvert;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.service.dto.request.task.BpmTaskTodoBpmPageDTO;
|
||||
import cn.axzo.workflow.core.service.dto.response.BpmPageResult;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskDonePageItemRespVO;
|
||||
import cn.axzo.workflow.core.service.dto.response.task.BpmTaskTodoPageItemRespVO;
|
||||
import cn.azxo.framework.common.utils.StringUtils;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
@ -24,10 +25,12 @@ import org.flowable.engine.HistoryService;
|
||||
import org.flowable.engine.RepositoryService;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.flowable.task.api.TaskQuery;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
|
||||
import org.flowable.task.service.delegate.DelegateTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -41,6 +44,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.core.common.BpmConstants.*;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.*;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertMap;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertSet;
|
||||
|
||||
@Service
|
||||
@ -103,7 +107,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
List<BpmTaskTodoPageItemRespVO> bpmTaskTodoPageItemRespVOS = BpmTaskConvert.convertList1(
|
||||
tasks, processInstanceMap);
|
||||
|
||||
Map<String, BpmProcessInstanceExtDO> instanceExtMap = BpmCollectionUtils.convertMap(
|
||||
Map<String, BpmProcessInstanceExtDO> instanceExtMap = convertMap(
|
||||
bpmProcessInstanceExtMapper.selectList(
|
||||
new LambdaQueryWrapper<BpmProcessInstanceExtDO>().in(
|
||||
BpmProcessInstanceExtDO::getProcessInstanceId, processInstanceIds)),
|
||||
@ -123,7 +127,70 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||
|
||||
@Override
|
||||
public BpmPageResult<BpmTaskTodoPageItemRespVO> getDoneTaskPage(BpmTaskTodoBpmPageDTO taskDonePageD) {
|
||||
return null;
|
||||
BpmProcessInstanceExtDO one = null;
|
||||
if (org.springframework.util.StringUtils.hasLength(taskDonePageD.getCustomProInstId())) {
|
||||
one = bpmProcessInstanceExtMapper.selectOne(
|
||||
BpmProcessInstanceExtDO::getCustomProInstId, taskDonePageD.getCustomProInstId());
|
||||
}
|
||||
|
||||
// 查询已办任务
|
||||
HistoricTaskInstanceQuery taskQuery = historyService.createHistoricTaskInstanceQuery()
|
||||
.finished() // 已完成
|
||||
.taskAssignee(taskDonePageD.getUserId()) // 分配给自己
|
||||
.orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序
|
||||
if (StrUtil.isNotBlank(taskDonePageD.getName())) {
|
||||
taskQuery.taskNameLike("%" + taskDonePageD.getName() + "%");
|
||||
}
|
||||
if (taskDonePageD.getBeginCreateTime() != null) {
|
||||
taskQuery.taskCreatedAfter(taskDonePageD.getBeginCreateTime());
|
||||
}
|
||||
if (taskDonePageD.getEndCreateTime() != null) {
|
||||
taskQuery.taskCreatedBefore(taskDonePageD.getEndCreateTime());
|
||||
}
|
||||
if (org.springframework.util.StringUtils.hasLength(taskDonePageD.getCategory())) {
|
||||
List<String> categorys = Arrays.stream(taskDonePageD.getCategory().split(",")).map(String::trim).collect(Collectors.toList());
|
||||
taskQuery.processCategoryIn(categorys);
|
||||
}
|
||||
if (Objects.nonNull(one)) {
|
||||
taskQuery.processInstanceId(one.getProcessInstanceId());
|
||||
}
|
||||
// 执行查询
|
||||
List<HistoricTaskInstance> tasks = taskQuery.listPage((taskDonePageD.getPageNo() - 1) * taskDonePageD.getPageSize(),
|
||||
taskDonePageD.getPageSize());
|
||||
if (CollUtil.isEmpty(tasks)) {
|
||||
return BpmPageResult.empty(taskQuery.count());
|
||||
}
|
||||
|
||||
// 获得 TaskExtDO Map
|
||||
List<BpmTaskExtDO> bpmTaskExtDOs = taskExtMapper.selectListByTaskIds(
|
||||
convertSet(tasks, HistoricTaskInstance::getId));
|
||||
Map<String, BpmTaskExtDO> bpmTaskExtDOMap = convertMap(bpmTaskExtDOs, BpmTaskExtDO::getTaskId);
|
||||
// 获得 ProcessInstance Map
|
||||
Set<String> processInstanceIds = convertSet(tasks, HistoricTaskInstance::getProcessInstanceId);
|
||||
Map<String, HistoricProcessInstance> historicProcessInstanceMap = processInstanceService.getHistoricProcessInstanceMap(
|
||||
processInstanceIds);
|
||||
|
||||
// 拼接数据
|
||||
List<BpmTaskDonePageItemRespVO> bpmTaskDonePageItemRespVOS = BpmTaskConvert.convertList2(
|
||||
tasks, bpmTaskExtDOMap, historicProcessInstanceMap);
|
||||
|
||||
Map<String, BpmProcessInstanceExtDO> instanceExtMap = convertMap(
|
||||
bpmProcessInstanceExtMapper.selectList(
|
||||
new LambdaQueryWrapper<BpmProcessInstanceExtDO>().in(
|
||||
BpmProcessInstanceExtDO::getProcessInstanceId, processInstanceIds)),
|
||||
BpmProcessInstanceExtDO::getProcessInstanceId, Function.identity(), (s, t) -> s);
|
||||
|
||||
// 设置发起人姓名
|
||||
bpmTaskDonePageItemRespVOS.forEach(vo -> {
|
||||
BpmTaskTodoPageItemRespVO.ProcessInstance processInstance = vo.getProcessInstance();
|
||||
BpmProcessInstanceExtDO instanceExtDO = instanceExtMap.get(processInstance.getId());
|
||||
processInstance.setCustomProInstId(instanceExtDO.getCustomProInstId());
|
||||
processInstance.setCategory(instanceExtDO.getCategory());
|
||||
processInstance.setStartUserName(instanceExtDO.getStartUserName());
|
||||
processInstance.setStartTime(instanceExtDO.getCreateTime());
|
||||
});
|
||||
return new BpmPageResult(bpmTaskDonePageItemRespVOS, taskQuery.count());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
Reference in New Issue
Block a user