diff --git a/app/Console/Commands/ShjBatchLogCommand.php b/app/Console/Commands/ShjBatchLogCommand.php deleted file mode 100644 index b459cf5..0000000 --- a/app/Console/Commands/ShjBatchLogCommand.php +++ /dev/null @@ -1,238 +0,0 @@ -info('SHJ-8 バッチ処理ログ登録を開始します。'); - - // 引数取得 - $deviceId = (int) $this->argument('device_id'); - $processName = $this->argument('process_name'); - $jobName = $this->argument('job_name'); - $status = $this->argument('status'); - $createdDate = $this->argument('created_date'); - $updatedDate = $this->argument('updated_date'); - - Log::info('SHJ-8 バッチ処理ログ登録開始', [ - 'start_time' => $startTime, - 'device_id' => $deviceId, - 'process_name' => $processName, - 'job_name' => $jobName, - 'status' => $status, - 'created_date' => $createdDate, - 'updated_date' => $updatedDate - ]); - - // 【処理1】入力パラメーターをチェックする - $paramCheckResult = $this->validateParameters($deviceId, $processName, $jobName, $status, $createdDate, $updatedDate); - if (!$paramCheckResult['valid']) { - $this->error('パラメータエラー: ' . $paramCheckResult['message']); - - // 仕様書【判断1】パラメーターNG時の結果出力 - $this->line('処理結果: 1'); // 1 = 異常終了 - $this->line('異常情報: ' . $paramCheckResult['message']); - - return self::FAILURE; - } - - // 【処理2】統一BatchLogを使用してログ登録 - $batchLog = BatchLog::createBatchLog( - $processName, // 実際のプロセス名を使用 - $status, - [ - 'device_id' => $deviceId, - 'job_name' => $jobName, - 'status_comment' => BatchLog::getSuccessComment(), - 'input_created_date' => $createdDate, - 'input_updated_date' => $updatedDate, - 'shj8_params' => [ - 'device_id' => $deviceId, - 'process_name' => $processName, - 'job_name' => $jobName, - 'status' => $status, - 'created_date' => $createdDate, - 'updated_date' => $updatedDate - ] - ], - $jobName . ':' . BatchLog::getSuccessComment() - ); - - $endTime = now(); - $this->info('SHJ-8 バッチ処理ログ登録が正常に完了しました。'); - $this->info("処理時間: {$startTime->diffInSeconds($endTime)}秒"); - - Log::info('SHJ-8 バッチ処理ログ登録完了', [ - 'end_time' => $endTime, - 'duration_seconds' => $startTime->diffInSeconds($endTime), - 'batch_log_id' => $batchLog->id - ]); - - // 仕様書【処理3】正常終了時の結果出力 - $this->line('処理結果: 0'); // 0 = 正常終了 - $this->line('異常情報: '); // 正常時は空文字 - - return self::SUCCESS; - - } catch (\Exception $e) { - $this->error('SHJ-8 バッチ処理ログ登録で予期しないエラーが発生しました: ' . $e->getMessage()); - Log::error('SHJ-8 バッチ処理ログ登録例外エラー', [ - 'exception' => $e->getMessage(), - 'trace' => $e->getTraceAsString() - ]); - - // 仕様書【処理3】異常終了時の結果出力 - $this->line('処理結果: 1'); // 1 = 異常終了 - $this->line('異常情報: エラー: ' . $e->getMessage()); - - return self::FAILURE; - } - } - - /** - * 【処理1】パラメータの妥当性を検証 - * - * 仕様書に基づく検証内容: - * - デバイスID: 必須、数値、device表に存在するか - * - プロセス名: 「プロセス名」「ジョブ名」いずれか必須 - * - ジョブ名: 「プロセス名」「ジョブ名」いずれか必須 - * - ステータス: 必須 - * - 登録日時: 必須、yyyy/mm/dd形式 - * - 更新日時: 必須、yyyy/mm/dd形式 - * - * @param int $deviceId デバイスID - * @param string $processName プロセス名 - * @param string $jobName ジョブ名 - * @param string $status ステータス - * @param string $createdDate 登録日時 - * @param string $updatedDate 更新日時 - * @return array 検証結果 ['valid' => bool, 'message' => string] - */ - private function validateParameters(int $deviceId, string $processName, string $jobName, string $status, string $createdDate, string $updatedDate): array - { - // デバイスID存在チェック - if ($deviceId <= 0) { - return [ - 'valid' => false, - 'message' => 'パラメーターNG: デバイスIDは正の整数である必要があります' - ]; - } - - if (!Device::exists($deviceId)) { - return [ - 'valid' => false, - 'message' => "パラメーターNG: デバイスID {$deviceId} が存在しません" - ]; - } - - // プロセス名とジョブ名のいずれか必須チェック - if (empty($processName) && empty($jobName)) { - return [ - 'valid' => false, - 'message' => 'パラメーターNG: プロセス名またはジョブ名のいずれかは必須です' - ]; - } - - // ステータス必須チェック - if (empty($status)) { - return [ - 'valid' => false, - 'message' => 'パラメーターNG: ステータスは必須です' - ]; - } - - // 日付形式チェック - if (!$this->isValidDateFormat($createdDate)) { - return [ - 'valid' => false, - 'message' => 'パラメーターNG: 登録日時の形式が正しくありません(yyyy/mm/dd)' - ]; - } - - if (!$this->isValidDateFormat($updatedDate)) { - return [ - 'valid' => false, - 'message' => 'パラメーターNG: 更新日時の形式が正しくありません(yyyy/mm/dd)' - ]; - } - - return [ - 'valid' => true, - 'message' => 'パラメーターチェックOK' - ]; - } - - /** - * 日付形式の検証 - * - * @param string $date 日付文字列 - * @return bool 有効な日付形式かどうか - */ - private function isValidDateFormat(string $date): bool - { - // yyyy/mm/dd形式の正規表現チェック - if (!preg_match('/^\d{4}\/\d{2}\/\d{2}$/', $date)) { - return false; - } - - // 実際の日付として有効かチェック - $dateParts = explode('/', $date); - return checkdate((int)$dateParts[1], (int)$dateParts[2], (int)$dateParts[0]); - } -} \ No newline at end of file