From 3165f71939bf0783787fbe19ac77063c23ec22bc Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 12 九月 2025 15:01:55 +0800
Subject: [PATCH] 通过生日算年龄

---
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java                            |   11 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateOrganVO.java                              |    6 
 ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml                      |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java           |   16 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java        |   18 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatecompletioninfoServiceImpl.java  |   38 ++-
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java                  |   42 +++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java |   61 +++--
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java                          |    5 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java                     |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateannexServiceImpl.java           |   17 +
 ruoyi-admin/pom.xml                                                                                     |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java |  189 +++++++++--------
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java  |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/common/CalculateDateUtils.java                            |   61 +++++
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateannexMapper.java                      |    4 
 ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml                  |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java         |   48 +++
 ruoyi-admin/src/main/resources/application.yml                                                          |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java                         |   16 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java       |   12 +
 ruoyi-admin/src/main/resources/application-druid.yml                                                    |   12 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java                        |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java         |   13 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java      |   13 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java                       |    4 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateAnnexVO.java                              |    6 
 27 files changed, 449 insertions(+), 165 deletions(-)

diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 4ac2af2..7c12d6c 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -8,8 +8,8 @@
         <version>3.7.0</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-    <packaging>war</packaging>
-    <!--    <packaging>jar</packaging>-->
+    <!--    <packaging>war</packaging>-->
+    <packaging>jar</packaging>
     <artifactId>smartor-opo</artifactId>
 
     <description>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java
index c744b6d..fb694f1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoController.java
@@ -13,6 +13,7 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.config.ServerConfig;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.ServiceDonatebaseinfo;
 import com.ruoyi.project.domain.vo.TimeVO;
 import com.ruoyi.project.service.IServiceDonatebaseinfoService;
@@ -29,6 +30,8 @@
 
 import java.io.*;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 
 
@@ -108,7 +111,15 @@
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
         log.info("閫氳繃id鑾峰緱娼滃湪鎹愮尞淇℃伅锛歿}", id);
-        return AjaxResult.success(serviceDonatebaseinfoService.getById(id));
+        ServiceDonatebaseinfo serviceDonatebaseinfo = serviceDonatebaseinfoService.getById(id);
+        if (serviceDonatebaseinfo.getBirthday() != null) {
+            Map<String, String> map = CalculateDateUtils.calculateAge(serviceDonatebaseinfo.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+            serviceDonatebaseinfo.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+            serviceDonatebaseinfo.setAgeunit(map.get("ageUnit"));
+            serviceDonatebaseinfo.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+            serviceDonatebaseinfo.setAgeunit2(map.get("ageUnit2"));
+        }
+        return AjaxResult.success(serviceDonatebaseinfo);
     }
 
     /**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java
index ea11f0a..24cbe39 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceMedicalevaluationController.java
@@ -1,9 +1,13 @@
 package com.ruoyi.web.controller.project;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 import com.ruoyi.common.annotation.NotRepeatCommit;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -58,6 +62,15 @@
     public TableDataInfo listnew(MedicalEvaluationVO medicalEvaluationVO) {
         startPage();
         List<MedicalEvaluationVO> list = serviceMedicalevaluationService.selectVOList(medicalEvaluationVO);
+        for (MedicalEvaluationVO medicalEvaluationVO1 : list) {
+            if (medicalEvaluationVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(medicalEvaluationVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                medicalEvaluationVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                medicalEvaluationVO1.setAgeunit(map.get("ageUnit"));
+                medicalEvaluationVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                medicalEvaluationVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
         return getDataTable(list);
     }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java
index 9b321ae..ddb5675 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceRelativesconfirmationController.java
@@ -233,8 +233,8 @@
         } else if (relativeConfirmation.getSex().equals("2")) {
             dataMap.put("XB", "濂�");
         }
-
-        dataMap.put("CSRQ", relativeConfirmation.getBirthday() == null ? "" : relativeConfirmation.getBirthday().substring(0, 10));
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        dataMap.put("CSRQ", relativeConfirmation.getBirthday() == null ? "" : simpleDateFormat.format(relativeConfirmation.getBirthday()).substring(0, 10));
         dataMap.put("MZ", NationalityEnum.getDescByCode(relativeConfirmation.getNation()) == null ? "" : NationalityEnum.getDescByCode(relativeConfirmation.getNation()));
         dataMap.put("XL", Education.getDescByCode(relativeConfirmation.getEducation()) == null ? "" : Education.getDescByCode(relativeConfirmation.getEducation()));
         String occupation = "";
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 7c852e5..74b64d5 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -7,12 +7,12 @@
       # 涓诲簱鏁版嵁婧�
       master:
         # 寮�鍙戠幆澧�
-        url: jdbc:mysql://116.62.18.175:6002/opo?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
-        username: opo
-        password: opo@2022
-      #        url: jdbc:mysql://192.168.100.10:3306/opo?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
-      #        username: opo
-      #        password: Smartor.2023
+        #        url: jdbc:mysql://116.62.18.175:6002/opo?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
+        #        username: opo
+        #        password: Smartor.2023
+        url: jdbc:mysql://192.168.100.10:3306/opo?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
+        username: smartor
+        password: Smartor.2023
 
       # 浠庡簱鏁版嵁婧�
       slave:
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 6d46c20..cd33931 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -53,7 +53,7 @@
     # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
     basename: i18n/messages
   profiles:
-    active: srm
+    active: druid
   # 鏂囦欢涓婁紶
   servlet:
     multipart:
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/common/CalculateDateUtils.java b/ruoyi-project/src/main/java/com/ruoyi/project/common/CalculateDateUtils.java
new file mode 100644
index 0000000..9514519
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/common/CalculateDateUtils.java
@@ -0,0 +1,61 @@
+package com.ruoyi.project.common;
+
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.temporal.ChronoUnit;
+import java.util.HashMap;
+import java.util.Map;
+
+public class CalculateDateUtils {
+    public static Map<String, String> calculateAge(LocalDate birthdate, LocalDate today) {
+        if (birthdate == null || today.isBefore(birthdate)) {
+            return null;
+        }
+        Map<String, String> ageMap = new HashMap<>();
+
+        Period period = Period.between(birthdate, today);
+        long totalDays = ChronoUnit.DAYS.between(birthdate, today);
+        long totalMonths = ChronoUnit.MONTHS.between(birthdate, today);
+
+        int years = period.getYears();
+        int months = period.getMonths();
+        int days = period.getDays();
+
+        String ageUnit;
+        Integer age;
+        String ageUnit2 = null;
+        Integer age2 = null;
+
+        if (totalDays < 30) {
+            // 灏忎簬 1 涓湀锛屾寜澶╄绠�
+            ageUnit = "澶�";
+            age = (int) totalDays;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", null);
+            ageMap.put("ageUnit2", null);
+        } else if (totalMonths < 12) {
+            // 灏忎簬 涓�骞达紝鎸夋湀 + 澶╄绠�
+            ageUnit = "鏈�";
+            age = (int) totalMonths;
+            ageUnit2 = "澶�";
+            age2 = days;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", age2 != null ? age2.toString() : null);
+            ageMap.put("ageUnit2", ageUnit2);
+        } else {
+            // 澶т簬绛変簬 涓�骞达紝鎸夊勾 + 鏈堣绠�
+            ageUnit = "宀�";
+            age = years;
+            ageUnit2 = "鏈�";
+            age2 = months;
+            ageMap.put("age", age != null ? age.toString() : null);
+            ageMap.put("ageUnit", ageUnit);
+            ageMap.put("age2", age2 != null ? age2.toString() : null);
+            ageMap.put("ageUnit2", ageUnit2);
+        }
+
+        return ageMap;
+    }
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java
index 2dadab6..15e5803 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfo.java
@@ -60,14 +60,30 @@
     /**
      * 骞撮緞
      */
