From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsMapper/LimsJianceTaskRemindMapper.java |   95 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 95 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsMapper/LimsJianceTaskRemindMapper.java b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsMapper/LimsJianceTaskRemindMapper.java
new file mode 100644
index 0000000..c8020c0
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-biz/src/main/java/jnpf/limsMapper/LimsJianceTaskRemindMapper.java
@@ -0,0 +1,95 @@
+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銆�
+ *
+ * <p>4 涓� @Select 鍚勮嚜璐熻矗涓�涓垎鏀紙D7/D3/D1/EXPIRED锛夛紝鍛戒腑鏉′欢鐩镐簰浜掓枼锛�
+ * 涓嶅湪鍚屼竴娆¤窇鎵归噷閲嶅鍛戒腑銆傚悇鍒嗘敮鍏卞悓鍓嶇疆杩囨护锛�
+ * <ul>
+ *   <li>鏈蒋鍒狅紱wancheng_riqi 闈炵┖锛沯iancha_ren 闈炵┖</li>
+ *   <li>jianyan_zhuangtai 鈭� {pending_test, audit_rejected} 鈥斺�� 杩樻湭瀹屾垚缁撴灉褰曞叆</li>
+ *   <li>瀵瑰簲鏍囪灏氭湭杩藉姞鍒� remind_flags</li>
+ * </ul>
+ *
+ * <p>鏈粦 mybatis-plus 鐨� SuperMapper 閫氱敤澧炲垹鏀� 鈥斺�� 鐢� @Select 鑷畾涔� SQL
+ * 缁曞紑澶氱鎴锋嫤鎴櫒瀵瑰垪瑁佸壀鐨勫壇浣滅敤锛堣 LimsQingyandanReportServiceImpl 娉ㄩ噴锛夈��
+ */
+@Mapper
+public interface LimsJianceTaskRemindMapper extends SuperMapper<LimsJianyanXiangEntity> {
+
+    /**
+     * D-N锛歸ancheng_riqi 璺濅粖澶╄繕鏈� N 澶╋紙date 宸�硷級涓� remind_flags 涓嶅惈瀵瑰簲鏍囪銆�
+     *
+     * <p>鍒楀埆鍚嶏細鑷畾涔� @Select 涓嶈蛋 MyBatis-Plus 鐨� @TableField 鏄犲皠锛�
+     * 蹇呴』鐢� AS 鎶� db 鍒楀悕鏀规垚 Java 瀛楁鍚嶏紙鐗瑰埆鏄� f_id 鈫� id锛夈��
+     * 涓嶅彂鎻愰啋鐨勫垪锛坆iz_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<LimsJianyanXiangEntity> selectDueIn(@Param("days") int days,
+                                             @Param("flag") String flag);
+
+    /** EXPIRED锛歸ancheng_riqi < today 涓斿皻鏈彂杩囪繃鏈熷憡璀︺�� */
+    @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 < CURRENT_DATE " +
+            "   AND (remind_flags IS NULL OR NOT ('EXPIRED' = 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.OVERDUE:', lims_jianyan_xiang.f_id, ':', " +
+            "             TO_CHAR(lims_jianyan_xiang.wancheng_riqi, 'YYYYMMDD'), ':OVERDUE'))")
+    List<LimsJianyanXiangEntity> selectExpired();
+
+    /**
+     * 杩藉姞鏍囪鍒� remind_flags锛圕SV 鎷兼帴锛孋ONCAT_WS 鑷姩澶勭悊 null锛夈��
+     * 浠呭浠嶅浜�"杩樻湭瀹屾垚"鐘舵�佺殑琛岃拷鍔狅紝閬垮厤鏍囪宸插畬鎴愰」銆�
+     */
+    @Update("UPDATE lims_jianyan_xiang " +
+            "   SET remind_flags = CASE " +
+            "         WHEN remind_flags IS NULL OR remind_flags = '' THEN #{flag} " +
+            "         WHEN #{flag} = ANY(string_to_array(remind_flags, ',')) THEN remind_flags " +
+            "         ELSE CONCAT(remind_flags, ',', #{flag}) " +
+            "       END " +
+            " WHERE f_id = #{id} " +
+            "   AND (f_delete_mark IS NULL OR f_delete_mark <> 1)")
+    int appendFlag(@Param("id") String id, @Param("flag") String flag);
+}

--
Gitblit v1.8.0