liusheng
2026-11-03 b46b8b8fee4d10e52dd882febc07974b02e2aed9
ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
@@ -887,7 +887,7 @@
     * <p>
     * 口径:service_subtask 中
     * service_type = '2' 出院随访 / '3' 门诊随访
     * + 待随访状态(sendstate in 1,2,3,5,7)
     * + 待随访状态(sendstate in 1,2,3,7,发送失败(5) 不计入)
     * + 出院满 7 天(含「7 天前那一天」出院的患者)
     * + 只看最近 4 个出院月份(含当月);
     * 科室/病区权限取 OR(与随访列表 deptOrDistrict=2 一致)。
@@ -921,9 +921,10 @@
        List<SysUserDept> sysUserWards = sysUserDeptService.selectSysUserDeptList(wardQuery);
        boolean isAdmin = "admin".equals(sysUser.getUserName());
        // 没有科室/病区配置的账号(如部分管理员账号),列表本身是按 机构+院区 查的,
        // 这里也按同样口径统计,否则列表有数据、卡片却全是 0。
        if (!isAdmin && CollectionUtils.isEmpty(sysUserDepts) && CollectionUtils.isEmpty(sysUserWards)) {
            // 既没有科室也没有病区权限时不统计,避免越权看到全机构数据
            return result;
            log.info("[pendingTaskMonthStats] 用户 {} 未配置科室/病区,按机构+院区统计", sysUser.getUserName());
        }
        // sys_user_dept 里同一科室/病区会重复很多行,去重后再拼 IN,避免 SQL 参数过多
@@ -940,6 +941,8 @@
        ServiceSubtaskEntity entity = new ServiceSubtaskEntity();
        entity.setOrgid(sysUser.getOrgid());
        // 与列表一致:按登录会话里的院区过滤(登录页选择的院区)
        entity.setCampusid(sysUser.getCampusid());
        entity.setLeaveldeptcodes(deptCodes);
        entity.setLeavehospitaldistrictcodes(wardCodes);
@@ -1060,9 +1063,9 @@
            userId = loginUser.getUser().getUserId();
        }
        if (serviceSubtaskEntity.getSendstateView() != null) {
            //            1:待随访(1 被领取、2 待发送、3 已发送、5 发送失败、7、超时);2:已完成( 6 已完成)、3:无需随访(4 不执行)
            //            1:待随访(1 被领取、2 待发送、3 已发送、7 超时;发送失败(5) 单独统计);2:已完成( 6 已完成)、3:无需随访(4 不执行)
            if (serviceSubtaskEntity.getSendstateView() == 1)
                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
            if (serviceSubtaskEntity.getSendstateView() == 2)
                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
            if (serviceSubtaskEntity.getSendstateView() == 3)