修复商品导入bug:防止初始库存和当前库存出现重复的商品和仓库id

This commit is contained in:
季圣华
2023-05-23 00:48:41 +08:00
parent 6d6161afbc
commit 305ff78630

View File

@@ -729,6 +729,9 @@ public class MaterialService {
List<Long> deleteCurrentStockMaterialIdList = new ArrayList<>(); List<Long> deleteCurrentStockMaterialIdList = new ArrayList<>();
List<MaterialInitialStock> insertInitialStockMaterialList = new ArrayList<>(); List<MaterialInitialStock> insertInitialStockMaterialList = new ArrayList<>();
List<MaterialCurrentStock> insertCurrentStockMaterialList = new ArrayList<>(); List<MaterialCurrentStock> insertCurrentStockMaterialList = new ArrayList<>();
//防止初始库存和当前库存出现重复
Map<String, String> materialDepotInitialMap = new HashMap<>();
Map<String, String> materialDepotCurrentMap = new HashMap<>();
for(MaterialWithInitStock m: mList) { for(MaterialWithInitStock m: mList) {
Long mId = 0L; Long mId = 0L;
//判断该商品是否存在,如果不存在就新增,如果存在就更新 //判断该商品是否存在,如果不存在就新增,如果存在就更新
@@ -752,26 +755,33 @@ public class MaterialService {
Map<Long, BigDecimal> stockMap = m.getStockMap(); Map<Long, BigDecimal> stockMap = m.getStockMap();
for(Depot depot: depotList){ for(Depot depot: depotList){
Long depotId = depot.getId(); Long depotId = depot.getId();
String materialDepotKey = mId + "_" + depotId;
BigDecimal stock = stockMap.get(depot.getId()); BigDecimal stock = stockMap.get(depot.getId());
//新增初始库存 //新增初始库存
if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) { if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) {
MaterialInitialStock materialInitialStock = new MaterialInitialStock(); if(materialDepotInitialMap.get(materialDepotKey)==null) {
materialInitialStock.setMaterialId(mId); MaterialInitialStock materialInitialStock = new MaterialInitialStock();
materialInitialStock.setDepotId(depotId); materialInitialStock.setMaterialId(mId);
materialInitialStock.setNumber(stock); materialInitialStock.setDepotId(depotId);
insertInitialStockMaterialList.add(materialInitialStock); materialInitialStock.setNumber(stock);
deleteInitialStockMaterialIdList.add(mId); insertInitialStockMaterialList.add(materialInitialStock);
deleteInitialStockMaterialIdList.add(mId);
materialDepotInitialMap.put(materialDepotKey, materialDepotKey);
}
} }
//新增或更新当前库存 //新增或更新当前库存
Long billCount = depotItemService.getCountByMaterialAndDepot(mId, depotId); Long billCount = depotItemService.getCountByMaterialAndDepot(mId, depotId);
if(billCount == 0) { if(billCount == 0) {
if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) { if(stock!=null && stock.compareTo(BigDecimal.ZERO)!=0) {
MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock(); if(materialDepotCurrentMap.get(materialDepotKey)==null) {
materialCurrentStock.setMaterialId(mId); MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock();
materialCurrentStock.setDepotId(depotId); materialCurrentStock.setMaterialId(mId);
materialCurrentStock.setCurrentNumber(stock); materialCurrentStock.setDepotId(depotId);
insertCurrentStockMaterialList.add(materialCurrentStock); materialCurrentStock.setCurrentNumber(stock);
deleteCurrentStockMaterialIdList.add(mId); insertCurrentStockMaterialList.add(materialCurrentStock);
deleteCurrentStockMaterialIdList.add(mId);
materialDepotCurrentMap.put(materialDepotKey, materialDepotKey);
}
} }
} else { } else {
BigDecimal initStock = getInitStock(mId, depotId); BigDecimal initStock = getInitStock(mId, depotId);
@@ -780,12 +790,15 @@ public class MaterialService {
if(currentNumber!=null && initStock!=null && stock!=null) { if(currentNumber!=null && initStock!=null && stock!=null) {
currentNumber = currentNumber.subtract(initStock).add(stock); currentNumber = currentNumber.subtract(initStock).add(stock);
} }
MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock(); if(materialDepotCurrentMap.get(materialDepotKey)==null) {
materialCurrentStock.setMaterialId(mId); MaterialCurrentStock materialCurrentStock = new MaterialCurrentStock();
materialCurrentStock.setDepotId(depotId); materialCurrentStock.setMaterialId(mId);
materialCurrentStock.setCurrentNumber(currentNumber); materialCurrentStock.setDepotId(depotId);
insertCurrentStockMaterialList.add(materialCurrentStock); materialCurrentStock.setCurrentNumber(currentNumber);
deleteCurrentStockMaterialIdList.add(mId); insertCurrentStockMaterialList.add(materialCurrentStock);
deleteCurrentStockMaterialIdList.add(mId);
materialDepotCurrentMap.put(materialDepotKey, materialDepotKey);
}
} }
} }
} }