From faa25a85c10aa0fa2df824318a4bfa542f6a5a46 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期二, 20 一月 2026 13:26:55 +0800
Subject: [PATCH] feat(services): 添加主流程服务并重构时间处理逻辑

---
 app/services/extruder_service.py |   23 ++++++++++++++++-------
 1 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/app/services/extruder_service.py b/app/services/extruder_service.py
index 4ecfd70..b22eed3 100644
--- a/app/services/extruder_service.py
+++ b/app/services/extruder_service.py
@@ -1,19 +1,25 @@
 import pandas as pd
 from functools import lru_cache
+from datetime import timedelta
 from app.database.database import DatabaseConnection
 
 class ExtruderService:
     def __init__(self):
         self.db = DatabaseConnection()
+        self.timezone_offset = 8  # 榛樿涓滃叓鍖猴紙鍖椾含鏃堕棿锛�
     
     def get_extruder_data(self, start_date, end_date):
         """
         鏌ヨ鎸ゅ嚭鏈烘暟鎹�
-        :param start_date: 寮�濮嬫棩鏈�
-        :param end_date: 缁撴潫鏃ユ湡
-        :return: 鍖呭惈鎸ゅ嚭鏈烘暟鎹殑鏁版嵁妗�
+        :param start_date: 寮�濮嬫棩鏈� (鏈湴鏃堕棿)
+        :param end_date: 缁撴潫鏃ユ湡 (鏈湴鏃堕棿)
+        :return: 鍖呭惈鎸ゅ嚭鏈烘暟鎹殑鏁版嵁妗� (杩斿洖鏈湴鏃堕棿)
         """
         try:
+            # 灏嗘湰鍦版椂闂磋浆鎹负UTC鏃堕棿杩涜鏌ヨ
+            start_date_utc = start_date - timedelta(hours=self.timezone_offset)
+            end_date_utc = end_date - timedelta(hours=self.timezone_offset)
+
             # 杩炴帴鏁版嵁搴�
             if not self.db.is_connected():
                 if not self.db.connect():
@@ -47,7 +53,11 @@
             """
             
             # 鎵ц鏌ヨ骞惰浆鎹负DataFrame
-            df = pd.read_sql(query, connection, params=(start_date, end_date))
+            df = pd.read_sql(query, connection, params=(start_date_utc, end_date_utc))
+            
+            # 灏嗘煡璇㈢粨鏋滀腑鐨刄TC鏃堕棿杞崲鍥炴湰鍦版椂闂�
+            if not df.empty and 'time' in df.columns:
+                df['time'] = pd.to_datetime(df['time']) + timedelta(hours=self.timezone_offset)
             
             return df
         except Exception as e:
@@ -75,9 +85,8 @@
             batch_df['compound_code_shift'] = batch_df['compound_code'].shift(1)
             # 鑻ュ綋鍓嶈 compound_code 涓庡墠涓�琛屼笉鍚岋紝鍒欐爣璁颁负鎹㈡壒锛�1锛夛紝鍚﹀垯涓� 0 锛岀涓�琛岀壒娈婂鐞嗕负 0
             batch_df['is_batch_change'] = (batch_df['compound_code'] != batch_df['compound_code_shift']).astype(int)
-            batch_df['is_batch_change'].iloc[0] = 0
-            # 鎵撳嵃batch_df
-            print(batch_df)
+            batch_df.loc[batch_df.index[0], 'is_batch_change'] = 0
+            
             # 鎻愬彇鎵�鏈夋崲鎵逛簨浠剁殑绱㈠紩
             change_indices = batch_df[batch_df['is_batch_change'] == 1].index.tolist()
             

--
Gitblit v1.9.3