From b33e6f53dd537abaebad066de12474580fcc33b2 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期四, 21 八月 2025 15:03:14 +0800
Subject: [PATCH] Merge branch 'pim_ywx'

---
 src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java |  179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 179 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java
new file mode 100644
index 0000000..3d33d5c
--- /dev/null
+++ b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java
@@ -0,0 +1,179 @@
+package com.ruoyi.warehouse.service.impl;
+
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.warehouse.dto.WarehouseGoodsShelvesDto;
+import com.ruoyi.warehouse.mapper.DocumentationMapper;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesMapper;
+import com.ruoyi.warehouse.mapper.WarehouseGoodsShelvesRowcolMapper;
+import com.ruoyi.warehouse.pojo.Documentation;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelvesRowcol;
+import com.ruoyi.warehouse.service.DocumentationService;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesRowcolService;
+import com.ruoyi.warehouse.service.WarehouseGoodsShelvesService;
+import lombok.extern.slf4j.Slf4j;
+import com.ruoyi.warehouse.pojo.WarehouseGoodsShelves;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @author 86151
+* @description 閽堝琛ㄣ�恮arehouse_goods_shelves(浠撳簱璐ф灦琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2025-08-13 11:49:02
+*/
+@Service
+@Slf4j
+@Transactional(rollbackFor = Exception.class)
+public class WarehouseGoodsShelvesServiceImpl extends ServiceImpl<WarehouseGoodsShelvesMapper, WarehouseGoodsShelves>
+    implements WarehouseGoodsShelvesService {
+    @Autowired
+    private WarehouseGoodsShelvesRowcolService warehouseGoodsShelvesRowcolService;
+    @Autowired
+    private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper;
+    @Autowired
+    private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper;
+    @Autowired
+    private DocumentationService documentationService;
+    @Autowired
+    private DocumentationMapper documentationMapper;
+
+    @Override
+    public boolean add(WarehouseGoodsShelves warehouseGoodsShelves) {
+        WarehouseGoodsShelves one = warehouseGoodsShelvesMapper.selectOne(new LambdaQueryWrapper<WarehouseGoodsShelves>().eq(WarehouseGoodsShelves::getId, warehouseGoodsShelves.getId()));
+        // 1. 妫�鏌ヨ揣鏋跺悕绉版槸鍚﹀凡瀛樺湪
+        if (one == null) {
+            if(warehouseGoodsShelves.getRow() == null || warehouseGoodsShelves.getRow() == 0 && warehouseGoodsShelves.getCol() == null || warehouseGoodsShelves.getCol() == 0){
+                throw new IllegalArgumentException("灞傛暟鍜屽垪鏁颁笉鑳戒负绌�");
+            }
+            int insert = warehouseGoodsShelvesMapper.insert(warehouseGoodsShelves);
+            if (insert <= 0) return false;
+        }
+
+        Long shelvesId = warehouseGoodsShelves.getId();
+        Long warehouseId = warehouseGoodsShelves.getWarehouseId();
+        // 3. 鎵归噺鍒涘缓琛屽垪璁板綍
+        List<WarehouseGoodsShelvesRowcol> rowcolList = new ArrayList<>();
+        for (long i = 1; i <= warehouseGoodsShelves.getRow(); i++) {
+            for (long j = 1; j <= warehouseGoodsShelves.getCol(); j++) {
+                WarehouseGoodsShelvesRowcol rowcol = new WarehouseGoodsShelvesRowcol();
+                rowcol.setRow(i);
+                rowcol.setCol(j);
+                rowcol.setWarehouseGoodsShelvesId(shelvesId);
+                rowcolList.add(rowcol);
+            }
+        }
+        // 4. 鎵归噺鎻掑叆琛屽垪璁板綍
+        if (!rowcolList.isEmpty()) {
+            try {
+                // 浣跨敤鎵归噺鎻掑叆鏂规硶鏇夸唬寰幆鍗曟潯鎻掑叆
+                warehouseGoodsShelvesRowcolService.saveBatch(rowcolList);
+            } catch (Exception e) {
+                // 鎶涘嚭寮傚父瑙﹀彂浜嬪姟鍥炴粴
+                throw e;
+            }
+        }
+        return true;
+    }
+    /**
+     * 鏍规嵁ID鏇存柊璐ф灦鍙婂叾琛屽垪淇℃伅
+     * @param warehouseGoodsShelves 璐ф灦淇℃伅
+     * @return 鏄惁鏇存柊鎴愬姛
+     */
+    @Override
+    public boolean updateRowcolById(WarehouseGoodsShelves warehouseGoodsShelves) {
+        Long shelvesId = warehouseGoodsShelves.getId();
+
+        // 鏋勫缓鏌ヨ鏉′欢锛氭煡璇㈣璐ф灦涓嬬殑鎵�鏈夎鍒楄褰�
+        Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
+                .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId);
+        List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper);
+        //鑾峰緱rowcolList涓墍鏈夌殑Id
+        List<Long> rowcolIds = rowcolList.stream()
+                .map(WarehouseGoodsShelvesRowcol::getId)
+                .collect(Collectors.toList());
+        // 3. 妫�鏌ユ槸鍚︽湁鍟嗗搧
+        Wrapper<Documentation> queryWrapper1 = new LambdaQueryWrapper<Documentation>()
+                .in(Documentation::getWarehouseGoodsShelvesRowcolId, rowcolIds);
+        List<Documentation> documentations = documentationMapper.selectList(queryWrapper1);
+        if (!documentations.isEmpty()) throw new RuntimeException("璐ф灦涓嬫湁鍟嗗搧锛屼笉鑳藉垹闄�");
+
+        // 鍏堟洿鏂拌揣鏋朵富淇℃伅
+        updateById(warehouseGoodsShelves);
+        // 鍒犻櫎鏃х殑琛屽垪璁板綍
+        warehouseGoodsShelvesRowcolService.removeByIds(rowcolIds);
+        // 娣诲姞鏂扮殑琛屽垪璁板綍
+        add(warehouseGoodsShelves);
+        return true;
+    }
+    /**
+     * 鎵归噺鍒犻櫎璐ф灦鍙婂叾鍏宠仈鐨勮鍒楄褰�
+     * @param ids 璐ф灦ID鍒楄〃
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    @Override
+    public boolean deleteByIds(List<Long> ids) {
+        // 1. 鍏堟煡璇㈡墍鏈夎鍒犻櫎鐨勮揣鏋朵俊鎭�
+        List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesMapper.selectBatchIds(ids);
+
+        // 2. 妫�鏌ユ墍鏈夎揣鏋舵槸鍚﹀瓨鍦ㄥ晢鍝侊紙鏈夊晢鍝佸垯涓嶅厑璁稿垹闄わ級
+        for (WarehouseGoodsShelves shelves : shelvesList) {
+            Long shelvesId = shelves.getId();
+            // 鏋勫缓鏌ヨ鏉′欢锛氭煡璇㈠綋鍓嶈揣鏋剁殑鎵�鏈夎鍒楄褰�
+            Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
+                    .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId);
+
+            List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper);
+            if (CollectionUtils.isEmpty(rowcolList)) {
+                continue; // 鏃犲叧鑱旇褰曪紝璺宠繃妫�鏌�
+            }
+            //鑾峰緱rowcolList涓墍鏈夌殑Id
+            List<Long> rowcolIds = rowcolList.stream()
+                    .map(WarehouseGoodsShelvesRowcol::getId)
+                    .collect(Collectors.toList());
+            // 3. 妫�鏌ユ槸鍚︽湁鍟嗗搧
+            Wrapper<Documentation> queryWrapper1 = new LambdaQueryWrapper<Documentation>()
+                    .in(Documentation::getWarehouseGoodsShelvesRowcolId, rowcolIds);
+            List<Documentation> documentations = documentationMapper.selectList(queryWrapper1);
+            if (!documentations.isEmpty()) throw new RuntimeException("璐ф灦涓嬫湁鍟嗗搧锛屼笉鑳藉垹闄�"); // 浠讳竴璐ф灦鏈夊晢鍝佸垯缁堟鍒犻櫎
+        }
+
+        // 3. 鍏堝垹闄よ揣鏋朵富璁板綍
+        warehouseGoodsShelvesMapper.deleteBatchIds(ids);
+
+        // 4. 鎵归噺鍒犻櫎鎵�鏈夎鍒楄褰�
+        List<Long> allShelvesIds = shelvesList.stream()
+                .map(WarehouseGoodsShelves::getId)
+                .collect(Collectors.toList());
+
+        // 鏋勫缓鎵归噺鍒犻櫎鏉′欢
+        Wrapper<WarehouseGoodsShelvesRowcol> deleteWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>()
+                .in(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, allShelvesIds);
+        warehouseGoodsShelvesRowcolService.remove(deleteWrapper);
+        return true;
+    }
+
+
+    @Override
+    public List<WarehouseGoodsShelvesDto> findList(WarehouseGoodsShelves warehouseGoodsShelves) {
+        return warehouseGoodsShelvesMapper.listAll(warehouseGoodsShelves);
+    }
+
+}
+
+
+
+

--
Gitblit v1.9.3