""" 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}")