Merge branch 'feature/countersign_ext' into dev
This commit is contained in:
commit
e555b06a85
@ -11,6 +11,7 @@ import cn.hutool.json.JSONUtil;
|
|||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.BpmnModel;
|
import org.flowable.bpmn.model.BpmnModel;
|
||||||
|
import org.flowable.common.engine.impl.cfg.IdGenerator;
|
||||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
import org.flowable.engine.RuntimeService;
|
import org.flowable.engine.RuntimeService;
|
||||||
import org.flowable.engine.TaskService;
|
import org.flowable.engine.TaskService;
|
||||||
@ -22,10 +23,12 @@ import org.flowable.task.api.TaskInfo;
|
|||||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||||
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
|
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
|
||||||
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
import org.flowable.task.service.impl.persistence.entity.TaskEntity;
|
||||||
|
import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -35,6 +38,7 @@ import java.util.stream.Collectors;
|
|||||||
import static cn.axzo.workflow.common.code.OtherRespCode.ASSIGNEE_NODE_ID_NOT_EXISTS;
|
import static cn.axzo.workflow.common.code.OtherRespCode.ASSIGNEE_NODE_ID_NOT_EXISTS;
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.COUNTERSIGN_ASSIGNER_SHOW_NUMBER;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.COUNTERSIGN_ASSIGNER_SHOW_NUMBER;
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
|
||||||
|
import static cn.axzo.workflow.common.enums.BpmnCountersignTypeEnum.FORWARD_COUNTERSIGN;
|
||||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.COUNTERSIGN;
|
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.COUNTERSIGN;
|
||||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCategoryVersion;
|
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCategoryVersion;
|
||||||
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.batchAddAttachment;
|
import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.batchAddAttachment;
|
||||||
@ -130,9 +134,11 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand<Void> implemen
|
|||||||
switch (countersignType) {
|
switch (countersignType) {
|
||||||
case FORWARD_COUNTERSIGN:
|
case FORWARD_COUNTERSIGN:
|
||||||
// 加签的一种方式:前加签,具体定义由后续产品需求来定
|
// 加签的一种方式:前加签,具体定义由后续产品需求来定
|
||||||
|
forwardCountSign(commandContext, task, valuTargetAssigneeList);
|
||||||
break;
|
break;
|
||||||
case BACK_COUNTERSIGN:
|
case BACK_COUNTERSIGN:
|
||||||
// 加签的另一种方式
|
// 加签的另一种方式
|
||||||
|
backCountSign(commandContext, task, valuTargetAssigneeList);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// 共享签,不区分顺序
|
// 共享签,不区分顺序
|
||||||
@ -143,6 +149,57 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand<Void> implemen
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前加签
|
||||||
|
*
|
||||||
|
* @param commandContext
|
||||||
|
* @param task
|
||||||
|
* @param valuTargetAssigneeList
|
||||||
|
*/
|
||||||
|
private void forwardCountSign(CommandContext commandContext, TaskEntity task, List<BpmnTaskDelegateAssigner> valuTargetAssigneeList) {
|
||||||
|
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||||
|
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||||
|
IdGenerator idGenerator = processEngineConfiguration.getIdGenerator();
|
||||||
|
TaskService taskService = processEngineConfiguration.getTaskService();
|
||||||
|
if (task instanceof TaskEntityImpl) {
|
||||||
|
TaskEntityImpl taskEntity = (TaskEntityImpl) task;
|
||||||
|
taskEntity.setCountEnabled(true);
|
||||||
|
taskEntity.setOwner(task.getAssignee());
|
||||||
|
taskEntity.setAssignee(null);
|
||||||
|
taskEntity.setScopeType(FORWARD_COUNTERSIGN.getType());
|
||||||
|
taskService.saveTask(taskEntity);
|
||||||
|
|
||||||
|
valuTargetAssigneeList.forEach(e -> {
|
||||||
|
// TODO 创建新的任务
|
||||||
|
TaskEntityImpl subTask = (TaskEntityImpl) taskService.newTask(idGenerator.getNextId());
|
||||||
|
subTask.setName(task.getName());
|
||||||
|
subTask.setDescription(task.getDescription());
|
||||||
|
subTask.setCategory(task.getCategory());
|
||||||
|
subTask.setParentTaskId(task.getId());
|
||||||
|
subTask.setProcessDefinitionId(task.getProcessDefinitionId());
|
||||||
|
subTask.setProcessInstanceId(task.getProcessInstanceId());
|
||||||
|
subTask.setTaskDefinitionKey(task.getTaskDefinitionKey());
|
||||||
|
subTask.setTaskDefinitionId(task.getTaskDefinitionId());
|
||||||
|
subTask.setPriority(task.getPriority());
|
||||||
|
subTask.setCreateTime(new Date());
|
||||||
|
subTask.setTenantId(task.getTenantId());
|
||||||
|
subTask.setAssignee(e.buildAssigneeId());
|
||||||
|
taskService.saveTask(subTask);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 后加签
|
||||||
|
*
|
||||||
|
* @param commandContext
|
||||||
|
* @param task
|
||||||
|
* @param valuTargetAssigneeList
|
||||||
|
*/
|
||||||
|
private void backCountSign(CommandContext commandContext, TaskEntity task, List<BpmnTaskDelegateAssigner> valuTargetAssigneeList) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 共享签
|
* 共享签
|
||||||
*
|
*
|
||||||
@ -167,7 +224,6 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand<Void> implemen
|
|||||||
|
|
||||||
private void resolveOriginTask(CommandContext commandContext, ExtAxHiTaskInstService extAxHiTaskInstService,
|
private void resolveOriginTask(CommandContext commandContext, ExtAxHiTaskInstService extAxHiTaskInstService,
|
||||||
TaskService taskService, TaskEntity task) {
|
TaskService taskService, TaskEntity task) {
|
||||||
// 构建评论内容
|
|
||||||
StringBuilder message = new StringBuilder("添加");
|
StringBuilder message = new StringBuilder("添加");
|
||||||
int end = Math.min(targetTaskAssigneeList.size(), COUNTERSIGN_ASSIGNER_SHOW_NUMBER);
|
int end = Math.min(targetTaskAssigneeList.size(), COUNTERSIGN_ASSIGNER_SHOW_NUMBER);
|
||||||
//加签人员数量显示指定个数
|
//加签人员数量显示指定个数
|
||||||
@ -181,6 +237,19 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand<Void> implemen
|
|||||||
message.append("等");
|
message.append("等");
|
||||||
}
|
}
|
||||||
message.append(targetTaskAssigneeList.size()).append("人进行审批");
|
message.append(targetTaskAssigneeList.size()).append("人进行审批");
|
||||||
|
|
||||||
|
switch (countersignType) {
|
||||||
|
case FORWARD_COUNTERSIGN:
|
||||||
|
message.append("(前加签)");
|
||||||
|
break;
|
||||||
|
case BACK_COUNTERSIGN:
|
||||||
|
message.append("(后加签)");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
message.append("(并加签)");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
Task virtualTask = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(),
|
Task virtualTask = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(),
|
||||||
task.getTaskDefinitionKey(), advice, originTaskAssignee, COUNTERSIGN.getStatus(), new AddComment(message.toString()));
|
task.getTaskDefinitionKey(), advice, originTaskAssignee, COUNTERSIGN.getStatus(), new AddComment(message.toString()));
|
||||||
batchAddAttachment(commandContext, task.getProcessInstanceId(), task, attachmentList, originTaskAssignee);
|
batchAddAttachment(commandContext, task.getProcessInstanceId(), task, attachmentList, originTaskAssignee);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user