| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- <?php
 
- namespace App\Service;
 
- use App\Model\InOutRecord;
 
- use App\Model\Inventory;
 
- use Illuminate\Support\Facades\DB;
 
- class InventoryService extends Service
 
- {
 
-     public function getList($data){
 
-         $model = Inventory::where('')
 
-             ->select('*');
 
-         $list = $this->limit($model,'',$data);
 
-         return [200, $list];
 
-     }
 
-     //获取卷膜真实库存
 
-     public static function getGoodsRealInventy($goods_id, $storehouse_id){
 
-         if(empty($roll_film_id) || empty($storehouse_id))  return [];
 
-         $array = Inventory::where('storehouse_id',$storehouse_id)
 
-             ->whereIn('goods_id',$goods_id)
 
-             ->select('goods_id','storehouse_id','number','lock_number')
 
-             ->get()->toArray();
 
-         if(empty($array)) return [];
 
-         $return = [];
 
-         foreach ($array as $v){
 
-             $return[$v['goods_id'].$v['storehouse_id']] = $v['number'] - $v['lock_number'];
 
-         }
 
-         return $return;
 
-     }
 
-     /**
 
-      * 业务单据审核后 更新库存
 
-      * order_number 订单编号
 
-      */
 
-     public function changeInventory($data){
 
-         $result = InOutRecord::where('del_time',0)
 
-             ->where('from_order_number',$data['order_number'])
 
-             ->select('storehouse_id',DB::raw("sum(number) as number"),'goods_id')
 
-             ->groupby('goods_id','storehouse_id')
 
-             ->get()->toArray();
 
-         if (empty($result)) return false;
 
-         //查询参数拼接
 
-         $search_args = '';
 
-         foreach ($result as $value){
 
-             $search_args .= "(goods_id = '{$value["goods_id"]} and storehouse_id = '{$value["storehouse_id"]}') OR ";
 
-         }
 
-         $search_args = rtrim($search_args,'OR ');
 
-         DB::beginTransaction();
 
-         try {
 
-             $inventory = Inventory::whereRaw($search_args)
 
-                 ->select('id','goods_id','number','storehouse_id')
 
-                 ->sharedLock()
 
-                 ->get()
 
-                 ->toArray();
 
-             $inventory_map = [];
 
-             if(! empty($inventory)){
 
-                 foreach ($inventory as $value){
 
-                     $inventory_map[$value['goods_id'] . $value['storehouse_id']]['id'] = $value['id'];
 
-                     $inventory_map[$value['goods_id'] . $value['storehouse_id']]['number'] = $value['number'];
 
-                 }
 
-             }
 
-             foreach ($result as $key => $value){
 
-                 $keys = $value['goods_id'] . $value['storehouse_id'];
 
-                 if(! isset($inventory_map[$keys])){
 
-                     Inventory::insert($result[$key]);
 
-                 }else{
 
-                     $array['number'] = $value['number'] + $inventory_map[$keys]['number'];
 
-                     $array['lock_number'] = $value['lock_number'] - $inventory_map[$keys]['number'];
 
-                     Inventory::where('id', $inventory_map[$keys]['id'])->update($array);
 
-                 }
 
-             }
 
-             DB::commit();
 
-             return true;
 
-         }catch (\Throwable $exception){
 
-             DB::rollBack();
 
-             return false;
 
-         }
 
-     }
 
- }
 
 
  |