feat: 添加尺寸箱量解析和显示功能
- 更新ShipLog数据类以支持20尺和40尺箱量字段 - 修改日志解析器提取尺寸箱量数据(支持格式如'95TEU(20尺*95)'和'90TEU(20尺*52 40尺*19)') - 更新数据库表结构存储尺寸箱量 - 修改报告生成器在日报中显示尺寸箱量信息 - 修复解析器分隔符处理逻辑 - 确保二次靠泊记录尺寸箱量正确合并
This commit is contained in:
@@ -63,19 +63,29 @@ class DailyReportGenerator:
|
||||
try:
|
||||
logs = self.db.query_by_date(date)
|
||||
|
||||
# 按船名汇总
|
||||
ships: Dict[str, int] = {}
|
||||
# 按船名汇总TEU和尺寸箱量
|
||||
ships: Dict[str, Dict[str, Any]] = {}
|
||||
for log in logs:
|
||||
ship = log['ship_name']
|
||||
if ship not in ships:
|
||||
ships[ship] = 0
|
||||
ships[ship] = {
|
||||
'teu': 0,
|
||||
'twenty_feet': 0,
|
||||
'forty_feet': 0
|
||||
}
|
||||
if log.get('teu'):
|
||||
ships[ship] += log['teu']
|
||||
ships[ship]['teu'] += log['teu']
|
||||
if log.get('twenty_feet'):
|
||||
ships[ship]['twenty_feet'] += log['twenty_feet']
|
||||
if log.get('forty_feet'):
|
||||
ships[ship]['forty_feet'] += log['forty_feet']
|
||||
|
||||
total_teu = sum(ship_data['teu'] for ship_data in ships.values())
|
||||
|
||||
return {
|
||||
'date': date,
|
||||
'ships': ships,
|
||||
'total_teu': sum(ships.values()),
|
||||
'total_teu': total_teu,
|
||||
'ship_count': len(ships)
|
||||
}
|
||||
|
||||
@@ -245,9 +255,24 @@ class DailyReportGenerator:
|
||||
# 船次信息
|
||||
if daily_data['ships']:
|
||||
ship_lines: List[str] = []
|
||||
for ship, teu in sorted(daily_data['ships'].items(), key=lambda x: -x[1]):
|
||||
for ship, ship_data in sorted(daily_data['ships'].items(), key=lambda x: -x[1]['teu']):
|
||||
ship_lines.append(f"船名:{ship}")
|
||||
ship_lines.append(f"作业量:{teu}TEU")
|
||||
teu = ship_data['teu']
|
||||
twenty_feet = ship_data.get('twenty_feet', 0)
|
||||
forty_feet = ship_data.get('forty_feet', 0)
|
||||
|
||||
# 构建尺寸箱量字符串
|
||||
size_parts = []
|
||||
if twenty_feet > 0:
|
||||
size_parts.append(f"20尺*{twenty_feet}")
|
||||
if forty_feet > 0:
|
||||
size_parts.append(f"40尺*{forty_feet}")
|
||||
|
||||
if size_parts:
|
||||
size_str = " ".join(size_parts)
|
||||
ship_lines.append(f"作业量:{teu}TEU({size_str})")
|
||||
else:
|
||||
ship_lines.append(f"作业量:{teu}TEU")
|
||||
lines.extend(ship_lines)
|
||||
lines.append("")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user