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() { $st = '[{"taskMode":1,"bins":[{"taskCode":"102876_1632099648.1379","binCode":"IDE0000686","fromLocCode":"BIN-IN1","toLocCode":""}],"groupCode":"_1632099648.1379","priority":10,"sequenceFlag":1}]'; $st = json_decode($st,true); $st[0]["sequenceFlag"] = 0; dd(json_encode($st)); $order = Order::query()->find(4367620); $s = new OrderService(); $s->createInstantBill($order); } 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 calculationArrivedManNum() { $this->dispatch(new CalculationArrivedManNumJob(\Illuminate\Support\Carbon::parse(now()->toDateString()))); } }