liusheng
13 小时以前 ab2884ade73fed97d1e7d7daf4b9b5b6dee83fdd
ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
@@ -3278,6 +3278,46 @@
        </if>
    </select>
    <!--
        当前登录人「待处理」随访任务,按出院年月(endtime)分组统计,出院随访 / 门诊随访分开计数。
        口径(与随访列表「待随访」页签一致):
          1) 出院随访 service_type = '2',门诊随访 service_type = '3'
          2) 待随访(未完成)→ sendstate IN (1,2,3,5,7),排除 4 不执行 / 6 完成
          3) 出院满 7 天 → endtime < (今天 - 7 天) + 1 天,
             即「7 天前那一天」出院的也计入(用 <= DATE_SUB(...) 只会截到当天 0 点,会漏掉 9 条)
          4) 只看最近 4 个出院月份(含当月)→ endtime >= 当月往前推 3 个月的 1 号
          5) 科室/病区权限用 OR(与列表 deptOrDistrict=2 一致):
             只有病区权限的用户,任务 leaveldeptcode 与本人科室对不上时也能量到,
             否则会把整月数据过滤成 0。
        说明:GROUP BY 只产出有数据的月份,前端按「当月 + 前 3 个月」补齐,没数据就显示 0 个。
              不再限制 current_preachform(人工):该字段只是执行方式,
              待随访任务里还有短信等方式,限定 '1' 会漏数。
    -->
    <select id="countPendingManualTaskByMonth"
            parameterType="com.ruoyi.task.domain.entity.ServiceSubtaskEntity"
            resultType="java.util.Map">
        SELECT DATE_FORMAT(endtime, '%Y-%m') AS month,
        SUM(CASE WHEN service_type = '2' THEN 1 ELSE 0 END) AS dischargeCnt,
        SUM(CASE WHEN service_type = '3' THEN 1 ELSE 0 END) AS outpatientCnt
        FROM service_subtask
        WHERE del_flag = '0'
        AND service_type IN ('2', '3')
        AND sendstate IN (1, 2, 3, 5, 7)
        AND endtime IS NOT NULL
        AND endtime &lt; DATE_ADD(DATE_SUB(CURDATE(), INTERVAL 7 DAY), INTERVAL 1 DAY)
        AND endtime &gt;= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 3 MONTH), '%Y-%m-01')
        <if test="orgid != null and orgid != ''">
            AND orgid = #{orgid}
        </if>
        <if test="campusid != null and campusid != ''">
            AND campusid = #{campusid}
        </if>
        <!-- 离院科室/病区:有科室按科室、有病区按病区,两者都有时取 OR -->
        <include refid="filterLeaveDimOr"/>
        GROUP BY DATE_FORMAT(endtime, '%Y-%m')
        ORDER BY month
    </select>
    <select id="getCurrentUserServiceSubtaskCount" parameterType="com.ruoyi.task.domain.entity.ServiceSubtaskEntity"
            resultType="map">
        SELECT