- 在 models 中新增 Version、HtsClass 和 HtsItem 三个模型 - 在 api 中新增 hts 路由和相关接口 - 更新 app.py 和 code.py 以支持海关税率管理功能
166 lines
4.5 KiB
Python
166 lines
4.5 KiB
Python
# _*_ coding : UTF-8 _*_
|
|
# @Time : 2025/03/24 02:29:03
|
|
# @UpdateTime : 2025/03/24 02:29:03
|
|
# @Author : sonder
|
|
# @File : hts.py
|
|
# @Comment : 本程序用于海关编码税率模型
|
|
|
|
from tortoise import fields
|
|
|
|
from models.common import BaseModel
|
|
|
|
|
|
class Version(BaseModel):
|
|
"""
|
|
版本信息模型
|
|
"""
|
|
|
|
version = fields.CharField(max_length=255, description="版本号", source_field="version")
|
|
"""
|
|
版本号。
|
|
- 最大长度为 255 个字符
|
|
- 映射到数据库字段 version
|
|
"""
|
|
|
|
date = fields.CharField(max_length=255,description="版本日期", source_field="date")
|
|
"""
|
|
版本日期。
|
|
- 映射到数据库字段 date
|
|
"""
|
|
|
|
url = fields.CharField(max_length=255, description="下载地址", source_field="url")
|
|
"""
|
|
下载地址。
|
|
- 最大长度为 255 个字符
|
|
- 映射到数据库字段 url
|
|
"""
|
|
|
|
class Meta:
|
|
table = "version"
|
|
table_description = "版本信息"
|
|
|
|
|
|
class HtsClass(BaseModel):
|
|
"""
|
|
编码类信息模型
|
|
"""
|
|
|
|
class_name = fields.TextField(description="类名", source_field="class_name")
|
|
"""
|
|
类名。
|
|
- 映射到数据库字段 class_name
|
|
"""
|
|
|
|
class_description = fields.TextField(description="类描述", source_field="class_description")
|
|
"""
|
|
类描述。
|
|
- 映射到数据库字段 class_description
|
|
"""
|
|
|
|
chapter_name = fields.TextField(description="章节", source_field="chapter_name")
|
|
"""
|
|
章节。
|
|
- 映射到数据库字段 chapter_name
|
|
"""
|
|
|
|
chapter_description = fields.TextField(description="章节描述", source_field="chapter_description")
|
|
"""
|
|
章节描述。
|
|
- 映射到数据库字段 chapter_description
|
|
"""
|
|
|
|
class Meta:
|
|
table = "hts_class"
|
|
table_description = "编码类信息"
|
|
|
|
|
|
class HtsItem(BaseModel):
|
|
"""
|
|
编码项信息模型
|
|
"""
|
|
|
|
parent_id = fields.CharField(max_length=255, null=True, description="父编码", source_field="parent_id")
|
|
"""
|
|
父编码。
|
|
- 最大长度为 255 个字符
|
|
- 映射到数据库字段 parent_id
|
|
- 可为空
|
|
"""
|
|
|
|
htsno = fields.CharField(max_length=255, description="编码", source_field="htsno")
|
|
"""
|
|
编码。
|
|
- 最大长度为 255 个字符
|
|
- 映射到数据库字段 htsno
|
|
"""
|
|
|
|
indent = fields.IntField(description="层级",null=True, source_field="indent")
|
|
"""
|
|
缩进。
|
|
- 映射到数据库字段 indent
|
|
"""
|
|
|
|
description = fields.TextField(description="描述",null=True, source_field="description")
|
|
"""
|
|
描述。
|
|
- 映射到数据库字段 description
|
|
"""
|
|
|
|
units = fields.JSONField(description="单位列表", null=True, source_field="units")
|
|
"""
|
|
单位列表。
|
|
- 映射到数据库字段 units
|
|
"""
|
|
|
|
general = fields.TextField(description="通用税率",null=True, source_field="general")
|
|
"""
|
|
通用税率。
|
|
- 最大长度为 50 个字符
|
|
- 映射到数据库字段 general
|
|
"""
|
|
|
|
special = fields.TextField(description="特殊税率,适用于特定国家或地区",null=True, source_field="special")
|
|
"""
|
|
特殊税率,适用于特定国家或地区。
|
|
- 最大长度为 255 个字符
|
|
- 映射到数据库字段 special
|
|
"""
|
|
|
|
other = fields.TextField(description="其他税率",null=True, source_field="other")
|
|
"""
|
|
其他税率。
|
|
- 最大长度为 50 个字符
|
|
- 映射到数据库字段 other
|
|
"""
|
|
|
|
quota_quantity = fields.TextField(description="配额数量", null=True, source_field="quota_quantity")
|
|
"""
|
|
配额数量。
|
|
- 最大长度为 50 个字符
|
|
- 映射到数据库字段 quota_quantity
|
|
"""
|
|
|
|
additional_duties = fields.TextField(description="附加税",null=True, source_field="additional_duties")
|
|
"""
|
|
附加税。
|
|
- 最大长度为 50 个字符
|
|
- 映射到数据库字段 additional_duties
|
|
"""
|
|
|
|
footnotes = fields.JSONField(null=True, description="脚注列表", source_field="footnotes")
|
|
"""
|
|
脚注列表。
|
|
- 映射到数据库字段 footnotes
|
|
- 可为空
|
|
"""
|
|
|
|
class_ = fields.ForeignKeyField("models.HtsClass", related_name="class_items", on_delete=fields.CASCADE,
|
|
description="所属类", source_field="class_id")
|
|
|
|
version = fields.ForeignKeyField("models.Version", related_name="version_items", on_delete=fields.CASCADE,
|
|
description="所属版本", source_field="version_id")
|
|
|
|
class Meta:
|
|
table = "hts_item"
|
|
table_description = "编码项信息"
|