refactor(warehouse): 优化仓库产品数量变更逻辑
- 重构了 WarehouseProductLogic 类中的库存增减逻辑 - 新增 incProductDecStorege 和 decProductIncStorege 方法,用于处理库存变化 - 优化了 nums 更新方式,使用 bcsub 和 bcadd 进行精确计算 - 调整了 SqlChannelLog 的调用参数,确保日志记录准确性 - 移除了不必要的 find 和 save 操作,提高代码效率
This commit is contained in:
parent
1caae07bb9
commit
a93207ff4c
@ -206,10 +206,14 @@ class WarehouseProductLogic extends BaseLogic
|
||||
$find = WarehouseOrder::where('id', $params['oid'])->find();
|
||||
if ($find) {
|
||||
$res = WarehouseProduct::where('id', $params['id'])->withTrashed()->find();
|
||||
self::decStock($res,$admin_id);
|
||||
self::incStock($res, $params,$admin_id);
|
||||
if($params['nums']>$res['nums']){
|
||||
$nums=bcsub($params['nums'], $res['nums'],2);
|
||||
self::incProductDecStorege($res, $nums,$admin_id);
|
||||
}else{
|
||||
$nums=bcsub($res['nums'],$params['nums'],2);
|
||||
self::decProductIncStorege($res, $nums,$admin_id);
|
||||
}
|
||||
$datas = [
|
||||
'nums' => $params['nums'],
|
||||
'total_price' => $params['total_price'],
|
||||
];
|
||||
if ($find['financial_pm'] == 1) {
|
||||
@ -306,8 +310,13 @@ class WarehouseProductLogic extends BaseLogic
|
||||
try {
|
||||
$res = WarehouseProduct::where('id', $params['id'])->find();
|
||||
if ($res) {
|
||||
self::decStock($res,$admin_id);
|
||||
self::incStock($res, $params,$admin_id);
|
||||
if($params['nums']>$res['nums']){
|
||||
$nums=bcsub($params['nums'], $res['nums'],2);
|
||||
self::incProductDecStorege($res, $nums,$admin_id);
|
||||
}else{
|
||||
$nums=bcsub($res['nums'],$params['nums'],2);
|
||||
self::decProductIncStorege($res, $nums,$admin_id);
|
||||
}
|
||||
$datas = [
|
||||
'nums' => $params['nums'],
|
||||
'total_price' => bcmul($params['nums'], $res['price'], 2),
|
||||
@ -344,28 +353,24 @@ class WarehouseProductLogic extends BaseLogic
|
||||
}
|
||||
|
||||
//减少
|
||||
private static function decStock($res,$admin_id=0)
|
||||
private static function decProductIncStorege($res,$nums,$admin_id=0)
|
||||
{
|
||||
$res1 = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])
|
||||
->where('product_id', $res['product_id'])->find();
|
||||
$res1->save(['nums'=>bcsub($res1['nums'], $res['nums'],2)]);
|
||||
SqlChannelLog('WarehouseProductStorege', $res1['id'], $res['nums'], -1, Request()->url(),$admin_id);
|
||||
->where('product_id', $res['product_id'])->inc('nums',$nums)->update();
|
||||
SqlChannelLog('WarehouseProductStorege', $res1['id'], $nums, 1, Request()->url(),$admin_id);
|
||||
|
||||
$res->save(['nums'=>bcsub($res['nums'], $res['nums'],2)]);
|
||||
$res->dec('nums',$nums)->update();
|
||||
SqlChannelLog('WarehouseProduct', $res['id'], $res['nums'], -1, Request()->url(),$admin_id);
|
||||
}
|
||||
|
||||
//增加
|
||||
private static function incStock($res, $params,$admin_id=0)
|
||||
private static function incProductDecStorege($res, $nums,$admin_id=0)
|
||||
{
|
||||
$res1 = WarehouseProductStorege::where('warehouse_id', $res['warehouse_id'])
|
||||
->where('product_id', $res['product_id'])
|
||||
->find();
|
||||
$res1->save(['nums'=>bcadd($res1['nums'], $params['nums'],2)]);
|
||||
->where('product_id', $res['product_id'])->dec('nums',$nums)->update();
|
||||
SqlChannelLog('WarehouseProductStorege', $res1['id'], $nums, -1, Request()->url(),$admin_id);
|
||||
|
||||
SqlChannelLog('WarehouseProductStorege', $res1['id'], $res['nums'], 1, Request()->url(),$admin_id);
|
||||
|
||||
$res->save(['nums'=>bcadd($res['nums'], $params['nums'],2)]);
|
||||
$res->inc('nums',$nums)->update();
|
||||
SqlChannelLog('WarehouseProduct', $res['id'], $res['nums'], 1, Request()->url(),$admin_id);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user