文章目录
import osimport clr from typing import Anyimport func_timeoutfrom func_timeout import func_set_timeoutfrom func_timeout.exceptions import FunctionTimedOutcurrent_path = os.getcwd()dll_path = os.path.join(current_path, \"Siemens.Sistar.Api.dll\") clr.AddReference(dll_path)from Siemens.Sistar.Api import SistarBatchsistar_batch_instance = SistarBatch(\'python_web_api_batch\')sistar_batch_params_instance = SistarBatch.ParameterList()from System import UInt16, UInt32, Double, Boolean, DateTime, String, Int32BatchStartMode = { \'Immediate\': SistarBatch.BatchStartMode.Immediate, \'StartTime\': SistarBatch.BatchStartMode.StartTime, \'ByEvent\': SistarBatch.BatchStartMode.ByEvent, \'StartTimeAuto\': SistarBatch.BatchStartMode.StartTimeAuto}BatchStatus = { \'Locked\': SistarBatch.BatchStatus.Locked, \'ReadyForRelease\': SistarBatch.BatchStatus.ReadyForRelease, \'Released\': SistarBatch.BatchStatus.Released}@func_set_timeout(timeout=5)def create_batch(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, recipe: int, line: int, productId: int, size: float, useDefaultSize: bool, startMode: str, plannedStartTimeYear: int, plannedStartTimeMonth: int, plannedStartTimeDay: int, plannedStartTimeHour: int, plannedStartTimeMin: int, plannedStartTimeSec: int, status: str, parameterList: Any, useDefaultParameterValues: bool, errorMessage: str, doRepeat: bool ): \"\"\" 创建工单 :param site: 1 :param area: 1 :param year: 2024 :param order: 1 :param batch:115 :param recipeCategory:1 :param recipe:9 :param line:1 :param productId:0 :param size:100 :param useDefaultSize:True :param startMode: \'Immediate\' :param plannedStartTimeYear: 2024 :param plannedStartTimeMonth: 12 :param plannedStartTimeDay: 1 :param status: \'ReadyForRelease\' :param parameterList: sistar_batch_params_instance :param useDefaultParameterValues: True :param errorMessage: \'\' :param doRepeat: False :return: \"\"\" error_message = errorMessage result = sistar_batch_instance.CreateBatch(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), UInt32(recipe), UInt32(line), UInt32(productId), Double(size), Boolean(useDefaultSize), BatchStartMode[startMode], DateTime(Int32(plannedStartTimeYear), Int32(plannedStartTimeMonth), Int32(plannedStartTimeDay), Int32(plannedStartTimeHour), Int32(plannedStartTimeMin), Int32(plannedStartTimeSec)), BatchStatus[status], parameterList, Boolean(useDefaultParameterValues), String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def create_batch_ex(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, recipe: int, line: int, productId: int, useDefaultProductId: bool, size: float, useDefaultSize: bool, startMode: str, plannedStartTimeYear: int, plannedStartTimeMonth: int, plannedStartTimeDay: int, plannedStartTimeHour: int, plannedStartTimeMin: int, plannedStartTimeSec: int, status: str, parameterList: Any, useDefaultParameterValues: bool, batcName: str, errorMessage: str, doRepeat: bool ): \"\"\" 创建工单Ex :param site: 1 :param area: 1 :param year: 2024 :param order: 1 :param batch:115 :param recipeCategory:1 :param recipe:9 :param line:1 :param productId:0 :param size:100 :param useDefaultSize:True :param startMode: \'Immediate\' :param plannedStartTimeYear: 2024 :param plannedStartTimeMonth: 12 :param plannedStartTimeDay: 1 :param status: \'ReadyForRelease\' :param parameterList: sistar_batch_params_instance :param useDefaultParameterValues: True :param errorMessage: \'\' :param doRepeat: False :return: \"\"\" error_message = errorMessage result = sistar_batch_instance.CreateBatchEx(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), UInt32(recipe), UInt32(line), UInt32(productId), Boolean(useDefaultProductId), Double(size), Boolean(useDefaultSize), BatchStartMode[startMode], DateTime(Int32(plannedStartTimeYear), Int32(plannedStartTimeMonth), Int32(plannedStartTimeDay), Int32(plannedStartTimeHour), Int32(plannedStartTimeMin), Int32(plannedStartTimeSec)), BatchStatus[status], parameterList, Boolean(useDefaultParameterValues), String(batcName), String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def delete_batch(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, errorMessage: str, doRepeat: bool ): error_message = errorMessage result = sistar_batch_instance.DeleteBatch(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def get_last_error(): result = sistar_batch_instance.GetLastError() return result@func_set_timeout(timeout=5)def get_last_full_error_string(): result = sistar_batch_instance.GetLastFullErrorString() return result@func_set_timeout(timeout=5)def set_batch_parameters(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, parameterList: Any, errorMessage: str, doRepeat: bool ): error_message = errorMessage result = sistar_batch_instance.SetBatchParameters(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), parameterList, String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def set_batch_size(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, size: float, errorMessage: str, doRepeat: bool ): error_message = errorMessage result = sistar_batch_instance.SetBatchSize(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), Double(size), String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def set_batch_start_data(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, startMode: str, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, plannedStartTimeHour: int, plannedStartTimeMin: int, plannedStartTimeSec: int, errorMessage: str, doRepeat: bool ): error_message = errorMessage result = sistar_batch_instance.SetBatchStartData(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), BatchStartMode[startMode], DateTime(Int32(plannedStartTimeYear), Int32(plannedStartTimeMonth), Int32(plannedStartTimeDay), Int32(plannedStartTimeHour), Int32(plannedStartTimeMin), Int32(plannedStartTimeSec)), String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def set_batch_status(site: int, area: int, year: int, order: int, batch: int, recipeCategory: int, status: str, errorMessage: str, doRepeat: bool ): error_message = errorMessage result = sistar_batch_instance.SetBatchStatus(UInt16(site), UInt16(area), UInt16(year), UInt32(order), UInt32(batch), UInt32(recipeCategory), BatchStatus[status], String(error_message), Boolean(doRepeat) ) return result@func_set_timeout(timeout=5)def set_timeout(timeout: int): result = sistar_batch_instance.SetTimeout(UInt16(timeout)) return result@func_set_timeout(timeout=5)def add_parameter(paramNumber: int, paramValue: str): result = sistar_batch_params_instance.AddParameter(UInt16(paramNumber), String(paramValue)) return result@func_set_timeout(timeout=5)def get_number_at(index: int): result = sistar_batch_params_instance.GetNumberAt(UInt32(index)) return result@func_set_timeout(timeout=5)def get_size(): result = sistar_batch_params_instance.GetSize() return result@func_set_timeout(timeout=5)def get_value_at(index: int): result = sistar_batch_params_instance.GetValueAt(UInt32(index)) return result@func_set_timeout(timeout=5)def fff(): return create_batch(site=1, area=1, year=2024, order=1, batch=115, recipeCategory=1, recipe=9 , line=1 , productId=0 , size=100 , useDefaultSize=True , startMode=\'Immediate\' , plannedStartTimeYear=2024 , plannedStartTimeMonth=12 , plannedStartTimeDay=1 , plannedStartTimeHour=12 , plannedStartTimeMin=12 , plannedStartTimeSec=1 , status=\'ReadyForRelease\' , parameterList=sistar_batch_params_instance , useDefaultParameterValues=True , errorMessage=\'\' , doRepeat=False)if __name__ == \'__main__\': try: f = fff() except func_timeout.exceptions.FunctionTimedOut: print(\'timeout\')
import func_timeoutfrom flask import requestfrom helpers import success_response, error_responsefrom . import api_bpfrom marshmallow import Schema, fieldsfrom .adapter import create_batch, sistar_batch_params_instance, create_batch_ex, delete_batch, get_last_error, \\ get_last_full_error_string, set_batch_parameters, set_batch_size, set_batch_start_data, set_batch_status, \\ set_timeout, add_parameter, get_number_at, get_size, get_value_atfrom get_logger import logger@api_bp.route(\'/create_batch\', methods=[\'POST\'])def create_batch_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: logger.info(f\"开始调用创建工单,参数:{res}\") logger.info(f\"开始调用创建工单,参数:{res}\") result = create_batch(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), res.get(\'recipe\'), res.get(\'line\'), res.get(\'productId\'), res.get(\'size\'), res.get(\'useDefaultSize\'), res.get(\'startMode\'), res.get(\'plannedStartTimeYear\'), res.get(\'plannedStartTimeMonth\'), res.get(\'plannedStartTimeDay\'), res.get(\'plannedStartTimeHour\'), res.get(\'plannedStartTimeMin\'), res.get(\'plannedStartTimeSec\'), \'Locked\', parameterList, res.get(\'useDefaultParameterValues\'), res.get(\'errorMessage\'), res.get(\'doRepeat\')) logger.info(f\"调用成功,braumat返回数据:{result}\") return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: logger.error(f\"调用超时\") return error_response(message=\'timeout\',code=504) except Exception as e: logger.error(f\"未捕获错误:{str(e)}\") return error_response(message=str(e))@api_bp.route(\'/create_batch_ex\', methods=[\'POST\'])def create_batch_ex_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = create_batch_ex(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), res.get(\'recipe\'), res.get(\'line\'), res.get(\'productId\'), res.get(\'useDefaultProductId\'), res.get(\'size\'), res.get(\'useDefaultSize\'), res.get(\'startMode\'), res.get(\'plannedStartTimeYear\'), res.get(\'plannedStartTimeMonth\'), res.get(\'plannedStartTimeDay\'), res.get(\'plannedStartTimeHour\'), res.get(\'plannedStartTimeMin\'), res.get(\'plannedStartTimeSec\'), \'Locked\', parameterList, res.get(\'useDefaultParameterValues\'), res.get(\'batcName\'), res.get(\'errorMessage\'), res.get(\'doRepeat\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/delete_batch\', methods=[\'POST\'])def delete_batch_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: logger.info(f\"开始调用删除工单,参数:{res}\") result = delete_batch(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), res.get(\'errorMessage\'), res.get(\'doRepeat\')) logger.info(f\"调用成功,braumat返回数据:{result}\") return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: logger.error(f\"调用超时\") return error_response(message=\'timeout\') except Exception as e: logger.error(f\"未捕获错误:{str(e)}\") return error_response(message=str(e))@api_bp.route(\'/get_last_error\', methods=[\'POST\'])def get_last_error_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" try: result = get_last_error() return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/get_last_full_error_string\', methods=[\'POST\'])def get_last_full_error_string_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" try: result = get_last_full_error_string() return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/set_batch_parameters\', methods=[\'POST\'])def set_batch_parameters_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = set_batch_parameters(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), parameterList, res.get(\'errorMessage\'), res.get(\'doRepeat\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/set_batch_size\', methods=[\'POST\'])def set_batch_size_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = set_batch_size(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), res.get(\'size\'), res.get(\'errorMessage\'), res.get(\'doRepeat\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/set_batch_start_data\', methods=[\'POST\'])def set_batch_start_data_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = set_batch_start_data(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), res.get(\'startMode\'), res.get(\'plannedStartTimeYear\'), res.get(\'plannedStartTimeMonth\'), res.get(\'plannedStartTimeDay\'), res.get(\'plannedStartTimeHour\'), res.get(\'plannedStartTimeMin\'), res.get(\'plannedStartTimeSec\'), res.get(\'errorMessage\'), res.get(\'doRepeat\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/set_batch_status\', methods=[\'POST\'])def set_batch_status_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = set_batch_status(res.get(\'site\'), res.get(\'area\'), res.get(\'year\'), res.get(\'order\'), res.get(\'batch\'), res.get(\'recipeCategory\'), res.get(\'status\'), res.get(\'errorMessage\'), res.get(\'doRepeat\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/set_timeout\', methods=[\'POST\'])def set_timeout_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = set_timeout(res.get(\'timeout\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/add_parameter\', methods=[\'POST\'])def add_parameter_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = add_parameter(res.get(\'paramNumber\'),res.get(\'paramValue\') ) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/get_number_at\', methods=[\'POST\'])def get_number_at_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = get_number_at(res.get(\'index\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/get_size\', methods=[\'POST\'])def get_size_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = get_size() return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))@api_bp.route(\'/get_value_at\', methods=[\'POST\'])def get_value_at_func(): \"\"\" site, area, year, order, batch, recipeCategory, recipe, line, productId, size, useDefaultSize,startMode, plannedStartTimeYear, plannedStartTimeMonth, plannedStartTimeDay, status,parameterList, useDefaultParameterValues, errorMessage,doRepeat :return: \"\"\" res = request.json parameterList = sistar_batch_params_instance try: result = get_value_at(res.get(\'index\')) return success_response(data=result) except func_timeout.exceptions.FunctionTimedOut: return error_response(message=\'timeout\') except Exception as e: return error_response(message=str(e))