|
|
@@ -8,6 +8,7 @@ use App\Exceptions\ErrorException;
|
|
|
use App\Jobs\BatchTaskJob;
|
|
|
use App\OracleActAllocationDetails;
|
|
|
use App\Order;
|
|
|
+use App\OrderBin;
|
|
|
use App\OrderCommodity;
|
|
|
use App\Owner;
|
|
|
use App\Station;
|
|
|
@@ -145,4 +146,42 @@ class BatchService
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修复波次
|
|
|
+ */
|
|
|
+ public function repairBatch(string $code):bool
|
|
|
+ {
|
|
|
+ if (!$code)return false;
|
|
|
+ $wave = DB::connection("oracle")->selectOne(DB::raw("select * from DOC_WAVE_HEADER where WAVENO = ?"),[$code]);
|
|
|
+ if (!$wave)return false;
|
|
|
+ $owner = app("OwnerService")->codeGetOwner($wave->customerid);
|
|
|
+ $obj = [
|
|
|
+ "wms_status" => Batch::WMS_STATUS[$wave->wavestatus] ?? $wave->wavestatus,
|
|
|
+ "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,
|
|
|
+ ];
|
|
|
+ $wave = Batch::query()->where("code",$code)->first();
|
|
|
+ if (!$wave) $wave = Batch::query()->create($obj);
|
|
|
+ else Batch::query()->where("code",$code)->update($obj);
|
|
|
+ $orderNos = array_column(DB::connection("oracle")->select(DB::raw("select orderno from DOC_WAVE_DETAILS where WAVENO = ?"),[$code]),"orderno");
|
|
|
+ $count = Order::query()->whereIn("code",$orderNos)->count();
|
|
|
+ if (count($orderNos)!=$count)app("OrderService")->syncOrderByCodes($orderNos);
|
|
|
+ Order::query()->whereIn("code",$orderNos)->update(["batch_id"=>$wave->id]);
|
|
|
+ $orders = Order::query()->with(["batch","bin"])->whereIn("code",$orderNos)->get();
|
|
|
+ if (count($orderNos)!=count($orders))return false;
|
|
|
+ foreach ($orders as $order){
|
|
|
+ if ($order->bin)continue;
|
|
|
+ $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,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|