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 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java                   |  162 ++++++
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceReimbursementSharedMapper.java            |   11 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java                           |    5 
 ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml                        |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java                    |   56 ++
 ruoyi-quartz/pom.xml                                                                                  |    6 
 ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml                  |  279 +++++++----
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingTalkReqVo.java                            |   51 ++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java                |    1 
 ruoyi-project/pom.xml                                                                                 |   21 
 ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementpayeeSharedMapper.xml             |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementSharedService.java         |   17 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java                  |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java                 |   39 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java       |    4 
 ruoyi-admin/src/main/resources/application.yml                                                        |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundSharedMapper.java                     |    2 
 ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml                           |    7 
 ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml                           |    1 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementSharedServiceImpl.java |  192 ++++---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                                          |  116 ++++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java                                 |    6 
 ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml                                 |  191 ++++--
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java                        |  150 ++++-
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java                     |    5 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundSharedServiceImpl.java          |   16 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementpayeeShared.java             |    5 
 ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java                            |   18 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundSharedService.java                  |   15 
 30 files changed, 1,099 insertions(+), 342 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java
new file mode 100644
index 0000000..a9d40b8
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java
@@ -0,0 +1,56 @@
+package com.ruoyi.web.controller.project;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.project.domain.vo.DingTalkReqVo;
+import com.ruoyi.project.service.DingTalkService;
+import com.taobao.api.ApiException;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.PropertySource;
+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;
+
+/**
+ * 閽夐拤鎺ュ彛
+ *
+ * @author liusheng
+ * @date 2023-05-15
+ */
+@Api(description = "閽夐拤鎺ュ彛")
+@RestController
+@RequestMapping("/smartor/dingtalk")
+@PropertySource(value = {"classpath:application-druid.yml"})
+public class DingTalkController extends BaseController {
+
+    @Value("${dingAppid}")
+    private String dingAppid;
+
+    @Value("${dingAppSecret}")
+    private String dingAppSecret;
+
+    @Autowired
+    private DingTalkService dingTalkService;
+
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�
+     *
+     * @param dingTalkReqVo 鍙戦�佸唴瀹�
+     * @throws ApiException
+     */
+    @ApiOperation("鍙戦�侀拤閽夋秷鎭�")
+    @PostMapping("/sendNotification")
+    public AjaxResult sendNotification(@RequestBody DingTalkReqVo dingTalkReqVo) {
+        Boolean aBoolean = dingTalkService.sendNotification(dingTalkReqVo);
+        if (aBoolean) {
+            return success();
+        }
+        return error();
+    }
+
+}
+
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
index ac64e1f..4ff99cf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -450,7 +450,7 @@
     @Log(title = "瀹℃牳璐圭敤", businessType = BusinessType.OTHER)
     @PostMapping("/checkfund")
     public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) {
-        logger.info("serviceFundController---checkFund鐨勫叆鍙傚�糲heckFundVO :{}",checkFundVO);
+        logger.info("serviceFundController---checkFund鐨勫叆鍙傚�糲heckFundVO :{}", checkFundVO);
         ServiceFund serviceFund = serviceFundService.getById(checkFundVO.getFundid());
         if (serviceFund != null) {
             Integer TotalLevel = 0;
@@ -459,7 +459,7 @@
             serviceFundflowrule.setFundtype(2);
             serviceFundflowrule.setApplytype(serviceFund.getApplytype());
             serviceFundflowrule.setCheckuserno(loginUser.getUsername());
-            logger.info("serviceFundController---checkFund---queryList鐨勫叆鍙傚�約erviceFundflowrule:{}",serviceFundflowrule);
+            logger.info("serviceFundController---checkFund---queryList鐨勫叆鍙傚�約erviceFundflowrule:{}", serviceFundflowrule);
 
             List<ServiceFundflowrule> serviceFundflowrules = serviceFundflowruleService.queryList(serviceFundflowrule);
 
@@ -493,10 +493,15 @@
                 FlowLevel = FlowLevel + 1;
             } else {
                 CheckFlag = 2;
-                RecordStatus = (FlowLevel + 1) * 2 - 1;
-                FlowLevel = (FlowLevel - 1);
-                if (FlowLevel < 0) {
+                if (CheckFlag == 2) {
+                    //搴斿尰闄㈣姹傚鏋滃嚭鐜伴��鍥烇紝鐩存帴閫�鍒板彂璧疯��
                     FlowLevel = 0;
+                } else {
+                    RecordStatus = (FlowLevel + 1) * 2 - 1;
+                    FlowLevel = (FlowLevel - 1);
+                    if (FlowLevel < 0) {
+                        FlowLevel = 0;
+                    }
                 }
             }
 
@@ -550,7 +555,7 @@
                     columnMap.put("fundID", checkFundVO.getFundid());
                     //鑾峰彇璇︽儏鏁版嵁
                     List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.selectByMap(columnMap);
-                    logger.info("serviceFundController---checkFund鐨勮繑鍥炲�約erviceFunddetails :{}",serviceFunddetails);
+                    logger.info("serviceFundController---checkFund鐨勮繑鍥炲�約erviceFunddetails :{}", serviceFunddetails);
                     List<ServiceFunddetailShared> serviceFunddetailShareds = DtoConversionUtils.sourceToTarget(serviceFunddetails, ServiceFunddetailShared.class);
                     for (int i = 0; i < serviceFunddetails.size(); i++) {
                         serviceFunddetailShareds.get(i).setFundid(serviceFundShared.getId());
@@ -589,11 +594,29 @@
     @PutMapping
     @RepeatSubmit
     public AjaxResult edit(@RequestBody ServiceFund serviceFund) {
-        boolean bret = serviceFundService.updateById(serviceFund);
+        List<ServiceFund> infoByInfoIdList = serviceFundService.getInfoByInfoId(serviceFund.getId());
+        for (ServiceFund sf : infoByInfoIdList) {
+            //濡傛灉绛変簬100锛岃鏄庡凡缁忚蛋鍒板尰闄㈣储鍔¢偅杈逛簡锛涜储鍔¢偅杈瑰彇鏁版嵁鏄粠鍒嗕韩琛ㄥ彇锛屾墍浠ワ紝杩欓噷鐩存帴寰�鍒嗕韩琛ㄩ噷娣诲姞鏁版嵁灏辫浜�
+            if (sf.getBackflowlevel() == 100 || sf.getBackflowlevel() == 199) {
+                ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class);
+                serviceFundShared.setId(null);
+                serviceFundShared.setDel_flag(0);
+                fundSharedService.save(serviceFundShared);
+
+                //灏唂und琛ㄧ殑瀹℃牳鐘舵�佹敼鎴�100
+                sf.setBackflowlevel(100);
+                serviceFundService.updateById(sf);
+                return success();
+            } else {
+                boolean bret = serviceFundService.updateById(serviceFund);
 //        if (bret) {
 //            addReiSharedDatd(serviceFund, 2);
 //        }
-        return toAjax(bret);
+                return toAjax(bret);
+            }
+        }
+
+        return toAjax(false);
     }
 
     /**
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());
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index d64eb23..2f5501a 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -140,3 +140,7 @@
   excludes: /system/notice
   # 鍖归厤閾炬帴
   urlPatterns: /system/*,/monitor/*,/tool/*
+
+#閽夐拤鐨勫瘑閽�
+dingAppid: dingn8iip5ubj7clrrsv
+dingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD
diff --git a/ruoyi-project/pom.xml b/ruoyi-project/pom.xml
index c33bc74..820fe03 100644
--- a/ruoyi-project/pom.xml
+++ b/ruoyi-project/pom.xml
@@ -27,6 +27,27 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-system</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.26</version>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>4.10.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+        <!-- 闃块噷JSON瑙f瀽鍣� -->
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.25</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
index 60503db..7d2a7c7 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
@@ -205,6 +205,12 @@
     @ApiModelProperty("褰撳墠瀹℃牳绾у埆")
     private int flowlevel;
 
+    /**
+     * 澶勪簬鍝釜闃舵 0锛氱敵璇凤紱1锛氫竴绾у鏍革紱2锛氫簩绾у鏍革紱3锛氫笁绾у鏍哥瓑  100锛氬尰闄㈣储鍔�  199:鍖婚櫌椹冲洖
+     */
+    @ApiModelProperty("閫�鍥炲鏍哥骇鍒�")
+    private int backflowlevel;
+
     /** 绋庡墠閲戦 */
     @ApiModelProperty("绋庡墠閲戦")
     @Excel(name = "绋庡墠閲戦")
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java
index 3bd7e20..06fd6fd 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFundShared.java
@@ -256,5 +256,10 @@
     @Excel(name = "璁板綍鐘舵��")
     private long serfunid;
 
+
+    @ApiModelProperty("璐㈠姟椹冲洖淇℃伅锛氬鍚�+' '+鏃堕棿+' '+鎰忚")
+    @Excel(name = "璐㈠姟椹冲洖淇℃伅锛氬鍚�+' '+鏃堕棿+' '+鎰忚")
+    private String cxrjyj;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java
index 5e998e3..4c0ed0d 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursement.java
@@ -13,163 +13,222 @@
 
 /**
  * 鎶ラ攢鐢宠瀵硅薄 service_reimbursement
- * 
+ *
  * @author ruoyi
  * @date 2022-01-24
  */
 @Data
 @ApiModel("鎶ラ攢鐢宠")
-public class ServiceReimbursement extends BaseEntity
-{
+public class ServiceReimbursement extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
+    /**
+     * $column.columnComment
+     */
     @ApiModelProperty("$column.columnComment")
     //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
     @TableId(type = IdType.AUTO)
     private Long id;
 
-    /** 鎶ラ攢浜虹紪鍙� */
+    /**
+     * 鎶ラ攢浜虹紪鍙�
+     */
     @ApiModelProperty("鎶ラ攢浜虹紪鍙�")
     @Excel(name = "鎶ラ攢浜虹紪鍙�")
     private String userno;
 
-    /** 鎶ラ攢浜哄鍚� */
+    /**
+     * 鎶ラ攢浜哄鍚�
+     */
     @ApiModelProperty("鎶ラ攢浜哄鍚�")
     @Excel(name = "鎶ラ攢浜哄鍚�")
     private String username;
 
-    /** 璇佷欢绫诲瀷 鏍规嵁瀛楀吀sys_IDType */
+    /**
+     * 璇佷欢绫诲瀷 鏍规嵁瀛楀吀sys_IDType
+     */
     @ApiModelProperty("璇佷欢绫诲瀷 鏍规嵁瀛楀吀sys_IDType")
     @Excel(name = "璇佷欢绫诲瀷 鏍规嵁瀛楀吀sys_IDType")
     private String idcardtype;
 
-    /** 璇佷欢鍙风爜 */
+    /**
+     * 璇佷欢鍙风爜
+     */
     @ApiModelProperty("璇佷欢鍙风爜")
     @Excel(name = "璇佷欢鍙风爜")
     private String idcardno;
 
-    /** 鑱旂郴鐢佃瘽 */
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
     @ApiModelProperty("鑱旂郴鐢佃瘽")
     @Excel(name = "鑱旂郴鐢佃瘽")
     private String phone;
 
-    /** 寮�鎴烽摱琛� */
+    /**
+     * 寮�鎴烽摱琛�
+     */
     @ApiModelProperty("寮�鎴烽摱琛�")
     @Excel(name = "寮�鎴烽摱琛�")
     private String depositbank;
 
-    /** 鍗″彿 */
+    /**
+     * 鍗″彿
+     */
     @ApiModelProperty("鍗″彿")
     @Excel(name = "鍗″彿")
     private String bankcardno;
 
-    /** 鍒嗚鍚嶇О */
+    /**
+     * 鍒嗚鍚嶇О
+     */
     @ApiModelProperty("鍒嗚鍚嶇О")
     @Excel(name = "鍒嗚鍚嶇О")
     private String branchbankname;
 
-    /** 閾惰鍗$収鐗囪矾寰� 澶氫釜鐢�;鍒嗗紑 */
+    /**
+     * 閾惰鍗$収鐗囪矾寰� 澶氫釜鐢�;鍒嗗紑
+     */
     @ApiModelProperty("閾惰鍗$収鐗囪矾寰� 澶氫釜鐢�;鍒嗗紑")
     @Excel(name = "閾惰鍗$収鐗囪矾寰� 澶氫釜鐢�;鍒嗗紑")
     private String annexbankcard;
 
-    /** 闄勪欢璺緞 澶氫釜鐢�;鍒嗗紑 */
+    /**
+     * 闄勪欢璺緞 澶氫釜鐢�;鍒嗗紑
+     */
     @ApiModelProperty("闄勪欢璺緞 澶氫釜鐢�;鍒嗗紑")
     @Excel(name = "闄勪欢璺緞 澶氫釜鐢�;鍒嗗紑")
     private String annexfiles;
 
-    /** 鐢宠閲戦 */
+    /**
+     * 鐢宠閲戦
+     */
     @ApiModelProperty("鐢宠閲戦")
     @Excel(name = "鐢宠閲戦")
     private Double amountrequested;
 
-    /** 棰勬敮璐圭敤 */
+    /**
+     * 棰勬敮璐圭敤
+     */
     @ApiModelProperty("棰勬敮璐圭敤")
     @Excel(name = "棰勬敮璐圭敤")
     private Double prepaidamount;
 
-    /** 鍙戠エ寮犳暟 */
+    /**
+     * 鍙戠エ寮犳暟
+     */
     @ApiModelProperty("鍙戠エ寮犳暟")
     @Excel(name = "鍙戠エ寮犳暟")
     private Long invoicecount;
 
-    /** 闄勪欢鏁� */
+    /**
+     * 闄勪欢鏁�
+     */
     @ApiModelProperty("闄勪欢鏁�")
     @Excel(name = "闄勪欢鏁�")
     private Long attachcount;
 
-    /** 閮ㄩ棬涓荤宸ュ彿 */
+    /**
+     * 閮ㄩ棬涓荤宸ュ彿
+     */
     @ApiModelProperty("閮ㄩ棬涓荤宸ュ彿")
     @Excel(name = "閮ㄩ棬涓荤宸ュ彿")
     private String managerno;
 
-    /** 閮ㄩ棬涓荤鍚嶅瓧 */
+    /**
+     * 閮ㄩ棬涓荤鍚嶅瓧
+     */
     @ApiModelProperty("閮ㄩ棬涓荤鍚嶅瓧")
     @Excel(name = "閮ㄩ棬涓荤鍚嶅瓧")
     private String managername;
 
-    /** 閮ㄩ棬缂栧彿 */
+    /**
+     * 閮ㄩ棬缂栧彿
+     */
     @ApiModelProperty("閮ㄩ棬缂栧彿")
     @Excel(name = "閮ㄩ棬缂栧彿")
     private String deptmentno;
 
-    /** 閮ㄩ棬鍚嶇О */
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
     @ApiModelProperty("閮ㄩ棬鍚嶇О")
     @Excel(name = "閮ㄩ棬鍚嶇О")
     private String deptmentname;
 
-    /** 涓績绛惧瓧 */
+    /**
+     * 涓績绛惧瓧
+     */
     @ApiModelProperty("涓績绛惧瓧")
     @Excel(name = "涓績绛惧瓧")
     private String opochecker;
 
-    /** 璐㈠姟鍓櫌闀跨瀛� */
+    /**
+     * 璐㈠姟鍓櫌闀跨瀛�
+     */
     @ApiModelProperty("璐㈠姟鍓櫌闀跨瀛�")
     @Excel(name = "璐㈠姟鍓櫌闀跨瀛�")
     private String finvicepresident;
 
-    /** 涓氬姟鍓櫌闀跨瀛� */
+    /**
+     * 涓氬姟鍓櫌闀跨瀛�
+     */
     @ApiModelProperty("涓氬姟鍓櫌闀跨瀛�")
     @Excel(name = "涓氬姟鍓櫌闀跨瀛�")
     private String busvicepresident;
 
-    /** 鍔炲叕瀹や富浠荤瀛� */
+    /**
+     * 鍔炲叕瀹や富浠荤瀛�
+     */
     @ApiModelProperty("鍔炲叕瀹や富浠荤瀛�")
     @Excel(name = "鍔炲叕瀹や富浠荤瀛�")
     private String officedirector;
 
-    /** 璐㈠姟瀹や富浠荤瀛� */
+    /**
+     * 璐㈠姟瀹や富浠荤瀛�
+     */
     @ApiModelProperty("璐㈠姟瀹や富浠荤瀛�")
     @Excel(name = "璐㈠姟瀹や富浠荤瀛�")
     private String financedirector;
 
-    /** 璐㈠姟瀹℃牳 */
+    /**
+     * 璐㈠姟瀹℃牳
+     */
     @ApiModelProperty("璐㈠姟瀹℃牳")
     @Excel(name = "璐㈠姟瀹℃牳")
     private String financechecher;
 
-    /** 鍏宠仈service_donatebaseinfo琛ㄧ殑ID */
+    /**
+     * 鍏宠仈service_donatebaseinfo琛ㄧ殑ID
+     */
     @ApiModelProperty("鍏宠仈service_donatebaseinfo琛ㄧ殑ID")
     @Excel(name = "鍏宠仈service_donatebaseinfo琛ㄧ殑ID")
     private Long infoid;
 
-    /** 鎹愮尞鑰呯紪鍙� */
+    /**
+     * 鎹愮尞鑰呯紪鍙�
+     */
     @ApiModelProperty("鎹愮尞鑰呯紪鍙�")
     @Excel(name = "鎹愮尞鑰呯紪鍙�")
     private String donorno;
 
-    /** 璁板綍鐘舵�� */
+    /**
+     * 璁板綍鐘舵��
+     */
     @ApiModelProperty("璁板綍鐘舵��")
     @Excel(name = "璁板綍鐘舵��")
     private Integer recordstatus;
 
-    /** 涓婁紶鏍囧織 */
+    /**
+     * 涓婁紶鏍囧織
+     */
     @ApiModelProperty("涓婁紶鏍囧織")
     @Excel(name = "涓婁紶鏍囧織")
     private String uploadflag;
 
-    /** 涓婁紶鏃堕棿 */
+    /**
+     * 涓婁紶鏃堕棿
+     */
     @ApiModelProperty("涓婁紶鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @Excel(name = "涓婁紶鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@@ -191,22 +250,35 @@
     @ApiModelProperty("鎬婚噾棰濈殑澶у啓")
     private String bigstrmoney;
 
-    /** 闄勪欢鍦板潃锛宎dd by yangjb 20221124 */
+    /**
+     * 闄勪欢鍦板潃锛宎dd by yangjb 20221124
+     */
     @ApiModelProperty("闄勪欢鍦板潃")
     private String fileurl;
 
     private String remark;
 
-    /** 褰撳墠瀹℃牳绾у埆 澶勪簬鍝釜闃舵 0锛氱敵璇凤紱1锛氫竴绾у鏍革紱2锛氫簩绾у鏍革紱3锛氫笁绾у鏍哥瓑 */
+    /**
+     * 褰撳墠瀹℃牳绾у埆 澶勪簬鍝釜闃舵 0锛氱敵璇凤紱1锛氫竴绾у鏍革紱2锛氫簩绾у鏍革紱3锛氫笁绾у鏍哥瓑
+     */
     @ApiModelProperty("褰撳墠瀹℃牳绾у埆")
     private Long flowlevel;
 
+    /**
+     * 99:瀹℃壒椹冲洖    100锛氫笂浼犲尰闄�  199锛氬尰闄㈤┏鍥�
+     */
+    @ApiModelProperty("閫�鍥炴椂鐨勫鏍哥骇鍒�")
+    private Long backflowlevel;
 
-    /** 璐圭敤褰掑睘锛�0锛氬叾浠栦汉鍛橈紱1锛氫笓鑱屼汉鍛橈紱2锛氬崗璋冨憳锛�3锛氫笓瀹讹紱4锛氭崘鐚�呭灞� */
+    /**
+     * 璐圭敤褰掑睘锛�0锛氬叾浠栦汉鍛橈紱1锛氫笓鑱屼汉鍛橈紱2锛氬崗璋冨憳锛�3锛氫笓瀹讹紱4锛氭崘鐚�呭灞�
+     */
     @ApiModelProperty("璐圭敤褰掑睘")
     private String costtype;
 
-    /** 璐圭敤褰掑睘鎻忚堪 */
+    /**
+     * 璐圭敤褰掑睘鎻忚堪
+     */
     @ApiModelProperty("璐圭敤褰掑睘鎻忚堪")
     private String costtypename;
 
@@ -229,6 +301,10 @@
     @ApiModelProperty("鐢宠鏃堕棿")
     private Date createTime;
 
+
+    @ApiModelProperty("鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 1浠h〃鍒犻櫎锛�")
+    private Integer delFlag;
+
 //    @ApiModelProperty("寮�濮嬫椂闂�")
 //    private Date starttime;
 //
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java
index b73c2db..a1b4d20 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementShared.java
@@ -262,6 +262,9 @@
     @ApiModelProperty("鎹愮尞瀹跺睘浜烘暟")
     private Integer donorrelatives;
 
+    @ApiModelProperty("璐㈠姟绯荤粺椹冲洖淇℃伅锛氬鍚�+' '+鏃堕棿+' '+鎰忚")
+    private String cxrjyj;
+
     @Override
     public String toString() {
         return "ServiceReimbursementShared{" +
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementpayeeShared.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementpayeeShared.java
index b06dba2..1f215fa 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementpayeeShared.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceReimbursementpayeeShared.java
@@ -59,6 +59,11 @@
     @Excel(name = "寮�鎴烽摱琛�")
     private String bankname;
 
+    /** 鍒犻櫎 */
+    @ApiModelProperty("鍒犻櫎")
+    @Excel(name = "鍒犻櫎")
+    private Integer delFlag;
+
     /** 澶囨敞 */
     @ApiModelProperty("澶囨敞")
     @Excel(name = "澶囨敞")
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingTalkReqVo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingTalkReqVo.java
new file mode 100644
index 0000000..1b2afdd
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingTalkReqVo.java
@@ -0,0 +1,51 @@
+package com.ruoyi.project.domain.vo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 閽夐拤娑堟伅鍙戦��
+ *
+ * @author ls
+ * @date 2023-07-14
+ */
+@Data
+@ApiModel(value = "DingTalkReqVo", description = "閽夐拤娑堟伅鍙戦��")
+public class DingTalkReqVo extends BaseEntity {
+
+    /**
+     * 鍙戦�佸唴瀹�
+     */
+    @ApiModelProperty(value = "鍙戦�佸唴瀹�")
+    private List<ConcurrentHashMap<String, String>> contents;
+
+    /**
+     * 鐢ㄦ埛閽夐拤鍙�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鎵嬫満鍙�")
+    private String number;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private Long deptId;
+
+    /**
+     * 鍙戦�佹秷鎭殑鏍囬
+     */
+    @ApiModelProperty(value = "鍙戦�佹秷鎭殑鏍囬")
+    private String title;
+
+    /**
+     * 璺宠浆url
+     */
+    @ApiModelProperty(value = "璺宠浆url")
+    private String url;
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundSharedMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundSharedMapper.java
index 6f79e78..5c5d5aa 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundSharedMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundSharedMapper.java
@@ -24,4 +24,6 @@
     public List<ServiceFundShared> selectServiceFundSharedList(ServiceFundShared serviceFundShared);
 
     List<ServiceFundShared> getFundShareInfoById(Long fundid);
+
+    Boolean delfundsharedInfoById(Long fundId);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
index 4ab866a..5f5e1ab 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
@@ -46,4 +46,7 @@
     public List<ServiceFunddetail> getDataBybeneficiaryNo(FunddetailReqVo funddetailReqVo);
 
     List<ServiceFunddetail> getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyV);
-}
+
+
+
+    }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceReimbursementSharedMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceReimbursementSharedMapper.java
index 50ae48c..7d3d11e 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceReimbursementSharedMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceReimbursementSharedMapper.java
@@ -1,19 +1,20 @@
 package com.ruoyi.project.mapper;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.project.domain.ServiceReimbursementShared;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 
 
-
 /**
  * 鎶ラ攢鐢宠Mapper鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2023-01-10
  */
-public interface ServiceReimbursementSharedMapper extends BaseMapper<ServiceReimbursementShared>
-{
+@Mapper
+public interface ServiceReimbursementSharedMapper extends BaseMapper<ServiceReimbursementShared> {
     /**
      * 鏌ヨ鎶ラ攢鐢宠鍒楄〃
      *
@@ -23,4 +24,6 @@
     public List<ServiceReimbursementShared> selectServiceReimbursementSharedList(ServiceReimbursementShared serviceReimbursementShared);
 
     List<ServiceReimbursementShared> getRemShareInfoByRemId(Long RemId);
+
+    Boolean delResharedInfoById(Long id);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java
new file mode 100644
index 0000000..02e099f
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java
@@ -0,0 +1,18 @@
+package com.ruoyi.project.service;
+
+import com.ruoyi.project.domain.vo.DingTalkReqVo;
+
+/**
+ * 瀹f暀鍒嗙被Service鎺ュ彛
+ *
+ * @author smartor
+ * @date 2023-03-04
+ */
+public interface DingTalkService {
+    /**
+     * 鍙戦�侀拤閽夋秷鎭�
+     *
+     * @param dingTalkReqVo
+     */
+    Boolean sendNotification(DingTalkReqVo dingTalkReqVo);
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundSharedService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundSharedService.java
index fec5cf7..71ab174 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundSharedService.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundSharedService.java
@@ -2,24 +2,29 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.project.domain.ServiceFundShared;
+import com.ruoyi.project.domain.ServiceReimbursementShared;
 
 import java.util.List;
 
 /**
  * 璐圭敤鐢宠涓籗ervice鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2023-03-27
  */
-public interface IServiceFundSharedService extends IService<ServiceFundShared>
-{
+public interface IServiceFundSharedService extends IService<ServiceFundShared> {
 
     /**
      * 鏌ヨ璐圭敤鐢宠涓诲垪琛�
-     * 
+     *
      * @param serviceFundShared 璐圭敤鐢宠涓�
      * @return 璐圭敤鐢宠涓婚泦鍚�
      */
-    public List<ServiceFundShared> queryList(ServiceFundShared serviceFundShared);
+    List<ServiceFundShared> queryList(ServiceFundShared serviceFundShared);
+
+    List<ServiceFundShared> queryFundShareList();
+
     List<ServiceFundShared> getFundShareInfoById(Long fundid);
+
+    Boolean delfundsharedInfoById(Long fundId);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementSharedService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementSharedService.java
index fed44c8..ca14a0c 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementSharedService.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceReimbursementSharedService.java
@@ -7,19 +7,28 @@
 
 /**
  * 鎶ラ攢鐢宠Service鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2023-01-10
  */
-public interface IServiceReimbursementSharedService extends IService<ServiceReimbursementShared>
-{
+public interface IServiceReimbursementSharedService extends IService<ServiceReimbursementShared> {
 
     /**
      * 鏌ヨ鎶ラ攢鐢宠鍒楄〃
-     * 
+     *
      * @param serviceReimbursementShared 鎶ラ攢鐢宠
      * @return 鎶ラ攢鐢宠闆嗗悎
      */
     public List<ServiceReimbursementShared> queryList(ServiceReimbursementShared serviceReimbursementShared);
+
     List<ServiceReimbursementShared> getRemShareInfoByRemId(Long remeid);
+
+    /**
+     * 鏌ヨ琚��鍥炵殑锛屽苟涓旀病鏈夊垹闄ょ殑鏁版嵁
+     *
+     * @return
+     */
+    List<ServiceReimbursementShared> queryReShareList();
+
+    Boolean delResharedInfoById(Long remid);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
new file mode 100644
index 0000000..51d48ef
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
@@ -0,0 +1,162 @@
+package com.ruoyi.project.service.impl;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiGettokenRequest;
+import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
+import com.dingtalk.api.request.OapiUserListidRequest;
+import com.dingtalk.api.request.OapiV2UserGetbymobileRequest;
+import com.dingtalk.api.response.OapiGettokenResponse;
+import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
+import com.dingtalk.api.response.OapiUserListidResponse;
+import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.domain.vo.DingTalkReqVo;
+import com.ruoyi.project.service.DingTalkService;
+import com.taobao.api.ApiException;
+import lombok.extern.log4j.Log4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 鏅鸿兘涓績
+ *
+ * @author ls
+ * @date 2023-05-23
+ */
+@Service
+@Log4j
+public class DingTalkServiceImpl implements DingTalkService {
+
+
+    @Value("${dingAppid}")
+    private String dingAppid;
+
+    @Value("${dingAppSecret}")
+    private String dingAppSecret;
+
+    @Override
+    public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) {
+        String body = null;
+        List<String> userIdlist = new ArrayList();
+        Boolean result = false;
+        log.info("鍙戦�侀拤閽夐�氱煡");
+
+        String accessToken = null;
+        try {
+            accessToken = getAccessToken();
+        } catch (ApiException e) {
+            e.printStackTrace();
+        }
+        if (StringUtils.isNotEmpty(dingTalkReqVo.getNumber())) {
+            DingTalkClient clientT = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile");
+            OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
+            req.setMobile(dingTalkReqVo.getNumber());
+            OapiV2UserGetbymobileResponse rsp = null;
+            try {
+                rsp = clientT.execute(req, accessToken);
+                body = rsp.getBody();
+                String jsonObject = JSONObject.parseObject(body).getJSONObject("result").get("userid").toString();
+                userIdlist.add(jsonObject);
+
+            } catch (ApiException e) {
+                e.printStackTrace();
+            }
+        } else {
+            DingTalkClient client3 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/listid");
+
+            OapiUserListidRequest request2 = new OapiUserListidRequest();
+            request2.setDeptId(dingTalkReqVo.getDeptId()); // 璁剧疆瑕佽幏鍙栫殑閮ㄩ棬 ID锛岃繖閲屼互鏍归儴闂ㄤ负渚�675909059L
+            // 璁剧疆閮ㄩ棬 ID锛屽鏋滆幏鍙栨墍鏈夊憳宸ユ墜鏈哄彿锛屽彲浠ヨ缃负鏍归儴闂ㄧ殑 ID
+            OapiUserListidResponse response2 = null;
+            try {
+                response2 = client3.execute(request2, accessToken);
+            } catch (ApiException e) {
+                e.printStackTrace();
+            }
+            body = response2.getBody();
+            // 瑙f瀽涓篔SONObject
+            JSONObject jsonObject = JSONObject.parseObject(body);
+            // 鎻愬彇鍑篔SONArray
+            JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("userid_list"));
+            // 灏咼SONArray杞负List鍒楄〃
+            String str = JSONObject.toJSONString(jsonArray);
+            userIdlist = JSONObject.parseObject(str, List.class);
+        }
+
+
+        //userid鏁扮粍
+        for (String urid : userIdlist) {
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
+            OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();
+            request.setUseridList(urid);
+            request.setAgentId(1779052814L);
+            request.setToAllUser(false);
+
+            //鍙戦�佸唴瀹瑰鐞�
+            List<ConcurrentHashMap<String, String>> contents = dingTalkReqVo.getContents();
+            ArrayList<OapiMessageCorpconversationAsyncsendV2Request.Form> objects = new ArrayList<>();
+            for (int i = 0; i < contents.size(); i++) {
+                ConcurrentHashMap<String, String> map = contents.get(i);
+                for (Map.Entry<String, String> entry : map.entrySet()) {
+                    OapiMessageCorpconversationAsyncsendV2Request.Form formSeverityDesc = new OapiMessageCorpconversationAsyncsendV2Request.Form();
+                    formSeverityDesc.setKey(entry.getKey());
+                    formSeverityDesc.setValue(entry.getValue());
+                    objects.add(formSeverityDesc);
+                }
+            }
+
+            OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
+            msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA());
+            msg.getOa().setMessageUrl(dingTalkReqVo.getUrl());
+            msg.getOa().setPcMessageUrl(dingTalkReqVo.getUrl());
+            msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head());
+            //   msg.getOa().getHead().setText("浣犲湪璇村暐鍛㈢粧椤舵浛鑻涘ず闃挎柉钂傝姮闃挎柉钂傝姮");
+            msg.getOa().getHead().setBgcolor("00409eff");
+            msg.getOa().setBody(new OapiMessageCorpconversationAsyncsendV2Request.Body());
+            msg.getOa().getBody().setTitle(dingTalkReqVo.getTitle());
+            // msg.getOa().getBody().setContent("寰呭鐞�:" + "123" + "鏉�");
+
+            msg.getOa().getBody().setForm(objects);
+            msg.setMsgtype("oa");
+            request.setMsg(msg);
+            //  log.info("鑾峰彇鍙戦�侀�氱煡娑堟伅浣撳拰鑾峰彇鍙戦�侀�氱煡浜哄畬鎴�");
+            OapiMessageCorpconversationAsyncsendV2Response response = null;
+            try {
+                response = client.execute(request, accessToken);
+            } catch (ApiException e) {
+                e.printStackTrace();
+            }
+
+            //  log.info("娑堟伅浠诲姟ID"+response.getTaskId());
+            System.out.println(response.getTaskId());
+
+            result = response.isSuccess();
+        }
+        return result;
+    }
+
+
+    /**
+     * 鑾峰彇 access_token
+     */
+    private String getAccessToken() throws ApiException {
+        DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
+        OapiGettokenRequest request = new OapiGettokenRequest();
+        //Appkey
+        request.setAppkey(dingAppid);
+        //Appsecret
+        request.setAppsecret(dingAppSecret);
+        /*璇锋眰鏂瑰紡*/
+        request.setHttpMethod("GET");
+        OapiGettokenResponse response = client.execute(request);
+        return response.getAccessToken();
+    }
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
index 07c8815..b6b850a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -643,7 +643,6 @@
 
         return count;
     }
-
     int uploadOAFileAndUpdateDb(ServiceFundShared remShare) {
         //涓婁紶OA鏂囦欢
         //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3";
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundSharedServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundSharedServiceImpl.java
index 25b35c3..94c632c 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundSharedServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundSharedServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.domain.ServiceFundShared;
+import com.ruoyi.project.domain.ServiceReimbursementShared;
 import com.ruoyi.project.mapper.ServiceFundSharedMapper;
 import com.ruoyi.project.service.IServiceFundSharedService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -171,9 +172,24 @@
     }
 
     @Override
+    public List<ServiceFundShared> queryFundShareList() {
+        LambdaQueryWrapper<ServiceFundShared> wrappers = Wrappers.lambdaQuery();
+        wrappers.eq(ServiceFundShared::getDel_flag, 0);
+        wrappers.isNotNull(ServiceFundShared::getCxrjyj);
+
+        return this.list(wrappers);
+    }
+
+    @Override
     public  List<ServiceFundShared> getFundShareInfoById(Long fundid)
     {
         return serviceFundSharedMapper.getFundShareInfoById(fundid);
         // return  null;
     }
+
+    @Override
+    public Boolean delfundsharedInfoById(Long fundId) {
+        return serviceFundSharedMapper.delfundsharedInfoById(fundId);
+    }
+
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
index 24e7c38..6da9c5e 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -17,6 +17,7 @@
 import com.ruoyi.project.service.IServiceReimbursementdetailSharedService;
 import com.ruoyi.project.service.IServiceReimbursementpayeeSharedService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -72,6 +73,9 @@
     @Override
     public List<ServiceReimbursement> queryList(ServiceReimbursement serviceReimbursement) {
         LambdaQueryWrapper<ServiceReimbursement> wrappers = Wrappers.lambdaQuery();
+        if (ObjectUtils.isNotEmpty(serviceReimbursement.getId())) {
+            wrappers.eq(ServiceReimbursement::getId, serviceReimbursement.getId());
+        }
         if (StringUtils.isNotBlank(serviceReimbursement.getCreateBy())) {
             wrappers.eq(ServiceReimbursement::getCreateBy, serviceReimbursement.getCreateBy());
         }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementSharedServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementSharedServiceImpl.java
index 754b633..a8fb075 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementSharedServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementSharedServiceImpl.java
@@ -14,13 +14,12 @@
 
 /**
  * 鎶ラ攢鐢宠Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2023-01-10
  */
 @Service
-public class ServiceReimbursementSharedServiceImpl extends ServiceImpl<ServiceReimbursementSharedMapper, ServiceReimbursementShared> implements IServiceReimbursementSharedService 
-{
+public class ServiceReimbursementSharedServiceImpl extends ServiceImpl<ServiceReimbursementSharedMapper, ServiceReimbursementShared> implements IServiceReimbursementSharedService {
 
 
     @Autowired
@@ -28,144 +27,159 @@
 
     /**
      * 鏌ヨ鎶ラ攢鐢宠鍒楄〃
-     * 
+     *
      * @param serviceReimbursementShared 鎶ラ攢鐢宠
      * @return 鎶ラ攢鐢宠
      */
     @Override
     public List<ServiceReimbursementShared> queryList(ServiceReimbursementShared serviceReimbursementShared) {
         LambdaQueryWrapper<ServiceReimbursementShared> wrappers = Wrappers.lambdaQuery();
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getUserno())){
-            wrappers.eq(ServiceReimbursementShared::getUserno ,serviceReimbursementShared.getUserno());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getUserno())) {
+            wrappers.eq(ServiceReimbursementShared::getUserno, serviceReimbursementShared.getUserno());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getUsername())){
-            wrappers.like(ServiceReimbursementShared::getUsername ,serviceReimbursementShared.getUsername());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getUsername())) {
+            wrappers.like(ServiceReimbursementShared::getUsername, serviceReimbursementShared.getUsername());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getTravelers())){
-            wrappers.eq(ServiceReimbursementShared::getTravelers ,serviceReimbursementShared.getTravelers());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getTravelers())) {
+            wrappers.eq(ServiceReimbursementShared::getTravelers, serviceReimbursementShared.getTravelers());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getIdcardtype())){
-            wrappers.eq(ServiceReimbursementShared::getIdcardtype ,serviceReimbursementShared.getIdcardtype());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getIdcardtype())) {
+            wrappers.eq(ServiceReimbursementShared::getIdcardtype, serviceReimbursementShared.getIdcardtype());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getIdcardno())){
-            wrappers.eq(ServiceReimbursementShared::getIdcardno ,serviceReimbursementShared.getIdcardno());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getIdcardno())) {
+            wrappers.eq(ServiceReimbursementShared::getIdcardno, serviceReimbursementShared.getIdcardno());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getPhone())){
-            wrappers.eq(ServiceReimbursementShared::getPhone ,serviceReimbursementShared.getPhone());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getPhone())) {
+            wrappers.eq(ServiceReimbursementShared::getPhone, serviceReimbursementShared.getPhone());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getDepositbank())){
-            wrappers.eq(ServiceReimbursementShared::getDepositbank ,serviceReimbursementShared.getDepositbank());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getDepositbank())) {
+            wrappers.eq(ServiceReimbursementShared::getDepositbank, serviceReimbursementShared.getDepositbank());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getBankcardno())){
-            wrappers.eq(ServiceReimbursementShared::getBankcardno ,serviceReimbursementShared.getBankcardno());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getBankcardno())) {
+            wrappers.eq(ServiceReimbursementShared::getBankcardno, serviceReimbursementShared.getBankcardno());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getBranchbankname())){
-            wrappers.like(ServiceReimbursementShared::getBranchbankname ,serviceReimbursementShared.getBranchbankname());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getBranchbankname())) {
+            wrappers.like(ServiceReimbursementShared::getBranchbankname, serviceReimbursementShared.getBranchbankname());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getAnnexbankcard())){
-            wrappers.eq(ServiceReimbursementShared::getAnnexbankcard ,serviceReimbursementShared.getAnnexbankcard());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getAnnexbankcard())) {
+            wrappers.eq(ServiceReimbursementShared::getAnnexbankcard, serviceReimbursementShared.getAnnexbankcard());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getAnnexfiles())){
-            wrappers.eq(ServiceReimbursementShared::getAnnexfiles ,serviceReimbursementShared.getAnnexfiles());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getAnnexfiles())) {
+            wrappers.eq(ServiceReimbursementShared::getAnnexfiles, serviceReimbursementShared.getAnnexfiles());
         }
