Commit b838457c sunke

修改数量时更新库存

1 个父辈 68f42aea
......@@ -2,12 +2,14 @@ package com.myproject.webapp.controller.barcode;
import com.google.common.base.Strings;
import com.myproject.bean.update.Barcode;
import com.myproject.bean.update.Storage;
import com.myproject.bean.update.StoragePos;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IBarcodeManager;
import com.myproject.manager.IComponentManager;
import com.myproject.manager.IStoragePosManager;
import com.myproject.webapp.controller.storage.BaseUpdateController;
import com.myproject.webapp.controller.webService.DataCache;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
......@@ -39,6 +41,9 @@ public class BarcodeUpdateController extends BaseUpdateController {
@Autowired
protected IStoragePosManager storagePosManager;
@Autowired
protected DataCache dataCache;
public BarcodeUpdateController() {
setSuccessView(UPDATE_VIEW);
}
......@@ -90,10 +95,19 @@ public class BarcodeUpdateController extends BaseUpdateController {
StoragePos pos = storagePosManager.getByBarcode(barcode.getBarcode());
if(pos != null){//已经在库中,更新数量备注等相关信息
Barcode barcodeInPos = pos.getBarcode();
log.info("更新仓位【"+pos.getPosName()+"】物料"+barcodeInPos.getBarcode()+"的数量【"+barcodeInPos.getAmount()+"=>"+barcode.getAmount()+"】和备注信息["+barcodeInPos.getMemo()+"]=>" +barcode.getMemo());
barcodeInPos.setAmount(barcode.getAmount());
int oldAmount = barcodeInPos.getAmount();
int newAmount = barcode.getAmount();
int diffAount = newAmount - oldAmount;
if(diffAount != 0){
//更新库存
Storage storage = dataCache.getStorageById(pos.getStorageId());
dataCache.updateInventoryAmount(storage.getCid(), barcodeInPos.getPartNumber(), diffAount);
}
log.info("更新仓位【"+pos.getPosName()+"】物料"+barcodeInPos.getBarcode()+"的数量【"+oldAmount+"=>"+newAmount+"】和备注信息["+barcodeInPos.getMemo()+"]=>" +barcode.getMemo());
barcodeInPos.setAmount(oldAmount);
barcodeInPos.setMemo(barcode.getMemo());
storagePosManager.save(pos);
}
}
saveMessage(request, getText("barcode.saveSuccess", request.getLocale()));
......
......@@ -676,6 +676,27 @@ public class DataCache{
}
/**
* 手动修改数量的时候更新库存
* @param cid
* @param partNumber
* @param amount
* @return
*/
public int updateInventoryAmount(String cid,String partNumber,int amount){
if(amount != 0){
InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid,partNumber);
if(inventoryItem == null){
inventoryItem = new InventoryItem();
inventoryItem.setPartNumber(partNumber);
}
inventoryItem.updateInventory(amount);
updateStorageInventory(cid, inventoryItem);
return inventoryItem.getStockReel();
}
return -1;
}
/**
* 修改库存,出库为负,入库为正
*/
public int updateInventory(StoragePos pos, Barcode barcode){
......@@ -695,18 +716,7 @@ public class DataCache{
storage.useOnePos(pos);
}
allStorage.put(cid, storage);
if(amount != 0){
InventoryItem inventoryItem = getStorageInventoryByPartNumber(cid,partNumber);
if(inventoryItem == null){
inventoryItem = new InventoryItem();
inventoryItem.setPartNumber(partNumber);
}
inventoryItem.updateInventory(amount);
updateStorageInventory(cid, inventoryItem);
return inventoryItem.getStockReel();
}
return -1;
return updateInventoryAmount(cid,partNumber,amount);
}
private void updateStorageInventory(String cid, InventoryItem inventoryItem){
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!