+    @TableField(exist = false)
     @ApiModelProperty("骞撮緞")
     private Long age;
 
     /**
      * 骞撮緞鍗曚綅
      */
+    @TableField(exist = false)
     @ApiModelProperty("骞撮緞鍗曚綅")
     private String ageunit;
+    /**
+     * 骞撮緞
+     */
+    @TableField(exist = false)
+    @ApiModelProperty("骞撮緞")
+    private Long age2;
+
+    /**
+     * 骞�
+     * 榫勫崟浣�
+     */
+    @TableField(exist = false)
+    @ApiModelProperty("骞撮緞鍗曚綅")
+    private String ageunit2;
 
     /**
      * 鍑虹敓鏃ユ湡
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateAnnexVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateAnnexVO.java
index 14150d0..34d750a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateAnnexVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateAnnexVO.java
@@ -16,9 +16,11 @@
     private String sex;
     private Long idcardtype;
     private String idcardno;
-    private String age;
+    private Long age;
     private String ageunit;
-    private String birthday;
+    private Long age2;
+    private String ageunit2;
+    private Date birthday;
     private String phone;
     private String treatmenthospitalno;
     private String treatmenthospitalname;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateOrganVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateOrganVO.java
index 48c6c28..1d591d0 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateOrganVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonateOrganVO.java
@@ -16,9 +16,11 @@
     private String sex;
     private Long idcardtype;
     private String idcardno;
-    private String age;
+    private Long age;
     private String ageunit;
-    private String birthday;
+    private Long age2;
+    private String ageunit2;
+    private Date birthday;
     private String phone;
     private String nationality;
     private String nativeplace;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
index 2944fb8..a231727 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
@@ -26,7 +26,9 @@
     private String idcardno;
     private Long age;
     private String ageunit;
-    private String birthday;
+    private Long age2;
+    private String ageunit2;
+    private Date birthday;
     private String nationality;
     private String nation;
     private String reporterno;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
index c1b9067..c4bd870 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
@@ -17,7 +17,10 @@
     private Long idcardtype;
     private String idcardno;
     private Long age;
-    private String birthday;
+    private String ageunit;
+    private String ageunit2;
+    private Long age2;
+    private Date birthday;
     private String treatmenthospitalno;
     private String treatmenthospitalname;
     private String treatmentdeptname;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java
index e1083d9..9042b18 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalReviewVO.java
@@ -59,6 +59,17 @@
      */
     @ApiModelProperty("骞撮緞鍗曚綅")
     private String ageunit;
+    /**
+     * 骞撮緞2
+     */
+    @ApiModelProperty("骞撮緞2")
+    private Long age2;
+
+    /**
+     * 骞撮緞鍗曚綅2
+     */
+    @ApiModelProperty("骞撮緞鍗曚綅2")
+    private String ageunit2;
 
     /**
      * 鍑虹敓鏃ユ湡
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java
index 7beb664..fd6639a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java
@@ -12,7 +12,11 @@
     private String name;
     private String sex;
     private String idcardno;
+    private Date Birthday;
     private Long age;
+    private String ageunit;
+    private Long age2;
+    private String ageunit2;
     private String registeraddress;
     private String registerprovince;
     private String registerprovinceName;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java
index 782aac2..916311b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java
@@ -16,8 +16,10 @@
     private Long idcardtype;
     private String idcardno;
     private Long Age;
-    private String birthday;
+    private Long Age2;
+    private Date birthday;
     private String ageunit;
+    private String ageunit2;
     private String phone;
     private String nationality;
     private String nativeplace;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateannexMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateannexMapper.java
index aafdd97..cd30154 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateannexMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceDonateannexMapper.java
@@ -5,13 +5,15 @@
 import java.util.List;
 import com.ruoyi.project.domain.ServiceDonateannex;
 import com.ruoyi.project.domain.vo.DonateAnnexVO;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 鎹愮尞闄勪欢Mapper鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2021-11-11
  */
