From 2c456094bdf1cc7e1bab5e0dbee00bb1f2743488 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 17 七月 2023 13:50:12 +0800
Subject: [PATCH] 1、审批顺序:审批时,从一级到五级逐级审批,回退时,由审批人员指定回退级别,如从五级审批退回到经办人(需要重新修改材料的人员处),每一级可以看到回退的信息;修改完成后,直接从经办人处到达五级审批或退回的审批人。被退回的信息修改完成后,直接从经办人到达五级审批或退回的审批人处,那么其他层级的审批人虽然不需要审批,但要能够看到重新修改后的信息。 说明: (1)差旅费报销主表:service_reimbursement 标识字段:FlowLevel(当前审核级别 处于哪个阶段 0:申请;1:一级审核;2:二级审核;3:三级审核等; 4:四级审核等;  5:五级审核等);RecordStatus(记录状态 详见字典sys_travelexpensestatus) (2)费用报销主表:service_fund 标识字段:FlowLevel(当前审核级别 处于哪个阶段 0:申请;1:一级审核;2:二级审核;3:三级审核等; 4:四级审核等;  5:五级审核等);RecordStatus(记录状态 详见字典sys_travelexpensestatus) (3)审批流程设置表:service_fundflowrule (4)审批流程记录表:service_fundflow

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java |   46 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
index af24cf9..534ed5e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -2,6 +2,8 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.config.RuoYiConfig;
@@ -15,6 +17,7 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.HttpClientKit;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
@@ -29,6 +32,7 @@
 import freemarker.template.TemplateException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ibatis.annotations.Options;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,10 +61,10 @@
     private IServiceReimbursementService serviceReimbursementService;
 
     @Autowired
-    private IServiceReimbursementpayeeService reimbursementpayeeService;
+    private IServiceReimbursementSharedService serviceReimbursementSharedService;
 
     @Autowired
-    private IServiceReimbursementSharedService serviceReimbursementServiceShare;
+    private IServiceReimbursementpayeeService reimbursementpayeeService;
 
     @Autowired
     private IServiceReimbursementdetailService serviceReimbursementdetailService;
@@ -70,6 +74,9 @@
 
     @Autowired
     private IServiceFundflowService serviceFundflowService;
+
+    @Autowired
+    private IServiceFundService serviceFundService;
 
     @Autowired
     private ISysPostService postService;
@@ -437,6 +444,7 @@
 //        return 0;
 //    }
 
+
     /**
      * 宸梾璐逛笂鎶�
      */
@@ -445,6 +453,20 @@
     @PostMapping("/travelexpensereport")
     public AjaxResult travelexpensereport(@RequestBody CheckFundVO checkFundVO) {
         ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid());
+        //濡傛灉绛変簬100锛岃鏄庡凡缁忚蛋鍒板尰闄㈣储鍔¢偅杈逛簡锛涜储鍔¢偅杈瑰彇鏁版嵁鏄粠鍒嗕韩琛ㄥ彇锛屾墍浠ワ紝杩欓噷鐩存帴寰�鍒嗕韩琛ㄩ噷娣诲姞鏁版嵁灏辫浜�
+        if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) {
+
+            //灏嗕慨鏀圭殑涓婃姤鏁版嵁 鏂板涓�鏉�
+            ServiceReimbursementShared serviceReimbursementShared = DtoConversionUtils.sourceToTarget(serviceReimbursement, ServiceReimbursementShared.class);
+            serviceReimbursementShared.setId(null);
+            serviceReimbursementShared.setDelFlag(0L);
+            serviceReimbursementSharedService.save(serviceReimbursementShared);
+
+            //灏嗛��鍥為樁娈佃缃垚100
+            serviceReimbursement.setBackflowlevel(100L);
+            serviceReimbursementService.updateById(serviceReimbursement);
+            return success();
+        }
         if (serviceReimbursement != null) {
             Integer TotalLevel = 0;
             LoginUser loginUser = getLoginUser();
@@ -453,10 +475,12 @@
 
             if (!postids.contains(2)) {
                 serviceReimbursement.setFlowlevel(1L);
+                serviceReimbursement.setBackflowlevel(1L);
                 serviceReimbursement.setRecordstatus(2);
             } else {
                 serviceReimbursement.setFlowlevel(0L);
                 serviceReimbursement.setRecordstatus(0);
+                serviceReimbursement.setBackflowlevel(0L);
             }
 
             if (!postids.contains(2)) {
@@ -489,6 +513,7 @@
     @PostMapping("/checkfund")
     public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) {
         ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid());
+
         if (serviceReimbursement != null) {
             Integer totalLevel = 0;
             LoginUser loginUser = getLoginUser();
@@ -514,6 +539,9 @@
             Integer CheckFlag = 0;
             Integer RecordStatus = serviceReimbursement.getRecordstatus();
             Integer FlowLevel = Integer.valueOf(serviceReimbursement.getFlowlevel().toString());
+            if (Objects.isNull(serviceReimbursement.getBackflowlevel()) && !Objects.isNull(serviceReimbursement.getFlowlevel())) {
+                serviceReimbursement.setBackflowlevel(Long.valueOf(FlowLevel.toString()));
+            }
             Integer OriginalFlowLevel = FlowLevel;
             if (checkFundVO.getFlowconclusion() == 1) {
                 CheckFlag = 1;
@@ -530,16 +558,22 @@
                 FlowLevel = FlowLevel + 1;
             } else {
                 CheckFlag = 2;
-                RecordStatus = (FlowLevel + 1) * 2 - 1;
-                FlowLevel = (FlowLevel - 1);
-                if (FlowLevel < 0) {
+
+                if (CheckFlag == 2) {
+                    //搴斿尰闄㈣姹傚鏋滃嚭鐜伴��鍥烇紝鐩存帴閫�鍒板彂璧疯��
                     FlowLevel = 0;
+                } else {
+                    //涓嬮潰鏄師鏉ョ殑鍐欐硶锛屼竴绾т竴绾х殑寰�涓嬮��锛屽尰闄㈢幇鍦ㄤ笉瑕佽繖鏍锋悶浜嗭紝涓嬮潰杩欐浠g爜鍏堜繚鐣欙紝绛夊尰闄㈠洖蹇冭浆鎰忥紝鍐嶇粰鏀惧紑
+                    RecordStatus = (FlowLevel + 1) * 2 - 1;
+                    FlowLevel = (FlowLevel - 1);
+                    if (FlowLevel < 0) {
+                        FlowLevel = 0;
+                    }
                 }
             }
 
             serviceReimbursement.setRecordstatus(RecordStatus);
             serviceReimbursement.setFlowlevel(Long.valueOf(FlowLevel.toString()));
-
             ServiceFundflow serviceFundflow = new ServiceFundflow();
             SysUser user = loginUser.getUser();
             serviceFundflow.setFundid(serviceReimbursement.getId());

--
Gitblit v1.9.3