203 lines
5.4 KiB
Python
203 lines
5.4 KiB
Python
#!/usr/bin/env python3
|
|
"""质检物料库测试数据(biz_qc_material + 入库批次 + 变动记录),已存在编码/入库编号则跳过。"""
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from decimal import Decimal
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
if str(ROOT) not in sys.path:
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
from app.core.database import SessionLocal
|
|
from app.crud import qc_material as material_svc
|
|
from app.crud import qc_material_stock_batch as batch_svc
|
|
|
|
# (material_code, material_name, spec_model, unit, warning_qty, order_num, remark,
|
|
# stock_in_no, stock_in_date, expire_date, catalog_no, batch_no, manufacturer,
|
|
# unit_price, qty)
|
|
QC_MATERIAL_SEEDS = [
|
|
(
|
|
"QC-MAT-001",
|
|
"DMEM培养基",
|
|
"500ml/瓶",
|
|
"瓶",
|
|
Decimal("5"),
|
|
1,
|
|
"细胞培养基础培养基",
|
|
"RK-20260601-001",
|
|
"2026-06-01",
|
|
"2027-06-01",
|
|
"CAT-DMEM-500",
|
|
"BN20260501",
|
|
"Gibco",
|
|
Decimal("128.00"),
|
|
Decimal("20"),
|
|
),
|
|
(
|
|
"QC-MAT-002",
|
|
"胎牛血清",
|
|
"500ml/瓶",
|
|
"瓶",
|
|
Decimal("3"),
|
|
2,
|
|
"细胞培养添加物",
|
|
"RK-20260601-002",
|
|
"2026-06-01",
|
|
"2027-03-01",
|
|
"CAT-FBS-500",
|
|
"BN20260415",
|
|
"Gibco",
|
|
Decimal("2680.00"),
|
|
Decimal("6"),
|
|
),
|
|
(
|
|
"QC-MAT-003",
|
|
"青霉素-链霉素双抗",
|
|
"100ml/瓶",
|
|
"瓶",
|
|
Decimal("5"),
|
|
3,
|
|
"细胞培养抗生素",
|
|
"RK-20260601-003",
|
|
"2026-06-02",
|
|
"2026-12-02",
|
|
"CAT-PS-100",
|
|
"BN20260520",
|
|
"HyClone",
|
|
Decimal("186.00"),
|
|
Decimal("10"),
|
|
),
|
|
(
|
|
"QC-MAT-004",
|
|
"胰酶消化液",
|
|
"100ml/瓶",
|
|
"瓶",
|
|
Decimal("4"),
|
|
4,
|
|
"贴壁细胞消化",
|
|
"RK-20260601-004",
|
|
"2026-06-02",
|
|
"2026-11-02",
|
|
"CAT-TRY-100",
|
|
"BN20260518",
|
|
"Sigma",
|
|
Decimal("95.00"),
|
|
Decimal("8"),
|
|
),
|
|
(
|
|
"QC-MAT-005",
|
|
"台盼蓝染色液",
|
|
"50ml/瓶",
|
|
"瓶",
|
|
Decimal("2"),
|
|
5,
|
|
"细胞活力检测",
|
|
"RK-20260601-005",
|
|
"2026-06-03",
|
|
"2027-06-03",
|
|
"CAT-TB-50",
|
|
"BN20260525",
|
|
"Bio-Rad",
|
|
Decimal("72.00"),
|
|
Decimal("5"),
|
|
),
|
|
]
|
|
|
|
|
|
def seed(tenant_no: str = "zkxw", user_id: str = "d3000000000000000000000000000001") -> None:
|
|
db = SessionLocal()
|
|
created_material = 0
|
|
skipped_material = 0
|
|
created_batch = 0
|
|
skipped_batch = 0
|
|
try:
|
|
for row in QC_MATERIAL_SEEDS:
|
|
(
|
|
code,
|
|
name,
|
|
spec,
|
|
unit,
|
|
warning_qty,
|
|
order_num,
|
|
remark,
|
|
stock_in_no,
|
|
stock_in_date,
|
|
expire_date,
|
|
catalog_no,
|
|
batch_no,
|
|
manufacturer,
|
|
unit_price,
|
|
qty,
|
|
) = row
|
|
amount = (unit_price * qty).quantize(Decimal("0.01"))
|
|
|
|
material = None
|
|
if material_svc.code_exists(db, code, tenant_no):
|
|
skipped_material += 1
|
|
from app.models.models import BizQcMaterial
|
|
|
|
material = (
|
|
db.query(BizQcMaterial)
|
|
.filter(
|
|
BizQcMaterial.material_code == code,
|
|
BizQcMaterial.tenant_no == tenant_no,
|
|
BizQcMaterial.del_flag == 0,
|
|
)
|
|
.first()
|
|
)
|
|
else:
|
|
material = material_svc.create_material(
|
|
db,
|
|
material_code=code,
|
|
material_name=name,
|
|
spec_model=spec,
|
|
unit=unit,
|
|
stock_qty=Decimal("0"),
|
|
warning_qty=warning_qty,
|
|
status="1",
|
|
tenant_no=tenant_no,
|
|
order_num=order_num,
|
|
remark=remark,
|
|
user_id=user_id,
|
|
)
|
|
created_material += 1
|
|
|
|
if not material:
|
|
print(f"跳过批次 {stock_in_no}:物料 {code} 不存在")
|
|
continue
|
|
|
|
if batch_svc.stock_in_no_exists(db, stock_in_no, tenant_no):
|
|
skipped_batch += 1
|
|
continue
|
|
|
|
batch_svc.stock_in_one(
|
|
db,
|
|
material.id,
|
|
stock_in_no=stock_in_no,
|
|
stock_in_date=stock_in_date,
|
|
expire_date=expire_date,
|
|
catalog_no=catalog_no,
|
|
batch_no=batch_no,
|
|
manufacturer=manufacturer,
|
|
unit_price=unit_price,
|
|
amount=amount,
|
|
qty=qty,
|
|
remark="测试数据初始化",
|
|
tenant_no=tenant_no,
|
|
user_id=user_id,
|
|
)
|
|
created_batch += 1
|
|
|
|
print(
|
|
f"质检物料库测试数据:物料新增 {created_material} 条、跳过 {skipped_material} 条;"
|
|
f"入库批次新增 {created_batch} 条、跳过 {skipped_batch} 条。"
|
|
)
|
|
finally:
|
|
db.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
seed()
|