pharmacy-pos-qr-system/backend/scripts/check_multi_barcode.py

75 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
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('=== 안텔민킹 (LB000003157) 바코드 전체 조회 ===\n')
# 1. CD_SALEGOODS에서 같은 DrugCode로 여러 행?
print('1. CD_SALEGOODS (DrugCode = LB000003157):')
result = session.execute(text("""
SELECT DrugCode, GoodsName, BARCODE
FROM CD_SALEGOODS
WHERE DrugCode = 'LB000003157'
"""))
for row in result:
print(f' {row.BARCODE}')
# 2. 바코드 전용 테이블이 따로 있나?
print('\n2. 바코드 관련 테이블에서 LB000003157 검색:')
tables = [
'CD_BARCODE',
'CD_Bundle',
'CD_ITEM_UNIT_MEMBER',
'CD_NameTag',
'BI_DRUG_MAPPING',
'PharmBridgeMapping'
]
for tbl in tables:
try:
result = session.execute(text(f"""
SELECT * FROM {tbl}
WHERE DrugCode = 'LB000003157' OR DRUGCODE = 'LB000003157'
"""))
rows = list(result)
if rows:
print(f'\n{tbl}: {len(rows)}개 발견!')
for row in rows:
print(f' {dict(row._mapping)}')
except:
pass
# 3. 바코드 값으로 역검색 (APC)
print('\n3. APC 0230237810109 검색 (전체 테이블):')
apc = '0230237810109'
for tbl in ['CD_GOODS', 'CD_SALEGOODS', 'CD_BARCODE', 'CD_Bundle', 'BI_DRUG_MAPPING', 'PharmBridgeMapping']:
try:
# 바코드 관련 컬럼 찾기
cols = session.execute(text(f"""
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '{tbl}' AND COLUMN_NAME LIKE '%BARCODE%'
"""))
for col_row in cols:
col = col_row.COLUMN_NAME
result = session.execute(text(f"""
SELECT * FROM {tbl} WHERE {col} = '{apc}'
"""))
rows = list(result)
if rows:
print(f'{tbl}.{col}: {len(rows)}개!')
for row in rows:
print(f' {dict(row._mapping)}')
except Exception as e:
pass
session.close()