WasSyncWmsAsnInformation.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Services\StoreService;
  4. use App\ValueStore;
  5. use Illuminate\Console\Command;
  6. use Illuminate\Support\Carbon;
  7. use Illuminate\Support\Facades\Cache;
  8. class WasSyncWmsAsnInformation extends Command
  9. {
  10. /**
  11. * The name and signature of the console command.
  12. *
  13. * @var string
  14. */
  15. protected $signature = 'WasSyncWmsAsnInformation';
  16. private $task_start_at;
  17. private $task_end_at;
  18. private $restart;
  19. private $is_enabled;
  20. /**
  21. * The console command description.
  22. *
  23. * @var string
  24. */
  25. protected $description = '同步WMS的入库信息';
  26. /**
  27. * Create a new command instance.
  28. *
  29. * @return void
  30. */
  31. public function __construct()
  32. {
  33. parent::__construct();
  34. }
  35. public function init()
  36. {
  37. $this->task_start_at = config('sync.asn_sync.task_start_at');
  38. $this->task_end_at = config('sync.asn_sync.task_end_at');
  39. $this->restart = config('sync.asn_sync.restart');
  40. $this->is_enabled= config('sync.asn_sync.enabled');
  41. }
  42. /**
  43. * Execute the console command.
  44. * @return void
  45. */
  46. public function handle()
  47. {
  48. $this->init();
  49. if($this->is_enabled==false)return;
  50. sleep(rand(1,2));
  51. $start_time = Cache::remember($this->task_start_at,null,function (){
  52. return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value;
  53. });
  54. $end_time = Cache::remember($this->task_end_at,null,function (){
  55. return ValueStore::query()->firstOrCreate(['name'=>$this->task_end_at])->first()->value;
  56. });
  57. $start = Carbon::now();
  58. // 判断上一次任务异常了
  59. //1.第一次就异常了
  60. if(isset($start_time) && empty($end_time) && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)return;
  61. //2.中间某次异常了
  62. if(isset($start_time) && isset($end_time)
  63. && Carbon::parse($end_time)->lt(Carbon::parse($start_time))
  64. && $start->diffInMinutes(Carbon::parse($start_time)) < $this->restart)
  65. return;
  66. $start = (string)$start;
  67. Cache::put($this->task_start_at,$start);
  68. ValueStore::query()->where('name',$this->task_start_at)->update(['value'=>$start]);
  69. $this->WasSyncWmsAsn();
  70. $end = (string)Carbon::now();
  71. Cache::put($this->task_end_at,$end);
  72. ValueStore::query()->where('name',$this->task_end_at)->update(['value'=>$end]);
  73. }
  74. public function WasSyncWmsAsn(){
  75. /** @var StoreService $storeService */
  76. $storeService = app(StoreService::class);
  77. ini_set('memory_limit', '2048M');
  78. $storeService->storeCreateByWms();
  79. $storeService->storeEditCreateWms();
  80. $storeService->storeUpdateByWms();
  81. }
  82. }