diff --git a/src/main/java/com/order/erp/job/FinanceJob.java b/src/main/java/com/order/erp/job/FinanceJob.java
index af4135f..261562f 100644
--- a/src/main/java/com/order/erp/job/FinanceJob.java
+++ b/src/main/java/com/order/erp/job/FinanceJob.java
@@ -6,6 +6,7 @@ import com.order.erp.common.constant.Constant;
 import com.order.erp.common.utils.EmailSendUtils;
 import com.order.erp.common.utils.RedisUtils;
 import com.order.erp.domain.ApplyStatusEnum;
+import com.order.erp.domain.FinanceEnum;
 import com.order.erp.domain.FinanceOverEnum;
 import com.order.erp.domain.dto.BaseDO;
 import com.order.erp.domain.dto.admin.AdminUserDO;
@@ -65,6 +66,7 @@ public class FinanceJob {
         List<AdminUserRoleDO> list = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>()
                 .eq(AdminUserRoleDO::getRoleId, Constant.SEVEN));
         Set<Long> userIds= list.stream().map(AdminUserRoleDO::getUserId).collect(Collectors.toSet());
+        //获取所有财务角色的邮箱。
         List<String> financeEmailList = userIds.stream()
                 .map(userId -> Optional.ofNullable(adminUserDOMap.get(userId))
                         .map(AdminUserDO::getEmail)
@@ -98,7 +100,7 @@ public class FinanceJob {
                        FinanceEventJobVO eventJobVO = new FinanceEventJobVO();
                        eventJobVO.setInvoiceBillOrderDO(invoiceBillOrderDO);
                        emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(emailList), eventJobVO);
-                       boolean set = redisService.set(redisKey, invoiceBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为21天后过期
+                       boolean set = redisService.set(redisKey, invoiceBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为105天后过期
                        if(set){
                            redisService.saddWithExpiry(Constant.REDISKEY,redisKey, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);
                        }
@@ -148,56 +150,79 @@ public class FinanceJob {
         if (stringListMap != null) {
             // 获取 InvoiceBillOrderDO 类型的 ID 列表
             List<Long> invoiceBillOrderIds = stringListMap.get("InvoiceBillOrderDO");
+            List<InvoiceBillOrderDO> filteredInvoiceList = new ArrayList<>();
+            Set<String> seenInvoices=new HashSet<>();
+            List<ProducePaymentCheckBillOrderDO> filteredCheckList = new ArrayList<>();
+            Set<String> seenChecks=new HashSet<>();
             if (invoiceBillOrderIds != null && !invoiceBillOrderIds.isEmpty()) {
                 List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderService.listByIds(invoiceBillOrderIds);
-                invoiceBillOrderDOS.forEach(x->{
-                    if(ApplyStatusEnum.NO_COMMIT.getStatus()==x.getStatus() || ApplyStatusEnum.AUDIT_REFUSE.getStatus()==x.getStatus()){
-                        twoEmail.clear();
-                        twoEmail.addAll(financeEmailList);
-                    Set<String> userSet = new HashSet<>();
-                    userSet.add(x.getCreateBy());
-                    userSet.add(x.getBusinesPerson());
-                    List<String> emails = userSet.stream()
-                            .map(userName::get)
-                            .filter(Objects::nonNull)  // 确保 AdminUserDO 不为 null
-                            .map(AdminUserDO::getEmail) // 获取邮箱
-                            .filter(Strings::isNotEmpty) // 确保邮箱不为空
-                            .collect(Collectors.toList());
-
-                    if (CollectionUtils.isNotEmpty(emails)) {
-                       twoEmail.addAll(emails);
-                    }
-                    FinanceEventJobVO eventJobVO = new FinanceEventJobVO();
-                    eventJobVO.setInvoiceBillOrderDO(x);
-                    emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(twoEmail), eventJobVO);
+                if (CollectionUtils.isNotEmpty(invoiceBillOrderDOS)) {
+                    for(InvoiceBillOrderDO order : invoiceBillOrderDOS){
+                        if (order != null && order.getInvoiceNo() != null && seenInvoices.add(order.getInvoiceNo())) {
+                            // 确保 order 和 order.getInvoice() 非空后再处理
+                            filteredInvoiceList.add(order);
+                        }
                     }
-                });
+                }
+                if(CollectionUtils.isNotEmpty(filteredInvoiceList)) {
+                    filteredInvoiceList.forEach(x -> {
+                        if (FinanceEnum.UNPAID_PAYMENTS.getStatus() == x.getStatus()) {
+                            twoEmail.clear();
+                            twoEmail.addAll(financeEmailList);
+                            Set<String> userSet = new HashSet<>();
+                            userSet.add(x.getCreateBy());
+                            userSet.add(x.getBusinesPerson());
+                            List<String> emails = userSet.stream()
+                                    .map(userName::get)
+                                    .filter(Objects::nonNull)  // 确保 AdminUserDO 不为 null
+                                    .map(AdminUserDO::getEmail) // 获取邮箱
+                                    .filter(Strings::isNotEmpty) // 确保邮箱不为空
+                                    .collect(Collectors.toList());
+
+                            if (CollectionUtils.isNotEmpty(emails)) {
+                                twoEmail.addAll(emails);
+                            }
+                            FinanceEventJobVO eventJobVO = new FinanceEventJobVO();
+                            eventJobVO.setInvoiceBillOrderDO(x);
+                            emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(twoEmail), eventJobVO);
+                        }
+                    });
+                }
             }
             // 获取 ProducePaymentCheckBillOrderDO 类型的 ID 列表
             List<Long> producePaymentCheckBillIds = stringListMap.get("ProducePaymentCheckBillOrderDO");
             if (producePaymentCheckBillIds != null && !producePaymentCheckBillIds.isEmpty()) {
                 List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderService.listByIds(producePaymentCheckBillIds);
-                producePaymentCheckBillOrderDOS.forEach(x->{
-                    if(ApplyStatusEnum.NO_COMMIT.getStatus()==x.getStatus() || ApplyStatusEnum.AUDIT_REFUSE.getStatus()==x.getStatus()){
-                        twoEmail.clear();
-                        twoEmail.addAll(financeEmailList);
-                    Set<String> userSet = new HashSet<>();
-                    userSet.add(x.getCreateBy());
-                    userSet.add(x.getBusinesPerson());
-                    List<String> emails = userSet.stream()
-                            .map(userName::get)
-                            .filter(Objects::nonNull)  // 确保 AdminUserDO 不为 null
-                            .map(AdminUserDO::getEmail) // 获取邮箱
-                            .filter(Strings::isNotEmpty) // 确保邮箱不为空
-                            .collect(Collectors.toList());
-                    if (CollectionUtils.isNotEmpty(emails)) {
-                        twoEmail.addAll(emails);
-                    }
-                    FinanceEventJobVO eventJobVO = new FinanceEventJobVO();
-                    eventJobVO.setProducePaymentCheckBillOrderDO(x);
-                    emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(twoEmail), eventJobVO);
+                if (CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOS)) {
+                    for (ProducePaymentCheckBillOrderDO order : producePaymentCheckBillOrderDOS) {
+                        if (order != null && order.getCheckNo() != null && seenChecks.add(order.getCheckNo())) {
+                            filteredCheckList.add(order);
+                        }
                     }
-                });
+                }
+                if (CollectionUtils.isNotEmpty(filteredCheckList)) {
+                    filteredCheckList.forEach(x -> {
+                        if (FinanceEnum.UNPAID_PAYMENTS.getStatus() == x.getStatus()) {
+                            twoEmail.clear();
+                            twoEmail.addAll(financeEmailList);
+                            Set<String> userSet = new HashSet<>();
+                            userSet.add(x.getCreateBy());
+                            userSet.add(x.getBusinesPerson());
+                            List<String> emails = userSet.stream()
+                                    .map(userName::get)
+                                    .filter(Objects::nonNull)  // 确保 AdminUserDO 不为 null
+                                    .map(AdminUserDO::getEmail) // 获取邮箱
+                                    .filter(Strings::isNotEmpty) // 确保邮箱不为空
+                                    .collect(Collectors.toList());
+                            if (CollectionUtils.isNotEmpty(emails)) {
+                                twoEmail.addAll(emails);
+                            }
+                            FinanceEventJobVO eventJobVO = new FinanceEventJobVO();
+                            eventJobVO.setProducePaymentCheckBillOrderDO(x);
+                            emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(twoEmail), eventJobVO);
+                        }
+                    });
+                }
             }
         }
     }
