将TCP修改为OPC

This commit is contained in:
xiongyi
2025-11-18 11:23:03 +08:00
parent b40bc9e067
commit 67cce2411e
4 changed files with 23 additions and 94 deletions

View File

@ -1,12 +1,9 @@
"""任务处理服务"""
from datetime import datetime
from API.client import APIClient
from database.access_db import AccessDB
from database.sql_server import SQLServerDB
from config.settings import ACCESS_DB_PATH, ACCESS_DB_PASSWORD
from utils.helpers import get_f_block_positions
from tcp.client import TCPClient
import threading
from opc.client import OPCClient
import time
@ -18,7 +15,7 @@ class TaskService:
self.artifact_timestamps = {}
self.tcp_server = tcp_server
from config.settings import TCP_CLIENT_HOST, TCP_CLIENT_PORT
self.data_client = TCPClient(host=TCP_CLIENT_HOST, port=TCP_CLIENT_PORT)
self.data_client = OPCClient(url=f'opc.tcp://{TCP_CLIENT_HOST}:{TCP_CLIENT_PORT}')
self.data_client.start()
def process_not_pour_info(self):
@ -334,7 +331,7 @@ class TaskService:
if artifact_id not in self.artifact_timestamps:
self.artifact_timestamps[artifact_id] = datetime.now()
def insert_into_produce_table(self, connection, task_info, beton_volume, erp_id, artifact_id, status):
def insert_into_produce_table(self, connection, task_info, beton_volume, erp_id, artifact_id, half_volume, status):
"""插入数据到Produce表"""
sql_db = SQLServerDB()
if status == 1:
@ -359,9 +356,7 @@ class TaskService:
sql_db.insert_produce_data(insert_data)
print(f"数据已成功插入到Produce表中ERP ID: {erp_id}")
# 调用同事提供的保存函数,将数据保存到自定义数据表
try:
# 假设同事提供的函数名为 save_to_custom_table
# 参数包括: MISID(即erp_id), Flag, TaskID, ProduceMixID, ProjectName, BetonGrade, 调整后的方量
self.save_to_custom_table(
misid=erp_id,
@ -371,14 +366,14 @@ class TaskService:
project_name=task_info["ProjectName"],
beton_grade=task_info["BetonGrade"],
adjusted_volume=round(beton_volume,2),
artifact_id=artifact_id
artifact_id=artifact_id,
half_volume=half_volume,
# 已经调整后的方量
)
print(f"任务 {erp_id} 的数据已保存到自定义数据表")
except Exception as e:
print(f"调用保存函数时出错: {e}")
# 发送数据给TCP客户端
if self.tcp_server:
try:
time.sleep(2)
@ -410,7 +405,8 @@ class TaskService:
project_name=task_info["ProjectName"],
beton_grade=task_info["BetonGrade"],
adjusted_volume=round(beton_volume,2),
artifact_id=artifact_id
artifact_id=artifact_id,
half_volume=half_volume,
)
print(f"任务 {erp_id} 的数据已保存到自定义数据表")
except Exception as e:
@ -419,7 +415,7 @@ class TaskService:
return erp_id
def save_to_custom_table(self, misid, flag, task_id, produce_mix_id, project_name, beton_grade, adjusted_volume, artifact_id):
def save_to_custom_table(self, misid, flag, task_id, produce_mix_id, project_name, beton_grade, adjusted_volume, artifact_id,half_volume):
try:
task_data = {
"erp_id": misid,
@ -430,6 +426,7 @@ class TaskService:
"beton_grade": beton_grade,
"adjusted_volume": adjusted_volume,
"flag": flag,
"half_volume":half_volume,
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
self.data_client.send_data(task_data)
@ -439,7 +436,6 @@ class TaskService:
print(f"原计划保存到自定义数据表: MISID={misid}, Flag={flag}, TaskID={task_id}, 调整后方量={adjusted_volume}")
def update_custom_table_status(self, erp_id, status):
# 通过专用TCP客户端发送状态更新到另一台电脑
try:
status_data = {
"cmd": "update_status",
@ -451,4 +447,4 @@ class TaskService:
print(f"任务状态更新已发送到另一台电脑: ERP ID={erp_id}, 状态={status}")
except Exception as e:
print(f"发送状态更新到另一台电脑时出错: {e}")
print(f"原计划更新自定义数据表状态: ERP ID={erp_id}, 状态={status}")
print(f"原计划更新自定义数据表状态: ERP ID={erp_id}, 状态={status}")