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