unit uKsoap; interface uses Soap.SOAPHTTPClient,uSafeLog,System.SysUtils,uErrorInfo, System.StrUtils,System.Classes,Winapi.ActiveX,FMX.Forms, Soap.XSBuiltIns, Xml.XMLDoc; type TDevRecord=record ///mirror-plate/put/product/ P_ORG_CODE:string; //二维码 P_ORG_CODE_id:string;//二维码ID P_LOT:string; P_BC:string; P_PC:string; P_LINE:string; P_LINE_index:integer;//排序号 P_LINE_id:integer; P_LINE_NUM:string; P_LINE_name:string; P_LOT_TYPE:string; P_TROLLEY_NUM:string; P_DIE_NAME: string; P_COPPER_MODEL:string; P_BUFFER_TYPE:string; P_ID:string; P_CREATION_DATE:string; FP_User: string; FP_Pass: string; vParentId:Integer; vId:Integer; end; TDetailRecord=record P_ORG_CODE:string; P_LOT:string; P_BC:string; P_PC:string; P_LINE:string; P_LINE_NUM:string; P_LOT_TYPE:string; P_TROLLEY_NUM:string; P_COPPER_MODEL:string; P_BUFFER_TYPE:string; P_ID:string; P_CREATION_DATE:string; vParentId:Integer; vId:Integer; end; TLotNoRecord=record public vId:Integer; //0 P_ORG_CODE:string; P_NUM:string; P_LOT:string; P_PC: string; P_LINE: string; P_LINE_NUM:string; P_LOT_TYPE:string; P_BKfile:string; P_Buffer:string; //9 P_LINE_SPEED:Single; P_ELE_CUR_DENSITY:Single; P_ELE_AREA1: Single; P_ELE_AREA2: Single; P_COM_TEMPERATURE:Single; P_PRODUCT_PRESSURE: Single; P_PREHEATING_SEC:Single; P_COMPRESS_SEC:Single; P_STAMPING_DEPTH:Single; P_DIE_NAME:string; //19 P_DIE_USE_NUM: Single; P_NUM_PER_ARR: Single; P_Enable:string; P_UPPER_PRESSURE:Single; P_DOWN_PRESSURE: Single; P_SLICKER_ANGLE: Single; P_INK_KNIFE_ANGLE:Single; P_SLICKER_SPEED: Single; P_INK_KNIFE_SPEED:Single; P_MESH: string; //29 P_NET_SPACING: Single; P_EXPOSURE_TIME: Single; P_SLAB_THICKNESS:Single; P_JE_SETUP:Single; P_EXPOSURE_ENERGY:Single; P_DEVELOP_PRESSURE: Single; P_COUNTERPOINT_MODE:string; P_SHORT_CIRCUIT: string; P_ETCH_FACTOR: Single; P_RESOLUTION:Single; //39 P_SIDE: string; P_DRY_FILM_TYPE: string; P_NEGATIVE:string; P_SLICKER_PRESSURE: Single; P_INK_KNIFE_PRESSURE: Single; P_OFF_NET: Single; P_SLICKER_DEPTH: Single; P_INK_RETURN_KNIFE_DEPTH: Single; P_TROLLEY_NUM: string; P_TROLLEY_FLAG:string; //49 P_COPPER_MODEL:string; P_COMP_PROGRAM:string; P_COMP_AREA: string; P_PLATE_WIDTH: string; P_PLATE_HEIGHT:string; P_JET_FLOW:string; P_ID: Double; P_CREATION_DATE: string; // 57 //P_PROGRAM_NAME:String; //鐳射TDX檔案存放路徑,其餘製程傳空值即可 程式名稱/程式選擇 就是 P_Buffer位 //P_BUFFER_TYPE:String; //K38快壓緩衝材型,其餘製程傳空值即可 就是 P_Buffer位 constructor Create(const val:string); end; TKsoap = class private FP_ORG_CODE:string; //廠區 FP_WORK_NUM:string; //工號 FP_PC:string; //製程 FP_LINE:string; //線別 FP_LINE_NUM:string; //線別編號 FP_Lot:string; //批号 FP_Goods_Num:string; //料号 FP_Lot_Num:Integer; //批号数量 FP_Traceability_ID:double; //主表ID FThreadId:Integer; FFixture_Code:string; //治具ID FOnLine:boolean; public /// /// 廠區 /// property P_ORG_CODE: string read FP_ORG_CODE write FP_ORG_CODE; /// /// 工號 /// property P_WORK_NUM: string read FP_WORK_NUM write FP_WORK_NUM; /// /// 製程 /// property P_PC: string read FP_PC write FP_PC; /// /// 線別 /// property P_LINE: string read FP_LINE write FP_LINE; /// /// 線別編號 /// property P_LINE_NUM: string read FP_LINE_NUM write FP_LINE_NUM; property P_Lot: string read FP_Lot write FP_Lot; property P_Goods_Num: string read FP_Goods_Num write FP_Goods_Num; property P_Lot_Num:Integer read FP_Lot_Num write FP_Lot_Num; property P_Traceability_ID:double read FP_Traceability_ID write FP_Traceability_ID; property Fixture_Code:string read FFixture_Code write FFixture_Code; property OnLine:boolean read FOnLine write FOnLine; procedure ClearData(); //清除 廠區 工號 製程 線別 信息 constructor Create; virtual; destructor Destroy; override; /// 檢查批號和製程 設備是否匹配 /// 批號 /// 線別編號 /// 保留欄位,默認傳1,用以區分哪個系統調用 /// 收到OK表示傳入的批號當前製程和傳入的製程一致,且該批號能在這條線生產 /// 通過傳入批號檢查批號是否在此製程,是否可以在此設備生產 function XXCC_LOT_PC_F(vP_LOT,vP_LINE_NUM,vP_CHK_FLAG:string;var sError:string):boolean; /// 檢查工號 /// 廠區 /// 工號 /// 製程 /// 線別 /// 收到OK表示該在職人員屬於該廠區,且有作業資格 /// 通過傳入工號檢查該人員是否屬於該廠是否在職,是否有作業資格(有指定輔導員視為有作業資格) function xxcc_work_num_f(vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE:string;var sError:string):boolean; /// 獲取料號(CF Traceability有用到) /// 批號 /// 類型(默認為空) /// 返回值為:料號,當前製程,當前數量,該料號每包數量,該料號每箱數量,銅箔 /// 型號,緩衝材型號,壓合程式,壓合面積(紅色Mark部分只有當第二個參數傳RF_TRACE時才會返回) /// ,是否為emap,project name,smt pn,168客戶料號(藍色Mark部分只有當第二個參數傳EMAP時才會返回) ///,取第一個半角 /// 通過批號獲取料號 function getPartnum(vlot,vType:string;var sGoodsNo,sNum,sPC,sResult,sError:string):boolean; function getPartnumTime(vlot,vType:string;var sError:string):boolean; /// 獲取料號(CF Traceability有用到) /// 批號 /// 蚀溥铜etch/快压机fast_press /// /// 通過批號獲取料號 function xx_get_barcode_param_f(vP_org,vP_lot,vP_LINE_NUM,vP_type:string;var sError:string):boolean; function cm_bom_plasma_prg_f(vP_lot:string;var sResult,sError:string):boolean; function cf_traceability_seq_f(vP_ORG_CODE:string;var sError:string):Double; function Check_tool_or_equip_status_f(vP_lot,vP_LINE_NUM,vP_fixture_code_seq,vP_status:string;var sError:string):boolean; function Insert_cc_wip_lot_bc_history(DetailRecord:TDetailRecord;var sError:string):boolean; function Update_qty_time_p(vP_ID,vP_ACT_QTY,vP_END_TIME,vP_LINE_SPEED,vP_BK1,vP_BK2,vP_BK3:string;var sError:string):boolean; function get_barcode_param_f(vP_ORG_CODE,vP_Lot,vP_type,vP_Line_num:string;var sError:string):boolean; /// 批號基本信息(CF Traceability有用到) /// 廠區 /// 工號 /// 批號 /// 製程 /// 線別 /// /// 線別編號 /// 正常板/重工板 /// 是否需要檢查數據默認Y,需檢查 /// ID號,用於綁定每次掃的條碼,從cf_traceability_seq_f方法獲取 /// 收到OK表示傳入的批號當前製程和傳入的製程一致,且該批號能在這條線生產 /// 通過傳入廠區,工號,批號,料號,製程,線,線別,記錄批號的基本信息 function Insert_CM_WIP_PROCESS_LINE_HISTORY_NEW(LotNoRecord:TLotNoRecord;var sError:string):boolean; function return_default_values_f(var sResult,sError:string):boolean; function xxcf_get_layer_f(vP_Pn:string;var sResult,sError:string):boolean; function cm_mtl_trace_in_f(vP_mtl_barcode,vP_mtl_type:string;var sError:string):boolean; function xxcf_check_netboard_f(vP_part_num,vP_face,vp_nb_num:string;var sError:string):boolean; function ExecuteDataSet(vP_SQL:string;var sError:string):boolean; function Thread_XXCC_LOT_PC_F(vP_LOT,vP_LINE_NUM,vP_CHK_FLAG:string;var sError:string):boolean; function Thread_xxcc_work_num_f(vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE:string;var sError:string):boolean; function Thread_getPartnum(vlot,vType:string;var sGoodsNo,sNum,sPC,sResult,sError:string):boolean; function Thread_Insert_CM_WIP_PROCESS_LINE_HISTORY_NEW(LotNoRecord:TLotNoRecord;var sError:string):boolean; function Thread_return_default_values_f(var sResult,sError:string):boolean; function Thread_xxcf_get_layer_f(vP_Pn:string;var sResult,sError:string):boolean; function Thread_cm_mtl_trace_in_f(vP_mtl_barcode,vP_mtl_type:string;var sError:string):boolean; function Thread_xxcf_check_netboard_f(vP_part_num,vP_face,vp_nb_num:string;var sError:string):boolean; function Thread_xx_get_barcode_param_f(vP_org,vP_lot,vP_LINE_NUM,vP_type:string;var sError:string):boolean; function Thread_cm_bom_plasma_prg_f(vP_lot:string;var sResult,sError:string):boolean; function Thread_cf_traceability_seq_f(vP_ORG_CODE:string;var sError:string):Double; function Thread_Check_tool_or_equip_status_f(vP_lot,vP_LINE_NUM,vP_fixture_code_seq,vP_status:string;var sError:string):boolean; function Thread_Insert_cc_wip_lot_bc_history(DetailRecord:TDetailRecord;var sError:string):boolean; function Thread_Update_qty_time_p(vP_ID,vP_ACT_QTY,vP_END_TIME,vP_LINE_SPEED,vP_BK1,vP_BK2,vP_BK3:string;var sError:string):boolean; function Thread_get_barcode_param_f(vP_ORG_CODE,vP_Lot,vP_type,vP_Line_num:string;var sError:string):boolean; function Thread_ExecuteDataSet(vSQL:string;var sError:string):boolean; end; function ReplaceStrWork(Const Value:String):String; //去掉特殊字符 function Ksoap():TKsoap; var FKsoap:TKsoap; fDevRecord: TDevRecord; implementation // 如需动态扩展过滤字符,可改为参数化版本 function ReplaceStrWorkEx(const Value: string; const CharsToRemove: array of Char): string; var I, J: Integer; Builder: TStringBuilder; Skip: Boolean; begin Builder := TStringBuilder.Create; try for I := 1 to Length(Value) do begin Skip := False; for J := Low(CharsToRemove) to High(CharsToRemove) do begin if Value[I] = CharsToRemove[J] then begin Skip := True; Break; end; end; if not Skip then Builder.Append(Value[I]); end; Result := Builder.ToString; finally Builder.Free; end; end; function ReplaceStrWork(Const Value:String):String; //去掉特殊字符 begin // 调用示例:去除额外字符(如逗号) Result := ReplaceStrWorkEx(Value, ['[', ']', ' ', '''', '"']); end; constructor TLotNoRecord.Create(const val:string); begin P_LOT_TYPE:='正常板'; //正常板/重工板 P_BKfile:='-1'; //鐳射TDX檔案存放路徑,其餘製程傳空值即可程式名稱/程式選擇 P_Buffer:='-1'; //K38快壓緩衝材型,其餘製程傳空值即可 P_LINE_SPEED:=-1; //傳動線速/傳動速度(M/min)/電鍍時間(min) P_ELE_CUR_DENSITY:=-1; //電流密度(ASF) P_ELE_AREA1:=-1; //面積設定1(FT2)/面積設定A(SF) P_ELE_AREA2:=-1; //面積設定2(FT2) /面積設定B(SF) P_COM_TEMPERATURE:=-1; //壓合溫度(℃) P_PRODUCT_PRESSURE:=-1; //製品壓力(kg/cm2) P_PREHEATING_SEC:=-1; //預熱時間(S)/抽真空時間(S) P_COMPRESS_SEC:=-1; //壓合時間(Sec) P_STAMPING_DEPTH:=-1; //衝壓深度(mm P_DIE_NAME:='-1'; P_DIE_USE_NUM:=-1; P_NUM_PER_ARR:=-1; P_Enable:='-1'; P_UPPER_PRESSURE:=-1; P_DOWN_PRESSURE:=-1; P_SLICKER_ANGLE:=-1; //刮刀角度 P_INK_KNIFE_ANGLE:=-1; //覆墨刀角度 P_SLICKER_SPEED:=-1; P_INK_KNIFE_SPEED:=-1; P_MESH:='-1'; P_NET_SPACING:=-1; P_EXPOSURE_TIME:=-1; P_SLAB_THICKNESS:=-1; P_JE_SETUP:=-1; P_EXPOSURE_ENERGY:=-1; P_DEVELOP_PRESSURE:=-1; P_COUNTERPOINT_MODE:='-1'; P_SHORT_CIRCUIT:='-1'; P_ETCH_FACTOR:=-1; P_RESOLUTION:=-1; P_SIDE:='-1'; P_DRY_FILM_TYPE:='-1'; P_NEGATIVE:='-1'; P_SLICKER_PRESSURE:=-1; P_INK_KNIFE_PRESSURE:=-1; P_OFF_NET:=-1; P_SLICKER_DEPTH:=-1; P_INK_RETURN_KNIFE_DEPTH:=-1; P_TROLLEY_NUM:='-1'; P_TROLLEY_FLAG:='-1'; P_COPPER_MODEL:='-1'; P_COMP_PROGRAM:='-1'; P_COMP_AREA:='-1'; P_PLATE_WIDTH:='-1'; //板寬 P_PLATE_HEIGHT:='-1'; //板高 P_JET_FLOW:='-1'; P_ID:=0; P_CREATION_DATE:='-1'; end; function Ksoap():TKsoap; begin if FKsoap = nil then FKsoap := TKsoap.Create; Result := FKsoap; end; constructor TKsoap.Create; begin inherited; ClearData(); end; destructor TKsoap.Destroy; begin inherited Destroy; end; procedure TKsoap.ClearData(); //清除 廠區 工號 製程 線別 信息 begin P_ORG_CODE:=''; P_WORK_NUM:=''; P_PC:=''; P_LINE:=''; FP_LINE_NUM:=''; end; function TKsoap.xxcc_work_num_f(vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE:string;var sError:string):boolean; //var // a:compeq_webservice.xxcc_work_num_f; // Response:xxcc_work_num_fResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.xxcc_work_num_f.create; try // a.P_ORG_CODE:=vP_ORG_CODE; // a.P_WORK_NUM:=vP_WORK_NUM; // a.P_PC:=vP_PC; // a.P_LINE:=vP_LINE; // DbApiLog.MessageInfo('xxcc_work_num_f 请求:P_ORG_CODE=%s,P_WORK_NUM=%s,P_PC=%s,P_LINE=%s',[vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE]); // try // Response:=compeq_webservice.GetServiceSoap().xxcc_work_num_f(a); //System.False,'',FRIO // Result:=Response.xxcc_work_num_fResult.ToUpper='OK'; // DbApiLog.MessageInfo('xxcc_work_num_f 返回:%s',[Response.xxcc_work_num_fResult]); // if Result then // begin // FP_ORG_CODE:=vP_ORG_CODE; // FP_WORK_NUM:=vP_WORK_NUM; // FP_PC:=vP_PC; // FP_LINE:=vP_LINE; // end // else //返回出错信息 // begin // sError:= Response.xxcc_work_num_fResult; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('xxcc_work_num_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.XXCC_LOT_PC_F(vP_LOT,vP_LINE_NUM,vP_CHK_FLAG:string;var sError:string):boolean; //var // a:compeq_webservice.XXCC_LOT_PC_F; // Response:XXCC_LOT_PC_FResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.XXCC_LOT_PC_F.create; try // a.P_ORG_CODE:=FP_ORG_CODE; // a.P_LOT:=vP_LOT; // a.P_PC:=FP_PC; // a.P_LINE:=FP_LINE; // a.P_LINE_NUM:=vP_LINE_NUM; // a.P_CHK_FLAG:=vP_CHK_FLAG; // DbApiLog.MessageInfo('XXCC_LOT_PC_F 请求:P_ORG_CODE=%s,P_LOT=%s,P_PC=%s,P_LINE=%s,P_LINE_NUM=%s,P_CHK_FLAG=%s',[FP_ORG_CODE,vP_LOT,FP_PC,FP_LINE,vP_LINE_NUM,vP_CHK_FLAG]); // try // Response:=GetServiceSoap().XXCC_LOT_PC_F(a); // Result:=Response.XXCC_LOT_PC_FResult.ToUpper='OK'; // if Result then // begin // FP_LINE_NUM:=vP_LINE_NUM; // FP_Lot:=vP_LOT; // end; // DbApiLog.MessageInfo('XXCC_LOT_PC_F 返回:%s',[Response.XXCC_LOT_PC_FResult]); // if not Result then //返回出错信息 // begin // sError:=Response.XXCC_LOT_PC_FResult; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('XXCC_LOT_PC_F 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.getPartnum(vlot,vType:string;var sGoodsNo,sNum,sPC,sResult,sError:string):boolean; var // a:compeq_webservice.method1; // Response:method1Response; tmpList:Tstrings; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; sGoodsNo:=''; sNum:='0'; sPc:=''; if FP_LINE='AOI檢測' then vType:='AOI'; if FP_LINE='朗華快壓機' then vType:='RF_TRACE'; tmpList:=TStringlist.Create; // a:=compeq_webservice.method1.create; try // a.vlot:=vlot; // a.vtype:=vType; // DbApiLog.MessageInfo('getPartnum 请求:vlot=%s,vtype=%s',[vlot,vType]); // try // Response:=GetServiceSoap().getPartnum(a); // Result:=Pos('N1,',Response.method1Result.ToUpper)=0; // DbApiLog.MessageInfo('getPartnum 返回:%s',[Response.method1Result]); // sResult:=Response.method1Result; // tmpList.DelimitedText:=Response.method1Result; // tmplist.Delimiter:=','; // if (tmpList.Count>3) then // begin // sGoodsNo:=tmpList.Strings[0]; // FP_Goods_Num:=sGoodsNo; // sNum:=tmpList.Strings[2]; // FP_Lot_Num:=StrToIntDef(sNum,0); // sPC:=tmpList.Strings[1]; // end; // // if not Result then //返回出错信息 // begin // sError:=Response.method1Result; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('getPartnum 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; tmpList.Free; end; end; function TKsoap.getPartnumTime(vlot,vType:string;var sError:string):boolean; var // a:compeq_webservice.method1; // Response:method1Response; tmpList:Tstrings; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; if FP_LINE='AOI檢測' then vType:='AOI'; if FP_LINE='朗華快壓機' then vType:='RF_TRACE'; tmpList:=TStringlist.Create; // a:=compeq_webservice.method1.create; try // a.vlot:=vlot; // a.vtype:=vType; // DbApiLog.MessageInfo('getPartnum 请求:vlot=%s,vtype=%s',[vlot,vType]); // try // Response:=GetServiceSoap().getPartnum(a); // Result:=Pos('N1,',Response.method1Result.ToUpper)=0; // DbApiLog.MessageInfo('getPartnum 返回:%s',[Response.method1Result]); // sError:=Response.method1Result; // tmpList.DelimitedText:=Response.method1Result.Replace(' ','T'); // tmplist.Delimiter:=','; // if (tmpList.Count>5) then // begin // sError:= tmpList.Strings[5]; // end; // // if not Result then //返回出错信息 // begin // sError:=Response.method1Result; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('getPartnum 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; tmpList.Free; end; end; function TKsoap.xx_get_barcode_param_f(vP_org,vP_lot,vP_LINE_NUM,vP_type:string;var sError:string):boolean; //var // a:compeq_webservice.xx_get_barcode_param_f; // Response:xx_get_barcode_param_fResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.xx_get_barcode_param_f.create; try // a.p_org:=vP_org; // a.p_lot:=vP_lot; // a.P_LINE_NUM:=vP_LINE_NUM; // a.p_type:=vP_type; // DbApiLog.MessageInfo('xx_get_barcode_param_f 请求:p_org=%s,p_lot=%s,P_LINE_NUM=%s,p_type=%s',[vP_org,vP_lot,vP_LINE_NUM,vP_type]); // try // Response:=GetServiceSoap().xx_get_barcode_param_f(a); // Result:=Pos('N1,',Response.xx_get_barcode_param_fResult.ToUpper)=0; // DbApiLog.MessageInfo('xx_get_barcode_param_f 返回:%s',[Response.xx_get_barcode_param_fResult]); // if not Result then //返回出错信息 // begin // sError:=Response.xx_get_barcode_param_fResult; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('xx_get_barcode_param_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.cm_bom_plasma_prg_f(vP_lot:string;var sResult,sError:string):boolean; //var // a:compeq_webservice.cm_bom_plasma_prg_f; // Response:cm_bom_plasma_prg_fResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.cm_bom_plasma_prg_f.create; try // a.P_ORG_CODE:=FP_ORG_CODE; // a.p_lot:=vP_lot; // DbApiLog.MessageInfo('cm_bom_plasma_prg_f 请求:P_ORG_CODE=%s,p_lot=%s',[FP_ORG_CODE,vP_lot]); // try // Response:=GetServiceSoap().cm_bom_plasma_prg_f(a); // Result:=Pos('OK:',Response.cm_bom_plasma_prg_fResult.ToUpper)>0; // DbApiLog.MessageInfo('cm_bom_plasma_prg_f 返回:%s',[Response.cm_bom_plasma_prg_fResult]); // sResult:=StringReplace(Response.cm_bom_plasma_prg_fResult.ToUpper,'OK:','',[]); // if not Result then //返回出错信息 // begin // sError:=Response.cm_bom_plasma_prg_fResult; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('cm_bom_plasma_prg_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.Check_tool_or_equip_status_f(vP_lot,vP_LINE_NUM,vP_fixture_code_seq,vP_status:string;var sError:string):boolean; //var // a:compeq_webservice.method11; // Response:method11Response; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.method11.create; try // a.p_lot:=vP_lot; // a.p_process_code:=FP_PC; // a.p_line:=FP_LINE; // a.p_line_num:=vP_LINE_NUM; // a.p_fixture_code_seq:=vP_fixture_code_seq; // a.p_status:=vP_status; // DbApiLog.MessageInfo('Check_tool_or_equip_status_f 请求:p_lot=%s,p_process_code=%s,p_line=%s,p_line_num=%s,p_fixture_code_seq=%s,p_status=%s', // [vP_lot,FP_PC,FP_LINE,vP_LINE_NUM,vP_fixture_code_seq,vP_status]); // try // Response:=GetServiceSoap().check_tool_or_equip_status_f(a); // Result:=Response.method11Result.ToUpper='Y'; // DbApiLog.MessageInfo('Check_tool_or_equip_status_f 返回:%s',[Response.method11Result]); // if not Result then //返回出错信息 // begin // sError:=Response.method11Result; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('Check_tool_or_equip_status_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; //插入从表 function TKsoap.Insert_cc_wip_lot_bc_history(DetailRecord:TDetailRecord;var sError:string):boolean; //var // a:compeq_webservice.method10; // Response:method10Response; begin Result:=false; sError:=''; // a:=compeq_webservice.method10.create; try // a.P_ORG_CODE:=DetailRecord.P_ORG_CODE; // 廠區 // a.P_LOT:=DetailRecord.P_lot; // 批號 // a.P_BC:=DetailRecord.P_BC; // 條碼(批號10碼+PNL3碼) // a.P_PC:=DetailRecord.P_PC; // 製程 // a.P_LINE:=DetailRecord.P_LINE; // 線別 // a.P_LINE_NUM:=DetailRecord.P_LINE_NUM; // 線別編號 // a.P_LOT_TYPE:=DetailRecord.P_LOT_TYPE; // 正常板/重工板 // a.P_TROLLEY_NUM:=DetailRecord.P_TROLLEY_NUM; // 台車編號 // a.P_COPPER_MODEL:=DetailRecord.P_COPPER_MODEL; // 銅箔型號 // a.P_BUFFER_TYPE:=DetailRecord.P_BUFFER_TYPE; // 緩衝材型號 // a.P_ID:=DetailRecord.P_ID.ToDouble; // ID號,需與主檔的ID號相同 // a.P_CREATION_DATE:=DetailRecord.P_CREATION_DATE; //当前时间 // with DetailRecord do // DbApiLog.MessageInfo('Insert_cc_wip_lot_bc_history 请求:P_ORG_CODE=%s,P_LOT=%s,P_BC=%s,P_PC=%s,P_LINE=%s,P_LINE_NUM=%s,P_LOT_TYPE=%s,P_TROLLEY_NUM=%s,P_COPPER_MODEL=%s,P_BUFFER_TYPE=%s,P_ID=%s,P_CREATION_DATE=%s', // [P_ORG_CODE,P_lot,P_BC,FP_PC,P_LINE,P_LINE_NUM,P_LOT_TYPE,P_TROLLEY_NUM,P_COPPER_MODEL,P_BUFFER_TYPE,P_ID,P_CREATION_DATE]); // try // Response:=GetServiceSoap().insert_cc_wip_lot_bc_history(a); // Result:=Response.method10Result.ToUpper='OK'; // // DataLog.MessageInfo('%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,返回:%s',[DetailRecord.P_ORG_CODE,DetailRecord.P_lot,DetailRecord.P_BC,DetailRecord.P_PC,DetailRecord.P_LINE,DetailRecord.P_LINE_NUM,DetailRecord.P_LOT_TYPE,DetailRecord.P_TROLLEY_NUM,DetailRecord.P_COPPER_MODEL,DetailRecord.P_BUFFER_TYPE,DetailRecord.P_ID,DetailRecord.P_CREATION_DATE,Response.method10Result]); // // DbApiLog.MessageInfo('Insert_cc_wip_lot_bc_history 返回:%s',[Response.method10Result]); // if not Result then //返回出错信息 // begin // sError:=Response.method10Result; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('Insert_cc_wip_lot_bc_history 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.Update_qty_time_p(vP_ID,vP_ACT_QTY,vP_END_TIME,vP_LINE_SPEED,vP_BK1,vP_BK2,vP_BK3:string;var sError:string):boolean; //var // a:compeq_webservice.method12; // Response:method12Response; begin Result:=false; // a:=compeq_webservice.method12.create; try // a.P_ID:=vP_ID; // a.P_ACT_QTY:=vP_ACT_QTY; //数量 // a.P_END_TIME:=vP_END_TIME; //时间 // a.P_LINE_SPEED:=vP_LINE_SPEED.ToSingle; //线速 // a.P_BK1:=vP_BK1; //时间 -1 // a.P_BK2:=vP_BK2; //时间 -1 // a.P_BK3:=vP_BK3; //时间 -1 // DbApiLog.MessageInfo('Update_qty_time_p 请求:P_ID=%s,P_ACT_QTY=%s,P_END_TIME=%s,P_LINE_SPEED=%s,P_BK1=%s,P_BK2=%s,P_BK3=%s',[vP_ID,vP_ACT_QTY,vP_END_TIME,vP_LINE_SPEED,vP_BK1,vP_BK2,vP_BK3]); // try // Response:=GetServiceSoap().update_qty_time_p(a); // Result:=Response.method12Result.ToUpper='OK'; // DbApiLog.MessageInfo('Update_qty_time_p 返回:%s',[Response.method12Result]); // if not Result then //返回出错信息 // begin // sError:=Response.method12Result; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('Update_qty_time_p 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; //插入主表 function TKsoap.Insert_CM_WIP_PROCESS_LINE_HISTORY_NEW(LotNoRecord:TLotNoRecord;var sError:string):boolean; var // a:compeq_webservice.method9; // Response:method9Response; i:integer; begin Result:=false; // a:=compeq_webservice.method9.create; try // a.P_ORG_CODE:=LotNoRecord.P_ORG_CODE; //廠區 // a.P_NUM:=LotNoRecord.P_NUM; //工號 // a.P_LOT:=LotNoRecord.P_LOT; // a.P_PC:=LotNoRecord.P_PC; //製程 // a.P_LINE:=LotNoRecord.P_LINE; //線別 // a.P_LINE_NUM:=LotNoRecord.P_LINE_NUM; //線別編號 // // a.P_LOT_TYPE:=LotNoRecord.P_LOT_TYPE; // a.P_BKfile:=LotNoRecord.P_BKfile; // a.P_Buffer:=LotNoRecord.P_Buffer; // a.P_LINE_SPEED:=LotNoRecord.P_LINE_SPEED; // a.P_ELE_CUR_DENSITY:=LotNoRecord.P_ELE_CUR_DENSITY; // a.P_ELE_AREA1:=LotNoRecord.P_ELE_AREA1; // a.P_ELE_AREA2:=LotNoRecord.P_ELE_AREA2; // a.P_COM_TEMPERATURE:=LotNoRecord.P_COM_TEMPERATURE; // a.P_PRODUCT_PRESSURE:=LotNoRecord.P_PRODUCT_PRESSURE; // a.P_PREHEATING_SEC:=LotNoRecord.P_PREHEATING_SEC; // a.P_COMPRESS_SEC:=LotNoRecord.P_COMPRESS_SEC; // a.P_STAMPING_DEPTH:=LotNoRecord.P_STAMPING_DEPTH; // a.P_DIE_NAME:=LotNoRecord.P_DIE_NAME; // a.P_DIE_USE_NUM:=LotNoRecord.P_DIE_USE_NUM; // a.P_NUM_PER_ARR:=LotNoRecord.P_NUM_PER_ARR; // a.P_Enable:=LotNoRecord.P_Enable; // a.P_UPPER_PRESSURE:=LotNoRecord.P_UPPER_PRESSURE; // a.P_DOWN_PRESSURE:=LotNoRecord.P_DOWN_PRESSURE; // a.P_SLICKER_ANGLE:=LotNoRecord.P_SLICKER_ANGLE; // a.P_INK_KNIFE_ANGLE:=LotNoRecord.P_INK_KNIFE_ANGLE; // a.P_SLICKER_SPEED:=LotNoRecord.P_SLICKER_SPEED; // a.P_INK_KNIFE_SPEED:=LotNoRecord.P_INK_KNIFE_SPEED; // a.P_MESH:=LotNoRecord.P_MESH; // a.P_NET_SPACING:=LotNoRecord.P_NET_SPACING; // a.P_EXPOSURE_TIME:=LotNoRecord.P_EXPOSURE_TIME; // a.P_SLAB_THICKNESS:=LotNoRecord.P_SLAB_THICKNESS; // a.P_JE_SETUP:=LotNoRecord.P_JE_SETUP; // a.P_EXPOSURE_ENERGY:=LotNoRecord.P_EXPOSURE_ENERGY; // a.P_DEVELOP_PRESSURE:=LotNoRecord.P_DEVELOP_PRESSURE; // a.P_COUNTERPOINT_MODE:=LotNoRecord.P_COUNTERPOINT_MODE; // a.P_SHORT_CIRCUIT:=LotNoRecord.P_SHORT_CIRCUIT; // a.P_ETCH_FACTOR:=LotNoRecord.P_ETCH_FACTOR; // a.P_RESOLUTION:=LotNoRecord.P_RESOLUTION; // a.P_SIDE:=LotNoRecord.P_SIDE; // a.P_DRY_FILM_TYPE:=LotNoRecord.P_DRY_FILM_TYPE; // a.P_NEGATIVE:=LotNoRecord.P_NEGATIVE; // a.P_SLICKER_PRESSURE:=LotNoRecord.P_SLICKER_PRESSURE; // a.P_INK_KNIFE_PRESSURE:=LotNoRecord.P_INK_KNIFE_PRESSURE; // a.P_OFF_NET:=LotNoRecord.P_OFF_NET; // a.P_SLICKER_DEPTH:=LotNoRecord.P_SLICKER_DEPTH; // a.P_INK_RETURN_KNIFE_DEPTH:=LotNoRecord.P_INK_RETURN_KNIFE_DEPTH; // a.P_TROLLEY_NUM:=LotNoRecord.P_TROLLEY_NUM; // a.P_TROLLEY_FLAG:=LotNoRecord.P_TROLLEY_FLAG; // a.P_COPPER_MODEL:=LotNoRecord.P_COPPER_MODEL; // a.P_COMP_PROGRAM:=LotNoRecord.P_COMP_PROGRAM; // a.P_COMP_AREA:=LotNoRecord.P_COMP_AREA; // a.P_PLATE_WIDTH:=LotNoRecord.P_PLATE_WIDTH; // a.P_PLATE_HEIGHT:=LotNoRecord.P_PLATE_HEIGHT; // a.P_JET_FLOW:=LotNoRecord.P_JET_FLOW; // a.P_ID:=LotNoRecord.P_ID; // a.P_CREATION_DATE:=LotNoRecord.P_CREATION_DATE; // // DbApiLog.MessageInfo('method9 请求:P_ORG_CODE=%s,P_NUM=%s,P_LOT=%s,P_PC=%s,P_LINE=%s,P_LINE_NUM=%s,' // +'P_LOT_TYPE=%s,P_BKfile=%s,P_Buffer=%s,P_LINE_SPEED=%s,P_ELE_CUR_DENSITY=%s,P_ELE_AREA1=%s,' // +'P_ELE_AREA2=%s,P_COM_TEMPERATURE=%s,P_PRODUCT_PRESSURE=%s,P_PREHEATING_SEC=%s,P_COMPRESS_SEC=%s,' // +'P_STAMPING_DEPTH=%s,P_DIE_NAME=%s,P_DIE_USE_NUM=%s,P_NUM_PER_ARR=%s,P_Enable=%s,P_UPPER_PRESSURE=%s,' // +'P_DOWN_PRESSURE=%s,P_SLICKER_ANGLE=%s,P_INK_KNIFE_ANGLE=%s,P_SLICKER_SPEED=%s,P_INK_KNIFE_SPEED=%s,' // +'P_MESH=%s,P_NET_SPACING=%s,P_EXPOSURE_TIME=%s,P_SLAB_THICKNESS=%s,P_JE_SETUP=%s,P_EXPOSURE_ENERGY=%s,' // +'P_DEVELOP_PRESSURE=%s,P_COUNTERPOINT_MODE=%s,P_SHORT_CIRCUIT=%s,P_ETCH_FACTOR=%s,P_RESOLUTION=%s,' // +'P_SIDE=%s,P_DRY_FILM_TYPE=%s,P_NEGATIVE=%s,P_SLICKER_PRESSURE=%s,P_INK_KNIFE_PRESSURE=%s,P_OFF_NET=%s,' // +'P_SLICKER_DEPTH=%s,P_INK_RETURN_KNIFE_DEPTH=%s,P_TROLLEY_NUM=%s,P_TROLLEY_FLAG=%s,P_COPPER_MODEL=%s,' // +'P_COMP_PROGRAM=%s,P_COMP_AREA=%s,P_PLATE_WIDTH=%s,P_PLATE_HEIGHT=%s,P_JET_FLOW=%s,P_ID=%s,' // +'P_CREATION_DATE=%s' // ,[a.P_ORG_CODE,a.P_NUM,a.P_LOT,a.P_PC,a.P_LINE,a.P_LINE_NUM,a.P_LOT_TYPE,a.P_BKfile,a.P_Buffer,a.P_LINE_SPEED.ToString, // a.P_ELE_CUR_DENSITY.ToString,a.P_ELE_AREA1.ToString,a.P_ELE_AREA2.ToString,a.P_COM_TEMPERATURE.ToString,a.P_PRODUCT_PRESSURE.ToString,a.P_PREHEATING_SEC.ToString, // a.P_COMPRESS_SEC.ToString,a.P_STAMPING_DEPTH.ToString,a.P_DIE_NAME,a.P_DIE_USE_NUM.ToString,a.P_NUM_PER_ARR.ToString,a.P_Enable,a.P_UPPER_PRESSURE.ToString, // a.P_DOWN_PRESSURE.ToString,a.P_SLICKER_ANGLE.ToString,a.P_INK_KNIFE_ANGLE.ToString,a.P_SLICKER_SPEED.ToString,a.P_INK_KNIFE_SPEED.ToString,a.P_MESH,a.P_NET_SPACING.ToString, // a.P_EXPOSURE_TIME.ToString,a.P_SLAB_THICKNESS.ToString,a.P_JE_SETUP.ToString,a.P_EXPOSURE_ENERGY.ToString,a.P_DEVELOP_PRESSURE.ToString,a.P_COUNTERPOINT_MODE, // a.P_SHORT_CIRCUIT,a.P_ETCH_FACTOR.ToString,a.P_RESOLUTION.ToString,a.P_SIDE,a.P_DRY_FILM_TYPE,a.P_NEGATIVE,a.P_SLICKER_PRESSURE.ToString, // a.P_INK_KNIFE_PRESSURE.ToString,a.P_OFF_NET.ToString,a.P_SLICKER_DEPTH.ToString,a.P_INK_RETURN_KNIFE_DEPTH.ToString,a.P_TROLLEY_NUM,a.P_TROLLEY_FLAG, // a.P_COPPER_MODEL,a.P_COMP_PROGRAM,a.P_COMP_AREA,a.P_PLATE_WIDTH,a.P_PLATE_HEIGHT,a.P_JET_FLOW,a.P_ID.ToString,a.P_CREATION_DATE]); // // try // Response:=GetServiceSoap().Insert_CM_WIP_PROCESS_LINE_HISTORY_NEW(a); // Result:=Response.method9Result.ToUpper='OK'; // DbApiLog.MessageInfo('method9 返回:%s',[Response.method9Result]); // if not Result then //返回出错信息 // begin // sError:=Response.method9Result; // end; // except // on e:Exception do // begin // Result:=false; // DbApiLog.Error('method9 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; //获取主表ID function TKsoap.cf_traceability_seq_f(vP_ORG_CODE:string;var sError:string):Double; //var // a:compeq_webservice.cf_traceability_seq_f; // Response:cf_traceability_seq_fResponse; begin Result:=0; // a:=compeq_webservice.cf_traceability_seq_f.create; try // a.p_orgcode:=vP_ORG_CODE; // DbApiLog.MessageInfo('cf_traceability_seq_f 请求:p_orgcode=%s',[a.p_orgcode]); // try // Response:=compeq_webservice.GetServiceSoap().cf_traceability_seq_f(a); //System.False,'',FRIO // Result:=Response.cf_traceability_seq_fResult; // if Result<>0 then FP_Traceability_ID:=Result; // // DbApiLog.MessageInfo('cf_traceability_seq_f 返回:%s',[Response.cf_traceability_seq_fResult.tostring]); // except // on e:Exception do // begin // DbApiLog.Error('cf_traceability_seq_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.get_barcode_param_f(vP_ORG_CODE,vP_Lot,vP_type,vP_Line_num:string;var sError:string):boolean; //var // a:compeq_webservice.xx_get_barcode_param_f; // Response:xx_get_barcode_param_fResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.xx_get_barcode_param_f.create; try // a.p_org:=vP_ORG_CODE; // a.p_lot:=vP_Lot; // a.p_type:=vP_type; // a.p_line_num:=vP_Line_num; // DbApiLog.MessageInfo('xx_get_barcode_param_f 请求:p_orgcode=%s',[vP_ORG_CODE]); // try // Response:=compeq_webservice.GetServiceSoap().xx_get_barcode_param_f(a); // // DbApiLog.MessageInfo('xx_get_barcode_param_f 返回:%d',[Response.xx_get_barcode_param_fResult]); // except // on e:Exception do // begin // DbApiLog.Error('xx_get_barcode_param_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.return_default_values_f(var sResult,sError:string):boolean; //var // a:compeq_webservice.return_default_values_f; // Response:return_default_values_fResponse; begin if not FOnLine then begin sResult:='';Result:=true;Exit; end; if FP_Line.ToUpper='PLASMA' then begin Result:=cm_bom_plasma_prg_f(FP_LOT,sResult,sError); Exit; end; Result:=false; // a:=compeq_webservice.return_default_values_f.create; try // a.P_ORG_CODE:=FP_ORG_CODE; // a.P_LOT:=FP_LOT; // a.P_PC:=FP_PC; // A.P_LINE:=FP_Line; // DbApiLog.MessageInfo('return_default_values_f 请求:P_ORG_CODE=%s,P_LOT=%s,P_PC=%s,P_LINE=%s',[a.P_ORG_CODE,a.P_LOT,a.P_PC,a.P_LINE]); // try // Response:=compeq_webservice.GetServiceSoap().return_default_values_f(a); // // DbApiLog.MessageInfo('return_default_values_f 返回:%s',[Response.return_default_values_fResult]); // sResult:=Response.return_default_values_fResult; // if sResult='未抓到默認值' then // begin // if FP_Line.ToUpper='PLASMA' then // begin // sResult:=StringReplace(FP_PC,'-R','',[]); // Result:=true; // end // else // begin // Result:=true; // sResult:=''; // end; // end // else // Result:=Pos(',',sResult)>0; // except // on e:Exception do // begin // DbApiLog.Error('return_default_values_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.xxcf_get_layer_f(vP_Pn:string;var sResult,sError:string):boolean; //var // a:compeq_webservice.xxcf_get_layer_f; // Response:xxcf_get_layer_fResponse; begin if not FOnLine then begin sResult:='';Result:=true;Exit; end; if (FP_LINE='AOI檢測') or (FP_LINE='STS VRS') or (FP_LINE='ORC曝光機') or (FP_LINE='油墨印刷機') or (FP_LINE='景暉印刷機') then //只有这两种情况才调用 begin Result:=false; // a:=compeq_webservice.xxcf_get_layer_f.create; // try // a.p_org:=FP_ORG_CODE; // a.p_pn:=vP_Pn; // a.p_process_code:=FP_PC; // DbApiLog.MessageInfo('xxcf_get_layer_f 请求:p_org=%s,p_pn=%s,p_process_code=%s',[a.p_org,a.p_pn,a.p_process_code]); // try // Response:=compeq_webservice.GetServiceSoap().xxcf_get_layer_f(a); // // DbApiLog.MessageInfo('xxcf_get_layer_f 返回:%s',[Response.xxcf_get_layer_fResult]); // sResult:=Response.xxcf_get_layer_fResult; // Result:=Pos(',',sResult)>0; // except // on e:Exception do // begin // DbApiLog.Error('xxcf_get_layer_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; // finally // a.Free; // end; end else begin sResult:=''; Result:=true; end; end; function TKsoap.cm_mtl_trace_in_f(vP_mtl_barcode,vP_mtl_type:string;var sError:string):boolean; //var // a:compeq_webservice.cm_mtl_trace_in_f; // Response:cm_mtl_trace_in_fResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.cm_mtl_trace_in_f.create; try // a.p_lot_num:=FP_LOT; //批号 // a.p_work_num:=FP_WORK_NUM; //工号 // a.p_mtl_barcode:=vP_mtl_barcode; // a.p_mtl_type:=vP_mtl_type; // DbApiLog.MessageInfo('cm_mtl_trace_in_f 请求:p_lot_num=%s,p_work_num=%s,p_mtl_barcode=%s,p_mtl_type=%s',[a.p_lot_num,a.p_work_num,a.p_mtl_barcode,a.p_mtl_type]); // try // Response:=compeq_webservice.GetServiceSoap().cm_mtl_trace_in_f(a); // // DbApiLog.MessageInfo('cm_mtl_trace_in_f 返回:%s',[Response.cm_mtl_trace_in_fResult]); // Result:=Pos('Y,',Response.cm_mtl_trace_in_fResult)>0; // if not Result then //返回出错信息 // begin // sError:=Response.cm_mtl_trace_in_fResult; // end; // except // on e:Exception do // begin // DbApiLog.Error('cm_mtl_trace_in_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.xxcf_check_netboard_f(vP_part_num,vP_face,vp_nb_num:string;var sError:string):boolean; //var // a:compeq_webservice.xxcf_check_netboard_f; // Response:xxcf_check_netboard_fResponse; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.xxcf_check_netboard_f.create; try // a.p_org_code:=FP_ORG_CODE; // a.p_part_num:=vP_part_num; //料号 // a.p_process_code:=FP_PC; // a.p_face:=vP_face; // a.p_nb_num:=vp_nb_num; // DbApiLog.MessageInfo('xxcf_check_netboard_f 请求:p_org_code=%s,p_part_num=%s,p_process_code=%s,p_face=%s,p_nb_num=%s',[a.p_org_code,a.p_part_num,a.p_process_code,a.p_face,a.p_nb_num]); // try // Response:=compeq_webservice.GetServiceSoap().xxcf_check_netboard_f(a); // // DbApiLog.MessageInfo('xxcf_check_netboard_f 返回:%s',[Response.xxcf_check_netboard_fResult]); // Result:=Response.xxcf_check_netboard_fResult.ToUpper='OK'; // if not Result then //返回出错信息 // begin // sError:=Response.xxcf_check_netboard_fResult; // end; // except // on e:Exception do // begin // DbApiLog.Error('xxcf_check_netboard_f 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.ExecuteDataSet(vP_SQL:string;var sError:string):boolean; var // a:compeq_webservice.ExecuteDataSet; // Response:ExecuteDataSetResponse; b:TXMLData; xmldoc: TXMLDocument; begin if not FOnLine then begin Result:=true;Exit; end; Result:=false; // a:=compeq_webservice.ExecuteDataSet.create; try // a.sql:=vP_SQL; // DbApiLog.MessageInfo('ExecuteDataSet 请求:p_SQL=%s',[a.sql]); // try // Response:=compeq_webservice.GetServiceSoap().ExecuteDataSet(a); // // b:= Response.ExecuteDataSetResult.schema; // xmldoc:= TXMLDocument.Create(nil); // xmldoc.LoadFromXML(b.XMLNode.XML); // DbApiLog.MessageInfo('ExecuteDataSet 返回:%s',[xmldoc.XML.Text]); // Result:=Response.ExecuteDataSetResult.schema.ToString='OK'; // if not Result then //返回出错信息 // begin // sError:=Response.ExecuteDataSetResult.schema.ToString; // end; // except // on e:Exception do // begin // DbApiLog.Error('ExecuteDataSetResponse 错误:%s',[ChangeErrorInfo(E.Message)]); // sError:=ChangeErrorInfo(E.Message); // end; // end; finally // a.Free; end; end; function TKsoap.Thread_xxcc_work_num_f(vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=xxcc_work_num_f(vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_XXCC_LOT_PC_F(vP_LOT,vP_LINE_NUM,vP_CHK_FLAG:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=XXCC_LOT_PC_F(vP_LOT,vP_LINE_NUM,vP_CHK_FLAG,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_getPartnum(vlot,vType:string;var sGoodsNo,sNum,sPC,sResult,sError:string):boolean; var ssError,ssGoodsNo,ssResult,ssPc,ssNum:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=getPartnum(vlot,vType,ssGoodsNo,ssNum,ssPC,ssResult,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; sGoodsNo:=ssGoodsNo; sNum:=ssNum; sPc:=ssPc; sResult:=ssResult; end; function TKsoap.Thread_xx_get_barcode_param_f(vP_org,vP_lot,vP_LINE_NUM,vP_type:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=xx_get_barcode_param_f(vP_org,vP_lot,vP_LINE_NUM,vP_type,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_cm_bom_plasma_prg_f(vP_lot:string;var sResult,sError:string):boolean; var ssError,ssResult:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=cm_bom_plasma_prg_f(vP_lot,ssResult,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; sResult:=ssResult; end; function TKsoap.Thread_Check_tool_or_equip_status_f(vP_lot,vP_LINE_NUM,vP_fixture_code_seq,vP_status:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=Check_tool_or_equip_status_f(vP_lot,vP_LINE_NUM,vP_fixture_code_seq,vP_status,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; //插入从表 function TKsoap.Thread_Insert_cc_wip_lot_bc_history(DetailRecord:TDetailRecord;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=Insert_cc_wip_lot_bc_history(DetailRecord,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_Update_qty_time_p(vP_ID,vP_ACT_QTY,vP_END_TIME,vP_LINE_SPEED,vP_BK1,vP_BK2,vP_BK3:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=Update_qty_time_p(vP_ID,vP_ACT_QTY,vP_END_TIME,vP_LINE_SPEED,vP_BK1,vP_BK2,vP_BK3,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; //插入主表 function TKsoap.Thread_Insert_CM_WIP_PROCESS_LINE_HISTORY_NEW(LotNoRecord:TLotNoRecord;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=Insert_CM_WIP_PROCESS_LINE_HISTORY_NEW(LotNoRecord,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; //获取主表ID function TKsoap.Thread_cf_traceability_seq_f(vP_ORG_CODE:string;var sError:string):Double; var ssError:string; bThreadResult:Double; begin Result:=0; bThreadResult:=0; FThreadId:=0; TThread.CreateAnonymousThread( procedure var fResult:Double; begin CoInitialize(nil); try fResult:=cf_traceability_seq_f(vP_ORG_CODE,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=fResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_get_barcode_param_f(vP_ORG_CODE,vP_Lot,vP_type,vP_Line_num:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=get_barcode_param_f(vP_ORG_CODE,vP_Lot,vP_type,vP_Line_num,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_return_default_values_f(var sResult,sError:string):boolean; var ssError,ssResult:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=return_default_values_f(ssResult,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; sResult:=ssResult; end; function TKsoap.Thread_xxcf_get_layer_f(vP_Pn:string;var sResult,sError:string):boolean; var ssError,ssResult:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=xxcf_get_layer_f(vP_Pn,ssResult,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; sResult:=ssResult; end; function TKsoap.Thread_cm_mtl_trace_in_f(vP_mtl_barcode,vP_mtl_type:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=cm_mtl_trace_in_f(vP_mtl_barcode,vP_mtl_type,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_xxcf_check_netboard_f(vP_part_num,vP_face,vp_nb_num:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bResult:=xxcf_check_netboard_f(vP_part_num,vP_face,vp_nb_num,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; function TKsoap.Thread_ExecuteDataSet(vSQL:string;var sError:string):boolean; var ssError:string; bThreadResult:boolean; begin Result:=false; bThreadResult:=false; FThreadId:=0; TThread.CreateAnonymousThread( procedure var bResult:boolean; begin CoInitialize(nil); try bThreadResult:=ExecuteDataSet(vSQL,ssError); TThread.Synchronize(nil, procedure begin bThreadResult:=bResult; FThreadId:=1; end); finally CoUninitialize; end; end).Start; while FThreadId=0 do Application.ProcessMessages; Result:=bThreadResult; sError:=ssError; end; end.