protected function taskUpdateProc(PosMemberImportTask $task, $startTime) { $task->executed_at = new \DateTime(); $task->execute_cost_time = floor(microtime(true) - $startTime); $task->status_code = PosMemberImportTask::STATUS_COMPLETED; $task->save(); return $task; }
/** * 匯入完成後,修改任務狀態為等待推送,並且更新總數(總數一開始是使用Excel行數, * 但這數字會有誤差,因為資料可能有重複) * * @param App\Model\Flap\PosMemberImportTask $task * @param integer $start * @param integer $end * @return App\Model\Flap\PosMemberImportTask $task */ protected function updateTaskState($task, $start, $end) { $task->import_cost_time = floor($end - $start); $task->status_code = PosMemberImportTask::STATUS_TOBEPUSHED; $task->total_count = $task->content->count(); $task->save(); return $task; }
public function updatedTask(PosMemberImportTask $task) { $this->task = $task; $this->distinction = PosMemberImportTask::getBDSerNo($this->task->distinction); $this->category = PosMemberImportTask::getCategorySerNo($this->task->category); $this->task->content()->isNotExecuted()->chunk(Import::CHUNK_SIZE, function ($contents) { $contents->each(function ($content) { $content->flags = $content->getActFlags(); $content->category = $this->category; $content->distinction = $this->distinction; $content->save(); }); }); }
protected function createNewTask($totalRows = 0) { $task = new PosMemberImportTask(); $task->user_id = Auth::user()->id; $task->name = Input::get('name'); $task->status_code = PosMemberImportTask::STATUS_IMPORTING; $task->total_count = $totalRows; $task->distinction = Input::get(_Import::OPTIONS_DISTINCTION); $task->category = Input::get(_Import::OPTIONS_CATEGORY); $task->update_flags = Flater::getInflateFlag(Input::get(_Import::OPTIONS_INSERTFLAG)); $task->insert_flags = Flater::getInflateFlag(Input::get(_Import::OPTIONS_UPDATEFLAG)); $task->kind_id = Input::get('kind_id'); $task->memo = Input::get(_Import::OPTIONS_OBMEMO); $task->save(); return $task; }
public function proc() { //======================================================// // 取得上傳暫存檔路徑 $filePath = storage_path("exports/posmember/{$this->getTask()->id}.xls"); if (!file_exists($filePath)) { Log::error("{$filePath} Not exists!"); } // 透過直接指定選擇第一個sheet的方式,繞過 chunk 的 bug $reader = Excel::filter('chunk')->selectSheetsByIndex(0)->load($filePath)->skip(1); $totalRows = $reader->getTotalRowsOfFile(); $this->getTask()->status_code = PosMemberImportTask::STATUS_IMPORTING; $this->getTask()->total_count = $totalRows - 1; $this->getTask()->save(); //======================================================// $kind = $this->getTask()->kind()->first(); $factoryClass = $kind->factory; $adapterClass = $kind->adapter; $this->modelFactory = new $factoryClass(); $this->adapter = new $adapterClass([_Import::OPTIONS_TASK => $this->getTask(), _Import::OPTIONS_DISTINCTION => PosMemberImportTask::getBDSerNo($this->getTask()->distinction), _Import::OPTIONS_CATEGORY => PosMemberImportTask::getCategorySerNo($this->getTask()->category), _Import::OPTIONS_INSERTFLAG => Flater::getFlagString($this->getTask()->insert_flags), _Import::OPTIONS_UPDATEFLAG => Flater::getFlagString($this->getTask()->update_flags)]); $reader->chunk(_Import::CHUNK_SIZE, $this->getChunkCallback()); $this->_removeDuplicate(); $this->_saveTaskStatic(); }
/** * Remove the specified resource from storage. * * @param \App\Model\Flap\PosMemberImportContent * @return \Illuminate\Http\Response */ public function destroy(PosMemberImportTask $task, PosMemberImportContent $content) { Session::flash('success', "項目 <b>{$content->name}</b> 已經移除!"); $content->delete(); $task->updateStat()->save(); return redirect("/flap/pos_member/import_task/{$task->id}"); }
/** * Return json string response * * @return mixed json response */ public function progress(PosMemberImportTask $task) { return response()->json(['id' => $task->id, 'name' => $task->name, 'kind_name' => $task->kind->name, 'status_code' => $task->status_code, 'status_name' => strip_tags($task->getStatusName()), 'total' => $task->total_count, 'imported_count' => $task->content->count(), 'pushed_count' => $task->content()->where(DB::raw(PosMemberImportTask::BEEN_PUSHED_FLAG . '&Status'), '=', PosMemberImportTask::BEEN_PUSHED_FLAG)->count(), 'is_acting' => in_array($task->status_code, [PosMemberImportTask::STATUS_IMPORTING, PosMemberImportTask::STATUS_PUSHING])]); }
/** * Register any other events for your application. * * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ public function boot(DispatcherContract $events) { parent::boot($events); PosMemberImportContent::observe(new PosMemberImportContentObserver()); PosMemberImportTask::observe(new PosMemberImportTaskObserver()); }
protected function getPusher(PosMemberImportTask $task) { $importKind = $task->kind()->first(); $pushClass = $importKind->pusher; return with(new $pushClass()); }
public function __construct(array $attributes = []) { $ydName = Carbon::now()->format('Ym'); $this->setRawAttributes(array_merge($this->attributes, ['name' => $ydName . '_' . (PosMemberImportTask::where('name', 'LIKE', "{$ydName}%")->count() + 1)]), true); parent::__construct($attributes); }
protected function getContens(PosMemberImportTask $task, $isExist) { return $task->content()->where('is_exist', '=', $isExist); }
public function updated(PosMemberImportTask $task) { $className = $task->kind()->first()->observer; return with(new $className())->updatedTask($task); }
protected function getInflateFlag($nameIndex) { $flagString = array_get($this->getOptions(), $nameIndex); return PosMemberImportTask::getInflateFlag($flagString); }