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