Zhouzhendong 5 лет назад
Родитель
Сommit
930c792e14

+ 4 - 2
app/Http/Controllers/api/thirdPart/weight/PackageController.php

@@ -178,6 +178,7 @@ class PackageController extends Controller
         $measuringMachine->turnOn();
         $measuringMachine->turnOffInMinutes(30);
 
+        /** @var OrderPackage $package */
         $package=OrderPackage::query()->where('logistic_number',$request['barcode'])->first();
 
         $edges=[$request['length']??0,$request['width']??0,$request['height']??0];
@@ -217,13 +218,13 @@ class PackageController extends Controller
         }
         if (!$package){
             $logisticNumber=$request['barcode'];
+            /** @var OrderService */
             $order = app('orderService')->logisticNumberCreateOrder($logisticNumber);
             if (!$order) {
                 $response=["msg"=>"保存时发生错误(未在WMS找到该单)!","code"=>500,"data"=>null];
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
             $package=new OrderPackage([
-                /** @var OrderService */
                 'order_id' => $order->id,
                 'logistic_number'=>$logisticNumber,
                 'measuring_machine_id'=>$measuringMachine->id,
@@ -239,6 +240,7 @@ class PackageController extends Controller
             $package->fetchPaperBox();
             try{
                 $package->save();
+                $package->load(['order','paperBox','measuringMachine']);
             }catch (\Exception $e){
                 $response=["msg"=>"保存时发生错误(未下发)!","code"=>500,"data"=>null];
                 $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.json_encode($e),null);
@@ -253,7 +255,7 @@ class PackageController extends Controller
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
         }
-        if(!empty($package->order_code))
+        if(!empty($package->order_id))
             Waybill::setWeightByOrderCode($package->order_code,$package->weight);
             event(new WeighedEvent($package));
             $response=["msg"=>"保存成功",

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -4,6 +4,7 @@ namespace App\Providers;
 
 use App\Http\Controllers\Controller;
 use App\Services\InventoryCompareService;
+use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderIssuePerformanceService;
 use App\OracleActAllocationDetail;
 use App\Services\AllInventoryService;
@@ -87,5 +88,6 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('shopService',ShopService::class);
         app()->singleton('orderPackageService',OrderPackageService::class);
         app()->singleton('orderService',OrderService::class);
+        app()->singleton('oracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
     }
 }

+ 7 - 0
app/Services/OracleDOCOrderHeaderService.php

@@ -7,4 +7,11 @@ use App\OracleDOCOrderHeader;
 Class OracleDOCOrderHeaderService
 {
 
+    function first(array $params){
+        $order = OracleDOCOrderHeader::query();
+        foreach ($params as $column => $value){
+            $order->where($column, $value);
+        }
+        return $order->first();
+    }
 }

+ 10 - 7
app/Services/OrderService.php

@@ -116,15 +116,18 @@ class OrderService
          * @var OracleActAllocationDetails $actAllocationDetail
          */
         $actAllocationDetail = app('oracleActAllocationDetailService')->first(['picktotraceid' => $logistic_number]);
-        if (!$actAllocationDetail) return null;
+        if ($actAllocationDetail) {
+            $order = $this->first(['code' => $actAllocationDetail->orderno]);
+            if ($order) return $order;
 
-        $order = $this->first(['code' => $actAllocationDetail->orderno]);
-        if ($order) return $order;
+            $actAllocationDetail->load(['oracleDocOrderHeader' => function ($query) {
+                $query->with('oracleBASCode');
+            }]);
+            $orderHeader = $actAllocationDetail->oracleDocOrderHeader ?? null;
+        }else{
+            $orderHeader = app('oracleDocOrderHeaderService')->first(['soreference5' => $logistic_number]);
+        }
 
-        $actAllocationDetail->load(['oracleDocOrderHeader' => function ($query) {
-            $query->with('oracleBASCode');
-        }]);
-        $orderHeader = $actAllocationDetail->oracleDocOrderHeader ?? null;
         if ($orderHeader == null) return null;
 
         /** @var OwnerService $owner */