package jnpf.limsMapper; import jnpf.base.mapper.SuperMapper; import jnpf.limsEntity.LimsJianyanXiangEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; /** * 检验任务"要求完成日期"提醒 daily 扫描专用 mapper。 * *
4 个 @Select 各自负责一个分支(D7/D3/D1/EXPIRED),命中条件相互互斥, * 不在同一次跑批里重复命中。各分支共同前置过滤: *
未绑 mybatis-plus 的 SuperMapper 通用增删改 —— 用 @Select 自定义 SQL
* 绕开多租户拦截器对列裁剪的副作用(见 LimsQingyandanReportServiceImpl 注释)。
*/
@Mapper
public interface LimsJianceTaskRemindMapper extends SuperMapper 列别名:自定义 @Select 不走 MyBatis-Plus 的 @TableField 映射,
* 必须用 AS 把 db 列名改成 Java 字段名(特别是 f_id → id)。
* 不发提醒的列(biz_type、规格、批量等)省略不查。
*/
@Select("SELECT f_id AS id," +
" f_tenant_id AS tenantId," +
" jiancha_ren AS jianchaRen," +
" renwu_fenpeiren AS renwuFenpeiren," +
" chanpin_mingcheng AS chanpinMingcheng," +
" pihao AS pihao," +
" jianyan_xiangmu_mingcheng AS jianyanXiangmuMingcheng," +
" wancheng_riqi AS wanchengRiqi," +
" remind_flags AS remindFlags" +
" FROM lims_jianyan_xiang " +
" WHERE (f_delete_mark IS NULL OR f_delete_mark <> 1) " +
" AND wancheng_riqi IS NOT NULL " +
" AND jiancha_ren IS NOT NULL AND jiancha_ren <> '' " +
" AND jianyan_zhuangtai IN ('pending_test', 'audit_rejected') " +
" AND wancheng_riqi::date - CURRENT_DATE = #{days} " +
" AND (remind_flags IS NULL OR NOT (#{flag} = ANY(string_to_array(remind_flags, ',')))) " +
" AND NOT EXISTS (SELECT 1 FROM lims_message_event e " +
" WHERE e.tenant_id = COALESCE(lims_jianyan_xiang.f_tenant_id, '0') " +
" AND e.occurrence_key = CONCAT('LIMS.INSPECTION.TASK.DUE:', lims_jianyan_xiang.f_id, ':', " +
" TO_CHAR(lims_jianyan_xiang.wancheng_riqi, 'YYYYMMDD'), ':', #{flag}))")
List