-        if (serviceReimbursementShared.getAmountrequested() != null){
-            wrappers.eq(ServiceReimbursementShared::getAmountrequested ,serviceReimbursementShared.getAmountrequested());
+        if (serviceReimbursementShared.getAmountrequested() != null) {
+            wrappers.eq(ServiceReimbursementShared::getAmountrequested, serviceReimbursementShared.getAmountrequested());
         }
-        if (serviceReimbursementShared.getPrepaidamount() != null){
-            wrappers.eq(ServiceReimbursementShared::getPrepaidamount ,serviceReimbursementShared.getPrepaidamount());
+        if (serviceReimbursementShared.getPrepaidamount() != null) {
+            wrappers.eq(ServiceReimbursementShared::getPrepaidamount, serviceReimbursementShared.getPrepaidamount());
         }
-        if (serviceReimbursementShared.getInvoicecount() != null){
-            wrappers.eq(ServiceReimbursementShared::getInvoicecount ,serviceReimbursementShared.getInvoicecount());
+        if (serviceReimbursementShared.getInvoicecount() != null) {
+            wrappers.eq(ServiceReimbursementShared::getInvoicecount, serviceReimbursementShared.getInvoicecount());
         }
-        if (serviceReimbursementShared.getAttachcount() != null){
-            wrappers.eq(ServiceReimbursementShared::getAttachcount ,serviceReimbursementShared.getAttachcount());
+        if (serviceReimbursementShared.getAttachcount() != null) {
+            wrappers.eq(ServiceReimbursementShared::getAttachcount, serviceReimbursementShared.getAttachcount());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getManagerno())){
-            wrappers.eq(ServiceReimbursementShared::getManagerno ,serviceReimbursementShared.getManagerno());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getManagerno())) {
+            wrappers.eq(ServiceReimbursementShared::getManagerno, serviceReimbursementShared.getManagerno());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getManagername())){
-            wrappers.like(ServiceReimbursementShared::getManagername ,serviceReimbursementShared.getManagername());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getManagername())) {
+            wrappers.like(ServiceReimbursementShared::getManagername, serviceReimbursementShared.getManagername());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getDeptmentno())){
-            wrappers.eq(ServiceReimbursementShared::getDeptmentno ,serviceReimbursementShared.getDeptmentno());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getDeptmentno())) {
+            wrappers.eq(ServiceReimbursementShared::getDeptmentno, serviceReimbursementShared.getDeptmentno());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getDeptmentname())){
-            wrappers.like(ServiceReimbursementShared::getDeptmentname ,serviceReimbursementShared.getDeptmentname());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getDeptmentname())) {
+            wrappers.like(ServiceReimbursementShared::getDeptmentname, serviceReimbursementShared.getDeptmentname());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getOpochecker())){
-            wrappers.eq(ServiceReimbursementShared::getOpochecker ,serviceReimbursementShared.getOpochecker());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getOpochecker())) {
+            wrappers.eq(ServiceReimbursementShared::getOpochecker, serviceReimbursementShared.getOpochecker());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getFinvicepresident())){
-            wrappers.eq(ServiceReimbursementShared::getFinvicepresident ,serviceReimbursementShared.getFinvicepresident());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getFinvicepresident())) {
+            wrappers.eq(ServiceReimbursementShared::getFinvicepresident, serviceReimbursementShared.getFinvicepresident());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getBusvicepresident())){
-            wrappers.eq(ServiceReimbursementShared::getBusvicepresident ,serviceReimbursementShared.getBusvicepresident());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getBusvicepresident())) {
+            wrappers.eq(ServiceReimbursementShared::getBusvicepresident, serviceReimbursementShared.getBusvicepresident());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getOfficedirector())){
-            wrappers.eq(ServiceReimbursementShared::getOfficedirector ,serviceReimbursementShared.getOfficedirector());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getOfficedirector())) {
+            wrappers.eq(ServiceReimbursementShared::getOfficedirector, serviceReimbursementShared.getOfficedirector());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getFinancedirector())){
-            wrappers.eq(ServiceReimbursementShared::getFinancedirector ,serviceReimbursementShared.getFinancedirector());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getFinancedirector())) {
+            wrappers.eq(ServiceReimbursementShared::getFinancedirector, serviceReimbursementShared.getFinancedirector());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getFinancechecher())){
-            wrappers.eq(ServiceReimbursementShared::getFinancechecher ,serviceReimbursementShared.getFinancechecher());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getFinancechecher())) {
+            wrappers.eq(ServiceReimbursementShared::getFinancechecher, serviceReimbursementShared.getFinancechecher());
         }
