Quellcode durchsuchen

入库预约 可以填写上游单号和asn单号
自动转为ASN号

loustwo vor 4 Jahren
Ursprung
Commit
638e626b1e
1 geänderte Dateien mit 20 neuen und 10 gelöschten Zeilen
  1. 20 10
      app/Http/Controllers/DeliveryAppointmentController.php

+ 20 - 10
app/Http/Controllers/DeliveryAppointmentController.php

@@ -10,6 +10,8 @@ use App\Events\DeliveryAppointmentEvent;
 use App\Imports\AppointmentDetail;
 use App\Jobs\DeliveryAppointmentCheck;
 use App\Logistic;
+use App\OracleDOCASNHeader;
+use App\OracleDOCOrderHeader;
 use App\Store;
 use App\Warehouse;
 use Carbon\Carbon;
@@ -130,16 +132,24 @@ class DeliveryAppointmentController extends Controller
     }
 
     private function checkAndGetAsn($codes){
-        if ($codes){
-            $codes = array_filter(array_unique(preg_split('/[,, ]+/u', $codes)));
-            if (count($codes)>0){
-                $asnCount = Store::query()->whereIn("asn_code",$codes)->count();
-                $codes = count($codes)===$asnCount ? implode(",",$codes) : null;
-            }else{
-                $codes = null;
-            }
-        }
-        return $codes;
+        if(!$codes) return null;
+
+        $codes = array_filter(array_unique(preg_split('/[,, ]+/u', $codes)));
+        if(count($codes) == 0) return null;
+
+        $asnNos = array_filter($codes,function($item){return str_starts_with($item,'ASN');});   // asn号
+        $asnCount = Store::query()->whereIn("asn_code",$asnNos)->count();
+        if($asnCount!==count($asnNos)) return null;
+
+        $asnReferences = array_filter($codes,function($item){return !str_starts_with($item,'ASN');});  // 上游单号
+        $docAsnHeaderAsnNos = OracleDOCASNHeader::query()->select('asnNo')->whereIn('ASNReference1',$codes)->get()->map(function ($item) {
+            return $item->asnno;
+        })->toArray();
+
+        $asnCount = Store::query()->whereIn("asn_code",$docAsnHeaderAsnNos)->count();
+        if($asnCount !== count($asnReferences)) return null;
+
+        return implode(",",array_unique(array_merge($asnNos,$docAsnHeaderAsnNos)));
     }
 
     /**