From c427395d096da3df775a2fac9987bbcbd1f654fd Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 15 九月 2026 17:40:00 +0800
Subject: [PATCH] 案例趋势相关统计
---
ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 179 insertions(+), 0 deletions(-)
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml
new file mode 100644
index 0000000..68d91bf
--- /dev/null
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.project.mapper.ServiceTotalsMapper">
+
+ <select id="caseTrend" parameterType="com.ruoyi.project.domain.ServiceTotals"
+ 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 a.RegisterCountyName>=#{area}</if>
+ <if test="startTime != null and startTime != ''">and a.donatetime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.donatetime <= #{endTime}</if>
+ </where>
+ GROUP BY RegisterCountyName, DATE_FORMAT(a.donatetime, '%Y-%m')
+ </select>
+
+ <select id="caseTrendMoon" parameterType="com.ruoyi.project.domain.ServiceTotals"
+ 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 a.RegisterCountyName>=#{area}</if>
+ <if test="startTime != null and startTime != ''">and a.donatetime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.donatetime <= #{endTime}</if>
+ </where>
+ GROUP BY DATE_FORMAT(a.donatetime, '%Y-%m')
+ </select>
+
+ <select id="caseTrendArea" parameterType="com.ruoyi.project.domain.ServiceTotals"
+ 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 a.RegisterCountyName>=#{area}</if>
+ <if test="startTime != null and startTime != ''">and a.donatetime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.donatetime <= #{endTime}</if>
+ </where>
+ GROUP BY RegisterCountyName
+ </select>
+
+ <select id="organ" parameterType="com.ruoyi.project.domain.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 where a.del_flag=0
+ <where>
+ <if test="area != null and area != ''">
+ and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
+ </if>
+ <if test="organName != null and organName != ''">and a.OrganName>=#{organName}</if>
+ <if test="startTime != null and startTime != ''">and a.OrganGetTime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.OrganGetTime <= #{endTime}</if>
+ </where>
+ GROUP BY DATE_FORMAT(a.OrganGetTime, '%Y-%m'),a.OrganName
+ </select>
+
+ <select id="organMoon" parameterType="com.ruoyi.project.domain.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 where a.del_flag=0
+ <where>
+ <if test="area != null and area != ''">
+ and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
+ </if>
+ <if test="organName != null and organName != ''">and a.OrganName>=#{organName}</if>
+ <if test="startTime != null and startTime != ''">and a.OrganGetTime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.OrganGetTime <= #{endTime}</if>
+ </where>
+ GROUP BY DATE_FORMAT(a.OrganGetTime, '%Y-%m')
+ </select>
+
+ <select id="organType" parameterType="com.ruoyi.project.domain.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 where a.del_flag=0
+ <where>
+ <if test="area != null and area != ''">
+ and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
+ </if>
+ <if test="organName != null and organName != ''">and a.OrganName>=#{organName}</if>
+ <if test="startTime != null and startTime != ''">and a.OrganGetTime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.OrganGetTime <= #{endTime}</if>
+ </where>
+ GROUP BY a.OrganName
+ </select>
+
+ <select id="caseSex" parameterType="com.ruoyi.project.domain.ServiceTotals"
+ resultType="ServiceTotalsSex">
+ SELECT COUNT(sex) totalCount, COUNT(IF(sex=1, true, NULL)) manCount ,COUNT(IF(sex=2, true, NULL)) womanCount
+ FROM service_donatebaseinfo where del_flag=0
+ <where>
+ <if test="area != null and area != ''">
+ and RegisterCountyName>=#{area}
+ </if>
+ <if test="boodType != null and boodType != ''">
+ and BloodType>=#{boodType}
+ </if>
+ <if test="sex != null and sex != ''">
+ and sex>=#{sex}
+ </if>
+ <if test="ageGroup != null and ageGroup != ''">
+ and ${ageGroup}
+ </if>
+ <if test="startTime != null and startTime != ''">and a.donatetime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.donatetime <= #{endTime}</if>
+ </where>
+ GROUP BY sex
+ </select>
+
+ <select id="caseAvgAge" parameterType="com.ruoyi.project.domain.ServiceTotals"
+ resultType="ServiceTotals">
+ SELECT AVG(age) avgAge FROM service_donatebaseinfo where del_flag=0
+ <where>
+ <if test="area != null and area != ''">
+ and RegisterCountyName>=#{area}
+ </if>
+ <if test="boodType != null and boodType != ''">
+ and BloodType>=#{boodType}
+ </if>
+ <if test="sex != null and sex != ''">
+ and sex>=#{sex}
+ </if>
+ <if test="ageGroup != null and ageGroup != ''">
+ and ${ageGroup}
+ </if>
+ <if test="startTime != null and startTime != ''">and a.donatetime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.donatetime <= #{endTime}</if>
+ </where>
+ </select>
+
+ <select id="caseBloodType" parameterType="com.ruoyi.project.domain.ServiceTotals"
+ resultType="ServiceTotalsBood">
+ SELECT COUNT(BloodType) boodTypeCount,BloodType bloodType
+ FROM service_donatebaseinfo where del_flag=0
+ <where>
+ <if test="area != null and area != ''">
+ and RegisterCountyName>=#{area}
+ </if>
+ <if test="boodType != null and boodType != ''">
+ and BloodType>=#{boodType}
+ </if>
+ <if test="sex != null and sex != ''">
+ and sex>=#{sex}
+ </if>
+ <if test="ageGroup != null and ageGroup != ''">
+ and ${ageGroup}
+ </if>
+ <if test="startTime != null and startTime != ''">and a.donatetime>=#{startTime}</if>
+ <if test="endTime != null and endTime != ''">and a.donatetime <= #{endTime}</if>
+ </where>
+ 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 <= #{endTime}</if>
+ </where>
+
+ </select>
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3