-        if (serviceReimbursementShared.getInfoid() != null){
-            wrappers.eq(ServiceReimbursementShared::getInfoid ,serviceReimbursementShared.getInfoid());
+        if (serviceReimbursementShared.getInfoid() != null) {
+            wrappers.eq(ServiceReimbursementShared::getInfoid, serviceReimbursementShared.getInfoid());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getDonorno())){
-            wrappers.eq(ServiceReimbursementShared::getDonorno ,serviceReimbursementShared.getDonorno());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getDonorno())) {
+            wrappers.eq(ServiceReimbursementShared::getDonorno, serviceReimbursementShared.getDonorno());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getDonorname())){
-            wrappers.like(ServiceReimbursementShared::getDonorname ,serviceReimbursementShared.getDonorname());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getDonorname())) {
+            wrappers.like(ServiceReimbursementShared::getDonorname, serviceReimbursementShared.getDonorname());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getReason())){
-            wrappers.eq(ServiceReimbursementShared::getReason ,serviceReimbursementShared.getReason());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getReason())) {
+            wrappers.eq(ServiceReimbursementShared::getReason, serviceReimbursementShared.getReason());
         }
-        if (serviceReimbursementShared.getRecordstatus() != null){
-            wrappers.eq(ServiceReimbursementShared::getRecordstatus ,serviceReimbursementShared.getRecordstatus());
+        if (serviceReimbursementShared.getRecordstatus() != null) {
+            wrappers.eq(ServiceReimbursementShared::getRecordstatus, serviceReimbursementShared.getRecordstatus());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getUploadflag())){
-            wrappers.eq(ServiceReimbursementShared::getUploadflag ,serviceReimbursementShared.getUploadflag());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getUploadflag())) {
+            wrappers.eq(ServiceReimbursementShared::getUploadflag, serviceReimbursementShared.getUploadflag());
         }
