Browse Source

处理店铺端证书为保存问题,优化证书过期提醒

yjwang 1 week ago
parent
commit
2c22276351

+ 1 - 1
fs-admin/src/main/java/com/fs/web/controller/system/SysUserController.java

@@ -293,7 +293,7 @@ public class SysUserController extends BaseController
     @Log(title = "总后台:商家证件即将过期或已过期提醒", businessType = BusinessType.OTHER)
     @GetMapping("/storeRecommendNotice")
     public R storeRecommendNotice(){
-        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+//        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         //判断是否有权限
 //        if(userService.checkUserAuthority(loginUser.getUserId())){
 //            //有权限则进入判断是否协议过期

+ 25 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreScrm.java

@@ -431,4 +431,29 @@ public class FsStoreScrm extends BaseEntity {
      * **/
     private List<FsDoctorVO> doctorList;
 
+    /**
+     * 药品经营许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isDrugLicensePermanent;
+
+    /**
+     * 2类医疗器械备案是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalDevice2ExpiryPermanent;
+
+    /**
+     * 3类器械经营许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalDevice3ExpiryPermanent;
+
+    /**
+     * 食品经营许可证有效期(1长期有效、0非长期有效)
+     **/
+    private Byte isFoodLicenseExpiryPermanent;
+
+    /**
+     * 医疗机构执业许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalLicenseExpiryPermanent;
+
 }

+ 82 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreScrmInfoParam.java

@@ -1,9 +1,11 @@
 package com.fs.hisStore.param;
 
 import com.fs.common.core.domain.BaseEntity;
+import com.fs.his.vo.FsDoctorVO;
 import lombok.Data;
 
 import java.time.LocalDate;
+import java.util.List;
 
 /**
  * 店铺管理对象 fs_store
@@ -179,4 +181,84 @@ public class FsStoreScrmInfoParam extends BaseEntity
 
     /** 医疗机构执业许可证有效期结束 */
     private LocalDate medicalLicenseExpiryEnd;
+    /**
+     * 营业执照上传编码
+     */
+    private String businessCode;
+
+    /**
+     * 药品经营许可证编码
+     */
+    private String drugCode;
+
+    /**
+     * 一类器械生产备案文件编码
+     */
+    private String medicalDevice1Code;
+
+    /**
+     * 二类器械生产备案文件编码
+     */
+    private String medicalDevice2Code;
+
+    /**
+     * 三类器械生产备案文件编码
+     */
+    private String medicalDevice3Code;
+
+    /**
+     * 食品经营许可证上传编码
+     */
+    private String foodCode;
+
+    /**
+     * 医疗机构执业许可证上传编码
+     */
+    private String medicalCode;
+
+    /**
+     * 其它特殊资质编码
+     */
+    private String otherSpecialQualificationCode;
+
+    /**
+     * 质量保证协议编码
+     */
+    private String qualityAssuranceAgreementCode;
+
+    /**
+     * 其它资质入驻协议编码
+     */
+    private String settlementAgreementCode;
+
+    /**
+     * 绑定的药剂师
+     * **/
+    private List<FsDoctorVO> doctorList;
+
+    /**
+     * 药品经营许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isDrugLicensePermanent;
+
+    /**
+     * 2类医疗器械备案是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalDevice2ExpiryPermanent;
+
+    /**
+     * 3类器械经营许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalDevice3ExpiryPermanent;
+
+    /**
+     * 食品经营许可证有效期(1长期有效、0非长期有效)
+     **/
+    private Byte isFoodLicenseExpiryPermanent;
+
+    /**
+     * 医疗机构执业许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalLicenseExpiryPermanent;
+
 }

+ 0 - 10
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreScrmServiceImpl.java

@@ -226,16 +226,6 @@ public class FsStoreScrmServiceImpl implements IFsStoreScrmService {
             log.error("获取diff出错", e);
         }
 
-        //验证资质日期是否正常
-        LocalDate today = LocalDate.now(ZoneId.of("Asia/Shanghai"));
-        if (Objects.equals(String.valueOf(fsStore.getIsBusinessLicensePermanent()), "0")) {
-            if (fsStore.getBusinessLicenseExpireEnd().isBefore(today) || fsStore.getDrugLicenseExpiryEnd().isBefore(today)
-                    || fsStore.getMedicalDevice2ExpiryEnd().isBefore(today) || fsStore.getMedicalLicenseExpiryEnd().isBefore(today) || fsStore.getStatus() == 0) {
-                fsStore.setStatus(0);
-            } else {
-                fsStore.setStatus(1);
-            }
-        }
         return fsStoreMapper.updateFsStore(fsStore);
     }
 

+ 82 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreDetailsScrmVo.java

@@ -1,10 +1,12 @@
 package com.fs.hisStore.vo;
 
 import com.fs.common.core.domain.BaseEntity;
+import com.fs.his.vo.FsDoctorVO;
 import lombok.Data;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.util.List;
 
 /**
  * 店铺管理对象 fs_store
@@ -190,4 +192,84 @@ public class FsStoreDetailsScrmVo extends BaseEntity
      * 商家id
      */
     private String  merchantId;
+
+    /**
+     * 营业执照上传编码
+     */
+    private String businessCode;
+
+    /**
+     * 药品经营许可证编码
+     */
+    private String drugCode;
+
+    /**
+     * 一类器械生产备案文件编码
+     */
+    private String medicalDevice1Code;
+
+    /**
+     * 二类器械生产备案文件编码
+     */
+    private String medicalDevice2Code;
+
+    /**
+     * 三类器械生产备案文件编码
+     */
+    private String medicalDevice3Code;
+
+    /**
+     * 食品经营许可证上传编码
+     */
+    private String foodCode;
+
+    /**
+     * 医疗机构执业许可证上传编码
+     */
+    private String medicalCode;
+
+    /**
+     * 其它特殊资质编码
+     */
+    private String otherSpecialQualificationCode;
+
+    /**
+     * 质量保证协议编码
+     */
+    private String qualityAssuranceAgreementCode;
+
+    /**
+     * 其它资质入驻协议编码
+     */
+    private String settlementAgreementCode;
+
+    /**
+     * 绑定的药剂师
+     * **/
+    private List<FsDoctorVO> doctorList;
+
+    /**
+     * 药品经营许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isDrugLicensePermanent;
+
+    /**
+     * 2类医疗器械备案是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalDevice2ExpiryPermanent;
+
+    /**
+     * 3类器械经营许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalDevice3ExpiryPermanent;
+
+    /**
+     * 食品经营许可证有效期(1长期有效、0非长期有效)
+     **/
+    private Byte isFoodLicenseExpiryPermanent;
+
+    /**
+     * 医疗机构执业许可证是否长期有效(1长期有效、0非长期有效)
+     **/
+    private Byte isMedicalLicenseExpiryPermanent;
 }

+ 348 - 62
fs-service/src/main/resources/mapper/hisStore/FsStoreScrmMapper.xml

@@ -48,10 +48,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="medicalDevice1"	column="medical_device1" />
         <result property="medicalDevice1ExpiryStart"	column="medical_device1_expiry_start" />
         <result property="medicalDevice1ExpiryEnd"	column="medical_device1_expiry_end" />
-        <result property="medicalDevice2"	column="medicalDevice2" />
+        <result property="medicalDevice2"	column="medical_device2" />
         <result property="medicalDevice2ExpiryStart"	column="medical_device2_expiry_start" />
         <result property="medicalDevice2ExpiryEnd"	column="medical_device2_expiry_end" />
-        <result property="medicalDevice3"	column="medicalDevice3" />
+        <result property="medicalDevice3"	column="medical_device3" />
         <result property="medicalDevice3ExpiryStart"	column="medical_device3_expiry_start" />
         <result property="medicalDevice3ExpiryEnd"	column="medical_device3_expiry_end" />
         <result property="foodLicense"	column="food_license" />
@@ -71,6 +71,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="otherSpecialQualificationStart"	column="other_special_qualification_start" />
         <result property="otherSpecialQualificationEnd"	column="other_special_qualification_end" />
         <result property="isBusinessLicensePermanent"	column="is_business_license_permanent" />
+        <result property="isMedicalDevice1ExpiryPermanent" column="is_medical_device1_expiry_permanent" />
+        <result property="isDrugLicensePermanent" column="is_drug_license_permanent" />
+        <result property="isMedicalDevice2ExpiryPermanent" column="is_medical_device2_expiry_permanent" />
+        <result property="isMedicalDevice3ExpiryPermanent" column="is_medical_device3_expiry_permanent" />
+        <result property="isFoodLicenseExpiryPermanent" column="is_food_license_expiry_permanent" />
+        <result property="isMedicalLicenseExpiryPermanent" column="is_medical_license_expiry_permanent" />
 
     </resultMap>
 
@@ -81,13 +87,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                enterprise_address,legal_person_name,unified_social_credit_code,
                business_scope,selectable_product_types,business_license,business_license_expire_start,business_license_expire_end,drug_license,
                drug_license_expiry_start,drug_license_expiry_end,medical_device1,medical_device1_expiry_start,medical_device1_expiry_end,
-               medicalDevice2,medical_device2_expiry_start,medical_device2_expiry_end,medicalDevice3,medical_device3_expiry_start,
+               medical_device2,medical_device2_expiry_start,medical_device2_expiry_end,medical_device3,medical_device3_expiry_start,
                medical_device3_expiry_end,food_license,food_license_expiry_start,food_license_expiry_end,medical_license,
                medical_license_expiry_start,medical_license_expiry_end,settlement_agreement,settlement_agreement_start,settlement_agreement_end,
                quality_assurance_agreement,quality_assurance_agreement_start,quality_assurance_agreement_end,other_special_qualification,
                other_special_qualification_start,other_special_qualification_end,is_business_license_permanent,store_seq,merchant_id,business_code,
                drug_code,medical_device1_code,medical_device2_code,medical_device3_code,food_code,medical_code,other_special_qualification_code,
-               quality_assurance_agreement_code,settlement_agreement_code
+               quality_assurance_agreement_code,settlement_agreement_code,is_medical_device1_expiry_permanent,
+               is_drug_license_permanent,is_medical_device2_expiry_permanent,is_medical_device3_expiry_permanent,is_food_license_expiry_permanent,is_medical_license_expiry_permanent
         from fs_store_scrm
     </sql>
 
@@ -157,10 +164,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="medicalDevice1 !=null">medical_device1 , </if>
             <if test="medicalDevice1ExpiryStart !=null ">medical_device1_expiry_start , </if>
             <if test="medicalDevice1ExpiryEnd !=null ">medical_device1_expiry_end , </if>
-            <if test="medicalDevice2 !=null">medicalDevice2 , </if>
+            <if test="medicalDevice2 !=null">medical_device2 , </if>
             <if test="medicalDevice2ExpiryStart !=null ">medical_device2_expiry_start , </if>
             <if test="medicalDevice2ExpiryEnd !=null ">medical_device2_expiry_end , </if>
-            <if test="medicalDevice3 !=null">medicalDevice3 , </if>
+            <if test="medicalDevice3 !=null">medical_device3 , </if>
             <if test="medicalDevice3ExpiryStart !=null ">medical_device3_expiry_start , </if>
             <if test="medicalDevice3ExpiryEnd !=null ">medical_device3_expiry_end , </if>
             <if test="foodLicense !=null">food_license , </if>
@@ -191,7 +198,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="otherSpecialQualificationCode !=null ">other_special_qualification_code , </if>
             <if test="qualityAssuranceAgreementCode !=null ">quality_assurance_agreement_code , </if>
             <if test="settlementAgreementCode !=null ">settlement_agreement_code , </if>
-            <if test="isMedicalDevice1ExpiryPermanent !=null ">is_medical_device1Expiry_permanent , </if>
+            <if test="isMedicalDevice1ExpiryPermanent !=null ">is_medical_device1_expiry_permanent , </if>
+            <if test="isDrugLicensePermanent !=null ">is_drug_license_permanent , </if>
+            <if test="isMedicalDevice2ExpiryPermanent !=null ">is_medical_device2_expiry_permanent , </if>
+            <if test="isMedicalDevice3ExpiryPermanent !=null ">is_medical_device3_expiry_permanent , </if>
+            <if test="isFoodLicenseExpiryPermanent !=null ">is_food_license_expiry_permanent , </if>
+            <if test="isMedicalLicenseExpiryPermanent !=null ">is_medical_license_expiry_permanent , </if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="cityIds != null">#{cityIds},</if>
@@ -239,7 +251,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="medicalDevice2 !=null">#{medicalDevice2}, </if>
             <if test="medicalDevice2ExpiryStart !=null ">#{medicalDevice2ExpiryStart}, </if>
             <if test="medicalDevice2ExpiryEnd !=null ">#{medicalDevice2ExpiryEnd}, </if>
-            <if test="medicalDevice3 !=null">#{medicalDevice3}, </if>
+            <if test="medicalDevice3 !=null">#{medical_device3}, </if>
             <if test="medicalDevice3ExpiryStart !=null ">#{medicalDevice3ExpiryStart}, </if>
             <if test="medicalDevice3ExpiryEnd !=null ">#{medicalDevice3ExpiryEnd}, </if>
             <if test="foodLicense !=null">#{foodLicense}, </if>
@@ -271,6 +283,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="qualityAssuranceAgreementCode !=null ">#{qualityAssuranceAgreementCode} , </if>
             <if test="settlementAgreementCode !=null ">#{settlementAgreementCode} , </if>
             <if test="isMedicalDevice1ExpiryPermanent !=null ">#{isMedicalDevice1ExpiryPermanent} , </if>
+            <if test="isDrugLicensePermanent !=null ">#{isDrugLicensePermanent} , </if>
+            <if test="isMedicalDevice2ExpiryPermanent !=null ">#{isMedicalDevice2ExpiryPermanent} , </if>
+            <if test="isMedicalDevice3ExpiryPermanent !=null ">#{isMedicalDevice3ExpiryPermanent} , </if>
+            <if test="isFoodLicenseExpiryPermanent !=null ">#{isFoodLicenseExpiryPermanent} , </if>
+            <if test="isMedicalLicenseExpiryPermanent !=null ">#{isMedicalLicenseExpiryPermanent} , </if>
         </trim>
     </insert>
 
@@ -319,10 +336,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="medicalDevice1 !=null and medicalDevice1 !=''"> medical_device1 = #{medicalDevice1} ,</if>
             <if test="medicalDevice1ExpiryStart !=null "> medical_device1_expiry_start = #{medicalDevice1ExpiryStart} ,</if>
             <if test="medicalDevice1ExpiryEnd !=null "> medical_device1_expiry_end = #{medicalDevice1ExpiryEnd} ,</if>
-            <if test="medicalDevice2 !=null and medicalDevice2 !=''"> medicalDevice2 = #{medicalDevice2} ,</if>
+            <if test="medicalDevice2 !=null and medicalDevice2 !=''"> medical_device2 = #{medicalDevice2} ,</if>
             <if test="medicalDevice2ExpiryStart !=null "> medical_device2_expiry_start = #{medicalDevice2ExpiryStart} ,</if>
             <if test="medicalDevice2ExpiryEnd !=null "> medical_device2_expiry_end = #{medicalDevice2ExpiryEnd} ,</if>
-            <if test="medicalDevice3 !=null and medicalDevice3 !=''"> medicalDevice3 = #{medicalDevice3} ,</if>
+            <if test="medicalDevice3 !=null and medicalDevice3 !=''"> medical_device3 = #{medicalDevice3} ,</if>
             <if test="medicalDevice3ExpiryStart !=null "> medical_device3_expiry_start = #{medicalDevice3ExpiryStart} ,</if>
             <if test="medicalDevice3ExpiryEnd !=null "> medical_device3_expiry_end = #{medicalDevice3ExpiryEnd} ,</if>
             <if test="foodLicense !=null and foodLicense !=''"> food_license = #{foodLicense} ,</if>
@@ -351,7 +368,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="otherSpecialQualificationCode !=null ">other_special_qualification_code=#{otherSpecialQualificationCode} , </if>
             <if test="qualityAssuranceAgreementCode !=null ">quality_assurance_agreement_code=#{qualityAssuranceAgreementCode} , </if>
             <if test="settlementAgreementCode !=null ">settlement_agreement_code=#{settlementAgreementCode} , </if>
-            <if test="isMedicalDevice1ExpiryPermanent !=null ">is_medical_device1Expiry_permanent=#{isMedicalDevice1ExpiryPermanent} , </if>
+            <if test="isMedicalDevice1ExpiryPermanent !=null ">is_medical_device1_expiry_permanent=#{isMedicalDevice1ExpiryPermanent} , </if>
+            <if test="isDrugLicensePermanent !=null ">is_drug_license_permanent = #{isDrugLicensePermanent}, </if>
+            <if test="isMedicalDevice2ExpiryPermanent !=null ">is_medical_device2_expiry_permanent = #{isMedicalDevice2ExpiryPermanent} , </if>
+            <if test="isMedicalDevice3ExpiryPermanent !=null ">is_medical_device3_expiry_permanent = #{isMedicalDevice3ExpiryPermanent} , </if>
+            <if test="isFoodLicenseExpiryPermanent !=null ">is_food_license_expiry_permanent = #{isFoodLicenseExpiryPermanent} , </if>
+            <if test="isMedicalLicenseExpiryPermanent !=null ">is_medical_license_expiry_permanent = #{isMedicalLicenseExpiryPermanent} , </if>
         </trim>
         where store_id = #{storeId}
     </update>
@@ -515,36 +537,168 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
     <select id="queryValidStoreQualifications" resultType="java.lang.String">
         SELECT
-        CONCAT(
-        store_name,
-        '的',
-        CASE WHEN business_license IS NOT NULL AND business_license_expire_end IS NOT NULL AND business_license_expire_end &lt; CURDATE() THEN '营业执照已过期,需要商家更新;' ELSE '' END,
-        CASE WHEN business_license IS NOT NULL AND business_license_expire_end IS NOT NULL AND business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '营业执照15天内过期;' ELSE '' END,
-        CASE WHEN drug_license IS NOT NULL AND drug_license_expiry_end IS NOT NULL AND drug_license_expiry_end &lt; CURDATE() THEN '药品经营许可证已过期,需要商家更新' ELSE '' END,
-        CASE WHEN drug_license IS NOT NULL AND drug_license_expiry_end IS NOT NULL AND drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '药品经营许可证15天内过期;' ELSE '' END,
-        CASE WHEN medical_device1 IS NOT NULL AND medical_device1_expiry_end IS NOT NULL AND medical_device1_expiry_end &lt; CURDATE() THEN '一类器械生产备案已过期,需要商家更新;' ELSE '' END,
-        CASE WHEN medical_device1 IS NOT NULL AND medical_device1_expiry_end IS NOT NULL AND medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '一类器械生产备案15天内过期;' ELSE '' END,
-        CASE WHEN medicalDevice2 IS NOT NULL AND medical_device2_expiry_end IS NOT NULL AND medical_device2_expiry_end &lt; CURDATE() THEN '二类医疗器械备案已过期,需要商家更新;' ELSE '' END,
-        CASE WHEN medicalDevice2 IS NOT NULL AND medical_device2_expiry_end IS NOT NULL AND medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '二类医疗器械备案15天内过期;' ELSE '' END,
-        CASE WHEN medicalDevice3 IS NOT NULL AND medical_device3_expiry_end IS NOT NULL AND medical_device3_expiry_end &lt; CURDATE() THEN '三类器械经营许可证已过期,需要商家更新;' ELSE '' END,
-        CASE WHEN medicalDevice3 IS NOT NULL AND medical_device3_expiry_end IS NOT NULL AND medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '三类器械经营许可证15天内过期;' ELSE '' END,
-        CASE WHEN food_license IS NOT NULL AND food_license_expiry_end IS NOT NULL AND food_license_expiry_end &lt; CURDATE() THEN '食品经营许可证已过期,需要商家更新;' ELSE '' END,
-        CASE WHEN food_license IS NOT NULL AND food_license_expiry_end IS NOT NULL AND food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '食品经营许可证15天内过期;' ELSE '' END,
-        CASE WHEN medical_license IS NOT NULL AND medical_license_expiry_end IS NOT NULL AND medical_license_expiry_end &lt; CURDATE() THEN '医疗机构执业许可证已过期,需要商家更新;' ELSE '' END,
-        CASE WHEN medical_license IS NOT NULL AND medical_license_expiry_end IS NOT NULL AND medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '医疗机构执业许可证15天内过期;' ELSE '' END
-        ) AS warning_message
-
+            CONCAT(
+                    store_name,
+                    '的',
+                -- 营业执照
+                    CASE
+                        WHEN business_license IS NOT NULL
+                            AND business_license_expire_end IS NOT NULL
+                            AND business_license_expire_end &lt; CURDATE()
+                            AND is_business_license_permanent != 1
+            THEN '营业执照已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN business_license IS NOT NULL
+                            AND business_license_expire_end IS NOT NULL
+                            AND business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_business_license_permanent != 1
+            THEN '营业执照15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 药品经营许可证
+                    CASE
+                        WHEN drug_license IS NOT NULL
+                            AND drug_license_expiry_end IS NOT NULL
+                            AND drug_license_expiry_end &lt; CURDATE()
+                            AND is_drug_license_permanent != 1
+            THEN '药品经营许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN drug_license IS NOT NULL
+                            AND drug_license_expiry_end IS NOT NULL
+                            AND drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_drug_license_permanent != 1
+            THEN '药品经营许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 一类器械生产备案
+                    CASE
+                        WHEN medical_device1 IS NOT NULL
+                            AND medical_device1_expiry_end IS NOT NULL
+                            AND medical_device1_expiry_end &lt; CURDATE()
+                            AND is_medical_device1_expiry_permanent != 1
+            THEN '一类器械生产备案已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medical_device1 IS NOT NULL
+                            AND medical_device1_expiry_end IS NOT NULL
+                            AND medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_device1_expiry_permanent != 1
+            THEN '一类器械生产备案15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 二类医疗器械备案
+                    CASE
+                        WHEN medical_device2 IS NOT NULL
+                            AND medical_device2_expiry_end IS NOT NULL
+                            AND medical_device2_expiry_end &lt; CURDATE()
+                            AND is_medical_device2_expiry_permanent != 1
+            THEN '二类医疗器械备案已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medical_device2 IS NOT NULL
+                            AND medical_device2_expiry_end IS NOT NULL
+                            AND medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_device2_expiry_permanent != 1
+            THEN '二类医疗器械备案15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 三类器械经营许可证
+                    CASE
+                        WHEN medical_device3 IS NOT NULL
+                            AND medical_device3_expiry_end IS NOT NULL
+                            AND medical_device3_expiry_end &lt; CURDATE()
+                            AND is_medical_device3_expiry_permanent != 1
+            THEN '三类器械经营许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medical_device3 IS NOT NULL
+                            AND medical_device3_expiry_end IS NOT NULL
+                            AND medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_device3_expiry_permanent != 1
+            THEN '三类器械经营许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 食品经营许可证
+                    CASE
+                        WHEN food_license IS NOT NULL
+                            AND food_license_expiry_end IS NOT NULL
+                            AND food_license_expiry_end &lt; CURDATE()
+                            AND is_food_license_expiry_permanent != 1
+            THEN '食品经营许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN food_license IS NOT NULL
+                            AND food_license_expiry_end IS NOT NULL
+                            AND food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_food_license_expiry_permanent != 1
+            THEN '食品经营许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 医疗机构执业许可证
+                    CASE
+                        WHEN medical_license IS NOT NULL
+                            AND medical_license_expiry_end IS NOT NULL
+                            AND medical_license_expiry_end &lt; CURDATE()
+                            AND is_medical_license_expiry_permanent != 1
+            THEN '医疗机构执业许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medical_license IS NOT NULL
+                            AND medical_license_expiry_end IS NOT NULL
+                            AND medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_license_expiry_permanent != 1
+            THEN '医疗机构执业许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END
+                ) AS warning_message
         FROM fs_store_scrm
         WHERE STATUS = 1
-        AND (
-        (business_license IS NOT NULL AND business_license_expire_end IS NOT NULL AND (business_license_expire_end &lt; CURDATE() OR business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        OR (drug_license IS NOT NULL AND drug_license_expiry_end IS NOT NULL AND (drug_license_expiry_end &lt; CURDATE() OR drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        OR (medical_device1 IS NOT NULL AND medical_device1_expiry_end IS NOT NULL AND (medical_device1_expiry_end &lt; CURDATE() OR medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        OR (medicalDevice2 IS NOT NULL AND medical_device2_expiry_end IS NOT NULL AND (medical_device2_expiry_end &lt; CURDATE() OR medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        OR (medicalDevice3 IS NOT NULL AND medical_device3_expiry_end IS NOT NULL AND (medical_device3_expiry_end &lt; CURDATE() OR medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        OR (food_license IS NOT NULL AND food_license_expiry_end IS NOT NULL AND (food_license_expiry_end &lt; CURDATE() OR food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        OR (medical_license IS NOT NULL AND medical_license_expiry_end IS NOT NULL AND (medical_license_expiry_end &lt; CURDATE() OR medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-        )
+          AND (
+            -- 营业执照:已过期 或 15天内过期 + 非永久
+                (business_license IS NOT NULL
+                    AND business_license_expire_end IS NOT NULL
+                    AND (business_license_expire_end &lt; CURDATE() OR business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                    AND is_business_license_permanent != 1)
+                -- 药品经营许可证
+                OR (drug_license IS NOT NULL
+                AND drug_license_expiry_end IS NOT NULL
+                AND (drug_license_expiry_end &lt; CURDATE() OR drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_drug_license_permanent != 1)
+                -- 一类器械生产备案
+                OR (medical_device1 IS NOT NULL
+                AND medical_device1_expiry_end IS NOT NULL
+                AND (medical_device1_expiry_end &lt; CURDATE() OR medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_device1_expiry_permanent != 1)
+                -- 二类医疗器械备案
+                OR (medical_device2 IS NOT NULL
+                AND medical_device2_expiry_end IS NOT NULL
+                AND (medical_device2_expiry_end &lt; CURDATE() OR medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_device2_expiry_permanent != 1)
+                -- 三类器械经营许可证
+                OR (medical_device3 IS NOT NULL
+                AND medical_device3_expiry_end IS NOT NULL
+                AND (medical_device3_expiry_end &lt; CURDATE() OR medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_device3_expiry_permanent != 1)
+                -- 食品经营许可证
+                OR (food_license IS NOT NULL
+                AND food_license_expiry_end IS NOT NULL
+                AND (food_license_expiry_end &lt; CURDATE() OR food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_food_license_expiry_permanent != 1)
+                -- 医疗机构执业许可证
+                OR (medical_license IS NOT NULL
+                AND medical_license_expiry_end IS NOT NULL
+                AND (medical_license_expiry_end &lt; CURDATE() OR medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_license_expiry_permanent != 1)
+            )
         HAVING warning_message != '';
     </select>
     <select id="queryValidStoreLastInfo" resultType="java.lang.String">
@@ -552,33 +706,165 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             CONCAT(
                     store_name,
                     '的',
-                    CASE WHEN business_license IS NOT NULL AND business_license_expire_end IS NOT NULL AND business_license_expire_end &lt; CURDATE() THEN '营业执照已过期,需要商家更新;' ELSE '' END,
-                    CASE WHEN business_license IS NOT NULL AND business_license_expire_end IS NOT NULL AND business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '营业执照15天内过期;' ELSE '' END,
-                    CASE WHEN drug_license IS NOT NULL AND drug_license_expiry_end IS NOT NULL AND drug_license_expiry_end &lt; CURDATE() THEN '药品经营许可证已过期,需要商家更新' ELSE '' END,
-                    CASE WHEN drug_license IS NOT NULL AND drug_license_expiry_end IS NOT NULL AND drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '药品经营许可证15天内过期;' ELSE '' END,
-                    CASE WHEN medical_device1 IS NOT NULL AND medical_device1_expiry_end IS NOT NULL AND medical_device1_expiry_end &lt; CURDATE() THEN '一类器械生产备案已过期,需要商家更新;' ELSE '' END,
-                    CASE WHEN medical_device1 IS NOT NULL AND medical_device1_expiry_end IS NOT NULL AND medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '一类器械生产备案15天内过期;' ELSE '' END,
-                    CASE WHEN medicalDevice2 IS NOT NULL AND medical_device2_expiry_end IS NOT NULL AND medical_device2_expiry_end &lt; CURDATE() THEN '二类医疗器械备案已过期,需要商家更新;' ELSE '' END,
-                    CASE WHEN medicalDevice2 IS NOT NULL AND medical_device2_expiry_end IS NOT NULL AND medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '二类医疗器械备案15天内过期;' ELSE '' END,
-                    CASE WHEN medicalDevice3 IS NOT NULL AND medical_device3_expiry_end IS NOT NULL AND medical_device3_expiry_end &lt; CURDATE() THEN '三类器械经营许可证已过期,需要商家更新;' ELSE '' END,
-                    CASE WHEN medicalDevice3 IS NOT NULL AND medical_device3_expiry_end IS NOT NULL AND medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '三类器械经营许可证15天内过期;' ELSE '' END,
-                    CASE WHEN food_license IS NOT NULL AND food_license_expiry_end IS NOT NULL AND food_license_expiry_end &lt; CURDATE() THEN '食品经营许可证已过期,需要商家更新;' ELSE '' END,
-                    CASE WHEN food_license IS NOT NULL AND food_license_expiry_end IS NOT NULL AND food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '食品经营许可证15天内过期;' ELSE '' END,
-                    CASE WHEN medical_license IS NOT NULL AND medical_license_expiry_end IS NOT NULL AND medical_license_expiry_end &lt; CURDATE() THEN '医疗机构执业许可证已过期,需要商家更新;' ELSE '' END,
-                    CASE WHEN medical_license IS NOT NULL AND medical_license_expiry_end IS NOT NULL AND medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY) THEN '医疗机构执业许可证15天内过期;' ELSE '' END
+                -- 营业执照(补充永久标识判断)
+                    CASE
+                        WHEN business_license IS NOT NULL
+                            AND business_license_expire_end IS NOT NULL
+                            AND business_license_expire_end &lt; CURDATE()
+                            AND is_business_license_permanent != 1
+            THEN '营业执照已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN business_license IS NOT NULL
+                            AND business_license_expire_end IS NOT NULL
+                            AND business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_business_license_permanent != 1
+            THEN '营业执照15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 药品经营许可证(补充永久标识判断)
+                    CASE
+                        WHEN drug_license IS NOT NULL
+                            AND drug_license_expiry_end IS NOT NULL
+                            AND drug_license_expiry_end &lt; CURDATE()
+                            AND is_drug_license_permanent != 1
+            THEN '药品经营许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN drug_license IS NOT NULL
+                            AND drug_license_expiry_end IS NOT NULL
+                            AND drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_drug_license_permanent != 1
+            THEN '药品经营许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 一类器械生产备案(补充永久标识判断)
+                    CASE
+                        WHEN medical_device1 IS NOT NULL
+                            AND medical_device1_expiry_end IS NOT NULL
+                            AND medical_device1_expiry_end &lt; CURDATE()
+                            AND is_medical_device1_expiry_permanent != 1
+            THEN '一类器械生产备案已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medical_device1 IS NOT NULL
+                            AND medical_device1_expiry_end IS NOT NULL
+                            AND medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_device1_expiry_permanent != 1
+            THEN '一类器械生产备案15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 二类医疗器械备案(补充永久标识判断,保留原字段名 medicalDevice2)
+                    CASE
+                        WHEN medicalDevice2 IS NOT NULL
+                            AND medical_device2_expiry_end IS NOT NULL
+                            AND medical_device2_expiry_end &lt; CURDATE()
+                            AND is_medical_device2_expiry_permanent != 1
+            THEN '二类医疗器械备案已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medicalDevice2 IS NOT NULL
+                            AND medical_device2_expiry_end IS NOT NULL
+                            AND medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_device2_expiry_permanent != 1
+            THEN '二类医疗器械备案15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 三类器械经营许可证(补充永久标识判断,保留原字段名 medicalDevice3)
+                    CASE
+                        WHEN medicalDevice3 IS NOT NULL
+                            AND medical_device3_expiry_end IS NOT NULL
+                            AND medical_device3_expiry_end &lt; CURDATE()
+                            AND is_medical_device3_expiry_permanent != 1
+            THEN '三类器械经营许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medicalDevice3 IS NOT NULL
+                            AND medical_device3_expiry_end IS NOT NULL
+                            AND medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_device3_expiry_permanent != 1
+            THEN '三类器械经营许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 食品经营许可证(补充永久标识判断)
+                    CASE
+                        WHEN food_license IS NOT NULL
+                            AND food_license_expiry_end IS NOT NULL
+                            AND food_license_expiry_end &lt; CURDATE()
+                            AND is_food_license_expiry_permanent != 1
+            THEN '食品经营许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN food_license IS NOT NULL
+                            AND food_license_expiry_end IS NOT NULL
+                            AND food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_food_license_expiry_permanent != 1
+            THEN '食品经营许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END,
+                -- 医疗机构执业许可证(补充永久标识判断)
+                    CASE
+                        WHEN medical_license IS NOT NULL
+                            AND medical_license_expiry_end IS NOT NULL
+                            AND medical_license_expiry_end &lt; CURDATE()
+                            AND is_medical_license_expiry_permanent != 1
+            THEN '医疗机构执业许可证已过期,需要商家更新;'
+                        ELSE ''
+                        END,
+                    CASE
+                        WHEN medical_license IS NOT NULL
+                            AND medical_license_expiry_end IS NOT NULL
+                            AND medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)
+                            AND is_medical_license_expiry_permanent != 1
+            THEN '医疗机构执业许可证15天内过期,请注意更新;'
+                        ELSE ''
+                        END
                 ) AS warning_message
-
         FROM fs_store_scrm
         WHERE STATUS = 1
-          and store_id = #{storeId}
+          AND store_id = #{storeId}
           AND (
-                (business_license IS NOT NULL AND business_license_expire_end IS NOT NULL AND (business_license_expire_end &lt; CURDATE() OR business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-                OR (drug_license IS NOT NULL AND drug_license_expiry_end IS NOT NULL AND (drug_license_expiry_end &lt; CURDATE() OR drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-                OR (medical_device1 IS NOT NULL AND medical_device1_expiry_end IS NOT NULL AND (medical_device1_expiry_end &lt; CURDATE() OR medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-                OR (medicalDevice2 IS NOT NULL AND medical_device2_expiry_end IS NOT NULL AND (medical_device2_expiry_end &lt; CURDATE() OR medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-                OR (medicalDevice3 IS NOT NULL AND medical_device3_expiry_end IS NOT NULL AND (medical_device3_expiry_end &lt; CURDATE() OR medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-                OR (food_license IS NOT NULL AND food_license_expiry_end IS NOT NULL AND (food_license_expiry_end &lt; CURDATE() OR food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
-                OR (medical_license IS NOT NULL AND medical_license_expiry_end IS NOT NULL AND (medical_license_expiry_end &lt; CURDATE() OR medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY)))
+            -- 营业执照:已过期 或 15天内过期 + 非永久
+                (business_license IS NOT NULL
+                    AND business_license_expire_end IS NOT NULL
+                    AND (business_license_expire_end &lt; CURDATE() OR business_license_expire_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                    AND is_business_license_permanent != 1)
+                -- 药品经营许可证
+                OR (drug_license IS NOT NULL
+                AND drug_license_expiry_end IS NOT NULL
+                AND (drug_license_expiry_end &lt; CURDATE() OR drug_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_drug_license_permanent != 1)
+                -- 一类器械生产备案
+                OR (medical_device1 IS NOT NULL
+                AND medical_device1_expiry_end IS NOT NULL
+                AND (medical_device1_expiry_end &lt; CURDATE() OR medical_device1_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_device1_expiry_permanent != 1)
+                -- 二类医疗器械备案(保留原字段名 medicalDevice2)
+                OR (medicalDevice2 IS NOT NULL
+                AND medical_device2_expiry_end IS NOT NULL
+                AND (medical_device2_expiry_end &lt; CURDATE() OR medical_device2_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_device2_expiry_permanent != 1)
+                -- 三类器械经营许可证(保留原字段名 medicalDevice3)
+                OR (medicalDevice3 IS NOT NULL
+                AND medical_device3_expiry_end IS NOT NULL
+                AND (medical_device3_expiry_end &lt; CURDATE() OR medical_device3_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_device3_expiry_permanent != 1)
+                -- 食品经营许可证
+                OR (food_license IS NOT NULL
+                AND food_license_expiry_end IS NOT NULL
+                AND (food_license_expiry_end &lt; CURDATE() OR food_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_food_license_expiry_permanent != 1)
+                -- 医疗机构执业许可证
+                OR (medical_license IS NOT NULL
+                AND medical_license_expiry_end IS NOT NULL
+                AND (medical_license_expiry_end &lt; CURDATE() OR medical_license_expiry_end BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 15 DAY))
+                AND is_medical_license_expiry_permanent != 1)
             )
         HAVING warning_message != '';
     </select>