feat: 동물약 APC 일괄 매핑 (7개 완료)
This commit is contained in:
89
backend/scripts/prepare_apc_insert.py
Normal file
89
backend/scripts/prepare_apc_insert.py
Normal file
@@ -0,0 +1,89 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
안텔민뽀삐 APC 추가 준비 스크립트
|
||||
- CD_ITEM_UNIT_MEMBER 구조 확인
|
||||
- 안텔민킹 레코드 참고
|
||||
- INSERT 쿼리 생성 (실행 안 함)
|
||||
"""
|
||||
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('=' * 60)
|
||||
print('1. CD_ITEM_UNIT_MEMBER 테이블 구조')
|
||||
print('=' * 60)
|
||||
result = session.execute(text("""
|
||||
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, CHARACTER_MAXIMUM_LENGTH
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'CD_ITEM_UNIT_MEMBER'
|
||||
ORDER BY ORDINAL_POSITION
|
||||
"""))
|
||||
for r in result:
|
||||
nullable = 'NULL' if r.IS_NULLABLE == 'YES' else 'NOT NULL'
|
||||
length = f'({r.CHARACTER_MAXIMUM_LENGTH})' if r.CHARACTER_MAXIMUM_LENGTH else ''
|
||||
print(f' {r.COLUMN_NAME}: {r.DATA_TYPE}{length} {nullable}')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('2. 안텔민킹 APC 레코드 (참고용)')
|
||||
print('=' * 60)
|
||||
result = session.execute(text("""
|
||||
SELECT * FROM CD_ITEM_UNIT_MEMBER
|
||||
WHERE DRUGCODE = 'LB000003157'
|
||||
AND CD_CD_BARCODE LIKE '023%'
|
||||
"""))
|
||||
row = result.fetchone()
|
||||
if row:
|
||||
cols = result.keys()
|
||||
for col in cols:
|
||||
val = getattr(row, col)
|
||||
print(f' {col}: {val}')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('3. 안텔민뽀삐 현재 레코드')
|
||||
print('=' * 60)
|
||||
result2 = session.execute(text("""
|
||||
SELECT * FROM CD_ITEM_UNIT_MEMBER
|
||||
WHERE DRUGCODE = 'LB000003158'
|
||||
ORDER BY SN DESC
|
||||
"""))
|
||||
rows = list(result2)
|
||||
print(f' 총 {len(rows)}개 레코드')
|
||||
for row in rows[:3]:
|
||||
print(f'\n --- SN: {row.SN} ---')
|
||||
cols = result2.keys()
|
||||
for col in cols:
|
||||
val = getattr(row, col)
|
||||
print(f' {col}: {val}')
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('4. 다음 SN 값 확인')
|
||||
print('=' * 60)
|
||||
result3 = session.execute(text("SELECT MAX(SN) as max_sn FROM CD_ITEM_UNIT_MEMBER"))
|
||||
max_sn = result3.fetchone().max_sn
|
||||
print(f' 현재 MAX(SN): {max_sn}')
|
||||
print(f' 다음 SN: {max_sn + 1}')
|
||||
|
||||
session.close()
|
||||
|
||||
print('\n' + '=' * 60)
|
||||
print('5. PostgreSQL에서 안텔민뽀삐 APC 확인')
|
||||
print('=' * 60)
|
||||
from sqlalchemy import create_engine
|
||||
pg = create_engine('postgresql://admin:trajet6640@192.168.0.87:5432/apdb_master').connect()
|
||||
result4 = pg.execute(text("""
|
||||
SELECT apc, product_name
|
||||
FROM apc
|
||||
WHERE product_name ILIKE '%안텔민%뽀삐%' OR product_name ILIKE '%안텔민%5kg%이하%'
|
||||
ORDER BY apc
|
||||
"""))
|
||||
for r in result4:
|
||||
print(f' APC: {r.apc}')
|
||||
print(f' 제품명: {r.product_name}')
|
||||
print()
|
||||
pg.close()
|
||||
Reference in New Issue
Block a user