-        if (serviceReimbursementShared.getUploadtime() != null){
-            wrappers.eq(ServiceReimbursementShared::getUploadtime ,serviceReimbursementShared.getUploadtime());
+        if (serviceReimbursementShared.getUploadtime() != null) {
+            wrappers.eq(ServiceReimbursementShared::getUploadtime, serviceReimbursementShared.getUploadtime());
         }
-        if (serviceReimbursementShared.getTotalamount() != null){
-            wrappers.eq(ServiceReimbursementShared::getTotalamount ,serviceReimbursementShared.getTotalamount());
+        if (serviceReimbursementShared.getTotalamount() != null) {
+            wrappers.eq(ServiceReimbursementShared::getTotalamount, serviceReimbursementShared.getTotalamount());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getBigstrmoney())){
-            wrappers.eq(ServiceReimbursementShared::getBigstrmoney ,serviceReimbursementShared.getBigstrmoney());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getBigstrmoney())) {
+            wrappers.eq(ServiceReimbursementShared::getBigstrmoney, serviceReimbursementShared.getBigstrmoney());
         }
-        if (serviceReimbursementShared.getFlowlevel() != null){
-            wrappers.eq(ServiceReimbursementShared::getFlowlevel ,serviceReimbursementShared.getFlowlevel());
+        if (serviceReimbursementShared.getFlowlevel() != null) {
+            wrappers.eq(ServiceReimbursementShared::getFlowlevel, serviceReimbursementShared.getFlowlevel());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getCosttype())){
-            wrappers.eq(ServiceReimbursementShared::getCosttype ,serviceReimbursementShared.getCosttype());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getCosttype())) {
+            wrappers.eq(ServiceReimbursementShared::getCosttype, serviceReimbursementShared.getCosttype());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getCosttypename())){
-            wrappers.like(ServiceReimbursementShared::getCosttypename ,serviceReimbursementShared.getCosttypename());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getCosttypename())) {
+            wrappers.like(ServiceReimbursementShared::getCosttypename, serviceReimbursementShared.getCosttypename());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getOaid())){
-            wrappers.eq(ServiceReimbursementShared::getOaid ,serviceReimbursementShared.getOaid());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getOaid())) {
+            wrappers.eq(ServiceReimbursementShared::getOaid, serviceReimbursementShared.getOaid());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getOabdzt())){
-            wrappers.eq(ServiceReimbursementShared::getOabdzt ,serviceReimbursementShared.getOabdzt());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getOabdzt())) {
+            wrappers.eq(ServiceReimbursementShared::getOabdzt, serviceReimbursementShared.getOabdzt());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getFilename())){
-            wrappers.like(ServiceReimbursementShared::getFilename ,serviceReimbursementShared.getFilename());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getFilename())) {
+            wrappers.like(ServiceReimbursementShared::getFilename, serviceReimbursementShared.getFilename());
         }
