ProcurementService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Services;
  3. use App\Owner;
  4. use App\Procurement;
  5. use App\ProcurementQuotation;
  6. use App\Services\common\QueryService;
  7. use App\Supplier;
  8. use Carbon\Carbon;
  9. use Illuminate\Database\Eloquent\Builder;
  10. use Illuminate\Support\Facades\Auth;
  11. use App\Traits\ServiceAppAop;
  12. class ProcurementService
  13. {
  14. use ServiceAppAop;
  15. //选中最低报价
  16. public function screenLowestQuotation($procurement_id){
  17. if (!$procurement_id) return null;
  18. return ProcurementQuotation::query()
  19. ->with(['supplier','procurement'])
  20. ->select('procurement_id','supplier_id','offer')
  21. ->orderBy('offer','asc')
  22. ->where('procurement_id',$procurement_id)
  23. ->first();
  24. }
  25. public function computeDeadline($time): string
  26. {
  27. /**@var ConfigurationService $configurationService */
  28. $configurationService=app(ConfigurationService::class);
  29. $enquiry_time=$configurationService->getEnquiryTime();
  30. $date=Carbon::parse($time)->toDateString();
  31. $date_tom=Carbon::parse($time)->subDays(-1)->toDateString();
  32. $hour=Carbon::parse($time)->format('H');
  33. if ($hour < 9)return Carbon::parse($date." 09:00:00")->subHours(-$enquiry_time)->toDateTimeString();
  34. if ($hour >=9 && $hour <12)return Carbon::parse($time)->subHours(-$enquiry_time-1)->toDateTimeString();
  35. if ($hour ==12)return Carbon::parse($date." 13:00:00")->subHours(-$enquiry_time)->toDateTimeString();
  36. if ($hour >12 && $hour < 18){
  37. if (18-$hour>=$enquiry_time) return Carbon::parse($date." ".$hour.":00:00")->subHours(-$enquiry_time)->toDateTimeString();
  38. return Carbon::parse($date_tom." 09:00:00")->subHours(-$enquiry_time+(18-$hour))->toDateTimeString();
  39. }
  40. if ($hour>=18)return Carbon::parse($date_tom." 09:00:00")->subHours(-$enquiry_time)->toDateTimeString();
  41. }
  42. public function screenSupplier($user,$material)
  43. {
  44. //通过当前登录用户及采购单对应相应耗材筛选出指定供应商
  45. $supplier=Supplier::query()
  46. ->whereHas('user',function($query)use($user){
  47. /** @var Builder $query */
  48. return $query->where('id',$user->id);
  49. })
  50. ->whereHas('material',function ($builder)use ($material){
  51. /** @var Builder $builder */
  52. return $builder->where('id',$material['id']);
  53. })->first();
  54. if ($supplier) return $supplier;
  55. }
  56. }