diff --git a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
index ed2e988..ee52f9d 100644
--- a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
+++ b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
@@ -459,14 +459,14 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp
 
 //只针对于应付款的过滤信息。  前端要设置搜索框的变量为checkNo。
         if (StringUtils.isNotBlank(queryVO.getCheckNo())) {
-            // 获取并修整 checkNo字符串
+            //获取 checkNo 字符串
             String checkNos = queryVO.getCheckNo().trim();
-            // 检查处理后的字符串是否仍然有效
+            // 检查字符串是否有效
             if (!checkNos.isEmpty()) {
-                // 使用参数化查询避免 SQL 拼接问题
+                // 使用括号分组确保逻辑优先级正确
                 queryWrapper.apply(
-                          "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.checkNo')) = {0}"+
-                                  "OR JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillOrderDO.checkNo')) = {0}",
+                        "((JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.checkNo')) = {0}) " +
+                                "OR (JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillOrderDO.checkNo')) = {0}))",
                         checkNos
                 );
             }
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 1a67833..cfacfbf 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -59,7 +59,7 @@ spring:
     testOnReturn: true
     password: eJ8(bD6]wN6=gI5=
     time-between-eviction-runs-millis: 1000
-    url: jdbc:mysql://47.104.8.35:3307/order-erp?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true
+    url: jdbc:mysql://47.104.8.35:3307/order-erp-test-real?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false&autoReconnect=true&failOverReadOnly=false&maxReconnects=10&allowMultiQueries=true&useAffectedRows=true&autoReconnectForPools=true
     username: root
   redis:
     database: 0