From 427096ae47a5bac72f655964b90cf4c0714261fd Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 19 五月 2026 13:37:50 +0800
Subject: [PATCH] 遗体器官获取伦理审查表word导出功能

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportFileServiceImpl.java         |    1 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsStateTotalVO.java          |   15 ++++++-
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewopinionsMapper.java            |    2 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java  |   14 ++++--
 ruoyi-admin/src/main/resources/application-srm.yml                                                      |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewopinionsService.java         |    2 +
 ruoyi-admin/src/main/resources/template/遗体器官获取伦理审查表首页.xml                                               |   31 +--------------
 ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml                  |   16 ++++++++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java |    5 ++
 9 files changed, 50 insertions(+), 38 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
index 1aa846f..9603720 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java
@@ -31,6 +31,7 @@
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.poi.ss.formula.functions.Now;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -196,6 +197,7 @@
         if(list.size()==0){
             return Result.error("浼︾悊瀹℃煡id鏃犵浉鍏虫暟鎹�");
         }
+        EthicalreviewopinionsStateTotalVO  stateTotalVO=serviceEthicalreviewopinionsService.stateTotalAll(nitiateId);
         String filePath = getClass().getResource("/template/").getPath();
         if(filePath.substring(0,1).equals("/"))
             filePath=filePath.substring(1);
@@ -205,12 +207,13 @@
             content = Files.readString(Paths.get(filePath+"閬椾綋鍣ㄥ畼鑾峰彇浼︾悊瀹℃煡琛ㄩ椤�.xml"), StandardCharsets.UTF_8);
             String name=list.get(0).getName()+"锛堜綇闄㈠彿锛�"+list.get(0).getInpatientno()+"锛�";
             content=content.replace("$name",name);//椤圭洰鍚嶇О
-            content=content.replace("$inCount","16");//鍒颁細濮斿憳
+
+            content=content.replace("$inCount",stateTotalVO.getInCount());//鍒颁細濮斿憳
             content=content.replace("$avoidCount","0");//鍥為伩濮斿憳
-            content=content.replace("$agreeCount","15");//鍚屾剰
-            content=content.replace("$updateAgreeCount","2");//淇敼鍚庡悓鎰�
-            content=content.replace("$disagreeCount","3");//涓嶅悓鎰�
-            content=content.replace("$abstentionCount","4");//寮冩潈
+            content=content.replace("$agreeCount",stateTotalVO.getAgreeCount());//鍚屾剰
+            content=content.replace("$updateAgreeCount",stateTotalVO.getRejectCount());//淇敼鍚庡悓鎰�
+            content=content.replace("$disagreeCount",stateTotalVO.getDisagreeCount());//涓嶅悓鎰�
+            content=content.replace("$abstentionCount",stateTotalVO.getWaiveCount());//寮冩潈
             String committeeOpinion="";
             for (EthicalReviewVO row:list) {
                 String State="",sgin="",id=row.getId()+"",expName=row.getExpertname();
@@ -251,6 +254,7 @@
                         "        </w:tr>";
                }
             content=content.replace("$committeeOpinion",committeeOpinion);//濮斿憳浼氭剰瑙�
+            content=content.replace("$dateContent",DateUtils.parseDateToStr("yyyy骞碝M鏈坉d鏃�",new Date()));//鏃ユ湡
 
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/ruoyi-admin/src/main/resources/application-srm.yml b/ruoyi-admin/src/main/resources/application-srm.yml
index 542d99a..9bfe756 100644
--- a/ruoyi-admin/src/main/resources/application-srm.yml
+++ b/ruoyi-admin/src/main/resources/application-srm.yml
@@ -7,7 +7,7 @@
       # 涓诲簱鏁版嵁婧�
       master:
         # 鍖婚櫌鐜
-        url: jdbc:mysql://127.0.0.1:3306/opo-qd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://127.0.0.1:3306/opo_qd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: root
         password: Smartor.2025
 
