From 3eff88d6218a1ef80b19b22aeb0f542a9cfbbf75 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 13 五月 2026 14:15:55 +0800
Subject: [PATCH] 伦理审查专家新增获取伦理审查专家接收、获取伦理审查专家数量、专家统计详情

---
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceEthicalreviewopinionsMapper.java            |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceEthicalreviewopinionsController.java  |   40 ++++++++++
 ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml                  |    3 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java                              |   26 ++++++
 ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml                  |   16 ++++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java                   |   11 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java                  |    4 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java                 |    3 
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceEthicalreviewopinionsService.java         |    3 
 ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml                              |   14 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java   |   18 ++++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsTotalVO.java               |   29 +++++++
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceEthicalreviewopinionsServiceImpl.java |    6 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java                          |   26 ++++++
 14 files changed, 198 insertions(+), 4 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
index 2373c8f..e160595 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatebaseinfoReportController.java
@@ -160,7 +160,7 @@
         boolean b = serviceDonatebaseinfoReportService.updateById(serviceDonatebaseinfoReport);
         if (b) {
             serviceDonatebaseinfoReportFileService.updateList(serviceDonatebaseinfoReport.getAnnexfilesList(), serviceDonatebaseinfoReport.getId(), serviceDonatebaseinfoReport.getCaseNo(), getNickName());
-            if (serviceDonatebaseinfoReport.getReportStatus().equals("3")) {
+            if (serviceDonatebaseinfoReport.getReportStatus().equals("3")&&serviceDonatebaseinfoReport.getIsDonate().equals(1)) {
                 //濡傛灉鍚屾剰涓婃姤锛岄偅灏卞彲浠ュ缓妗d簡锛堝線 ServiceDonatebaseinfo鏂板锛�
                 serviceDonatebaseinfoReportService.createDocument(serviceDonatebaseinfoReport);
             }
@@ -180,4 +180,20 @@
         serviceDonatebaseinfoReport.setDelFlag(1);
         return toAjax(serviceDonatebaseinfoReportService.updateById(serviceDonatebaseinfoReport));
     }
+
+    /**
+     * 淇敼鎹愮尞涓婃姤鍩虹
+     */
+    @ApiOperation("涓婃姤")
+    @Log(title = "涓婃姤", businessType = BusinessType.UPDATE)
+    @PostMapping("/report")
+    @RepeatSubmit
+    public AjaxResult report(@RequestBody ServiceDonatebaseinfoReport serviceDonatebaseinfoReport) {
+        if (StringUtils.isEmpty(serviceDonatebaseinfoReport.getCaseNo())) {
+            throw new BaseException("妗堜緥缂栧彿涓虹┖锛岃妫�鏌ュ悗鍐嶄慨鏀�");
+        }
+        boolean b = serviceDonatebaseinfoReportService.updateById(serviceDonatebaseinfoReport);
+
+        return toAjax(b);
+    }
 }
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 b1ae8c4..a8d120e 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
@@ -1,5 +1,7 @@
 package com.ruoyi.web.controller.project;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.NotRepeatCommit;
@@ -14,6 +16,9 @@
 import com.ruoyi.project.domain.ServiceEthicalreviewopinions;
 import com.ruoyi.project.domain.vo.EthicalReviewVO;
 import com.ruoyi.project.service.IServiceEthicalreviewopinionsService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -103,4 +108,39 @@
     public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(serviceEthicalreviewopinionsService.removeByIds(Arrays.asList(ids)));
     }
