From 9d1a18030d8f82aa264d1378186eb00c31c9af20 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 25 九月 2025 09:36:47 +0800
Subject: [PATCH] 审批流程bug修改

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java |   95 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 83 insertions(+), 12 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java
index 78be207..42d146d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java
@@ -6,21 +6,50 @@
 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.common.exception.ServiceException;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.dto.*;
-import com.ruoyi.system.emums.ApprovalFlowNodeEnum;
+import com.ruoyi.system.dto.AddAdvertisementDTO;
+import com.ruoyi.system.dto.AddBusinessTripDTO;
+import com.ruoyi.system.dto.AddContactDTO;
+import com.ruoyi.system.dto.AddContractDTO;
+import com.ruoyi.system.dto.AddLeaveDTO;
+import com.ruoyi.system.dto.AddLeaveDestroyDTO;
+import com.ruoyi.system.dto.AddMoneyDTO;
+import com.ruoyi.system.dto.AddOutDTO;
+import com.ruoyi.system.dto.AddPaymentDTO;
+import com.ruoyi.system.dto.AddReimbursementDTO;
+import com.ruoyi.system.emums.ApprovalStatusEnum;
 import com.ruoyi.system.emums.ApprovalTypeEnum;
-import com.ruoyi.system.model.*;
-import com.ruoyi.system.service.*;
+import com.ruoyi.system.model.OaApprovalApplicationAdvertisement;
+import com.ruoyi.system.model.OaApprovalApplicationAttendance;
+import com.ruoyi.system.model.OaApprovalApplicationContact;
+import com.ruoyi.system.model.OaApprovalApplicationContract;
+import com.ruoyi.system.model.OaApprovalApplicationMoney;
+import com.ruoyi.system.model.OaApprovalApplicationPayment;
+import com.ruoyi.system.model.OaApprovalApplicationReimbursement;
+import com.ruoyi.system.model.OaApprovalApplicationReimbursementItem;
+import com.ruoyi.system.model.OaApprovalApplications;
+import com.ruoyi.system.model.OaApprovalFlowNode;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.OaApprovalApplicationAdvertisementService;
+import com.ruoyi.system.service.OaApprovalApplicationAttendanceService;
+import com.ruoyi.system.service.OaApprovalApplicationContactService;
+import com.ruoyi.system.service.OaApprovalApplicationContractService;
+import com.ruoyi.system.service.OaApprovalApplicationMoneyService;
+import com.ruoyi.system.service.OaApprovalApplicationPaymentService;
+import com.ruoyi.system.service.OaApprovalApplicationReimbursementItemService;
+import com.ruoyi.system.service.OaApprovalApplicationReimbursementService;
+import com.ruoyi.system.service.OaApprovalApplicationsService;
+import com.ruoyi.system.service.OaApprovalFlowNodeService;
+import com.ruoyi.system.service.OaApprovalService;
+import com.ruoyi.system.service.OaApprovalTodoService;
+import com.ruoyi.system.service.TDeptService;
 import com.ruoyi.system.utils.UUIDUtil;
 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 oshi.driver.mac.net.NetStat;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -75,6 +104,7 @@
     @Resource
     private OaApprovalTodoService oaApprovalTodoService;
     @Log(title = "审批-发起请假", businessType = BusinessType.INSERT)
+    @Transactional
     @ApiOperation(value = "发起请假")
     @PostMapping(value = "/addLeave")
     public R addLeave(@RequestBody AddLeaveDTO dto) {
@@ -143,6 +173,7 @@
     @Log(title = "审批-发起外出申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起外出申请")
     @PostMapping(value = "/addOut")
+    @Transactional
     public R addOut(@RequestBody AddOutDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
         String code = "Out-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
@@ -207,6 +238,7 @@
     }
     @Log(title = "审批-发起出差申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起出差申请")
+    @Transactional
     @PostMapping(value = "/addBusinessTrip")
     public R addBusinessTrip(@RequestBody AddBusinessTripDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -271,6 +303,7 @@
     }
     @Log(title = "审批-发起销假申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起销假申请")
+    @Transactional
     @PostMapping(value = "/addLeaveDestroy")
     public R addLeaveDestroy(@RequestBody AddLeaveDestroyDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -311,8 +344,8 @@
         // 根据请假时间 查询请假申请记录
         OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
                 .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds)
-                .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime())
-                .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime())
+                .le(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime())
+                .ge(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime())
                 .eq(OaApprovalApplicationAttendance::getIsLeave, 1)
                 .orderByDesc(OaApprovalApplicationAttendance::getId)
                 .last("limit 1").one();
@@ -332,9 +365,24 @@
                 Integer.valueOf(sysUser.getDeptId()));
         return R.ok();
     }
-
+    @ApiOperation(value = "查询当前用户审批通过且未销假的请假单")
+    @GetMapping(value = "/listLeaveApplications")
+    public R<List<OaApprovalApplicationAttendance>> listLeaveApplications() {
+        List<Integer> applicationsIds = approvalApplicationsService.lambdaQuery()
+                .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.LEAVE.getCode())
+                .eq(OaApprovalApplications::getApplicantUserId, tokenService.getLoginUser().getUserId())
+                .eq(OaApprovalApplications::getApprovalStatus, 2)
+                .list().stream().map(OaApprovalApplications::getId).collect(Collectors.toList());
+        if (applicationsIds.isEmpty()){
+            return R.ok(new ArrayList<>());
+        }
+        List<OaApprovalApplicationAttendance> list = approvalApplicationAttendanceService.lambdaQuery()
+                .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationsIds).list();
+        return R.ok(list);
+    }
     @Log(title = "审批-发起报销申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起报销申请")
+    @Transactional
     @PostMapping(value = "/addReimbursement")
     public R addReimbursement(@RequestBody AddReimbursementDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -378,6 +426,7 @@
     }
     @Log(title = "审批-发起款项申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起款项申请")
+    @Transactional
     @PostMapping(value = "/addMoney")
     public R addMoney(@RequestBody AddMoneyDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -413,6 +462,7 @@
     @Log(title = "审批-发起合同文件申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起合同文件申请")
     @PostMapping(value = "/addContract")
+    @Transactional
     public R addContract(@RequestBody AddContractDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
         String code = "Contract-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
@@ -449,6 +499,7 @@
     }
     @Log(title = "审批-发起进度款支付申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起进度款支付申请")
+    @Transactional
     @PostMapping(value = "/addPayment")
     public R addPayment(@RequestBody AddPaymentDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -487,6 +538,7 @@
     }
     @Log(title = "审批-发起内部联系单申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起内部联系单申请")
+    @Transactional
     @PostMapping(value = "/addContact")
     public R addContact(@RequestBody AddContactDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -522,6 +574,7 @@
     }
     @Log(title = "审批-发起广告制作申请", businessType = BusinessType.INSERT)
     @ApiOperation(value = "发起广告制作申请")
+    @Transactional
     @PostMapping(value = "/addAdvertisement")
     public R addAdvertisement(@RequestBody AddAdvertisementDTO dto) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -561,5 +614,23 @@
                 Integer.valueOf(sysUser.getDeptId()));
         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();
+    }
 }
 

--
Gitblit v1.7.1