Files
dyp/backup_ansi/uKsoap.pas
T
2026-05-07 20:25:34 +08:00

1636 lines
55 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.