-        if (StringUtils.isNotBlank(serviceReimbursementShared.getFileid())){
-            wrappers.eq(ServiceReimbursementShared::getFileid ,serviceReimbursementShared.getFileid());
+        if (StringUtils.isNotBlank(serviceReimbursementShared.getFileid())) {
+            wrappers.eq(ServiceReimbursementShared::getFileid, serviceReimbursementShared.getFileid());
         }
+
         return this.list(wrappers);
     }
 
     @Override
-    public  List<ServiceReimbursementShared> getRemShareInfoByRemId(Long remeid)
-    {
+    public List<ServiceReimbursementShared> queryReShareList() {
+        LambdaQueryWrapper<ServiceReimbursementShared> wrappers = Wrappers.lambdaQuery();
+        wrappers.eq(ServiceReimbursementShared::getDelFlag, 0);
+        wrappers.isNotNull(ServiceReimbursementShared::getCxrjyj);
+
+        return this.list(wrappers);
+    }
+
+    @Override
+    public List<ServiceReimbursementShared> getRemShareInfoByRemId(Long remeid) {
         return serviceReimbursementSharedMapper.getRemShareInfoByRemId(remeid);
-       // return  null;
+        // return  null;
+    }
+
+    @Override
+    public Boolean delResharedInfoById(Long id) {
+
+        return serviceReimbursementSharedMapper.delResharedInfoById(id);
     }
 
 }
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
index c2d6661..18e4417 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
@@ -1,76 +1,127 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.mapper.ServiceFundMapper">
-    
-    <resultMap type="ServiceFund" id="ServiceFundResult">
-        <result property="id"    column="ID"    />
-        <result property="infoid"    column="InfoID"    />
-        <result property="donorno"    column="DonorNo"    />
-        <result property="donorname"    column="DonorName"    />
-        <result property="del_flag"    column="del_flag"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="userno"    column="UserNo"    />
-        <result property="username"    column="UserName"    />
-        <result property="unitname"    column="UnitName"    />
-        <result property="unitno"    column="UnitNo"    />
-        <result property="unituserno"    column="UnitUserNo"    />
-        <result property="phone"    column="Phone"    />
-        <result property="annexbankcard"    column="AnnexBankCard"    />
-        <result property="annexregistform"    column="AnnexRegistForm"    />
-        <result property="amountrequested"    column="AmountRequested"    />
-        <result property="applytype"    column="ApplyType"    />
-        <result property="prepaidamount"    column="PrepaidAmount"    />
-        <result property="invoicecount"    column="InvoiceCount"    />
-        <result property="attachcount"    column="AttachCount"    />
-        <result property="managerno"    column="ManagerNo"    />
-        <result property="managername"    column="ManagerName"    />
-        <result property="deptmentno"    column="DeptmentNo"    />
-        <result property="deptmentname"    column="DeptmentName"    />
-        <result property="opochecker"    column="OPOchecker"    />
-        <result property="finvicepresident"    column="FinVicePresident"    />
-        <result property="busvicepresident"    column="BusVicePresident"    />
-        <result property="officedirector"    column="OfficeDirector"    />
-        <result property="financedirector"    column="FinanceDirector"    />
-        <result property="totalcost"    column="TotalCost"    />
-        <result property="procurementcost"    column="ProcurementCost"    />
-        <result property="expertcost"    column="ExpertCost"    />
-        <result property="ethicscost"    column="EthicsCost"    />
-        <result property="medicalcost"    column="MedicalCost"    />
-        <result property="familycost"    column="FamilyCost"    />
-        <result property="aftercarecost"    column="AftercareCost"    />
-        <result property="remark"    column="Remark"    />
-        <result property="recordstatus"    column="RecordStatus"    />
-        <result property="uploadflag"    column="uploadflag"    />
-        <result property="uploadtime"    column="uploadtime"    />
-        <result property="flowlevel"    column="FlowLevel"    />
-        <result property="pretaxcost"    column="PretaxCost"    />
-        <result property="taxedcost"    column="TaxedCost"    />
+
+    <resultMap type="com.ruoyi.project.domain.ServiceFund" id="ServiceFundResult">
+        <result property="id" column="ID"/>
+        <result property="infoid" column="InfoID"/>
+        <result property="donorno" column="DonorNo"/>
+        <result property="donorname" column="DonorName"/>
+        <result property="del_flag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="userno" column="UserNo"/>
+        <result property="username" column="UserName"/>
+        <result property="unitname" column="UnitName"/>
+        <result property="unitno" column="UnitNo"/>
+        <result property="unituserno" column="UnitUserNo"/>
+        <result property="phone" column="Phone"/>
+        <result property="annexbankcard" column="AnnexBankCard"/>
+        <result property="annexregistform" column="AnnexRegistForm"/>
+        <result property="amountrequested" column="AmountRequested"/>
+        <result property="applytype" column="ApplyType"/>
+        <result property="prepaidamount" column="PrepaidAmount"/>
+        <result property="invoicecount" column="InvoiceCount"/>
+        <result property="attachcount" column="AttachCount"/>
+        <result property="managerno" column="ManagerNo"/>
+        <result property="managername" column="ManagerName"/>
+        <result property="deptmentno" column="DeptmentNo"/>
+        <result property="deptmentname" column="DeptmentName"/>
+        <result property="opochecker" column="OPOchecker"/>
+        <result property="finvicepresident" column="FinVicePresident"/>
+        <result property="busvicepresident" column="BusVicePresident"/>
+        <result property="officedirector" column="OfficeDirector"/>
+        <result property="financedirector" column="FinanceDirector"/>
+        <result property="totalcost" column="TotalCost"/>
+        <result property="procurementcost" column="ProcurementCost"/>
+        <result property="expertcost" column="ExpertCost"/>
+        <result property="ethicscost" column="EthicsCost"/>
+        <result property="medicalcost" column="MedicalCost"/>
+        <result property="familycost" column="FamilyCost"/>
+        <result property="aftercarecost" column="AftercareCost"/>
+        <result property="remark" column="Remark"/>
+        <result property="recordstatus" column="RecordStatus"/>
+        <result property="uploadflag" column="uploadflag"/>
+        <result property="uploadtime" column="uploadtime"/>
+        <result property="flowlevel" column="FlowLevel"/>
+        <result property="pretaxcost" column="PretaxCost"/>
+        <result property="taxedcost" column="TaxedCost"/>
+        <result property="backflowlevel" column="backFlowLevel"/>
+
     </resultMap>
 
     <sql id="selectServiceFundVo">
