fix: [work-order] 생산지시 생성 시 부서/우선순위 자동 매핑

- team_id 미지정 시 공정 담당부서에서 자동 매핑
- priority 문자열→숫자 변환 (urgent=1, high=4, normal=7)
- 부서/담당자 배정 시 작업대기(waiting) 상태로 설정
This commit is contained in:
2026-03-13 18:54:37 +09:00
parent a36b7a2514
commit 54686cfc8a

View File

@@ -1346,6 +1346,21 @@ public function createProductionOrder(int $orderId, array $data)
}
}
// team_id 결정: 명시적 전달값 > 공정 담당부서 자동 매핑
$teamId = $data['team_id'] ?? null;
if (! $teamId && $process && $process->department) {
$teamId = DB::table('departments')
->where('tenant_id', $tenantId)
->where('name', $process->department)
->value('id');
}
// priority 결정: 문자열 → 숫자 변환 (urgent=1, high=4, normal=7)
$priorityMap = ['urgent' => 1, 'high' => 4, 'normal' => 7];
$priority = is_numeric($data['priority'] ?? null)
? (int) $data['priority']
: ($priorityMap[$data['priority'] ?? 'normal'] ?? 7);
// 작업지시 생성
$workOrder = WorkOrder::create([
'tenant_id' => $tenantId,
@@ -1353,9 +1368,10 @@ public function createProductionOrder(int $orderId, array $data)
'sales_order_id' => $order->id,
'project_name' => $order->site_name ?? $order->client_name,
'process_id' => $processId,
'status' => ! empty($assigneeIds) ? WorkOrder::STATUS_PENDING : WorkOrder::STATUS_UNASSIGNED,
'status' => (! empty($assigneeIds) || $teamId) ? WorkOrder::STATUS_WAITING : WorkOrder::STATUS_UNASSIGNED,
'priority' => $priority,
'assignee_id' => $primaryAssigneeId,
'team_id' => $data['team_id'] ?? null,
'team_id' => $teamId,
'scheduled_date' => $data['scheduled_date'] ?? $order->delivery_date,
'memo' => $data['memo'] ?? null,
'options' => $workOrderOptions,