Files
Feeding_control_system/tests/api_service_test.py

93 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
API接口
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import time
from busisness.blls import ArtifactBll,PDRecordBll
from busisness.models import ArtifactInfoModel,PDRecordModel
from service.mould_service import app_web_service
_model_task=None
artifact_bll=ArtifactBll()
pdrecord_bll=PDRecordBll()
if __name__ == "__main__":
try:
# 初始化三个列表用于跟踪ArtifactActionID
processed_artifact_actions = [] # 已处理的ArtifactActionID列表
processed_pd_records = [] # 已插入PDRecord表的ArtifactActionID列表
# db = SQLiteHandler.get_instance("db/three.db", max_readers=50, busy_timeout=4000)
while True:
# 测试获取未浇筑管片信息
try:
not_poured = app_web_service.get_not_pour_artifacts()
if not_poured:
for item in reversed(not_poured):
# 检查MouldCode是否已处理
if item.MouldCode in processed_artifact_actions:
print(f"待浇筑:MouldCode {item.MouldCode} 已处理,跳过")
continue
_model_data = ArtifactInfoModel(**item.__dict__)
artifact_bll.insert_artifact_task(_model_data)
# 标记为已处理
processed_artifact_actions.append(item.MouldCode)
# 限制最多保存3条记录删除最旧的
if len(processed_artifact_actions) > 3:
processed_artifact_actions.pop(0)
print(f"待浇筑:已处理MouldCode {item.MouldCode}")
if item.MouldCode in processed_pd_records:
print(f"派单:MouldCode {item.MouldCode} 已处理,跳过")
continue
if item.BetonTaskID is not None and item.BetonTaskID != '':
#获取taskid
if _model_task is None or item.BetonTaskID != _model_task.TaskID:
_model_task = app_web_service.get_task_info(item.BetonTaskID)
if _model_task is None:
print(f"异常:BetonTaskID {item.BetonTaskID} 不存在,跳过")
continue
_pd_record_data = PDRecordModel(
ArtifactID=item.ArtifactID,
TaskID=_model_task.TaskID,
ProjectName=_model_task.ProjectName,
ProduceMixID=_model_task.ProduceMixID,
BetonGrade=_model_task.BetonGrade,
BetonVolume=item.BetonVolume,
MouldCode=item.MouldCode,
SkeletonID=item.SkeletonID,
RingTypeCode=item.RingTypeCode,
SizeSpecification=item.SizeSpecification,
BuriedDepth=item.BuriedDepth,
BlockNumber=item.BlockNumber
)
pdrecord_bll.insert_PD_record(_pd_record_data)
# 标记为已处理
processed_pd_records.append(item.MouldCode)
# 限制最多保存3条记录删除最旧的
if len(processed_pd_records) > 3:
processed_pd_records.pop(0)
print(f"派单:已处理MouldCode {item.MouldCode}")
else:
print(f"异常:MouldCode {item.MouldCode} 无BetonTaskID跳过")
except Exception as e:
print(f"处理MouldCode {item.MouldCode} 时发生错误: {e}")
time.sleep(5)
except KeyboardInterrupt:
print("\n测试被用户中断")
except Exception as e:
print(f"测试过程中发生错误: {e}")