sinake
2026-09-21 05859cb2b3f8a2faaeef18a24f5aae6c5e1b904d
ruoyi-project/src/main/resources/mapper/project/ServiceTotalsMapper.xml
@@ -5,99 +5,108 @@
<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>
            <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>
            a.del_flag=0
            <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>
            <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>
            a.del_flag=0
            <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>
            <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>
            a.del_flag=0
            <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">
        SELECT DATE_FORMAT(a.OrganGetTime, '%Y-%m') donateTime,a.OrganName organName, COUNT(*) getCount,
            resultType="ServiceTotalsOrgan">
        SELECT DATE_FORMAT(a.organ_start_time, '%Y-%m') donateTime,a.OrganName organName, COUNT(*) getCount,c.RegisterCountyName area,
        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
        LEFT JOIN  service_donatebaseinfo c ON a.InfoID=c.ID
        <where>
            a.del_flag=0
            <if test="area != null  and area != ''">
                and a.InfoID in (select id FROM service_donatecompletioninfo where RegisterCountyName>=#{area} )
            </if>
            <if test="area != null  and area != ''">and c.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 &lt;= #{endTime}</if>
            <if test="startTime != null  and startTime != ''">and a.organ_start_time>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.organ_start_time &lt;= #{endTime}</if>
        </where>
        GROUP BY DATE_FORMAT(a.OrganGetTime, '%Y-%m'),a.OrganName
        GROUP BY DATE_FORMAT(a.organ_start_time, '%Y-%m'),a.OrganName,c.RegisterCountyName
    </select>
    <select id="organMoon" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
        SELECT DATE_FORMAT(a.OrganGetTime, '%Y-%m') donateTime, COUNT(*) getCount,
            resultType="ServiceTotalsOrgan">
        SELECT DATE_FORMAT(a.organ_start_time, '%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
            <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 &lt;= #{endTime}</if>
            <if test="startTime != null  and startTime != ''">and a.organ_start_time>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.organ_start_time &lt;= #{endTime}</if>
        </where>
        GROUP BY DATE_FORMAT(a.OrganGetTime, '%Y-%m')
        GROUP BY DATE_FORMAT(a.organ_start_time, '%Y-%m')
    </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
            <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 &lt;= #{endTime}</if>
            <if test="startTime != null  and startTime != ''">and a.organ_start_time>=#{startTime}</if>
            <if test="endTime != null  and endTime != ''">and a.organ_start_time &lt;= #{endTime}</if>
        </where>
        GROUP BY a.OrganName
    </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
        <where>
            del_flag=0
            <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}
@@ -115,11 +124,12 @@
            resultType="ServiceTotals">
        SELECT AVG(age) avgAge FROM  service_donatebaseinfo
        <where>
            del_flag=0
            <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 +143,16 @@
    </select>
    <select id="caseBloodType" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotals">
            resultType="ServiceTotalsBood">
        SELECT COUNT(BloodType) boodTypeCount,BloodType bloodType
        FROM service_donatebaseinfo
        <where>
            del_flag=0
            <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 +166,78 @@
        GROUP BY  BloodType
    </select>
    <select id="totals" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotalsTotal">
        SELECT ( SELECT COUNT(*) FROM service_donatebaseinfo WHERE del_flag=0) totalPotential,
               (SELECT COUNT(*) FROM service_donatecompletioninfo WHERE del_flag=0 and complete_state=3) 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
            <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>
    <select id="trendCount" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="Long">
        SELECT count(*)
        FROM service_donatebaseinfo a
        LEFT JOIN service_deathinfo d ON d.InfoID=a.id
        <where>
            a.del_flag=0
            <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>
    <select id="organTotals" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="ServiceTotalsOrganTotals">
        SELECT ( SELECT COUNT(*) FROM service_donatecomporgan WHERE del_flag=0 AND transplantstate=1) totalTransplant,
               ( SELECT COUNT(*) FROM service_donatecomporgan WHERE del_flag=0 AND transplantstate=4) totalDiscard,
               (SELECT COUNT(*) FROM service_donationwitnessorgan WHERE del_flag=0 AND OrganState=3) totalGet,
               (SELECT COUNT(*) FROM service_donationwitnessorgan WHERE del_flag=0 AND OrganState=4) totalRecycle
    </select>
    <select id="organList" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="organList">
        SELECT a.id,a.case_no,a.NAME,a.RegisterCountyName,YEAR(a.donatetime) donateYear,b.OrganName,b.transplantstate,
        b.TransplantTime,b.Name,b.TransplantDoct,b.HospitalName,c.OrganGetTime,c.notgetreason
        FROM service_donatebaseinfo a LEFT JOIN service_donatecomporgan b ON a.ID=b.InfoID
        LEFT JOIN service_donationwitnessorgan c ON a.ID=c.InfoID
        <where>
            a.del_flag=0 AND b.del_flag=0 AND c.del_flag=0
            <if test="organName != null  and organName != ''">and b.OrganName>=#{organName}</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>
    </select>
    <select id="organCount" parameterType="com.ruoyi.project.domain.ServiceTotals"
            resultType="Long">
        SELECT count(*)
        FROM service_donatebaseinfo a LEFT JOIN service_donatecomporgan b ON a.ID=b.InfoID
        LEFT JOIN service_donationwitnessorgan c ON a.ID=c.InfoID
        <where>
            a.del_flag=0 AND b.del_flag=0 AND c.del_flag=0
            <if test="organName != null  and organName != ''">and b.OrganName>=#{organName}</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>
    </select>
</mapper>