InventoryService.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Service;
  3. use App\Model\InOutRecord;
  4. use App\Model\Inventory;
  5. use Illuminate\Support\Facades\DB;
  6. class InventoryService extends Service
  7. {
  8. public function getList($data){
  9. $model = Inventory::where('')
  10. ->select('*');
  11. $list = $this->limit($model,'',$data);
  12. return [200, $list];
  13. }
  14. //获取卷膜真实库存
  15. public static function getGoodsRealInventy($goods_id, $storehouse_id){
  16. if(empty($roll_film_id) || empty($storehouse_id)) return [];
  17. $array = Inventory::where('storehouse_id',$storehouse_id)
  18. ->whereIn('goods_id',$goods_id)
  19. ->select('goods_id','storehouse_id','number','lock_number')
  20. ->get()->toArray();
  21. if(empty($array)) return [];
  22. $return = [];
  23. foreach ($array as $v){
  24. $return[$v['goods_id'].$v['storehouse_id']] = $v['number'] - $v['lock_number'];
  25. }
  26. return $return;
  27. }
  28. /**
  29. * 业务单据审核后 更新库存
  30. * order_number 订单编号
  31. * opt_case 有些订单一次创建会同时有出入库单据
  32. */
  33. public function changeInventory($data){
  34. $model = InOutRecord::where('del_time',0)
  35. ->where('from_order_number',$data['order_number'])
  36. ->select('storehouse_id',DB::raw("sum(number) as number"),'goods_id')
  37. ->groupby('goods_id','storehouse_id');
  38. $result = $model->get()->toArray();
  39. if (empty($result)) return false;
  40. foreach ($result as $key => $value){
  41. $m = Inventory::where('goods_id',$value['goods_id'])
  42. ->where('storehouse_id',$value['storehouse_id'])
  43. ->select('goods_id','number','storehouse_id')
  44. ->first();
  45. if(empty($m)){
  46. Inventory::insert($result[$key]);
  47. }else{
  48. $array['number'] = $value['number'] + $m->number;
  49. $array['lock_number'] = $value['lock_number'] - $m->number;
  50. Inventory::where('goods_id',$m->roll_film_id)
  51. ->where('storehouse_id',$m->storehouse_id)
  52. ->lockForUpdate()
  53. ->update($array);
  54. }
  55. }
  56. return true;
  57. }
  58. }