From 429866e3d0a2eee95916407b2e1dfa7de6f407ea Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 26 八月 2026 17:18:47 +0800
Subject: [PATCH] feat(erp): 采购来票登记过滤已开完票订单

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java |   29 ++++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java
index 01f0303..9576e9b 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseOrderMapper.java
@@ -2,6 +2,7 @@
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.order.ErpPurchaseOrderPageReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
@@ -10,12 +11,13 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
 import java.util.Objects;
 
 /**
  * ERP 閲囪喘璁㈠崟 Mapper
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Mapper
 public interface ErpPurchaseOrderMapper extends BaseMapperX<ErpPurchaseOrderDO> {
@@ -55,6 +57,11 @@
             query.eq(ErpPurchaseOrderDO::getStatus, ErpAuditStatus.APPROVE.getStatus())
                     .apply("t.return_count < t.in_count");
         }
+        // 鍙潵绁ㄧ櫥璁帮紙鍓╀綑鍙紑绁ㄩ噾棰� > 0锛夛細閲戦宸插紑瀹岀殑璁㈠崟涓嶅睍绀�
+        if (Boolean.TRUE.equals(reqVO.getRemainPriceEnable())) {
+            query.apply("t.total_price > (SELECT IFNULL(SUM(i.price), 0) FROM erp_purchase_invoice i "
+                    + "WHERE i.purchase_order_id = t.id AND i.deleted = 0)");
+        }
         if (reqVO.getProductId() != null) {
             query.leftJoin(ErpPurchaseOrderItemDO.class, ErpPurchaseOrderItemDO::getOrderId, ErpPurchaseOrderDO::getId)
                     .eq(reqVO.getProductId() != null, ErpPurchaseOrderItemDO::getProductId, reqVO.getProductId())
@@ -72,4 +79,24 @@
         return selectOne(ErpPurchaseOrderDO::getNo, no);
     }
 
+    default ErpPurchaseOrderDO selectByProcessInstanceId(String processInstanceId) {
+        return selectOne(ErpPurchaseOrderDO::getProcessInstanceId, processInstanceId);
+    }
+
+    default List<ErpPurchaseOrderDO> selectList(Long supplierId, Integer status) {
+        return selectList(new LambdaQueryWrapperX<ErpPurchaseOrderDO>()
+                .eqIfPresent(ErpPurchaseOrderDO::getSupplierId, supplierId)
+                .eqIfPresent(ErpPurchaseOrderDO::getStatus, status)
+                .orderByDesc(ErpPurchaseOrderDO::getId));
+    }
+
+    /**
+     * 鎸夋潵婧愭煡璇㈤噰璐鍗曪紙鐢ㄤ簬杩芥函鏉ユ簮宸ュ崟瀵瑰簲鐨勯噰璐鍗曪級
+     */
+    default List<ErpPurchaseOrderDO> selectListBySource(Integer sourceType, Long sourceId) {
+        return selectList(new LambdaQueryWrapperX<ErpPurchaseOrderDO>()
+                .eq(ErpPurchaseOrderDO::getSourceType, sourceType)
+                .eq(ErpPurchaseOrderDO::getSourceId, sourceId));
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3