mirror of
https://devops.liangqichi.top/qichi.liang/Orbitin.git
synced 2026-02-10 07:41:29 +08:00
feat: 添加尺寸箱量解析和显示功能
- 更新ShipLog数据类以支持20尺和40尺箱量字段 - 修改日志解析器提取尺寸箱量数据(支持格式如'95TEU(20尺*95)'和'90TEU(20尺*52 40尺*19)') - 更新数据库表结构存储尺寸箱量 - 修改报告生成器在日报中显示尺寸箱量信息 - 修复解析器分隔符处理逻辑 - 确保二次靠泊记录尺寸箱量正确合并
This commit is contained in:
@@ -40,6 +40,8 @@ class DailyLogsDatabase(DatabaseBase):
|
||||
teu INTEGER,
|
||||
efficiency REAL,
|
||||
vehicles INTEGER,
|
||||
twenty_feet INTEGER, -- 20尺箱量
|
||||
forty_feet INTEGER, -- 40尺箱量
|
||||
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(date, shift, ship_name) ON CONFLICT REPLACE
|
||||
)
|
||||
@@ -48,8 +50,8 @@ class DailyLogsDatabase(DatabaseBase):
|
||||
# 检查是否需要迁移旧表结构
|
||||
cursor.execute("SELECT sql FROM sqlite_master WHERE type='table' AND name='daily_handover_logs'")
|
||||
table_sql = cursor.fetchone()[0]
|
||||
if 'UNIQUE' not in table_sql:
|
||||
logger.warning("检测到旧表结构,正在迁移...")
|
||||
if 'twenty_feet' not in table_sql or 'forty_feet' not in table_sql:
|
||||
logger.warning("检测到旧表结构,正在迁移以添加尺寸箱量字段...")
|
||||
|
||||
# 重命名旧表
|
||||
cursor.execute('ALTER TABLE daily_handover_logs RENAME TO daily_handover_logs_old')
|
||||
@@ -64,6 +66,8 @@ class DailyLogsDatabase(DatabaseBase):
|
||||
teu INTEGER,
|
||||
efficiency REAL,
|
||||
vehicles INTEGER,
|
||||
twenty_feet INTEGER, -- 20尺箱量
|
||||
forty_feet INTEGER, -- 40尺箱量
|
||||
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(date, shift, ship_name) ON CONFLICT REPLACE
|
||||
)
|
||||
@@ -71,15 +75,15 @@ class DailyLogsDatabase(DatabaseBase):
|
||||
|
||||
# 复制数据(忽略重复)
|
||||
cursor.execute('''
|
||||
INSERT OR IGNORE INTO daily_handover_logs
|
||||
INSERT OR IGNORE INTO daily_handover_logs
|
||||
(date, shift, ship_name, teu, efficiency, vehicles, created_at)
|
||||
SELECT date, shift, ship_name, teu, efficiency, vehicles, created_at
|
||||
SELECT date, shift, ship_name, teu, efficiency, vehicles, created_at
|
||||
FROM daily_handover_logs_old
|
||||
''')
|
||||
|
||||
# 删除旧表
|
||||
cursor.execute('DROP TABLE daily_handover_logs_old')
|
||||
logger.info("迁移完成!")
|
||||
logger.info("迁移完成!已添加尺寸箱量字段")
|
||||
|
||||
# 创建索引
|
||||
cursor.execute('CREATE INDEX IF NOT EXISTS idx_date ON daily_handover_logs(date)')
|
||||
@@ -111,13 +115,14 @@ class DailyLogsDatabase(DatabaseBase):
|
||||
"""
|
||||
try:
|
||||
query = '''
|
||||
INSERT OR REPLACE INTO daily_handover_logs
|
||||
(date, shift, ship_name, teu, efficiency, vehicles, created_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
|
||||
INSERT OR REPLACE INTO daily_handover_logs
|
||||
(date, shift, ship_name, teu, efficiency, vehicles, twenty_feet, forty_feet, created_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
|
||||
'''
|
||||
params = (
|
||||
log['date'], log['shift'], log['ship_name'],
|
||||
log.get('teu'), log.get('efficiency'), log.get('vehicles')
|
||||
log.get('teu'), log.get('efficiency'), log.get('vehicles'),
|
||||
log.get('twenty_feet'), log.get('forty_feet')
|
||||
)
|
||||
|
||||
self.execute_update(query, params)
|
||||
|
||||
Reference in New Issue
Block a user