#!/usr/bin/env python # encoding: utf-8 """ @author: tx @file: template.py @time: 2023/6/3 17:15 @desc: """ import collections from tortoise import fields, models from conf.setting import setting class TemplateItem(models.Model): key = fields.CharField(max_length=255, description='key') text = fields.CharField(max_length=255, description='文本') checked = fields.BooleanField(max_length=255, description='是否必填') required = fields.BooleanField(max_length=255, description='是否选中') reserved = fields.IntField(description='0关键字段, 1重要字段, 2自定义字段') type = fields.CharField(max_length=255, description='类型:string(文本), date(日期), number(数字)') class Meta: table = 'template_items' table_description = '药剂模板表' class Template(models.Model): id = fields.UUIDField(pk=True) name = fields.CharField(max_length=255, description='模板名称') tags = fields.TextField(description='唯一约束字段') xlsx = fields.JSONField(null=True, description='入库单模板') archive = fields.ForeignKeyField('rms.Archive', null=True, description='入库单模板') created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_now=True) class Meta: table = 'templates' table_description = '药剂模板表' def parse_xlsx_transfer(self): """翻译xlsx模板数据""" xlsx = list(filter(lambda i: i.get("checked"), self.xlsx)) # xlsx_transfer = {f"{item.get('key')}": f"{item.get('text')}" for item in xlsx} xlsx_transfer = collections.OrderedDict() for item in xlsx: key = item.get('key') text = item.get('text') xlsx_transfer[key] = text # 盒装药剂字段键值 if setting.BOX_TRANSFER_DICT: xlsx_transfer.update(setting.BOX_TRANSFER_DICT) xlsx_type = {f"{item.get('key')}": f"{item.get('type')}" for item in xlsx} xlsx_required = {f"{item.get('key')}": f"{item.get('required')}" for item in xlsx} return {"xlsx_transfer": xlsx_transfer, "xlsx_type": xlsx_type, "xlsx_required": xlsx_required} def get_checked_xlsx(self): xlsx = list(filter(lambda i: i.get("checked"), self.xlsx)) return xlsx