package com.ruoyi.web.controller.api;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.framework.web.service.TokenService;
|
import com.ruoyi.system.dto.AddLeaveDTO;
|
import com.ruoyi.system.dto.AuditDTO;
|
import com.ruoyi.system.model.*;
|
import com.ruoyi.system.service.*;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 审批流程节点审核记录表 前端控制器
|
* </p>
|
*
|
* @author WuGuanFengYue
|
* @since 2025-09-15
|
*/
|
@RestController
|
@RequestMapping("/oa-approval-flow-audit")
|
@Api(tags = "通用审批接口")
|
public class OaApprovalFlowAuditController {
|
@Resource
|
private OaApprovalTodoService approvalTodoService;
|
@Resource
|
private OaApprovalFlowAuditService approvalFlowAuditService;
|
@Resource
|
private OaApprovalApplicationStorageService approvalApplicationStorageService;
|
@Resource
|
private OaApprovalApplicationPurchaseService approvalApplicationPurchaseService;
|
@Resource
|
private OaApprovalApplicationAssetItemService approvalApplicationAssetItemService;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private OaApprovalService approvalService;
|
|
@Resource
|
private OaApprovalApplicationsService approvalApplicationsService;
|
@Resource
|
private OaApprovalApplicationAdvertisementService approvalApplicationAdvertisementService;
|
@Resource
|
private OaApprovalApplicationContactService approvalApplicationContactService;
|
@Resource
|
private OaApprovalApplicationPaymentService approvalApplicationPaymentService;
|
@Resource
|
private OaApprovalApplicationContractService approvalApplicationContractService;
|
@Resource
|
private OaApprovalApplicationMoneyService approvalApplicationMoneyService;
|
@Resource
|
private AssetMainService assetMainService;
|
@Resource
|
private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService;
|
@Resource
|
private OaApprovalApplicationReimbursementItemService approvalApplicationReimbursementItemService;
|
@Resource
|
private OaApprovalFlowNodeService approvalFlowNodeService;
|
@Resource
|
private OaApprovalApplicationAssetService approvalApplicationAssetService;
|
@Resource
|
private ISysUserService sysUserService;
|
@Resource
|
private OaApprovalApplicationDisposeService approvalApplicationDisposeService;
|
@Resource
|
private OaApprovalApplicationChangeService approvalApplicationChangeService;
|
@Resource
|
private OaApprovalApplicationAttendanceService approvalApplicationAttendanceService;
|
@Resource
|
private TDeptService deptService;
|
@Resource
|
private OaApprovalTodoService oaApprovalTodoService;
|
@Resource
|
private OaApprovalFlowService approvalFlowService;
|
|
|
|
@Log(title = "审批-通用审批接口", businessType = BusinessType.INSERT)
|
@ApiOperation(value = "通用审批接口")
|
@PostMapping(value = "/audit")
|
public R addLeave(@RequestBody AuditDTO dto) {
|
OaApprovalApplications approvalApplications = approvalApplicationsService.getById(dto.getApprovalApplicationId());
|
Integer currentFlowNodeId = approvalApplications.getCurrentFlowNodeId();
|
Long userId = tokenService.getLoginUser().getUserId();
|
SysUser sysUser = sysUserService.selectUserById(userId);
|
|
OaApprovalTodo approvalTodo = approvalTodoService.lambdaQuery().eq(OaApprovalTodo::getUserId, userId)
|
.eq(OaApprovalTodo::getFlowNodeId, currentFlowNodeId)
|
.eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
|
.last("limit 1").one();
|
approvalTodo.setStatus(1);
|
approvalTodo.setHandleTime(LocalDateTime.now());
|
approvalTodoService.updateById(approvalTodo);
|
|
OaApproval approval = approvalService.getById(approvalApplications.getApprovalId());
|
if (dto.getApprovalStatus()==0){
|
// 中断审批流程
|
approvalApplications.setApprovalStatus(3);
|
approvalApplicationsService.updateById(approvalApplications);
|
// 删除除当前审批人该申请单的未处理的所有待办
|
approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
|
.eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
|
.eq(OaApprovalTodo::getStatus,0));
|
}
|
OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(currentFlowNodeId);
|
OaApprovalFlowAudit approvalFlowAudit = new OaApprovalFlowAudit();
|
approvalFlowAudit.setApprovalApplicationId(approvalApplications.getId());
|
approvalFlowAudit.setFlowNodeId(approvalApplications.getCurrentFlowNodeId());
|
approvalFlowAudit.setFlowName(oaApprovalFlowNode.getFlowName());
|
approvalFlowAudit.setSortOrder(oaApprovalFlowNode.getSortOrder());
|
approvalFlowAudit.setUserId(userId.intValue());
|
approvalFlowAudit.setUserName(sysUser.getUserName());
|
approvalFlowAudit.setApprovalStatus(dto.getApprovalStatus() != 0);
|
approvalFlowAudit.setApprovalTime(LocalDateTime.now());
|
approvalFlowAudit.setReason(dto.getReason());
|
approvalFlowAuditService.save(approvalFlowAudit);
|
List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId())
|
.orderByDesc(OaApprovalFlowNode::getSortOrder).list();
|
if (dto.getApprovalStatus()==1){
|
for (OaApprovalFlowNode approvalFlowNode : approvalFlowNodes) {
|
// 判断当前是否处于最后一个节点
|
if(approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNode.getId())){
|
// 审批通过 审批流程结束
|
approvalApplications.setApprovalStatus(2);
|
approvalApplicationsService.updateById(approvalApplications);
|
if (approval.getApprovalCategory()==1)
|
break;
|
}
|
}
|
}
|
|
return R.ok();
|
}
|
}
|