import pandas as pd
|
from datetime import timedelta
|
from app.database.database import DatabaseConnection
|
|
class MainProcessService:
|
def __init__(self):
|
self.db = DatabaseConnection()
|
self.timezone_offset = 8 # 默认东八区(北京时间)
|
|
def _to_utc(self, dt):
|
return dt - timedelta(hours=self.timezone_offset)
|
|
def _to_local(self, df):
|
if not df.empty and 'time' in df.columns:
|
df['time'] = pd.to_datetime(df['time']) + timedelta(hours=self.timezone_offset)
|
return df
|
|
def get_cutting_setting_data(self, start_date, end_date):
|
"""获取流程主速度数据"""
|
try:
|
start_utc = self._to_utc(start_date)
|
end_utc = self._to_utc(end_date)
|
|
if not self.db.is_connected():
|
self.db.connect()
|
|
query = """
|
SELECT time, process_main_speed, cutting_count
|
FROM public.aics_main_process_cutting_setting
|
WHERE time BETWEEN %s AND %s
|
ORDER BY time ASC
|
"""
|
df = pd.read_sql(query, self.db.get_connection(), params=(start_utc, end_utc))
|
return self._to_local(df)
|
except Exception as e:
|
print(f"获取主速度数据失败: {e}")
|
return pd.DataFrame()
|
|
def get_motor_monitoring_data(self, start_date, end_date):
|
"""获取电机监控线速数据"""
|
try:
|
start_utc = self._to_utc(start_date)
|
end_utc = self._to_utc(end_date)
|
|
if not self.db.is_connected():
|
self.db.connect()
|
|
query = """
|
SELECT time, m1_line_speed, m2_line_speed
|
FROM public.aics_main_process_motor_monitoring
|
WHERE time BETWEEN %s AND %s
|
ORDER BY time ASC
|
"""
|
df = pd.read_sql(query, self.db.get_connection(), params=(start_utc, end_utc))
|
return self._to_local(df)
|
except Exception as e:
|
print(f"获取电机监控数据失败: {e}")
|
return pd.DataFrame()
|
|
def get_temperature_control_data(self, start_date, end_date):
|
"""获取中田挤出机温度设定与显示数据"""
|
try:
|
start_utc = self._to_utc(start_date)
|
end_utc = self._to_utc(end_date)
|
|
if not self.db.is_connected():
|
self.db.connect()
|
|
query = """
|
SELECT
|
time,
|
nakata_extruder_screw_set_temp,
|
nakata_extruder_screw_display_temp,
|
nakata_extruder_rear_barrel_set_temp,
|
nakata_extruder_rear_barrel_display_temp,
|
nakata_extruder_front_barrel_set_temp,
|
nakata_extruder_front_barrel_display_temp,
|
nakata_extruder_head_set_temp,
|
nakata_extruder_head_display_temp
|
FROM public.aics_main_process_temperature_control_setting
|
WHERE time BETWEEN %s AND %s
|
ORDER BY time ASC
|
"""
|
df = pd.read_sql(query, self.db.get_connection(), params=(start_utc, end_utc))
|
return self._to_local(df)
|
except Exception as e:
|
print(f"获取温度控制数据失败: {e}")
|
return pd.DataFrame()
|