| | |
| | | * @return true = 至少存在一条 |
| | | */ |
| | | boolean existsSubtaskWithStates(Long patid, java.util.List<Long> sendstates, String serviceType); |
| | | |
| | | /** |
| | | * 判断某患者「同一次出入院记录 + 同一个任务」是否<b>已经生成过</b>子任务。 |
| | | * |
| | | * <h3>为什么需要它(2026-10 线上问题)</h3> |
| | | * 出院随访扫描是按 {@code pat_med_inhosp.deptcheck_flag = '0'} 取患者的。 |
| | | * 一旦标志位因为规则配置/异常没被改成 1 或 2,下一轮扫描会把同一个患者再处理一遍, |
| | | * 而 {@code writeInSubTask} 的"停旧"分支在 {@code endTime1 == endTime}(同一次出院)时 |
| | | * 走的是 else —— <b>会再 insert 一条 sendstate=4 的停用行</b>, |
| | | * 于是同一个患者每次跑批都多一条,最终同一患者几十条子任务。 |
| | | * <p> |
| | | * 这个方法是那道"最后防线":落库前按 |
| | | * {@code patid + inhospid + taskid}(且 {@code del_flag = 0})判重, |
| | | * 已存在就不再加。口径是"同一次出院 + 同一个任务只应有一条子任务", |
| | | * <b>不跨住院记录</b>(再次入院换了 inhospid 仍会新建,这是原有语义)。 |
| | | * |
| | | * @param patid 患者档案ID |
| | | * @param inhospid 出入院记录ID;为 {@code null} 时退化为只看 {@code patid + taskid} |
| | | * @param taskid 任务ID |
| | | * @return true = 已存在(不应再 insert) |
| | | */ |
| | | boolean existsSubtask(Long patid, Long inhospid, Long taskid); |
| | | } |