- bending_items.code: LOT번호(CP260319) → 코드체계(CP)만 저장 - bending_items.lot_no: 기존 code 값 이관 (LOT 번호) - bending_models.code: 전체코드(GR-KSS01-벽면형-SUS) → 접두사(GR)만 저장 - bending_models.lot_no: 기존 code 값 이관 - unique 제약: code → lot_no로 이동 - BendingCodeService.resolveItem: LIKE → 정확 매칭 - 검색: lot_no 필드 추가 - Swagger 문서 업데이트
195 lines
12 KiB
PHP
195 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Swagger\v1;
|
|
|
|
/**
|
|
* @OA\Tag(name="BendingItem", description="절곡품 기초관리 (bending_items 전용 테이블)")
|
|
*
|
|
* @OA\Schema(
|
|
* schema="BendingItem",
|
|
* @OA\Property(property="id", type="integer", example=431),
|
|
* @OA\Property(property="code", type="string", example="RS", description="코드 체계 (제품Code+종류Code)"),
|
|
* @OA\Property(property="lot_no", type="string", nullable=true, example="RS260319", description="LOT 번호 (code+날짜+일련번호)"),
|
|
* @OA\Property(property="legacy_code", type="string", nullable=true, example="BD-RS-30", description="이전 코드 (items 기반)"),
|
|
* @OA\Property(property="item_name", type="string", example="SUS마감재"),
|
|
* @OA\Property(property="item_sep", type="string", enum={"스크린","철재"}),
|
|
* @OA\Property(property="item_bending", type="string", example="가이드레일"),
|
|
* @OA\Property(property="item_spec", type="string", nullable=true, example="120*70"),
|
|
* @OA\Property(property="material", type="string", example="SUS 1.2T"),
|
|
* @OA\Property(property="model_name", type="string", nullable=true, example="KSS01"),
|
|
* @OA\Property(property="model_UA", type="string", nullable=true, enum={"인정","비인정"}),
|
|
* @OA\Property(property="rail_width", type="number", nullable=true),
|
|
* @OA\Property(property="exit_direction", type="string", nullable=true, description="출구방향 (케이스 전용)"),
|
|
* @OA\Property(property="front_bottom", type="number", nullable=true, description="전면밑 (케이스 전용)"),
|
|
* @OA\Property(property="box_width", type="number", nullable=true, description="박스폭 (케이스 전용)"),
|
|
* @OA\Property(property="box_height", type="number", nullable=true, description="박스높이 (케이스 전용)"),
|
|
* @OA\Property(property="inspection_door", type="string", nullable=true, description="점검구 (케이스 전용)"),
|
|
* @OA\Property(property="length_code", type="string", nullable=true, example="30", description="원자재 길이코드"),
|
|
* @OA\Property(property="length_mm", type="integer", nullable=true, example=3000, description="원자재 길이(mm)"),
|
|
* @OA\Property(property="bendingData", type="array", nullable=true, description="전개도 데이터 (bending_data 테이블)", @OA\Items(
|
|
* @OA\Property(property="no", type="integer", description="열 순서"),
|
|
* @OA\Property(property="input", type="number", description="입력 치수"),
|
|
* @OA\Property(property="rate", type="string", description="연신율: 빈값/'-1'(하향)/'1'(상향)"),
|
|
* @OA\Property(property="sum", type="number", description="누적 합계"),
|
|
* @OA\Property(property="color", type="boolean", description="음영 마킹"),
|
|
* @OA\Property(property="aAngle", type="boolean", description="A각 표시")
|
|
* )),
|
|
* @OA\Property(property="search_keyword", type="string", nullable=true),
|
|
* @OA\Property(property="author", type="string", nullable=true),
|
|
* @OA\Property(property="memo", type="string", nullable=true),
|
|
* @OA\Property(property="registration_date", type="string", format="date", nullable=true),
|
|
* @OA\Property(property="image_file_id", type="integer", nullable=true, description="절곡 도면 이미지 파일 ID"),
|
|
* @OA\Property(property="legacy_bending_id", type="integer", nullable=true, description="chandj.bending.num 참조"),
|
|
* @OA\Property(property="legacy_bending_num", type="integer", nullable=true, description="MNG2 호환 (=legacy_bending_id)"),
|
|
* @OA\Property(property="modified_by", type="string", nullable=true),
|
|
* @OA\Property(property="width_sum", type="number", nullable=true, example=203, description="폭합계 (전개도 마지막 sum)"),
|
|
* @OA\Property(property="bend_count", type="integer", example=5, description="절곡 횟수"),
|
|
* @OA\Property(property="is_active", type="boolean", example=true),
|
|
* @OA\Property(property="name", type="string", description="MNG2 호환 (=item_name)"),
|
|
* @OA\Property(property="front_bottom_width", type="number", nullable=true, description="MNG2 호환 (=front_bottom)"),
|
|
* @OA\Property(property="item_type", type="string", example="PT", description="MNG2 호환 (고정값)"),
|
|
* @OA\Property(property="item_category", type="string", example="BENDING", description="MNG2 호환 (고정값)"),
|
|
* @OA\Property(property="unit", type="string", example="EA", description="MNG2 호환 (고정값)"),
|
|
* @OA\Property(property="created_at", type="string", format="date-time"),
|
|
* @OA\Property(property="updated_at", type="string", format="date-time")
|
|
* )
|
|
*/
|
|
class BendingItemApi
|
|
{
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/v1/bending-items",
|
|
* tags={"BendingItem"},
|
|
* summary="절곡품 목록 조회",
|
|
* description="bending_items 테이블에서 검색. 정규 컬럼 인덱스로 빠른 검색 지원.",
|
|
* @OA\Parameter(name="item_sep", in="query", required=false, @OA\Schema(type="string", enum={"스크린","철재"})),
|
|
* @OA\Parameter(name="item_bending", in="query", required=false, @OA\Schema(type="string")),
|
|
* @OA\Parameter(name="material", in="query", required=false, @OA\Schema(type="string")),
|
|
* @OA\Parameter(name="model_UA", in="query", required=false, @OA\Schema(type="string", enum={"인정","비인정"})),
|
|
* @OA\Parameter(name="model_name", in="query", required=false, @OA\Schema(type="string")),
|
|
* @OA\Parameter(name="legacy_bending_num", in="query", required=false, @OA\Schema(type="integer"), description="chandj.bending.num으로 검색"),
|
|
* @OA\Parameter(name="search", in="query", required=false, @OA\Schema(type="string"), description="item_name, code, item_spec, legacy_code 통합 검색"),
|
|
* @OA\Parameter(name="page", in="query", required=false, @OA\Schema(type="integer")),
|
|
* @OA\Parameter(name="size", in="query", required=false, @OA\Schema(type="integer", default=50)),
|
|
* @OA\Response(response=200, description="성공", @OA\JsonContent(
|
|
* @OA\Property(property="data", type="object",
|
|
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/BendingItem")),
|
|
* @OA\Property(property="total", type="integer")
|
|
* )
|
|
* ))
|
|
* )
|
|
*/
|
|
public function index() {}
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/v1/bending-items/filters",
|
|
* tags={"BendingItem"},
|
|
* summary="절곡품 필터 옵션 조회",
|
|
* description="item_sep, item_bending, material, model_UA, model_name 고유값 목록",
|
|
* @OA\Response(response=200, description="성공", @OA\JsonContent(
|
|
* @OA\Property(property="data", type="object",
|
|
* @OA\Property(property="item_sep", type="array", @OA\Items(type="string")),
|
|
* @OA\Property(property="item_bending", type="array", @OA\Items(type="string")),
|
|
* @OA\Property(property="material", type="array", @OA\Items(type="string")),
|
|
* @OA\Property(property="model_UA", type="array", @OA\Items(type="string")),
|
|
* @OA\Property(property="model_name", type="array", @OA\Items(type="string"))
|
|
* )
|
|
* ))
|
|
* )
|
|
*/
|
|
public function filters() {}
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/v1/bending-items/{id}",
|
|
* tags={"BendingItem"},
|
|
* summary="절곡품 상세 조회",
|
|
* description="전개도 데이터(bendingData) 포함",
|
|
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
|
* @OA\Response(response=200, description="성공", @OA\JsonContent(
|
|
* @OA\Property(property="data", ref="#/components/schemas/BendingItem")
|
|
* ))
|
|
* )
|
|
*/
|
|
public function show() {}
|
|
|
|
/**
|
|
* @OA\Post(
|
|
* path="/api/v1/bending-items",
|
|
* tags={"BendingItem"},
|
|
* summary="절곡품 등록",
|
|
* @OA\RequestBody(@OA\JsonContent(
|
|
* required={"code","item_name","item_sep","item_bending","material"},
|
|
* @OA\Property(property="code", type="string", example="RM", description="코드 체계 (prod+spec)"),
|
|
* @OA\Property(property="lot_no", type="string", nullable=true, example="RM260319", description="LOT 번호"),
|
|
* @OA\Property(property="item_name", type="string", example="본체"),
|
|
* @OA\Property(property="item_sep", type="string", enum={"스크린","철재"}),
|
|
* @OA\Property(property="item_bending", type="string", example="가이드레일"),
|
|
* @OA\Property(property="material", type="string", example="EGI 1.55T"),
|
|
* @OA\Property(property="item_spec", type="string", nullable=true, example="120*70"),
|
|
* @OA\Property(property="model_name", type="string", nullable=true, example="KSS01"),
|
|
* @OA\Property(property="model_UA", type="string", nullable=true, enum={"인정","비인정"}),
|
|
* @OA\Property(property="rail_width", type="number", nullable=true),
|
|
* @OA\Property(property="exit_direction", type="string", nullable=true),
|
|
* @OA\Property(property="front_bottom", type="number", nullable=true),
|
|
* @OA\Property(property="box_width", type="number", nullable=true),
|
|
* @OA\Property(property="box_height", type="number", nullable=true),
|
|
* @OA\Property(property="inspection_door", type="string", nullable=true),
|
|
* @OA\Property(property="length_code", type="string", nullable=true, example="30"),
|
|
* @OA\Property(property="length_mm", type="integer", nullable=true, example=3000),
|
|
* @OA\Property(property="bendingData", type="array", nullable=true, @OA\Items(
|
|
* @OA\Property(property="no", type="integer"),
|
|
* @OA\Property(property="input", type="number"),
|
|
* @OA\Property(property="rate", type="string"),
|
|
* @OA\Property(property="sum", type="number"),
|
|
* @OA\Property(property="color", type="boolean"),
|
|
* @OA\Property(property="aAngle", type="boolean")
|
|
* )),
|
|
* @OA\Property(property="memo", type="string", nullable=true),
|
|
* @OA\Property(property="author", type="string", nullable=true)
|
|
* )),
|
|
* @OA\Response(response=200, description="성공")
|
|
* )
|
|
*/
|
|
public function store() {}
|
|
|
|
/**
|
|
* @OA\Put(
|
|
* path="/api/v1/bending-items/{id}",
|
|
* tags={"BendingItem"},
|
|
* summary="절곡품 수정",
|
|
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
|
* @OA\RequestBody(@OA\JsonContent(
|
|
* @OA\Property(property="code", type="string"),
|
|
* @OA\Property(property="item_name", type="string"),
|
|
* @OA\Property(property="item_sep", type="string", enum={"스크린","철재"}),
|
|
* @OA\Property(property="item_bending", type="string"),
|
|
* @OA\Property(property="material", type="string"),
|
|
* @OA\Property(property="item_spec", type="string", nullable=true),
|
|
* @OA\Property(property="model_name", type="string", nullable=true),
|
|
* @OA\Property(property="model_UA", type="string", nullable=true),
|
|
* @OA\Property(property="rail_width", type="number", nullable=true),
|
|
* @OA\Property(property="length_code", type="string", nullable=true),
|
|
* @OA\Property(property="length_mm", type="integer", nullable=true),
|
|
* @OA\Property(property="bendingData", type="array", nullable=true, description="전체 교체", @OA\Items(type="object")),
|
|
* @OA\Property(property="memo", type="string", nullable=true)
|
|
* )),
|
|
* @OA\Response(response=200, description="성공")
|
|
* )
|
|
*/
|
|
public function update() {}
|
|
|
|
/**
|
|
* @OA\Delete(
|
|
* path="/api/v1/bending-items/{id}",
|
|
* tags={"BendingItem"},
|
|
* summary="절곡품 삭제",
|
|
* description="bending_data(전개도)도 함께 삭제",
|
|
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
|
* @OA\Response(response=200, description="성공")
|
|
* )
|
|
*/
|
|
public function destroy() {}
|
|
}
|