diff --git a/src/components/production/WorkOrders/WorkOrderDetail.tsx b/src/components/production/WorkOrders/WorkOrderDetail.tsx index b381992d..f1968bf1 100644 --- a/src/components/production/WorkOrders/WorkOrderDetail.tsx +++ b/src/components/production/WorkOrders/WorkOrderDetail.tsx @@ -513,13 +513,36 @@ export function WorkOrderDetail({ orderId }: WorkOrderDetailProps) { {(() => { // 개소(층/부호)별로 그룹화 const nodeGroups = new Map(); - for (const item of order.items) { - const key = item.floorCode !== '-' ? item.floorCode : (item.orderNodeId != null ? String(item.orderNodeId) : 'none'); - const label = item.floorCode !== '-' ? item.floorCode : item.orderNodeName; - if (!nodeGroups.has(key)) { - nodeGroups.set(key, { label, items: [] }); + + // 모든 아이템이 동일 그룹으로 들어가는지 확인 + const uniqueKeys = new Set(order.items.map(item => + item.floorCode !== '-' ? item.floorCode : String(item.orderNodeId ?? 'none') + )); + const allSameGroup = uniqueKeys.size <= 1; + const locationCount = order.shutterCount || 1; + + if (allSameGroup && locationCount > 1) { + // 인덱스 기반 균등 분배 + const itemsPerLoc = Math.ceil(order.items.length / locationCount); + for (let loc = 0; loc < locationCount; loc++) { + const start = loc * itemsPerLoc; + const end = Math.min(start + itemsPerLoc, order.items.length); + if (start >= order.items.length) break; + const key = `loc-${loc}`; + nodeGroups.set(key, { + label: `개소 ${loc + 1}`, + items: order.items.slice(start, end), + }); + } + } else { + for (const item of order.items) { + const key = item.floorCode !== '-' ? item.floorCode : (item.orderNodeId != null ? String(item.orderNodeId) : 'none'); + const label = item.floorCode !== '-' ? item.floorCode : item.orderNodeName; + if (!nodeGroups.has(key)) { + nodeGroups.set(key, { label, items: [] }); + } + nodeGroups.get(key)!.items.push(item); } - nodeGroups.get(key)!.items.push(item); } const rows: React.ReactNode[] = []; diff --git a/src/components/production/WorkOrders/documents/ScreenWorkLogContent.tsx b/src/components/production/WorkOrders/documents/ScreenWorkLogContent.tsx index e7064a17..5f282fb3 100644 --- a/src/components/production/WorkOrders/documents/ScreenWorkLogContent.tsx +++ b/src/components/production/WorkOrders/documents/ScreenWorkLogContent.tsx @@ -271,8 +271,8 @@ export function ScreenWorkLogContent({ data: order, materialLots = [] }: ScreenW return ( {idx + 1} - {lotNoDisplay} - {item.productName} + {lotNoDisplay} + {item.productName} {getSymbolCode(item.floorCode)} {fmt(item.width)} {fmt(item.height)} diff --git a/src/components/production/WorkerScreen/WorkOrderListPanel.tsx b/src/components/production/WorkerScreen/WorkOrderListPanel.tsx index 8ce2b26b..e9f0a881 100644 --- a/src/components/production/WorkerScreen/WorkOrderListPanel.tsx +++ b/src/components/production/WorkerScreen/WorkOrderListPanel.tsx @@ -75,7 +75,7 @@ export function WorkOrderListPanel({ {/* 품목명 */} -

{order.productName}

+

{order.productName}

{/* 현장명 + 수량 */}