dongpo 8 місяців тому
батько
коміт
ce8b946a47

+ 12 - 12
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/universal/OaUniversalController.java

@@ -40,7 +40,7 @@ public class OaUniversalController {
     @PostMapping("/staging")
     @Operation(summary = "暂存通用事项审批流程信息")
     @ApiOperationSupport(order = 1)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:staging')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:staging')")
     public CommonResult<Long> startOaUniversal(@RequestBody OaUniversalSaveReqVO stagingReqVO) {
         Long oaUniversalId = oaUniversalService.stagingOaUniversal(stagingReqVO);
         return success(oaUniversalId, "暂存成功");
@@ -49,7 +49,7 @@ public class OaUniversalController {
     @PostMapping("/commit")
     @Operation(summary = "提交通用事项审批流程信息")
     @ApiOperationSupport(order = 2)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:commit')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:commit')")
     public CommonResult<Long> commitOaUniversal(@Valid @RequestBody OaUniversalSaveReqVO commitReqVO) {
         Long oaUniversalId = oaUniversalService.commitOaUniversal(commitReqVO);
         return success(oaUniversalId, "提交成功");
@@ -58,7 +58,7 @@ public class OaUniversalController {
     @PostMapping("/agree")
     @Operation(summary = "审批同意通用事项审批流程信息")
     @ApiOperationSupport(order = 3)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:agree')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:agree')")
     public CommonResult<Long> agreeOaUniversal(@Valid @RequestBody BpmTaskApproveReqVO agreeReqVO) {
         Long result = oaUniversalService.agreeOaUniversal(agreeReqVO);
         return success(result, "审批成功");
@@ -67,7 +67,7 @@ public class OaUniversalController {
     @PostMapping("/disagree")
     @Operation(summary = "驳回通用事项审批流程信息")
     @ApiOperationSupport(order = 4)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:disagree')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:disagree')")
     public CommonResult<Long> disagreeOaUniversal(@Valid @RequestBody BpmTaskReturnReqVO disagreeReqVO) {
         Long result = oaUniversalService.disagreeOaUniversal(disagreeReqVO);
         return success(result, "驳回成功");
@@ -76,7 +76,7 @@ public class OaUniversalController {
     @PostMapping("/revocation")
     @Operation(summary = "撤回通用事项审批流程信息")
     @ApiOperationSupport(order = 5)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:revocation')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:revocation')")
     public CommonResult<Long> revocationOaUniversal(@Valid @RequestBody BpmTaskApproveReqVO revocationReqVO) {
         Long result = oaUniversalService.revocationOaUniversal(revocationReqVO);
         return success(result, "撤回成功");
@@ -85,16 +85,16 @@ public class OaUniversalController {
     @PostMapping("/reCommit")
     @Operation(summary = "驳回或撤回后再次提交通用用事项审批流程信息")
     @ApiOperationSupport(order = 6)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:re-commit')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:re-commit')")
     public CommonResult<Long> reCommitOaUniversal(@Valid @RequestBody OaUniversalSaveReqVO reCommitReqVO) {
         Long result = oaUniversalService.reCommitOaUniversal(reCommitReqVO);
-        return success(result, "提交成功");
+        return success(result, "再次提交成功");
     }
 
     @PostMapping("/close")
     @Operation(summary = "驳回或撤回后关闭通用事项审批流程信息")
     @ApiOperationSupport(order = 7)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-entry:close')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-entry:close')")
     public CommonResult<Long> updateCompleteOaUniversal(@RequestBody OaUniversalSaveReqVO closeReqVO) {
         Long result = oaUniversalService.closeOaUniversal(closeReqVO);
 
@@ -105,7 +105,7 @@ public class OaUniversalController {
     @Operation(summary = "删除通用事项审批流程信息")
     @ApiOperationSupport(order = 8)
     @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:delete')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:delete')")
     public CommonResult<Boolean> deleteOaUniversal(@RequestParam("id") Long id) {
         oaUniversalService.deleteOaUniversal(id);
         return success(true, "删除成功");
@@ -115,7 +115,7 @@ public class OaUniversalController {
     @Operation(summary = "根据id获得通用事项审批流程信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1")
     @ApiOperationSupport(order = 9)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:query-id')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:query-id')")
     public CommonResult<OaUniversalRespVO> getOaUniversal(@RequestParam("id") Long id) {
         OaUniversalRespVO respVO = oaUniversalService.getOaUniversal(id);
         return success(respVO, "查询对象成功");
@@ -124,7 +124,7 @@ public class OaUniversalController {
     @GetMapping("/page")
     @Operation(summary = "获得通用事项审批流程信息分页")
     @ApiOperationSupport(order = 10)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:query-page')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:query-page')")
     public CommonResult<PageResult<OaUniversalRespVO>> getOaUniversalPage(@Valid OaUniversalPageReqVO pageReqVO) {
         return success(oaUniversalService.getOaUniversalPage(pageReqVO), "查询列表成功");
     }
@@ -132,7 +132,7 @@ public class OaUniversalController {
     @GetMapping("/export-excel")
     @Operation(summary = "导出通用事项审批流程信息 Excel")
     @ApiOperationSupport(order = 11)
-    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:export')")
+    // @PreAuthorize("@ss.hasPermission('bpm:oa-universal:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportOaUniversalExcel(@Valid OaUniversalPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {

+ 9 - 5
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmProcessInstanceController.java

@@ -26,6 +26,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.repository.ProcessDefinition;
 import org.flowable.task.api.Task;
+import org.springdoc.api.annotations.ParameterObject;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -61,10 +62,10 @@ public class BpmProcessInstanceController {
     private DeptApi deptApi;
 
     @GetMapping("/my-page")
-    @Operation(summary = "获得我发起的流程实例分页列表", description = "在【我的流程】菜单中,进行调用")
-    @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
+    @Operation(summary = "获得我发起的流程实例分页列表", description = "在【我的流程】菜单中,进行调用")
+    // @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')")
     public CommonResult<PageResult<BpmProcessInstanceRespVO>> getProcessInstanceMyPage(
-            @Valid BpmProcessInstancePageReqVO pageReqVO) {
+            @Valid @ParameterObject BpmProcessInstancePageReqVO pageReqVO) {
         PageResult<HistoricProcessInstance> pageResult = processInstanceService.getProcessInstancePage(
                 getLoginUserId(), pageReqVO);
         if (CollUtil.isEmpty(pageResult.getList())) {
@@ -78,8 +79,11 @@ public class BpmProcessInstanceController {
                 convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId));
         Map<String, BpmCategoryDO> categoryMap = categoryService.getCategoryMap(
                 convertSet(processDefinitionMap.values(), ProcessDefinition::getCategory));
+        Map<String, BpmProcessDefinitionExtDO> bpmProcessDefinitionExtDOMap = processDefinitionService.getProcessDefinitionExtMap(
+                convertSet(pageResult.getList(), HistoricProcessInstance::getProcessDefinitionId)
+        );
         return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
-                processDefinitionMap, categoryMap, taskMap, null, null));
+                processDefinitionMap, categoryMap, taskMap, null, null, bpmProcessDefinitionExtDOMap));
     }
 
     @GetMapping("/manager-page")
@@ -106,7 +110,7 @@ public class BpmProcessInstanceController {
         Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
                 convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
         return success(BpmProcessInstanceConvert.INSTANCE.buildProcessInstancePage(pageResult,
-                processDefinitionMap, categoryMap, taskMap, userMap, deptMap));
+                processDefinitionMap, categoryMap, taskMap, userMap, deptMap, null));
     }
 
     @PostMapping("/create")

+ 10 - 7
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/BpmTaskController.java

@@ -65,7 +65,7 @@ public class BpmTaskController {
     @GetMapping("todo-count")
     @Operation(summary = "获取我的待办任务数量")
     @ApiOperationSupport(order = 1)
-    @PreAuthorize("@ss.hasPermission('bpm:task:count')")
+    // @PreAuthorize("@ss.hasPermission('bpm:task:count')")
     public CommonResult<Long> getTaskTodoCount(@Valid @ParameterObject BpmTaskPageReqVO pageVO) {
         Long todoCount = taskService.getTaskTodoCount(getLoginUserId(), pageVO);
         return success(todoCount, "查询我的待办任务数量成功");
@@ -74,7 +74,7 @@ public class BpmTaskController {
     @GetMapping("todo-page")
     @Operation(summary = "获取我的待办任务分页")
     @ApiOperationSupport(order = 2)
-    @PreAuthorize("@ss.hasPermission('bpm:task:query')")
+    // @PreAuthorize("@ss.hasPermission('bpm:task:query')")
     public CommonResult<PageResult<BpmTaskRespVO>> getTaskTodoPage(@Valid @ParameterObject BpmTaskPageReqVO pageVO) {
         PageResult<Task> pageResult = taskService.getTaskTodoPage(getLoginUserId(), pageVO);
         if (CollUtil.isEmpty(pageResult.getList())) {
@@ -94,9 +94,9 @@ public class BpmTaskController {
     }
 
     @GetMapping("done-page")
-    @Operation(summary = "获取我的已任务分页")
-    @PreAuthorize("@ss.hasPermission('bpm:task:query')")
-    public CommonResult<PageResult<BpmTaskRespVO>> getTaskDonePage(@Valid BpmTaskPageReqVO pageVO) {
+    @Operation(summary = "获取我的已处理任务分页")
+    // @PreAuthorize("@ss.hasPermission('bpm:task:query')")
+    public CommonResult<PageResult<BpmTaskRespVO>> getTaskDonePage(@Valid @ParameterObject BpmTaskPageReqVO pageVO) {
         PageResult<HistoricTaskInstance> pageResult = taskService.getTaskDonePage(getLoginUserId(), pageVO);
         if (CollUtil.isEmpty(pageResult.getList())) {
             return success(PageResult.empty());
@@ -107,7 +107,10 @@ public class BpmTaskController {
                 convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
         Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
                 convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
-        return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null));
+        Map<String, BpmProcessDefinitionExtDO> bpmProcessDefinitionExtDOMap = processDefinitionService.getProcessDefinitionExtMap(
+                convertSet(processInstanceMap.values(), HistoricProcessInstance::getProcessDefinitionId)
+        );
+        return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null, bpmProcessDefinitionExtDOMap));
     }
 
     @GetMapping("manager-page")
@@ -128,7 +131,7 @@ public class BpmTaskController {
         Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
         Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
                 convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
-        return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap));
+        return success(BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap, null));
     }
 
     @GetMapping("/list-by-process-instance-id")

+ 1 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/task/vo/task/BpmTaskRespVO.java

@@ -56,7 +56,7 @@ public class BpmTaskRespVO {
     /**
      * 流程定义扩展信息
      */
-    private BpmProcessDefinitionExtDO processDefinitionExtDO;
+    private BpmProcessDefinitionExtDO processDefinition;
 
     @Schema(description = "父任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private String parentTaskId;

+ 17 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmProcessInstanceConvert.java

@@ -8,12 +8,15 @@ import cn.iocoder.yudao.module.bpm.controller.admin.definition.vo.process.BpmPro
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmProcessInstanceRespVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmCategoryDO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmProcessDefinitionExtDO;
+import cn.iocoder.yudao.module.bpm.enums.DictDataConstants;
 import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEvent;
+import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
 import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.FlowableUtils;
 import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO;
 import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import org.flowable.engine.history.HistoricProcessInstance;
 import org.flowable.engine.repository.ProcessDefinition;
 import org.flowable.engine.runtime.ProcessInstance;
@@ -41,11 +44,19 @@ public interface BpmProcessInstanceConvert {
                                                                           Map<String, BpmCategoryDO> categoryMap,
                                                                           Map<String, List<Task>> taskMap,
                                                                           Map<Long, AdminUserRespDTO> userMap,
-                                                                          Map<Long, DeptRespDTO> deptMap) {
+                                                                          Map<Long, DeptRespDTO> deptMap,
+                                                                          Map<String, BpmProcessDefinitionExtDO> bpmProcessDefinitionExtDOMap) {
         PageResult<BpmProcessInstanceRespVO> vpPageResult = BeanUtils.toBean(pageResult, BpmProcessInstanceRespVO.class);
         for (int i = 0; i < pageResult.getList().size(); i++) {
             BpmProcessInstanceRespVO respVO = vpPageResult.getList().get(i);
-            respVO.setStatus(FlowableUtils.getProcessInstanceStatus(pageResult.getList().get(i)));
+            HistoricProcessInstance historicProcessInstance = pageResult.getList().get(i);
+            Integer processInstanceStatus = FlowableUtils.getProcessInstanceStatus(historicProcessInstance);
+            // 保底设置状态,暂时不用
+            if (historicProcessInstance.getEndTime() != null && processInstanceStatus != Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_CLOSED)) {
+                processInstanceStatus = Integer.valueOf(DictDataConstants.OA_AUDIT_STATUS_AUDITED);
+            }
+            respVO.setStatus(processInstanceStatus);
+
             MapUtils.findAndThen(processDefinitionMap, respVO.getProcessDefinitionId(),
                     processDefinition -> respVO.setCategory(processDefinition.getCategory()));
             MapUtils.findAndThen(categoryMap, respVO.getCategory(), category -> respVO.setCategoryName(category.getName()));
@@ -58,6 +69,10 @@ public interface BpmProcessInstanceConvert {
                     MapUtils.findAndThen(deptMap, startUser.getDeptId(), dept -> respVO.getStartUser().setDeptName(dept.getName()));
                 }
             }
+            BpmProcessDefinitionExtDO bpmProcessDefinitionExtDO = bpmProcessDefinitionExtDOMap.get(respVO.getProcessDefinitionId());
+            BpmProcessDefinitionRespVO bpmProcessDefinitionRespVO = BeanUtils.toBean(bpmProcessDefinitionExtDO, BpmProcessDefinitionRespVO.class);
+            respVO.setProcessDefinition(bpmProcessDefinitionRespVO);
+
         }
         return vpPageResult;
     }

+ 6 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/task/BpmTaskConvert.java

@@ -55,7 +55,7 @@ public interface BpmTaskConvert {
             taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
             AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
             BpmProcessDefinitionExtDO bpmProcessDefinitionExtDO = bpmProcessDefinitionExtDOMap.get(processInstance.getProcessDefinitionId());
-            taskVO.setProcessDefinitionExtDO(BeanUtils.toBean(bpmProcessDefinitionExtDO, BpmProcessDefinitionExtDO.class));
+            taskVO.setProcessDefinition(BeanUtils.toBean(bpmProcessDefinitionExtDO, BpmProcessDefinitionExtDO.class));
             taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
         });
     }
@@ -63,7 +63,8 @@ public interface BpmTaskConvert {
     default PageResult<BpmTaskRespVO> buildTaskPage(PageResult<HistoricTaskInstance> pageResult,
                                                     Map<String, HistoricProcessInstance> processInstanceMap,
                                                     Map<Long, AdminUserRespDTO> userMap,
-                                                    Map<Long, DeptRespDTO> deptMap) {
+                                                    Map<Long, DeptRespDTO> deptMap,
+                                                    Map<String, BpmProcessDefinitionExtDO> bpmProcessDefinitionExtDOMap) {
         List<BpmTaskRespVO> taskVOList = CollectionUtils.convertList(pageResult.getList(), task -> {
             BpmTaskRespVO taskVO = BeanUtils.toBean(task, BpmTaskRespVO.class);
             taskVO.setStatus(FlowableUtils.getTaskStatus(task)).setReason(FlowableUtils.getTaskReason(task));
@@ -79,6 +80,9 @@ public interface BpmTaskConvert {
                 AdminUserRespDTO startUser = userMap.get(NumberUtils.parseLong(processInstance.getStartUserId()));
                 taskVO.setProcessInstance(BeanUtils.toBean(processInstance, BpmTaskRespVO.ProcessInstance.class));
                 taskVO.getProcessInstance().setStartUser(BeanUtils.toBean(startUser, BpmProcessInstanceRespVO.User.class));
+
+                BpmProcessDefinitionExtDO bpmProcessDefinitionExtDO = bpmProcessDefinitionExtDOMap.get(processInstance.getProcessDefinitionId());
+                taskVO.setProcessDefinition(BeanUtils.toBean(bpmProcessDefinitionExtDO, BpmProcessDefinitionExtDO.class));
             }
             return taskVO;
         });

+ 5 - 1
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/FlowableUtils.java

@@ -78,7 +78,11 @@ public class FlowableUtils {
      * @return 状态
      */
     private static Integer getProcessInstanceStatus(Map<String, Object> processVariables) {
-        return (Integer) processVariables.get(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS);
+        Object status = processVariables.get(BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS);
+        if (status instanceof String) {
+            status = Integer.valueOf((String) status);
+        }
+        return (Integer) status;
     }
 
     /**

+ 18 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/universal/OaUniversalServiceImpl.java

@@ -171,6 +171,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         BpmTaskApproveReqVO agreeReqVO = new BpmTaskApproveReqVO();
         agreeReqVO.setId(task.getId());
         agreeReqVO.setReason("[首次提交]");
+        taskService.setVariable(task.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_COMMITTED);
         taskService.setVariable(task.getId(), "auditPass", "true");
         bpmTaskService.approveTask(loginUserId, agreeReqVO);
 
@@ -204,9 +205,20 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         if (currentTask == null) {
             throw exception(ErrorCodeConstants.TASK_NOT_EXISTS);
         }
+        // 先更新为审批中
+        taskService.setVariable(currentTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
         LambdaQueryWrapper<OaUniversalDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(OaUniversalDO::getProcInstId, currentTask.getProcessInstanceId());
         OaUniversalDO oaUniversal = oaUniversalMapper.selectOne(lambdaQueryWrapper);
+        // 如果是最后一个人审批同意,设置流程审批状态为已审核
+        String[] auditPersons = oaUniversal.getStartUserSelectAssignees().split(",");
+        String lastAuditPerson = Arrays.stream(auditPersons)
+                .reduce((first, second) -> second)
+                .orElse(null);
+        if (currentTask.getAssignee().equals(lastAuditPerson)) {
+            // 更新为已审核(暂时未生效,未找到原因,先不处理)
+            taskService.setVariable(agreeReqVO.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITED);
+        }
         // 审批同意
         String reason = "[同意]";
         if (StrUtil.isNotBlank(agreeReqVO.getReason())) {
@@ -219,6 +231,8 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
         OaUniversalDO oaUniversalDO = new OaUniversalDO();
         if (nextTask != null) {
+            // 如果审批人重复,实际未结束,再次更新为审核中
+            taskService.setVariable(nextTask.getId(), BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_AUDITING);
             oaUniversalDO.setAuditStatus(DictDataConstants.OA_AUDIT_STATUS_AUDITING)
                     .setCurrentAuditEmployeeId(Long.valueOf(nextTask.getAssignee()))
                     .setFinalAuditDate(LocalDateTime.now())
@@ -252,6 +266,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         disagreeReqVO.setTargetTaskDefinitionKey("modifyApply");
         disagreeReqVO.setReason("[驳回]" + disagreeReqVO.getReason());
         taskService.setVariable(disagreeReqVO.getId(), "auditPass", "false");
+        taskService.setVariable(disagreeReqVO.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_RETURNED);
         bpmTaskService.returnTask(loginUserId, disagreeReqVO);
 
         Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
@@ -295,6 +310,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
             reason = reason + returnReqVO.getReason();
         }
         returnReqVO.setReason(reason);
+        taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_RECALLED);
         bpmTaskService.revocationTask(loginUserId, returnReqVO);
 
         Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
@@ -341,6 +357,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
             oaUniversalNew.setStartUserSelectAssignees(selectAssignees.stream().map(String::valueOf).collect(Collectors.joining(",")));
         }
         taskService.setVariable(currentTask.getId(), "auditPass", "true");
+        taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_COMMITTED);
         // 再次提交,和审批通过逻辑相同
         bpmTaskService.approveTask(loginUserId, approveReqVO);
 
@@ -374,6 +391,7 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         approveReqVO.setId(currentTask.getId())
                 .setReason("[关闭]");
         taskService.setVariable(currentTask.getId(), "auditPass", "false");
+        taskService.setVariable(currentTask.getId(),BpmConstants.PROCESS_INSTANCE_VARIABLE_STATUS, DictDataConstants.OA_AUDIT_STATUS_CLOSED);
         // 关闭,使用审批通过的方法实现
         bpmTaskService.approveTask(loginUserId, approveReqVO);
 

+ 4 - 4
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java

@@ -140,11 +140,11 @@ public class BpmTaskServiceImpl implements BpmTaskService {
                 .includeTaskLocalVariables()
                 .orderByHistoricTaskInstanceEndTime().desc(); // 审批时间倒序
         if (StrUtil.isNotBlank(pageVO.getName())) {
-            taskQuery.taskNameLike("%" + pageVO.getName() + "%");
+            taskQuery.processDefinitionNameLike("%" + pageVO.getName() + "%");
         }
         if (ArrayUtil.isNotEmpty(pageVO.getCreateTime())) {
             taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[0]));
-            taskQuery.taskCreatedAfter(DateUtils.of(pageVO.getCreateTime()[1]));
+            taskQuery.taskCreatedBefore(DateUtils.of(pageVO.getCreateTime()[1]));
         }
         // 执行查询
         long count = taskQuery.count();
@@ -236,7 +236,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
         // 其中,variables 是存储动态表单到 local 任务级别。过滤一下,避免 ProcessInstance 系统级的变量被占用
         if (CollUtil.isNotEmpty(reqVO.getVariables())) {
             Map<String, Object> variables = FlowableUtils.filterTaskFormVariable(reqVO.getVariables());
-            taskService.complete(task.getId(), variables, true);
+            taskService.complete(task.getId(), variables, false);
         } else {
             taskService.complete(task.getId());
         }
@@ -368,7 +368,7 @@ public class BpmTaskServiceImpl implements BpmTaskService {
      * @param status 状态
      */
     private void updateTaskStatus(String id, Integer status) {
-        taskService.setVariableLocal(id, BpmConstants.TASK_VARIABLE_STATUS, status);
+        // taskService.setVariableLocal(id, BpmConstants.TASK_VARIABLE_STATUS, status);
     }
 
     /**

+ 1 - 1
yudao-server/src/main/resources/application-local.yaml

@@ -173,7 +173,7 @@ logging:
     cn.iocoder.yudao.module.crm.dal.mysql: debug
     cn.iocoder.yudao.module.erp.dal.mysql: debug
     org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
-    org.flowable: debug
+#    org.flowable: debug
 
 debug: false