38 lines
2 KiB
PHP
38 lines
2 KiB
PHP
<?php
|
|
try {
|
|
$db = new PDO('sqlite:d:\Docker\jasan\dda\assets.db');
|
|
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
|
|
echo "--- 🛠 데이터 일관성 점검 및 마이그레이션 중... ---\n";
|
|
|
|
// 1. 재고(STOCK) 상태인 자산의 배정사용자를 '업무용(TEMP_44666b)'으로 통합
|
|
// 기존에 비어있거나 다른 이름이었던 경우 업데이트
|
|
$stmt1 = $db->prepare("UPDATE laptop_assets
|
|
SET assigned_user_name = '업무용(TEMP_44666b)', current_user_id = NULL
|
|
WHERE status = 'stock' AND (assigned_user_name != '업무용(TEMP_44666b)' OR assigned_user_name IS NULL)");
|
|
$stmt1->execute();
|
|
echo "✅ 재고(STOCK) 자산의 배정사용자명을 '업무용(TEMP_44666b)'으로 동기화함. (수정건수: " . $stmt1->rowCount() . "건)\n";
|
|
|
|
// 2. 매각 대상자 ID 복구 시도 (문자열 이름 -> 정수 ID)
|
|
// 기존 disposal_recipient에 이름이 있는 경우 users 테이블과 대조하여 disposal_user_id 채우기
|
|
$allDisposed = $db->query("SELECT id, disposal_recipient FROM laptop_assets WHERE status = 'disposed' AND disposal_recipient IS NOT NULL AND disposal_user_id IS NULL")->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
$restoredCount = 0;
|
|
$userFinder = $db->prepare("SELECT id FROM users WHERE name = ? LIMIT 1");
|
|
$idUpdater = $db->prepare("UPDATE laptop_assets SET disposal_user_id = ? WHERE id = ?");
|
|
|
|
foreach ($allDisposed as $row) {
|
|
$userFinder->execute([$row['disposal_recipient']]);
|
|
$uid = $userFinder->fetchColumn();
|
|
if ($uid) {
|
|
$idUpdater->execute([$uid, $row['id']]);
|
|
$restoredCount++;
|
|
}
|
|
}
|
|
echo "✅ 매각 자산의 대상자 ID(disposal_user_id)를 사내 직원 데이터와 대조하여 복구함. (복구건수: $restoredCount 건)\n";
|
|
|
|
echo "--- 🎉 완료되었습니다. ---";
|
|
|
|
} catch (Exception $e) {
|
|
echo "❌ 오류: " . $e->getMessage() . "\n";
|
|
}
|