ProcurementService.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. $procurementQuotation=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. return $procurementQuotation;
  25. }
  26. public function pushEnquiryToSupplier($procurement_id){
  27. $procurement=Procurement::query()->find($procurement_id);
  28. $procurement->loadMissing(['ownerMaterial.material.supplier']);
  29. if (!empty($procurement->ownerMaterial->material->supplier))$suppliers=$procurement->ownerMaterial->material->supplier;
  30. foreach ($suppliers as $supplier){
  31. $procurementQuotation= new ProcurementQuotation([
  32. 'procurement_id'=>$procurement_id,
  33. 'supplier_id'=>$supplier->id,
  34. ]);
  35. $procurementQuotation->save();
  36. //TODO 推送给指定耗材类型供应商
  37. }
  38. }
  39. public function computeDeadline($time)
  40. {
  41. $date=Carbon::parse($time)->toDateString();
  42. if ($time<$date." 09:00:00")$deadline=Carbon::parse($date." 09:00:00")->subHours(-4)->toDateTimeString();
  43. if($time>=$date." 09:00:00" && $time<$date." 14:00:00") $deadline=Carbon::parse($time)->subHours(-4)->toDateTimeString();
  44. if ($time>=$date." 14:00:00")$deadline=Carbon::parse($time)->subHours(-15-4)->toDateTimeString();
  45. if ($deadline) return $deadline;
  46. }
  47. public function screenSupplier($user,$material)
  48. {
  49. //通过当前登录用户及采购单对应相应耗材筛选出指定供应商
  50. $supplier=Supplier::query()
  51. ->whereHas('user',function($query)use($user){
  52. /** @var Builder $query */
  53. return $query->where('id',$user->id);
  54. })
  55. ->whereHas('material',function ($builder)use ($material){
  56. /** @var Builder $builder */
  57. return $builder->where('id',$material['id']);
  58. })->first();
  59. if ($supplier) return $supplier;
  60. }
  61. }