初始化
This commit is contained in:
5
app/models/__init__.py
Normal file
5
app/models/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from .account import Account
|
||||
from .work_area import WorkArea
|
||||
from .section_data import SectionData
|
||||
from .checkpoint import Checkpoint
|
||||
from .measurement_data import MeasurementData
|
||||
18
app/models/account.py
Normal file
18
app/models/account.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime, func
|
||||
from app.core.database import RailwayBase
|
||||
|
||||
class Account(RailwayBase):
|
||||
"""账号表 - railway数据库"""
|
||||
__tablename__ = "accounts"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
username = Column(String(100), nullable=False, comment="账号")
|
||||
password = Column(String(100), nullable=False, comment="密码")
|
||||
status = Column(String(100), nullable=False, default="1", comment="状态: 1-正常, 0-禁用")
|
||||
today_updated = Column(String(100), default="0", comment="0->待处理,1->在抓取,2->抓取错误")
|
||||
project_name = Column(String(100), comment="标段")
|
||||
created_at = Column(DateTime, nullable=False, server_default=func.now())
|
||||
updated_at = Column(DateTime, nullable=False, server_default=func.now(), onupdate=func.now())
|
||||
update_time = Column(String(1000), comment="更新时间跨度")
|
||||
max_variation = Column(Integer, nullable=False, default=1, comment="变化量的绝对值,单位是毫米")
|
||||
yh_id = Column(String(100), comment="永恒一号id")
|
||||
30
app/models/checkpoint.py
Normal file
30
app/models/checkpoint.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
|
||||
class Checkpoint:
|
||||
"""观测点数据表结构定义 - 动态分表"""
|
||||
|
||||
@staticmethod
|
||||
def get_table_name(account_id: int) -> str:
|
||||
return f"checkpoint_{account_id}"
|
||||
|
||||
@staticmethod
|
||||
def get_create_sql(account_id: int) -> str:
|
||||
table_name = Checkpoint.get_table_name(account_id)
|
||||
return f"""
|
||||
CREATE TABLE IF NOT EXISTS `{table_name}` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '观察点名称',
|
||||
`burial_date` datetime DEFAULT NULL COMMENT '埋设日期',
|
||||
`objstate` varchar(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '测点状态',
|
||||
`monitoring_type` varchar(100) DEFAULT NULL COMMENT '监测类型',
|
||||
`period_number` int DEFAULT NULL COMMENT '量测期次',
|
||||
`first_time` datetime DEFAULT NULL COMMENT '首测时间',
|
||||
`manufacturer` varchar(100) DEFAULT NULL COMMENT '负责厂商',
|
||||
`point_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '测点编码',
|
||||
`point_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '观察点id',
|
||||
`section_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '所属断面id',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_point_id` (`point_id`),
|
||||
KEY `idx_section_id` (`section_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='观测点数据表';
|
||||
"""
|
||||
29
app/models/measurement_data.py
Normal file
29
app/models/measurement_data.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from sqlalchemy import Column, BigInteger, String, DateTime
|
||||
|
||||
class MeasurementData:
|
||||
"""量测数据表结构定义 - 动态分表"""
|
||||
|
||||
@staticmethod
|
||||
def get_table_name(account_id: int) -> str:
|
||||
return f"measurement_data_{account_id}"
|
||||
|
||||
@staticmethod
|
||||
def get_create_sql(account_id: int) -> str:
|
||||
table_name = MeasurementData.get_table_name(account_id)
|
||||
return f"""
|
||||
CREATE TABLE IF NOT EXISTS `{table_name}` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`monitoring_time` datetime DEFAULT NULL COMMENT '监测时间',
|
||||
`upload_time` datetime DEFAULT NULL COMMENT '上传时间',
|
||||
`monitoring_value` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '监测值(m)',
|
||||
`deformation_value` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变形值(mm)',
|
||||
`time_interval` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '时间间隔(h)',
|
||||
`cumulative_deformation` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '累计变形量(mm)',
|
||||
`deformation_rate` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '变形速率(mm/d)',
|
||||
`distance_working_face` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '距掌子面距离(m)',
|
||||
`point_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '测点id',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_point_id` (`point_id`),
|
||||
KEY `idx_monitoring_time` (`monitoring_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='量测数据';
|
||||
"""
|
||||
33
app/models/section_data.py
Normal file
33
app/models/section_data.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from sqlalchemy import Column, Integer, String, DECIMAL
|
||||
|
||||
class SectionData:
|
||||
"""断面数据表结构定义 - 动态分表"""
|
||||
|
||||
@staticmethod
|
||||
def get_table_name(account_id: int) -> str:
|
||||
return f"section_data_{account_id}"
|
||||
|
||||
@staticmethod
|
||||
def get_create_sql(account_id: int) -> str:
|
||||
table_name = SectionData.get_table_name(account_id)
|
||||
return f"""
|
||||
CREATE TABLE IF NOT EXISTS `{table_name}` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`project` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '项目',
|
||||
`mileage` varchar(100) NOT NULL COMMENT '断面里程',
|
||||
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '断面名称',
|
||||
`number` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '断面编码',
|
||||
`status` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '断面状态',
|
||||
`excavation_method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '开挖方法',
|
||||
`rock_mass_classification` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '围岩级别',
|
||||
`width` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '断面宽度(m)',
|
||||
`U0` decimal(10,4) DEFAULT NULL COMMENT 'U0(mm)',
|
||||
`remarks` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'U0备注',
|
||||
`department_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '工区/工点id',
|
||||
`section_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '断面id',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_section_id` (`section_id`),
|
||||
KEY `idx_department_id` (`department_id`),
|
||||
KEY `idx_number` (`number`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='断面数据表';
|
||||
"""
|
||||
33
app/models/work_area.py
Normal file
33
app/models/work_area.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from sqlalchemy import Column, BigInteger, String
|
||||
|
||||
class WorkArea:
|
||||
"""工区表结构定义 - 动态分表"""
|
||||
|
||||
@staticmethod
|
||||
def get_table_name(account_id: int) -> str:
|
||||
return f"work_area_{account_id}"
|
||||
|
||||
@staticmethod
|
||||
def get_columns():
|
||||
return {
|
||||
"id": Column(BigInteger, primary_key=True, autoincrement=True),
|
||||
"department_id": Column(String(100), comment="标段/工区/工点id"),
|
||||
"parent_id": Column(String(100), comment="父id"),
|
||||
"type": Column(String(100), comment="类型"),
|
||||
"name": Column(String(100), comment="名称"),
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def get_create_sql(account_id: int) -> str:
|
||||
table_name = WorkArea.get_table_name(account_id)
|
||||
return f"""
|
||||
CREATE TABLE IF NOT EXISTS `{table_name}` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`department_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标段/工区/工点id',
|
||||
`parent_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父id',
|
||||
`type` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '类型',
|
||||
`name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名称',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_department_id` (`department_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='标段/工区/工点信息表';
|
||||
"""
|
||||
Reference in New Issue
Block a user