+
+    /**
+     * 鑾峰彇浼︾悊瀹℃煡涓撳鏁伴噺
+     */
+    @ApiOperation("鑾峰彇浼︾悊瀹℃煡涓撳鏁伴噺")
+    @GetMapping(value = "/expertCount")
+    public AjaxResult count(Integer InfoID) {
+        QueryWrapper<ServiceEthicalreviewopinions> ethicalreviewopinionsWrapper=new QueryWrapper<>();
+        ethicalreviewopinionsWrapper.eq("InfoID",InfoID);
+        long count =serviceEthicalreviewopinionsService.count(ethicalreviewopinionsWrapper);
+        return AjaxResult.success(count);
+    }
+
+    /**
+     * 鑾峰彇浼︾悊瀹℃煡涓撳鎺ユ敹
+     */
+    @ApiOperation("鑾峰彇浼︾悊瀹℃煡涓撳鎺ユ敹")
+    @GetMapping("/receiveStatus")
+    public AjaxResult receiveStatus(Integer InfoID,String DonorNo) {
+        QueryWrapper<ServiceEthicalreviewopinions> ethicalreviewopinionsWrapper=new QueryWrapper<>();
+        ethicalreviewopinionsWrapper.eq("InfoID",InfoID).eq("DonorNo",DonorNo);
+        ServiceEthicalreviewopinions serviceEthicalreviewopinions =new ServiceEthicalreviewopinions();
+        serviceEthicalreviewopinions.setReceiveStatus("1");
+        return toAjax(serviceEthicalreviewopinionsService.update(serviceEthicalreviewopinions,ethicalreviewopinionsWrapper));
+    }
+
+    /**
+     * 鑾峰彇浼︾悊瀹℃煡涓撳鏁伴噺
+     */
+    @ApiOperation("涓撳缁熻璇︽儏")
+    @GetMapping(value = "/expertTotal")
+    public AjaxResult expertTotal(String DonorNo) {
+        return AjaxResult.success(serviceEthicalreviewopinionsService.expertTotal(DonorNo));
+    }
+
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
index a7f5134..791645c 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDeathinfo.java
@@ -115,5 +115,31 @@
     @ApiModelProperty("鐘舵��1寰呭埄鐢紝2杩涜涓紝3鎹愮尞瀹屾垚锛�4鏀惧純")
     @Excel(name = "鐘舵��1寰呭埄鐢紝2杩涜涓紝3鎹愮尞瀹屾垚锛�4鏀惧純")
     private String state;