+@Mapper
 public interface ServiceDonateannexMapper extends BaseMapper<ServiceDonateannex>
 {
     /**
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateannexServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateannexServiceImpl.java
index d5ecd8f..a2e6438 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateannexServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateannexServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ruoyi.project.service.impl;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.List;
 
 import com.ruoyi.common.core.domain.entity.SysRole;
@@ -7,7 +9,9 @@
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.vo.DonateAnnexVO;
+import com.ruoyi.project.domain.vo.EthicalReviewVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -94,7 +98,18 @@
         if (b) {
             donateAnnexVO.setCreate_by(user.getUserName());
         }
-        return serviceDonateannexMapper.selectVOList(donateAnnexVO);
+        List<DonateAnnexVO> donateAnnexVOS = serviceDonateannexMapper.selectVOList(donateAnnexVO);
+        for (DonateAnnexVO donateAnnexVO1 : donateAnnexVOS) {
+            if (donateAnnexVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(donateAnnexVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                donateAnnexVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                donateAnnexVO1.setAgeunit(map.get("ageUnit"));
+                donateAnnexVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                donateAnnexVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
+
+        return donateAnnexVOS;
     }
 
     @Override
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
index 6243da1..0f4e8a5 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoServiceImpl.java
@@ -1,6 +1,10 @@
 package com.ruoyi.project.service.impl;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -9,6 +13,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.vo.TimeVO;
 import com.ruoyi.project.domain.vo.countByRecordStateVO;
@@ -230,7 +235,18 @@
         if (b == 2) {
             serviceDonatebaseinfo.setDeptid(user.getDeptId());
         }
-        return serviceDonatebaseinfoMapper.selectServiceDonatebaseinfoList(serviceDonatebaseinfo);
+        List<ServiceDonatebaseinfo> serviceDonatebaseinfos = serviceDonatebaseinfoMapper.selectServiceDonatebaseinfoList(serviceDonatebaseinfo);
+        for (ServiceDonatebaseinfo serviceDonatebaseinfo1 : serviceDonatebaseinfos) {
+            if (serviceDonatebaseinfo1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(serviceDonatebaseinfo1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                serviceDonatebaseinfo1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                serviceDonatebaseinfo1.setAgeunit(map.get("ageUnit"));
+                serviceDonatebaseinfo1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                serviceDonatebaseinfo1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
+
+        return serviceDonatebaseinfos;
     }
 
     @Override
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatecompletioninfoServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatecompletioninfoServiceImpl.java
index 1ff7ad6..a3f6cb1 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatecompletioninfoServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatecompletioninfoServiceImpl.java
@@ -1,29 +1,28 @@
 package com.ruoyi.project.service.impl;
 
-import java.util.List;
-
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
+import com.ruoyi.project.domain.ServiceDonatebaseinfo;
+import com.ruoyi.project.domain.ServiceDonatecompletioninfo;
 import com.ruoyi.project.domain.ServiceDonatecomporgan;
-import com.ruoyi.project.domain.ServiceDonateorgan;
 import com.ruoyi.project.domain.vo.DonationCompletionVO;
+import com.ruoyi.project.mapper.ServiceDonatecompletioninfoMapper;
+import com.ruoyi.project.service.IServiceDonatecompletioninfoService;
 import com.ruoyi.project.service.IServiceDonatecomporganService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
-import java.util.ArrayList;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.List;
 import java.util.Map;
-
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.project.mapper.ServiceDonatecompletioninfoMapper;
-import com.ruoyi.project.domain.ServiceDonatecompletioninfo;
-import com.ruoyi.project.service.IServiceDonatecompletioninfoService;
 
 /**
  * 鎹愮尞瀹屾垚Service涓氬姟灞傚鐞�
@@ -122,8 +121,19 @@
         if (b) {
             donationCompletionVO.setReporterno(user.getUserName());
         }
+        List<DonationCompletionVO> donationCompletionVOS = serviceDonatecompletioninfoMapper.selectVOList(donationCompletionVO);
 
-        return serviceDonatecompletioninfoMapper.selectVOList(donationCompletionVO);
+        for (DonationCompletionVO donationCompletionVO1 : donationCompletionVOS) {
+            if (donationCompletionVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(donationCompletionVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                donationCompletionVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                donationCompletionVO1.setAgeunit(map.get("ageUnit"));
+                donationCompletionVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                donationCompletionVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
+
+        return donationCompletionVOS;
     }
 
     @Override
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java
index f230e30..525832a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonateorganServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.vo.*;
 import com.ruoyi.project.mapper.*;
@@ -21,6 +22,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 
 /**
@@ -442,8 +445,17 @@
 
     @Override
     public List<DonateOrganVO> selectVOList(DonateOrganVO donateOrganVO) {
-
-        return serviceDonateorganMapper.selectVOList(donateOrganVO);
+        List<DonateOrganVO> donateOrganVOS = serviceDonateorganMapper.selectVOList(donateOrganVO);
+        for (DonateOrganVO donateOrganVO1:donateOrganVOS) {
+            if (donateOrganVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(donateOrganVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                donateOrganVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                donateOrganVO1.setAgeunit(map.get("ageUnit"));
+                donateOrganVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                donateOrganVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
+        return donateOrganVOS;
     }
 
     @Override
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java
index 049099e..1d56129 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonationwitnessServiceImpl.java
@@ -1,5 +1,7 @@
 package com.ruoyi.project.service.impl;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -7,6 +9,7 @@
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.ServiceDonatebaseinfo;
 import com.ruoyi.project.domain.ServiceDonateorgan;
 import com.ruoyi.project.domain.vo.DonationWitnessVO;
@@ -83,6 +86,15 @@
             donationWitnessVO.setReporterno(user.getUserName());
         }
         List<DonationWitnessVO> donationWitnessVOS = serviceDonationwitnessMapper.selectVOList(donationWitnessVO);
+        for (DonationWitnessVO donationWitnessVO1 : donationWitnessVOS) {
+            if (donationWitnessVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(donationWitnessVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                donationWitnessVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                donationWitnessVO1.setAgeunit(map.get("ageUnit"));
+                donationWitnessVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                donationWitnessVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
         return donationWitnessVOS;
     }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java
index 11cf764..b10bec5 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java
@@ -1,19 +1,25 @@
 package com.ruoyi.project.service.impl;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.List;
 
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.vo.EthicalReviewVO;
+import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
 import java.util.ArrayList;
 import java.util.Map;
+
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.mapper.ServiceEthicalreviewopinionsMapper;
 import com.ruoyi.project.domain.ServiceEthicalreviewopinions;
@@ -26,8 +32,7 @@
  * @date 2021-11-23
  */
 @Service
-public class ServiceEthicalreviewopinionsServiceImpl extends ServiceImpl<ServiceEthicalreviewopinionsMapper, ServiceEthicalreviewopinions> implements IServiceEthicalreviewopinionsService
-{
+public class ServiceEthicalreviewopinionsServiceImpl extends ServiceImpl<ServiceEthicalreviewopinionsMapper, ServiceEthicalreviewopinions> implements IServiceEthicalreviewopinionsService {
 
     @Autowired
     ServiceEthicalreviewopinionsMapper serviceEthicalreviewopinionsMapper;
@@ -42,29 +47,29 @@
     @Override
     public List<ServiceEthicalreviewopinions> queryList(ServiceEthicalreviewopinions serviceEthicalreviewopinions) {
         LambdaQueryWrapper<ServiceEthicalreviewopinions> wrappers = Wrappers.lambdaQuery();
-        if (serviceEthicalreviewopinions.getInfoid() != null){
-            wrappers.eq(ServiceEthicalreviewopinions::getInfoid ,serviceEthicalreviewopinions.getInfoid());
+        if (serviceEthicalreviewopinions.getInfoid() != null) {
+            wrappers.eq(ServiceEthicalreviewopinions::getInfoid, serviceEthicalreviewopinions.getInfoid());
         }
-        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getDonorno())){
-            wrappers.eq(ServiceEthicalreviewopinions::getDonorno ,serviceEthicalreviewopinions.getDonorno());
+        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getDonorno())) {
+            wrappers.eq(ServiceEthicalreviewopinions::getDonorno, serviceEthicalreviewopinions.getDonorno());
         }
-        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getExpertopinion())){
-            wrappers.eq(ServiceEthicalreviewopinions::getExpertopinion ,serviceEthicalreviewopinions.getExpertopinion());
+        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getExpertopinion())) {
+            wrappers.eq(ServiceEthicalreviewopinions::getExpertopinion, serviceEthicalreviewopinions.getExpertopinion());
         }
