| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace App\Services;
- use App\Owner;
- use App\Procurement;
- use App\ProcurementQuotation;
- use App\Services\common\QueryService;
- use App\Supplier;
- use Carbon\Carbon;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Facades\Auth;
- use App\Traits\ServiceAppAop;
- class ProcurementService
- {
- use ServiceAppAop;
- //选中最低报价
- public function screenLowestQuotation($procurement_id){
- if (!$procurement_id) return null;
- $procurementQuotation=ProcurementQuotation::query()
- ->with(['supplier','procurement'])
- ->select('procurement_id','supplier_id','offer')
- ->orderBy('offer','asc')
- ->where('procurement_id',$procurement_id)
- ->first();
- return $procurementQuotation;
- }
- public function pushEnquiryToSupplier($procurement_id){
- $procurement=Procurement::query()->find($procurement_id);
- $procurement->loadMissing(['ownerMaterial.material.supplier']);
- if (!empty($procurement->ownerMaterial->material->supplier))$suppliers=$procurement->ownerMaterial->material->supplier;
- foreach ($suppliers as $supplier){
- $procurementQuotation= new ProcurementQuotation([
- 'procurement_id'=>$procurement_id,
- 'supplier_id'=>$supplier->id,
- ]);
- $procurementQuotation->save();
- //TODO 推送给指定耗材类型供应商
- }
- }
- public function computeDeadline($time)
- {
- $date=Carbon::parse($time)->toDateString();
- if ($time<$date." 09:00:00")$deadline=Carbon::parse($date." 09:00:00")->subHours(-4)->toDateTimeString();
- if($time>=$date." 09:00:00" && $time<$date." 14:00:00") $deadline=Carbon::parse($time)->subHours(-4)->toDateTimeString();
- if ($time>=$date." 14:00:00")$deadline=Carbon::parse($time)->subHours(-15-4)->toDateTimeString();
- if ($deadline) return $deadline;
- }
- public function screenSupplier($user,$material)
- {
- //通过当前登录用户及采购单对应相应耗材筛选出指定供应商
- $supplier=Supplier::query()
- ->whereHas('user',function($query)use($user){
- /** @var Builder $query */
- return $query->where('id',$user->id);
- })
- ->whereHas('material',function ($builder)use ($material){
- /** @var Builder $builder */
- return $builder->where('id',$material['id']);
- })->first();
- if ($supplier) return $supplier;
- }
- }
|