修复商品导入bug:防止初始库存和当前库存出现重复的商品和仓库id
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user