-        if (serviceEthicalreviewopinions.getExpertconclusion() != null){
-            wrappers.eq(ServiceEthicalreviewopinions::getExpertconclusion ,serviceEthicalreviewopinions.getExpertconclusion());
+        if (serviceEthicalreviewopinions.getExpertconclusion() != null) {
+            wrappers.eq(ServiceEthicalreviewopinions::getExpertconclusion, serviceEthicalreviewopinions.getExpertconclusion());
         }
-        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getExpertname())){
-            wrappers.like(ServiceEthicalreviewopinions::getExpertname ,serviceEthicalreviewopinions.getExpertname());
+        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getExpertname())) {
+            wrappers.like(ServiceEthicalreviewopinions::getExpertname, serviceEthicalreviewopinions.getExpertname());
         }
-        if (serviceEthicalreviewopinions.getConclusiontime() != null){
-            wrappers.eq(ServiceEthicalreviewopinions::getConclusiontime ,serviceEthicalreviewopinions.getConclusiontime());
+        if (serviceEthicalreviewopinions.getConclusiontime() != null) {
+            wrappers.eq(ServiceEthicalreviewopinions::getConclusiontime, serviceEthicalreviewopinions.getConclusiontime());
         }
-        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getConclusionannex())){
-            wrappers.eq(ServiceEthicalreviewopinions::getConclusionannex ,serviceEthicalreviewopinions.getConclusionannex());
+        if (StringUtils.isNotBlank(serviceEthicalreviewopinions.getConclusionannex())) {
+            wrappers.eq(ServiceEthicalreviewopinions::getConclusionannex, serviceEthicalreviewopinions.getConclusionannex());
         }
-        if (serviceEthicalreviewopinions.getConclusionorder() != null){
-            wrappers.eq(ServiceEthicalreviewopinions::getConclusionorder ,serviceEthicalreviewopinions.getConclusionorder());
+        if (serviceEthicalreviewopinions.getConclusionorder() != null) {
+            wrappers.eq(ServiceEthicalreviewopinions::getConclusionorder, serviceEthicalreviewopinions.getConclusionorder());
         }
         return this.list(wrappers);
     }
@@ -73,18 +78,28 @@
     public List<EthicalReviewVO> selectVOList(EthicalReviewVO ethicalReviewVO) {
 
         SysUser user = SecurityUtils.getLoginUser().getUser();
-        List <SysRole> l = user.getRoles();
+        List<SysRole> l = user.getRoles();
         Boolean b = false;
-        for(SysRole r : l){
-            if(r.getRoleId().longValue() == 3){
+        for (SysRole r : l) {
+            if (r.getRoleId().longValue() == 3) {
                 b = true;
             }
         }
-        if(b){
+        if (b) {
             ethicalReviewVO.setReporterno(user.getUserName());
         }
+        List<EthicalReviewVO> ethicalReviewVOS = serviceEthicalreviewopinionsMapper.selectVOList(ethicalReviewVO);
 
-        return serviceEthicalreviewopinionsMapper.selectVOList(ethicalReviewVO);
+        for (EthicalReviewVO ethicalReviewVO1 : ethicalReviewVOS) {
+            if (ethicalReviewVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(ethicalReviewVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                ethicalReviewVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                ethicalReviewVO1.setAgeunit(map.get("ageUnit"));
+                ethicalReviewVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                ethicalReviewVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
+        return ethicalReviewVOS;
     }
 
 }
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 cfea81f..852b27d 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
@@ -514,7 +514,7 @@
 
         //053瀹℃壒閫氳繃涔嬪悗锛屽氨闇�瑕佹妸鈥滃姙鍏涓讳换鈥濈殑鍚嶅瓧濉笂
         if (checkFundVO.getFlowconclusion() == 1 && user.getUserName().equals("053")) {
-            serviceFund.setOfficedirector("瀹℃壒浜猴細" + user.getNickName() + " & 瀹℃壒鏃堕棿" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃");
+            serviceFund.setOfficedirector(user.getNickName());
             serviceFund.setUploadStates(1);
             //鏁版嵁鍙戦��
             Boolean aBoolean1 = null;
@@ -528,8 +528,6 @@
             }
         }
         System.out.println("serviceFund鐨勫�兼槸--------:" + serviceFund);
-        log.info("寮�濮嬫洿鏂扮殑鐨勫�兼槸--------");
-
         Boolean aBoolean1 = updateById(serviceFund);
         log.info("integer鏇存柊鐨勭殑鍊兼槸-------- :{}", aBoolean1);
         ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage();
@@ -747,6 +745,11 @@
 
 
     private Map<String, Object> getformmain_0831(ServiceFund serviceFund) {
+        ServiceFundflow serviceFundflow = new ServiceFundflow();
+        serviceFundflow.setFundid(serviceFund.getId());
+        serviceFundflow.setFundtype(2);
+        List<ServiceFundflow> serviceFundflows = serviceFundflowService.queryList(serviceFundflow);
+
         Map<String, Object> formmain_0831 = new HashMap<>();
         formmain_0831.put("鎹愮尞鑰呭鍚�", serviceFund.getDonorname());
         formmain_0831.put("鎶ラ攢浜哄憳", serviceFund.getUsername());
@@ -757,14 +760,14 @@
         formmain_0831.put("涓婁紶闄勪欢", null);
         formmain_0831.put("澶囨敞", null);
         formmain_0831.put("璐㈠姟瀹℃壒", null);
-        formmain_0831.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒", serviceFund.getFinancedirector());
-        formmain_0831.put("鍔炲叕瀹や富浠诲鎵�", serviceFund.getOfficedirector());
+        formmain_0831.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒", getLastApprovalInfo(serviceFundflows, serviceFund.getFinancedirector()));
+        formmain_0831.put("鍔炲叕瀹や富浠诲鎵�", getLastApprovalInfo(serviceFundflows, serviceFund.getOfficedirector()));
         formmain_0831.put("涓氬姟鍓櫌闀垮鎵�", serviceFund.getBusvicepresident());
         formmain_0831.put("璐㈠姟鍓櫌闀垮鎵�", serviceFund.getFinvicepresident());
         formmain_0831.put("涓績璐熻矗浜哄鎵�", serviceFund.getOpochecker());
         formmain_0831.put("鏀粯鏂瑰紡", serviceFund.getZffs());
-        formmain_0831.put("缁勯暱", serviceFund.getManagername());
-        formmain_0831.put("瀹℃壒浜哄憳", serviceFund.getFinancechecher());
+        formmain_0831.put("缁勯暱", getLastApprovalInfo(serviceFundflows, serviceFund.getManagername()));
+        formmain_0831.put("瀹℃壒浜哄憳", getLastApprovalInfo(serviceFundflows, serviceFund.getFinancechecher()));
         formmain_0831.put("鏀粯鏃ユ湡", serviceFund.getRiqi());
         formmain_0831.put("璇嗗埆浜�-浣滃簾", null);
         formmain_0831.put("璐㈠姟瀹℃壒绛惧瓧", serviceFund.getFinancedirector());
@@ -790,6 +793,31 @@
         return formmain_0831;
     }
 
+
+    public String getLastApprovalInfo(List<ServiceFundflow> serviceFundflows, String managerName) {
+        if (StringUtils.isEmpty(managerName)) return "";
+        if (CollectionUtils.isEmpty(serviceFundflows)) {
+            //濡傛灉鏄渶鍚庝竴涓汉瀹℃壒锛岃繖涓椂鍊欏彲鑳絝low閲岃繕娌℃湁鐢熸垚杩涘幓
+            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            return "瀹℃壒浜猴細" + managerName + " & 瀹℃壒鏃堕棿锛�" + sd.format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃";
+        }
+
+        Optional<ServiceFundflow> lastApproval = serviceFundflows.stream().filter(flow -> flow.getCheckusername().contains(managerName)).max(Comparator.comparing(ServiceFundflow::getCheckTime));
+
+        if (lastApproval.isPresent()) {
+            ServiceFundflow flow = lastApproval.get();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            if (flow.getCheckTime() == null) {
+                flow.setCheckTime(new Date());
+            }
+            String formattedTime = sdf.format(flow.getCheckTime());
+
+            return "瀹℃壒浜猴細" + managerName + " & 瀹℃壒鏃堕棿锛�" + formattedTime + " & 瀹℃壒缁撴灉锛氶�氳繃";
+        }
+
+        return "";
+    }
+
     @Override
     public Long getFundId(Long infoid) {
         return serviceFundMapper.getFundId(infoid);
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 0433746..c8435be 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
@@ -465,7 +465,7 @@
             }
             //053瀹℃壒閫氳繃涔嬪悗锛屽氨闇�瑕佹妸鈥滃姙鍏涓讳换鈥濈殑鍚嶅瓧濉笂
             if (checkFundVO.getFlowconclusion() == 1 && user.getUserName().equals("053")) {
-                serviceReimbursement.setOfficedirector("瀹℃壒浜猴細" + user.getNickName() + " & 瀹℃壒鏃堕棿" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃");
+                serviceReimbursement.setOfficedirector(user.getNickName());
                 serviceReimbursement.setUploadStates(1);
 
                 Boolean aBoolean1 = null;
@@ -477,7 +477,9 @@
                     }
                 }
             }
-
+//            if (StringUtils.isNotEmpty(serviceReimbursement.getManagername()) && serviceReimbursement.getManagername().equals(loginUser.getUser().getNickName())) {
+//                serviceReimbursement.setManagername("瀹℃壒浜猴細" + serviceReimbursement.getManagername() + " & 瀹℃壒鏃堕棿" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃");
+//            }
             updateById(serviceReimbursement);
 
             ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage();
@@ -515,6 +517,32 @@
         return allMap;
     }
 
+
+    public String getLastApprovalInfo(List<ServiceFundflow> serviceFundflows, String managerName) {
+        if (StringUtils.isEmpty(managerName)) return null;
+        if (org.springframework.util.CollectionUtils.isEmpty(serviceFundflows)) {
+            //濡傛灉鏄渶鍚庝竴涓汉瀹℃壒锛岃繖涓椂鍊欏彲鑳絝low閲岃繕娌℃湁鐢熸垚杩涘幓
+            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            return "瀹℃壒浜猴細" + managerName + " & 瀹℃壒鏃堕棿锛�" + sd.format(new Date()) + " & 瀹℃壒缁撴灉锛氶�氳繃";
+        }
+
+        Optional<ServiceFundflow> lastApproval = serviceFundflows.stream()
+                .filter(flow -> flow.getCheckusername().contains(managerName))
+                .max(Comparator.comparing(ServiceFundflow::getCheckTime));
+
+        if (lastApproval.isPresent()) {
+            ServiceFundflow flow = lastApproval.get();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            if(flow.getCheckTime()==null){
+                flow.setCheckTime(new Date());
+            }
+            String formattedTime = sdf.format(flow.getCheckTime());
+
+            return "瀹℃壒浜猴細" + managerName + " & 瀹℃壒鏃堕棿锛�" + formattedTime + " & 瀹℃壒缁撴灉锛氶�氳繃";
+        }
+
+        return "鏈壘鍒板鎵硅褰�";
+    }
 
     public Boolean sendData(ServiceReimbursement serviceReimbursement) {
         // fund鍜宖unddetail鐨勬暟鎹幏鍙�
@@ -711,12 +739,18 @@
     }
 
     private Map<String, Object> formmain_1209(ServiceReimbursementShared serviceReimbursementShared) {
+        ServiceFundflow serviceFundflow = new ServiceFundflow();
+        serviceFundflow.setFundid(serviceReimbursementShared.getReimid());
+        serviceFundflow.setFundtype(1);
+        List<ServiceFundflow> serviceFundflows = serviceFundflowService.queryList(serviceFundflow);
+
+
         Map<String, Object> formmain_1209 = new HashMap<>();
 
         formmain_1209.put("鎶ラ攢鏃ユ湡", new SimpleDateFormat("yyyy-MM-dd HH:mm").format(serviceReimbursementShared.getApplyTime()));
         formmain_1209.put("鍑哄樊浜�-浣滃簾", "");
         formmain_1209.put("鎶ラ攢浜�", serviceReimbursementShared.getUsername());
-        formmain_1209.put("鍖哄煙缁勯暱", serviceReimbursementShared.getManagername());
+        formmain_1209.put("鍖哄煙缁勯暱", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getManagername()));
         formmain_1209.put("鍑哄樊浜嬬敱", serviceReimbursementShared.getReason());
         formmain_1209.put("澶╂暟鍚堣", 0.00);
         formmain_1209.put("浜ら�氳垂鍚堣", serviceReimbursementShared.getTotalamount());
@@ -729,8 +763,8 @@
         formmain_1209.put("棰嗘閲戦澶у啓", serviceReimbursementShared.getBigstrmoney());
         formmain_1209.put("棰嗘閲戦", serviceReimbursementShared.getAmountrequested());
         formmain_1209.put("璐㈠姟瀹℃壒", "");
-        formmain_1209.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒", serviceReimbursementShared.getFinancedirector());
-        formmain_1209.put("鍔炲叕瀹や富浠诲鎵�", serviceReimbursementShared.getOfficedirector());
+        formmain_1209.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getFinancedirector()));
+        formmain_1209.put("鍔炲叕瀹や富浠诲鎵�", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getOfficedirector()));
         formmain_1209.put("澶囨敞", serviceReimbursementShared.getRemark());
         formmain_1209.put("涓氬姟鍓櫌闀垮鎵�", serviceReimbursementShared.getBusvicepresident());
         formmain_1209.put("璐㈠姟鍓櫌闀垮鎵�", serviceReimbursementShared.getFinvicepresident());
@@ -739,14 +773,14 @@
         formmain_1209.put("鍗″彿-浣滃簾", "");
         formmain_1209.put("鏀粯鏂瑰紡", serviceReimbursementShared.getZffs());
         formmain_1209.put("缁勯暱", serviceReimbursementShared.getManagername());
-        formmain_1209.put("瀹℃壒浜哄憳", serviceReimbursementShared.getFinancechecher());
+        formmain_1209.put("瀹℃壒浜哄憳", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getFinancechecher()));
         formmain_1209.put("鏀粯鏃ユ湡", serviceReimbursementShared.getRiqi());
         formmain_1209.put("涓婁紶闄勪欢", "");
         formmain_1209.put("鎵撴鍚堣", 0.00);
         formmain_1209.put("鍙戠エ璇嗗埆-浣滃簾", "");
         formmain_1209.put("璇嗗埆浜�-浣滃簾", "");
         formmain_1209.put("璐㈠姟瀹℃壒绛惧瓧", "");
