1636 lines
56 KiB
ObjectPascal
1636 lines
56 KiB
ObjectPascal
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
|
|
/// <summary>
|
|
/// 廠區
|
|
/// </summary>
|
|
property P_ORG_CODE: string read FP_ORG_CODE write FP_ORG_CODE;
|
|
|
|
/// <summary>
|
|
/// 工號
|
|
/// </summary>
|
|
property P_WORK_NUM: string read FP_WORK_NUM write FP_WORK_NUM;
|
|
|
|
/// <summary>
|
|
/// 製程
|
|
/// </summary>
|
|
property P_PC: string read FP_PC write FP_PC;
|
|
|
|
/// <summary>
|
|
/// 線別
|
|
/// </summary>
|
|
property P_LINE: string read FP_LINE write FP_LINE;
|
|
|
|
/// <summary>
|
|
/// 線別編號
|
|
/// </summary>
|
|
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;
|
|
|
|
/// <summary>檢查批號和製程 設備是否匹配</summary>
|
|
/// <param name="vP_LOT">批號</param>
|
|
/// <param name="vP_LINE_NUM">線別編號</param>
|
|
/// <param name="vP_CHK_FLAG">保留欄位,默認傳1,用以區分哪個系統調用</param>
|
|
/// <returns>收到OK表示傳入的批號當前製程和傳入的製程一致,且該批號能在這條線生產</returns>
|
|
/// <remarks>通過傳入批號檢查批號是否在此製程,是否可以在此設備生產</remarks>
|
|
function XXCC_LOT_PC_F(vP_LOT,vP_LINE_NUM,vP_CHK_FLAG:string;var sError:string):boolean;
|
|
|
|
/// <summary>檢查工號</summary>
|
|
/// <param name="vP_ORG_CODE">廠區</param>
|
|
/// <param name="vP_WORK_NUM">工號</param>
|
|
/// <param name="vP_PC">製程</param>
|
|
/// <param name="vP_LINE">線別</param>
|
|
/// <returns>收到OK表示該在職人員屬於該廠區,且有作業資格</returns>
|
|
/// <remarks>通過傳入工號檢查該人員是否屬於該廠是否在職,是否有作業資格(有指定輔導員視為有作業資格)</remarks>
|
|
function xxcc_work_num_f(vP_ORG_CODE,vP_WORK_NUM,vP_PC,vP_LINE:string;var sError:string):boolean;
|
|
|
|
/// <summary>獲取料號(CF Traceability有用到)</summary>
|
|
/// <param name="vlot">批號</param>
|
|
/// <param name="vType">類型(默認為空)</param>
|
|
/// <returns>返回值為:料號,當前製程,當前數量,該料號每包數量,該料號每箱數量,銅箔
|
|
/// 型號,緩衝材型號,壓合程式,壓合面積(紅色Mark部分只有當第二個參數傳RF_TRACE時才會返回)
|
|
/// ,是否為emap,project name,smt pn,168客戶料號(藍色Mark部分只有當第二個參數傳EMAP時才會返回)
|
|
///,取第一個半角</returns>
|
|
/// <remarks>通過批號獲取料號</remarks>
|
|
function getPartnum(vlot,vType:string;var sGoodsNo,sNum,sPC,sResult,sError:string):boolean;
|
|
function getPartnumTime(vlot,vType:string;var sError:string):boolean;
|
|
|
|
/// <summary>獲取料號(CF Traceability有用到)</summary>
|
|
/// <param name="p_lot">批號</param>
|
|
/// <param name="p_type">蚀溥铜etch/快压机fast_press</param>
|
|
/// <returns></returns>
|
|
/// <remarks>通過批號獲取料號</remarks>
|
|
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;
|
|
/// <summary>批號基本信息(CF Traceability有用到)</summary>
|
|
/// <param name="P_ORG_CODE">廠區</param>
|
|
/// <param name="P_NUM">工號</param>
|
|
/// <param name="P_LOT">批號</param>
|
|
/// <param name="P_PC">製程</param>
|
|
/// <param name="P_LINE">線別</param> ///
|
|
/// <param name="P_LINE_NUM">線別編號</param>
|
|
/// <param name="P_LOT_TYPE">正常板/重工板</param>
|
|
/// <param name="P_ENABLE">是否需要檢查數據默認Y,需檢查</param>
|
|
/// <param name="P_ID">ID號,用於綁定每次掃的條碼,從cf_traceability_seq_f方法獲取</param>
|
|
/// <returns>收到OK表示傳入的批號當前製程和傳入的製程一致,且該批號能在這條線生產</returns>
|
|
/// <remarks>通過傳入廠區,工號,批號,料號,製程,線,線別,記錄批號的基本信息</remarks>
|
|
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.
|