Bläddra i källkod

Merge branch 'zzd'

zhouzhendong 4 år sedan
förälder
incheckning
61f6070c18

+ 7 - 6
app/Http/Controllers/TestController.php

@@ -133,14 +133,15 @@ sql;
             dd($e);
         }
     }
-
     public function test()
     {
-        /** @var OwnerPriceOperationService $service */
-        $service = app("OwnerPriceOperationService");
-        $GLOBALS["FEE_INFO"] = [];
-        $store = Store::query()->where('asn_code',"ASN2108271548")->first();
-        dd($service->matching($store, Feature::MAPPING["store"], $store->owner_id, "入库"),$store->toArray());
+        $models = app("MaterialBoxModelService")->getModelSortedByOwner(null);
+        foreach ($models as $model){
+            $box = app("MaterialBoxService")->getAnEmptyBox($model,[],2);
+            dd($box);
+            if ($box)return $box;
+        }
+        dd();
         TaskTransaction::query()->where("id",">=",280)->delete();
         /*$a= new StorageService();
         $a->clearTask(["HAIB1-01-01"]);

+ 3 - 9
app/Http/Controllers/api/thirdPart/haiq/StorageController.php

@@ -354,14 +354,8 @@ class StorageController
     public function paddingEmptyBox()
     {
         $amount = \request("amount") ?: 1;
-        $blacklist = [];
-        $boxes = "";
-        for ($i=0;$i<$amount;$i++){
-            $box = app("MaterialBoxService")->getAnEmptyBoxSortedByOwner(null,$blacklist);
-            if (!$box)break;
-            $boxes .= $box->code.",";
-            $blacklist[] = $box->id;
-        }
-        $this->success(rtrim($boxes,","));
+        $boxes = app("MaterialBoxService")->getAnEmptyBoxSortedByOwner(null,[],$amount);
+        if (!is_array($boxes))$boxes = [$boxes];
+        $this->success(implode(",",array_column($boxes,"code")));
     }
 }

+ 2 - 2
app/OracleIdxAsrsReceive.php

@@ -40,9 +40,9 @@ class OracleIdxAsrsReceive extends Model
             foreach($logisticNumbers_toInsert as $logisticNumber){
                 if (!$logisticNumber)continue;
                 $inserts .= " into idx_asrs_receive (grouptaskid,grouptasksequence,userdefine1,userdefine2,addwho,addtime)values(?,?,?,?,?,?) ";
-                $values[] = $logisticNumber??'';
+                $values[] = $logisticNumber;
                 $values[] = 1;
-                $values[] = $logisticNumber??'';
+                $values[] = $logisticNumber;
                 $values[] = $weight;
                 $values[] = 'WAS';
                 $values[] = Carbon::now();

+ 27 - 9
app/Services/MaterialBoxService.php

@@ -23,12 +23,14 @@ class MaterialBoxService
      *
      * @param MaterialBoxModel|\stdClass $model
      * @param array $blacklist
+     * @param int $multi
      *
-     * @return MaterialBox|null
+     * @return MaterialBox|null|array
      */
-    public function getAnEmptyBox(MaterialBoxModel $model,array $blacklist = []):?MaterialBox
+    public function getAnEmptyBox(MaterialBoxModel $model,array $blacklist = [], int $multi = 1)
     {
         $id = 0;
+        $tarBoxes = [];
         while (true){
             //检测WAS
             $boxes = MaterialBox::query()->select('id',"code")
@@ -60,9 +62,14 @@ SELECT LOCATIONID FROM (SELECT LOCATIONID FROM (SELECT LOCATIONID,SUM(QTY+QTYPA)
                             LOCATIONID HAVING (COUNT(*)>={$model->maximum_kind})
 sql;
             foreach (DB::connection("oracle")->select(DB::raw($sql)) as $item)unset($ides[$item->locationid]);
-            if ($ides)return current($ides);
+            foreach ($ides as $box){
+                $tarBoxes[] = $box;
+                $multi--;
+                if (!$multi)break 2;
+            }
         }
-        return null;
+        $len = count($tarBoxes);
+        return $len==1 ? $tarBoxes[0] : ($len==0 ? null : $tarBoxes);
     }
 
     public function checkHaiQ(array $boxCodes)
@@ -85,17 +92,28 @@ sql;
      *
      * @param integer|null $ownerId
      * @param array $blacklist
+     * @param int $multi
      *
-     * @return MaterialBox|null
+     * @return MaterialBox|null|array
      */
-    public function getAnEmptyBoxSortedByOwner(?int $ownerId=null, array $blacklist=[]):?MaterialBox
+    public function getAnEmptyBoxSortedByOwner(?int $ownerId=null, array $blacklist=[], int $multi = 1)
     {
         $models = app("MaterialBoxModelService")->getModelSortedByOwner($ownerId);
+        $tarBoxes = [];
         foreach ($models as $model){
-            $box = $this->getAnEmptyBox($model,$blacklist);
-            if ($box)return $box;
+            $box = $this->getAnEmptyBox($model,$blacklist,$multi);
+            if (!$box)continue;
+            if (is_array($box)){
+                $tarBoxes = array_merge($tarBoxes,$box);
+                $multi -= count($box);
+            }else{
+                $tarBoxes[] = $box;
+                $multi--;
+            }
+            if (!$multi)break;
         }
-        return null;
+        $len = count($tarBoxes);
+        return $len==1 ? $tarBoxes[0] : ($len==0 ? null : $tarBoxes);
     }
 
     /**