-        formmain_1209.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒绛惧瓧", serviceReimbursementShared.getFinancedirector());
+        formmain_1209.put("璐㈠姟閮ㄨ礋璐d汉瀹℃壒绛惧瓧", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getFinancedirector()));
         formmain_1209.put("琛ㄥ崟缂栧彿1", "");
         formmain_1209.put("CIF璐﹀閰嶇疆1", "");
         formmain_1209.put("闄㈠尯", "");
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java
index b99e681..6bdbcb1 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceRelativesconfirmationServiceImpl.java
@@ -1,12 +1,16 @@
 package com.ruoyi.project.service.impl;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.List;
 
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.ServiceDonatebaseinfo;
+import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
 import com.ruoyi.project.domain.vo.RelativeConfirmationVO;
 import com.ruoyi.project.mapper.ServiceDonatebaseinfoMapper;
 import com.ruoyi.project.service.IServiceDonatebaseinfoService;
@@ -15,8 +19,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
 import java.util.ArrayList;
 import java.util.Map;
+
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.mapper.ServiceRelativesconfirmationMapper;
 import com.ruoyi.project.domain.ServiceRelativesconfirmation;
@@ -29,8 +35,7 @@
  * @date 2021-11-15
  */
 @Service
-public class ServiceRelativesconfirmationServiceImpl extends ServiceImpl<ServiceRelativesconfirmationMapper, ServiceRelativesconfirmation> implements IServiceRelativesconfirmationService
-{
+public class ServiceRelativesconfirmationServiceImpl extends ServiceImpl<ServiceRelativesconfirmationMapper, ServiceRelativesconfirmation> implements IServiceRelativesconfirmationService {
 
     @Autowired
     IServiceDonatebaseinfoService serviceDonatebaseinfoService;
@@ -51,123 +56,123 @@
     @Override
     public List<ServiceRelativesconfirmation> queryList(ServiceRelativesconfirmation serviceRelativesconfirmation) {
         LambdaQueryWrapper<ServiceRelativesconfirmation> wrappers = Wrappers.lambdaQuery();
-        if (serviceRelativesconfirmation.getId() != null){
-            wrappers.eq(ServiceRelativesconfirmation::getId ,serviceRelativesconfirmation.getId());
+        if (serviceRelativesconfirmation.getId() != null) {
+            wrappers.eq(ServiceRelativesconfirmation::getId, serviceRelativesconfirmation.getId());
         }
-        if (serviceRelativesconfirmation.getInfoid() != null){
-            wrappers.eq(ServiceRelativesconfirmation::getInfoid ,serviceRelativesconfirmation.getInfoid());
+        if (serviceRelativesconfirmation.getInfoid() != null) {
+            wrappers.eq(ServiceRelativesconfirmation::getInfoid, serviceRelativesconfirmation.getInfoid());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getDonorno())){
-            wrappers.eq(ServiceRelativesconfirmation::getDonorno ,serviceRelativesconfirmation.getDonorno());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getDonorno())) {
+            wrappers.eq(ServiceRelativesconfirmation::getDonorno, serviceRelativesconfirmation.getDonorno());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getName())){
-            wrappers.like(ServiceRelativesconfirmation::getName ,serviceRelativesconfirmation.getName());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getName())) {
+            wrappers.like(ServiceRelativesconfirmation::getName, serviceRelativesconfirmation.getName());
         }
-        if (serviceRelativesconfirmation.getIdcardtype() != null){
-            wrappers.eq(ServiceRelativesconfirmation::getIdcardtype ,serviceRelativesconfirmation.getIdcardtype());
+        if (serviceRelativesconfirmation.getIdcardtype() != null) {
+            wrappers.eq(ServiceRelativesconfirmation::getIdcardtype, serviceRelativesconfirmation.getIdcardtype());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getIdcardno())){
-            wrappers.eq(ServiceRelativesconfirmation::getIdcardno ,serviceRelativesconfirmation.getIdcardno());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getIdcardno())) {
+            wrappers.eq(ServiceRelativesconfirmation::getIdcardno, serviceRelativesconfirmation.getIdcardno());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getPhone())){
-            wrappers.eq(ServiceRelativesconfirmation::getPhone ,serviceRelativesconfirmation.getPhone());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getPhone())) {
+            wrappers.eq(ServiceRelativesconfirmation::getPhone, serviceRelativesconfirmation.getPhone());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidenceaddress())){
-            wrappers.eq(ServiceRelativesconfirmation::getResidenceaddress ,serviceRelativesconfirmation.getResidenceaddress());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidenceaddress())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResidenceaddress, serviceRelativesconfirmation.getResidenceaddress());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidenceprovince())){
-            wrappers.eq(ServiceRelativesconfirmation::getResidenceprovince ,serviceRelativesconfirmation.getResidenceprovince());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidenceprovince())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResidenceprovince, serviceRelativesconfirmation.getResidenceprovince());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidenceprovincename())){
-            wrappers.like(ServiceRelativesconfirmation::getResidenceprovincename ,serviceRelativesconfirmation.getResidenceprovincename());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidenceprovincename())) {
+            wrappers.like(ServiceRelativesconfirmation::getResidenceprovincename, serviceRelativesconfirmation.getResidenceprovincename());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecity())){
-            wrappers.eq(ServiceRelativesconfirmation::getResidencecity ,serviceRelativesconfirmation.getResidencecity());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecity())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResidencecity, serviceRelativesconfirmation.getResidencecity());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecityname())){
-            wrappers.like(ServiceRelativesconfirmation::getResidencecityname ,serviceRelativesconfirmation.getResidencecityname());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecityname())) {
+            wrappers.like(ServiceRelativesconfirmation::getResidencecityname, serviceRelativesconfirmation.getResidencecityname());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencetown())){
-            wrappers.eq(ServiceRelativesconfirmation::getResidencetown ,serviceRelativesconfirmation.getResidencetown());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencetown())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResidencetown, serviceRelativesconfirmation.getResidencetown());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencetownname())){
-            wrappers.like(ServiceRelativesconfirmation::getResidencetownname ,serviceRelativesconfirmation.getResidencetownname());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencetownname())) {
+            wrappers.like(ServiceRelativesconfirmation::getResidencetownname, serviceRelativesconfirmation.getResidencetownname());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecommunity())){
-            wrappers.eq(ServiceRelativesconfirmation::getResidencecommunity ,serviceRelativesconfirmation.getResidencecommunity());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecommunity())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResidencecommunity, serviceRelativesconfirmation.getResidencecommunity());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecommunityname())){
-            wrappers.like(ServiceRelativesconfirmation::getResidencecommunityname ,serviceRelativesconfirmation.getResidencecommunityname());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecommunityname())) {
+            wrappers.like(ServiceRelativesconfirmation::getResidencecommunityname, serviceRelativesconfirmation.getResidencecommunityname());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecountycode())){
-            wrappers.eq(ServiceRelativesconfirmation::getResidencecountycode ,serviceRelativesconfirmation.getResidencecountycode());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecountycode())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResidencecountycode, serviceRelativesconfirmation.getResidencecountycode());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecountyname())){
-            wrappers.like(ServiceRelativesconfirmation::getResidencecountyname ,serviceRelativesconfirmation.getResidencecountyname());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResidencecountyname())) {
+            wrappers.like(ServiceRelativesconfirmation::getResidencecountyname, serviceRelativesconfirmation.getResidencecountyname());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getKinship())){
-            wrappers.eq(ServiceRelativesconfirmation::getKinship ,serviceRelativesconfirmation.getKinship());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getKinship())) {
+            wrappers.eq(ServiceRelativesconfirmation::getKinship, serviceRelativesconfirmation.getKinship());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getSignfamilyrelations())){
-            wrappers.eq(ServiceRelativesconfirmation::getSignfamilyrelations ,serviceRelativesconfirmation.getSignfamilyrelations());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getSignfamilyrelations())) {
+            wrappers.eq(ServiceRelativesconfirmation::getSignfamilyrelations, serviceRelativesconfirmation.getSignfamilyrelations());
         }
