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(Request $request) { dd(User::query()->first()); $a1 = new LogisticZopService(); dd($a1->query("75817473355088")); ini_set('max_execution_time',2500); $packages = OrderPackage::query()->select("logistic_number")->where("collecting_status",1) ->where("updated_at",">=","2021-10-18 22:10:00") ->where("updated_at","<=","2021-10-19 12:00:00") ->get(); $a1 = new LogisticZopService(); $err = []; $arr = []; foreach ($packages as $package){ $r = $a1->query($package->logistic_number); if (!$r->status)$err[] = $package->logistic_number; else{ $sign = 0; $c = []; foreach ($r->result as $item){ if (mb_strpos($item->desc,"宝时物流")!==false )$sign++; $c[] = $item->desc; } dump($c); if ($sign>1)$arr[] = $package->logistic_number; } } dd($arr,$err); $b = new StorageTypeController(); $name = "test"; $tag = "tag_name"; $attributes = new \App\Http\Controllers\api\thirdPart\syrius\beans\StorageTypeAttribute(); $attributes->icon = "http:///was.baoshi56.com/test.jpg"; $attributes->quantity = 5; $attributes->length = 10.1; $attributes->weight = 10.1; $attributes->width = 10.1; $attributes->high = 10.1; $attributes->toolType = 0; $attributes->maxLoad = 55.6; $attributes->layers = 2; $attributes->numOfLayerCell = 20; $cell = new StorageTypeCell(); $cell->name = "cell"; $cell->color = "red"; $cell->disassemble = false; $cell->capacity = 50; $cell->length = 30; $cell->width = 30; $cell->high = 30; $relation = new StorageTypeRelation(); $relation->storageTypeId = 1; $relation->require = true; $relation->num = 500; //dd($b->getStorageType(1)->body()); $c = $b->createStorageType($name,$tag,$attributes->get(),[(array)$cell->get()],[(array)$relation->get()]); dd($c->body()); $sql = <<select($sql,["SO211015008847"]) as $index=>$item){ $task = new Task(); $task->id = $item->orderno; $task->batchId = $item->waveno; $task->warehouseId = $item->warehouseid; $task->attributes = [ "customer" => $item->customerid, ]; $task->items = []; $task->storages = [["type"=>"test"]]; $taskList[] = $task; $map[$item->orderno] = $index; $codes .= "'".$item->orderno."',"; } if (count($taskList)<0)dd(1); foreach ($db->select($sql1."(".rtrim($codes,",").")") as $item){ $taskItem = new TaskItem(); $taskItem->name = $item->descr_c; $taskItem->barcode = $item->alternate_sku1; $taskItem->quantity = $item->qty_each; $taskItem->binLocations = [ $item->location, ]; $taskItem->attributes = [ "orderLineNo" => $item->orderlineno, "skuLineNo" => $item->skulineno, "sku" => $item->sku, "lotNum" => $item->lotnum, "logisticNumber"=>$item->picktotraceid, ]; $taskList[$map[$item->orderno]]->items[] = (array)$taskItem->get(); } $a = new \App\Http\Controllers\api\thirdPart\syrius\producer\OrderController(); $a->createOrder($taskList[0]->get()); } 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-09-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(); } public function testChange() { $last_start_key = config('sync.order_sync.cache_prefix.last_start_at'); $last_end_key = config('sync.order_sync.cache_prefix.last_end_at'); Cache::put($last_start_key,Carbon::make('2021-10-12 06:23:37')); Cache::put($last_end_key,Carbon::make('2021-10-12 06:23:38')); ValueStore::query()->where('name','order_last_created_sync_at')->update(['value' => '2021-10-12 06:23:37']); ValueStore::query()->where('name','order_last_updated_sync_at')->update(['value' => '2021-10-12 06:23:37']); ValueStore::query()->where('name','last_order_sync_task_start_at')->update(['value' => '2021-10-12 06:23:37']); ValueStore::query()->where('name','last_order_sync_task_end_at')->update(['value' => '2021-10-12 06:23:38']); } public function syncOrder() { $code = \request("code"); $service = new OracleDOCOrderHeaderService(); $orderService = new OrderService(); $orderHeaders = $service->getQuery()->where('DOC_Order_Header.WaveNo',$code)->get(); $orderService->syncOrderByWMSOrderHeaders($orderHeaders); app("OrderCommodityService")->syncOrderCommodity($orderHeaders); dd('同步完成'); } public function test_sddgdfg() { /** @var OwnerStoreOutFeeReportService $service */ $service = app('OwnerStoreOutFeeReportService'); $service->recordReport(null, [2]); } }