ProcessService.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Services;
  3. use App\Process;
  4. use App\Services\common\QueryService;
  5. use Carbon\Carbon;
  6. use Illuminate\Http\Request;
  7. Class ProcessService
  8. {
  9. private function conditionQuery(Request $request){
  10. $processes=Process::filterAuthorities()->with(['tutorials','signs','processesContents'=>function($query){
  11. return $query->with(['commodity'=>function($query){
  12. return $query->with('barcodes');
  13. }]);
  14. }])->orderBy('processes.id','DESC');
  15. $today=Carbon::now()->subDays(15)->format('Y-m-d');
  16. if ($request->input('commodity_barcode')){
  17. $barcode=$request->input('commodity_barcode');
  18. $processesTem=clone $processes;
  19. $processesTem=$processesTem->whereHas('processesContents',function ($query)use($barcode){
  20. $query->whereHas('commodity',function ($builder)use($barcode){
  21. $builder->whereHas('barcodes',function ($builder)use($barcode){
  22. $builder->where('code','like',$barcode.'%');
  23. });
  24. });
  25. })->where('created_at','>=',$today);
  26. if ($processesTem->count()>0)$processes=$processesTem;
  27. else{
  28. $processes=$processes->whereHas('processesContents',function ($query)use($barcode){
  29. $query->whereHas('commodity',function ($builder)use($barcode){
  30. $builder->whereHas('barcodes',function ($builder)use($barcode){
  31. $builder->where('code',$barcode);
  32. });
  33. });
  34. });
  35. }
  36. $request->offsetUnset('commodity_barcode');
  37. }
  38. if ($request->input('wms_code')){
  39. $processesTem=clone $processes;
  40. $wms_code=$request->input('wms_code');
  41. $processesTem=$processesTem->whereHas('processesContents',function ($builder)use ($wms_code,$today){
  42. $builder->where('wms_code','like','%'.$wms_code.'%');
  43. })->where('created_at','>=',$today);
  44. if ($processesTem->count()>0)$processes=$processesTem;
  45. else{
  46. $processes=$processes->whereHas('processesContents',function ($builder)use ($wms_code,$today){
  47. $builder->where('wms_code',$wms_code);
  48. });
  49. }
  50. $request->offsetUnset('wms_code');
  51. }
  52. if (!$request->is_accomplish){
  53. $processes=$processes->where('status','!=','交接完成');
  54. }else $request->offsetUnset('is_accomplish');
  55. $columnQueryRules=[
  56. 'date_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
  57. 'date_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
  58. 'code' => ['like' => '']
  59. ];
  60. $processes = app(QueryService::class)->query($request,$processes,$columnQueryRules);
  61. return $processes;
  62. }
  63. public function paginate(Request $request){
  64. return $this->conditionQuery($request)->paginate($request->paginate ?? 50);
  65. }
  66. public function get(Request $request){
  67. return $this->conditionQuery($request)->get();
  68. }
  69. public function some(Request $request){
  70. return Process::filterAuthorities()->with(['processesContents'=>function($query){
  71. return $query->with(['commodity'=>function($query){
  72. return $query->with('barcodes');
  73. }]);
  74. }])->orderBy('processes.id','DESC')->whereIn('processes.id',explode(',',$request->data))->get();
  75. }
  76. }