From 8dc21bdda847f4389e6fca1c3dbc2bf671abcc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 18 Mar 2026 20:14:19 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20[bending]=20LOT=20=EC=B1=84=EB=B2=88?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=9D=BC=EB=A0=A8=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - generateLotNumber() 시그니처 변경: lotBase → prod/spec/length/date - 일련번호(-001) 로직 제거: 같은 날 같은 조합은 동일 LOT - generate-lot API 응답에서 lot_base/date_code 필드 제거 - 미사용 Order 모델 import 제거 --- .../Controllers/Api/V1/BendingController.php | 8 ++------ app/Services/BendingCodeService.php | 20 +++++-------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/Api/V1/BendingController.php b/app/Http/Controllers/Api/V1/BendingController.php index 9bbc3775..7f03fa49 100644 --- a/app/Http/Controllers/Api/V1/BendingController.php +++ b/app/Http/Controllers/Api/V1/BendingController.php @@ -89,7 +89,7 @@ public function materialLots(Request $request): JsonResponse } /** - * LOT 번호 생성 (프리뷰 + 일련번호 확정) + * LOT 번호 생성 (일련번호 없음 — 같은 날 같은 조합은 동일 LOT) */ public function generateLotNumber(Request $request): JsonResponse { @@ -103,15 +103,11 @@ public function generateLotNumber(Request $request): JsonResponse return ['error' => 'MISSING_PARAMS', 'code' => 400, 'message' => 'prod_code, spec_code, length_code가 필요합니다.']; } - $dateCode = BendingCodeService::generateDateCode($regDate); - $lotBase = "{$prodCode}{$specCode}{$dateCode}-{$lengthCode}"; - $lotNumber = $this->service->generateLotNumber($lotBase); + $lotNumber = $this->service->generateLotNumber($prodCode, $specCode, $lengthCode, $regDate); $material = BendingCodeService::getMaterial($prodCode, $specCode); return [ - 'lot_base' => $lotBase, 'lot_number' => $lotNumber, - 'date_code' => $dateCode, 'material' => $material, ]; }, __('message.fetched')); diff --git a/app/Services/BendingCodeService.php b/app/Services/BendingCodeService.php index aa8e9a55..f360b449 100644 --- a/app/Services/BendingCodeService.php +++ b/app/Services/BendingCodeService.php @@ -2,7 +2,6 @@ namespace App\Services; -use App\Models\Orders\Order; use App\Models\Production\BendingItemMapping; class BendingCodeService extends Service @@ -154,24 +153,15 @@ public function resolveItem(string $prodCode, string $specCode, string $lengthCo } /** - * LOT 번호 생성 (일련번호 suffix 포함) + * LOT 번호 생성 (일련번호 없음 — 같은 날 같은 조합은 동일 LOT) * - * base: 'GI6317-53' → 결과: 'GI6317-53-001' + * 예: prod='C', spec='L', length='30', date='2026-03-18' → 'CL6318-30' */ - public function generateLotNumber(string $lotBase): string + public function generateLotNumber(string $prodCode, string $specCode, string $lengthCode, string $date): string { - $tenantId = $this->tenantId(); + $dateCode = self::generateDateCode($date); - // 같은 base로 시작하는 기존 LOT 수 조회 - $count = Order::withoutGlobalScopes() - ->where('tenant_id', $tenantId) - ->where('order_type_code', Order::TYPE_STOCK) - ->where('options->bending_lot->lot_number', 'LIKE', $lotBase.'-%') - ->count(); - - $seq = str_pad($count + 1, 3, '0', STR_PAD_LEFT); - - return "{$lotBase}-{$seq}"; + return "{$prodCode}{$specCode}{$dateCode}-{$lengthCode}"; } /**