From e74b573ca564027c78406354dd3797bb3e36de35 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 04 二月 2026 09:21:15 +0800
Subject: [PATCH] bug3, 调整库存报错 locId为空
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java | 50 ++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 40 insertions(+), 10 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 b182f25..6674b9f 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;
@@ -85,7 +86,7 @@
Double sum = locItems.stream().mapToDouble(LocItem::getAnfme).sum();
- locRevise.setAnfme(Math.round((sum + locRevise.getAnfme()) * 10000) / 10000.0);
+ locRevise.setAnfme(Math.round((sum + locRevise.getAnfme()) * 1000000) / 1000000.0);
});
locRevise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_UN_EXCE.val);
@@ -121,19 +122,49 @@
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("搴撲綅涓嶅瓨鍦紒锛�");
+ // 鎸夊簱浣岻D鍒嗙粍锛屽鏋渓ocId涓簄ull鍒欐寜locCode鍒嗙粍
+ Map<String, List<ReviseLogItem>> listMap = logItems.stream()
+ .filter(item -> item.getLocCode() != null && !item.getLocCode().isEmpty())
+ .collect(Collectors.groupingBy(item -> {
+ // 浼樺厛浣跨敤locId锛屽鏋滀负null鍒欎娇鐢╨ocCode浣滀负key
+ return item.getLocId() != null ? String.valueOf(item.getLocId()) : item.getLocCode();
+ }));
+
+ listMap.keySet().forEach(key -> {
+ List<ReviseLogItem> reviseItems = listMap.get(key);
+ if (Objects.isNull(reviseItems) || reviseItems.isEmpty()) {
+ throw new CoolException("璋冩暣鏄庣粏涓虹┖锛侊紒");
}
+
+ // 鑾峰彇绗竴涓槑缁嗙殑搴撲綅淇℃伅
+ ReviseLogItem firstItem = reviseItems.get(0);
+ String locCode = firstItem.getLocCode();
+ Long locId = firstItem.getLocId();
+
+ // 鏌ヨ搴撲綅锛氫紭鍏堜娇鐢╨ocId锛屽鏋滀负null鍒欎娇鐢╨ocCode
+ Loc loc = null;
+ if (locId != null) {
+ loc = locService.getById(locId);
+ }
+ if (loc == null && locCode != null && !locCode.isEmpty()) {
+ loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locCode).eq(Loc::getDeleted, 0));
+ }
+
+ if (Objects.isNull(loc)) {
+ throw new CoolException("搴撲綅涓嶅瓨鍦紒搴撲綅缂栫爜:" + locCode + ", 搴撲綅ID:" + locId);
+ }
+
+ // 鍒犻櫎鍘熷簱浣嶇殑搴撳瓨鏄庣粏锛堝鏋滃瓨鍦級
locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
- listMap.get(items).forEach(logItem -> {
+
+ Loc finalLoc = loc;
+ reviseItems.forEach(logItem -> {
LocItem locDetl = new LocItem();
BeanUtils.copyProperties(logItem, locDetl);
- locDetl.setLocId(loc.getId())
+ locDetl.setLocId(finalLoc.getId())
.setType(OrderType.ORDER_REVISE.type)
- .setLocCode(loc.getCode())
+ .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type))
+ .setLocCode(finalLoc.getCode())
.setAnfme(logItem.getReviseQty())
.setUpdateBy(loginUserId)
.setId(null)
@@ -143,7 +174,6 @@
}
});
});
-
revise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_TASK_DONE.val);
if (!locReviseService.updateById(revise)) {
throw new CoolException("璋冩暣鍗曚慨鏀瑰け璐ワ紒锛�");
--
Gitblit v1.9.1