-        select ID, InfoID, DonorNo, DonorName, del_flag, create_by, create_time, update_by, update_time, UserNo, UserName, UnitName, UnitNo, UnitUserNo, PretaxCost, TaxedCost, Phone, AnnexBankCard, AnnexRegistForm, AmountRequested, ApplyType, PrepaidAmount, InvoiceCount, AttachCount, ManagerNo, ManagerName, DeptmentNo, DeptmentName, OPOchecker, FinVicePresident, BusVicePresident, OfficeDirector, FinanceDirector, FinanceChecher, TotalCost, ProcurementCost, ExpertCost, EthicsCost, MedicalCost, FamilyCost, AftercareCost, Remark, RecordStatus, uploadflag, uploadtime,FlowLevel from service_fund
+        select ID,
+               InfoID,
+               DonorNo,
+               DonorName,
+               del_flag,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               UserNo,
+               UserName,
+               UnitName,
+               UnitNo,
+               UnitUserNo,
+               PretaxCost,
+               TaxedCost,
+               Phone,
+               AnnexBankCard,
+               AnnexRegistForm,
+               AmountRequested,
+               ApplyType,
+               PrepaidAmount,
+               InvoiceCount,
+               AttachCount,
+               ManagerNo,
+               ManagerName,
+               DeptmentNo,
+               DeptmentName,
+               OPOchecker,
+               FinVicePresident,
+               BusVicePresident,
+               OfficeDirector,
+               FinanceDirector,
+               FinanceChecher,
+               TotalCost,
+               ProcurementCost,
+               ExpertCost,
+               EthicsCost,
+               MedicalCost,
+               FamilyCost,
+               AftercareCost,
+               Remark,
+               RecordStatus,
+               uploadflag,
+               uploadtime,
+               backflowlevel,
+               FlowLevel
+        from service_fund
     </sql>
 
     <select id="selectServiceFundList" parameterType="ServiceFund" resultMap="ServiceFundResult">
         <include refid="selectServiceFundVo"/>
 
         where del_flag = '0'
-            <if test="donorno != null  and donorno != ''"> and DonorNo = #{donorno}</if>
-            <if test="userno != null  and userno != ''"> and UserNo = #{userno}</if>
-            <if test="username != null  and username != ''"> and UserName like concat('%', #{username}, '%')</if>
-            <if test="applytype != null  and applytype != ''"> and ApplyType = #{applytype}</if>
-            <if test="deptmentname != null  and deptmentname != ''"> and DeptmentName like concat('%', #{deptmentname}, '%')</if>
-            <if test="recordstatus != null"> and RecordStatus = #{recordstatus}</if>
-            <if test="uploadflag != null  and uploadflag != ''"> and uploadflag = #{uploadflag}</if>
-            <if test="uploadtime != null "> and uploadtime = #{uploadtime}</if>
-            <if test="createBy != null  and createBy != '' "> and create_by = #{createBy}</if>
-            <if test="infoid != null "> and InfoID = #{infoid}</if>
-            <if test="donorno != null   and donorno != '' "> and DonorNo = #{donorno}</if>
+        <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
+        <if test="userno != null  and userno != ''">and UserNo = #{userno}</if>
+        <if test="username != null  and username != ''">and UserName like concat('%', #{username}, '%')</if>
+        <if test="applytype != null  and applytype != ''">and ApplyType = #{applytype}</if>
+        <if test="deptmentname != null  and deptmentname != ''">and DeptmentName like concat('%', #{deptmentname},
+            '%')
+        </if>
+        <if test="recordstatus != null">and RecordStatus = #{recordstatus}</if>
+        <if test="uploadflag != null  and uploadflag != ''">and uploadflag = #{uploadflag}</if>
+        <if test="uploadtime != null ">and uploadtime = #{uploadtime}</if>
+        <if test="createBy != null  and createBy != '' ">and create_by = #{createBy}</if>
+        <if test="infoid != null ">and InfoID = #{infoid}</if>
+        <if test="donorno != null   and donorno != '' ">and DonorNo = #{donorno}</if>
     </select>
 
     <select id="getInfoByInfoId" resultType="com.ruoyi.project.domain.ServiceFund">
@@ -79,7 +130,8 @@
     </select>
 
     <select id="getFundId" resultType="java.lang.Long">
-        select max(ID) from service_fund
+        select max(ID)
+        from service_fund
         where infoid = #{infoid}
     </select>
     <select id="selectVOList" resultType="com.ruoyi.project.domain.vo.FundVO">
@@ -167,18 +219,19 @@
         `service_fund`.`ID` = `service_funddetail`.`fundID`
         )))
         <where>
-            <if test="donorno != null  and donorno != ''"> and `service_fund`.`DonorNo` = #{donorno}</if>
-            <if test="userno != null  and userno != ''"> and `service_fund`.`UserNo` = #{userno}</if>
-            <if test="username != null  and username != ''"> and `service_fund`.`UserName` = #{username}</if>
-            <if test="unitname != null  and unitname != ''"> and `service_fund`.`UnitName` = #{unitname}</if>
-            <if test="create_by != null  and create_by != ''"> and `service_fund`.`create_by` = #{create_by}</if>
-            <if test="create_time != null  and create_time != ''"> and `service_fund`.`create_time` = #{create_time}</if>
+            <if test="donorno != null  and donorno != ''">and `service_fund`.`DonorNo` = #{donorno}</if>
+            <if test="userno != null  and userno != ''">and `service_fund`.`UserNo` = #{userno}</if>
+            <if test="username != null  and username != ''">and `service_fund`.`UserName` = #{username}</if>
+            <if test="unitname != null  and unitname != ''">and `service_fund`.`UnitName` = #{unitname}</if>
+            <if test="create_by != null  and create_by != ''">and `service_fund`.`create_by` = #{create_by}</if>
+            <if test="create_time != null  and create_time != ''">and `service_fund`.`create_time` = #{create_time}</if>
 
         </where>
 
     </select>
 
