Files
zkxw/backend/scripts/seed_item_units.py
T
2026-06-14 09:14:11 +08:00

233 lines
8.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""批量初始化物品单位(biz_item_unit),已存在编码则跳过。"""
from __future__ import annotations
import sys
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 item_unit as item_unit_svc
# (unit_code, unit_name, order_num, remark)
ITEM_UNITS = [
# —— 计数 / 件数 ——
("ge", "个", 1, "计数"),
("jian", "件", 2, "计数"),
("tao", "套", 3, "计数"),
("tai", "台", 4, "计数"),
("liang_che", "辆", 5, "计数"),
("jia", "架", 6, "计数"),
("bu", "部", 7, "计数"),
("zhi", "支", 8, "计数"),
("tiao", "条", 9, "计数"),
("gen", "根", 10, "计数"),
("zhang", "张", 11, "计数"),
("pian", "片", 12, "计数"),
("kuai", "块", 13, "计数"),
("ke", "颗", 14, "计数"),
("li", "粒", 15, "计数"),
("mei", "枚", 16, "计数"),
("zhi_zhi", "只", 17, "计数"),
("tou", "头", 18, "计数"),
("wei_tail", "尾", 19, "计数"),
("pi", "匹", 20, "计数"),
("shuang", "双", 21, "计数"),
("dui", "对", 22, "计数"),
("fu", "副", 23, "计数"),
("zu", "组", 24, "计数"),
("pi_pi", "批", 25, "计数"),
("fen", "份", 26, "计数"),
("ci", "次", 27, "计数"),
("hui", "回", 28, "计数"),
("lun", "轮", 29, "计数"),
("ba", "把", 30, "计数"),
("kun", "捆", 31, "计数"),
("chuan", "串", 32, "计数"),
("shu", "束", 33, "计数"),
("pai", "排", 34, "计数"),
("kong", "孔", 35, "计数"),
("zhu", "株", 36, "计数"),
("ke_shu", "棵", 37, "计数"),
("cong", "丛", 38, "计数"),
("duo", "朵", 39, "计数"),
("ban_petal", "瓣", 40, "计数"),
("ren", "人", 41, "计数"),
("wei_pos", "位", 42, "计数"),
("hu_hu", "户", 43, "计数"),
("jia_hu", "家", 44, "计数"),
("kou", "口", 45, "计数"),
("dun", "顿", 46, "计数"),
("xiang_mu", "项", 47, "计数"),
("ben", "本", 48, "计数"),
("ce", "册", 49, "计数"),
("zhang_page", "页", 50, "计数"),
# —— 质量 ——
("ug", "微克", 100, "质量"),
("mg", "毫克", 101, "质量"),
("g", "克", 102, "质量"),
("kg", "千克", 103, "质量"),
("t", "吨", 104, "质量"),
("jin", "斤", 105, "质量"),
("liang_w", "两", 106, "质量"),
("lb", "磅", 107, "质量"),
("oz", "盎司", 108, "质量"),
("dan", "担", 109, "质量"),
("gongjin", "公斤", 110, "质量"),
# —— 体积 ——
("ul", "微升", 200, "体积"),
("ml", "毫升", 201, "体积"),
("l", "升", 202, "体积"),
("dl", "分升", 203, "体积"),
("cl", "厘升", 204, "体积"),
("m3", "立方米", 205, "体积"),
("dm3", "立方分米", 206, "体积"),
("cm3", "立方厘米", 207, "体积"),
("mm3", "立方毫米", 208, "体积"),
("gal", "加仑", 209, "体积"),
# —— 长度 / 面积 ——
("mm", "毫米", 300, "长度"),
("cm", "厘米", 301, "长度"),
("dm", "分米", 302, "长度"),
("m", "米", 303, "长度"),
("km", "千米", 304, "长度"),
("inch", "英寸", 305, "长度"),
("ft", "英尺", 306, "长度"),
("chi", "尺", 307, "长度"),
("cun", "寸", 308, "长度"),
("mm2", "平方毫米", 320, "面积"),
("cm2", "平方厘米", 321, "面积"),
("m2", "平方米", 322, "面积"),
("km2", "平方千米", 323, "面积"),
("mu_area", "亩", 324, "面积"),
("ha", "公顷", 325, "面积"),
# —— 包装 ——
("he", "盒", 400, "包装"),
("xiang", "箱", 401, "包装"),
("dai", "袋", 402, "包装"),
("bao", "包", 403, "包装"),
("ping", "瓶", 404, "包装"),
("guan", "罐", 405, "包装"),
("tong", "桶", 406, "包装"),
("tong_tube", "筒", 407, "包装"),
("juan", "卷", 408, "包装"),
("ban_board", "板", 409, "包装"),
("tuo", "托", 410, "包装"),
("pan", "盘", 411, "包装"),
("kuang", "筐", 412, "包装"),
("lan", "篮", 413, "包装"),
("lou", "篓", 414, "包装"),
("long", "笼", 415, "包装"),
("bei", "杯", 416, "包装"),
("wan", "碗", 417, "包装"),
("hu_pot", "壶", 418, "包装"),
("pen", "盆", 419, "包装"),
("guan_tube", "管", 420, "包装"),
("nang", "囊", 421, "包装"),
("tie", "贴", 422, "包装"),
("za", "扎", 423, "包装"),
("ceng", "层", 424, "包装"),
("ge_pack", "格", 425, "包装"),
("xi_tou", "吸头", 426, "包装"),
("qiang_tou", "枪头", 427, "包装"),
("kong_ban", "孔板", 428, "包装"),
("yang_ben_guan", "样本管", 429, "包装"),
("dong_cun_guan", "冻存管", 430, "包装"),
("pei_yang_ping", "培养瓶", 431, "包装"),
("pei_yang_min", "培养皿", 432, "包装"),
("liu_guan", "六孔板", 433, "包装"),
("shi_er_guan", "十二孔板", 434, "包装"),
("ershi_si_guan", "二十四孔板", 435, "包装"),
("jiu_shi_liu_guan", "九十六孔板", 436, "包装"),
("san_bai_ba_shi_guan", "三百八十四孔板", 437, "包装"),
# —— 实验室 / 生物 ——
("u", "单位", 500, "实验室"),
("iu", "IU", 501, "实验室"),
("ku", "KU", 502, "实验室"),
("mu_act", "MU", 503, "实验室"),
("cells_ml", "cells/mL", 504, "实验室"),
("cells_ul", "cells/μL", 505, "实验室"),
("cfu", "CFU", 506, "实验室"),
("cfu_ml", "CFU/mL", 507, "实验室"),
("pfu", "PFU", 508, "实验室"),
("pfu_ml", "PFU/mL", 509, "实验室"),
("od", "OD", 510, "实验室"),
("copies_ml", "copies/mL", 511, "实验室"),
("copies_ul", "copies/μL", 512, "实验室"),
("mol", "摩尔", 513, "实验室"),
("mmol", "毫摩尔", 514, "实验室"),
("umol", "微摩尔", 515, "实验室"),
("nmol", "纳摩尔", 516, "实验室"),
("mol_l", "mol/L", 517, "实验室"),
("mmol_l", "mmol/L", 518, "实验室"),
("umol_l", "μmol/L", 519, "实验室"),
("nmol_l", "nmol/L", 520, "实验室"),
("m_l", "M", 521, "实验室"),
("percent", "%", 522, "实验室"),
("ppm", "ppm", 523, "实验室"),
("ppb", "ppb", 524, "实验室"),
("mg_ml", "mg/mL", 525, "实验室"),
("ug_ml", "μg/mL", 526, "实验室"),
("ng_ml", "ng/mL", 527, "实验室"),
("pg_ml", "pg/mL", 528, "实验室"),
("mg_l", "mg/L", 529, "实验室"),
("ug_l", "μg/L", 530, "实验室"),
("ng_l", "ng/L", 531, "实验室"),
("iu_ml", "IU/mL", 532, "实验室"),
("u_ml", "U/mL", 533, "实验室"),
("x_be", "×", 534, "实验室"),
("ren_fen", "人份", 535, "实验室"),
("yang_ben", "样本", 536, "实验室"),
("ji_yin", "基因", 537, "实验室"),
("tiao_dai", "条带", 538, "实验室"),
("kuai_jiao", "块胶", 539, "实验室"),
# —— 时间 ——
("s", "秒", 600, "时间"),
("min", "分钟", 601, "时间"),
("h", "小时", 602, "时间"),
("d", "天", 603, "时间"),
("week", "周", 604, "时间"),
("month", "月", 605, "时间"),
("year", "年", 606, "时间"),
("ji", "季", 607, "时间"),
# —— 其他 ——
("yuan", "元", 700, "其他"),
("kwh", "千瓦时", 701, "其他"),
("du", "度", 702, "其他"),
("zhi_plant", "枝", 703, "其他"),
("dai_pack", "袋装", 704, "其他"),
("xiang_pack", "箱装", 705, "其他"),
("he_pack", "盒装", 706, "其他"),
]
def seed(tenant_no: str = "zkxw", user_id: str = "d3000000000000000000000000000001") -> None:
db = SessionLocal()
created = 0
skipped = 0
try:
for code, name, order_num, remark in ITEM_UNITS:
if item_unit_svc.unit_code_exists(db, code, tenant_no):
skipped += 1
continue
item_unit_svc.create_item_unit(
db,
unit_code=code,
unit_name=name,
tenant_no=tenant_no,
order_num=order_num,
remark=remark,
user_id=user_id,
)
created += 1
print(f"物品单位初始化完成:新增 {created} 条,跳过 {skipped} 条(编码已存在)。")
finally:
db.close()
if __name__ == "__main__":
seed()