feat: 생산지시 생성 시 공정 자동 분류 및 아이템 연결

- OrderService: 생산지시 생성 로직 개선
  - order_items.item_id → process_items 테이블에서 공정 자동 조회
  - 공정별로 아이템 그룹화 (미지정 아이템은 별도 그룹)
  - 각 공정별 작업지시 생성
  - work_order_items에 해당 공정의 아이템들 자동 추가

- WorkOrderService: 목록 조회 시 관계 추가
  - items 관계 추가 (틀수 계산용)
  - process.department 필드 추가 (부서 표시용)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-02-06 10:28:30 +09:00
parent f640a837e9
commit 6bc766411b
2 changed files with 86 additions and 33 deletions

View File

@@ -49,7 +49,8 @@ public function index(array $params)
'team:id,name',
'salesOrder:id,order_no,client_id,client_name',
'salesOrder.client:id,name',
'process:id,process_name,process_code',
'process:id,process_name,process_code,department',
'items:id,work_order_id,item_name,quantity',
]);
// 검색어
@@ -66,8 +67,14 @@ public function index(array $params)
}
// 공정 필터 (process_id)
// - 'none' 또는 '0': 공정 미지정 (process_id IS NULL)
// - 숫자: 해당 공정 ID로 필터
if ($processId !== null) {
$query->where('process_id', $processId);
if ($processId === 'none' || $processId === '0' || $processId === 0) {
$query->whereNull('process_id');
} else {
$query->where('process_id', $processId);
}
}
// 공정 코드 필터 (process_code) - 대시보드용
@@ -143,9 +150,10 @@ public function show(int $id)
'assignee:id,name',
'assignees.user:id,name',
'team:id,name',
'salesOrder:id,order_no,site_name,client_id',
'salesOrder:id,order_no,site_name,client_id,client_contact,received_at,writer_id,created_at,quantity',
'salesOrder.client:id,name',
'process:id,process_name,process_code,work_steps',
'salesOrder.writer:id,name',
'process:id,process_name,process_code,work_steps,department',
'items',
'bendingDetail',
'issues' => fn ($q) => $q->orderByDesc('created_at'),