-        if (serviceRelativesconfirmation.getKinshipChildrennum() != null){
-            wrappers.eq(ServiceRelativesconfirmation::getKinshipChildrennum ,serviceRelativesconfirmation.getKinshipChildrennum());
+        if (serviceRelativesconfirmation.getKinshipChildrennum() != null) {
+            wrappers.eq(ServiceRelativesconfirmation::getKinshipChildrennum, serviceRelativesconfirmation.getKinshipChildrennum());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getKinshipconfirmationsign())){
-            wrappers.eq(ServiceRelativesconfirmation::getKinshipconfirmationsign ,serviceRelativesconfirmation.getKinshipconfirmationsign());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getKinshipconfirmationsign())) {
+            wrappers.eq(ServiceRelativesconfirmation::getKinshipconfirmationsign, serviceRelativesconfirmation.getKinshipconfirmationsign());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getOrgandecision())){
-            wrappers.eq(ServiceRelativesconfirmation::getOrgandecision ,serviceRelativesconfirmation.getOrgandecision());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getOrgandecision())) {
+            wrappers.eq(ServiceRelativesconfirmation::getOrgandecision, serviceRelativesconfirmation.getOrgandecision());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getOrgandecisionOther())){
-            wrappers.eq(ServiceRelativesconfirmation::getOrgandecisionOther ,serviceRelativesconfirmation.getOrgandecisionOther());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getOrgandecisionOther())) {
+            wrappers.eq(ServiceRelativesconfirmation::getOrgandecisionOther, serviceRelativesconfirmation.getOrgandecisionOther());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getRelativeconfirmationsign())){
-            wrappers.eq(ServiceRelativesconfirmation::getRelativeconfirmationsign ,serviceRelativesconfirmation.getRelativeconfirmationsign());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getRelativeconfirmationsign())) {
+            wrappers.eq(ServiceRelativesconfirmation::getRelativeconfirmationsign, serviceRelativesconfirmation.getRelativeconfirmationsign());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getFamilyrelations())){
-            wrappers.eq(ServiceRelativesconfirmation::getFamilyrelations ,serviceRelativesconfirmation.getFamilyrelations());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getFamilyrelations())) {
+            wrappers.eq(ServiceRelativesconfirmation::getFamilyrelations, serviceRelativesconfirmation.getFamilyrelations());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getAcquisitiontissueno())){
-            wrappers.eq(ServiceRelativesconfirmation::getAcquisitiontissueno ,serviceRelativesconfirmation.getAcquisitiontissueno());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getAcquisitiontissueno())) {
+            wrappers.eq(ServiceRelativesconfirmation::getAcquisitiontissueno, serviceRelativesconfirmation.getAcquisitiontissueno());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getAcquisitiontissuename())){
-            wrappers.like(ServiceRelativesconfirmation::getAcquisitiontissuename ,serviceRelativesconfirmation.getAcquisitiontissuename());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getAcquisitiontissuename())) {
+            wrappers.like(ServiceRelativesconfirmation::getAcquisitiontissuename, serviceRelativesconfirmation.getAcquisitiontissuename());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResponsibleuserid())){
-            wrappers.eq(ServiceRelativesconfirmation::getResponsibleuserid ,serviceRelativesconfirmation.getResponsibleuserid());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResponsibleuserid())) {
+            wrappers.eq(ServiceRelativesconfirmation::getResponsibleuserid, serviceRelativesconfirmation.getResponsibleuserid());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResponsibleusername())){
-            wrappers.like(ServiceRelativesconfirmation::getResponsibleusername ,serviceRelativesconfirmation.getResponsibleusername());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getResponsibleusername())) {
+            wrappers.like(ServiceRelativesconfirmation::getResponsibleusername, serviceRelativesconfirmation.getResponsibleusername());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinateduserido())){
-            wrappers.eq(ServiceRelativesconfirmation::getCoordinateduserido ,serviceRelativesconfirmation.getCoordinateduserido());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinateduserido())) {
+            wrappers.eq(ServiceRelativesconfirmation::getCoordinateduserido, serviceRelativesconfirmation.getCoordinateduserido());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinatedusernameo())){
-            wrappers.eq(ServiceRelativesconfirmation::getCoordinatedusernameo ,serviceRelativesconfirmation.getCoordinatedusernameo());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinatedusernameo())) {
+            wrappers.eq(ServiceRelativesconfirmation::getCoordinatedusernameo, serviceRelativesconfirmation.getCoordinatedusernameo());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinateduseridt())){
-            wrappers.eq(ServiceRelativesconfirmation::getCoordinateduseridt ,serviceRelativesconfirmation.getCoordinateduseridt());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinateduseridt())) {
+            wrappers.eq(ServiceRelativesconfirmation::getCoordinateduseridt, serviceRelativesconfirmation.getCoordinateduseridt());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinatedusernamet())){
-            wrappers.eq(ServiceRelativesconfirmation::getCoordinatedusernamet ,serviceRelativesconfirmation.getCoordinatedusernamet());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCoordinatedusernamet())) {
+            wrappers.eq(ServiceRelativesconfirmation::getCoordinatedusernamet, serviceRelativesconfirmation.getCoordinatedusernamet());
         }
         Map<String, Object> params = serviceRelativesconfirmation.getParams();
         if (params.get("beginSigndate") != null && params.get("endSigndate") != null) {
-            wrappers.between(ServiceRelativesconfirmation::getSigndate ,params.get("beginSigndate"),params.get("endSigndate"));
+            wrappers.between(ServiceRelativesconfirmation::getSigndate, params.get("beginSigndate"), params.get("endSigndate"));
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCreateBy())){
-            wrappers.eq(ServiceRelativesconfirmation::getCreateBy ,serviceRelativesconfirmation.getCreateBy());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getCreateBy())) {
+            wrappers.eq(ServiceRelativesconfirmation::getCreateBy, serviceRelativesconfirmation.getCreateBy());
         }