diff --git "a/ruoyi-admin/src/main/resources/template/\351\201\227\344\275\223\345\231\250\345\256\230\350\216\267\345\217\226\344\274\246\347\220\206\345\256\241\346\237\245\350\241\250\351\246\226\351\241\265.xml" "b/ruoyi-admin/src/main/resources/template/\351\201\227\344\275\223\345\231\250\345\256\230\350\216\267\345\217\226\344\274\246\347\220\206\345\256\241\346\237\245\350\241\250\351\246\226\351\241\265.xml"
index 584433e..3d03fb6 100644
--- "a/ruoyi-admin/src/main/resources/template/\351\201\227\344\275\223\345\231\250\345\256\230\350\216\267\345\217\226\344\274\246\347\220\206\345\256\241\346\237\245\350\241\250\351\246\226\351\241\265.xml"
+++ "b/ruoyi-admin/src/main/resources/template/\351\201\227\344\275\223\345\231\250\345\256\230\350\216\267\345\217\226\344\274\246\347\220\206\345\256\241\346\237\245\350\241\250\351\246\226\351\241\265.xml"
@@ -897,34 +897,7 @@
                 <w:p wsp:rsidR="00425E28" wsp:rsidRPr="00425E28" wsp:rsidRDefault="00425E28" wsp:rsidP="00425E28"><w:pPr><w:rPr><w:rFonts w:ascii="瀹嬩綋" w:h-ansi="瀹嬩綋" w:cs="瀹嬩綋" w:hint="fareast"/><wx:font
                         wx:val="瀹嬩綋"/><w:sz w:val="24"/></w:rPr></w:pPr></w:p></w:tc></w:tr>
 
-        <w:tr wsp:rsidR="00425E28" wsp:rsidRPr="00CB3FB5" wsp:rsidTr="00425E28"><w:trPr><w:trHeight w:val="680"/></w:trPr>
-            <w:tc><w:tcPr><w:tcW w:w="885" w:type="dxa"/><w:vmerge/><w:shd w:val="clear" w:color="auto" w:fill="auto"/><w:vAlign
-                    w:val="center"/></w:tcPr>
-                <w:p wsp:rsidR="00425E28" wsp:rsidRPr="00CB3FB5" wsp:rsidRDefault="00425E28" wsp:rsidP="006A1099"><w:pPr></w:pPr></w:p>
-            </w:tc>
-            <w:tc><w:tcPr></w:tcPr>
-                <w:p wsp:rsidR="00425E28" wsp:rsidRPr="00CB3FB5" wsp:rsidRDefault="00AC7CCA" wsp:rsidP="00CB3FB5">
-                    <w:r wsp:rsidRPr="00737357">
-                        <w:t>銆愬鍛樺鎵广�戝垬骞夸紵   淇敼鍚庡悓鎰�</w:t></w:r>
-                   </w:p>
-            </w:tc>
-            <w:tc><w:tcPr></w:tcPr>
-                <w:p wsp:rsidR="00425E28" wsp:rsidRPr="00CB3FB5" wsp:rsidRDefault="00AC7CCA" wsp:rsidP="00CB3FB5">
-                    <w:r wsp:rsidRPr="00737357">
-                        <w:t>绛惧悕锛�</w:t></w:r>
-                    <w:r wsp:rsidR="00421BE1">
-                        <w:pict>
-                        <w:binData w:name="wordml://03000001.png" xml:space="preserve"> </w:binData>
-                            <v:shape style="width:50pt;height:20pt"><v:imagedata src="wordml://03000001.png" o:title="my绛惧瓧"/></v:shape>
-                        </w:pict>
-                    </w:r>
-                </w:p>
-            </w:tc>
-            <w:tc><w:tcPr></w:tcPr>
-                <w:p wsp:rsidR="00425E28" wsp:rsidRPr="00CB3FB5" wsp:rsidRDefault="00AC7CCA" wsp:rsidP="00CB3FB5">
-                    <w:r wsp:rsidRPr="00737357"><w:t>2026-05-18 15:36:01</w:t></w:r></w:p>
-            </w:tc>
-        </w:tr>
+        $committeeOpinion
 
 
         <w:tr wsp:rsidR="00425E28" wsp:rsidRPr="00CB3FB5" wsp:rsidTr="00425E28"><w:trPr><w:trHeight w:val="567"/></w:trPr>
@@ -959,7 +932,7 @@
                     <w:sz w:val="24"/></w:rPr></w:pPr>
                     <w:r wsp:rsidRPr="00CB3FB5"><w:rPr><w:rFonts w:ascii="瀹嬩綋" w:h-ansi="瀹嬩綋" w:cs="瀹嬩綋" w:hint="fareast"/><wx:font
                             wx:val="瀹嬩綋"/><w:sz w:val="24"/></w:rPr>
