From 450ae8bbf44406afeb44a09ab8cce4915571069b Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Thu, 7 Dec 2023 17:50:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B5=81=E7=A8=8B):=20=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/aspect/ProcessAspect.java | 88 +++++++++++++++++++ .../ProcessEsInspectController.java | 8 +- 2 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/activiti/process/aspect/ProcessAspect.java diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/aspect/ProcessAspect.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/aspect/ProcessAspect.java new file mode 100644 index 00000000..b8259956 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/aspect/ProcessAspect.java @@ -0,0 +1,88 @@ +package com.jero.modules.activiti.process.aspect; + +import com.alibaba.fastjson.JSON; +import com.jero.common.constant.enums.LanguageEnum; +import com.jero.common.exception.JeroBootException; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.MessageUtils; +import com.jero.modules.activiti.entity.ProcessAll; +import lombok.extern.slf4j.Slf4j; +import org.activiti.engine.TaskService; +import org.activiti.engine.task.Task; +import org.apache.shiro.SecurityUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.Objects; + +/** + * @ClassName: 流程aop + * @Description: + * @Author: yjz + * @Date: 2023-12-07 15:45 + * @Version: 1.0 + **/ +@Aspect +@Component +@Slf4j +public class ProcessAspect { + @Resource + private TaskService taskService; + + // 流程审批 + @Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowApproval(..))") + public void processServiceFlowApproval() { + } + + // 流程转办 + @Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowTransfer(..))") + public void processServiceFlowTransfer() { + } + + // 流程驳回 + @Pointcut("execution(public * com.jero.modules.activiti.process..*Controller.flowReject(..))") + public void processServiceFlowReject() { + } + + @Before("processServiceFlowApproval() || processServiceFlowTransfer() || processServiceFlowReject()") + public void doBefore(JoinPoint jp) { + log.info("==========流程前置方法开始=========="); + if (!Objects.isNull(jp.getArgs())) { + Map map = JSON.parseObject(JSON.toJSONString(jp.getArgs()[0]), Map.class); + Object object = map.get("processAll"); + ProcessAll processAll = JSON.parseObject(JSON.toJSONString(object), ProcessAll.class); + if (checkTaskExistence(processAll.getTaskId())){ + if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())){ + throw new JeroBootException("任务不存在!"); + }else { + throw new JeroBootException("The task does not exist!"); + } + } + + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!getTaskAssignee(processAll.getTaskId()).equals(loginUser.getId())){ + if (LanguageEnum.CN.getValue().equals(MessageUtils.getLanguage().getValue())){ + throw new JeroBootException("非当前节点处理人!"); + }else { + throw new JeroBootException("Not the current node processor!"); + } + } + } + log.info("==========流程前置方法结束=========="); + } + + public boolean checkTaskExistence(String taskId) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + return Objects.isNull(task); + } + + public String getTaskAssignee(String taskId) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + return task.getAssignee(); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/controller/ProcessEsInspectController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/controller/ProcessEsInspectController.java index b58f4a26..6168e8b4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/controller/ProcessEsInspectController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esinspect/controller/ProcessEsInspectController.java @@ -5,7 +5,6 @@ import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.Translation; import com.jero.common.system.base.controller.JeroController; -import com.jero.common.util.SnowflakeUtils; import com.jero.modules.activiti.process.esinspect.entity.ProcessEsInspect; import com.jero.modules.activiti.process.esinspect.service.IProcessEsInspectService; import com.jero.modules.activiti.process.esinspect.vo.ProcessEsInspectVO; @@ -84,12 +83,7 @@ public class ProcessEsInspectController extends JeroController add(@Validated @RequestBody ProcessEsInspect processEsInspect) { - String ids = processEsInspect.getIds(); - for (String s : ids.split(",")) { - processEsInspect.setInspectId(s); - processEsInspect.setId(String.valueOf(SnowflakeUtils.snowflake())); - processEsInspectService.add(processEsInspect); - } + processEsInspectService.add(processEsInspect); return Result.OK("操作成功!"); }