90 lines
2.9 KiB
Python
90 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Mock 医药城/小药药订单数据生成器
|
|
用于在没有真实医药平台访问权限时,模拟 ORDER_FETCH 节点的输出
|
|
"""
|
|
import pandas as pd
|
|
from datetime import datetime, timedelta
|
|
import random
|
|
import os
|
|
|
|
# 假订单数据模板
|
|
MOCK_SUPPLIERS = [
|
|
"重庆亿昊药业",
|
|
"华润医药",
|
|
"国药控股",
|
|
"上海医药"
|
|
]
|
|
|
|
MOCK_PRODUCTS = [
|
|
{"name": "阿卡波糖片", "spec": "50mg*30片", "manufacturer": "示例制药", "approval_no": "国药准字H00000001"},
|
|
{"name": "二甲双胍片", "spec": "0.5g*60片", "manufacturer": "示例制药", "approval_no": "国药准字H00000002"},
|
|
{"name": "格列美脲片", "spec": "2mg*10片", "manufacturer": "示例制药", "approval_no": "国药准字H00000003"},
|
|
{"name": "阿托伐他汀钙片", "spec": "10mg*7片", "manufacturer": "示例制药", "approval_no": "国药准字H00000004"},
|
|
]
|
|
|
|
def generate_mock_orders(supplier_name: str, order_date: str, source_type: str = "YYC", item_count: int = 5):
|
|
"""
|
|
生成模拟订单Excel
|
|
|
|
Args:
|
|
supplier_name: 供应商名称
|
|
order_date: 订单日期 YYYY-MM-DD
|
|
source_type: 来源类型 YYC/XYY/OFFLINE
|
|
item_count: 订单明细行数
|
|
|
|
Returns:
|
|
生成的Excel文件路径
|
|
"""
|
|
rows = []
|
|
for i in range(item_count):
|
|
product = random.choice(MOCK_PRODUCTS)
|
|
rows.append({
|
|
"订单号": f"DD-{order_date.replace('-', '')}-{i+1:03d}",
|
|
"订单日期": order_date,
|
|
"供应商名称": supplier_name,
|
|
"药品通用名": product["name"],
|
|
"规格": product["spec"],
|
|
"单位": "盒",
|
|
"数量": random.randint(10, 500),
|
|
"单价": round(random.uniform(5.0, 200.0), 2),
|
|
"生产厂家": product["manufacturer"],
|
|
"批准文号": product["approval_no"],
|
|
})
|
|
|
|
df = pd.DataFrame(rows)
|
|
|
|
# 生成文件路径
|
|
output_dir = "/tmp/mock_rpa_data"
|
|
os.makedirs(output_dir, exist_ok=True)
|
|
|
|
filename = f"orders_{supplier_name}_{order_date}_{source_type}.xlsx"
|
|
filepath = os.path.join(output_dir, filename)
|
|
|
|
df.to_excel(filepath, index=False, sheet_name="订单明细")
|
|
print(f"✓ 生成模拟订单: {filepath}")
|
|
print(f" - 供应商: {supplier_name}")
|
|
print(f" - 订单日期: {order_date}")
|
|
print(f" - 明细行数: {len(rows)}")
|
|
|
|
return filepath
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# 生成几个测试订单
|
|
test_date = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")
|
|
|
|
print("生成模拟订单数据...\n")
|
|
|
|
# 医药城订单(线上)
|
|
generate_mock_orders("重庆亿昊药业", test_date, "YYC", item_count=8)
|
|
|
|
# 小药药订单(线上)
|
|
generate_mock_orders("华润医药", test_date, "XYY", item_count=5)
|
|
|
|
# 线下手工单
|
|
generate_mock_orders("国药控股", test_date, "OFFLINE", item_count=3)
|
|
|
|
print("\n✓ 全部完成,文件位于: /tmp/mock_rpa_data/")
|
|
|