You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
2.1 KiB

from datetime import datetime, timedelta
from tortoise import fields, models
from fastapi import HTTPException
# from models.archive import Archive
from models.template import Template
class StorageFormItem(models.Model):
id = fields.UUIDField(pk = True)
storage_form = fields.ForeignKeyField('rms.StorageForm', to_field = 'id', description = '入库单ID')
template = fields.ForeignKeyField('rms.Template', to_field = 'id', description = '药剂模板ID')
k1 = fields.CharField(null = True, max_length = 255, description = '关键字段1')
k2 = fields.CharField(null = True, max_length = 255, description = '关键字段2')
k3 = fields.CharField(null = True, max_length = 255, description = '关键字段3')
k4 = fields.CharField(null = True, max_length = 255, description = '关键字段4')
k5 = fields.CharField(null = True, max_length = 255, description = '关键字段5')
k6 = fields.CharField(null = True, max_length = 255, description = '关键字段6')
fill_json_content = fields.JSONField(null = True, description = '扩展字段')
created_at = fields.DatetimeField(auto_now_add = True)
updated_at = fields.DatetimeField(auto_now = True)
class Meta:
table = 'storage_form_items'
table_description = '入库单详细表'
async def calculate_expire_date(self, template_obj):
"""
计算过期日期
- 如果用户定义了生产日期与保质期,计算过期日期.如果用户定义了过期日期返回过期日期
"""
if self.fill_json_content.get("expire_date"):
return self.fill_json_content.get("expire_date")
if not self.fill_json_content.get("produce_date") or not self.fill_json_content.get("shelf_life"):
return ""
else:
produce_date = self.fill_json_content.get("produce_date")
shelf_life = self.fill_json_content.get("shelf_life")
production_date = datetime.strptime(produce_date, '%Y-%m-%d')
shelf_life_date = timedelta(days = int(shelf_life))
expiration_date = production_date + shelf_life_date
return expiration_date.strftime('%Y-%m-%d')