sinake
2026-09-15 c427395d096da3df775a2fac9987bbcbd1f654fd
案例趋势相关统计
已修改7个文件
已添加6个文件
407 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTotalsController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceTotals.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsBood.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsOrgan.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsSex.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsTotal.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsTrend.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/trendList.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceTotalsMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/iServiceTotalsService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTotalsServiceImp.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceTotalsController.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.project.domain.ServiceTotals;
import com.ruoyi.project.domain.vo.*;
import com.ruoyi.project.service.iServiceTotalsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -25,57 +26,57 @@
        @ApiOperation("案例趋势")
        @PostMapping("/caseTrend")
        public Result caseTrend(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsTrend>> caseTrend(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.caseTrend(totals);
            List<ServiceTotalsTrend> list = service.caseTrend(totals);
            return Result.success(list);
        }
        @ApiOperation("案例趋势月份")
        @PostMapping("/caseTrendMoon")
        public Result caseTrendMoon(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsTrend>> caseTrendMoon(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.caseTrendMoon(totals);
            List<ServiceTotalsTrend> list = service.caseTrendMoon(totals);
            return Result.success(list);
        }
        @ApiOperation("案例趋势区域")
        @PostMapping("/caseTrendArea")
        public Result caseTrendArea(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsTrend>> caseTrendArea(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.caseTrendArea(totals);
            List<ServiceTotalsTrend> list = service.caseTrendArea(totals);
            return Result.success(list);
        }
        @ApiOperation("捐献器官统计明细")
        @PostMapping("/organ")
        public Result organ(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsOrgan>> organ(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.organ(totals);
            List<ServiceTotalsOrgan> list = service.organ(totals);
            return Result.success(list);
        }
        @ApiOperation("器官获取/移植趋势")
        @PostMapping("/organMoon")
        public Result organMoon(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsOrgan>> organMoon(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.organMoon(totals);
            List<ServiceTotalsOrgan> list = service.organMoon(totals);
            return Result.success(list);
        }
        @ApiOperation("器官类型分布")
        @PostMapping("/organType")
        public Result organType(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsOrgan>> organType(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.organType(totals);
            List<ServiceTotalsOrgan> list = service.organType(totals);
            return Result.success(list);
        }
        @ApiOperation("捐献者年龄性别分布")
        @PostMapping("/caseSex")
        public Result caseSex(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsSex>> caseSex(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.caseSex(totals);
            List<ServiceTotalsSex> list = service.caseSex(totals);
            return Result.success(list);
        }
@@ -89,9 +90,25 @@
        @ApiOperation("性别与血型分布")
        @PostMapping("/caseBloodType")
        public Result caseBloodType(@RequestBody ServiceTotals totals)
        public Result<List<ServiceTotalsBood>> caseBloodType(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotals> list = service.caseBloodType(totals);
            List<ServiceTotalsBood> list = service.caseBloodType(totals);
            return Result.success(list);
        }
        @ApiOperation("总潜在总完成数统计")
        @PostMapping("/totals")
        public Result<List<ServiceTotalsTotal>> totals(@RequestBody ServiceTotals totals)
        {
            List<ServiceTotalsTotal> list = service.totals(totals);
            return Result.success(list);
        }
        @ApiOperation("案例明细列表")
        @PostMapping("/trendList")
        public Result<List<trendList>> trendList(@RequestBody ServiceTotals totals)
        {
            List<trendList> list = service.trendList(totals);
            return Result.success(list);
        }
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceTotals.java
@@ -30,38 +30,13 @@
    @ApiModelProperty("年龄段1:<17;2:18-49;3:50-69;4:>69")
    private String ageGroup;
    @ApiModelProperty("案例时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date donateTime;
    @ApiModelProperty("潜在捐献数")
    private Integer potentialCount;
    @ApiModelProperty("完成捐献数")
    private Integer completeCount;
    @ApiModelProperty("器管名称")
    private String organName;
    @ApiModelProperty("获取数")
    private Integer getCount;
    @ApiModelProperty("移植数")
    private Integer useCount;
    @ApiModelProperty("平均年龄")
    private Integer avgAge;
    @ApiModelProperty("总数")
    private Integer totalCount;
    @ApiModelProperty("男性数")
    private Integer manCount;
    @ApiModelProperty("女性数")
    private Integer womanCount;
    @ApiModelProperty("血型数")
    private Integer boodTypeCount;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsBood.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.project.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("opo血型统计")
public class ServiceTotalsBood {
    @ApiModelProperty("血型数")
    private Integer boodTypeCount;
    @ApiModelProperty("血型")
    private String boodType;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsOrgan.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.project.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("opo器官统计")
public class ServiceTotalsOrgan {
    @ApiModelProperty("案例时间")
    private String donateTime;
    @ApiModelProperty("器管名称")
    private String organName;
    @ApiModelProperty("获取数")
    private Integer getCount;
    @ApiModelProperty("移植数")
    private Integer useCount;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsSex.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.ruoyi.project.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("opo性别统计")
public class ServiceTotalsSex {
    @ApiModelProperty("总数")
    private Integer totalCount;
    @ApiModelProperty("男性数")
    private Integer manCount;
    @ApiModelProperty("女性数")
    private Integer womanCount;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsTotal.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.project.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("opo总统计")
public class ServiceTotalsTotal {
    @ApiModelProperty("总潜在捐献案例")
    private Integer totalPotential;
    @ApiModelProperty("总完成捐献数")
    private Integer totalCompletion;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/ServiceTotalsTrend.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.project.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("opo统计")
public class ServiceTotalsTrend {
    @ApiModelProperty("区域")
    private String area;
    @ApiModelProperty("案例时间")
    private String donateTime;
    @ApiModelProperty("潜在捐献数")
    private Integer potentialCount;
    @ApiModelProperty("完成捐献数")
    private Integer completeCount;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/trendList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.ruoyi.project.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("案例明细")
public class trendList {
    @ApiModelProperty("id")
    private Integer id;
    @ApiModelProperty("案例编号")
    private String caseNo;
    @ApiModelProperty("姓名")
    private String name;
    @ApiModelProperty("住院号")
    private String  InpatientNo;
    @ApiModelProperty("医院")
    private String  TreatmentHospitalName;
    @ApiModelProperty("工作流:1.供者维护   2 æçŒ®æ„æ„¿  3 åŒ»å­¦è¯„ä¼°  4 æ­»äº¡åˆ¤å®š 5 ä¼¦ç†å®¡æŸ¥  6 å™¨å®˜åˆ†é…  7 å™¨å®˜åˆ©ç”¨   99 æçŒ®å®Œæˆ")
    private Integer  workflow;
    @ApiModelProperty("案例时间")
    private String donatetime;
    @ApiModelProperty("死亡原因")
    private String DeathReason;
    @ApiModelProperty("器官")
    private String OrganName;
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceTotalsMapper.java
@@ -4,6 +4,7 @@
import com.ruoyi.project.domain.GiApi;
import com.ruoyi.project.domain.ServiceTasknum;
import com.ruoyi.project.domain.ServiceTotals;
import com.ruoyi.project.domain.vo.*;
import io.jsonwebtoken.impl.crypto.MacProvider;
import java.util.List;
@@ -15,43 +16,43 @@
     * æ¡ˆä¾‹è¶‹åŠ¿
     *
     */
    public List<ServiceTotals> caseTrend(ServiceTotals totals);
    public List<ServiceTotalsTrend> caseTrend(ServiceTotals totals);
    /**
     * æ¡ˆä¾‹è¶‹åŠ¿æœˆä»½
     *
     */
    public List<ServiceTotals> caseTrendMoon(ServiceTotals totals);
    public List<ServiceTotalsTrend> caseTrendMoon(ServiceTotals totals);
    /**
     * æ¡ˆä¾‹è¶‹åŠ¿åŒºåŸŸ
     *
     */
    public List<ServiceTotals> caseTrendArea(ServiceTotals totals);
    public List<ServiceTotalsTrend> caseTrendArea(ServiceTotals totals);
    /**
     * æçŒ®å™¨å®˜ç»Ÿè®¡æ˜Žç»†
     *
     */
    public List<ServiceTotals> organ(ServiceTotals totals);
    public List<ServiceTotalsOrgan> organ(ServiceTotals totals);
    /**
     * å™¨å®˜èŽ·å–/移植趋势
     *
     */
    public List<ServiceTotals> organMoon(ServiceTotals totals);
    public List<ServiceTotalsOrgan> organMoon(ServiceTotals totals);
    /**
     * å™¨å®˜ç±»åž‹åˆ†å¸ƒ
     *
     */
    public List<ServiceTotals> organType(ServiceTotals totals);
    public List<ServiceTotalsOrgan> organType(ServiceTotals totals);
    /**
     * æçŒ®è€…年龄性别分布
     *
     */
    public List<ServiceTotals> caseSex(ServiceTotals totals);
    public List<ServiceTotalsSex> caseSex(ServiceTotals totals);
    /**
     * å¹³å‡å¹´é¾„
@@ -63,8 +64,20 @@
     * æ€§åˆ«ä¸Žè¡€åž‹åˆ†å¸ƒ
     *
     */
    public List<ServiceTotals> caseBloodType(ServiceTotals totals);
    public List<ServiceTotalsBood> caseBloodType(ServiceTotals totals);
    /**
     * æ€»æ½œåœ¨æ€»å®Œæˆæ•°ç»Ÿè®¡
     *
     */
    public List<ServiceTotalsTotal> totals(ServiceTotals totals);
    /**
     * æ¡ˆä¾‹æ˜Žç»†åˆ—表
     *
     */
    public List<trendList> trendList(ServiceTotals totals);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/iServiceTotalsService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.project.domain.ServiceTotals;
import com.ruoyi.project.domain.vo.*;
import java.util.List;
@@ -12,40 +13,40 @@
     * æ¡ˆä¾‹è¶‹åŠ¿
     *
     */
    public List<ServiceTotals> caseTrend(ServiceTotals totals);
    public List<ServiceTotalsTrend> caseTrend(ServiceTotals totals);
    /**
     * æ¡ˆä¾‹è¶‹åŠ¿æœˆä»½
     *
     */
    public List<ServiceTotals> caseTrendMoon(ServiceTotals totals);
    public List<ServiceTotalsTrend> caseTrendMoon(ServiceTotals totals);
    /**
     * æ¡ˆä¾‹è¶‹åŠ¿åŒºåŸŸ
     *
     */
    public List<ServiceTotals> caseTrendArea(ServiceTotals totals);
    public List<ServiceTotalsTrend> caseTrendArea(ServiceTotals totals);
    /**
     * æçŒ®å™¨å®˜ç»Ÿè®¡æ˜Žç»†
     *
     */
    public List<ServiceTotals> organ(ServiceTotals totals);
    public List<ServiceTotalsOrgan> organ(ServiceTotals totals);
    /**
     * å™¨å®˜èŽ·å–/移植趋势
     *
     */
    public List<ServiceTotals> organMoon(ServiceTotals totals);
    public List<ServiceTotalsOrgan> organMoon(ServiceTotals totals);
    /**
     * å™¨å®˜ç±»åž‹åˆ†å¸ƒ
     *
     */
    public List<ServiceTotals> organType(ServiceTotals totals);
    public List<ServiceTotalsOrgan> organType(ServiceTotals totals);
    /**
     * æçŒ®è€…年龄性别分布
     *
     */
    public List<ServiceTotals> caseSex(ServiceTotals totals);
    public List<ServiceTotalsSex> caseSex(ServiceTotals totals);
    /**
     * å¹³å‡å¹´é¾„
     *
@@ -55,6 +56,18 @@
     * æ€§åˆ«ä¸Žè¡€åž‹åˆ†å¸ƒ
     *
     */
    public List<ServiceTotals> caseBloodType(ServiceTotals totals);
    public List<ServiceTotalsBood> caseBloodType(ServiceTotals totals);
    /**
     * æ€»æ½œåœ¨æ€»å®Œæˆæ•°ç»Ÿè®¡
     *
     */
    List<ServiceTotalsTotal> totals(ServiceTotals totals);
    /**
     * æ¡ˆä¾‹æ˜Žç»†åˆ—表
     *
     */
    List<trendList> trendList(ServiceTotals totals);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceDonatebaseinfoReportServiceImpl.java
@@ -143,6 +143,7 @@
        serviceDonatebaseinfo1.setRegistertown(serviceDonatebaseinfoReport.getRegistertownname());
        serviceDonatebaseinfo1.setReportHospital(serviceDonatebaseinfoReport.getToHospital());
        serviceDonatebaseinfo1.setFirstDept(serviceDonatebaseinfoReport.getDeptName());
        serviceDonatebaseinfo1.setRegistercountyname(serviceDonatebaseinfoReport.getRegisterCountyName());
        serviceDonatebaseinfo1.setCaseNo(null);
        //先通过caseNo查询是否存在
        ServiceDonatebaseinfo serviceDonatebaseinfo = new ServiceDonatebaseinfo();
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceTotalsServiceImp.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.project.domain.ServiceTotals;
import com.ruoyi.project.domain.vo.*;
import com.ruoyi.project.mapper.ServiceTotalsMapper;
import com.ruoyi.project.service.iServiceTotalsService;
import org.apache.commons.lang3.ObjectUtils;
@@ -21,7 +22,7 @@
     *
     */
    @Override
    public List<ServiceTotals> caseTrend(ServiceTotals totals) {
    public List<ServiceTotalsTrend> caseTrend(ServiceTotals totals) {
        if(ObjectUtils.isNotEmpty(totals.getAgeGroup())){
            switch (totals.getAgeGroup()) {
                case "1": totals.setAgeGroup(" and age<=17 "); break;
@@ -38,7 +39,7 @@
     *
     */
    @Override
    public List<ServiceTotals> caseTrendMoon(ServiceTotals totals) {
    public List<ServiceTotalsTrend> caseTrendMoon(ServiceTotals totals) {
        return mapper.caseTrendMoon(totals);
    }
@@ -47,7 +48,7 @@
     *
     */
    @Override
    public List<ServiceTotals> caseTrendArea(ServiceTotals totals) {
    public List<ServiceTotalsTrend> caseTrendArea(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
    }
@@ -56,8 +57,8 @@
     *
     */
    @Override
    public List<ServiceTotals> organ(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
    public List<ServiceTotalsOrgan> organ(ServiceTotals totals) {
        return mapper.organ(totals);
    }
    /**
@@ -65,8 +66,8 @@
     *
     */
    @Override
    public List<ServiceTotals> organMoon(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
    public List<ServiceTotalsOrgan> organMoon(ServiceTotals totals) {
        return mapper.organMoon(totals);
    }
    /**
@@ -74,8 +75,8 @@
     *
     */
    @Override
    public List<ServiceTotals> organType(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
    public List<ServiceTotalsOrgan> organType(ServiceTotals totals) {
        return mapper.organType(totals);
    }
    /**
@@ -83,8 +84,8 @@
     *
     */
    @Override
    public List<ServiceTotals> caseSex(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
    public List<ServiceTotalsSex> caseSex(ServiceTotals totals) {
        return mapper.caseSex(totals);
    }
    /**
@@ -93,15 +94,33 @@
     */
    @Override
    public List<ServiceTotals> caseAvgAge(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
        return mapper.caseAvgAge(totals);
    }
    /**
     * æ€§åˆ«ä¸Žè¡€åž‹åˆ†å¸ƒ
     *
     */
    @Override
    public List<ServiceTotals> caseBloodType(ServiceTotals totals) {
        return mapper.caseTrendArea(totals);
    public List<ServiceTotalsBood> caseBloodType(ServiceTotals totals) {
        return mapper.caseBloodType(totals);
    }
    /**
     * æ€§åˆ«ä¸Žè¡€åž‹åˆ†å¸ƒ
     *
     */
    @Override
    public List<ServiceTotalsTotal> totals(ServiceTotals totals) {
        return mapper.totals(totals);
    }
    /**
     * æ€§åˆ«ä¸Žè¡€åž‹åˆ†å¸ƒ
     *
     */
    @Override
    public List<trendList> trendList(ServiceTotals totals) {
        return mapper.trendList(totals);
    }
}
ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml
@@ -5,46 +5,46 @@
<mapper namespace="com.ruoyi.project.mapper.ServiceTotalsMapper">
    <select id="caseTrend" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
        SELECT DATE_FORMAT(a.ReportTime, '%Y-%m') donateTime, register_county_name area,  COUNT(*) potentialCount,COUNT(IF(complete_state=3, true, null)) completeCount  FROM service_donatebaseinfo_report a
        LEFT JOIN  service_donatecompletioninfo  b ON b.InfoID=a.id and a.del_flag=0 and b.del_flag=0
            resultType="ServiceTotalsTrend">
        SELECT DATE_FORMAT(a.donatetime, '%Y-%m') donateTime, RegisterCountyName area,  COUNT(*) potentialCount,COUNT(IF(complete_state=3, true, null)) completeCount  FROM service_donatebaseinfo a
        LEFT JOIN  service_donatecompletioninfo  b ON b.InfoID=a.id where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">and register_county_name>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.ReportTime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.ReportTime &lt;= #{endTime}</if>
            <if test="area != null  and area != ''">and a.RegisterCountyName>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.donatetime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.donatetime &lt;= #{endTime}</if>
        </where>
        GROUP BY register_county_name, DATE_FORMAT(a.ReportTime, '%Y-%m')
        GROUP BY RegisterCountyName, DATE_FORMAT(a.donatetime, '%Y-%m')
    </select>
    <select id="caseTrendMoon" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
        SELECT DATE_FORMAT(a.ReportTime, '%Y-%m') donateTime, COUNT(*) potentialCount,COUNT(IF(complete_state=3, true, null)) completeCount  FROM service_donatebaseinfo a
        LEFT JOIN  service_donatecompletioninfo  b ON b.InfoID=a.id and a.del_flag=0 and b.del_flag=0
            resultType="ServiceTotalsTrend">
        SELECT DATE_FORMAT(a.donatetime, '%Y-%m') donateTime, COUNT(*) potentialCount,COUNT(IF(complete_state=3, true, null)) completeCount  FROM service_donatebaseinfo a
        LEFT JOIN  service_donatecompletioninfo  b ON b.InfoID=a.id where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">and register_county_name>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.ReportTime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.ReportTime &lt;= #{endTime}</if>
            <if test="area != null  and area != ''">and a.RegisterCountyName>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.donatetime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.donatetime &lt;= #{endTime}</if>
        </where>
        GROUP BY DATE_FORMAT(a.ReportTime, '%Y-%m')
        GROUP BY DATE_FORMAT(a.donatetime, '%Y-%m')
    </select>
    <select id="caseTrendArea" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
        SELECT register_county_name area, COUNT(*) potentialCount,COUNT(IF(complete_state=3, true, null)) completeCount  FROM service_donatebaseinfo a
        LEFT JOIN  service_donatecompletioninfo  b ON b.InfoID=a.id and a.del_flag=0 and b.del_flag=0
            resultType="ServiceTotalsTrend">
        SELECT RegisterCountyName area, COUNT(*) potentialCount,COUNT(IF(complete_state=3, true, null)) completeCount  FROM service_donatebaseinfo a
        LEFT JOIN  service_donatecompletioninfo  b ON b.InfoID=a.id where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">and register_county_name>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.ReportTime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.ReportTime &lt;= #{endTime}</if>
            <if test="area != null  and area != ''">and a.RegisterCountyName>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.donatetime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.donatetime &lt;= #{endTime}</if>
        </where>
        GROUP BY register_county_name
        GROUP BY RegisterCountyName
    </select>
    <select id="organ" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
            resultType="ServiceTotalsOrgan">
        SELECT DATE_FORMAT(a.OrganGetTime, '%Y-%m') donateTime,a.OrganName organName, COUNT(*) getCount,
        COUNT(IF(transplantstate=3, true, NULL)) useCount   FROM  service_donationwitnessorgan a
        LEFT JOIN  service_donatecomporgan b ON a.InfoID=b.InfoID AND a.OrganName=b.OrganName  and a.del_flag=0  and b.del_flag=0
        LEFT JOIN  service_donatecomporgan b ON a.InfoID=b.InfoID AND a.OrganName=b.OrganName  where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">
                and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
@@ -57,10 +57,10 @@
    </select>
    <select id="organMoon" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
            resultType="ServiceTotalsOrgan">
        SELECT DATE_FORMAT(a.OrganGetTime, '%Y-%m') donateTime, COUNT(*) getCount,
        COUNT(IF(transplantstate=3, true, NULL)) useCount   FROM  service_donationwitnessorgan a
        LEFT JOIN  service_donatecomporgan b ON a.InfoID=b.InfoID AND a.OrganName=b.OrganName  and a.del_flag=0  and b.del_flag=0
        LEFT JOIN  service_donatecomporgan b ON a.InfoID=b.InfoID AND a.OrganName=b.OrganName  where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">
                and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
@@ -73,10 +73,10 @@
    </select>
    <select id="organType" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
            resultType="ServiceTotalsOrgan">
        SELECT a.OrganName organName, COUNT(*) getCount,
        COUNT(IF(transplantstate=3, true, NULL)) useCount   FROM  service_donationwitnessorgan a
        LEFT JOIN  service_donatecomporgan b ON a.InfoID=b.InfoID AND a.OrganName=b.OrganName  and a.del_flag=0  and b.del_flag=0
        LEFT JOIN  service_donatecomporgan b ON a.InfoID=b.InfoID AND a.OrganName=b.OrganName  where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">
                and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
@@ -89,15 +89,15 @@
    </select>
    <select id="caseSex" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
            resultType="ServiceTotalsSex">
        SELECT COUNT(sex) totalCount, COUNT(IF(sex=1, true, NULL)) manCount ,COUNT(IF(sex=2, true, NULL)) womanCount
        FROM service_donatebaseinfo
        FROM service_donatebaseinfo where del_flag=0
        <where>
            <if test="area != null  and area != ''">
                and  RegisterCountyName>=#{area}
            </if>
            <if test="bloodType != null  and bloodType != ''">
                and  BloodType>=#{bloodType}
            <if test="boodType != null  and boodType != ''">
                and  BloodType>=#{boodType}
            </if>
            <if test="sex != null  and sex != ''">
                and  sex>=#{sex}
@@ -113,13 +113,13 @@
    <select id="caseAvgAge" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
        SELECT AVG(age) avgAge FROM  service_donatebaseinfo
        SELECT AVG(age) avgAge FROM  service_donatebaseinfo where del_flag=0
        <where>
            <if test="area != null  and area != ''">
                and  RegisterCountyName>=#{area}
            </if>
            <if test="bloodType != null  and bloodType != ''">
                and  BloodType>=#{bloodType}
            <if test="boodType != null  and boodType != ''">
                and  BloodType>=#{boodType}
            </if>
            <if test="sex != null  and sex != ''">
                and  sex>=#{sex}
@@ -133,15 +133,15 @@
    </select>
    <select id="caseBloodType" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
            resultType="ServiceTotalsBood">
        SELECT COUNT(BloodType) boodTypeCount,BloodType bloodType
        FROM service_donatebaseinfo
        FROM service_donatebaseinfo where del_flag=0
        <where>
            <if test="area != null  and area != ''">
                and  RegisterCountyName>=#{area}
            </if>
            <if test="bloodType != null  and bloodType != ''">
                and  BloodType>=#{bloodType}
            <if test="boodType != null  and boodType != ''">
                and  BloodType>=#{boodType}
            </if>
            <if test="sex != null  and sex != ''">
                and  sex>=#{sex}
@@ -155,4 +155,25 @@
        GROUP BY  BloodType
    </select>
    <select id="totals" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotalsTotal">
        SELECT ( SELECT COUNT(*) FROM service_donatebaseinfo_report WHERE del_flag=0) totalPotential,
        (SELECT COUNT(*) FROM service_donatecompletioninfo WHERE del_flag=0) totalCompletion
    </select>
    <select id="trendList" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="trendList">
        SELECT a.id,a.case_no,a.NAME ,a.InpatientNo,a.TreatmentHospitalName,a.workflow,a.donatetime,d.DeathReason,
        (SELECT  GROUP_CONCAT(c.OrganName) FROM service_donateorgan c WHERE c.InfoId=a.id AND c.del_flag=0) OrganName
        FROM service_donatebaseinfo a
        LEFT JOIN service_deathinfo d ON d.InfoID=a.id
        where a.del_flag=0
        <where>
            <if test="area != null  and area != ''">and a.RegisterCountyName>=#{area}</if>
            <if test="startTime != null  and startTime != ''">and a.donatetime>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.donatetime &lt;= #{endTime}</if>
        </where>
    </select>
</mapper>