feat(流程): 流程校验

This commit is contained in:
yjz
2023-12-07 17:50:27 +08:00
parent 7a653ebc48
commit 450ae8bbf4
2 changed files with 89 additions and 7 deletions
@@ -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<String, Objects> 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();
}
}
@@ -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<ProcessEsInspect,
@ApiOperation(value="企标稽查流程业务表-添加", notes="企标稽查流程业务表-添加")
@PostMapping(value = "/add")
public Result<T> 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("操作成功!");
}