From d39e4f7d839167c16425086dfa2f8747bccfdff9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 17:39:01 +0800
Subject: [PATCH] feat: 打通销售采购财务闭环并完成累计业务优化

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/invoice/CrmInvoiceMapper.java |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/invoice/CrmInvoiceMapper.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/invoice/CrmInvoiceMapper.java
index 303678d..b6d1038 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/invoice/CrmInvoiceMapper.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/invoice/CrmInvoiceMapper.java
@@ -34,6 +34,27 @@
         return selectOne(CrmInvoiceDO::getNo, no);
     }
 
+    /**
+     * 娓呯┖鍙戠エ褰曞叆浜恒�佸綍鍏ユ椂闂达紙updateById 榛樿蹇界暐 null 瀛楁锛屾竻绌洪渶鏄惧紡 update锛�
+     */
+    default void clearEntryInfo(Long id) {
+        update(null, new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<CrmInvoiceDO>()
+                .eq(CrmInvoiceDO::getId, id)
+                .set(CrmInvoiceDO::getEntryStatus, 0)
+                .set(CrmInvoiceDO::getEntryUserId, null)
+                .set(CrmInvoiceDO::getEntryTime, null));
+    }
+
+    /**
+     * 鎸夊彂绁ㄥ彿鐮佹煡璇㈡湭琚垹闄ょ殑寮�绁紙鍙戠エ鍙风爜鍏佽鍚屼竴寮犲彂绁ㄥ娆″紑绁ㄦ椂锛岃繑鍥炵涓�鏉★級
+     */
+    default CrmInvoiceDO selectByInvoiceNo(String invoiceNo) {
+        return selectOne(new LambdaQueryWrapperX<CrmInvoiceDO>()
+                .eq(CrmInvoiceDO::getInvoiceNo, invoiceNo)
+                .orderByAsc(CrmInvoiceDO::getId)
+                .last("LIMIT 1"));
+    }
+
     default PageResult<CrmInvoiceDO> selectPageByCustomerId(CrmInvoicePageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<CrmInvoiceDO>()
                 .eq(CrmInvoiceDO::getCustomerId, reqVO.getCustomerId()) // 蹇呴』浼犻��
@@ -94,6 +115,24 @@
     }
 
     /**
+     * 鏌ヨ鎸囧畾閿�鍞鍗曚笅銆佹寚瀹氬鎵圭姸鎬佺殑寮�绁�
+     */
+    default List<CrmInvoiceDO> selectListBySaleOrderIdAndStatus(Long saleOrderId, Collection<Integer> auditStatuses) {
+        return selectList(new LambdaQueryWrapperX<CrmInvoiceDO>()
+                .eq(CrmInvoiceDO::getSaleOrderId, saleOrderId)
+                .in(CrmInvoiceDO::getAuditStatus, auditStatuses));
+    }
+
+    /**
+     * 鏌ヨ鎸囧畾閿�鍞嚭搴撳崟涓嬨�佹寚瀹氬鎵圭姸鎬佺殑寮�绁�
+     */
+    default List<CrmInvoiceDO> selectListBySaleOutIdAndStatus(Long saleOutId, Collection<Integer> auditStatuses) {
+        return selectList(new LambdaQueryWrapperX<CrmInvoiceDO>()
+                .eq(CrmInvoiceDO::getSaleOutId, saleOutId)
+                .in(CrmInvoiceDO::getAuditStatus, auditStatuses));
+    }
+
+    /**
      * 鏌ヨ鍚堝悓涓嬬殑鍏ㄩ儴寮�绁紙瀵煎叆鍘婚噸鐢級
      */
     default List<CrmInvoiceDO> selectListByContractId(Long contractId) {

--
Gitblit v1.9.3