Преглед на файлове

通用事项流程审批同意、驳回、撤回接口

dongpo преди 1 година
родител
ревизия
5589fda961

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

@@ -6,21 +6,19 @@ import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstant
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalPageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalRespVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalSaveReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO;
+import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskReturnReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.universal.OaUniversalDO;
 import cn.iocoder.yudao.module.bpm.service.oa.universal.OaUniversalService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.core.annotation.Order;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -64,18 +62,31 @@ public class OaUniversalController {
         return success(oaUniversalId, "暂存成功");
     }
 
-    @PostMapping("/completeTure")
+    @PostMapping("/agree")
     @Operation(summary = "审批同意通用事项审批流程信息")
-    @PreAuthorize("@ss.hasPermission('bpm:oa-entry:complete-true')")
-    public CommonResult<Long> completeTrueOaUniversal(@Valid @RequestBody BpmTaskApproveReqVO reqVO) {
-        return success(oaUniversalService.completeTrueOaUniversal(getLoginUserId(), reqVO));
+    @ApiOperationSupport(order = 3)
+    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:agree')")
+    public CommonResult<Long> agreeOaUniversal(@Valid @RequestBody BpmTaskApproveReqVO approveReqVO) {
+        Long result = oaUniversalService.agreeOaUniversal(approveReqVO);
+        return success(result, "审批成功");
     }
 
-    @PostMapping("/completeFalse")
-    @Operation(summary = "驳回或撤回通用事项审批流程信息")
-    @PreAuthorize("@ss.hasPermission('bpm:oa-entry:complete-false')")
-    public CommonResult<Long> completeFalseOaUniversal(@Valid @RequestBody BpmTaskApproveReqVO reqVO) {
-        return success(oaUniversalService.completeFalseOaUniversal(getLoginUserId(), reqVO));
+    @PostMapping("/disagree")
+    @Operation(summary = "驳回通用事项审批流程信息")
+    @ApiOperationSupport(order = 4)
+    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:disagree')")
+    public CommonResult<Long> disagreeOaUniversal(@Valid @RequestBody BpmTaskReturnReqVO returnReqVO) {
+        Long result = oaUniversalService.disagreeOaUniversal(returnReqVO);
+        return success(result, "驳回成功");
+    }
+
+    @PostMapping("/revocation")
+    @Operation(summary = "撤回通用事项审批流程信息")
+    @ApiOperationSupport(order = 5)
+    @PreAuthorize("@ss.hasPermission('bpm:oa-universal:revocation')")
+    public CommonResult<Long> revocationOaUniversal(@Valid @RequestBody BpmTaskApproveReqVO approveReqVO) {
+        Long result = oaUniversalService.revocationOaUniversal(approveReqVO);
+        return success(result, "撤回成功");
     }
 
     @PostMapping("/updateComplete")

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

@@ -15,8 +15,7 @@ public class BpmTaskApproveReqVO {
     @NotEmpty(message = "任务编号不能为空")
     private String id;
 
-    @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED, example = "不错不错!")
-    @NotEmpty(message = "审批意见不能为空")
+    @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.AUTO, example = "不错不错!")
     private String reason;
 
     @Schema(description = "抄送的用户编号数组", requiredMode = Schema.RequiredMode.AUTO)

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

@@ -14,7 +14,7 @@ public class BpmTaskReturnReqVO {
     private String id;
 
     @Schema(description = "回退到的任务 Key", requiredMode = Schema.RequiredMode.REQUIRED, example = "modifyApply")
-    @NotEmpty(message = "回退到的任务 Key 不能为空")
+    // @NotEmpty(message = "回退到的任务 Key 不能为空")
     private String targetTaskDefinitionKey;
 
     @Schema(description = "回退意见", requiredMode = Schema.RequiredMode.REQUIRED, example = "我就是想驳回")

+ 6 - 2
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/universal/OaUniversalService.java

@@ -5,8 +5,8 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalP
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalRespVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.universal.vo.OaUniversalSaveReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO;
+import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskReturnReqVO;
 import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.universal.OaUniversalDO;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 import javax.validation.Valid;
 
@@ -21,7 +21,11 @@ public interface OaUniversalService {
 
     Long stagingOaUniversal(OaUniversalSaveReqVO createReqVO);
 
-    Long completeTrueOaUniversal(Long userId, BpmTaskApproveReqVO reqVO);
+    Long agreeOaUniversal(BpmTaskApproveReqVO approveReqVO);
+
+    Long disagreeOaUniversal(BpmTaskReturnReqVO approveReqVO);
+
+    Long revocationOaUniversal(BpmTaskApproveReqVO approveReqVO);
 
     Long completeFalseOaUniversal(Long userId, BpmTaskApproveReqVO reqVO);
 

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

@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.security.core.LoginUser;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
@@ -23,12 +22,10 @@ import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.flowable.engine.TaskService;
 import org.flowable.task.api.Task;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
@@ -167,29 +164,31 @@ public class OaUniversalServiceImpl implements OaUniversalService {
     }
 
     @Override
-    public Long completeTrueOaUniversal(Long userId, BpmTaskApproveReqVO reqVO) {
-        Task currentTask = bpmTaskService.getTask(reqVO.getId());
+    public Long agreeOaUniversal(BpmTaskApproveReqVO approveReqVO) {
+        // 登录人信息
+        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
+        // TODO DP 根据登录人查询出对应的员工信息
+
+        Task currentTask = bpmTaskService.getTask(approveReqVO.getId());
         // 审批同意
-        bpmTaskService.approveTask(userId, reqVO);
+        approveReqVO.setReason("[同意]" + approveReqVO.getReason());
+        bpmTaskService.approveTask(loginUserId, approveReqVO);
 
         Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
         if (nextTask != null) {
             LambdaUpdateWrapper<OaUniversalDO> updateWrapper = new LambdaUpdateWrapper<>();
-            updateWrapper.set(OaUniversalDO::getAuditStatus, "2")
+            updateWrapper.set(OaUniversalDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_AUDITING)
                     .set(OaUniversalDO::getCurrentAuditEmployeeId, nextTask.getAssignee())
-                    .set(OaUniversalDO::getFinalAuditDate, new Date())
-                    .eq(OaUniversalDO::getProcInstId, currentTask.getProcessInstanceId());
+                    .set(OaUniversalDO::getFinalAuditDate, LocalDateTime.now());
             oaUniversalMapper.update(updateWrapper);
         } else {
             LambdaUpdateWrapper<OaUniversalDO> updateWrapper = new LambdaUpdateWrapper<>();
-            updateWrapper.set(OaUniversalDO::getAuditStatus, "3")
+            updateWrapper.set(OaUniversalDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_AUDITED)
                     .set(OaUniversalDO::getCurrentAuditEmployeeId, null)
-                    .set(OaUniversalDO::getFinalAuditDate, new Date())
-                    .eq(OaUniversalDO::getProcInstId, currentTask.getProcessInstanceId());
+                    .set(OaUniversalDO::getFinalAuditDate, new Date());
             oaUniversalMapper.update(updateWrapper);
 
             // TODO 复制业务单据信息到业务模块单据表
-
         }
         // 发送通知
 
@@ -197,6 +196,59 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         return 1L;
     }
 
+    @Override
+    public Long disagreeOaUniversal(BpmTaskReturnReqVO returnReqVO) {
+        // 登录人信息
+        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
+        // TODO DP 根据登录人查询出对应的员工信息
+
+        Task currentTask = bpmTaskService.getTask(returnReqVO.getId());
+
+        returnReqVO.setTargetTaskDefinitionKey("modifyApply");
+        returnReqVO.setReason("[驳回]" + returnReqVO.getReason());
+        bpmTaskService.returnTask(loginUserId, returnReqVO);
+
+        Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
+
+        // 更新单据状态,当前处理人,最后处理时间
+        LambdaUpdateWrapper<OaUniversalDO> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(OaUniversalDO::getCurrentAuditEmployeeId, nextTask.getAssignee())
+                .set(OaUniversalDO::getFinalAuditDate, LocalDateTime.now())
+                .set(OaUniversalDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_REJECTED);
+        oaUniversalMapper.update(updateWrapper);
+
+        // 发送通知
+
+        return 1L;
+    }
+
+    @Override
+    public Long revocationOaUniversal(BpmTaskApproveReqVO approveReqVO) {
+        // 登录人信息
+        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
+        // TODO DP 根据登录人查询出对应的员工信息
+
+        Task currentTask = bpmTaskService.getTask(approveReqVO.getId());
+
+        BpmTaskReturnReqVO returnReqVO = BeanUtils.toBean(approveReqVO, BpmTaskReturnReqVO.class);
+        returnReqVO.setTargetTaskDefinitionKey("modifyApply");
+        returnReqVO.setReason("[撤回]" + returnReqVO.getReason());
+        bpmTaskService.returnTask(loginUserId, returnReqVO);
+
+        Task nextTask = taskService.createTaskQuery().processInstanceId(currentTask.getProcessInstanceId()).singleResult();
+
+        // 更新单据状态,当前处理人,最后处理时间
+        LambdaUpdateWrapper<OaUniversalDO> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(OaUniversalDO::getCurrentAuditEmployeeId, nextTask.getAssignee())
+                .set(OaUniversalDO::getFinalAuditDate, LocalDateTime.now())
+                .set(OaUniversalDO::getAuditStatus, DictDataConstants.OA_AUDIT_STATUS_REJECTED);
+        oaUniversalMapper.update(updateWrapper);
+
+        // 发送通知
+
+        return 1L;
+    }
+
     @Override
     public Long completeFalseOaUniversal(Long userId, BpmTaskApproveReqVO reqVO) {