#!/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/")