From bb5bf872de5e67d7b406e3a305c9dfcbd0f218a6 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 26 六月 2025 18:03:55 +0800
Subject: [PATCH] 采购,正式库优化

---
 main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java |   51 +++++++++++++++++++++++++++++++++++----------------
 1 files changed, 35 insertions(+), 16 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
index 51c2d14..ad63a6c 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
@@ -1,7 +1,6 @@
 package com.ruoyi.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,7 +23,10 @@
 import org.springframework.util.Assert;
 
 import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -48,16 +50,29 @@
     private final SupplyMapper supplyMapper;
 
     @Override
-    public IPage<PurchaseRegistration> selectPurchaseRegistrationList(Page page, PurchaseRegistrationDto purchaseRegistrationDto) {
+    public IPage<PurchaseRegistration> selectPurchaseRegistrationList(Page<PurchaseRegistration> page, PurchaseRegistrationDto dto) {
         LambdaQueryWrapper<PurchaseRegistration> queryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.isNotBlank(purchaseRegistrationDto.getSearchAll())){
-            queryWrapper.and(wrapper -> wrapper
-                    .like(PurchaseRegistration::getCoalId, purchaseRegistrationDto.getSearchAll())
-                    .or()
-                    .like(PurchaseRegistration::getSupplierName, purchaseRegistrationDto.getSearchAll())
-            );
+
+        String keyword = dto.getSearchAll();
+        if (StringUtils.isNotBlank(keyword)) {
+            // 鏌ヨ鐓ょ鍚嶇О涓ā绯婂尮閰嶇殑coalId鍒楄〃
+            List<Long> matchedCoalIds = coalInfoMapper.selectList(
+                            new LambdaQueryWrapper<CoalInfo>().like(CoalInfo::getCoal, keyword)
+                    ).stream()
+                    .map(CoalInfo::getId)
+                    .collect(Collectors.toList());
+
+            // 缁勮鏌ヨ鏉′欢锛氱叅绉岻D鍦ㄥ尮閰嶇殑鍒楄〃涓� 鎴� 渚涘簲鍟嗗悕绉板尮閰�
+            queryWrapper.and(w -> {
+                if (!matchedCoalIds.isEmpty()) {
+                    w.in(PurchaseRegistration::getCoalId, matchedCoalIds).or();
+                }
+                w.like(PurchaseRegistration::getSupplierName, keyword);
+            });
         }
+
         queryWrapper.orderByDesc(PurchaseRegistration::getCreateTime);
+
         return purchaseRegistrationMapper.selectPage(page, queryWrapper);
     }
 
@@ -74,7 +89,6 @@
         if (coalInfo == null) {
             throw new BaseException("鐓ょ淇℃伅涓嶅瓨鍦�");
         }
-//        purchaseRegistration.setCoal(coalInfo.getCoal());
         Supply supply = supplyMapper.selectById(purchaseRegistrationDto.getSupplierId());
         if (supply == null) {
             throw new BaseException("渚涘簲鍟嗕俊鎭笉瀛樺湪");
@@ -109,22 +123,27 @@
         BeanUtils.copyProperties(purchaseRegistration, pendingInventory);
 
         // 璁剧疆寰呭叆搴撹褰曠壒鏈夌殑灞炴�э紙濡傛灉鏈夛級
+        pendingInventory.setId(null);
+        pendingInventory.setPurchaseId(purchaseRegistration.getId());
         pendingInventory.setCoalId(purchaseRegistration.getCoalId());
         pendingInventory.setInventoryQuantity(purchaseRegistration.getPurchaseQuantity());
         return pendingInventory;
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int delByIds(Long[] ids) {
-        // 妫�鏌ュ弬鏁�
         if (ids == null || ids.length == 0) {
             return 0;
         }
-        // 鏋勯�犳洿鏂版潯浠�
-        UpdateWrapper<PurchaseRegistration> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.in("id", ids)
-                .set("deleted", 1);  // 璁剧疆 deleted 涓� 1 琛ㄧず宸插垹闄�
-        // 鎵ц鎵归噺閫昏緫鍒犻櫎
-        return purchaseRegistrationMapper.update(null, updateWrapper);
+
+        // 1. 鍒犻櫎鍏宠仈鐨凱endingInventory璁板綍
+        LambdaQueryWrapper<PendingInventory> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(PendingInventory::getPurchaseId, Arrays.asList(ids));
+        pendingInventoryMapper.delete(wrapper);  // 鏀逛负delete鎿嶄綔
+
+        // 2. 鎵归噺鍒犻櫎閲囪喘娉ㄥ唽璁板綍
+        return purchaseRegistrationMapper.deleteByIds(Arrays.asList(ids));
     }
+
 }

--
Gitblit v1.9.3