-                        <w:t>                                 2026骞�5鏈�5鏃�</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p
+                        <w:t>                                 $dateContent</w:t></w:r></w:p></w:tc></w:tr></w:tbl><w:p
             wsp:rsidR="00CB3FB5" wsp:rsidRDefault="00CB3FB5"><w:pPr><w:rPr><w:rFonts w:ascii="鏂规灏忔爣瀹嬬畝浣�" w:fareast="鏂规灏忔爣瀹嬬畝浣�" w:h-ansi="鏂规灏忔爣瀹嬬畝浣�" w:cs="鏂规灏忔爣瀹嬬畝浣�" w:hint="fareast"/><wx:font
             wx:val="鏂规灏忔爣瀹嬬畝浣�"/><w:sz w:val="36"/><w:sz-cs w:val="44"/></w:rPr></w:pPr></w:p><w:sectPr
             wsp:rsidR="00CB3FB5"><w:pgSz w:w="11906" w:h="16838"/>
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsStateTotalVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsStateTotalVO.java
index 21b94b8..f5eed4b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsStateTotalVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsStateTotalVO.java
@@ -8,12 +8,21 @@
     @ApiModelProperty("鎬诲鏌ラ噺")
     private String count;
 
-    @ApiModelProperty("瀹℃煡閫氳繃")
+    @ApiModelProperty("鍒颁細閲�")
+    private String inCount;
+
+    @ApiModelProperty("瀹℃煡閫氳繃閲�")
     private String throughCount;
 
-    @ApiModelProperty("瀹℃煡椹冲洖")
+    @ApiModelProperty("淇敼鍚庡悓鎰忛噺")
     private String rejectCount;
 
-    @ApiModelProperty("宸叉斁寮�")
+    @ApiModelProperty("寮冩潈閲�")
     private String waiveCount;
+
+    @ApiModelProperty("涓嶅悓鎰忛噺")
+    private String disagreeCount;
+
+    @ApiModelProperty("鍚屾剰閲�")
+    private String agreeCount;
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewopinionsMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewopinionsMapper.java
index 914353a..997d372 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewopinionsMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewopinionsMapper.java
@@ -36,4 +36,6 @@
     Integer updateTimeOut();
 
     List<EthicalreviewopinionsStateTotalVO> stateTotal(String expertNo);
+
+    EthicalreviewopinionsStateTotalVO stateTotalAll(String nitiateId);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewopinionsService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewopinionsService.java
index c0f0394..8e0911b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewopinionsService.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewopinionsService.java
@@ -34,4 +34,6 @@
     Integer updateTimeOut();
 
     List<EthicalreviewopinionsStateTotalVO> stateTotal(String expertNo);
+
+    EthicalreviewopinionsStateTotalVO stateTotalAll(String nitiateId);
 }
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 50c08b3..3fe36f9 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
@@ -213,4 +213,9 @@
         return serviceEthicalreviewopinionsMapper.stateTotal(expertNo);
     }
 
+    public EthicalreviewopinionsStateTotalVO stateTotalAll(String nitiateId) {
+
+        return serviceEthicalreviewopinionsMapper.stateTotalAll(nitiateId);
+    }
+
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportFileServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportFileServiceImpl.java
index 3507562..09e782c 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportFileServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTransportFileServiceImpl.java
@@ -102,6 +102,7 @@
         // 娣诲姞鏂扮殑璁板綍锛堝瓨鍦ㄤ簬鏂板垪琛ㄤ絾涓嶅湪鏁版嵁搴撲腑锛�
         for (ServiceTransportFile serviceTransportFile : annexfilesList) {
             if (StringUtils.isNotEmpty(serviceTransportFile.getFileName()) && !existingPaths.contains(serviceTransportFile.getFileName().trim())) {
+                serviceTransportFile.setId(null);
                 serviceTransportFile.setTransportId(reportId);
                 serviceTransportFile.setCreateBy(updateName);
                 serviceTransportFile.setUpdateTime(new Date());
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
index d838f25..b0f20e7 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
@@ -234,4 +234,20 @@
 
     </select>
 
+    <select id="stateTotalAll" resultType="com.ruoyi.project.domain.vo.EthicalreviewopinionsStateTotalVO">
+        SELECT COUNT(*) count,SUM(CASE WHEN receive_status = 5 THEN 1 ELSE 0 END) AS throughCount,
+        SUM(CASE WHEN receive_status =4  THEN 1 ELSE 0 END) AS rejectCount,
+        SUM(CASE WHEN receive_status =3  THEN 1 ELSE 0 END) AS waiveCount,
+        SUM(CASE WHEN receive_status =2  THEN 1 ELSE 0 END) AS disagreeCount,
+        SUM(CASE WHEN receive_status =1  THEN 1 ELSE 0 END) AS agreeCount,
+        SUM(CASE WHEN receive_status !=0  THEN 1 ELSE 0 END) AS inCount
+
+        FROM service_ethicalreviewopinions
+        <where>
+            <if test="nitiateId != null ">nitiate_id = #{nitiateId}</if>
+        </where>
+
+
+    </select>
+
 </mapper>

--
Gitblit v1.9.3