ProcurementEnquiry.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Jobs;
  3. use App\Configuration;
  4. use App\Procurement;
  5. use App\Services\ConfigurationService;
  6. use App\Services\LogService;
  7. use App\Services\ProcurementService;
  8. use Illuminate\Bus\Queueable;
  9. use Illuminate\Contracts\Queue\ShouldQueue;
  10. use Illuminate\Foundation\Bus\Dispatchable;
  11. use Illuminate\Queue\InteractsWithQueue;
  12. use Illuminate\Queue\SerializesModels;
  13. use Illuminate\Support\Carbon;
  14. use Illuminate\Support\Facades\Cache;
  15. /**
  16. * @Deprecated 采购供应商选择
  17. */
  18. class ProcurementEnquiry implements ShouldQueue
  19. {
  20. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  21. protected $procurement;
  22. private $unit_price;
  23. /**
  24. * Create a new job instance.
  25. *
  26. * @param Procurement $procurement
  27. */
  28. public function __construct(Procurement $procurement)
  29. {
  30. $this->procurement=$procurement;
  31. }
  32. /**
  33. * Execute the job.
  34. *
  35. * @return void
  36. */
  37. public function handle()
  38. {
  39. /** @var ProcurementService $procurementService*/
  40. /**@var ConfigurationService $configurationService */
  41. $configurationService=app(ConfigurationService::class);
  42. $receive_time=$configurationService->getReceiveTime();
  43. $priceCoefficient=$configurationService->getPriceCoefficient();
  44. $procurementService=app(ProcurementService::class);
  45. $procurementQuotation=$procurementService->screenLowestQuotation($this->procurement->id);
  46. if (!$procurementQuotation){
  47. $this->procurement->update(['status'=>3]);
  48. return;
  49. }
  50. if(!$this->procurement->unit_price)$this->unit_price=$priceCoefficient*$procurementQuotation['offer'];
  51. else $this->unit_price=$this->procurement->unit_price;
  52. try{
  53. $this->procurement->update([
  54. 'status'=>2,
  55. 'unit_price'=>$this->unit_price,
  56. 'cost_price'=>$procurementQuotation['offer'],
  57. 'supplier_id'=>$procurementQuotation['supplier_id'],
  58. 'deadline'=>Carbon::parse(Carbon::now()->toDateTimeString())->subHours(-$receive_time)->toDateTimeString(),
  59. ]);
  60. dispatch(new ProcurementReceive($this->procurement))->delay(now()->addHours($receive_time)); //可从系统配置获取
  61. dispatch(new ProcurementWaitConfirmInform($this->procurement));
  62. }catch (\Exception $e){
  63. LogService::log(__METHOD__,"ERROR-采购延时选定最低报价供应商",$this->procurement->toJson()." | ".$e->getMessage());
  64. }
  65. }
  66. }