|
|
@@ -54,6 +54,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
@@ -330,6 +331,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
//stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().subtract(deliveryItems.getActualQuantity()));//锁定数量 减
|
|
|
stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().subtract(deliveryItems.getActualQuantity()));//结余数量 减
|
|
|
stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
|
|
|
+ stockGoods.setOutAmount(stockGoods.getOutAmount().add(deliveryItems.getDeliveryAmount()));//出库金额加
|
|
|
if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
|
|
|
//判断出库发票重量和结余发票重量
|
|
|
if (stockGoods.getBalanceWeight().compareTo(deliveryItems.getInvoiceWeight()) < 0){
|
|
|
@@ -378,6 +380,7 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
//stockGoods.setLockingQuantity(stockGoods.getLockingQuantity().add(deliveryItems.getActualQuantity()));//锁定数量 加
|
|
|
stockGoods.setBalanceQuantity(stockGoods.getBalanceQuantity().add(deliveryItems.getActualQuantity()));//结余数量 加
|
|
|
stockGoods.setSurplusRouteQuantity(stockGoods.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
|
|
|
+ stockGoods.setOutAmount(stockGoods.getOutAmount().subtract(deliveryItems.getDeliveryAmount()));//出库金额减
|
|
|
if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
|
|
|
//判断出库发票重量和结余发票重量
|
|
|
if (stockGoods.getOutWeight().compareTo(deliveryItems.getInvoiceWeight()) < 0){
|
|
|
@@ -515,10 +518,11 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
//入库数量
|
|
|
stockGoods.setInDate(new Date());//入库日期
|
|
|
stockGoods.setInQuantity(deliveryItems.getActualQuantity());//入库数量
|
|
|
- stockGoods.setOutQuantity(new BigDecimal(0.00));//出库数量
|
|
|
- stockGoods.setLockingQuantity(new BigDecimal(0.00));//锁定数量
|
|
|
+ stockGoods.setOutQuantity(BigDecimal.ZERO);//出库数量
|
|
|
+ stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
|
|
|
stockGoods.setBalanceQuantity(deliveryItems.getActualQuantity());//结余数量
|
|
|
- stockGoods.setEnRouteQuantity(deliveryItems.getActualQuantity());//在途数量
|
|
|
+ stockGoods.setEnRouteQuantity(BigDecimal.ZERO);//在途数量
|
|
|
+ stockGoods.setInAmount(deliveryItems.getDeliveryAmount());//入库金额
|
|
|
stockGoods.setSurplusRouteQuantity(deliveryItems.getActualQuantity());//可用数量
|
|
|
//进口贸易 还需要追加码单重量 和 发票重量
|
|
|
if (tradeType.equals(OrderTypeEnum.IMPORT.getType())){
|
|
|
@@ -740,11 +744,15 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
stock.setOutQuantity(stock.getOutQuantity().add( deliveryItems.getActualQuantity()));//出库数量 加
|
|
|
stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
|
|
|
stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量 减
|
|
|
+ //出库金额加
|
|
|
+ stock.setOutAmount(stock.getOutAmount().add((stock.getInAmount().divide(stock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
|
|
|
R updateStock = stockGoodsClient.updateStock(stock);
|
|
|
if (!updateStock.isSuccess()){
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
}
|
|
|
//新仓库添加库存
|
|
|
+ //入库金额等于原仓库的入库金额除以入库数量
|
|
|
+ deliveryItems.setDeliveryAmount((stock.getInAmount().divide(stock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity()));
|
|
|
StockGoodsVO serviceStock = this.getStock(tradeType, null, allotStorageId, deliveryItems);
|
|
|
if (serviceStock == null){
|
|
|
this.saveStock(tradeType,null,allotStorageId,deliveryItems);
|
|
|
@@ -752,6 +760,8 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
serviceStock.setInQuantity(serviceStock.getInQuantity().add( deliveryItems.getActualQuantity()));//入库数量 加
|
|
|
serviceStock.setSurplusRouteQuantity(serviceStock.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
|
|
|
serviceStock.setBalanceQuantity(serviceStock.getInQuantity().add(serviceStock.getOutQuantity()));//结余数量 加
|
|
|
+ //入库金额加
|
|
|
+ serviceStock.setInAmount(serviceStock.getInAmount().add((stock.getInAmount().divide(stock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
|
|
|
R stockMessage = stockGoodsClient.updateStock(serviceStock);
|
|
|
if (!stockMessage.isSuccess()){
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
@@ -767,27 +777,33 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
|
|
|
if (stock.getSurplusRouteQuantity().compareTo(deliveryItems.getActualQuantity()) <0){
|
|
|
throw new SecurityException("商品库存不足");
|
|
|
}
|
|
|
- //新仓库减去库存
|
|
|
- stock.setInQuantity(stock.getInQuantity().subtract( deliveryItems.getActualQuantity()));//入库数量 减
|
|
|
- stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
|
|
|
- stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量 减
|
|
|
- R updateStock = stockGoodsClient.updateStock(stock);
|
|
|
- if (!updateStock.isSuccess()){
|
|
|
- throw new RuntimeException("更新库存总账失败");
|
|
|
- }
|
|
|
//原仓库添加库存
|
|
|
StockGoodsVO serviceStock = this.getStock(tradeType, null, storageId, deliveryItems);
|
|
|
if (serviceStock == null){
|
|
|
- this.saveStock(tradeType,null,storageId,deliveryItems);
|
|
|
+ throw new SecurityException("未找到原仓库库存信息");
|
|
|
}else {
|
|
|
serviceStock.setOutQuantity(serviceStock.getOutQuantity().subtract( deliveryItems.getActualQuantity()));//出库数量 减
|
|
|
serviceStock.setSurplusRouteQuantity(serviceStock.getSurplusRouteQuantity().add(deliveryItems.getActualQuantity()));//可用数量 加
|
|
|
serviceStock.setBalanceQuantity(serviceStock.getInQuantity().add(serviceStock.getOutQuantity()));//结余数量 加
|
|
|
+ //出库金额减
|
|
|
+ serviceStock.setOutAmount(serviceStock.getOutAmount().subtract((serviceStock.getInAmount().divide(serviceStock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
|
|
|
+
|
|
|
R stockMessage = stockGoodsClient.updateStock(serviceStock);
|
|
|
if (!stockMessage.isSuccess()){
|
|
|
throw new RuntimeException("更新库存总账失败");
|
|
|
}
|
|
|
}
|
|
|
+ //新仓库减去库存
|
|
|
+ stock.setInQuantity(stock.getInQuantity().subtract( deliveryItems.getActualQuantity()));//入库数量 减
|
|
|
+ stock.setSurplusRouteQuantity(stock.getSurplusRouteQuantity().subtract(deliveryItems.getActualQuantity()));//可用数量 减
|
|
|
+ stock.setBalanceQuantity(stock.getInQuantity().subtract(stock.getOutQuantity()));//结余数量 减
|
|
|
+ //入库金额减
|
|
|
+ stock.setInAmount(stock.getInAmount().subtract((serviceStock.getInAmount().divide(serviceStock.getInQuantity(), 5, RoundingMode.HALF_UP)).setScale(2, RoundingMode.HALF_UP).multiply(deliveryItems.getActualQuantity())));
|
|
|
+
|
|
|
+ R updateStock = stockGoodsClient.updateStock(stock);
|
|
|
+ if (!updateStock.isSuccess()){
|
|
|
+ throw new RuntimeException("更新库存总账失败");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return R.success("操作成功");
|