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

65 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
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')
# 1. BaseCode가 있는 제품 수 확인
result = session.execute(text("""
SELECT
COUNT(*) as total,
SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) as with_basecode
FROM CD_GOODS
WHERE GoodsSelCode = 'B'
"""))
row = result.fetchone()
print(f'=== BaseCode 사용 현황 ===')
print(f'판매중 전체 제품: {row.total}')
print(f'BaseCode 있는 제품: {row.with_basecode}')
print()
# 2. BaseCode가 있는 제품 샘플 (최대 20개)
result2 = session.execute(text("""
SELECT TOP 20 DrugCode, GoodsName, BaseCode, POS_BOON
FROM CD_GOODS
WHERE GoodsSelCode = 'B'
AND BaseCode IS NOT NULL
AND BaseCode != ''
ORDER BY GoodsName
"""))
print('=== BaseCode 있는 제품 샘플 ===')
count = 0
for row in result2:
count += 1
print(f'{row.GoodsName}')
print(f' DrugCode: {row.DrugCode}')
print(f' BaseCode: {row.BaseCode}')
print(f' 분류: {row.POS_BOON}')
print()
if count == 0:
print('(BaseCode가 있는 제품이 없습니다)')
# 3. 분류별 BaseCode 사용 현황
print('=== 분류(POS_BOON)별 BaseCode 현황 ===')
result3 = session.execute(text("""
SELECT
POS_BOON,
COUNT(*) as total,
SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) as with_basecode
FROM CD_GOODS
WHERE GoodsSelCode = 'B'
GROUP BY POS_BOON
HAVING SUM(CASE WHEN BaseCode IS NOT NULL AND BaseCode != '' THEN 1 ELSE 0 END) > 0
ORDER BY with_basecode DESC
"""))
for row in result3:
print(f'분류 {row.POS_BOON}: {row.with_basecode}/{row.total}')
session.close()