From c2478aba3b4db1f7c97ddd40eb636eed42368f28 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 25 八月 2025 16:39:50 +0800 Subject: [PATCH] 库存调整单功能优化修改 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java | 75 +++++++++++++++++++++++-------------- 1 files changed, 47 insertions(+), 28 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java index baf9048..ba1f45c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java @@ -8,6 +8,7 @@ import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.CommonExceStatus; import com.vincent.rsf.server.manager.enums.OrderType; +import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.manager.mapper.ReviseLogMapper; import com.vincent.rsf.server.manager.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -19,6 +20,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @Service("reviseLogService") @@ -35,11 +37,13 @@ @Autowired private LocService locService; + @Autowired private ReviseLogItemService reviseLogItemService; /** * 搴撳瓨璋冩暣鍗曟槑缁嗘坊鍔� + * * @param revise * @param loginUserId * @return @@ -62,11 +66,29 @@ .setReviseId(locRevise.getId()) .setCreateBy(loginUserId) .setUpdateBy(loginUserId) - .setReviseCode(locRevise.getCode()) ; + .setReviseCode(locRevise.getCode()); if (!reviseLogService.save(reviseLog)) { throw new CoolException("璋冩暣鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); } + + List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>() + .eq(LocItem::getLocCode, item.getLocCode())); + if (!locItems.isEmpty()) { + locItems.forEach(ote -> { + ReviseLogItem logItem = new ReviseLogItem(); + BeanUtils.copyProperties(ote, logItem); + logItem.setReviseLogId(reviseLog.getId()); + if (!reviseLogItemService.save(logItem)) { + throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + }); + } + + Double sum = locItems.stream().mapToDouble(LocItem::getAnfme).sum(); + + locRevise.setAnfme(Math.round((sum + locRevise.getAnfme()) * 10000) / 10000.0); }); + locRevise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_UN_EXCE.val); if (!locReviseService.updateById(locRevise)) { @@ -91,45 +113,42 @@ if (!revise.getExceStatus().equals(CommonExceStatus.COMMON_EXCE_STATUS_EXCE_ING.val)) { throw new CoolException("鍗曟嵁鐘舵�佹湭鎵ц鎴栧凡瀹屾垚锛屾棤娉曟墽琛屽畬鎴愭搷浣滐紒锛�"); } - ReviseLog logs = reviseLogService.getOne(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, revise.getId())); - if (Objects.isNull(logs)) { + List<ReviseLog> logs = reviseLogService.list(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, revise.getId())); + if (logs.isEmpty()) { throw new CoolException("搴撳瓨鏃ュ織涓嶅瓨鍦紒锛�"); } - List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().eq(ReviseLogItem::getReviseLogId, logs.getId())); + Set<Long> longs = logs.stream().map(ReviseLog::getId).collect(Collectors.toSet()); + List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().in(ReviseLogItem::getReviseLogId, longs)); + if (logItems.isEmpty()) { + throw new CoolException("璋冩暣鏄庣粏涓虹┖!!"); + } Map<Long, List<ReviseLogItem>> listMap = logItems.stream().collect(Collectors.groupingBy(ReviseLogItem::getLocId)); listMap.keySet().forEach(items -> { Loc loc = locService.getById(items); if (Objects.isNull(loc)) { throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); } + List<LocItem> list = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId())); + if (!list.isEmpty()) { + throw new CoolException("搴撲綅:" + loc.getCode() + ", 璋冩暣淇℃伅涓虹┖锛侊紒"); + } + locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId())); listMap.get(items).forEach(logItem -> { - LocItem one = locItemService.getOne(new LambdaQueryWrapper<LocItem>() - .eq(LocItem::getMatnrId, logItem.getMatnrId()) - .eq(StringUtils.isNotBlank(logItem.getBatch()), LocItem::getBatch, logItem.getBatch()) - .eq(StringUtils.isNotBlank(logItem.getFieldsIndex()), LocItem::getFieldsIndex, logItem.getFieldsIndex()) - .eq(LocItem::getLocCode, logItem.getLocCode())); - if (Objects.isNull(one)) { - LocItem locDetl = new LocItem(); - BeanUtils.copyProperties(logItem, locDetl); - locDetl.setLocId(loc.getId()) - .setType(OrderType.ORDER_REVISE.type) - .setLocCode(loc.getCode()) - .setAnfme(logItem.getReviseQty()) - .setUpdateBy(loginUserId) - .setId(null) - .setCreateBy(loginUserId); - if (!locItemService.save(locDetl)) { - throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒"); - } - } else { - one.setAnfme(logItem.getReviseQty()); - if (!locItemService.updateById(one)) { - throw new CoolException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒"); - } + LocItem locDetl = new LocItem(); + BeanUtils.copyProperties(logItem, locDetl); + locDetl.setLocId(loc.getId()) + .setType(OrderType.ORDER_REVISE.type) + .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type)) + .setLocCode(loc.getCode()) + .setAnfme(logItem.getReviseQty()) + .setUpdateBy(loginUserId) + .setId(null) + .setCreateBy(loginUserId); + if (!locItemService.save(locDetl)) { + throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒"); } }); }); - revise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_TASK_DONE.val); if (!locReviseService.updateById(revise)) { throw new CoolException("璋冩暣鍗曚慨鏀瑰け璐ワ紒锛�"); -- Gitblit v1.9.1