From 8f4db901aa772a808c243f8a4e39522f6f09d5da Mon Sep 17 00:00:00 2001 From: yaowanxin <3588231647@qq.com> Date: 星期四, 21 八月 2025 13:10:22 +0800 Subject: [PATCH] 修改完善3 --- src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java | 156 +++++++++++++++++++-------------------------------- 1 files changed, 58 insertions(+), 98 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 index fd5594b..3d33d5c 100644 --- a/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java +++ b/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseGoodsShelvesServiceImpl.java @@ -9,9 +9,13 @@ 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; @@ -19,6 +23,7 @@ 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; @@ -32,6 +37,7 @@ */ @Service @Slf4j +@Transactional(rollbackFor = Exception.class) public class WarehouseGoodsShelvesServiceImpl extends ServiceImpl<WarehouseGoodsShelvesMapper, WarehouseGoodsShelves> implements WarehouseGoodsShelvesService { @Autowired @@ -40,33 +46,33 @@ private WarehouseGoodsShelvesRowcolMapper warehouseGoodsShelvesRowcolMapper; @Autowired private WarehouseGoodsShelvesMapper warehouseGoodsShelvesMapper; - @Override - public IPage<WarehouseGoodsShelves> listPage(Page page, WarehouseGoodsShelves warehouseGoodsShelves) { - return warehouseGoodsShelvesMapper.listPage(page,warehouseGoodsShelves); - } + @Autowired + private DocumentationService documentationService; + @Autowired + private DocumentationMapper documentationMapper; @Override public boolean add(WarehouseGoodsShelves warehouseGoodsShelves) { - int insert = warehouseGoodsShelvesMapper.insert(warehouseGoodsShelves); - if (insert <= 0) { - log.error("璐ф灦涓昏褰曟坊鍔犲け璐�"); - return false; + 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(); - Long createUser = warehouseGoodsShelves.getCreateUser(); - Long updateUser = warehouseGoodsShelves.getUpdateUser(); // 3. 鎵归噺鍒涘缓琛屽垪璁板綍 List<WarehouseGoodsShelvesRowcol> rowcolList = new ArrayList<>(); - for (long i = 1; i <= warehouseGoodsShelves.getStorey(); i++) { - for (long j = 1; j <= warehouseGoodsShelves.getArrange(); j++) { + for (long i = 1; i <= warehouseGoodsShelves.getRow(); i++) { + for (long j = 1; j <= warehouseGoodsShelves.getCol(); j++) { WarehouseGoodsShelvesRowcol rowcol = new WarehouseGoodsShelvesRowcol(); - rowcol.setStorey(i); - rowcol.setArrange(j); + rowcol.setRow(i); + rowcol.setCol(j); rowcol.setWarehouseGoodsShelvesId(shelvesId); - rowcol.setWarehouseId(warehouseId); - rowcol.setCreateUser(createUser); - rowcol.setUpdateUser(updateUser); rowcolList.add(rowcol); } } @@ -74,22 +80,12 @@ if (!rowcolList.isEmpty()) { try { // 浣跨敤鎵归噺鎻掑叆鏂规硶鏇夸唬寰幆鍗曟潯鎻掑叆 - boolean saveBatch = warehouseGoodsShelvesRowcolService.saveBatch(rowcolList); - - if (!saveBatch) { - log.warn("璐ф灦[{}]鐨勮鍒楄褰曢儴鍒嗘坊鍔犲け璐�", shelvesId); - } + warehouseGoodsShelvesRowcolService.saveBatch(rowcolList); } catch (Exception e) { - log.error("璐ф灦[{}]鐨勮鍒楄褰曟壒閲忔坊鍔犲け璐�", shelvesId, e); // 鎶涘嚭寮傚父瑙﹀彂浜嬪姟鍥炴粴 throw e; } } - - log.info("璐ф灦[{}]娣诲姞鎴愬姛锛屽眰鏁�:{}锛屾帓鏁�:{}", - shelvesId, - warehouseGoodsShelves.getStorey(), - warehouseGoodsShelves.getArrange()); return true; } /** @@ -99,54 +95,28 @@ */ @Override public boolean updateRowcolById(WarehouseGoodsShelves warehouseGoodsShelves) { - // 鎻愬彇鍏抽敭ID锛屽噺灏戦噸澶嶈皟鐢� Long shelvesId = warehouseGoodsShelves.getId(); - Long warehouseId = warehouseGoodsShelves.getWarehouseId(); - - // 鍏堟洿鏂拌揣鏋朵富淇℃伅 - boolean isShelvesUpdated = updateById(warehouseGoodsShelves); - if (!isShelvesUpdated) { - log.warn("璐ф灦[{}]涓讳俊鎭洿鏂板け璐�", shelvesId); - return false; - } // 鏋勫缓鏌ヨ鏉′欢锛氭煡璇㈣璐ф灦涓嬬殑鎵�鏈夎鍒楄褰� - WarehouseGoodsShelvesRowcol queryRowcol = new WarehouseGoodsShelvesRowcol(); - queryRowcol.setWarehouseGoodsShelvesId(shelvesId); - queryRowcol.setWarehouseId(warehouseId); - - IPage<WarehouseGoodsShelvesRowcol> rowcolPage = warehouseGoodsShelvesRowcolService.listPage(new Page<>(), queryRowcol); - List<WarehouseGoodsShelvesRowcol> oldRowcolList = rowcolPage.getRecords(); - - // 濡傛灉娌℃湁鏃х殑琛屽垪璁板綍锛岀洿鎺ユ坊鍔犳柊璁板綍 - if (oldRowcolList.isEmpty()) { - add(warehouseGoodsShelves); - return true; - } - - // 妫�鏌ヨ揣鏋朵笂鏄惁鏈夊晢鍝侊紙鏈夊晢鍝佸垯涓嶅厑璁告洿鏂帮級 - boolean hasGoodsOnShelves = oldRowcolList.stream() - .anyMatch(rowcol -> rowcol.getDocumentationId() != null); - if (hasGoodsOnShelves) { - log.error("璐ф灦[{}]涓婂瓨鍦ㄥ晢鍝侊紝涓嶅厑璁告洿鏂拌鍒椾俊鎭�", shelvesId); - return false; - } - - // 鎻愬彇鏃ц鍒楄褰曠殑ID闆嗗悎锛岀敤浜庡垹闄ゆ搷浣� - List<Long> oldRowcolIds = oldRowcolList.stream() + 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); // 鍒犻櫎鏃х殑琛屽垪璁板綍 - boolean isOldRowcolRemoved = warehouseGoodsShelvesRowcolService.removeByIds(oldRowcolIds); - if (!isOldRowcolRemoved) { - log.error("璐ф灦[{}]鐨勬棫琛屽垪璁板綍鍒犻櫎澶辫触", shelvesId); - return false; - } - + warehouseGoodsShelvesRowcolService.removeByIds(rowcolIds); // 娣诲姞鏂扮殑琛屽垪璁板綍 add(warehouseGoodsShelves); - log.info("璐ф灦[{}]鐨勮鍒椾俊鎭洿鏂版垚鍔�", shelvesId); return true; } /** @@ -158,42 +128,33 @@ public boolean deleteByIds(List<Long> ids) { // 1. 鍏堟煡璇㈡墍鏈夎鍒犻櫎鐨勮揣鏋朵俊鎭� List<WarehouseGoodsShelves> shelvesList = warehouseGoodsShelvesMapper.selectBatchIds(ids); - if (CollectionUtils.isEmpty(shelvesList)) { - log.info("鏈煡璇㈠埌闇�鍒犻櫎鐨勮揣鏋讹紝ID鍒楄〃锛歿}", ids); - return true; // 鏃犳暟鎹彲鍒狅紝瑙嗕负鎴愬姛 - } // 2. 妫�鏌ユ墍鏈夎揣鏋舵槸鍚﹀瓨鍦ㄥ晢鍝侊紙鏈夊晢鍝佸垯涓嶅厑璁稿垹闄わ級 for (WarehouseGoodsShelves shelves : shelvesList) { Long shelvesId = shelves.getId(); - Long warehouseId = shelves.getWarehouseId(); - // 鏋勫缓鏌ヨ鏉′欢锛氭煡璇㈠綋鍓嶈揣鏋剁殑鎵�鏈夎鍒楄褰� Wrapper<WarehouseGoodsShelvesRowcol> queryWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>() - .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId) - .eq(WarehouseGoodsShelvesRowcol::getWarehouseId, warehouseId); + .eq(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, shelvesId); - // 鏌ヨ琛屽垪璁板綍锛堜粎闇�鍒ゆ柇鏄惁鏈夊晢鍝侊紝鏃犻渶鍒嗛〉锛� List<WarehouseGoodsShelvesRowcol> rowcolList = warehouseGoodsShelvesRowcolService.list(queryWrapper); - - // 妫�鏌ユ槸鍚︽湁鍟嗗搧 - boolean hasGoods = rowcolList.stream() - .anyMatch(rowcol -> rowcol.getDocumentationId() != null && rowcol.getDocumentationId()!=0); - - if (hasGoods) { - log.error("璐ф灦[ID:{}]涓婂瓨鍦ㄥ晢鍝侊紝绂佹鍒犻櫎", shelvesId); - return false; // 浠讳竴璐ф灦鏈夊晢鍝佸垯缁堟鍒犻櫎 + 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. 鍏堝垹闄よ揣鏋朵富璁板綍 - boolean isShelvesDeleted = removeByIds(ids); - if (!isShelvesDeleted) { - log.error("璐ф灦涓昏褰曞垹闄ゅけ璐ワ紝ID鍒楄〃锛歿}", ids); - return false; - } + warehouseGoodsShelvesMapper.deleteBatchIds(ids); - // 4. 鎵归噺鍒犻櫎鎵�鏈夊叧鑱旂殑琛屽垪璁板綍 + // 4. 鎵归噺鍒犻櫎鎵�鏈夎鍒楄褰� List<Long> allShelvesIds = shelvesList.stream() .map(WarehouseGoodsShelves::getId) .collect(Collectors.toList()); @@ -201,17 +162,16 @@ // 鏋勫缓鎵归噺鍒犻櫎鏉′欢 Wrapper<WarehouseGoodsShelvesRowcol> deleteWrapper = new LambdaQueryWrapper<WarehouseGoodsShelvesRowcol>() .in(WarehouseGoodsShelvesRowcol::getWarehouseGoodsShelvesId, allShelvesIds); - - boolean isRowcolDeleted = warehouseGoodsShelvesRowcolService.remove(deleteWrapper); - if (!isRowcolDeleted) { - log.warn("璐ф灦鍏宠仈鐨勮鍒楄褰曞垹闄ゅけ璐ワ紝璐ф灦ID鍒楄〃锛歿}", allShelvesIds); - // 姝ゅ鍙牴鎹笟鍔¢渶姹傚喅瀹氭槸鍚﹀洖婊氳揣鏋跺垹闄ゆ搷浣� - } - - log.info("璐ф灦鎵归噺鍒犻櫎鎴愬姛锛孖D鍒楄〃锛歿}", ids); + warehouseGoodsShelvesRowcolService.remove(deleteWrapper); return true; } + + @Override + public List<WarehouseGoodsShelvesDto> findList(WarehouseGoodsShelves warehouseGoodsShelves) { + return warehouseGoodsShelvesMapper.listAll(warehouseGoodsShelves); + } + } -- Gitblit v1.9.3