data["active_test"] = "active"; } public function method(Request $request, $method) { try { return call_user_func([$this, $method], $request); }catch (\BadMethodCallException $e){ dd("方法不存在"); } } /** * @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; } public function assignBatch() { $code = \request("code"); $batches = Batch::query()->where("code",$code)->get(); if (!$batches->count()){ $wave = DB::connection("oracle")->selectOne(DB::raw("select * from DOC_WAVE_HEADER where WAVENO = ?"),[$code]); if (!$wave){ dd("FLUX无波次"); } $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, ]; $wave = Batch::query()->where("code",$code)->first(); if (!$wave){ $obj["code"] = $code; $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"); Order::query()->whereIn("code",$ordernos)->update([ "batch_id"=>$wave->id ]); Order::query()->with(["batch","bin"])->whereIn("code",$ordernos)->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, ]); } } }); $batches = Batch::query()->where("code",$code)->get(); } app("BatchService")->assignTasks($batches); } /** * 检查和处理揽收 * * @param OrderPackage|\stdClass $package */ public function checkingAndProcess(OrderPackage $package, int $lineNo) { //校验快递商 订单状态 复核标记 揽收标记 $package->loadMissing("order.logistic"); if ($package->collecting_status == '1' || !$package->logistic_number)dd(1); if (strpos($package->order->logistic->code ?? '','ZTO') === false)dd(2); $statusMapping = array_flip(Order::STATUS); //if (($statusMapping[$package->order->wms_status] ?? 99) > 63)dd(3); /** @var OrderPackageService $orderPackageService */ $orderPackageService = app('OrderPackageService'); $result = $orderPackageService->collectUpload([$package->logistic_number]); dump($result); if (!$result["success"]){ dd("自动揽收失败",["message"=>$result["message"],"param"=>$package->logistic_number]); } $result = app("OrderService")->allocation($package->order->code,$lineNo); dump($result); if (mb_substr($result,0,3)=='000'){ if (OrderPackage::query()->where("id",$package->id) ->where("collecting_status",'0')->update(["collecting_status"=>'1'])!=1) dd("自动揽收异常",["message"=>"未能成功修改揽收标记","param"=>$package->toArray()]); }else dd("自动揽收失败",["message"=>"分配失败:{$result}","param"=>$package->order->code." : {$lineNo}"]); } public function test() { $package = OrderPackage::query()->find(17535630); $line = 4; dd($this->checkingAndProcess($package,$line)); $a = memory_get_usage(); $tmp = str_repeat('http://blog.huachen.me/', 4000); $b = memory_get_usage(); dump($b-$a); dd(Notification::send(User::query()->where("name","zhouzhendong")->get(), new RoutineNotification(SeeLog::query()->first()->toArray()))); $user = Auth::user(); $remark = "zengjunlj"; $ownerName = 'zengjunlj' ?? ''; $clientCode = 'zengjunljljlj' ?? ''; $msg = $user["name"]."建立了新工单
".$ownerName.":".$clientCode."
".$remark; NotificationService::SingleRegister($msg,$clientCode,"订单管理-问题件"); dd(1); $seeLog = SeeLog::query()->find(9); Notification::send(Auth::user(),new RoutineNotification($seeLog->toArray())); dd(1); Broadcast::channel('notification', function ($user, $id) { return (int) $user->id === (int) $id; }); dd(1); Notification::send(Auth::user(),new RoutineNotification($seeLog->toArray())); dd(1); $username = config('database.connections.oracle.username'); $password = config('database.connections.oracle.password'); $host = config('database.connections.oracle.host'); $service_name = config('database.connections.oracle.service_name'); $conn = oci_connect($username, $password, $host . '/' . $service_name,"utf8"); $sql = <<selectOne(DB::raw("select * from DOC_ORDER_HEADER where orderno = ?"),[$no]); dd($db->select($sql,[ ])); $db->select("CALL SPSO_HardAllocation_Process(?,'Allocation','By OrderNO',null,?,'0',null,'zhouzhendong',@code)",[ $order->warehouseid,$no ]); //SPSO_HardAllocation_Process dd($db->selectOne("select @code")); $date = "2021-09-14 15:47:00"; dispatch(new TestJob("1"))->delay(Carbon::parse($date)); dispatch(new TestJob("2"))->delay(Carbon::parse($date)); dispatch(new TestJob("3"))->delay(Carbon::parse($date)); dispatch(new TestJob("4"))->delay(Carbon::parse($date)); dispatch(new TestJob("5"))->delay(Carbon::parse($date)); dispatch(new TestJob("6"))->delay(Carbon::parse($date)); dispatch(new TestJob("7"))->delay(Carbon::parse($date)); dispatch(new TestJob("8"))->delay(Carbon::parse($date)); dispatch(new TestJob("9"))->delay(Carbon::parse($date)); dispatch(new TestJob("10"))->delay(Carbon::parse($date)); dd(1); Station::query()->where("station_type_id", 5)->update(["status" => 1]); Cache::forget("CACHE_SHELF_AVAILABLE"); $station = ["HAIB1-01-01", "HAIB1-02-01"]; $material = ["IDE0001824", "IDE0001740", "IDE0002710"]; Station::query()->whereIn("code", $station)->update(["status" => 0]); $stations = Station::query()->whereIn("code", $station)->get(); $materials = MaterialBox::query()->whereIn("code", $material)->get(); $dateTime = date("Y-m-d H:i:s"); $task1 = StationTaskMaterialBox::query()->create([ 'station_id' => $stations[0]->id, 'material_box_id' => $materials[0]->id, 'station_task_batch_id' => 1, 'status' => '待处理' ]); $task2 = StationTaskMaterialBox::query()->create([ 'station_id' => $stations[1]->id, 'material_box_id' => $materials[1]->id, 'station_task_batch_id' => 1, 'status' => '待处理' ]); $task3 = StationTaskMaterialBox::query()->create([ 'station_id' => 6, 'material_box_id' => $materials[2]->id, 'station_task_batch_id' => 1, 'status' => '待处理' ]); TaskTransaction::query()->insert([[ "doc_code" => "test", "bar_code" => "test", "to_station_id" => $stations[0]->id, "material_box_id" => $materials[0]->id, "task_id" => $task1->id, "commodity_id" => 505012,//XUNI03 "amount" => 1, "type" => "出库", "status" => 0, "mark" => 2, "bin_number" => 1, "created_at" => $dateTime, "updated_at" => $dateTime, ], [ "doc_code" => "test", "bar_code" => "test", "to_station_id" => $stations[1]->id, "material_box_id" => $materials[1]->id, "task_id" => $task2->id, "commodity_id" => 505012,//XUNI03 "amount" => 1, "type" => "出库", "status" => 0, "mark" => 2, "bin_number" => 1, "created_at" => $dateTime, "updated_at" => $dateTime, ], [ "doc_code" => "test", "bar_code" => "test", "to_station_id" => 6, "material_box_id" => $materials[2]->id, "task_id" => $task3->id, "commodity_id" => 505012,//XUNI03 "amount" => 1, "type" => "出库", "status" => 3, "mark" => 2, "bin_number" => 1, "created_at" => $dateTime, "updated_at" => $dateTime, ]]); $foreignHaiRoboticsService = new ForeignHaiRoboticsService(); $toLocation = collect($station); $taskMaterialBoxes = collect([$task1, $task2]); $foreignHaiRoboticsService-> fetchGroup_multiLocation($toLocation, $taskMaterialBoxes, '', '立架出至缓存架', 20, false); foreach ($toLocation as $index => $value) { app("CacheShelfService")->lightUp($value, '3', '0', ["title" => "机器人取箱中,禁止操作"]); Cache::forever("CACHE_SHELF_OCCUPANCY_{$stations[$index]->id}", true); } app("StationService")->locationOccupyMulti($toLocation->toArray()); } public function update_order_packages_is_manual_update() { $descriptions = Log::query() ->select('description') ->whereBetween('created_at', ['2021-08-31 10:30:00', '2021-08-31 10:35:00']) ->where('class', 'like', 'https://was.baoshi56.com/package/logistic/batchUpdate%')->pluck('description'); foreach ($descriptions as $description) { $description = substr($description, 9); $description = \Illuminate\Support\Str::before($description, "}"); $obj = json_decode($description . '}', true); OrderPackage::query() ->whereIn('logistic_number', $obj['logistic_numbers']) ->update([ 'status' => '无', 'is_manual_update' => false, ]); } } public function testUpdateInv() { ini_set('max_execution_time', 0); ini_set('memory_limit', '4096M'); $sql = <<=TO_DATE(?,'yyyy-mm-dd hh24:mi:ss') and OPENTIME<=TO_DATE(?,'yyyy-mm-dd hh24:mi:ss') sql; $CUSTOMERID = 'JIANSHANG'; $FMLOCATION = 'STAGEWH02'; $OPENWHO = 'WCS'; $TASKPROCESS = '00'; $DOCTYPE = 'ASN'; $TASKTYPE = 'PA'; $LOTATT05 = 'MJ-CP'; $LOTATT08 = 'ZP'; $PLANTOID = '*'; $traceid = 'JIANSHANG03'; $start = '2021-09-02 23:59:59'; $end = '2021-09-03 11:10:00'; $res = DB::connection("oracle")->select(DB::raw($sql), [$CUSTOMERID, $FMLOCATION, $OPENWHO, $TASKPROCESS, $DOCTYPE, $TASKTYPE, $LOTATT05, $LOTATT08, $PLANTOID, $start, $end]); $resItems = array_chunk($res, 200); foreach ($resItems as $res) { DB::connection("oracle")->beginTransaction(); try { foreach ($res as $re) { DB::connection("oracle")->table('INV_LOT_LOC_ID') ->where([ 'LOTNUM' => $re->fmlotnum, 'LOCATIONID' => $re->fmlocation, 'CUSTOMERID' => $re->customerid, 'sku' => $re->sku, 'TRACEID' => '*', ]) ->update([ 'TRACEID' => $traceid, 'EDITWHO' => 'WCS_', ]); if ($re->fmlocation != $re->plantolocation) { DB::connection("oracle")->table('INV_LOT_LOC_ID') ->where([ 'LOTNUM' => $re->fmlotnum, 'LOCATIONID' => $re->plantolocation, 'CUSTOMERID' => $re->customerid, 'sku' => $re->sku, 'TRACEID' => '*', ]) ->update([ 'TRACEID' => $traceid, 'EDITWHO' => 'WCS_', ]); } DB::connection("oracle")->commit(); } dd(true); } catch (\Exception $e) { DB::connection("oracle")->rollBack(); dd($e->getMessage()); } } } /** * 重置15天内的数据 */ public function order_packages_init() { OrderPackage::query() ->whereBetween('created_at', [now()->subDays(15), now()]) ->update([ 'is_delay_deliver' => 0, 'sync_routes_flag' => 0, 'status' => 1, 'exception_status' => 0, ]); OrderPackage::query() ->whereBetween('created_at', [now()->subDays(15), now()]) ->whereNotNull('received_at') ->update([ 'status' => 7, ]); } public function syncOrderPackage(){ ini_set('memory_limit','500M'); ini_set('max_execution_time', 0); $orderPackingSummary = OracleDocOrderPackingSummary::query() ->where('editTime','>=','2021-09-11 12:00:00') ->where('editTime','<=','2021-09-12 12:40:00') ->get(); $orderPackingSummary_chunk = $orderPackingSummary->chunk(200); foreach ($orderPackingSummary_chunk as $orderPackingSummarys) { foreach ($orderPackingSummarys as $orderPackingSummary) { $orderPackage = OrderPackage::query()->where('logistic_number',$orderPackingSummary->traceid)->first(); $orderPackage->update([ 'uploaded_to_wms'=> true, 'weight'=>$orderPackingSummary->grossweight, 'length'=>$orderPackingSummary->length, 'width'=>$orderPackingSummary->width, 'height'=>$orderPackingSummary->height, 'weighed_at'=>$orderPackingSummary->edittime ]); dispatch(new WeightUpdateInstantBill($orderPackage)); } } return ['success' => true]; } public function collectUpload() { /** @var OrderPackageService $service */ $service = app('OrderPackageService'); return $service->collectUpload([ '75810646867541', '75810646197516' ]); } public function teset12313(){ dd(route("discharge.storeApi")); } public function init_SettlementBillReportTask() { $this->dispatch(new SettlementBillReportJob('2021-08-01',[])); } }