83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
CD_GOODS / CD_BARCODE에서 외부 DB와 매핑 가능한 키 분석
|
|
"""
|
|
import sys
|
|
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
|
|
|
from db.dbsetup import get_db_session
|
|
from sqlalchemy import text
|
|
|
|
session = get_db_session('PM_DRUG')
|
|
|
|
print('=' * 60)
|
|
print('=== CD_GOODS 주요 컬럼 (외부 매핑 후보) ===')
|
|
print('=' * 60)
|
|
|
|
# CD_GOODS 샘플
|
|
result = session.execute(text("""
|
|
SELECT TOP 3
|
|
DrugCode, GoodsName, BARCODE, BaseCode,
|
|
SUNG_CODE, TITLECODE, EffctCode
|
|
FROM CD_GOODS
|
|
WHERE GoodsSelCode = 'B'
|
|
ORDER BY DrugCode
|
|
"""))
|
|
|
|
for row in result:
|
|
print(f'\nDrugCode: {row.DrugCode}')
|
|
print(f' GoodsName: {row.GoodsName}')
|
|
print(f' BARCODE: {row.BARCODE or "(없음)"}')
|
|
print(f' BaseCode: {row.BaseCode or "(없음)"}')
|
|
print(f' SUNG_CODE: {row.SUNG_CODE or "(없음)"}')
|
|
print(f' TITLECODE: {row.TITLECODE or "(없음)"}')
|
|
|
|
print('\n' + '=' * 60)
|
|
print('=== CD_BARCODE 주요 컬럼 (외부 매핑 후보) ===')
|
|
print('=' * 60)
|
|
|
|
# CD_BARCODE 샘플
|
|
result2 = session.execute(text("""
|
|
SELECT TOP 3
|
|
DRUGCODE, BARCODE, BASECODE, ETCNAME, SPLNAME,
|
|
SUNG_CODE, DIK_CODE, TITLECODE
|
|
FROM CD_BARCODE
|
|
WHERE BASECODE IS NOT NULL AND BASECODE != ''
|
|
"""))
|
|
|
|
for row in result2:
|
|
print(f'\nDRUGCODE: {row.DRUGCODE}')
|
|
print(f' BARCODE: {row.BARCODE}')
|
|
print(f' BASECODE: {row.BASECODE}')
|
|
print(f' ETCNAME: {row.ETCNAME}')
|
|
print(f' SPLNAME: {row.SPLNAME}')
|
|
print(f' SUNG_CODE: {row.SUNG_CODE or "(없음)"}')
|
|
print(f' DIK_CODE: {row.DIK_CODE or "(없음)"}')
|
|
print(f' TITLECODE: {row.TITLECODE}')
|
|
|
|
print('\n' + '=' * 60)
|
|
print('=== 매핑 키 후보 통계 ===')
|
|
print('=' * 60)
|
|
|
|
# 각 코드 현황
|
|
result3 = session.execute(text("""
|
|
SELECT
|
|
COUNT(*) as total,
|
|
SUM(CASE WHEN BARCODE IS NOT NULL AND BARCODE != '' THEN 1 ELSE 0 END) as has_barcode,
|
|
SUM(CASE WHEN BASECODE IS NOT NULL AND BASECODE != '' THEN 1 ELSE 0 END) as has_basecode,
|
|
SUM(CASE WHEN SUNG_CODE IS NOT NULL AND SUNG_CODE != '' THEN 1 ELSE 0 END) as has_sungcode,
|
|
SUM(CASE WHEN DIK_CODE IS NOT NULL AND DIK_CODE != '' THEN 1 ELSE 0 END) as has_dikcode,
|
|
SUM(CASE WHEN TITLECODE IS NOT NULL AND TITLECODE != '' THEN 1 ELSE 0 END) as has_titlecode
|
|
FROM CD_BARCODE
|
|
"""))
|
|
|
|
row = result3.fetchone()
|
|
print(f'\nCD_BARCODE 전체: {row.total:,}개')
|
|
print(f' BARCODE 있음: {row.has_barcode:,}개 ({row.has_barcode/row.total*100:.1f}%)')
|
|
print(f' BASECODE 있음: {row.has_basecode:,}개 ({row.has_basecode/row.total*100:.1f}%)')
|
|
print(f' SUNG_CODE 있음: {row.has_sungcode:,}개 ({row.has_sungcode/row.total*100:.1f}%)')
|
|
print(f' DIK_CODE 있음: {row.has_dikcode:,}개 ({row.has_dikcode/row.total*100:.1f}%)')
|
|
print(f' TITLECODE 있음: {row.has_titlecode:,}개 ({row.has_titlecode/row.total*100:.1f}%)')
|
|
|
|
session.close()
|