-        if (serviceRelativesconfirmation.getCreateTime() != null){
-            wrappers.eq(ServiceRelativesconfirmation::getCreateTime ,serviceRelativesconfirmation.getCreateTime());
+        if (serviceRelativesconfirmation.getCreateTime() != null) {
+            wrappers.eq(ServiceRelativesconfirmation::getCreateTime, serviceRelativesconfirmation.getCreateTime());
         }
-        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getUpdateBy())){
-            wrappers.eq(ServiceRelativesconfirmation::getUpdateBy ,serviceRelativesconfirmation.getUpdateBy());
+        if (StringUtils.isNotBlank(serviceRelativesconfirmation.getUpdateBy())) {
+            wrappers.eq(ServiceRelativesconfirmation::getUpdateBy, serviceRelativesconfirmation.getUpdateBy());
         }
-        if (serviceRelativesconfirmation.getUpdateTime() != null){
-            wrappers.eq(ServiceRelativesconfirmation::getUpdateTime ,serviceRelativesconfirmation.getUpdateTime());
+        if (serviceRelativesconfirmation.getUpdateTime() != null) {
+            wrappers.eq(ServiceRelativesconfirmation::getUpdateTime, serviceRelativesconfirmation.getUpdateTime());
         }
         return this.list(wrappers);
     }
@@ -179,10 +184,9 @@
         String adjustcoordinateUserId = coordinateUserId.substring(coordinateUserId.length() - 2);
         int first = oldDonateNumber.indexOf("*");
 
-        if(first == -1){
+        if (first == -1) {
             return oldDonateNumber;
-        }
-        else {
+        } else {
             StringBuilder newDonateNumber = new StringBuilder(oldDonateNumber);
             newDonateNumber.replace(first, first + 2, adjustcoordinateUserId);
             String updateNumber = newDonateNumber.toString();
@@ -196,18 +200,27 @@
     public List<RelativeConfirmationVO> selectVOList(RelativeConfirmationVO relativeConfirmationVO) {
 
         SysUser user = SecurityUtils.getLoginUser().getUser();
-        List <SysRole> l = user.getRoles();
+        List<SysRole> l = user.getRoles();
         Boolean b = false;
-        for(SysRole r : l){
-            if(r.getRoleId().longValue() == 3){
+        for (SysRole r : l) {
+            if (r.getRoleId().longValue() == 3) {
                 b = true;
             }
         }
-        if(b){
+        if (b) {
             relativeConfirmationVO.setReporterno(user.getUserName());
         }
-
-        return serviceRelativesconfirmationMapper.selectVOList(relativeConfirmationVO);
+        List<RelativeConfirmationVO> relativeConfirmationVOS = serviceRelativesconfirmationMapper.selectVOList(relativeConfirmationVO);
+        for (RelativeConfirmationVO relativeConfirmationVO1 : relativeConfirmationVOS) {
+            if (relativeConfirmationVO1.getBirthday() != null) {
+                Map<String, String> map = CalculateDateUtils.calculateAge(relativeConfirmationVO1.getBirthday().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+                relativeConfirmationVO1.setAge(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+                relativeConfirmationVO1.setAgeunit(map.get("ageUnit"));
+                relativeConfirmationVO1.setAge2(org.apache.commons.lang3.ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null);
+                relativeConfirmationVO1.setAgeunit2(map.get("ageUnit2"));
+            }
+        }
+        return relativeConfirmationVOS;
     }
 
 }
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
index e163f41..5e4eb10 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
@@ -63,7 +63,7 @@
         service_donatebaseinfo.Sex as sex,
         service_donatebaseinfo.Age as age,
         service_donatebaseinfo.AgeUnit as ageUnit,
-        service_donatebaseinfo.Birthday as irthday,
+        service_donatebaseinfo.Birthday as birthday,
         service_donatebaseinfo.Phone as phone,
         service_donatebaseinfo.Nationality as nationality,
         service_donatebaseinfo.NativePlace as nativePlace,
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
index 22e321b..39f3514 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
@@ -49,7 +49,7 @@
         `service_donatebaseinfo`.`Name` AS `Name`,
         `service_donatebaseinfo`.`Sex` AS `Sex`,
         `service_donatebaseinfo`.`IDCardNo` AS `IDCardNo`,
-        `service_donatebaseinfo`.`Age` AS `Age`,
+        `service_donatebaseinfo`.`Birthday` AS `Birthday`,
         `service_donatebaseinfo`.`RegisterAddress` AS `RegisterAddress`,
         `service_donatebaseinfo`.`RegisterProvince` AS `RegisterProvince`,
         `service_donatebaseinfo`.`RegisterProvinceName` AS `RegisterProvinceName`,

--
Gitblit v1.9.3