Browse Source

fix 流程bug

wangliang 7 tháng trước cách đây
mục cha
commit
26b0f47114

+ 27 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -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("正在审批中,请稍候再试!");