ajun 4 سال پیش
والد
کامیت
1e14c0320e
1فایلهای تغییر یافته به همراه69 افزوده شده و 1 حذف شده
  1. 69 1
      app/Http/Controllers/api/thirdPart/haochuang/SortingController.php

+ 69 - 1
app/Http/Controllers/api/thirdPart/haochuang/SortingController.php

@@ -7,6 +7,7 @@ use App\CommodityBarcode;
 use App\Http\Controllers\Controller;
 use App\OracleDOCWaveDetails;
 use App\Order;
+use App\OrderBin;
 use App\OrderCommodity;
 use App\Services\LogService;
 use App\Services\OracleDOCOrderHeaderService;
@@ -16,6 +17,7 @@ use App\SortingStation;
 use App\User;
 use App\UserToken;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Validator;
 
@@ -197,10 +199,76 @@ class SortingController extends Controller
 
     public function syncOrder($code)
     {
-        $code = \request("code");
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getQuery()->where('DOC_Order_Header.WaveNo',$code)->get();
         app(OrderService::class)->syncOrderByWMSOrderHeaders($orderHeaders);
         app(OrderCommodityService::class)->syncOrderCommodity($orderHeaders);
+        $this->syncOrderBin($code);
     }
 
+    public function syncOrderBin($code)
+    {
+        $wave = DB::connection("oracle")->selectOne(DB::raw("select * from DOC_WAVE_HEADER where WAVENO = ?"),[$code]);
+        if (!$wave) return;
+        $owner = app("OwnerService")->codeGetOwner($wave->customerid);
+        $obj = [
+            "wms_status" => $this->wms_status($wave),
+            "wms_type"=>$wave->descr,
+            "created_at"=>date("Y-m-d H:i:s"),
+            "wms_created_at"=>$wave->addtime,
+            "updated_at"=>$wave->edittime,
+            "owner_id"=>$owner->id,
+        ];
+        $batch = Batch::query()->where("code",$code)->first();
+        if (!$wave){
+            $obj["code"] = $code;
+            $batch = Batch::query()->create($obj);
+        }else{
+            Batch::query()->where("code",$code)->update($obj);
+        }
+        $order_nos = array_column(DB::connection("oracle")->select(DB::raw("select orderno from DOC_WAVE_DETAILS where WAVENO = ?"),[$code]),"orderno");
+
+        Order::query()->whereIn("code",$order_nos)->update(["batch_id"=>$batch->id]);
+
+        Order::query()->with(["batch","bin"])->whereIn("code",$order_nos)->get()->each(function ($order){
+            if (!$order->bin){
+                $bin = DB::connection("oracle")->selectOne(DB::raw("select seqno from DOC_WAVE_DETAILS where waveno = ? and orderno = ?"),[$order->batch->code,$order->code]);
+                if ($bin){
+                    OrderBin::query()->create([
+                        'order_id' => $order->id,
+                        'number' => $bin->seqno,
+                    ]);
+                }
+            }
+        });
+    }
+
+    /**
+     * @param $wave
+     * @return string
+     */
+    private function wms_status($wave): string
+    {
+        switch ($wave->wavestatus) {
+            case 00:
+                $wms_status = '创建';
+                break;
+            case 40:
+                $wms_status = '部分收货';
+                break;
+            case 90:
+                $wms_status = '取消';
+                break;
+            case 99:
+                $wms_status = '完成';
+                break;
+            case 62:
+                $wms_status = '部分装箱';
+                break;
+            default:
+                $wms_status = (string)$wave->wavestatus;
+        }
+        return $wms_status;
+    }
+
+
 }