package com.ruoyi.web.controller.api; 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.core.domain.entity.TDept; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.AddLeaveDTO; import com.ruoyi.system.dto.SetApprovalDTO; import com.ruoyi.system.model.OaApprovalApplications; import com.ruoyi.system.model.OaApprovalFlowNode; import com.ruoyi.system.service.*; import com.ruoyi.system.utils.ApprovalTypeEnum; import com.ruoyi.system.utils.UUIDUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; 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.text.SimpleDateFormat; import java.time.LocalDate; import java.util.Date; import com.ruoyi.system.emums.ApprovalStatusEnum; import com.ruoyi.common.exception.ServiceException; /** *
* 审批申请记录表 前端控制器 *
* * @author WuGuanFengYue * @since 2025-09-15 */ @RestController @Api("审批-发起审批") @RequestMapping("/oa-approval-applications") public class OaApprovalApplicationsController { @Resource private OaApprovalService approvalService; @Resource private TokenService tokenService; @Resource private OaApprovalApplicationsService approvalApplicationsService; @Resource private ISysUserService sysUserService; @Resource private OaApprovalApplicationAttendanceService approvalApplicationAttendanceService; @Resource private TDeptService deptService; @Log(title = "审批-发起请假", businessType = BusinessType.INSERT) @ApiOperation(value = "发起请假") @PostMapping(value = "/setApproval") public R setDept(@RequestBody AddLeaveDTO dto) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String code = "qj"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); oaApprovalApplications.setApplicationCode(code); oaApprovalApplications.setApprovalId(ApprovalTypeEnum.LEAVE_APPLICATION.getId()); oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); TDept dept = deptService.getById(sysUser.getDeptId()); oaApprovalApplications.setApplicantName(sysUser.getNickName()); oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); oaApprovalApplications.setDeptName(dept.getDeptName()); oaApprovalApplications.setApplicationDate(LocalDate.now()); oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); oaApprovalApplications.setApprovalStatus(1); oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); // oaApprovalApplications.setCurrentFlowNodeId(); approvalApplicationsService.save(oaApprovalApplications); return R.ok(); } @Log(title = "审批-撤回通用审批单", businessType = BusinessType.UPDATE) @ApiOperation(value = "撤回审批单:仅更新状态为已撤回") @PutMapping(value = "/withdraw/{id}") public R withdraw(@PathVariable Integer id) { OaApprovalApplications current = approvalApplicationsService.getById(id); if (current == null) { throw new ServiceException("审批单不存在"); } if (!ApprovalStatusEnum.PENDING.getCode().equals(current.getApprovalStatus())) { throw new ServiceException("仅待审批状态可撤回"); } OaApprovalApplications update = new OaApprovalApplications(); update.setId(id); update.setApprovalStatus(ApprovalStatusEnum.CANCELED.getCode()); approvalApplicationsService.updateById(update); return R.ok(); } }