-    <select id="getListBypower" statementType="CALLABLE" resultType="com.ruoyi.project.domain.vo.SpFinancialExpensesFundOut">
+    <select id="getListBypower" statementType="CALLABLE"
+            resultType="com.ruoyi.project.domain.vo.SpFinancialExpensesFundOut">
         call SP_FINANCIAL_EXPENSES(#{PAUSERNO,mode=IN,jdbcType=VARCHAR},#{PAFUNDTYPE,mode=IN,jdbcType=INTEGER},#{PAAPPLICANT,mode=IN,jdbcType=VARCHAR},#{PAAPPLICATIONBEGTIME,mode=IN,jdbcType=VARCHAR},#{PAAPPLICATIONENDTIME,mode=IN,jdbcType=VARCHAR},#{PADEPARTMENT,mode=IN,jdbcType=VARCHAR},#{CHECKFLAG,mode=IN,jdbcType=INTEGER},#{APPLYTYPE,mode=IN,jdbcType=INTEGER})
     </select>
 
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml
index 62028a4..a3a1715 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFundSharedMapper.xml
@@ -116,5 +116,10 @@
             <if test="fileid != null  and fileid != ''"> and fileid = #{fileid}</if>
         </where>
     </select>
-
+    <update id="delfundsharedInfoById">
+        UPDATE service_fund_shared
+        SET del_flag = 1
+        WHERE ID = #{fundId}
+          and del_flag != 1
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
index 94e6adc..559137a 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
@@ -235,4 +235,5 @@
         where create_time like concat(#{startTime}, '%') and beneficiaryNo=#{beneficiaryNo}
 
     </select>
+
 </mapper>
\ No newline at end of file
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml
index 49a5689..55a9bab 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementMapper.xml
@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.mapper.ServiceReimbursementMapper">
 
-    <resultMap type="ServiceReimbursement" id="ServiceReimbursementResult">
+    <resultMap type="com.ruoyi.project.domain.ServiceReimbursement" id="ServiceReimbursementResult">
         <result property="id" column="ID"/>
         <result property="delFlag" column="del_flag"/>
         <result property="createBy" column="create_by"/>
@@ -55,6 +55,7 @@
         <result property="donorremark" column="donorremark"/>
         <result property="donoramount" column="donoramount"/>
         <result property="donorrelatives" column="donorrelatives"/>
+        <result property="backflowlevel" column="backFlowLevel"/>
     </resultMap>
 
     <sql id="selectServiceReimbursementVo">
@@ -105,11 +106,12 @@
                donorbankcard,
                donorremark,
                donoramount,
-               donorrelatives
+               donorrelatives,
+               backFlowLevel
         from service_reimbursement
     </sql>
 
-    <select id="selectServiceReimbursementList" parameterType="ServiceReimbursement"
+    <select id="selectServiceReimbursementList" parameterType="com.ruoyi.project.domain.ServiceReimbursement"
             resultMap="ServiceReimbursementResult">
         <include refid="selectServiceReimbursementVo"/>
         <where>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml
index 438d475..437dadd 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementSharedMapper.xml
@@ -1,120 +1,193 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.mapper.ServiceReimbursementSharedMapper">
-    
-    <resultMap type="ServiceReimbursementShared" id="ServiceReimbursementSharedResult">
-        <result property="id"    column="ID"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="userno"    column="UserNo"    />
-        <result property="username"    column="UserName"    />
-        <result property="travelers"    column="Travelers"    />
-        <result property="idcardtype"    column="IDCardType"    />
-        <result property="idcardno"    column="IDCardNo"    />
-        <result property="phone"    column="Phone"    />
-        <result property="depositbank"    column="DepositBank"    />
-        <result property="bankcardno"    column="BankCardNo"    />
-        <result property="branchbankname"    column="BranchBankName"    />
-        <result property="annexbankcard"    column="AnnexBankCard"    />
-        <result property="annexfiles"    column="AnnexFiles"    />
-        <result property="amountrequested"    column="AmountRequested"    />
-        <result property="prepaidamount"    column="PrepaidAmount"    />
-        <result property="invoicecount"    column="InvoiceCount"    />
-        <result property="attachcount"    column="AttachCount"    />
-        <result property="managerno"    column="ManagerNo"    />
-        <result property="managername"    column="ManagerName"    />
-        <result property="deptmentno"    column="DeptmentNo"    />
-        <result property="deptmentname"    column="DeptmentName"    />
-        <result property="opochecker"    column="OPOchecker"    />
-        <result property="finvicepresident"    column="FinVicePresident"    />
-        <result property="busvicepresident"    column="BusVicePresident"    />
-        <result property="officedirector"    column="OfficeDirector"    />
-        <result property="financedirector"    column="FinanceDirector"    />
-        <result property="financechecher"    column="FinanceChecher"    />
-        <result property="infoid"    column="InfoID"    />
-        <result property="donorno"    column="DonorNo"    />
-        <result property="donorname"    column="DonorName"    />
-        <result property="reason"    column="Reason"    />
-        <result property="remark"    column="remark"    />
-        <result property="recordstatus"    column="RecordStatus"    />
-        <result property="uploadflag"    column="uploadflag"    />
-        <result property="uploadtime"    column="uploadtime"    />
-        <result property="totalamount"    column="totalAmount"    />
-        <result property="bigstrmoney"    column="bigStrMoney"    />
-        <result property="flowlevel"    column="FlowLevel"    />
-        <result property="costtype"    column="costtype"    />
-        <result property="costtypename"    column="costtypename"    />
-        <result property="oaid"    column="oaid"    />
-        <result property="oabdzt"    column="oabdzt"    />
-        <result property="filename"    column="filename"    />
-        <result property="fileid"    column="fileid"    />
-        <result property="reimid"    column="reimid"    />
-        <result property="donorbank"    column="donorbank"    />
-        <result property="donorbankcard"    column="donorbankcard"    />
-        <result property="donorremark"    column="donorremark"    />
-        <result property="donoramount"    column="donoramount"    />
-        <result property="donorrelatives"    column="donorrelatives"    />
+
+    <resultMap type="com.ruoyi.project.domain.ServiceReimbursementShared" id="ServiceReimbursementSharedResult">
+        <result property="id" column="ID"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="userno" column="UserNo"/>
+        <result property="username" column="UserName"/>
+        <result property="travelers" column="Travelers"/>
+        <result property="idcardtype" column="IDCardType"/>
+        <result property="idcardno" column="IDCardNo"/>
+        <result property="phone" column="Phone"/>
+        <result property="depositbank" column="DepositBank"/>
+        <result property="bankcardno" column="BankCardNo"/>
+        <result property="branchbankname" column="BranchBankName"/>
+        <result property="annexbankcard" column="AnnexBankCard"/>
+        <result property="annexfiles" column="AnnexFiles"/>
+        <result property="amountrequested" column="AmountRequested"/>
+        <result property="prepaidamount" column="PrepaidAmount"/>
+        <result property="invoicecount" column="InvoiceCount"/>
+        <result property="attachcount" column="AttachCount"/>
+        <result property="managerno" column="ManagerNo"/>
+        <result property="managername" column="ManagerName"/>
+        <result property="deptmentno" column="DeptmentNo"/>
+        <result property="deptmentname" column="DeptmentName"/>
+        <result property="opochecker" column="OPOchecker"/>
+        <result property="finvicepresident" column="FinVicePresident"/>
+        <result property="busvicepresident" column="BusVicePresident"/>
+        <result property="officedirector" column="OfficeDirector"/>
+        <result property="financedirector" column="FinanceDirector"/>
+        <result property="financechecher" column="FinanceChecher"/>
+        <result property="infoid" column="InfoID"/>
+        <result property="donorno" column="DonorNo"/>
+        <result property="donorname" column="DonorName"/>
+        <result property="reason" column="Reason"/>
+        <result property="remark" column="remark"/>
+        <result property="recordstatus" column="RecordStatus"/>
+        <result property="uploadflag" column="uploadflag"/>
+        <result property="uploadtime" column="uploadtime"/>
+        <result property="totalamount" column="totalAmount"/>
+        <result property="bigstrmoney" column="bigStrMoney"/>
+        <result property="flowlevel" column="FlowLevel"/>
+        <result property="costtype" column="costtype"/>
+        <result property="costtypename" column="costtypename"/>
+        <result property="oaid" column="oaid"/>
+        <result property="oabdzt" column="oabdzt"/>
+        <result property="filename" column="filename"/>
+        <result property="fileid" column="fileid"/>
+        <result property="reimid" column="reimid"/>
+        <result property="donorbank" column="donorbank"/>
+        <result property="donorbankcard" column="donorbankcard"/>
+        <result property="donorremark" column="donorremark"/>
+        <result property="donoramount" column="donoramount"/>
+        <result property="donorrelatives" column="donorrelatives"/>
     </resultMap>
 
     <sql id="selectServiceReimbursementSharedVo">
-        select ID, del_flag, create_by, create_time, update_by, update_time, UserNo, UserName, Travelers, IDCardType, IDCardNo, Phone, DepositBank, BankCardNo, BranchBankName, AnnexBankCard, AnnexFiles, AmountRequested, PrepaidAmount, InvoiceCount, AttachCount, ManagerNo, ManagerName, DeptmentNo, DeptmentName, OPOchecker, FinVicePresident, BusVicePresident, OfficeDirector, FinanceDirector, FinanceChecher, InfoID, DonorNo, DonorName, Reason, remark, RecordStatus, uploadflag, uploadtime, totalAmount, bigStrMoney, FlowLevel, costtype, costtypename, oaid, oabdzt, filename, fileid,reimid ,donorbank,donorbankcard,donorremark, donoramount,donorrelatives from service_reimbursement_shared
+        select ID,
+               del_flag,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               UserNo,
+               UserName,
+               Travelers,
+               IDCardType,
+               IDCardNo,
+               Phone,
+               DepositBank,
+               BankCardNo,
+               BranchBankName,
+               AnnexBankCard,
+               AnnexFiles,
+               AmountRequested,
+               PrepaidAmount,
+               InvoiceCount,
+               AttachCount,
+               ManagerNo,
+               ManagerName,
+               DeptmentNo,
+               DeptmentName,
+               OPOchecker,
+               FinVicePresident,
+               BusVicePresident,
+               OfficeDirector,
+               FinanceDirector,
+               FinanceChecher,
+               InfoID,
+               DonorNo,
+               DonorName,
+               Reason,
+               remark,
+               RecordStatus,
+               uploadflag,
+               uploadtime,
+               totalAmount,
+               bigStrMoney,
+               FlowLevel,
+               costtype,
+               costtypename,
+               oaid,
+               oabdzt,
+               filename,
+               fileid,
+               reimid,
+               donorbank,
+               donorbankcard,
+               donorremark,
+               donoramount,
+               donorrelatives
+        from service_reimbursement_shared
     </sql>
 
-    <select id="getRemShareInfoByRemId" resultType="com.ruoyi.project.domain.ServiceReimbursementShared" resultMap="ServiceReimbursementSharedResult">
+    <select id="getRemShareInfoByRemId" resultType="com.ruoyi.project.domain.ServiceReimbursementShared"
+            resultMap="ServiceReimbursementSharedResult">
         <include refid="selectServiceReimbursementSharedVo"/>
-        where reimid = #{RemId}
+        where reimid = #{RemId} and del_flag!=1
     </select>
 
-    <select id="selectServiceReimbursementSharedList" parameterType="ServiceReimbursementShared" resultMap="ServiceReimbursementSharedResult">
+    <select id="selectServiceReimbursementSharedList" parameterType="com.ruoyi.project.domain.ServiceReimbursementShared"
+            resultMap="ServiceReimbursementSharedResult">
         <include refid="selectServiceReimbursementSharedVo"/>
         <where>
-            <if test="userno != null  and userno != ''"> and UserNo = #{userno}</if>
-            <if test="username != null  and username != ''"> and UserName like concat('%', #{username}, '%')</if>
-            <if test="travelers != null  and travelers != ''"> and Travelers = #{travelers}</if>
-            <if test="idcardtype != null  and idcardtype != ''"> and IDCardType = #{idcardtype}</if>
-            <if test="idcardno != null  and idcardno != ''"> and IDCardNo = #{idcardno}</if>
-            <if test="phone != null  and phone != ''"> and Phone = #{phone}</if>
-            <if test="depositbank != null  and depositbank != ''"> and DepositBank = #{depositbank}</if>
-            <if test="bankcardno != null  and bankcardno != ''"> and BankCardNo = #{bankcardno}</if>
-            <if test="branchbankname != null  and branchbankname != ''"> and BranchBankName like concat('%', #{branchbankname}, '%')</if>
-            <if test="annexbankcard != null  and annexbankcard != ''"> and AnnexBankCard = #{annexbankcard}</if>
-            <if test="annexfiles != null  and annexfiles != ''"> and AnnexFiles = #{annexfiles}</if>
-            <if test="amountrequested != null "> and AmountRequested = #{amountrequested}</if>
-            <if test="prepaidamount != null "> and PrepaidAmount = #{prepaidamount}</if>
-            <if test="invoicecount != null "> and InvoiceCount = #{invoicecount}</if>
-            <if test="attachcount != null "> and AttachCount = #{attachcount}</if>
-            <if test="managerno != null  and managerno != ''"> and ManagerNo = #{managerno}</if>
-            <if test="managername != null  and managername != ''"> and ManagerName like concat('%', #{managername}, '%')</if>
-            <if test="deptmentno != null  and deptmentno != ''"> and DeptmentNo = #{deptmentno}</if>
-            <if test="deptmentname != null  and deptmentname != ''"> and DeptmentName like concat('%', #{deptmentname}, '%')</if>
-            <if test="opochecker != null  and opochecker != ''"> and OPOchecker = #{opochecker}</if>
-            <if test="finvicepresident != null  and finvicepresident != ''"> and FinVicePresident = #{finvicepresident}</if>
-            <if test="busvicepresident != null  and busvicepresident != ''"> and BusVicePresident = #{busvicepresident}</if>
-            <if test="officedirector != null  and officedirector != ''"> and OfficeDirector = #{officedirector}</if>
-            <if test="financedirector != null  and financedirector != ''"> and FinanceDirector = #{financedirector}</if>
-            <if test="financechecher != null  and financechecher != ''"> and FinanceChecher = #{financechecher}</if>
-            <if test="infoid != null "> and InfoID = #{infoid}</if>
-            <if test="donorno != null  and donorno != ''"> and DonorNo = #{donorno}</if>
-            <if test="donorname != null  and donorname != ''"> and DonorName like concat('%', #{donorname}, '%')</if>
-            <if test="reason != null  and reason != ''"> and Reason = #{reason}</if>
-            <if test="recordstatus != null "> and RecordStatus = #{recordstatus}</if>
-            <if test="uploadflag != null  and uploadflag != ''"> and uploadflag = #{uploadflag}</if>
-            <if test="uploadtime != null "> and uploadtime = #{uploadtime}</if>
-            <if test="totalamount != null "> and totalAmount = #{totalamount}</if>
-            <if test="bigstrmoney != null  and bigstrmoney != ''"> and bigStrMoney = #{bigstrmoney}</if>
-            <if test="flowlevel != null "> and FlowLevel = #{flowlevel}</if>
-            <if test="costtype != null  and costtype != ''"> and costtype = #{costtype}</if>
-            <if test="costtypename != null  and costtypename != ''"> and costtypename like concat('%', #{costtypename}, '%')</if>
-            <if test="oaid != null  and oaid != ''"> and oaid = #{oaid}</if>
-            <if test="oabdzt != null  and oabdzt != ''"> and oabdzt = #{oabdzt}</if>
-            <if test="filename != null  and filename != ''"> and filename like concat('%', #{filename}, '%')</if>
-            <if test="fileid != null  and fileid != ''"> and fileid = #{fileid}</if>
+            <if test="userno != null  and userno != ''">and UserNo = #{userno}</if>
+            <if test="username != null  and username != ''">and UserName like concat('%', #{username}, '%')</if>
+            <if test="travelers != null  and travelers != ''">and Travelers = #{travelers}</if>
+            <if test="idcardtype != null  and idcardtype != ''">and IDCardType = #{idcardtype}</if>
+            <if test="idcardno != null  and idcardno != ''">and IDCardNo = #{idcardno}</if>
+            <if test="phone != null  and phone != ''">and Phone = #{phone}</if>
+            <if test="depositbank != null  and depositbank != ''">and DepositBank = #{depositbank}</if>
+            <if test="bankcardno != null  and bankcardno != ''">and BankCardNo = #{bankcardno}</if>
+            <if test="branchbankname != null  and branchbankname != ''">and BranchBankName like concat('%',
+                #{branchbankname}, '%')
+            </if>
+            <if test="annexbankcard != null  and annexbankcard != ''">and AnnexBankCard = #{annexbankcard}</if>
+            <if test="annexfiles != null  and annexfiles != ''">and AnnexFiles = #{annexfiles}</if>
+            <if test="amountrequested != null ">and AmountRequested = #{amountrequested}</if>
+            <if test="prepaidamount != null ">and PrepaidAmount = #{prepaidamount}</if>
+            <if test="invoicecount != null ">and InvoiceCount = #{invoicecount}</if>
+            <if test="attachcount != null ">and AttachCount = #{attachcount}</if>
+            <if test="managerno != null  and managerno != ''">and ManagerNo = #{managerno}</if>
+            <if test="managername != null  and managername != ''">and ManagerName like concat('%', #{managername},
+                '%')
+            </if>
+            <if test="deptmentno != null  and deptmentno != ''">and DeptmentNo = #{deptmentno}</if>
+            <if test="deptmentname != null  and deptmentname != ''">and DeptmentName like concat('%', #{deptmentname},
+                '%')
+            </if>
+            <if test="opochecker != null  and opochecker != ''">and OPOchecker = #{opochecker}</if>
+            <if test="finvicepresident != null  and finvicepresident != ''">and FinVicePresident = #{finvicepresident}
+            </if>
+            <if test="busvicepresident != null  and busvicepresident != ''">and BusVicePresident = #{busvicepresident}
+            </if>
+            <if test="officedirector != null  and officedirector != ''">and OfficeDirector = #{officedirector}</if>
+            <if test="financedirector != null  and financedirector != ''">and FinanceDirector = #{financedirector}</if>
+            <if test="financechecher != null  and financechecher != ''">and FinanceChecher = #{financechecher}</if>
+            <if test="infoid != null ">and InfoID = #{infoid}</if>
+            <if test="donorno != null  and donorno != ''">and DonorNo = #{donorno}</if>
+            <if test="donorname != null  and donorname != ''">and DonorName like concat('%', #{donorname}, '%')</if>
+            <if test="reason != null  and reason != ''">and Reason = #{reason}</if>
+            <if test="recordstatus != null ">and RecordStatus = #{recordstatus}</if>
+            <if test="uploadflag != null  and uploadflag != ''">and uploadflag = #{uploadflag}</if>
+            <if test="uploadtime != null ">and uploadtime = #{uploadtime}</if>
+            <if test="totalamount != null ">and totalAmount = #{totalamount}</if>
+            <if test="bigstrmoney != null  and bigstrmoney != ''">and bigStrMoney = #{bigstrmoney}</if>
+            <if test="flowlevel != null ">and FlowLevel = #{flowlevel}</if>
+            <if test="costtype != null  and costtype != ''">and costtype = #{costtype}</if>
+            <if test="costtypename != null  and costtypename != ''">and costtypename like concat('%', #{costtypename},
+                '%')
+            </if>
+            <if test="oaid != null  and oaid != ''">and oaid = #{oaid}</if>
+            <if test="oabdzt != null  and oabdzt != ''">and oabdzt = #{oabdzt}</if>
+            <if test="filename != null  and filename != ''">and filename like concat('%', #{filename}, '%')</if>
+            <if test="fileid != null  and fileid != ''">and fileid = #{fileid}</if>
         </where>
     </select>
 
+    <update id="delResharedInfoById">
+        UPDATE service_reimbursement_shared
+        SET del_flag = 1
+        WHERE id = #{id}
+          and del_flag != 1
+    </update>
+
 </mapper>
\ No newline at end of file
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementpayeeSharedMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementpayeeSharedMapper.xml
index bf3dcc6..a1e6753 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementpayeeSharedMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceReimbursementpayeeSharedMapper.xml
@@ -4,7 +4,7 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.mapper.ServiceReimbursementpayeeSharedMapper">
     
-    <resultMap type="ServiceReimbursementpayeeShared" id="ServiceReimbursementpayeeSharedResult">
+    <resultMap type="com.ruoyi.project.domain.ServiceReimbursementpayeeShared" id="ServiceReimbursementpayeeSharedResult">
         <result property="id"    column="id"    />
         <result property="rpid"    column="rpid"    />
         <result property="rbid"    column="rbid"    />
@@ -31,7 +31,7 @@
         select id, rpid, rbid, orderno, persontype, personname, bankname, bankcardno, amount, phone, familyrelations, paiddate, remark, del_flag, create_by, create_time, update_by, update_time, uploadflag, uploadtime from service_reimbursementpayee_shared
     </sql>
 
-    <select id="selectServiceReimbursementpayeeSharedList" parameterType="ServiceReimbursementpayeeShared" resultMap="ServiceReimbursementpayeeSharedResult">
+    <select id="selectServiceReimbursementpayeeSharedList" parameterType="com.ruoyi.project.domain.ServiceReimbursementpayeeShared" resultMap="ServiceReimbursementpayeeSharedResult">
         <include refid="selectServiceReimbursementpayeeSharedVo"/>
         <where>
             <if test="rpid != null "> and rpid = #{rpid}</if>
diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
index ccb6922..39dfbf6 100644
--- a/ruoyi-quartz/pom.xml
+++ b/ruoyi-quartz/pom.xml
@@ -34,6 +34,12 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-project</artifactId>
+            <version>3.7.0</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 853243b..4c5d042 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1,28 +1,126 @@
 package com.ruoyi.quartz.task;
 
+import com.ruoyi.project.domain.*;
+import com.ruoyi.project.domain.vo.DingTalkReqVo;
+import com.ruoyi.project.service.*;
+import com.ruoyi.project.service.impl.DingTalkServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.utils.StringUtils;
 
+import java.lang.reflect.Array;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+
 /**
  * 瀹氭椂浠诲姟璋冨害娴嬭瘯
- * 
+ *
  * @author ruoyi
  */
 @Component("ryTask")
-public class RyTask
-{
-    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
-    {
+public class RyTask {
+    @Autowired
+    private DingTalkService dingTalkService;
+
+    @Autowired
+    private IServiceReimbursementSharedService serviceReimbursementSharedService;
+
+    @Autowired
+    private IServiceFundSharedService serviceFundSharedService;
+
+
+    @Autowired
+    private IServiceFundService serviceFundService;
+
+    @Autowired
+    private IServiceReimbursementService serviceReimbursementService;
+
+    @Autowired
+    private IServiceFundflowService fundflowService;
+
+    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
         System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
     }
 
-    public void ryParams(String params)
-    {
+    public void ryParams(String params) {
         System.out.println("鎵ц鏈夊弬鏂规硶锛�" + params);
     }
 
-    public void ryNoParams()
-    {
+    public void ryNoParams() {
         System.out.println("鎵ц鏃犲弬鏂规硶");
     }
+
+    public void checkReportInfo() {
+        //鏌ュ嚭鎵�鏈夎鍖婚櫌閫�鍥炵殑Fund鏁版嵁
+        List<ServiceFundShared> serviceFundShareds = serviceFundSharedService.queryFundShareList();
+        for (ServiceFundShared serviceFundShared : serviceFundShareds) {
+            String[] split = serviceFundShared.getCxrjyj().split("&");
+            String phone = serviceFundShared.getPhone();
+            //灏嗗垎浜噷鐨勮鏁版嵁鍒犻櫎
+            serviceFundSharedService.delfundsharedInfoById(serviceFundShared.getId());
+
+            ServiceFund serviceFund = new ServiceFund();
+            serviceFund.setId(serviceFundShared.getSerfunid());
+            List<ServiceFund> serviceFunds = serviceFundService.queryList(serviceFund);
+            ServiceFund serviceFund1 = serviceFunds.get(0);
+            serviceFund1.setFlowlevel(0);
+            serviceFund1.setDel_flag(0);
+            serviceFund1.setBackflowlevel(199);
+            serviceFundService.updateById(serviceFund1);
+            sendMeg(split,phone);
+        }
+
+
+        //鏌ュ嚭鎵�鏈夎鍖婚櫌閫�鍥炵殑Reimbursement鏁版嵁
+        List<ServiceReimbursementShared> serviceReimbursementShareds = serviceReimbursementSharedService.queryReShareList();
+        for (ServiceReimbursementShared serviceReimbursementShared : serviceReimbursementShareds) {
+            String phone = serviceReimbursementShared.getPhone();
+            String[] split = serviceReimbursementShared.getCxrjyj().split("&");
+
+            //灏嗗垎浜噷鐨勮鏁版嵁鍒犻櫎
+            serviceReimbursementSharedService.delResharedInfoById(serviceReimbursementShared.getId());
+
+            //灏咶lowlevel 璁剧疆涓�0;
+            ServiceReimbursement serviceReimbursement = new ServiceReimbursement();
+            serviceReimbursement.setId(serviceReimbursementShared.getReimid());
+            List<ServiceReimbursement> serviceReimbursementList = serviceReimbursementService.queryList(serviceReimbursement);
+            ServiceReimbursement serviceReimbursement1 = serviceReimbursementList.get(0);
+            serviceReimbursement1.setFlowlevel(0L);
+            serviceReimbursement1.setDelFlag(0);
+            serviceReimbursement1.setBackflowlevel(199L);
+            serviceReimbursementService.updateById(serviceReimbursement1);
+            sendMeg(split,phone);
+
+        }
+
+    }
+
+    public void sendMeg(String[] split,String phone) {
+        //璁板綍鎿嶄綔璁板綍
+        ServiceFundflow serviceFundflow = new ServiceFundflow();
+        serviceFundflow.setCreateBy("admin");
+        serviceFundflow.setCreateTime(new Date());
+        serviceFundflow.setUpdateBy("admin");
+        serviceFundflow.setUpdateTime(new Date());
+        serviceFundflow.setCheckusername(split[0]);
+        serviceFundflow.setFlowcontent(split[2]);
+        serviceFundflow.setFlowconclusion(2);
+        serviceFundflow.setFundtype(2);
+        serviceFundflow.setFlowlevel(100);
+        fundflowService.save(serviceFundflow);
+
+        ArrayList<ConcurrentHashMap<String, String>> contentList = new ArrayList<>();
+        ConcurrentHashMap map = new ConcurrentHashMap();
+        map.put("瀹℃壒浜�", split[0]);
+        map.put("瀹℃壒鏃堕棿", split[1]);
+        map.put("鎰忚", split[2]);
+        contentList.add(map);
+        DingTalkReqVo dingTalkReqVo = new DingTalkReqVo();
+        dingTalkReqVo.setTitle("璐㈠姟绯荤粺椹冲洖淇℃伅");
+        dingTalkReqVo.setNumber("13634195431");
+        dingTalkReqVo.setContents(contentList);
+        dingTalkService.sendNotification(dingTalkReqVo);
+    }
+
 }

--
Gitblit v1.9.3