|
@@ -46,6 +46,7 @@ import org.activiti.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior;
|
|
|
import org.activiti.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior;
|
|
|
import org.activiti.engine.repository.Deployment;
|
|
|
import org.activiti.engine.runtime.ProcessInstance;
|
|
|
+import org.activiti.engine.task.IdentityLink;
|
|
|
import org.activiti.engine.task.Task;
|
|
|
import org.apache.commons.codec.digest.DigestUtils;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
@@ -445,6 +446,32 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
Task task = taskService.createTaskQuery().taskId(flowTaskId).singleResult();
|
|
|
Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空或该流程已被他人审核,请刷新再试!"));
|
|
|
Long flowId = SystemConstant.convertIdToLong(task.getProcessInstanceId());
|
|
|
+ List<Task> taskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
|
|
|
+ boolean myself = false;
|
|
|
+ if (!CollectionUtils.isEmpty(taskList)) {
|
|
|
+ for (Task t : taskList) {
|
|
|
+ if (Objects.nonNull(t.getAssignee()) && t.getAssignee().equals(sysUser.getId().toString())) {
|
|
|
+ myself = true;
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(t.getId());
|
|
|
+ if (!CollectionUtils.isEmpty(identityLinkList)) {
|
|
|
+ for (IdentityLink i : identityLinkList) {
|
|
|
+ if (i.getUserId().equals(sysUser.getId().toString())) {
|
|
|
+ myself = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未查询到流程任务数据");
|
|
|
+ }
|
|
|
+ if (!myself) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("不能审批他人的流程数据");
|
|
|
+ }
|
|
|
+
|
|
|
boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_FLOW_TASK_PREFIX + flowId, SystemConstant.REDIS_LOCK_FLOW_TASK_TIME_OUT);
|
|
|
if (!lock) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("正在审批中,请稍候再试!");
|