| | |
| | | * <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 一致)。 |
| | |
| | | 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 参数过多 |
| | |
| | | |
| | | ServiceSubtaskEntity entity = new ServiceSubtaskEntity(); |
| | | entity.setOrgid(sysUser.getOrgid()); |
| | | // 与列表一致:按登录会话里的院区过滤(登录页选择的院区) |
| | | entity.setCampusid(sysUser.getCampusid()); |
| | | entity.setLeaveldeptcodes(deptCodes); |
| | | entity.setLeavehospitaldistrictcodes(wardCodes); |
| | | |
| | |
| | | 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) |