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); } public function test() { dd(config('app.env')); $url = config('api_logistic.collectUpload.ZTO.prod.url'); $xAppKey = config('api_logistic.collectUpload.ZTO.prod.x-appKey'); $appSecret = config('api_logistic.collectUpload.ZTO.prod.appSecret'); $appId = config('api_logistic.collectUpload.ZTO.prod.appId'); dd(env('APP_ENV')); //中通接口请求body $collectUploadDTOS = [[ 'billCode' => "75811463670235", 'weight' => 0, 'appId' => $appId, 'importDate' => now()->toDateTimeString(), ]]; $body = json_encode([ 'collectUploadDTOS' => $collectUploadDTOS, ], JSON_UNESCAPED_UNICODE); $data_digest = base64_encode(md5($body . $appSecret, TRUE)); $headers = [ 'Content-Type' => 'application/json; charset=UTF-8', 'x-companyid' => $xAppKey, 'x-datadigest' => $data_digest, ]; dd(Http::withHeaders($headers)->withBody($body, 'application/json')->post($url)->body()); $stores = Store::query()->whereIn("id",[490692,492252,492405,493259,491290,491758,492252,492989,493522, 496079,490702,491173,491780,493522,488622,490891,491020,491173,493308,489448,491020,491184,493573,493977, 496105,492086,493714,493977,496118,492593,492592,492591,492590,493011,493979,490721,492192,493429,493978, 496106,490721,491460,493165,496114,489319,489436,490703,491190,493957,496115,496114,489436,491147, 491695,492395,490711,491461,491695,492079,494533,496099,496096,490711,491458,491797,492244, 492422,496098,496097,496100,491458,491798,493572,493752,490443,491457,492394,493531,493572,491687, 492394,492968,493782,490431,490994,493782,488570,489103,490616,490994,493966,489862,490616, 490629,495645,490629,491455,488793])->get(); $this->dispatch(new StoreCreateInstantBill($stores)); dd(1); /** @var StationTaskMaterialBox $stationTaskMaterialBox */ $stationTaskMaterialBox = app("StorageService")->createWarehousingTask($stationService->getStation_byType('立库')["id"],$station->materialBox->id); app("CacheShelfService")->lightUp($station->code,'3','0',['title'=>"等待机器人拿走,请勿操作"]); Cache::forever("CACHE_SHELF_OCCUPANCY_{$station->id}",true); dd($ForeignHaiRoboticsService->putBinToStore_fromCacheShelf($stationTaskMaterialBox, $station)); $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([ '75601803541125' ]); } public function init_在途异常() { $logistic_numbers = OrderPackage::query() ->select('logistic_number') ->where('exception_status', 5) ->where('created_at', '>=', now()->subDays(20)->toDateTimeString()) ->pluck('logistic_number'); /** @var OrderPackageReceivedSyncService $service */ $service = app('OrderPackageReceivedSyncService'); $service->syncLogisticRoute(false, $logistic_numbers); // $logistic_numbers = OrderPackage::query() // ->select(['logistic_number', 'order_id', 'id']) // ->whereIn('order_id', function ($query) { // $query->from('orders')->selectRaw('id')->whereIn('logistic_id', function ($builder) { // $builder->from('logistics')->selectRaw('id')->where('type', '=', '快递')->whereNotIn('belong_company', ['顺丰', '中通', '韵达', '圆通', '京东']); // }); // }) // ->where('exception_status', 5) // ->where('created_at', '>=', now()->subDays(20)->toDateTimeString()) // ->pluck('logistic_number'); // $service->syncLogisticRouteByAliJiSu($logistic_numbers); } public function store() { ini_set('max_execution_time', 0); ini_set('memory_limit', '1024M'); // $now = Carbon::now(); // $startDate = $this->getDate(); $startDate = '2021-09-25 13:23:14'; $diffDay = 1; // 天数 for($i = 0;$i<=$diffDay;$i++){ $endDate = Carbon::parse($startDate)->addDays(1)->toDateTimeString(); $doc_asn_headers = $this->getDocAsnHeader($startDate,$endDate); // if (count($doc_asn_headers)>0){ // $this->syncStores($doc_asn_headers); // $this->syncDate($endDate); // } dump($startDate,$endDate); $startDate = $endDate; } $this->clearCache(); // ValueStore::query()->updateOrCreate([ // 'name' => 'last_asn_sync_task_end_at', // ], [ // 'name' => 'last_asn_sync_task_end_at', // 'value' => $now, // ]); } public function getDocAsnHeader($startDate,$endDate) { return OracleDOCASNHeader::query() ->with(['asnType', 'asnStatus']) ->select('asnno','asnstatus','asntype','addtime','edittime','customerid','notes','warehouseid','asnreference3','asnreference2') ->where('EditTime', '>=', $startDate) ->where('EditTime', '<=', $endDate) ->whereColumn('EditTime', '<>', 'addTime') ->orderByDesc('EditTime') ->get(); } public function getDate(){ return ValueStore::query()->where('name','asn_last_updated_sync_at')->value('value'); } public function syncStores($doc_asn_headers){ $service = new StoreService(); $service->createStore($doc_asn_headers,"update"); $service->updateStore($doc_asn_headers); $service->createStoreRejected($doc_asn_headers); unset($doc_asn_headers); } public function syncDate($date) { // 同步更新时间 ValueStore::query()->updateOrCreate([ 'name' => 'asn_last_updated_sync_at', ], [ 'name' => 'asn_last_updated_sync_at', 'value' => $date, ]); } public function clearCache() { $service = new StoreService(); $update_set = config('sync.asn_sync.cache_prefix.update_set'); $update_keys = config('sync.asn_sync.cache_prefix.update_keys'); $service->deleteCacheKey($update_set, $update_keys); // 清空保存 ans 号的栈 // 清除 更新时间 开始 结束 } public function updateStoreItem() { ini_set('max_execution_time', 0); ini_set('memory_limit', '1024M'); $storeIds = Store::query() ->where('updated_at', '>=', '2021-09-25 13:21:26') ->whereColumn('updated_at', '<>', 'created_at') ->pluck('id'); $storeItemMaxIds = StoreItem::query() ->selectRaw('max(id) as max_id') ->whereIn('store_id', $storeIds) ->groupBy(['store_id', 'asn_line_code']) ->get(); // dd($storeItemMaxIds->count()); $storeItems = StoreItem::query() ->whereIn('store_id', $storeIds) ->whereNotIn('id', $storeItemMaxIds) ->delete(); } public function init_SettlementBillReportTask() { $this->dispatch(new SettlementBillReportJob('2021-08-01',[])); } public function test2(){ $source_file ="E:\OneDrive\桌面\工作目录\文件库\\5.jpg"; $img = ImageCreateFromJpeg($source_file); imagecolortransparent($img);//将某个颜色设置成透明色 imagecolorstotal($img); header('Content-type:image/jpeg'); imagejpeg($img); //dd($this->run('E:\OneDrive\桌面\工作目录\文件库\5.jpg', 'E:\OneDrive\桌面\工作目录\文件库\6.jpg')); } const FILE_NOT_FOUND = '-1'; const FILE_EXTNAME_ILLEGAL = '-2'; public function run($src1, $src2) { if(!is_file($src1) || !is_file($src2)) exit(self::FILE_NOT_FOUND); $hash1 = $this->getHashValue($src1); $hash2 = $this->getHashValue($src2); if(strlen($hash1) !== strlen($hash2)) return false; $count = 0; $len = strlen($hash1); for($i = 0; $i < $len; $i++) if($hash1[$i] !== $hash2[$i]){ $count++; } dd($count); return $count <= 10 ? true : false; } public function getImage($file) { $extname = pathinfo($file, PATHINFO_EXTENSION); if(!in_array($extname, ['jpg','jpeg','png','gif'])) exit(self::FILE_EXTNAME_ILLEGAL); $img = call_user_func('imagecreatefrom'. ( $extname == 'jpg' ? 'jpeg' : $extname ) , $file); return $img; } public function getHashValue($file) { $w = 32; $h = 32; $img = imagecreatetruecolor($w, $h); list($src_w, $src_h) = getimagesize($file); $src = $this->getImage($file); imagecopyresampled($img, $src, 0, 0, 0, 0, $w, $h, $src_w, $src_h); imagedestroy($src); $total = 0; $array = array(); for( $y = 0; $y < $h; $y++) { for ($x = 0; $x < $w; $x++) { $rgb = imagecolorat($img, $x, $y); $gray = $rgb & 0xFF; /*dump([ ($rgb >> 8) & 0xFF, ($rgb >> 16) & 0xFF, $rgb & 0xFF, ]);*/ if(!isset($array[$y])) $array[$y] = array(); $array[$y][$x] = $gray; $total += $gray; } } imagedestroy($img); $average = intval($total / ($w * $h * 2)); $hash = ''; for($y = 0; $y < $h; $y++) { for($x = 0; $x < $w; $x++) { $hash .= ($array[$y][$x] >= $average) ? '1' : '0'; } } dump($hash); return $hash; } public function sortTransferStatus() { $orderPackage = OrderPackage::query()->where('logistic_number','75601831068018')->first(); app('OrderPackageService')->sortOrderPackageTransferStatus($orderPackage); dd($orderPackage); } public function clear_work_space() { \App\LaborApply::query()->truncate(); LaborCompanyDispatch::query()->truncate(); \App\LaborCompanyDispatchDetail::query()->truncate(); } }