From 8097a2a4383a3785e11990170d61c59ae6b48888 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期五, 20 六月 2025 18:02:53 +0800
Subject: [PATCH] 库存明细数据处理

---
 main-business/src/main/java/com/ruoyi/business/service/impl/InputInventoryRecordServiceImpl.java |   62 ++++++++++++++++++++++++++++--
 1 files changed, 57 insertions(+), 5 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/InputInventoryRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/InputInventoryRecordServiceImpl.java
index ac0a847..1ddb4c2 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/InputInventoryRecordServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/InputInventoryRecordServiceImpl.java
@@ -1,17 +1,26 @@
 package com.ruoyi.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.business.dto.OfficialInventoryDto;
 import com.ruoyi.business.dto.PendingInventoryDto;
 import com.ruoyi.business.entity.InputInventoryRecord;
+import com.ruoyi.business.entity.InventorySummary;
 import com.ruoyi.business.mapper.InputInventoryRecordMapper;
+import com.ruoyi.business.mapper.InventorySummaryMapper;
 import com.ruoyi.business.service.InputInventoryRecordService;
 import com.ruoyi.business.service.InventorySummaryService;
+import com.ruoyi.business.utils.InventoryUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 import static com.ruoyi.business.constant.InventoryRecordConstant.OFFICIAL_INVENTORY;
 import static com.ruoyi.business.constant.InventoryRecordConstant.PENDING_INVENTORY;
@@ -27,10 +36,10 @@
 @Service
 @RequiredArgsConstructor
 public class InputInventoryRecordServiceImpl extends ServiceImpl<InputInventoryRecordMapper, InputInventoryRecord> implements InputInventoryRecordService {
-    @Autowired
-    private InputInventoryRecordMapper inputInventoryRecordMapper;
-    @Autowired
-    private InventorySummaryService inventorySummaryService;
+    private final InputInventoryRecordMapper inputInventoryRecordMapper;
+    private final InventorySummaryService inventorySummaryService;
+    private final InventorySummaryMapper inventorySummaryMapper;
+    private final InventoryUtils inventoryUtils;
 
     @Override
     public int insertInputInventoryRecord(PendingInventoryDto pendingInventoryDto, OfficialInventoryDto officialInventoryDto, BigDecimal quantity) {
@@ -53,4 +62,47 @@
         // 鏇存柊搴撳瓨
         return inventorySummaryService.updateInventory(pendingInventoryDto, officialInventoryDto);
     }
+
+    @Override
+    public int deleteInputInventoryRecord(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            throw new RuntimeException("璇蜂紶鍏ヨ鍒犻櫎鐨刬d璁板綍");
+        }
+        List<InputInventoryRecord> inputInventoryRecords = inputInventoryRecordMapper.selectBatchIds(ids);
+        // 鏍规嵁id杩涜闄嶅簭鎺掑簭
+        List<InputInventoryRecord> inputInventoryRecordList = inputInventoryRecords.stream()
+                .sorted(Comparator.comparing(InputInventoryRecord::getId).reversed())
+                .toList();
+
+        String InventoryType = inputInventoryRecords.get(0).getInventoryType();
+        List<Long> inventoryIds = inputInventoryRecords.stream().map(InputInventoryRecord::getInventoryId).toList().stream().distinct().collect(Collectors.toList());
+        List<InventorySummary> inventorySummaries = inventorySummaryMapper.selectList(new LambdaQueryWrapper<InventorySummary>()
+                .eq(InventorySummary::getInventoryType, InventoryType)
+                .in(InventorySummary::getInventoryId, inventoryIds));
+        if (CollectionUtils.isNotEmpty(inventorySummaries)) {
+            List<InventorySummary> updates = new ArrayList<>();
+            for (InventorySummary inventorySummary : inventorySummaries) {
+                for (InputInventoryRecord inputInventoryRecord : inputInventoryRecordList) {
+                    // 濡傛灉鑺傜偣涓婄殑鍏ュ簱璁板綍id澶т簬鍙樻洿鐨刬d锛岃鏄庢id鍓嶆墍鏈夊叆搴撹褰曢兘瑕侀噸鏂拌绠�
+                    if (Objects.equals(inventorySummary.getInventoryId(), inputInventoryRecord.getInventoryId()) && inventorySummary.getInputEndRecordId() > inputInventoryRecord.getId()) {
+                        inventorySummary.setInputEndRecordId(inputInventoryRecord.getId());
+                        updates.add(inventorySummary);
+                    }
+                }
+
+            }
+            // 閲嶇疆鑺傜偣鏈�缁坕d
+            inventorySummaryMapper.updateById(updates);
+        }
+
+        // 閲嶆柊璁$畻鑺傜偣搴撳瓨
+        inventorySummaryService.updateInventorySummary(ids);
+
+        // 鏇存柊搴撳瓨瀹炴椂鏁版嵁
+        inventoryUtils.updateInventoryByIds(inventoryIds, inputInventoryRecords.get(0).getInventoryType());
+
+
+        // 鍒犻櫎鍏ュ簱璁板綍
+        return inputInventoryRecordMapper.deleteByIds(ids);
+    }
 }

--
Gitblit v1.9.3