+
+    /** 姝讳骸鏃堕棿 */
+    @ApiModelProperty("蹇冩浜℃椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "蹇冩浜℃椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date heartdeathtime;
+
+    /** 姝讳骸鍘熷洜 */
+    @ApiModelProperty("蹇冩浜″師鍥�")
+    @Excel(name = "蹇冩浜″師鍥�")
+    private String heartdeathreason;
+
+    /** 姝讳骸鍒ゅ畾鍖荤敓涓� */
+    @ApiModelProperty("蹇冩浜″垽瀹氬尰鐢熶竴")
+    @Excel(name = "蹇冩浜″垽瀹氬尰鐢熶竴")
+    private String heartdeathjudgedocto;
+
+    /** 姝讳骸鍒ゅ畾鍖荤敓浜� */
+    @ApiModelProperty("蹇冩浜″垽瀹氬尰鐢熶簩")
+    @Excel(name = "蹇冩浜″垽瀹氬尰鐢熶簩")
+    private String heartdeathjudgedoctt;
+
+    /** 姝讳骸璇佹槑闄勪欢 */
+    @ApiModelProperty("蹇冩浜¤瘉鏄庨檮浠�")
+    @Excel(name = "蹇冩浜¤瘉鏄庨檮浠�")
+    private String heartdeathjudgeannex;
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
index 23105d9..66f3a05 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonatebaseinfoReport.java
@@ -431,5 +431,16 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date  entryTime;
 
+    @ApiModelProperty("椹冲洖绫诲瀷")
+    @Excel(name = "椹冲洖绫诲瀷")
+    private String rejectType;
+
+    /**
+     * 鏄惁涓婃姤0涓嶄笂鎶�1涓婃姤
+     */
+    @TableField(exist = false)
+    @ApiModelProperty("鏄惁鎹愮尞0涓嶆崘鐚�1鎹愮尞")
+    private Integer isDonate;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java
index b863da7..1577ac6 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceEthicalreviewinitiate.java
@@ -133,5 +133,9 @@
     @ApiModelProperty("闄勪欢澶氫釜;闅斿紑")
     @Excel(name = "闄勪欢澶氫釜;闅斿紑")
     private String filePatch;
+
+    @ApiModelProperty("绛惧悕")
+    @Excel(name = "绛惧悕")
+    private String sigin;
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java
index 58e1d03..e93f69a 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/DeathBaseInfoDTO.java
@@ -211,5 +211,31 @@
     @Excel(name = "鐘舵��1寰呭埄鐢紝2杩涜涓紝3鎹愮尞瀹屾垚锛�4鏀惧純")
     private String state;
 
+    /** 姝讳骸鏃堕棿 */
+    @ApiModelProperty("蹇冩浜℃椂闂�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "蹇冩浜℃椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date heartdeathtime;
+
+    /** 姝讳骸鍘熷洜 */
+    @ApiModelProperty("蹇冩浜″師鍥�")
+    @Excel(name = "蹇冩浜″師鍥�")
+    private String heartdeathreason;
+
+    /** 姝讳骸鍒ゅ畾鍖荤敓涓� */
+    @ApiModelProperty("蹇冩浜″垽瀹氬尰鐢熶竴")
+    @Excel(name = "蹇冩浜″垽瀹氬尰鐢熶竴")
+    private String heartdeathjudgedocto;
+
+    /** 姝讳骸鍒ゅ畾鍖荤敓浜� */
+    @ApiModelProperty("蹇冩浜″垽瀹氬尰鐢熶簩")
+    @Excel(name = "蹇冩浜″垽瀹氬尰鐢熶簩")
+    private String heartdeathjudgedoctt;
+
+    /** 姝讳骸璇佹槑闄勪欢 */
+    @ApiModelProperty("蹇冩浜¤瘉鏄庨檮浠�")
+    @Excel(name = "蹇冩浜¤瘉鏄庨檮浠�")
+    private String heartdeathjudgeannex;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java
index 752b7c9..0d16ef8 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/dto/ReviewInitiateBaseInfoDTO.java
@@ -168,5 +168,8 @@
     @Excel(name = "闄勪欢澶氫釜;闅斿紑")
     private String filePatch;
 
+    @ApiModelProperty("绛惧悕")
+    @Excel(name = "绛惧悕")
+    private String sigin;
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsTotalVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsTotalVO.java
new file mode 100644
index 0000000..5628153
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/EthicalreviewopinionsTotalVO.java
@@ -0,0 +1,29 @@
+package com.ruoyi.project.domain.vo;
+
+import com.ruoyi.common.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class EthicalreviewopinionsTotalVO {
+    @ApiModelProperty("鎬绘暟閲�")
+    private String count;
+
+    @ApiModelProperty("宸叉帴鏀舵暟閲�")
+    private String acceptCount;
+
+    @ApiModelProperty("鏈帴鏀舵暟閲�")
+    private String notAcceptCount;
+
+    @ApiModelProperty("鏈変笓鎰忚鏁伴噺")
+    private String opinionCount;
+
+    @ApiModelProperty("娌′笓鎰忚鏁伴噺")
+    private String notApinionCount;
+
+    @ApiModelProperty("鏈変笓鎰忛檮浠堕噺")
+    private String annexCount;
+
+    @ApiModelProperty("娌′笓鎰忛檮浠堕噺")
+    private String notAnnexCount;
+}
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 dc6ab26..61619b2 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
@@ -5,6 +5,7 @@
 import java.util.List;
 import com.ruoyi.project.domain.ServiceEthicalreviewopinions;
 import com.ruoyi.project.domain.vo.EthicalReviewVO;
+import com.ruoyi.project.domain.vo.EthicalreviewopinionsTotalVO;
 import com.ruoyi.project.domain.vo.TimeVO;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -28,4 +29,6 @@
     List<EthicalReviewVO> selectVOList(EthicalReviewVO ethicalReviewVO);
 
     Integer countNumber(TimeVO timeVO);
+
+    List<EthicalreviewopinionsTotalVO> expertTotal(String DonorNo);
 }
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 d40dd6e..6f5526f 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
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.project.domain.ServiceEthicalreviewopinions;
 import com.ruoyi.project.domain.vo.EthicalReviewVO;
+import com.ruoyi.project.domain.vo.EthicalreviewopinionsTotalVO;
 
 /**
  * 浼︾悊瀹℃煡涓撳鎰忚Service鎺ュ彛
@@ -26,4 +27,6 @@
     public Page<ServiceEthicalreviewopinions> queryListByPage(ServiceEthicalreviewopinions serviceEthicalreviewopinions);
 
     List<EthicalReviewVO> selectVOList(EthicalReviewVO ethicalReviewVO);
+
+    List<EthicalreviewopinionsTotalVO> expertTotal(String DonorNo);
 }
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 0be0d91..4c201f1 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
@@ -14,6 +14,7 @@
 import com.ruoyi.project.common.CalculateDateUtils;
 import com.ruoyi.project.domain.ServiceDonationwitness;
 import com.ruoyi.project.domain.vo.EthicalReviewVO;
+import com.ruoyi.project.domain.vo.EthicalreviewopinionsTotalVO;
 import com.ruoyi.project.domain.vo.MedicalEvaluationVO;
 import com.ruoyi.project.mapper.ServiceDonationwitnessMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -202,4 +203,9 @@
         return ethicalReviewVOS;
     }
 
+    public List<EthicalreviewopinionsTotalVO> expertTotal(String DonorNo) {
+
+        return serviceEthicalreviewopinionsMapper.expertTotal(DonorNo);
+    }
+
 }
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
index 4e80a62..af68ab4 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDeathinfoMapper.xml
@@ -50,7 +50,12 @@
                update_time,
                judgment_description,
                ext_content,
-               state
+               state,
+               heartDeathTime
+               heartDeathReason
+               heartDeathJudgeDoctO
+               heartDeathJudgeDoctT
+               heartDeathJudgeAnnex
         from service_deathinfo
     </sql>
 
@@ -111,7 +116,12 @@
         sdi.RememberAnnex as rememberannex,
         sdi.ResponsibleUserID as responsibleuserid,
         sdi.ResponsibleUserName as responsibleusername,
-        sdi.state
+        sdi.state,
+        sdi.heartDeathTime as heartdeathtime,
+        sdi.heartDeathReason as heartdeathreason,
+        sdi.heartDeathJudgeDoctO as heartdeathjudgedocto,
+        sdi.heartDeathJudgeDoctT as heartdeathjudgedoctt,
+        sdi.heartDeathJudgeAnnex as heartdeathjudgeannex
         FROM
         service_donatebaseinfo sd
         LEFT JOIN service_deathinfo sdi ON sd.ID = sdi.InfoID
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
index ee257e0..9f3d193 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewinitiateMapper.xml
@@ -103,7 +103,8 @@
         se.expert_opinion as expertOpinion,
         se.expert_time as expertTime,
         se.status as status,
-        se.file_patch as filePatch
+        se.file_patch as filePatch,
+        se.sigin
         FROM
         service_donatebaseinfo sd
         LEFT JOIN service_ethicalreviewinitiate se ON sd.ID = se.InfoID and sd.del_flag = 0
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
index e021b56..f327e28 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceEthicalreviewopinionsMapper.xml
@@ -186,4 +186,20 @@
           and create_time &lt;= #{endtime}
     </select>
 
+    <select id="expertTotal" resultType="com.ruoyi.project.domain.vo.EthicalreviewopinionsTotalVO">
+        SELECT COUNT(*) count,SUM(CASE WHEN receive_status = 1 THEN 1 ELSE 0 END) AS acceptCount,
+        SUM(CASE WHEN receive_status =0  THEN 1 ELSE 0 END) AS notAcceptCount,
+        SUM(CASE WHEN ExpertOpinion IS not null THEN 1 ELSE 0 END) AS opinionCount,
+        SUM(CASE WHEN ExpertOpinion IS null THEN 1 ELSE 0 END) AS notApinionCount,
+        SUM(CASE WHEN ConclusionAnnex IS not null THEN 1 ELSE 0 END) AS annexCount,
+        SUM(CASE WHEN ConclusionAnnex IS null THEN 1 ELSE 0 END) AS notAnnexCount
+
+        FROM service_ethicalreviewopinions
+        <where>
+            <if test="DonorNo != null ">DonorNo = #{DonorNo}</if>
+        </where>
+
+        GROUP BY receive_status,ExpertOpinion,ConclusionAnnex
+    </select>
+
 </mapper>

--
Gitblit v1.9.3