15. Product 서비스
client.product() 으로 접근합니다. 제품(Product)의 CRUD와 카운트를 제공합니다.
15.1 메서드 일람
| 메서드 | 반환 타입 | HTTP | 엔드포인트 |
|---|---|---|---|
create(ProductRequestV5) | ProductResponseV5 또는 null | POST | /api/v5/product |
update(product_id, ProductRequestV5) | ProductResponseV5 또는 null | PUT | /api/v5/product/{id} |
delete(product_id) | boolean | DELETE | /api/v5/product/{id} |
get(product_id) | ProductResponseV5 또는 null | GET | /api/v5/product/{id} |
list() | List<ProductResponseV5> | GET | /api/v5/product |
exists(product_id) | boolean | GET | /api/v5/product/{id}/exists |
count() | long | GET | /api/v5/product/count |
15.2 ProductRequestV5 / ProductResponseV5
| 필드 | 타입 | 설명 |
|---|---|---|
product_id | String | 제품 ID (PK) |
product_name | String | 제품명 |
site_id | String | 소속 사이트 |
description | String | 설명 |
external_product_id | String | 외부 시스템(ERP) 제품 ID |
product_code | String | 제품 코드 (SKU) |
category | String | 카테고리 |
unit_of_measure | String | 측정 단위 (EA, KG 등) |
15.3 사용 예시
제품 생성
import plantpulse.api.v5.dto.request.ProductRequestV5;
import plantpulse.api.v5.dto.response.ProductResponseV5;
ProductRequestV5 req = new ProductRequestV5();
req.setProduct_id("PROD_A001");
req.setProduct_name("반도체 칩 A");
req.setSite_id("SITE_DJ");
req.setProduct_code("SKU-A001");
req.setCategory("반도체");
req.setUnit_of_measure("EA");
req.setExternal_product_id("ERP_P001");
req.setDescription("8nm 공정 반도체 칩");
ProductResponseV5 created = client.product().create(req);
조회
ProductResponseV5 p = client.product().get("PROD_A001");
boolean exists = client.product().exists("PROD_A001");
long total = client.product().count();
카테고리별 그룹핑
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
Map<String, List<ProductResponseV5>> byCategory = client.product().list().stream()
.collect(Collectors.groupingBy(ProductResponseV5::getCategory));
byCategory.forEach((cat, items) ->
System.out.printf("%s: %d개%n", cat, items.size()));
수정 / 삭제
ProductRequestV5 update = new ProductRequestV5();
update.setProduct_id("PROD_A001");
update.setProduct_name("반도체 칩 A (v2)");
update.setSite_id("SITE_DJ");
update.setProduct_code("SKU-A001");
update.setUnit_of_measure("EA");
client.product().update("PROD_A001", update);
client.product().delete("PROD_A001");
다음 단계
- Order 서비스 — 작업지시에 제품 할당