233 lines
8.2 KiB
Python
233 lines
8.2 KiB
Python
#!/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()
|