Sfoglia il codice sorgente

采购管理小程序报价显示问题

hu hao 5 anni fa
parent
commit
bc588800b7

+ 34 - 4
app/Http/Controllers/TestController.php

@@ -113,6 +113,7 @@ use App\Services\RegionService;
 use App\Services\RejectedBillService;
 use App\Services\ShopService;
 use App\Services\StoreService;
+use App\Services\SupplierService;
 use App\Services\WarehouseService;
 use App\StationRuleBatch;
 use App\StationTask;
@@ -1265,21 +1266,50 @@ where purch.islower=1 and deliver.id>'.$id);
         ProcurementCheckSheet::query()->insert($insert_);
     }
     public function testPro(){
-        $status=0;
+        /**@var SupplierService $supplierService*/
+        $supplierService=app(SupplierService::class);
+        $supplier_ids=$supplierService->screenSupplierIds();
+//        $status=0;
+//        $procurements=Procurement::query()
+//            ->withCount('procurementQuotations')
+//            ->with('ownerMaterial.material')
+//            ->where('status',$status)
+//            ->whereHas("ownerMaterial",function (Builder $query)use($supplier_ids){
+//                $query->whereHas("material",function (Builder $query)use($supplier_ids){
+//                    $query->whereHas("supplier",function (Builder $query)use($supplier_ids){
+//                        $query->whereIn('id',$supplier_ids);
+//                    });
+//                });
+//            })
+//            ->get();
+//        $keys = [];
+//        foreach ($procurements as $key=>$procurement){
+////            if ($procurement->procurement_quotations_count>0 && $status==0 )$keys[]= $key;
+//            if ($procurement->type==2 && $procurement->supplier_id )$keys[]= $key;
+//            if (Carbon::parse($procurement->deadline)->gt(Carbon::now())) $procurement->deadline=Carbon::parse($procurement->deadline)->diffInMilliseconds();
+//            else $procurement->deadline=0;
+//        }
+//        $procurements = $procurements->diffKeys($keys);
+//        dd($procurements);
+        $status=0;//0:待报价,2:待接单
         $procurements=Procurement::query()
             ->withCount('procurementQuotations')
-            ->with('ownerMaterial.material')
+            ->with(['ownerMaterial.material','procurementQuotations'])
             ->where('status',$status)
             ->get();
+        dd($procurements);
         $keys = [];
         foreach ($procurements as $key=>$procurement){
-            if ($procurement->procurement_quotations_count>0 && $status==0 )$keys[]= $key;
+            if ($procurement->procurement_quotations_count>0 ){
+                foreach ($procurement->procurementQuotations as $procurementQuotation){
+                    if (in_array($procurementQuotation->supplier_id,$supplier_ids))$keys[]= $key;
+                }
+            }
             if ($procurement->type==2 && $procurement->supplier_id )$keys[]= $key;
             if (Carbon::parse($procurement->deadline)->gt(Carbon::now())) $procurement->deadline=Carbon::parse($procurement->deadline)->diffInMilliseconds();
             else $procurement->deadline=0;
         }
         $procurements = $procurements->diffKeys($keys);
         dd($procurements);
-        if (!empty($procurements)) return $this->success($procurements);
     }
 }

+ 11 - 2
app/Http/Controllers/api/thirdPart/weixin/ProcurementController.php

@@ -11,6 +11,7 @@ use App\ProcurementQuotation;
 use App\ProcurementTotalBill;
 use App\Services\api\UserService;
 use App\Services\ProcurementService;
+use App\Services\SupplierService;
 use Carbon\Carbon;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
@@ -22,15 +23,23 @@ class ProcurementController extends Controller
 
     public function getWaitQuotation(Request $request): \Illuminate\Http\JsonResponse
     {
+        /**@var SupplierService $supplierService*/
+        $supplierService=app(SupplierService::class);
+        $supplier_ids=$supplierService->screenSupplierIds();
         $status=$request->input('status');//0:待报价,2:待接单
         $procurements=Procurement::query()
             ->withCount('procurementQuotations')
-            ->with('ownerMaterial.material')
+            ->with(['ownerMaterial.material','procurementQuotations'])
             ->where('status',$status)
             ->get();
         $keys = [];
         foreach ($procurements as $key=>$procurement){
-            if ($procurement->procurement_quotations_count>0 && $status==0 )$keys[]= $key;
+//            if ($procurement->procurement_quotations_count>0 && $status==0 )$keys[]= $key;
+            if ($procurement->procurement_quotations_count>0 ){
+                foreach ($procurement->procurementQuotations as $procurementQuotation){
+                    if (in_array($procurementQuotation->supplier_id,$supplier_ids))$keys[]= $key;
+                }
+            }
             if ($procurement->type==2 && $procurement->supplier_id )$keys[]= $key;
             if (Carbon::parse($procurement->deadline)->gt(Carbon::now())) $procurement->deadline=Carbon::parse($procurement->deadline)->diffInMilliseconds();
             else $procurement->deadline=0;

+ 1 - 1
app/Procurement.php

@@ -84,7 +84,7 @@ class Procurement extends Model
                     $builder->where(function (Builder $query)use($ids){
                         $query->where(function (Builder $query)use($ids){
                             $query->whereNull("supplier_id")->orWhereIn('supplier_id',$ids)->orWhere("type",1);
-                        })->whereHas("ownerMaterial",function (Builder $query)use($ids){
+                        })->orWhereHas("ownerMaterial",function (Builder $query)use($ids){
                             $query->whereHas("material",function (Builder $query)use($ids){
                                 $query->whereHas("supplier",function (Builder $query)use($ids){
                                     $query->whereIn('id',$ids);

+ 2 - 1
app/Services/SupplierService.php

@@ -6,6 +6,7 @@ use App\Traits\ServiceAppAop;
 use App\Supplier;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Gate;
 
 class SupplierService
 {
@@ -15,7 +16,7 @@ class SupplierService
     public function screenSupplierIds(): array
     {
         $user=Auth::user();
-        if ($user && $user->isSuperAdmin()) return Supplier::query()->get()->map(function ($supplier){return $supplier->id;})->toArray();
+        if (($user && $user->isSuperAdmin()) ||Gate::allows('供应商-可见全部')) return Supplier::query()->get()->map(function ($supplier){return $supplier->id;})->toArray();
         $suppliers=Supplier::query()
             ->whereHas('user',function($query)use($user){
                 /** @var Builder $query */