diff --git a/Doc_TemplateFile/ACCCategoryTemplate.xlsx b/Doc_TemplateFile/ACCCategoryTemplate.xlsx new file mode 100644 index 0000000..1b36f46 Binary files /dev/null and b/Doc_TemplateFile/ACCCategoryTemplate.xlsx differ diff --git a/Doc_TemplateFile/ACCTemplate.xlsx b/Doc_TemplateFile/ACCTemplate.xlsx new file mode 100644 index 0000000..989bb68 Binary files /dev/null and b/Doc_TemplateFile/ACCTemplate.xlsx differ diff --git a/Doc_TemplateFile/ACCTypeTemplate.xlsx b/Doc_TemplateFile/ACCTypeTemplate.xlsx new file mode 100644 index 0000000..e89c20a Binary files /dev/null and b/Doc_TemplateFile/ACCTypeTemplate.xlsx differ diff --git a/Doc_TemplateFile/AnalysisBasis_Format.xls b/Doc_TemplateFile/AnalysisBasis_Format.xls new file mode 100644 index 0000000..230cd1d Binary files /dev/null and b/Doc_TemplateFile/AnalysisBasis_Format.xls differ diff --git a/Doc_TemplateFile/CustomerTemplate.xlsx b/Doc_TemplateFile/CustomerTemplate.xlsx new file mode 100644 index 0000000..c1f5afb Binary files /dev/null and b/Doc_TemplateFile/CustomerTemplate.xlsx differ diff --git a/Doc_TemplateFile/EquimentTemplate.xlsx b/Doc_TemplateFile/EquimentTemplate.xlsx new file mode 100644 index 0000000..616897e Binary files /dev/null and b/Doc_TemplateFile/EquimentTemplate.xlsx differ diff --git a/Doc_TemplateFile/EquipmentTypeTemplate.xlsx b/Doc_TemplateFile/EquipmentTypeTemplate.xlsx new file mode 100644 index 0000000..3a13a47 Binary files /dev/null and b/Doc_TemplateFile/EquipmentTypeTemplate.xlsx differ diff --git a/Doc_TemplateFile/FTProgramBin_Template.txt b/Doc_TemplateFile/FTProgramBin_Template.txt new file mode 100644 index 0000000..8b938dd --- /dev/null +++ b/Doc_TemplateFile/FTProgramBin_Template.txt @@ -0,0 +1,64 @@ +Project file name: SG3000SIGVB_FTBx4_S08_M60_105C.prj +GOOD:1 +TestPlan_Name Software_Bin Hardware_Bin +OS_PS_failed_2000 2000 2@@@@@@@ +OS_VSS_PPMU_failed_2200 2200 2 +OS_VSS_FUNC_RPT1_failed_2210 2210 2 +POST_Power_short_failed_2300 2300 2 +POST_OS_VSS_PPMU_failed_2400 2400 2 +POST_OS_VSS_FUNC_RPT_failed_2500 2500 2 +FC_VOHL_Vcoef090_failed_3000 3000 3 +FC_VIHL_Vcoef090_failed_3100 3100 3 +FC_VIHL_Vcoef110_failed_3110 3110 3 +DC_IIHL_Vcoef110_failed_3200 3200 3 +FC_IOZ_failed_3300 3300 3 +DC_IOZHL_Vcoef110_failed_3400 3400 3 +STANDBY_CURR_PD_failed_3500 3500 3 +STANDBY_CURR_PU_failed_3510 3510 3 +FC_IDDQ_failed_3700 3700 3 +DC_IDDQ_failed_3710 3710 3 +FC_BSCAN_R01_failed_4000 4000 4 +FC_MBIST_R01_CORE_failed_4100 4100 4 +FC_MBIST_R01_ARM_66_5M_failed_4101 4101 4 +FC_MBIST_R01_ARM_133M_failed_4102 4102 4 +FC_MBIST_R01_ARM_266M_failed_4103 4103 4 +FC_CHAIN_R01_failed_4200 4200 4 +FC_STUCK_R01_INIT_failed_4300 4300 4 +FC_STUCK_GP1_P1_BODY4_1_failed_4301 4301 4 +FC_STUCK_GP1_P2_BODY4_2_failed_4302 4302 4 +FC_STUCK_GP1_P3_BODY4_3_failed_4303 4303 4 +FC_STUCK_GP1_P3_BODY4_4_failed_4304 4304 4 +FC_TRANS_R01_INIT_failed_4410 4410 4 +FC_TRANS_R01_GP1_BODY3_1_failed_4411 4411 4 +FC_TRANS_R01_GP1_BODY3_2_failed_4412 4412 4 +FC_TRANS_R01_GP1_BODY3_3_failed_4413 4413 4 +EFUSE_OTC_failed_9003 9003 5 +ADC_STATIC_CFG_failed_6300 6300 6 +FC_SDRAM_R01_8M_failed_6000 6000 6 +FC_POR_failed_6010 6010 6 +FC_SDRAM_R01_2M_failed_6100 6100 6 +FC_SDRAM_R02_2M_failed_6110 6110 6 +FC_PLL_133M_failed_6200 6200 6 +DC_PLL_133M_FREQ_failed_6210 6210 6 +FC_PLL_66_5M_failed_6220 6220 6 +DC_PLL_66_5M_FREQ_failed_6230 6230 6 +FC_PLL_266M_failed_6240 6240 6 +DC_PLL_266M_FREQ_failed_6250 6250 6 +FC_PLL_NO_DIGITAL_failed_6260 6260 6 +ADC_STATIC_failed_6310 6310 6 +AFE_DAC_PAD_DYN_failed_6320 6320 6 +AFE_DAC_PAD_DYN_0P92_failed_6322 6322 6 +AFE_ADC_DYN_failed_6330 6330 6 +AFE_ADC_DYN_0P92_failed_6331 6331 6 +FC_EFUSE_WRITE_FTA_PFLAG_failed_6500 6500 6 +FC_EFUSE_READ_FTA_PFLAG_failed_6501 6501 6 +FC_EFUSE_READ_FTB_PFLAG_failed_6502 6502 6 +GET_CISData_failed_7001 7001 6 +EFUSE0_FRC_CHKSUM_failed_7002 7002 6 +EFUSE_IRC_failed_9000 9000 6 +EFUSE_PRC_failed_9001 9001 6 +EFUSE_PGM_failed_9002 9002 6 +EFUSE_REPGM_FFLAG_failed_9004 9004 6 +EFUSE_FRC_failed_9005 9005 6 +ITEM_SEL_failed_9600 9600 6 +ITEM_JUDGE_failed_9700 9700 6 \ No newline at end of file diff --git a/Doc_TemplateFile/HoldItemTemplate.xlsx b/Doc_TemplateFile/HoldItemTemplate.xlsx new file mode 100644 index 0000000..4d2b044 Binary files /dev/null and b/Doc_TemplateFile/HoldItemTemplate.xlsx differ diff --git a/Doc_TemplateFile/INVWaferTemplate.csv b/Doc_TemplateFile/INVWaferTemplate.csv new file mode 100644 index 0000000..485b14c --- /dev/null +++ b/Doc_TemplateFile/INVWaferTemplate.csv @@ -0,0 +1,28 @@ +VendorNo:IT00026 + +MaterialNo,MaterialLotNo,CassetteNo,SlotNo,LaserMark,OutDate,AOI,AOI_Region,Thickness +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,1,KH210630001,2021/5/17,97.34004867,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,2,KH210630002,2021/5/17,97.09311011,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,3,KH210630003,2021/5/17,97.77832967,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,4,KH210630004,2021/5/17,100.2344687,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,5,KH210630005,2021/5/17,95.20134967,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,6,KH210630006,2021/5/17,100.8314966,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,7,KH210630007,2021/5/17,98.01836344,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,8,KH210630008,2021/5/17,97.53036078,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,9,KH210630009,2021/5/17,100.5259543,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,10,KH210630010,2021/5/17,98.77306467,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,11,KH210630011,2021/5/17,100.8874567,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,12,KH210630012,2021/5/17,100.9653351,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,13,KH210630013,2021/5/17,98.32707833,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,14,KH210630014,2021/5/17,100.2652274,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,15,KH210630015,2021/5/17,98.20262156,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,16,KH210630016,2021/5/17,97.534686,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,17,KH210630017,2021/5/17,95.11197644,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,18,KH210630018,2021/5/17,98.75638867,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,19,KH210630019,2021/5/17,94.72099833,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,20,KH210630020,2021/5/17,99.62066278,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,21,KH210630021,2021/5/17,95.62007689,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,22,KH210630022,2021/5/17,99.39007578,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,23,KH210630023,2021/5/17,96.93688767,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,24,KH210630024,2021/5/17,97.11286111,93-101,640 +3S11F1004C0002,PKH205,SYCBHHEJI-CWX085,25,KH210630025,2021/5/17,93.506766,93-101,640 diff --git a/Doc_TemplateFile/IV_I_TurnsToINVCorrTemplate.xlsx b/Doc_TemplateFile/IV_I_TurnsToINVCorrTemplate.xlsx new file mode 100644 index 0000000..989d6fa Binary files /dev/null and b/Doc_TemplateFile/IV_I_TurnsToINVCorrTemplate.xlsx differ diff --git a/Doc_TemplateFile/LaserMark_Template.csv b/Doc_TemplateFile/LaserMark_Template.csv new file mode 100644 index 0000000..1a5daa4 --- /dev/null +++ b/Doc_TemplateFile/LaserMark_Template.csv @@ -0,0 +1,11 @@ +ComponentNo,LaserMark +C10806-007,KH210630007 +C10806-001,KH210630001 +C10806-003,KH210630003 +C10806-004,KH210630004 +C10806-005,KH210630005 +C10806-002,KH210630002 +C10806-008,KH210630008 +C10806-006,KH210630006 + + diff --git a/Doc_TemplateFile/MClassTemplate.xlsx b/Doc_TemplateFile/MClassTemplate.xlsx new file mode 100644 index 0000000..98b7e82 Binary files /dev/null and b/Doc_TemplateFile/MClassTemplate.xlsx differ diff --git a/Doc_TemplateFile/MaterialTemplate.xlsx b/Doc_TemplateFile/MaterialTemplate.xlsx new file mode 100644 index 0000000..8255828 Binary files /dev/null and b/Doc_TemplateFile/MaterialTemplate.xlsx differ diff --git a/Doc_TemplateFile/ModuleTemplate.xlsx b/Doc_TemplateFile/ModuleTemplate.xlsx new file mode 100644 index 0000000..65c8d2c Binary files /dev/null and b/Doc_TemplateFile/ModuleTemplate.xlsx differ diff --git a/Doc_TemplateFile/OPTemplate.xlsx b/Doc_TemplateFile/OPTemplate.xlsx new file mode 100644 index 0000000..191fecf Binary files /dev/null and b/Doc_TemplateFile/OPTemplate.xlsx differ diff --git a/Doc_TemplateFile/PFEMA_ExportData_Format.xlsx b/Doc_TemplateFile/PFEMA_ExportData_Format.xlsx new file mode 100644 index 0000000..5356f42 Binary files /dev/null and b/Doc_TemplateFile/PFEMA_ExportData_Format.xlsx differ diff --git a/Doc_TemplateFile/PFEMA_ImportData_Format.xlsx b/Doc_TemplateFile/PFEMA_ImportData_Format.xlsx new file mode 100644 index 0000000..10aadce Binary files /dev/null and b/Doc_TemplateFile/PFEMA_ImportData_Format.xlsx differ diff --git a/Doc_TemplateFile/PRDQCItemTemplate.xlsx b/Doc_TemplateFile/PRDQCItemTemplate.xlsx new file mode 100644 index 0000000..88308c3 Binary files /dev/null and b/Doc_TemplateFile/PRDQCItemTemplate.xlsx differ diff --git a/Doc_TemplateFile/P_PRD WAFERMAP MERGE RULE_Template.xlsx b/Doc_TemplateFile/P_PRD WAFERMAP MERGE RULE_Template.xlsx new file mode 100644 index 0000000..22a324e Binary files /dev/null and b/Doc_TemplateFile/P_PRD WAFERMAP MERGE RULE_Template.xlsx differ diff --git a/Doc_TemplateFile/ProcessTemplate.xlsx b/Doc_TemplateFile/ProcessTemplate.xlsx new file mode 100644 index 0000000..04ae405 Binary files /dev/null and b/Doc_TemplateFile/ProcessTemplate.xlsx differ diff --git a/Doc_TemplateFile/ProductTemplate.xlsx b/Doc_TemplateFile/ProductTemplate.xlsx new file mode 100644 index 0000000..244da12 Binary files /dev/null and b/Doc_TemplateFile/ProductTemplate.xlsx differ diff --git a/Doc_TemplateFile/ProductTemplate_PRS.xlsx b/Doc_TemplateFile/ProductTemplate_PRS.xlsx new file mode 100644 index 0000000..e50eb53 Binary files /dev/null and b/Doc_TemplateFile/ProductTemplate_PRS.xlsx differ diff --git a/Doc_TemplateFile/QCItemPRDReason.xlsx b/Doc_TemplateFile/QCItemPRDReason.xlsx new file mode 100644 index 0000000..d2acda3 Binary files /dev/null and b/Doc_TemplateFile/QCItemPRDReason.xlsx differ diff --git a/Doc_TemplateFile/ReasonPrdSOPFile.xlsx b/Doc_TemplateFile/ReasonPrdSOPFile.xlsx new file mode 100644 index 0000000..52034d7 Binary files /dev/null and b/Doc_TemplateFile/ReasonPrdSOPFile.xlsx differ diff --git a/Doc_TemplateFile/SClassTemplate.xlsx b/Doc_TemplateFile/SClassTemplate.xlsx new file mode 100644 index 0000000..cc8e722 Binary files /dev/null and b/Doc_TemplateFile/SClassTemplate.xlsx differ diff --git a/Document/MES元件列表.xlsx b/Document/MES元件列表.xlsx new file mode 100644 index 0000000..308620f Binary files /dev/null and b/Document/MES元件列表.xlsx differ diff --git a/Document/自動化整合介面與項目v2.1.docx b/Document/自動化整合介面與項目v2.1.docx new file mode 100644 index 0000000..9248a75 --- /dev/null +++ b/Document/自動化整合介面與項目v2.1.docx @@ -0,0 +1,1055 @@ + 自動化整合介面與整合項目 + 2016/01/15 v2.1 + + 項次 + 項目 + 方向 + 建議格式 + A1 +設備狀態收集 +設備-->資料庫 +DB Table - 建議格式參考附件一 + A2 +設備參數收集 +設備-->資料庫 +DB Table - 建議格式參考附件二 + B +設備狀態變更 +呼叫MES webservice +MES webservice - EditEquipmentState +格式參考附件三 + C1 +生產作業開始 +呼叫MES webservice +MES webservice - ExecuteLot +格式參考附件四 + C2 +生產作業結束 +呼叫MES webservice +MES webservice - ExecuteLot +格式參考附件五 + D +生產現況查詢 +MES資料庫 +MES webservice - LoadLotState +格式參考附件六 + + + +附件一 設備狀態資料收集 +設備狀態現況表 IF_EQUIPMENTSTATE + 中文名稱 + 欄位名稱 + 資料型態 + NULL + PK + FK + Default + 說明 +設備編號 +EQUIPMENTNO +VARCHAR2(50) + N + Y + + + +設備狀態 +EQUIPMENTSTATE +NUMBER(2) + N + + + + +說明 +DESCRIPTION +VARCHAR2(255) + + + + +該設備狀態的開始時間 +修改人 +REVISER +VARCHAR2(10) + N + + + + +修改日期 +REVISEDATE +DATE + N + + + + +CREATE TABLE IF_EQUIPMENTSTATE +( + EQUIPMENTNO VARCHAR2(50) Constraint N_IF_EQUIPMENTSTATE_01 NOT NULL, + EQUIPMENTSTATE NUMBER(2) Constraint N_IF_EQUIPMENTSTATE_02 NOT NULL, + DESCRIPTION VARCHAR2(255), + REVISER VARCHAR2(10) Constraint N_IF_EQUIPMENTSTATE_03 NOT NULL, + REVISEDATE DATE Constraint N_IF_EQUIPMENTSTATE_04 NOT NULL, + Constraint PK_IF_EQUIPMENTSTATE PRIMARY KEY (EQUIPMENTNO) using index TableSpace MESIDX_D1 +) TABLESPACE MESDATA_D1; + +設備狀態歷程表 IF_EQUIPMENTSTATELOG + 中文名稱 + 欄位名稱 + 資料型態 + NULL + PK + FK + Default + 說明 +交易編號 +EVENTID +VARCHAR2(50) + N + Y + + + +交易日期 +EVENTDATE +DATE + N + + + + +設備編號 +EQUIPMENTNO +VARCHAR2(50) + N + + + + +設備狀態 +EQUIPMENTSTATE +NUMBER(2) + N + + + + +說明 +DESCRIPTION +VARCHAR2(255) + + + + + +修改人 +REVISER +VARCHAR2(10) + N + + + + +修改日期 +REVISEDATE +DATE + N + + + + +CREATE TABLE IF_EQUIPMENTSTATELOG +( + EVENTID VARCHAR2(50) Constraint N_IF_EQUIPMENTSTATELOG_01 NOT NULL, + EVENTDATE DATE Constraint N_IF_EQUIPMENTSTATELOG_02 NOT NULL, + EQUIPMENTNO VARCHAR2(50) Constraint N_IF_EQUIPMENTSTATELOG_03 NOT NULL, + EQUIPMENTSTATE NUMBER(2) Constraint N_IF_EQUIPMENTSTATELOG_04 NOT NULL, + DESCRIPTION VARCHAR2(255), + REVISER VARCHAR2(10) Constraint N_IF_EQUIPMENTSTATELOG_05 NOT NULL, + REVISEDATE DATE Constraint N_IF_EQUIPMENTSTATELOG_06 NOT NULL, + Constraint PK_IF_EQUIPMENTSTATELOG PRIMARY KEY (EVENTID) using index TableSpace MESIDX_D1 +) TABLESPACE MESDATA_D1; + + +附件二 設備參數資料收集 +設備參數現況表 IF_EQUIPMENTRECIPE + 中文名稱 + 欄位名稱 + 資料型態 + NULL + PK + FK + Default + 說明 +設備編號 +EQUIPMENTNO +VARCHAR2(50) + N + Y + + + +設備參數項目 +(如:轉速) +ITEMNO +VARCHAR2(50) + N + Y + + + +設備參數值 +(如:100) +ITEMVALUE +VARCHAR2(50) + + + + + +說明 +DESCRIPTION +VARCHAR2(255) + + + + + +修改人 +REVISER +VARCHAR2(10) + N + + + + +修改日期 +REVISEDATE +DATE + N + + + + +CREATE TABLE IF_EQUIPMENTRECIPE +( + EQUIPMENTNO VARCHAR2(50) Constraint N_IF_EQUIPMENTRECIPE_01 NOT NULL, + ITEMNO VARCHAR2(50) Constraint N_IF_EQUIPMENTRECIPE_02 NOT NULL, + ITEMVALUE VARCHAR2(50), + DESCRIPTION VARCHAR2(255), + REVISER VARCHAR2(10) Constraint N_IF_EQUIPMENTRECIPE_03 NOT NULL, + REVISEDATE DATE Constraint N_IF_EQUIPMENTRECIPE_04 NOT NULL, + Constraint PK_IF_EQUIPMENTRECIPE PRIMARY KEY (EQUIPMENTNO, ITEMNO) using index TableSpace MESIDX_D1 +) TABLESPACE MESDATA_D1; + +設備參數歷程表 IF_EQUIPMENTRECIPELOG + 中文名稱 + 欄位名稱 + 資料型態 + NULL + PK + FK + Default + 說明 +交易編號 +EVENTID +VARCHAR2(50) + N + Y + + + +交易日期 +EVENTDATE +DATE + N + + + + +設備編號 +EQUIPMENTNO +VARCHAR2(50) + N + + + + +設備參數項目 +(如:轉速) +ITEMNO +VARCHAR2(50) + N + + + + +設備參數值 +(如:100) +ITEMVALUE +VARCHAR2(50) + + + + + +說明 +DESCRIPTION +VARCHAR2(255) + + + + + +修改人 +REVISER +VARCHAR2(10) + N + + + + +修改日期 +REVISEDATE +DATE + N + + + + +CREATE TABLE IF_EQUIPMENTRECIPELOG +( + EVENTID VARCHAR2(50) Constraint N_IF_EQUIPMENTRECIPELOG_01 NOT NULL, + EVENTDATE DATE Constraint N_IF_EQUIPMENTRECIPELOG_02 NOT NULL, + EQUIPMENTNO VARCHAR2(50) Constraint N_IF_EQUIPMENTRECIPELOG_03 NOT NULL, + ITEMNO VARCHAR2(50) Constraint N_IF_EQUIPMENTRECIPELOG_04 NOT NULL, + ITEMVALUE VARCHAR2(50), + DESCRIPTION VARCHAR2(255), + REVISER VARCHAR2(10) Constraint N_IF_EQUIPMENTRECIPELOG_05 NOT NULL, + REVISEDATE DATE Constraint N_IF_EQUIPMENTRECIPELOG_06 NOT NULL, + Constraint PK_IF_EQUIPMENTRECIPELOG PRIMARY KEY (EVENTID) using index TableSpace MESIDX_D1 +) TABLESPACE MESDATA_D1; + + + + +附件三 設備狀態變更 +非XML傳遞 +傳入: EquipmentNo(String, 設備編號) + EquipmentState(Integer, 設備狀態) +傳出: success + fail;ErrorMessage +XML傳遞 +EditEquipmentState - Request XML + + + DESKTOP-SF5677M + 1 + 2015/10/07 17:28:47 + zh-CHT + + + + EquipmentNo + String + EA01 + + + + EquipmentState + Integer + 5 + + + + UserNo + String + iMES + + + + Description + String + (1)Q11 : Q11 EQP State Change by User:1 + + + + Reasons + String + + R01 + TEST + + + R02 + TEST2 + + + + + + +Identity Format +Name +Data Type +Option +說明 +computername +String +Must +電腦名稱 +curuserno +String +Must +使用者工號 +sendtime +DateTime +Must +傳送時間 +languagemode +String + +語系 + +Parameter Format +Name +Data Type +Option +說明 +equipmentno +String +Must +設備編號 +equipmentstate +Integer +Must +設備狀態 +userno +String + +使用者編號 +description +String + +說明 +reasons +String + +設備狀態變更的原因,可多筆 + +EditEquipmentState - Response XML(成功) + + + DESKTOP-SF5677M + 1 + 2015/10/7 下午 05:31:54 + + success + + +EditEquipmentState - Response XML(失敗) + + + DESKTOP-SF5677M + 1 + 2015/10/8 下午 01:55:10 + + + 0000-200002 + EquipmentNo Not Found! + Editequipmentstate: failed! + + 於 MESws.wsEMS.EditEquipmentState(String InXml) 於 D:\SourceCode\TFS\STD\MESSeries\MESws_STD\wsEMS\wsEMS.asmx.vb: 行 279 + + + fail + + +Exception Format +Name +Data Type +Option +說明 +code +String + +MES錯誤代碼 +sysmsg +String + +系統錯誤訊息 +mesmsg +String + +MES提示訊息 +stack +String + +堆疊追蹤資訊。大部分是偵錯版本組態資訊。 根據預設值,偵錯版本包含偵錯符號,而發行版本不包含偵錯符號。 偵錯符號包含建構 StackFrame 和 StackTrace 物件時使用的大部分檔案名稱、方法名稱、行號和資料行資訊。 +result +String + +結果 : success, fail + + + +附件四 生產作業開始 +ExecuteLot - Request XML(CheckIn) + + + SAMMILO-PC + 008607 + 2013/11/28 下午 02:46:43 + zh-CHT + CI + + + + LotNo + String + S511-1310000460-001 + + + + LotStamp + Long + 0 + + + + OPNo + String + 進入作業站 + + + + + +Identity Format +Name +Data Type +Option +說明 +computername +String +Must +電腦名稱 +curuserno +String +Must +使用者工號 +sendtime +DateTime +Must +傳送時間 +languagemode +String + +語系 +functionid +String + +CI : 有傳入代表要檢查Lot之Status必須為0(Queue) +CO : 有傳入代表要檢查Lot之Status必須為1(Running) + + +Parameter Format +Name +Data Type +Option +說明 +lotno +String +Must +生產批號 +lotstamp +Long +Must + +opno +String + +作業站編號 + +Response XML同附件三 + + + + +附件五 生產作業結束 +ExecuteLot - Request XML(CheckOut) + + + SAMMILO-PC + 008607 + 2013/11/29 下午 02:54:21 + zh-CHT + CO + + + + LotNo + String + S511-1310000460-001 + + + + LotStamp + Long + 2 + + + + + OPNo + String + 產出站 + + + + +Parameter Format +Name +Data Type +Option +說明 +lotno +String +Must +生產批號 +lotstamp +Long +Must + +opno +String + +作業站編號 + +Response XML同附件三 + + + + +附件六 生產現況查詢 +LoadLotState - Request XML + + + DESKTOP-SF5677M + 1 + 2015/10/08 16:05:42 + zh-CHT + + + + LotNo + String + Lot00001 + + + + Status + String + 0|1|2|3|4|5 + + + + AreaNo + String + YLEMCMD1 + + + + PSNo + String + SEG01 + + + + OPNo + String + P73TP000 + + + + FactoryNo + String + F01 + + + + + +Parameter Format +Name +Data Type +Option +說明 +lotno +String + +生產批號 +status +Integer + +生產批狀態 +0 : Queue, 1 : Run, 2 : Wait, 3 : Hold, 4 : Complete, 11 : Inv, 12 : Scrap Inv, 99 : TurnInv Close +areano +String + +區域編號 +psno +String + +區段編號 +opno +String + +作業站編號 +factoryno +String + +廠區編號 + +LoadLotState - Response XML + + + DESKTOP-SF5677M + 1 + 2015/10/8 下午 04:21:02 + + + + WIPLotState + DataSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SITE001A1507020003 + SITE001A1507020003 + E516007-001 + 11 + SITE001A150702000300000624 + AREA01 + SEG01 + TEST + 1100 + 2.0000 + pcs + 2.0000 + ea + L_CO_PACKING_LOT + 2 + 0 + 0 + 1 + pass + 2015-07-02T13:07:59+08:00 + 02 + SITE001A150702000300000624 + 2015-07-02T13:07:59+08:00 + 2015-07-02T13:07:59+08:00 + 0 + TEST + 02 + F01 + N/A + + + + + + + success + + +生產批現況表 + 中文名稱 + 欄位名稱 + 資料型態 + NULL + PK + FK + Default + 說明 +批號 +LOTNO +VARCHAR2(50) + N + Y + + + +主批號 +BASELOTNO +VARCHAR2(50) + N + + + + +原始批號 +ORGLOTNO +VARCHAR2(50) + N + + + + +狀態 +STATUS +NUMBER(2) + N + + + +0:Queue 1:Run 2:Wait 3:Hold 4:Complete 5:OS(Outsourcing外包) 11:Inv 12:Scrap Inv 99:TurnInv Close 31:HoldBank +生產批序號 +LOTSERIAL +VARCHAR2(55) + N + + + + +區域編號 +AREANO +VARCHAR2(20) + N + + + + +區段編號 +PSNO +VARCHAR2(50) + N + + + + +流程編號 +PROCESSNO +VARCHAR2(30) + N + + Y + + +作業站編號 +OPNO +VARCHAR2(20) + N + + + + +目前數量 +CURQTY +NUMBER(12,4) + N + + + + +目前單位編號 +CURUNITNO +VARCHAR2(30) + N + + + + +系統數量 +SYSQTY +NUMBER(12,4) + N + + + + +系統單位編號 +SYSUNITNO +VARCHAR2(30) + N + + + + +企業邏輯編號 +BRNO +VARCHAR2(20) + N + + + + +階段編號 +PHASENO +NUMBER(2) + N + + + 0 + +是否有元件 +HAVECOMPONENT +NUMBER(1) + N + + + + +是否有Bin分佈 +HAVELEVEL +NUMBER(1) + N + + + + +區段次序 +PSORDER +NUMBER(2) + N + + + + +Link Name +LINKNAME +VARCHAR2(20) + Y + + + + +建立日期 +EVENTTIME +DATE + Y + + + + +流程版本 +PROCESSVERSION +VARCHAR2(3) + N + + Y + 'N/A' + +Log序號 +LOGGROUPSERIAL +VARCHAR2(50) + Y + + + + +PreOp End Time +PREOPENDTIME +DATE + Y + + + + +到達時間 +ARRIVETIME +DATE + Y + + + + +OP Status +OPSTATUS +NUMBER(1) + Y + + + +0:Between OP (站間) 1:In OP (站中) +主流程 +MAINPROCESSNO +VARCHAR2(30) + Y + + + + +主流程版本 +MAINPROCESSVERSION +VARCHAR2(3) + Y + + + + +工廠編號 +FACTORYNO +VARCHAR2(20) + N + + + 'N/A' + +作業站群組編號 +OPGROUPNO +VARCHAR2(20) + Y + + + 'N/A' + + diff --git a/Document/部分報工異動項目.txt b/Document/部分報工異動項目.txt new file mode 100644 index 0000000..41c4e13 --- /dev/null +++ b/Document/部分報工異動項目.txt @@ -0,0 +1,77 @@ +iWIP-SD1606011-01/區段增加是否部分報工選項 + --ORACLE + ALTER TABLE TBLPRSPRODUCTIONSEGMENT + ADD ISPARTIAL NUMBER(1) DEFAULT 0 NOT NULL; --0:非部分報工, 1:部分報工 + + --MSSQL + ALTER TABLE TBLPRSPRODUCTIONSEGMENT + ADD ISPARTIAL NUMERIC(1) DEFAULT 0 NOT NULL; --0:非部分報工, 1:部分報工 + + PS_ProductionSegment.frmProductionSegment + PS_ProductionSegment.frmProductionSegmentDef + MESws_STD.wsPRS + + +iWIP-SD1606011-02/部分報工作業站修正 + --ORACLE + ALTER TABLE TBLOPBASIS + ADD PARTIALMODE NUMBER(1); --0:單批報工, 1:批次報工, 2:外包 + + --MSSQL + ALTER TABLE TBLOPBASIS + ADD PARTIALMODE NUMERIC(1); --0:單批報工, 1:批次報工, 2:外包 + + OP_OPBasis.frmOPBasis + OP_OPBasis.frmOPBasisDef + PS_ProcessBasis.frmProcessDraw + PD_ProductOPBusinessRule.frmProductOPBusinessRuleDraw + + +iWIP-SD1606011-03-1/設備介面調整 + EP_EquipmentBasis.frmEquipmentBasis + EP_EquipmentBasis.frmEquipmentBasisDef + EP_EquipmentType.frmEquipmentTypeDef + +iWIP-SD1606011-03-2/生產批現況與歷程增加生產線編號資訊 + --ORACLE + ALTER TABLE TBLWIPLOTLOG_REPORT ADD PDLINENO VARCHAR2(50) DEFAULT 'N/A'; --生產線編號 + ALTER TABLE TBLWIPLOTLOG ADD PDLINENO VARCHAR2(50) DEFAULT 'N/A'; --生產線編號 + ALTER TABLE TBLWIPLOTSTATE ADD PDLINENO VARCHAR2(50); --生產線編號 + ALTER TABLE BKTBLWIPLOTSTATE ADD PDLINENO VARCHAR2(50); --生產線編號 + + --MSSQL + ALTER TABLE TBLWIPLOTLOG_REPORT ADD PDLINENO NVARCHAR(50) DEFAULT 'N/A'; --生產線編號 + ALTER TABLE TBLWIPLOTLOG ADD PDLINENO NVARCHAR(50) DEFAULT 'N/A'; --生產線編號 + ALTER TABLE TBLWIPLOTSTATE ADD PDLINENO NVARCHAR(50); --生產線編號 + ALTER TABLE BKTBLWIPLOTSTATE ADD PDLINENO NVARCHAR(50); --生產線編號 + + *****生產批下線時StartLot會寫入tblWIPLotState.AreaNo, 所以在GetNodeIDInfo_OP內可先依AreaNo至TBLSMDAREAMAP取回PDLineNo, 下線時即可寫入PDLineNo + *****TriggerOP會新增tblWIPLotLog及tblWIPLotLog_Report, 會寫入AreaNo, 一併寫入PDLineNo + *****生產批移轉時SetLotStateToNextOP要寫入tblWIPLotState.PDLineNo + + kcWIP.clsLot + +iWIP-SD1606011-03/部分報工進站介面設計 + --ORACLE + CREATE TABLE TBLWIPCONT_PARTIALIN + ( + LotNo VARCHAR2(50) CONSTRAINT N_TBLWIPCONT_PARTIALIN_01 NOT NULL, --生產批號 + LogGroupSerial VARCHAR2(50) CONSTRAINT N_TBLWIPCONT_PARTIALIN_02 NOT NULL, --生產批LOG序號 + OPNo VARCHAR2(20) CONSTRAINT N_TBLWIPCONT_PARTIALIN_03 NOT NULL, --作業站編號 + EventTime DATE CONSTRAINT N_TBLWIPCONT_PARTIALIN_04 NOT NULL, --進站時間 + UserNo VARCHAR2(10) CONSTRAINT N_TBLWIPCONT_PARTIALIN_05 NOT NULL, --進站人員 + AreaNo VARCHAR2(20) CONSTRAINT N_TBLWIPCONT_PARTIALIN_06 NOT NULL, --區域編號 + InputQty NUMBER(12,4) CONSTRAINT N_TBLWIPCONT_PARTIALIN_07 NOT NULL, --本次投入數量 + CONSTRAINT PK_TBLWIPCONT_PARTIALIN PRIMARY KEY (LotNo, OPNo, EventTime) USING INDEX TABLESPACE MESIDX_D1 + ) TABLESPACE MESDATA_D1; + + + + +iWIP-SD1606011-04/部分報工出站介面設計 + +iWIP-SD1606011-05/相關例外處理修正 + +iWIP-SD1606011-06/撥轉作業 + +iWIP-SD1606011-07/生產現況調帳作業 diff --git a/GuardServerProvider/GuardServerProvider.sln b/GuardServerProvider/GuardServerProvider.sln new file mode 100644 index 0000000..7b4b403 --- /dev/null +++ b/GuardServerProvider/GuardServerProvider.sln @@ -0,0 +1,49 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GuardServerProvider", "GuardServerProvider\GuardServerProvider.csproj", "{3FF6C17F-FD5F-435D-B14A-52AD110E19DA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GuardServerProviderFalse", "GuardServerProviderFalse\GuardServerProviderFalse.csproj", "{A4A91668-0A15-4FC0-B6C4-716034A6241A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GuardServerProviderTests", "GuardServerProviderTests\GuardServerProviderTests.csproj", "{45194D26-B16D-4BFA-B2A0-1C41ABD36BC0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3FF6C17F-FD5F-435D-B14A-52AD110E19DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3FF6C17F-FD5F-435D-B14A-52AD110E19DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3FF6C17F-FD5F-435D-B14A-52AD110E19DA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3FF6C17F-FD5F-435D-B14A-52AD110E19DA}.Release|Any CPU.Build.0 = Release|Any CPU + {A4A91668-0A15-4FC0-B6C4-716034A6241A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A4A91668-0A15-4FC0-B6C4-716034A6241A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A4A91668-0A15-4FC0-B6C4-716034A6241A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A4A91668-0A15-4FC0-B6C4-716034A6241A}.Release|Any CPU.Build.0 = Release|Any CPU + {45194D26-B16D-4BFA-B2A0-1C41ABD36BC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {45194D26-B16D-4BFA-B2A0-1C41ABD36BC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {45194D26-B16D-4BFA-B2A0-1C41ABD36BC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45194D26-B16D-4BFA-B2A0-1C41ABD36BC0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 4 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = GuardServerProvider\\GuardServerProvider.csproj + SccProjectName1 = GuardServerProvider + SccLocalPath1 = GuardServerProvider + SccProjectUniqueName2 = GuardServerProviderFalse\\GuardServerProviderFalse.csproj + SccProjectName2 = GuardServerProviderFalse + SccLocalPath2 = GuardServerProviderFalse + SccProjectUniqueName3 = GuardServerProviderTests\\GuardServerProviderTests.csproj + SccProjectName3 = GuardServerProviderTests + SccLocalPath3 = GuardServerProviderTests + EndGlobalSection +EndGlobal diff --git a/MESCIO/MESCIO.sln b/MESCIO/MESCIO.sln new file mode 100644 index 0000000..62cbae9 --- /dev/null +++ b/MESCIO/MESCIO.sln @@ -0,0 +1,40 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESCIO", "iMESCIO\iMESCIO.csproj", "{3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESSCI", "iMESSCI\iMESSCI.vbproj", "{826904B8-CA70-47DC-B7BF-B6BC45F854DA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|Any CPU.Build.0 = Release|Any CPU + {826904B8-CA70-47DC-B7BF-B6BC45F854DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {826904B8-CA70-47DC-B7BF-B6BC45F854DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {826904B8-CA70-47DC-B7BF-B6BC45F854DA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {826904B8-CA70-47DC-B7BF-B6BC45F854DA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 3 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = iMESCIO\\iMESCIO.csproj + SccProjectName1 = iMESCIO + SccLocalPath1 = iMESCIO + SccProjectUniqueName2 = iMESSCI\\iMESSCI.vbproj + SccProjectName2 = iMESSCI + SccLocalPath2 = iMESSCI + EndGlobalSection +EndGlobal diff --git a/MESCIO/iMESPlugIn.sln b/MESCIO/iMESPlugIn.sln new file mode 100644 index 0000000..5923a02 --- /dev/null +++ b/MESCIO/iMESPlugIn.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESPlugIn", "iMESPlugIn\iMESPlugIn.csproj", "{CFE0836F-C8E6-4B42-8DA8-5F04573D456A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 2 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = iMESPlugIn\\iMESPlugIn.csproj + SccProjectName1 = iMESPlugIn + SccLocalPath1 = iMESPlugIn + EndGlobalSection +EndGlobal diff --git a/MESClient/MESSeries.exe b/MESClient/MESSeries.exe new file mode 100644 index 0000000..663d8f5 Binary files /dev/null and b/MESClient/MESSeries.exe differ diff --git a/MESClient/MESSeries.exe.config b/MESClient/MESSeries.exe.config new file mode 100644 index 0000000..9d45404 --- /dev/null +++ b/MESClient/MESSeries.exe.config @@ -0,0 +1,86 @@ + + + + +
+
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://localhost/MESws_STD/wsUpdateResource/wsUpdateResource.asmx + + + + + + + + + + + + + + + + diff --git a/MESDAO/MESDAO.csproj b/MESDAO/MESDAO.csproj new file mode 100644 index 0000000..80bc84f --- /dev/null +++ b/MESDAO/MESDAO.csproj @@ -0,0 +1,111 @@ + + + + + Debug + AnyCPU + {2E8DF7C4-5F57-4AA6-9C68-F5DF22FA3252} + Library + Properties + iMESDAO + iMESDAO + v4.6.2 + 512 + SAK + SAK + SAK + SAK + + + + true + full + false + ..\MES_S_DLL\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + ..\MES_S_DLL\ + TRACE + prompt + 4 + false + + + true + + + iMES.snk + + + + ..\MES_S_DLL\iMESCIO.dll + + + False + ..\MES_S_DLL\iMESDataObject.dll + + + False + ..\MES_S_DLL\iMESProjectBase.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESDAO/MESDAO.sln b/MESDAO/MESDAO.sln new file mode 100644 index 0000000..951affe --- /dev/null +++ b/MESDAO/MESDAO.sln @@ -0,0 +1,30 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESDAO", "MESDAO.csproj", "{2E8DF7C4-5F57-4AA6-9C68-F5DF22FA3252}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2E8DF7C4-5F57-4AA6-9C68-F5DF22FA3252}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E8DF7C4-5F57-4AA6-9C68-F5DF22FA3252}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E8DF7C4-5F57-4AA6-9C68-F5DF22FA3252}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E8DF7C4-5F57-4AA6-9C68-F5DF22FA3252}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 2 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = MESDAO.csproj + SccLocalPath1 = . + EndGlobalSection +EndGlobal diff --git a/MESDAO/iMES.snk b/MESDAO/iMES.snk new file mode 100644 index 0000000..4206cdc Binary files /dev/null and b/MESDAO/iMES.snk differ diff --git a/MESEAI/MESEAI.sln b/MESEAI/MESEAI.sln new file mode 100644 index 0000000..7068398 --- /dev/null +++ b/MESEAI/MESEAI.sln @@ -0,0 +1,243 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EAItc", "EAItc\EAItc.csproj", "{488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}" + ProjectSection(ProjectDependencies) = postProject + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD} = {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EAIRegeditTest", "EAIRegeditTest\EAIRegeditTest.csproj", "{AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{2C6E3E2A-4F4C-4AB4-95D3-AC2E9875A06F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EAI_Entity", "EAI_Entity\EAI_Entity.csproj", "{3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EAIws", "EAIws\EAIws.csproj", "{F1A85B46-51EA-018B-1166-26C5A98CCBAD}" + ProjectSection(ProjectDependencies) = postProject + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82} = {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + C++Buile|Any CPU = C++Buile|Any CPU + C++Buile|Mixed Platforms = C++Buile|Mixed Platforms + C++Buile|x64 = C++Buile|x64 + C++Buile|x86 = C++Buile|x86 + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Quick|Any CPU = Quick|Any CPU + Quick|Mixed Platforms = Quick|Mixed Platforms + Quick|x64 = Quick|x64 + Quick|x86 = Quick|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x64 = Release|x64 + Release|x86 = Release|x86 + StorageBuild|Any CPU = StorageBuild|Any CPU + StorageBuild|Mixed Platforms = StorageBuild|Mixed Platforms + StorageBuild|x64 = StorageBuild|x64 + StorageBuild|x86 = StorageBuild|x86 + UnitTest|Any CPU = UnitTest|Any CPU + UnitTest|Mixed Platforms = UnitTest|Mixed Platforms + UnitTest|x64 = UnitTest|x64 + UnitTest|x86 = UnitTest|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.C++Buile|Mixed Platforms.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.C++Buile|Mixed Platforms.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.C++Buile|x64.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.C++Buile|x86.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Debug|x64.ActiveCfg = Debug|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Debug|x86.ActiveCfg = Debug|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Quick|Any CPU.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Quick|Mixed Platforms.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Quick|Mixed Platforms.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Quick|x64.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Quick|x86.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Release|Any CPU.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Release|Any CPU.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Release|x64.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.Release|x86.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.StorageBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.StorageBuild|Mixed Platforms.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.StorageBuild|x64.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.StorageBuild|x86.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.UnitTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.UnitTest|Mixed Platforms.Build.0 = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.UnitTest|x64.ActiveCfg = Release|Any CPU + {488EAFF3-DDDE-0DD6-04AC-B3FC0C53EF82}.UnitTest|x86.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.C++Buile|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.C++Buile|Mixed Platforms.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.C++Buile|x64.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.C++Buile|x86.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Debug|x64.ActiveCfg = Debug|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Debug|x86.ActiveCfg = Debug|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Quick|Any CPU.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Quick|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Quick|Mixed Platforms.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Quick|x64.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Quick|x86.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Release|x64.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.Release|x86.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.StorageBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.StorageBuild|Mixed Platforms.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.StorageBuild|x64.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.StorageBuild|x86.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.UnitTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.UnitTest|Mixed Platforms.Build.0 = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.UnitTest|x64.ActiveCfg = Release|Any CPU + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087}.UnitTest|x86.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|Mixed Platforms.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|Mixed Platforms.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|x64.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|x64.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|x86.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.C++Buile|x86.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|x64.ActiveCfg = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|x64.Build.0 = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|x86.ActiveCfg = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Debug|x86.Build.0 = Debug|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|Any CPU.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|Mixed Platforms.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|Mixed Platforms.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|x64.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|x64.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|x86.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Quick|x86.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|Any CPU.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|x64.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|x64.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|x86.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.Release|x86.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|Mixed Platforms.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|Mixed Platforms.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|x64.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|x64.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|x86.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.StorageBuild|x86.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|Mixed Platforms.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|Mixed Platforms.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|x64.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|x64.Build.0 = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|x86.ActiveCfg = Release|Any CPU + {3A1F68B3-EBE4-4A86-9334-F66EC3DCE0AD}.UnitTest|x86.Build.0 = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|Any CPU.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|Any CPU.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|Mixed Platforms.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|x64.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|x64.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|x86.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.C++Buile|x86.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|x64.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Debug|x86.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|Any CPU.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|Any CPU.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|Mixed Platforms.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|x64.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|x64.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|x86.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Quick|x86.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|Any CPU.Build.0 = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|x64.ActiveCfg = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|x64.Build.0 = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|x86.ActiveCfg = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.Release|x86.Build.0 = Release|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|Any CPU.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|Any CPU.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|Mixed Platforms.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|x64.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|x64.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|x86.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.StorageBuild|x86.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|Any CPU.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|Any CPU.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|Mixed Platforms.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|Mixed Platforms.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|x64.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|x64.Build.0 = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|x86.ActiveCfg = Debug|Any CPU + {F1A85B46-51EA-018B-1166-26C5A98CCBAD}.UnitTest|x86.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {AC10C7C8-63C5-4CD6-BBAB-67EC0C21C087} = {2C6E3E2A-4F4C-4AB4-95D3-AC2E9875A06F} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {BD0EFA97-413C-4A37-846B-BE73E547E77C} + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 5 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = EAIRegeditTest\\EAIRegeditTest.csproj + SccProjectTopLevelParentUniqueName1 = MESEAI.sln + SccProjectName1 = EAIRegeditTest + SccLocalPath1 = EAIRegeditTest + SccProjectUniqueName2 = EAI_Entity\\EAI_Entity.csproj + SccProjectName2 = EAI_Entity + SccLocalPath2 = EAI_Entity + SccProjectUniqueName3 = EAItc\\EAItc.csproj + SccProjectName3 = EAItc + SccLocalPath3 = EAItc + SccProjectUniqueName4 = EAIws\\EAIws.csproj + SccProjectName4 = EAIws + SccLocalPath4 = EAIws + EndGlobalSection +EndGlobal diff --git a/MESPlugin/AdapterSetting.xml b/MESPlugin/AdapterSetting.xml new file mode 100644 index 0000000..907d7a4 --- /dev/null +++ b/MESPlugin/AdapterSetting.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/MES_C_DLL/ActiveReports.Chart.dll b/MES_C_DLL/ActiveReports.Chart.dll new file mode 100644 index 0000000..1953e76 Binary files /dev/null and b/MES_C_DLL/ActiveReports.Chart.dll differ diff --git a/MES_C_DLL/ActiveReports.Design6.dll b/MES_C_DLL/ActiveReports.Design6.dll new file mode 100644 index 0000000..ca80c8b Binary files /dev/null and b/MES_C_DLL/ActiveReports.Design6.dll differ diff --git a/MES_C_DLL/ActiveReports.Document.dll b/MES_C_DLL/ActiveReports.Document.dll new file mode 100644 index 0000000..d479fd2 Binary files /dev/null and b/MES_C_DLL/ActiveReports.Document.dll differ diff --git a/MES_C_DLL/ActiveReports.HtmlExport.dll b/MES_C_DLL/ActiveReports.HtmlExport.dll new file mode 100644 index 0000000..14bc9a0 Binary files /dev/null and b/MES_C_DLL/ActiveReports.HtmlExport.dll differ diff --git a/MES_C_DLL/ActiveReports.PdfExport.dll b/MES_C_DLL/ActiveReports.PdfExport.dll new file mode 100644 index 0000000..bb154d1 Binary files /dev/null and b/MES_C_DLL/ActiveReports.PdfExport.dll differ diff --git a/MES_C_DLL/ActiveReports.RtfExport.dll b/MES_C_DLL/ActiveReports.RtfExport.dll new file mode 100644 index 0000000..096d10f Binary files /dev/null and b/MES_C_DLL/ActiveReports.RtfExport.dll differ diff --git a/MES_C_DLL/ActiveReports.TextExport.dll b/MES_C_DLL/ActiveReports.TextExport.dll new file mode 100644 index 0000000..7d2aaf2 Binary files /dev/null and b/MES_C_DLL/ActiveReports.TextExport.dll differ diff --git a/MES_C_DLL/ActiveReports.TiffExport.dll b/MES_C_DLL/ActiveReports.TiffExport.dll new file mode 100644 index 0000000..82f8524 Binary files /dev/null and b/MES_C_DLL/ActiveReports.TiffExport.dll differ diff --git a/MES_C_DLL/ActiveReports.Viewer6.dll b/MES_C_DLL/ActiveReports.Viewer6.dll new file mode 100644 index 0000000..ae87cd6 Binary files /dev/null and b/MES_C_DLL/ActiveReports.Viewer6.dll differ diff --git a/MES_C_DLL/ActiveReports.XlsExport.dll b/MES_C_DLL/ActiveReports.XlsExport.dll new file mode 100644 index 0000000..1e9e9cc Binary files /dev/null and b/MES_C_DLL/ActiveReports.XlsExport.dll differ diff --git a/MES_C_DLL/ActiveReports6.dll b/MES_C_DLL/ActiveReports6.dll new file mode 100644 index 0000000..de562fd Binary files /dev/null and b/MES_C_DLL/ActiveReports6.dll differ diff --git a/MES_C_DLL/Apache.NMS.ActiveMQ.dll b/MES_C_DLL/Apache.NMS.ActiveMQ.dll new file mode 100644 index 0000000..06732ca Binary files /dev/null and b/MES_C_DLL/Apache.NMS.ActiveMQ.dll differ diff --git a/MES_C_DLL/Apache.NMS.dll b/MES_C_DLL/Apache.NMS.dll new file mode 100644 index 0000000..476c87e Binary files /dev/null and b/MES_C_DLL/Apache.NMS.dll differ diff --git a/MES_C_DLL/BouncyCastle.Crypto.dll b/MES_C_DLL/BouncyCastle.Crypto.dll new file mode 100644 index 0000000..967a933 Binary files /dev/null and b/MES_C_DLL/BouncyCastle.Crypto.dll differ diff --git a/MES_C_DLL/COM_Kit.dll b/MES_C_DLL/COM_Kit.dll new file mode 100644 index 0000000..2701e0c Binary files /dev/null and b/MES_C_DLL/COM_Kit.dll differ diff --git a/MES_C_DLL/DataObject.dll b/MES_C_DLL/DataObject.dll new file mode 100644 index 0000000..aeabc9a Binary files /dev/null and b/MES_C_DLL/DataObject.dll differ diff --git a/MES_C_DLL/FluentFTP.dll b/MES_C_DLL/FluentFTP.dll new file mode 100644 index 0000000..0f7f08e Binary files /dev/null and b/MES_C_DLL/FluentFTP.dll differ diff --git a/MES_C_DLL/ICSharpCode.SharpZipLib.dll b/MES_C_DLL/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000..8546c67 Binary files /dev/null and b/MES_C_DLL/ICSharpCode.SharpZipLib.dll differ diff --git a/MES_C_DLL/Infragistics4.Documents.Core.v19.1.dll b/MES_C_DLL/Infragistics4.Documents.Core.v19.1.dll new file mode 100644 index 0000000..e0e8fce Binary files /dev/null and b/MES_C_DLL/Infragistics4.Documents.Core.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Documents.Excel.v19.1.dll b/MES_C_DLL/Infragistics4.Documents.Excel.v19.1.dll new file mode 100644 index 0000000..320807c Binary files /dev/null and b/MES_C_DLL/Infragistics4.Documents.Excel.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Shared.v19.1.dll b/MES_C_DLL/Infragistics4.Shared.v19.1.dll new file mode 100644 index 0000000..d973bc5 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Shared.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.AppStylistSupport.v19.1.dll b/MES_C_DLL/Infragistics4.Win.AppStylistSupport.v19.1.dll new file mode 100644 index 0000000..1da0c15 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.AppStylistSupport.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.DataVisualization.Barcode.v19.1.dll b/MES_C_DLL/Infragistics4.Win.DataVisualization.Barcode.v19.1.dll new file mode 100644 index 0000000..0ebca2c Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.DataVisualization.Barcode.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.DataVisualization.Shared.v19.1.dll b/MES_C_DLL/Infragistics4.Win.DataVisualization.Shared.v19.1.dll new file mode 100644 index 0000000..85202c9 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.DataVisualization.Shared.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.DataVisualization.UltraDataChart.v19.1.dll b/MES_C_DLL/Infragistics4.Win.DataVisualization.UltraDataChart.v19.1.dll new file mode 100644 index 0000000..1755341 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.DataVisualization.UltraDataChart.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.DataVisualization.UltraGeographicMap.v19.1.dll b/MES_C_DLL/Infragistics4.Win.DataVisualization.UltraGeographicMap.v19.1.dll new file mode 100644 index 0000000..ad534c2 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.DataVisualization.UltraGeographicMap.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.Misc.v19.1.dll b/MES_C_DLL/Infragistics4.Win.Misc.v19.1.dll new file mode 100644 index 0000000..3485673 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.Misc.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.Portable.Core.v19.1.dll b/MES_C_DLL/Infragistics4.Win.Portable.Core.v19.1.dll new file mode 100644 index 0000000..3614d79 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.Portable.Core.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinCalcManager.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinCalcManager.v19.1.dll new file mode 100644 index 0000000..fc455e3 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinCalcManager.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinChart.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinChart.v19.1.dll new file mode 100644 index 0000000..54280d9 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinChart.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinDataSource.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinDataSource.v19.1.dll new file mode 100644 index 0000000..9db7d66 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinDataSource.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinDock.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinDock.v19.1.dll new file mode 100644 index 0000000..4d42100 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinDock.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinEditors.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinEditors.v19.1.dll new file mode 100644 index 0000000..cfbba96 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinEditors.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinExplorerBar.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinExplorerBar.v19.1.dll new file mode 100644 index 0000000..9495c99 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinExplorerBar.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinGauge.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinGauge.v19.1.dll new file mode 100644 index 0000000..1552e37 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinGauge.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinGrid.ExcelExport.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinGrid.ExcelExport.v19.1.dll new file mode 100644 index 0000000..83cae33 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinGrid.ExcelExport.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinGrid.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinGrid.v19.1.dll new file mode 100644 index 0000000..f8c4ca8 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinGrid.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinListView.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinListView.v19.1.dll new file mode 100644 index 0000000..ca6aa59 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinListView.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinMaskedEdit.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinMaskedEdit.v19.1.dll new file mode 100644 index 0000000..65669bd Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinMaskedEdit.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinSchedule.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinSchedule.v19.1.dll new file mode 100644 index 0000000..2ca86e2 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinSchedule.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinStatusBar.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinStatusBar.v19.1.dll new file mode 100644 index 0000000..64141a2 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinStatusBar.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinTabControl.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinTabControl.v19.1.dll new file mode 100644 index 0000000..caf1525 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinTabControl.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinTabbedMdi.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinTabbedMdi.v19.1.dll new file mode 100644 index 0000000..c7f0e42 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinTabbedMdi.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinToolbars.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinToolbars.v19.1.dll new file mode 100644 index 0000000..9708815 Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinToolbars.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.UltraWinTree.v19.1.dll b/MES_C_DLL/Infragistics4.Win.UltraWinTree.v19.1.dll new file mode 100644 index 0000000..16495fd Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.UltraWinTree.v19.1.dll differ diff --git a/MES_C_DLL/Infragistics4.Win.v19.1.dll b/MES_C_DLL/Infragistics4.Win.v19.1.dll new file mode 100644 index 0000000..3b3e60b Binary files /dev/null and b/MES_C_DLL/Infragistics4.Win.v19.1.dll differ diff --git a/MES_C_DLL/Interop.BarTender.dll b/MES_C_DLL/Interop.BarTender.dll new file mode 100644 index 0000000..0f72f41 Binary files /dev/null and b/MES_C_DLL/Interop.BarTender.dll differ diff --git a/MES_C_DLL/Interop.LabelManager2.dll b/MES_C_DLL/Interop.LabelManager2.dll new file mode 100644 index 0000000..9e48537 Binary files /dev/null and b/MES_C_DLL/Interop.LabelManager2.dll differ diff --git a/MES_C_DLL/Ionic.Zip.dll b/MES_C_DLL/Ionic.Zip.dll new file mode 100644 index 0000000..7b11577 Binary files /dev/null and b/MES_C_DLL/Ionic.Zip.dll differ diff --git a/MES_C_DLL/LangInt.dll b/MES_C_DLL/LangInt.dll new file mode 100644 index 0000000..a3178b3 Binary files /dev/null and b/MES_C_DLL/LangInt.dll differ diff --git a/MES_C_DLL/Lassalle.Flow.AddFlow.LIC b/MES_C_DLL/Lassalle.Flow.AddFlow.LIC new file mode 100644 index 0000000..d84c23b --- /dev/null +++ b/MES_C_DLL/Lassalle.Flow.AddFlow.LIC @@ -0,0 +1 @@ +AddFlow for WinForms license: A3P1lp3011TD-KB5lN1ogIkV1 diff --git a/MES_C_DLL/Lassalle.Flow.DLL b/MES_C_DLL/Lassalle.Flow.DLL new file mode 100644 index 0000000..109f815 Binary files /dev/null and b/MES_C_DLL/Lassalle.Flow.DLL differ diff --git a/MES_C_DLL/Lassalle.Flow.Layout.DLL b/MES_C_DLL/Lassalle.Flow.Layout.DLL new file mode 100644 index 0000000..3e9bfef Binary files /dev/null and b/MES_C_DLL/Lassalle.Flow.Layout.DLL differ diff --git a/MES_C_DLL/Lassalle.Flow.Layout.Hierarchic.dll b/MES_C_DLL/Lassalle.Flow.Layout.Hierarchic.dll new file mode 100644 index 0000000..3eadae4 Binary files /dev/null and b/MES_C_DLL/Lassalle.Flow.Layout.Hierarchic.dll differ diff --git a/MES_C_DLL/Microsoft.Office.Interop.Excel.dll b/MES_C_DLL/Microsoft.Office.Interop.Excel.dll new file mode 100644 index 0000000..31b9e29 Binary files /dev/null and b/MES_C_DLL/Microsoft.Office.Interop.Excel.dll differ diff --git a/MES_C_DLL/Microsoft.Office.Interop.Word.dll b/MES_C_DLL/Microsoft.Office.Interop.Word.dll new file mode 100644 index 0000000..1788ab5 Binary files /dev/null and b/MES_C_DLL/Microsoft.Office.Interop.Word.dll differ diff --git a/MES_C_DLL/Microsoft.VisualBasic.PowerPacks.Vs.dll b/MES_C_DLL/Microsoft.VisualBasic.PowerPacks.Vs.dll new file mode 100644 index 0000000..3157bf0 Binary files /dev/null and b/MES_C_DLL/Microsoft.VisualBasic.PowerPacks.Vs.dll differ diff --git a/MES_C_DLL/NPOI.OOXML.dll b/MES_C_DLL/NPOI.OOXML.dll new file mode 100644 index 0000000..21cbe35 Binary files /dev/null and b/MES_C_DLL/NPOI.OOXML.dll differ diff --git a/MES_C_DLL/NPOI.OpenXml4Net.dll b/MES_C_DLL/NPOI.OpenXml4Net.dll new file mode 100644 index 0000000..a9dd3e3 Binary files /dev/null and b/MES_C_DLL/NPOI.OpenXml4Net.dll differ diff --git a/MES_C_DLL/NPOI.OpenXmlFormats.dll b/MES_C_DLL/NPOI.OpenXmlFormats.dll new file mode 100644 index 0000000..f19b610 Binary files /dev/null and b/MES_C_DLL/NPOI.OpenXmlFormats.dll differ diff --git a/MES_C_DLL/NPOI.dll b/MES_C_DLL/NPOI.dll new file mode 100644 index 0000000..e5702aa Binary files /dev/null and b/MES_C_DLL/NPOI.dll differ diff --git a/MES_C_DLL/Newtonsoft.Json.dll b/MES_C_DLL/Newtonsoft.Json.dll new file mode 100644 index 0000000..20dae62 Binary files /dev/null and b/MES_C_DLL/Newtonsoft.Json.dll differ diff --git a/MES_C_DLL/Renci.SshNet.dll b/MES_C_DLL/Renci.SshNet.dll new file mode 100644 index 0000000..314fa9b Binary files /dev/null and b/MES_C_DLL/Renci.SshNet.dll differ diff --git a/MES_C_DLL/iMESBarChart.dll b/MES_C_DLL/iMESBarChart.dll new file mode 100644 index 0000000..21b2edf Binary files /dev/null and b/MES_C_DLL/iMESBarChart.dll differ diff --git a/MES_C_DLL/iMESChart.dll b/MES_C_DLL/iMESChart.dll new file mode 100644 index 0000000..b6136d9 Binary files /dev/null and b/MES_C_DLL/iMESChart.dll differ diff --git a/MES_C_DLL/iMESClientHandler.dll b/MES_C_DLL/iMESClientHandler.dll new file mode 100644 index 0000000..ef2d8e8 Binary files /dev/null and b/MES_C_DLL/iMESClientHandler.dll differ diff --git a/MES_C_DLL/iMESException.dll b/MES_C_DLL/iMESException.dll new file mode 100644 index 0000000..6fc86f3 Binary files /dev/null and b/MES_C_DLL/iMESException.dll differ diff --git a/MES_C_DLL/iMESExceptionManager.dll b/MES_C_DLL/iMESExceptionManager.dll new file mode 100644 index 0000000..0a1391e Binary files /dev/null and b/MES_C_DLL/iMESExceptionManager.dll differ diff --git a/MES_C_DLL/iMESGPIBUtil.dll b/MES_C_DLL/iMESGPIBUtil.dll new file mode 100644 index 0000000..7ef9bbf Binary files /dev/null and b/MES_C_DLL/iMESGPIBUtil.dll differ diff --git a/MES_C_DLL/iMESLabelManager.dll b/MES_C_DLL/iMESLabelManager.dll new file mode 100644 index 0000000..ff1c06a Binary files /dev/null and b/MES_C_DLL/iMESLabelManager.dll differ diff --git a/MES_C_DLL/iMESLicxManager.dll b/MES_C_DLL/iMESLicxManager.dll new file mode 100644 index 0000000..148007a Binary files /dev/null and b/MES_C_DLL/iMESLicxManager.dll differ diff --git a/MES_C_DLL/iMESLineChart.dll b/MES_C_DLL/iMESLineChart.dll new file mode 100644 index 0000000..831b475 Binary files /dev/null and b/MES_C_DLL/iMESLineChart.dll differ diff --git a/MES_C_DLL/iMESMainMenu.dll b/MES_C_DLL/iMESMainMenu.dll new file mode 100644 index 0000000..f8be3a1 Binary files /dev/null and b/MES_C_DLL/iMESMainMenu.dll differ diff --git a/MES_C_DLL/iMESOnlineControlChart.dll b/MES_C_DLL/iMESOnlineControlChart.dll new file mode 100644 index 0000000..a3bbadd Binary files /dev/null and b/MES_C_DLL/iMESOnlineControlChart.dll differ diff --git a/MES_C_DLL/iMESPlugIn.dll b/MES_C_DLL/iMESPlugIn.dll new file mode 100644 index 0000000..06c071b Binary files /dev/null and b/MES_C_DLL/iMESPlugIn.dll differ diff --git a/MES_C_DLL/iMESRS232.dll b/MES_C_DLL/iMESRS232.dll new file mode 100644 index 0000000..7cb59be Binary files /dev/null and b/MES_C_DLL/iMESRS232.dll differ diff --git a/MES_C_DLL/iMESUltraGrid.dll b/MES_C_DLL/iMESUltraGrid.dll new file mode 100644 index 0000000..41b9bf3 Binary files /dev/null and b/MES_C_DLL/iMESUltraGrid.dll differ diff --git a/MES_C_DLL/iMESWinFormUserControl.dll b/MES_C_DLL/iMESWinFormUserControl.dll new file mode 100644 index 0000000..c36353b Binary files /dev/null and b/MES_C_DLL/iMESWinFormUserControl.dll differ diff --git a/MES_C_DLL/iMESWizards.dll b/MES_C_DLL/iMESWizards.dll new file mode 100644 index 0000000..d5c719f Binary files /dev/null and b/MES_C_DLL/iMESWizards.dll differ diff --git a/MES_C_DLL/iMESXMLFlow.dll b/MES_C_DLL/iMESXMLFlow.dll new file mode 100644 index 0000000..4472f9d Binary files /dev/null and b/MES_C_DLL/iMESXMLFlow.dll differ diff --git a/MES_C_DLL/log4net.dll b/MES_C_DLL/log4net.dll new file mode 100644 index 0000000..ffc57e1 Binary files /dev/null and b/MES_C_DLL/log4net.dll differ diff --git a/MES_C_DLL/node.dll b/MES_C_DLL/node.dll new file mode 100644 index 0000000..f881ac4 Binary files /dev/null and b/MES_C_DLL/node.dll differ diff --git a/MES_C_DLL/winAutoLogOut.dll b/MES_C_DLL/winAutoLogOut.dll new file mode 100644 index 0000000..e71542f Binary files /dev/null and b/MES_C_DLL/winAutoLogOut.dll differ diff --git a/MES_C_DLL/winAutoLogOut.dll.config b/MES_C_DLL/winAutoLogOut.dll.config new file mode 100644 index 0000000..2588d02 --- /dev/null +++ b/MES_C_DLL/winAutoLogOut.dll.config @@ -0,0 +1,25 @@ + + + + +
+ + + + + + + + + + + + + + + + http://localhost/MESws_STD/wsInvoke.asmx + + + + diff --git a/MES_C_DLL/zxing.dll b/MES_C_DLL/zxing.dll new file mode 100644 index 0000000..67ec181 Binary files /dev/null and b/MES_C_DLL/zxing.dll differ diff --git a/MES_S_DLL/BouncyCastle.Crypto.dll b/MES_S_DLL/BouncyCastle.Crypto.dll new file mode 100644 index 0000000..5ef4591 Binary files /dev/null and b/MES_S_DLL/BouncyCastle.Crypto.dll differ diff --git a/MES_S_DLL/DataObject.dll b/MES_S_DLL/DataObject.dll new file mode 100644 index 0000000..aeabc9a Binary files /dev/null and b/MES_S_DLL/DataObject.dll differ diff --git a/MES_S_DLL/FluentFTP.dll b/MES_S_DLL/FluentFTP.dll new file mode 100644 index 0000000..0f7f08e Binary files /dev/null and b/MES_S_DLL/FluentFTP.dll differ diff --git a/MES_S_DLL/GuardServerProvider.dll b/MES_S_DLL/GuardServerProvider.dll new file mode 100644 index 0000000..e808a11 Binary files /dev/null and b/MES_S_DLL/GuardServerProvider.dll differ diff --git a/MES_S_DLL/Ionic.Zip.dll b/MES_S_DLL/Ionic.Zip.dll new file mode 100644 index 0000000..7b11577 Binary files /dev/null and b/MES_S_DLL/Ionic.Zip.dll differ diff --git a/MES_S_DLL/MailKit.dll b/MES_S_DLL/MailKit.dll new file mode 100644 index 0000000..b025aa1 Binary files /dev/null and b/MES_S_DLL/MailKit.dll differ diff --git a/MES_S_DLL/Microsoft.Web.Administration.dll b/MES_S_DLL/Microsoft.Web.Administration.dll new file mode 100644 index 0000000..5f0d384 Binary files /dev/null and b/MES_S_DLL/Microsoft.Web.Administration.dll differ diff --git a/MES_S_DLL/MimeKit.dll b/MES_S_DLL/MimeKit.dll new file mode 100644 index 0000000..1143123 Binary files /dev/null and b/MES_S_DLL/MimeKit.dll differ diff --git a/MES_S_DLL/NLog.dll b/MES_S_DLL/NLog.dll new file mode 100644 index 0000000..77f59c7 Binary files /dev/null and b/MES_S_DLL/NLog.dll differ diff --git a/MES_S_DLL/Newtonsoft.Json.dll b/MES_S_DLL/Newtonsoft.Json.dll new file mode 100644 index 0000000..20dae62 Binary files /dev/null and b/MES_S_DLL/Newtonsoft.Json.dll differ diff --git a/MES_S_DLL/Oracle.ManagedDataAccess.dll b/MES_S_DLL/Oracle.ManagedDataAccess.dll new file mode 100644 index 0000000..c228b70 Binary files /dev/null and b/MES_S_DLL/Oracle.ManagedDataAccess.dll differ diff --git a/MES_S_DLL/Renci.SshNet.dll b/MES_S_DLL/Renci.SshNet.dll new file mode 100644 index 0000000..314fa9b Binary files /dev/null and b/MES_S_DLL/Renci.SshNet.dll differ diff --git a/MES_S_DLL/System.Buffers.dll b/MES_S_DLL/System.Buffers.dll new file mode 100644 index 0000000..f2d83c5 Binary files /dev/null and b/MES_S_DLL/System.Buffers.dll differ diff --git a/MES_S_DLL/data_access_service.dll b/MES_S_DLL/data_access_service.dll new file mode 100644 index 0000000..9d868fb Binary files /dev/null and b/MES_S_DLL/data_access_service.dll differ diff --git a/MES_S_DLL/iMESAppSetting.dll b/MES_S_DLL/iMESAppSetting.dll new file mode 100644 index 0000000..f8629fb Binary files /dev/null and b/MES_S_DLL/iMESAppSetting.dll differ diff --git a/MES_S_DLL/iMESChart_HtmlHandler.dll b/MES_S_DLL/iMESChart_HtmlHandler.dll new file mode 100644 index 0000000..224de43 Binary files /dev/null and b/MES_S_DLL/iMESChart_HtmlHandler.dll differ diff --git a/MES_S_DLL/iMESComInvoke.dll b/MES_S_DLL/iMESComInvoke.dll new file mode 100644 index 0000000..378a143 Binary files /dev/null and b/MES_S_DLL/iMESComInvoke.dll differ diff --git a/MES_S_DLL/iMESComSubroutine.dll b/MES_S_DLL/iMESComSubroutine.dll new file mode 100644 index 0000000..c3b754d Binary files /dev/null and b/MES_S_DLL/iMESComSubroutine.dll differ diff --git a/MES_S_DLL/iMESComXML.dll b/MES_S_DLL/iMESComXML.dll new file mode 100644 index 0000000..61ab08f Binary files /dev/null and b/MES_S_DLL/iMESComXML.dll differ diff --git a/MES_S_DLL/iMESConst.dll b/MES_S_DLL/iMESConst.dll new file mode 100644 index 0000000..7087642 Binary files /dev/null and b/MES_S_DLL/iMESConst.dll differ diff --git a/MES_S_DLL/iMESDataObject.dll b/MES_S_DLL/iMESDataObject.dll new file mode 100644 index 0000000..d415779 Binary files /dev/null and b/MES_S_DLL/iMESDataObject.dll differ diff --git a/MES_S_DLL/iMESException.dll b/MES_S_DLL/iMESException.dll new file mode 100644 index 0000000..99967a8 Binary files /dev/null and b/MES_S_DLL/iMESException.dll differ diff --git a/MES_S_DLL/iMESFileAccessLib.dll b/MES_S_DLL/iMESFileAccessLib.dll new file mode 100644 index 0000000..3d2ed02 Binary files /dev/null and b/MES_S_DLL/iMESFileAccessLib.dll differ diff --git a/MES_S_DLL/iMESLicxManager.dll b/MES_S_DLL/iMESLicxManager.dll new file mode 100644 index 0000000..6a49697 Binary files /dev/null and b/MES_S_DLL/iMESLicxManager.dll differ diff --git a/MES_S_DLL/iMESLog.dll b/MES_S_DLL/iMESLog.dll new file mode 100644 index 0000000..f867b3f Binary files /dev/null and b/MES_S_DLL/iMESLog.dll differ diff --git a/MES_S_DLL/iMESMail.dll b/MES_S_DLL/iMESMail.dll new file mode 100644 index 0000000..788b997 Binary files /dev/null and b/MES_S_DLL/iMESMail.dll differ diff --git a/MES_S_DLL/iMESOpenSmtp.dll b/MES_S_DLL/iMESOpenSmtp.dll new file mode 100644 index 0000000..5155a3d Binary files /dev/null and b/MES_S_DLL/iMESOpenSmtp.dll differ diff --git a/MES_S_DLL/iMESPlugIn.dll b/MES_S_DLL/iMESPlugIn.dll new file mode 100644 index 0000000..a52aa8e Binary files /dev/null and b/MES_S_DLL/iMESPlugIn.dll differ diff --git a/MES_S_DLL/iMESProjectBase.dll b/MES_S_DLL/iMESProjectBase.dll new file mode 100644 index 0000000..26b17fc Binary files /dev/null and b/MES_S_DLL/iMESProjectBase.dll differ diff --git a/MES_S_DLL/iMESSCI.dll b/MES_S_DLL/iMESSCI.dll new file mode 100644 index 0000000..d6b0c07 Binary files /dev/null and b/MES_S_DLL/iMESSCI.dll differ diff --git a/MES_S_DLL/iMESStripMapHandler.dll b/MES_S_DLL/iMESStripMapHandler.dll new file mode 100644 index 0000000..a342848 Binary files /dev/null and b/MES_S_DLL/iMESStripMapHandler.dll differ diff --git a/MES_S_DLL/iMESTestAliveLogger.dll b/MES_S_DLL/iMESTestAliveLogger.dll new file mode 100644 index 0000000..a2a547f Binary files /dev/null and b/MES_S_DLL/iMESTestAliveLogger.dll differ diff --git a/MES_S_DLL/iMESUserManager.dll b/MES_S_DLL/iMESUserManager.dll new file mode 100644 index 0000000..152949e Binary files /dev/null and b/MES_S_DLL/iMESUserManager.dll differ diff --git a/MES_S_DLL/iMESWIPReleaseLogHandler.dll b/MES_S_DLL/iMESWIPReleaseLogHandler.dll new file mode 100644 index 0000000..e11d684 Binary files /dev/null and b/MES_S_DLL/iMESWIPReleaseLogHandler.dll differ diff --git a/MES_S_DLL/log4net.dll b/MES_S_DLL/log4net.dll new file mode 100644 index 0000000..ffc57e1 Binary files /dev/null and b/MES_S_DLL/log4net.dll differ diff --git a/MESkc/MESkc.sln b/MESkc/MESkc.sln new file mode 100644 index 0000000..1e39f29 --- /dev/null +++ b/MESkc/MESkc.sln @@ -0,0 +1,463 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33027.164 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcSYS", "kcSYS\kcSYS.csproj", "{1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcISSUE", "kcISSUE\kcISSUE.csproj", "{0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcSMD", "kcSMD\kcSMD.csproj", "{A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcINV", "kcINV\kcINV.csproj", "{6014CBA7-655E-036A-3E10-1D4284A42A04}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcEMS", "kcEMS\kcEMS.csproj", "{DEEEB59D-6C94-024D-34CE-D6587626B7CD}" + ProjectSection(ProjectDependencies) = postProject + {207CDF1F-0254-0087-05CF-C0E9CDF55C95} = {207CDF1F-0254-0087-05CF-C0E9CDF55C95} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcPM", "kcPM\kcPM.csproj", "{DED5222A-4DAE-08BC-1720-57085F48B95B}" + ProjectSection(ProjectDependencies) = postProject + {068B7C09-B2A5-0627-19D5-6D3A06711EA8} = {068B7C09-B2A5-0627-19D5-6D3A06711EA8} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcOP", "kcOP\kcOP.csproj", "{79E43697-3244-0DFB-3A6F-47AB5F258615}" + ProjectSection(ProjectDependencies) = postProject + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcPRS", "kcPRS\kcPRS.csproj", "{DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcQC", "kcQC\kcQC.csproj", "{CD3DE1C7-4D6C-0159-0A4A-54815E428F08}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcOE", "kcOE\kcOE.csproj", "{1BC870FC-743A-05D8-0868-A956F5F00FFA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcENT", "kcENT\kcENT.csproj", "{F17FE8DF-1478-0510-10B9-1235896D73CB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcRPT", "kcRPT\kcRPT.csproj", "{4828A024-85E8-05A8-1657-E1EDB1188018}" + ProjectSection(ProjectDependencies) = postProject + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} = {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcAUT", "kcAUT\kcAUT.csproj", "{DEA7C507-1AEA-0569-1C44-2A6725281C88}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcERP", "kcERP\kcERP.csproj", "{18A223E2-F828-0064-2638-E614EB3A58E6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcIEW", "kcIEW\kcIEW.csproj", "{4DC29061-BFB9-05FF-0F71-94C1149B905C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcWIP_SFC", "kcWIP_SFC\kcWIP_SFC.csproj", "{C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}" + ProjectSection(ProjectDependencies) = postProject + {207CDF1F-0254-0087-05CF-C0E9CDF55C95} = {207CDF1F-0254-0087-05CF-C0E9CDF55C95} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcEAP", "kcEAP\kcEAP.csproj", "{1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}" + ProjectSection(ProjectDependencies) = postProject + {DEA7C507-1AEA-0569-1C44-2A6725281C88} = {DEA7C507-1AEA-0569-1C44-2A6725281C88} + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB} = {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB} + {207CDF1F-0254-0087-05CF-C0E9CDF55C95} = {207CDF1F-0254-0087-05CF-C0E9CDF55C95} + {4828A024-85E8-05A8-1657-E1EDB1188018} = {4828A024-85E8-05A8-1657-E1EDB1188018} + {DED5222A-4DAE-08BC-1720-57085F48B95B} = {DED5222A-4DAE-08BC-1720-57085F48B95B} + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C} = {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C} + {4DC29061-BFB9-05FF-0F71-94C1149B905C} = {4DC29061-BFB9-05FF-0F71-94C1149B905C} + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1} = {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1} + {79E43697-3244-0DFB-3A6F-47AB5F258615} = {79E43697-3244-0DFB-3A6F-47AB5F258615} + {9EF1369D-9EFB-028D-16C8-8650D7EEB205} = {9EF1369D-9EFB-028D-16C8-8650D7EEB205} + {DEEEB59D-6C94-024D-34CE-D6587626B7CD} = {DEEEB59D-6C94-024D-34CE-D6587626B7CD} + {6014CBA7-655E-036A-3E10-1D4284A42A04} = {6014CBA7-655E-036A-3E10-1D4284A42A04} + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} = {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} + {F17FE8DF-1478-0510-10B9-1235896D73CB} = {F17FE8DF-1478-0510-10B9-1235896D73CB} + {18A223E2-F828-0064-2638-E614EB3A58E6} = {18A223E2-F828-0064-2638-E614EB3A58E6} + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E} = {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E} + {1BC870FC-743A-05D8-0868-A956F5F00FFA} = {1BC870FC-743A-05D8-0868-A956F5F00FFA} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcEDA", "kcEDA\kcEDA.csproj", "{176C4F37-CE37-0B63-0FA9-74AA8C132575}" + ProjectSection(ProjectDependencies) = postProject + {DEA7C507-1AEA-0569-1C44-2A6725281C88} = {DEA7C507-1AEA-0569-1C44-2A6725281C88} + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB} = {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB} + {4828A024-85E8-05A8-1657-E1EDB1188018} = {4828A024-85E8-05A8-1657-E1EDB1188018} + {DED5222A-4DAE-08BC-1720-57085F48B95B} = {DED5222A-4DAE-08BC-1720-57085F48B95B} + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C} = {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C} + {4DC29061-BFB9-05FF-0F71-94C1149B905C} = {4DC29061-BFB9-05FF-0F71-94C1149B905C} + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1} = {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1} + {79E43697-3244-0DFB-3A6F-47AB5F258615} = {79E43697-3244-0DFB-3A6F-47AB5F258615} + {DEEEB59D-6C94-024D-34CE-D6587626B7CD} = {DEEEB59D-6C94-024D-34CE-D6587626B7CD} + {6014CBA7-655E-036A-3E10-1D4284A42A04} = {6014CBA7-655E-036A-3E10-1D4284A42A04} + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} = {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} + {F17FE8DF-1478-0510-10B9-1235896D73CB} = {F17FE8DF-1478-0510-10B9-1235896D73CB} + {18A223E2-F828-0064-2638-E614EB3A58E6} = {18A223E2-F828-0064-2638-E614EB3A58E6} + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E} = {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E} + {1BC870FC-743A-05D8-0868-A956F5F00FFA} = {1BC870FC-743A-05D8-0868-A956F5F00FFA} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcFMA", "kcFMA\kcFMA.csproj", "{A545124C-D2FF-030F-1492-BA143EA934F2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcEQP", "kcEQP\kcEQP.csproj", "{068B7C09-B2A5-0627-19D5-6D3A06711EA8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcMTL", "kcMTL\kcMTL.csproj", "{95022281-FDBF-0468-2FD1-C89022BF35E7}" + ProjectSection(ProjectDependencies) = postProject + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcPRD", "kcPRD\kcPRD.csproj", "{6A4841C1-8F0C-0F82-1D81-5908B72CD580}" + ProjectSection(ProjectDependencies) = postProject + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcSPC", "kcSPC\kcSPC.csproj", "{9EF1369D-9EFB-028D-16C8-8650D7EEB205}" + ProjectSection(ProjectDependencies) = postProject + {6A4841C1-8F0C-0F82-1D81-5908B72CD580} = {6A4841C1-8F0C-0F82-1D81-5908B72CD580} + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} = {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} + {18A223E2-F828-0064-2638-E614EB3A58E6} = {18A223E2-F828-0064-2638-E614EB3A58E6} + {1BC870FC-743A-05D8-0868-A956F5F00FFA} = {1BC870FC-743A-05D8-0868-A956F5F00FFA} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcWIP", "kcWIP\kcWIP.csproj", "{207CDF1F-0254-0087-05CF-C0E9CDF55C95}" + ProjectSection(ProjectDependencies) = postProject + {068B7C09-B2A5-0627-19D5-6D3A06711EA8} = {068B7C09-B2A5-0627-19D5-6D3A06711EA8} + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C} = {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C} + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1} = {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1} + {95022281-FDBF-0468-2FD1-C89022BF35E7} = {95022281-FDBF-0468-2FD1-C89022BF35E7} + {79E43697-3244-0DFB-3A6F-47AB5F258615} = {79E43697-3244-0DFB-3A6F-47AB5F258615} + {9EF1369D-9EFB-028D-16C8-8650D7EEB205} = {9EF1369D-9EFB-028D-16C8-8650D7EEB205} + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195} = {0A1F9AA2-200E-0C52-3EDF-C0D76154A195} + {6014CBA7-655E-036A-3E10-1D4284A42A04} = {6014CBA7-655E-036A-3E10-1D4284A42A04} + {6A4841C1-8F0C-0F82-1D81-5908B72CD580} = {6A4841C1-8F0C-0F82-1D81-5908B72CD580} + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} = {CD3DE1C7-4D6C-0159-0A4A-54815E428F08} + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} = {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} + {1BC870FC-743A-05D8-0868-A956F5F00FFA} = {1BC870FC-743A-05D8-0868-A956F5F00FFA} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcUSR", "kcUSR\kcUSR.csproj", "{0A1F9AA2-200E-0C52-3EDF-C0D76154A195}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcBasis_UPD", "kcBasis_UPD\kcBasis_UPD.csproj", "{97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}" + ProjectSection(ProjectDependencies) = postProject + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} = {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "kcBasis_Query", "kcBasis_Query\kcBasis_Query.csproj", "{9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Debug|x86.ActiveCfg = Debug|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Debug|x86.Build.0 = Debug|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Release|Any CPU.Build.0 = Release|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Release|x86.ActiveCfg = Release|Any CPU + {1D6AF6D3-297A-0C5D-2543-4BDC71CE0127}.Release|x86.Build.0 = Release|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Debug|x86.ActiveCfg = Debug|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Debug|x86.Build.0 = Debug|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Release|Any CPU.Build.0 = Release|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Release|x86.ActiveCfg = Release|Any CPU + {0EB1C4EB-AC3F-04F6-0A48-36EB853C6C1E}.Release|x86.Build.0 = Release|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Debug|x86.ActiveCfg = Debug|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Debug|x86.Build.0 = Debug|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Release|Any CPU.Build.0 = Release|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Release|x86.ActiveCfg = Release|Any CPU + {A8926D75-A43D-05E8-1BA0-9ACDE35BEED1}.Release|x86.Build.0 = Release|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Debug|x86.ActiveCfg = Debug|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Debug|x86.Build.0 = Debug|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Release|Any CPU.Build.0 = Release|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Release|x86.ActiveCfg = Release|Any CPU + {6014CBA7-655E-036A-3E10-1D4284A42A04}.Release|x86.Build.0 = Release|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Debug|x86.ActiveCfg = Debug|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Debug|x86.Build.0 = Debug|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Release|Any CPU.Build.0 = Release|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Release|x86.ActiveCfg = Release|Any CPU + {DEEEB59D-6C94-024D-34CE-D6587626B7CD}.Release|x86.Build.0 = Release|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Debug|x86.ActiveCfg = Debug|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Debug|x86.Build.0 = Debug|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Release|Any CPU.Build.0 = Release|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Release|x86.ActiveCfg = Release|Any CPU + {DED5222A-4DAE-08BC-1720-57085F48B95B}.Release|x86.Build.0 = Release|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Debug|Any CPU.Build.0 = Debug|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Debug|x86.ActiveCfg = Debug|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Debug|x86.Build.0 = Debug|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Release|Any CPU.ActiveCfg = Release|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Release|Any CPU.Build.0 = Release|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Release|x86.ActiveCfg = Release|Any CPU + {79E43697-3244-0DFB-3A6F-47AB5F258615}.Release|x86.Build.0 = Release|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Debug|x86.ActiveCfg = Debug|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Debug|x86.Build.0 = Debug|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Release|Any CPU.Build.0 = Release|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Release|x86.ActiveCfg = Release|Any CPU + {DE61BD5C-74CF-0831-37FA-C5C49E8E7C7C}.Release|x86.Build.0 = Release|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Debug|x86.ActiveCfg = Debug|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Debug|x86.Build.0 = Debug|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Release|Any CPU.Build.0 = Release|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Release|x86.ActiveCfg = Release|Any CPU + {CD3DE1C7-4D6C-0159-0A4A-54815E428F08}.Release|x86.Build.0 = Release|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Debug|x86.ActiveCfg = Debug|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Debug|x86.Build.0 = Debug|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Release|Any CPU.Build.0 = Release|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Release|x86.ActiveCfg = Release|Any CPU + {1BC870FC-743A-05D8-0868-A956F5F00FFA}.Release|x86.Build.0 = Release|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Debug|x86.ActiveCfg = Debug|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Debug|x86.Build.0 = Debug|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Release|Any CPU.Build.0 = Release|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Release|x86.ActiveCfg = Release|Any CPU + {F17FE8DF-1478-0510-10B9-1235896D73CB}.Release|x86.Build.0 = Release|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Debug|x86.ActiveCfg = Debug|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Debug|x86.Build.0 = Debug|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Release|Any CPU.Build.0 = Release|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Release|x86.ActiveCfg = Release|Any CPU + {4828A024-85E8-05A8-1657-E1EDB1188018}.Release|x86.Build.0 = Release|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Debug|x86.ActiveCfg = Debug|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Debug|x86.Build.0 = Debug|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Release|Any CPU.Build.0 = Release|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Release|x86.ActiveCfg = Release|Any CPU + {DEA7C507-1AEA-0569-1C44-2A6725281C88}.Release|x86.Build.0 = Release|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Debug|x86.ActiveCfg = Debug|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Debug|x86.Build.0 = Debug|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Release|Any CPU.Build.0 = Release|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Release|x86.ActiveCfg = Release|Any CPU + {18A223E2-F828-0064-2638-E614EB3A58E6}.Release|x86.Build.0 = Release|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Debug|x86.ActiveCfg = Debug|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Debug|x86.Build.0 = Debug|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Release|Any CPU.Build.0 = Release|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Release|x86.ActiveCfg = Release|Any CPU + {4DC29061-BFB9-05FF-0F71-94C1149B905C}.Release|x86.Build.0 = Release|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Debug|x86.ActiveCfg = Debug|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Debug|x86.Build.0 = Debug|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Release|Any CPU.Build.0 = Release|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Release|x86.ActiveCfg = Release|Any CPU + {C17C4B13-4571-0240-12C2-DF7DEAC9E4FB}.Release|x86.Build.0 = Release|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Debug|x86.ActiveCfg = Debug|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Debug|x86.Build.0 = Debug|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Release|Any CPU.Build.0 = Release|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Release|x86.ActiveCfg = Release|Any CPU + {1FBB7074-F490-0D8A-1EC1-C0D9F2FA6BFF}.Release|x86.Build.0 = Release|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Debug|Any CPU.Build.0 = Debug|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Debug|x86.ActiveCfg = Debug|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Debug|x86.Build.0 = Debug|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Release|Any CPU.ActiveCfg = Release|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Release|Any CPU.Build.0 = Release|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Release|x86.ActiveCfg = Release|Any CPU + {176C4F37-CE37-0B63-0FA9-74AA8C132575}.Release|x86.Build.0 = Release|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Debug|x86.ActiveCfg = Debug|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Debug|x86.Build.0 = Debug|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Release|Any CPU.Build.0 = Release|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Release|x86.ActiveCfg = Release|Any CPU + {A545124C-D2FF-030F-1492-BA143EA934F2}.Release|x86.Build.0 = Release|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Debug|x86.ActiveCfg = Debug|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Debug|x86.Build.0 = Debug|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Release|Any CPU.Build.0 = Release|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Release|x86.ActiveCfg = Release|Any CPU + {068B7C09-B2A5-0627-19D5-6D3A06711EA8}.Release|x86.Build.0 = Release|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Debug|x86.ActiveCfg = Debug|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Debug|x86.Build.0 = Debug|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Release|Any CPU.Build.0 = Release|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Release|x86.ActiveCfg = Release|Any CPU + {95022281-FDBF-0468-2FD1-C89022BF35E7}.Release|x86.Build.0 = Release|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Debug|x86.ActiveCfg = Debug|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Debug|x86.Build.0 = Debug|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Release|Any CPU.Build.0 = Release|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Release|x86.ActiveCfg = Release|Any CPU + {6A4841C1-8F0C-0F82-1D81-5908B72CD580}.Release|x86.Build.0 = Release|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Debug|x86.ActiveCfg = Debug|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Debug|x86.Build.0 = Debug|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Release|Any CPU.Build.0 = Release|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Release|x86.ActiveCfg = Release|Any CPU + {9EF1369D-9EFB-028D-16C8-8650D7EEB205}.Release|x86.Build.0 = Release|Any CPU + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Debug|Any CPU.Build.0 = Debug|Any CPU + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Debug|x86.ActiveCfg = Debug|x86 + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Debug|x86.Build.0 = Debug|x86 + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Release|Any CPU.ActiveCfg = Release|Any CPU + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Release|Any CPU.Build.0 = Release|Any CPU + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Release|x86.ActiveCfg = Release|x86 + {207CDF1F-0254-0087-05CF-C0E9CDF55C95}.Release|x86.Build.0 = Release|x86 + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Debug|x86.ActiveCfg = Debug|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Debug|x86.Build.0 = Debug|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Release|Any CPU.Build.0 = Release|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Release|x86.ActiveCfg = Release|Any CPU + {B83B1BC9-EC56-43A3-BC87-0AA903C39535}.Release|x86.Build.0 = Release|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Debug|x86.ActiveCfg = Debug|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Debug|x86.Build.0 = Debug|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Release|Any CPU.Build.0 = Release|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Release|x86.ActiveCfg = Release|Any CPU + {97ABE0CE-7D76-4C27-B820-4EF8FAE436B3}.Release|x86.Build.0 = Release|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Debug|x86.ActiveCfg = Debug|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Debug|x86.Build.0 = Debug|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Release|Any CPU.Build.0 = Release|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Release|x86.ActiveCfg = Release|Any CPU + {9CF24998-078E-40D0-BED9-1AD7EEA1D4B4}.Release|x86.Build.0 = Release|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Debug|x86.ActiveCfg = Debug|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Debug|x86.Build.0 = Debug|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Release|Any CPU.Build.0 = Release|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Release|x86.ActiveCfg = Release|Any CPU + {0A1F9AA2-200E-0C52-3EDF-C0D76154A195}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CBBEEA62-C9C4-4821-8254-AABD367F8085} + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 26 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = kcSYS\\kcSYS.csproj + SccProjectName1 = kcSYS + SccLocalPath1 = kcSYS + SccProjectUniqueName2 = kcISSUE\\kcISSUE.csproj + SccProjectName2 = kcISSUE + SccLocalPath2 = kcISSUE + SccProjectUniqueName3 = kcSMD\\kcSMD.csproj + SccProjectName3 = kcSMD + SccLocalPath3 = kcSMD + SccProjectUniqueName4 = kcINV\\kcINV.csproj + SccProjectName4 = kcINV + SccLocalPath4 = kcINV + SccProjectUniqueName5 = kcEMS\\kcEMS.csproj + SccProjectName5 = kcEMS + SccLocalPath5 = kcEMS + SccProjectUniqueName6 = kcPM\\kcPM.csproj + SccProjectName6 = kcPM + SccLocalPath6 = kcPM + SccProjectUniqueName7 = kcOP\\kcOP.csproj + SccProjectName7 = kcOP + SccLocalPath7 = kcOP + SccProjectUniqueName8 = kcPRS\\kcPRS.csproj + SccProjectName8 = kcPRS + SccLocalPath8 = kcPRS + SccProjectUniqueName9 = kcQC\\kcQC.csproj + SccProjectName9 = kcQC + SccLocalPath9 = kcQC + SccProjectUniqueName10 = kcOE\\kcOE.csproj + SccProjectName10 = kcOE + SccLocalPath10 = kcOE + SccProjectUniqueName11 = kcENT\\kcENT.csproj + SccProjectName11 = kcENT + SccLocalPath11 = kcENT + SccProjectUniqueName12 = kcRPT\\kcRPT.csproj + SccProjectName12 = kcRPT + SccLocalPath12 = kcRPT + SccProjectUniqueName13 = kcAUT\\kcAUT.csproj + SccProjectName13 = kcAUT + SccLocalPath13 = kcAUT + SccProjectUniqueName14 = kcERP\\kcERP.csproj + SccProjectName14 = kcERP + SccLocalPath14 = kcERP + SccProjectUniqueName15 = kcIEW\\kcIEW.csproj + SccProjectName15 = kcIEW + SccLocalPath15 = kcIEW + SccProjectUniqueName16 = kcWIP_SFC\\kcWIP_SFC.csproj + SccProjectName16 = kcWIP_SFC + SccLocalPath16 = kcWIP_SFC + SccProjectUniqueName17 = kcEAP\\kcEAP.csproj + SccProjectName17 = kcEAP + SccLocalPath17 = kcEAP + SccProjectUniqueName18 = kcEDA\\kcEDA.csproj + SccProjectName18 = kcEDA + SccLocalPath18 = kcEDA + SccProjectUniqueName19 = kcFMA\\kcFMA.csproj + SccProjectName19 = kcFMA + SccLocalPath19 = kcFMA + SccProjectUniqueName20 = kcEQP\\kcEQP.csproj + SccProjectName20 = kcEQP + SccLocalPath20 = kcEQP + SccProjectUniqueName21 = kcMTL\\kcMTL.csproj + SccProjectName21 = kcMTL + SccLocalPath21 = kcMTL + SccProjectUniqueName22 = kcPRD\\kcPRD.csproj + SccProjectName22 = kcPRD + SccLocalPath22 = kcPRD + SccProjectUniqueName23 = kcSPC\\kcSPC.csproj + SccProjectName23 = kcSPC + SccLocalPath23 = kcSPC + SccProjectUniqueName24 = kcWIP\\kcWIP.csproj + SccProjectName24 = kcWIP + SccLocalPath24 = kcWIP + SccProjectUniqueName25 = kcUSR\\kcUSR.vbproj + SccProjectName25 = kcUSR + SccLocalPath25 = kcUSR + EndGlobalSection +EndGlobal diff --git a/MESkc/MESkc_WIP.sln b/MESkc/MESkc_WIP.sln new file mode 100644 index 0000000..c2f2117 --- /dev/null +++ b/MESkc/MESkc_WIP.sln @@ -0,0 +1,97 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "kcWIP", "kcWIP\kcWIP.vbproj", "{92585E74-CE0C-4F76-8797-0A97AF626835}" + ProjectSection(ProjectDependencies) = postProject + {D86CC0AA-4354-4073-9FD9-9376D5BBE120} = {D86CC0AA-4354-4073-9FD9-9376D5BBE120} + {AF4E77B8-E522-43AC-A71B-81A213593587} = {AF4E77B8-E522-43AC-A71B-81A213593587} + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5} = {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5} + EndProjectSection +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "kcWIP_SFC", "kcWIP_SFC\kcWIP_SFC.vbproj", "{7358CA78-8929-4DB1-909A-1503885ED05B}" + ProjectSection(ProjectDependencies) = postProject + {92585E74-CE0C-4F76-8797-0A97AF626835} = {92585E74-CE0C-4F76-8797-0A97AF626835} + EndProjectSection +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "kcSYS", "kcSYS\kcSYS.vbproj", "{AF4E77B8-E522-43AC-A71B-81A213593587}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "kcPRD", "kcPRD\kcPRD.vbproj", "{D86CC0AA-4354-4073-9FD9-9376D5BBE120}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "kcSPC", "kcSPC\kcSPC.vbproj", "{2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {92585E74-CE0C-4F76-8797-0A97AF626835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92585E74-CE0C-4F76-8797-0A97AF626835}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92585E74-CE0C-4F76-8797-0A97AF626835}.Debug|x86.ActiveCfg = Debug|Any CPU + {92585E74-CE0C-4F76-8797-0A97AF626835}.Debug|x86.Build.0 = Debug|Any CPU + {92585E74-CE0C-4F76-8797-0A97AF626835}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92585E74-CE0C-4F76-8797-0A97AF626835}.Release|Any CPU.Build.0 = Release|Any CPU + {92585E74-CE0C-4F76-8797-0A97AF626835}.Release|x86.ActiveCfg = Release|x86 + {92585E74-CE0C-4F76-8797-0A97AF626835}.Release|x86.Build.0 = Release|x86 + {7358CA78-8929-4DB1-909A-1503885ED05B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Debug|x86.ActiveCfg = Debug|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Debug|x86.Build.0 = Debug|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Release|Any CPU.Build.0 = Release|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Release|x86.ActiveCfg = Release|Any CPU + {7358CA78-8929-4DB1-909A-1503885ED05B}.Release|x86.Build.0 = Release|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Debug|x86.ActiveCfg = Debug|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Debug|x86.Build.0 = Debug|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Release|Any CPU.Build.0 = Release|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Release|x86.ActiveCfg = Release|Any CPU + {AF4E77B8-E522-43AC-A71B-81A213593587}.Release|x86.Build.0 = Release|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Debug|x86.ActiveCfg = Debug|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Debug|x86.Build.0 = Debug|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Release|Any CPU.Build.0 = Release|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Release|x86.ActiveCfg = Release|Any CPU + {D86CC0AA-4354-4073-9FD9-9376D5BBE120}.Release|x86.Build.0 = Release|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Debug|x86.ActiveCfg = Debug|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Debug|x86.Build.0 = Debug|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Release|Any CPU.Build.0 = Release|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Release|x86.ActiveCfg = Release|Any CPU + {2CD5B7F6-52A3-4D7C-9490-4C2EB57986A5}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 6 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = kcWIP_SFC\\kcWIP_SFC.vbproj + SccProjectName1 = kcWIP_SFC + SccLocalPath1 = kcWIP_SFC + SccProjectUniqueName2 = kcWIP\\kcWIP.vbproj + SccProjectName2 = kcWIP + SccLocalPath2 = kcWIP + SccProjectUniqueName3 = kcSYS\\kcSYS.vbproj + SccProjectName3 = kcSYS + SccLocalPath3 = kcSYS + SccProjectUniqueName4 = kcPRD\\kcPRD.vbproj + SccProjectName4 = kcPRD + SccLocalPath4 = kcPRD + SccProjectUniqueName5 = kcSPC\\kcSPC.vbproj + SccProjectName5 = kcSPC + SccLocalPath5 = kcSPC + EndGlobalSection +EndGlobal diff --git a/MESsc/Global.asax b/MESsc/Global.asax new file mode 100644 index 0000000..66aeea9 --- /dev/null +++ b/MESsc/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.vb" Inherits="MESSmartClient.Global" %> \ No newline at end of file diff --git a/MESsc/Styles.css b/MESsc/Styles.css new file mode 100644 index 0000000..620e145 --- /dev/null +++ b/MESsc/Styles.css @@ -0,0 +1,163 @@ +/* Web ε{Mתw] CSS ˦ */ + +BODY +{ + BACKGROUND-COLOR: white; + FONT-FAMILY: Verdana, Helvetica, sans-serif; + FONT-SIZE: .8em; + FONT-WEIGHT: normal; + LETTER-SPACING: normal; + TEXT-TRANSFORM: none; + WORD-SPACING: normal +} + +H1, H2, H3, H4, H5, TH, THEAD, TFOOT +{ + COLOR: #003366; +} +H1 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 2em; + font-weight: 700; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +H2 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 1.75em; + font-weight: 700; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +H3 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 1.58em; + font-weight: 500; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +H4 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 1.33em; + font-weight: 500; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +H5, DT { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 1em; + font-weight: 700; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +H6 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .8em; + font-weight: 700; + font-style: normal; + text-decoration: none; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + } + +TFOOT, THEAD { + font-size: 1em; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Arial, Helvetica, sans-serif; + } + +TH { + vertical-align: baseline; + font-size: 1em; + font-weight: bold; + word-spacing: normal; + letter-spacing: normal; + text-transform: none; + font-family: Arial, Helvetica, sans-serif; + } + + +A:link { + text-decoration: none; + color: #3333cc; + } + +A:visited { + text-decoration: none; + color: #333399; + } + +A:active { + text-decoration: none; + color: #333399; + } + +A:hover { + text-decoration: underline; + color: #3333cc; + } + +SMALL { + font-size: .7em; + } + +BIG { + font-size: 1.17em; + } + +BLOCKQUOTE, PRE { + font-family: Courier New, monospace; + } + + +UL LI { + list-style-type: square ; + } + +UL LI LI { + list-style-type: disc; + } + +UL LI LI LI { + list-style-type: circle; + } + +OL LI { + list-style-type: decimal; + } + +OL OL LI { + list-style-type: lower-alpha; + } + +OL OL OL LI { + list-style-type: lower-roman; + } + +IMG { + margin-top: 5px; + margin-left: 10px; + margin-right: 10px; + } diff --git a/MESsc/Web.config b/MESsc/Web.config new file mode 100644 index 0000000..437943a --- /dev/null +++ b/MESsc/Web.config @@ -0,0 +1,57 @@ + + + + +
+ + + + + + + + + + + + + + + + + + http://localhost/MESws_STD/wsInvoke.asmx + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESsc/default.aspx b/MESsc/default.aspx new file mode 100644 index 0000000..5f2854e --- /dev/null +++ b/MESsc/default.aspx @@ -0,0 +1,1550 @@ +<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="default.aspx.vb" Inherits="MESSmartClient._default" %> + + + + MES Series 6.1.0 + <%----%> + + + + + + + + + + + + <%-- --%> + + + + + <%-- --%> + + + +
+ +
+ +
+ +
+
+
+
+
+
+
+
<%=GetCompanyMsg()%>
+
+
<%=GetClientMsg(1)%>
+
PC | Windows
+
+
+
<%=GetClientMsg(2)%>
+
PC | Windows(PAD)
+
+
+
<%=GetClientMsg(3)%>
+
PAD | Android
+
+
+
<%=GetClientMsg(4)%>
+
PDA | Android
+
+
+
<%=GetClientMsg(5)%>
+
PC | Web
+
+
+ + + +
+
+
+
+
+
+
+
<%=GetQRCodeMsg()%>
+
+
+ +
+
+ + +
+
+ +
+
+ +
+
+
+
+
+
+
<%=GetClientMsg(1)%>
+
PC | Windows
+
+
+
+
+
+
+
+
+
<%=GetClientMsg(2)%>
+
PC | Windows(PAD)
+
+
+
+
+
+
+
+
+
<%=GetClientMsg(3)%>
+
PAD | Android
+
+
+
+
+
+
+
+
+
<%=GetClientMsg(4)%>
+
PDA | Android
+
+
+
+
+
+
+
+
+
<%=GetClientMsg(5)%>
+
PC | Web
+
+
+
+
+ + +
+
+ +
+
<%=GetMsgAreatMsg()%>
+
+
<%=GetShowMessageText()%>
+
+
+
+ + +
+ + + + +
+
+ + +<%-- +
+
+
+ +
+ +
+
+ + + +
+ + +
+ +
+
<%=Getsystem_Info()%>
+ + <%=GetShowMessageText()%> + +
+
+ + + + --%> + diff --git a/MESsc/imes.css b/MESsc/imes.css new file mode 100644 index 0000000..77d4542 --- /dev/null +++ b/MESsc/imes.css @@ -0,0 +1,234 @@ +BODY { + SCROLLBAR-FACE-COLOR: #47a2ee; FONT-SIZE: 11px; MARGIN: 0px; SCROLLBAR-HIGHLIGHT-COLOR: #ffffff; SCROLLBAR-SHADOW-COLOR: #ffffff; COLOR: #666666; SCROLLBAR-3DLIGHT-COLOR: #57aaef; LINE-HEIGHT: 18px; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #e4f1f5; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; SCROLLBAR-DARKSHADOW-COLOR: #47a2ee +} +P { + MARGIN: 0px +} +TD { + FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: 18px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif" +} +A { + FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: 18px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +A:hover { + TEXT-DECORATION: underline +} +from { + MARGIN: 0px +} +.leftNavi { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.leftNavi A { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #002531; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.leftNavi A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.LeftSubNavi { + FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.LeftSubNavi A { + FONT-SIZE: 11px; COLOR: #002531; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.LeftSubNavi A:hover { + FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.down { + FONT-SIZE: 11px; COLOR: #666666 +} +.down A { + FONT-SIZE: 11px; COLOR: #666666; TEXT-DECORATION: none +} +.down A:hover { + FONT-SIZE: 11px; COLOR: #666666; TEXT-DECORATION: underline +} +.page { + FONT-WEIGHT: bold; FONT-SIZE: 11px; WORD-SPACING: 0.5em; COLOR: #ff6600 +} +.page A { + FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.page A:hover { + FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: underline +} +.iso { + FONT-SIZE: 10px; COLOR: #666666 +} +.Date { + FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Arial", "Helvetica", "sans-serif" +} +.DateBLUE { + FONT-SIZE: 11px; COLOR: #0b84e8; FONT-FAMILY: "Arial", "Helvetica", "sans-serif" +} +.TitleBk { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #333333; FONT-FAMILY: "Arial", "Helvetica", "sans-serif" +} +.copyright { + FONT-SIZE: 11px; COLOR: #ffffff; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.copyright A { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ffffff; TEXT-DECORATION: none +} +.copyright A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; TEXT-DECORATION: none +} +.lineGray { + LINE-HEIGHT: 1px; BORDER-BOTTOM: #cccccc 1px solid; TEXT-DECORATION: none +} +.lineGrayUP { + BORDER-TOP: #cccccc 1px solid; LINE-HEIGHT: 1px; TEXT-DECORATION: none +} +.lineGray3UP { + BORDER-TOP: #cccccc 3px solid; LINE-HEIGHT: 1px; TEXT-DECORATION: none +} +.line1Gray1 { + BORDER-RIGHT: #cccccc 1px solid; LINE-HEIGHT: 1px; TEXT-DECORATION: none +} +.line1Gray { + LINE-HEIGHT: 1px; BORDER-BOTTOM: #cccccc 1px dashed; TEXT-DECORATION: none +} +.line1Gray2 { + FONT-SIZE: 1px; LINE-HEIGHT: 5px; BORDER-BOTTOM: #cccccc 1px dashed; TEXT-DECORATION: none +} +.line1GrayUP { + BORDER-TOP: #cccccc 1px dashed; LINE-HEIGHT: 1px; TEXT-DECORATION: none +} +.lineOrange { + LINE-HEIGHT: 1px; BORDER-BOTTOM: #ffcc00 1px solid; TEXT-DECORATION: none +} +.line1Orange { + BORDER-LEFT: #ffcc00 1px dashed; LINE-HEIGHT: 1px; TEXT-DECORATION: none +} +.WordText { + FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #666666; LINE-HEIGHT: 18px; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.News13Orange { + FONT-WEIGHT: bolder; FONT-SIZE: 13px; COLOR: #ffcc00; LINE-HEIGHT: 17px; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Title { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Title A { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11List { + FONT-SIZE: 10px; COLOR: #0b84e8; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11List A { + FONT-SIZE: 10px; COLOR: #0b84e8; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: underline +} +.Word11List A:hover { + FONT-SIZE: 10px; COLOR: #0b84e8; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word10Blue { + FONT-WEIGHT: bold; FONT-SIZE: 10px; COLOR: #0b84e8; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11Orange { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11Orange A { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: underline +} +.Word11Orange A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11OrangeNone { + FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11OrangeNone A { + FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11OrangeNone A:hover { + FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: underline +} +.Word10Bk { + FONT-SIZE: 10px; COLOR: #666666; LINE-HEIGHT: 8px; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word10BkHotLine { + FONT-SIZE: 10px; COLOR: #666666; LINE-HEIGHT: normal; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11Bk { + FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11BkG { + FONT-SIZE: 11px; COLOR: #999999; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word11BkB { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word13Blue { + FONT-WEIGHT: bold; FONT-SIZE: 13px; COLOR: #0964ae; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Blue { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #0b84e8; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Blue2 { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #0964ae; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Blue3 { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #0b84e8; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Blue3 A { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #0b84e8; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Blue3 A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12White { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Bk { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Bk A { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Bk A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: underline +} +.Word12BkSiteMap { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12BkSiteMap A { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12BkSiteMap A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Orange { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Orange A { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word12Orange A:hover { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #666666; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: underline +} +.Word14Orange { + FONT-WEIGHT: bolder; FONT-SIZE: 14px; COLOR: #ff6600; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word14Blue { + FONT-WEIGHT: bolder; FONT-SIZE: 14px; COLOR: #0b84e8; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Word15Blue { + FONT-WEIGHT: bolder; FONT-SIZE: 18px; COLOR: #0b84e8; LINE-HEIGHT: 22px; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; TEXT-DECORATION: none +} +.Table { + BORDER-RIGHT: #ffcc00; BORDER-TOP: #ffcc00; BORDER-LEFT: #ffcc00; BORDER-BOTTOM: #ffcc00; TEXT-DECORATION: none +} +.TableLeftmenu { + LINE-HEIGHT: 5px; TEXT-DECORATION: none +} +.FormFormat INPUT { + BORDER-RIGHT: #d5d5d5 1px solid; BORDER-TOP: #d5d5d5 1px solid; FONT-SIZE: 11px; BORDER-LEFT: #d5d5d5 1px solid; COLOR: #666666; BORDER-BOTTOM: #d5d5d5 1px solid; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; BACKGROUND-COLOR: #ffffff +} +.FormFormat TEXTAREA { + BORDER-RIGHT: #d5d5d5 1px solid; BORDER-TOP: #d5d5d5 1px solid; FONT-SIZE: 10px; BORDER-LEFT: #d5d5d5 1px solid; COLOR: #666666; BORDER-BOTTOM: #d5d5d5 1px solid; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; BACKGROUND-COLOR: #ffffff +} +.NewsTitle { + FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"; LETTER-SPACING: 3px +} +.norow { + FONT-SIZE: 1px; LINE-HEIGHT: 1px +} diff --git a/MESsc/wsSC.asmx b/MESsc/wsSC.asmx new file mode 100644 index 0000000..34853fa --- /dev/null +++ b/MESsc/wsSC.asmx @@ -0,0 +1 @@ +<%@ WebService Language="vb" CodeBehind="wsSC.asmx.vb" Class="MESSmartClient.wsSC" %> diff --git a/MEStc/MEStc.sln b/MEStc/MEStc.sln new file mode 100644 index 0000000..76de78c --- /dev/null +++ b/MEStc/MEStc.sln @@ -0,0 +1,319 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcEQP_IC", "tcEQP_IC\tcEQP_IC.csproj", "{91E68BEF-6244-0689-3E85-FF6F736A3977}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcPRD_IC", "tcPRD_IC\tcPRD_IC.csproj", "{8B2E81BF-556C-0A55-14CD-C2274A70750D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_IC", "tcWIP_IC\tcWIP_IC.csproj", "{117A2930-12C1-09E4-27AB-1400F15CA6D8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcSYS_IC", "tcSYS_IC\tcSYS_IC.csproj", "{5563B510-F29D-0863-361A-BB21D54F72AA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_Mask", "tcWIP_Mask\tcWIP_Mask.csproj", "{BAE09131-E2D1-0EE8-1090-6C66C7EBB6B5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_Tape", "tcWIP_Tape\tcWIP_Tape.csproj", "{F6D12B4E-5206-0729-24A3-EC1C8E0468D7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcOE_Tape", "tcOE_Tape\tcOE_Tape.csproj", "{92573F7B-F315-0C16-2B01-652B23F0767D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_Car", "tcWIP_Car\tcWIP_Car.csproj", "{6C6BE936-B17E-0A38-243B-13C9B1C823B6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcPRD_FAB", "tcPRD_FAB\tcPRD_FAB.csproj", "{54FF2644-577D-0C8F-1C51-A93F17089B82}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_FAB", "tcWIP_FAB\tcWIP_FAB.csproj", "{F9BCDB72-7F4F-043F-158C-42016A52BFB4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_CF", "tcWIP_CF\tcWIP_CF.csproj", "{6579CA1B-A33A-092A-1125-6EB4D65422DB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcERP", "tcERP\tcERP.csproj", "{B9EE09D7-D3F5-000D-0CD7-360ED2314339}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcPRD_Tape", "tcPRD_Tape\tcPRD_Tape.csproj", "{CB71D03C-C1E5-0980-3CB6-D59D3B109ADF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcMTL_Tape", "tcMTL_Tape\tcMTL_Tape.csproj", "{3026B9C7-547C-0CF5-2C20-2A86C5D8C846}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_Unit", "tcWIP_Unit\tcWIP_Unit.csproj", "{36911EED-F92B-0CEE-276F-209E87EDEF83}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcEQP_Tape", "tcEQP_Tape\tcEQP_Tape.csproj", "{F5958BC2-F160-0A51-0959-382FB7E607CC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcOP_Tape", "tcOP_Tape\tcOP_Tape.csproj", "{D49E77E6-5BC7-0D5E-3C93-DEDECA69D4E3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_DT", "tcWIP_DT\tcWIP_DT.csproj", "{6B88498A-8285-0D44-2071-321DEBFD1906}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcPRD_LED", "tcPRD_LED\tcPRD_LED.csproj", "{1BCB727E-E8E7-07FF-11DE-CDBA76AEB577}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcOE_LED", "tcOE_LED\tcOE_LED.csproj", "{E2F5E6C6-BEC9-05E7-2D5E-89FCEB4387C8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_LED", "tcWIP_LED\tcWIP_LED.csproj", "{4BE4FBD4-70EA-000D-0CF6-C7BE161DB657}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcSPC_IC", "tcSPC_IC\tcSPC_IC.csproj", "{449A4C55-CA78-070F-2D25-9014B67ADC3B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_MOTrans", "tcWIP_MOTrans\tcWIP_MOTrans.csproj", "{C4B9F323-7F5B-065E-25B7-8412A1315198}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcUSR_IC", "tcUSR_IC\tcUSR_IC.csproj", "{4C7FF080-E85D-0554-13EE-CB3E46AFCAA4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_Cell", "tcWIP_Cell\tcWIP_Cell.csproj", "{B2ADCF4C-1962-0CA6-11E8-CC43DB084F7E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_PCS", "tcWIP_PCS\tcWIP_PCS.csproj", "{00EC19D3-91D8-08A5-1A9E-36208C7262C7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcEQP_LED", "tcEQP_LED\tcEQP_LED.csproj", "{2B0E0E6C-7813-0353-19A8-08C89687C79F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcEMS_LED", "tcEMS_LED\tcEMS_LED.csproj", "{55F8FB6E-EF8D-00BB-3352-EB4D2CFF84CF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcINV_LED", "tcINV_LED\tcINV_LED.csproj", "{8D8DA80C-DD69-0772-18AF-515638FA6B90}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcPRD_Film", "tcPRD_Film\tcPRD_Film.csproj", "{B42E6F0F-CC75-0D5F-0F19-F35A5231A02B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcWIP_SFC", "tcWIP_SFC\tcWIP_SFC.csproj", "{DAFC8A0D-2A92-05D6-0623-CE59CB1C666B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tcMES_LiveUpdate", "tcMES_LiveUpdate\tcMES_LiveUpdate.csproj", "{2A56A54D-488B-0945-3CF5-BC1E42712034}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataImporter", "DataImporter\DataImporter.csproj", "{4AA9343A-B2BF-0CC4-27D4-BD7EE9456985}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {91E68BEF-6244-0689-3E85-FF6F736A3977}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91E68BEF-6244-0689-3E85-FF6F736A3977}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91E68BEF-6244-0689-3E85-FF6F736A3977}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91E68BEF-6244-0689-3E85-FF6F736A3977}.Release|Any CPU.Build.0 = Release|Any CPU + {8B2E81BF-556C-0A55-14CD-C2274A70750D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8B2E81BF-556C-0A55-14CD-C2274A70750D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8B2E81BF-556C-0A55-14CD-C2274A70750D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8B2E81BF-556C-0A55-14CD-C2274A70750D}.Release|Any CPU.Build.0 = Release|Any CPU + {117A2930-12C1-09E4-27AB-1400F15CA6D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {117A2930-12C1-09E4-27AB-1400F15CA6D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {117A2930-12C1-09E4-27AB-1400F15CA6D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {117A2930-12C1-09E4-27AB-1400F15CA6D8}.Release|Any CPU.Build.0 = Release|Any CPU + {5563B510-F29D-0863-361A-BB21D54F72AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5563B510-F29D-0863-361A-BB21D54F72AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5563B510-F29D-0863-361A-BB21D54F72AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5563B510-F29D-0863-361A-BB21D54F72AA}.Release|Any CPU.Build.0 = Release|Any CPU + {BAE09131-E2D1-0EE8-1090-6C66C7EBB6B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BAE09131-E2D1-0EE8-1090-6C66C7EBB6B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BAE09131-E2D1-0EE8-1090-6C66C7EBB6B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BAE09131-E2D1-0EE8-1090-6C66C7EBB6B5}.Release|Any CPU.Build.0 = Release|Any CPU + {F6D12B4E-5206-0729-24A3-EC1C8E0468D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F6D12B4E-5206-0729-24A3-EC1C8E0468D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F6D12B4E-5206-0729-24A3-EC1C8E0468D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F6D12B4E-5206-0729-24A3-EC1C8E0468D7}.Release|Any CPU.Build.0 = Release|Any CPU + {92573F7B-F315-0C16-2B01-652B23F0767D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92573F7B-F315-0C16-2B01-652B23F0767D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92573F7B-F315-0C16-2B01-652B23F0767D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92573F7B-F315-0C16-2B01-652B23F0767D}.Release|Any CPU.Build.0 = Release|Any CPU + {6C6BE936-B17E-0A38-243B-13C9B1C823B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C6BE936-B17E-0A38-243B-13C9B1C823B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C6BE936-B17E-0A38-243B-13C9B1C823B6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C6BE936-B17E-0A38-243B-13C9B1C823B6}.Release|Any CPU.Build.0 = Release|Any CPU + {54FF2644-577D-0C8F-1C51-A93F17089B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54FF2644-577D-0C8F-1C51-A93F17089B82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54FF2644-577D-0C8F-1C51-A93F17089B82}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54FF2644-577D-0C8F-1C51-A93F17089B82}.Release|Any CPU.Build.0 = Release|Any CPU + {F9BCDB72-7F4F-043F-158C-42016A52BFB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F9BCDB72-7F4F-043F-158C-42016A52BFB4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F9BCDB72-7F4F-043F-158C-42016A52BFB4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F9BCDB72-7F4F-043F-158C-42016A52BFB4}.Release|Any CPU.Build.0 = Release|Any CPU + {6579CA1B-A33A-092A-1125-6EB4D65422DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6579CA1B-A33A-092A-1125-6EB4D65422DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6579CA1B-A33A-092A-1125-6EB4D65422DB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6579CA1B-A33A-092A-1125-6EB4D65422DB}.Release|Any CPU.Build.0 = Release|Any CPU + {B9EE09D7-D3F5-000D-0CD7-360ED2314339}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9EE09D7-D3F5-000D-0CD7-360ED2314339}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9EE09D7-D3F5-000D-0CD7-360ED2314339}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9EE09D7-D3F5-000D-0CD7-360ED2314339}.Release|Any CPU.Build.0 = Release|Any CPU + {CB71D03C-C1E5-0980-3CB6-D59D3B109ADF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB71D03C-C1E5-0980-3CB6-D59D3B109ADF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB71D03C-C1E5-0980-3CB6-D59D3B109ADF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB71D03C-C1E5-0980-3CB6-D59D3B109ADF}.Release|Any CPU.Build.0 = Release|Any CPU + {3026B9C7-547C-0CF5-2C20-2A86C5D8C846}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3026B9C7-547C-0CF5-2C20-2A86C5D8C846}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3026B9C7-547C-0CF5-2C20-2A86C5D8C846}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3026B9C7-547C-0CF5-2C20-2A86C5D8C846}.Release|Any CPU.Build.0 = Release|Any CPU + {36911EED-F92B-0CEE-276F-209E87EDEF83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {36911EED-F92B-0CEE-276F-209E87EDEF83}.Debug|Any CPU.Build.0 = Debug|Any CPU + {36911EED-F92B-0CEE-276F-209E87EDEF83}.Release|Any CPU.ActiveCfg = Release|Any CPU + {36911EED-F92B-0CEE-276F-209E87EDEF83}.Release|Any CPU.Build.0 = Release|Any CPU + {F5958BC2-F160-0A51-0959-382FB7E607CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5958BC2-F160-0A51-0959-382FB7E607CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5958BC2-F160-0A51-0959-382FB7E607CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5958BC2-F160-0A51-0959-382FB7E607CC}.Release|Any CPU.Build.0 = Release|Any CPU + {D49E77E6-5BC7-0D5E-3C93-DEDECA69D4E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D49E77E6-5BC7-0D5E-3C93-DEDECA69D4E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D49E77E6-5BC7-0D5E-3C93-DEDECA69D4E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D49E77E6-5BC7-0D5E-3C93-DEDECA69D4E3}.Release|Any CPU.Build.0 = Release|Any CPU + {6B88498A-8285-0D44-2071-321DEBFD1906}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B88498A-8285-0D44-2071-321DEBFD1906}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B88498A-8285-0D44-2071-321DEBFD1906}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B88498A-8285-0D44-2071-321DEBFD1906}.Release|Any CPU.Build.0 = Release|Any CPU + {1BCB727E-E8E7-07FF-11DE-CDBA76AEB577}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1BCB727E-E8E7-07FF-11DE-CDBA76AEB577}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BCB727E-E8E7-07FF-11DE-CDBA76AEB577}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1BCB727E-E8E7-07FF-11DE-CDBA76AEB577}.Release|Any CPU.Build.0 = Release|Any CPU + {E2F5E6C6-BEC9-05E7-2D5E-89FCEB4387C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2F5E6C6-BEC9-05E7-2D5E-89FCEB4387C8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2F5E6C6-BEC9-05E7-2D5E-89FCEB4387C8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2F5E6C6-BEC9-05E7-2D5E-89FCEB4387C8}.Release|Any CPU.Build.0 = Release|Any CPU + {4BE4FBD4-70EA-000D-0CF6-C7BE161DB657}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4BE4FBD4-70EA-000D-0CF6-C7BE161DB657}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4BE4FBD4-70EA-000D-0CF6-C7BE161DB657}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4BE4FBD4-70EA-000D-0CF6-C7BE161DB657}.Release|Any CPU.Build.0 = Release|Any CPU + {449A4C55-CA78-070F-2D25-9014B67ADC3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {449A4C55-CA78-070F-2D25-9014B67ADC3B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {449A4C55-CA78-070F-2D25-9014B67ADC3B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {449A4C55-CA78-070F-2D25-9014B67ADC3B}.Release|Any CPU.Build.0 = Release|Any CPU + {C4B9F323-7F5B-065E-25B7-8412A1315198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4B9F323-7F5B-065E-25B7-8412A1315198}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4B9F323-7F5B-065E-25B7-8412A1315198}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4B9F323-7F5B-065E-25B7-8412A1315198}.Release|Any CPU.Build.0 = Release|Any CPU + {4C7FF080-E85D-0554-13EE-CB3E46AFCAA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4C7FF080-E85D-0554-13EE-CB3E46AFCAA4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C7FF080-E85D-0554-13EE-CB3E46AFCAA4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4C7FF080-E85D-0554-13EE-CB3E46AFCAA4}.Release|Any CPU.Build.0 = Release|Any CPU + {B2ADCF4C-1962-0CA6-11E8-CC43DB084F7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2ADCF4C-1962-0CA6-11E8-CC43DB084F7E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2ADCF4C-1962-0CA6-11E8-CC43DB084F7E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2ADCF4C-1962-0CA6-11E8-CC43DB084F7E}.Release|Any CPU.Build.0 = Release|Any CPU + {00EC19D3-91D8-08A5-1A9E-36208C7262C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00EC19D3-91D8-08A5-1A9E-36208C7262C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00EC19D3-91D8-08A5-1A9E-36208C7262C7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00EC19D3-91D8-08A5-1A9E-36208C7262C7}.Release|Any CPU.Build.0 = Release|Any CPU + {2B0E0E6C-7813-0353-19A8-08C89687C79F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B0E0E6C-7813-0353-19A8-08C89687C79F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B0E0E6C-7813-0353-19A8-08C89687C79F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B0E0E6C-7813-0353-19A8-08C89687C79F}.Release|Any CPU.Build.0 = Release|Any CPU + {55F8FB6E-EF8D-00BB-3352-EB4D2CFF84CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55F8FB6E-EF8D-00BB-3352-EB4D2CFF84CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55F8FB6E-EF8D-00BB-3352-EB4D2CFF84CF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55F8FB6E-EF8D-00BB-3352-EB4D2CFF84CF}.Release|Any CPU.Build.0 = Release|Any CPU + {8D8DA80C-DD69-0772-18AF-515638FA6B90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D8DA80C-DD69-0772-18AF-515638FA6B90}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D8DA80C-DD69-0772-18AF-515638FA6B90}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D8DA80C-DD69-0772-18AF-515638FA6B90}.Release|Any CPU.Build.0 = Release|Any CPU + {B42E6F0F-CC75-0D5F-0F19-F35A5231A02B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B42E6F0F-CC75-0D5F-0F19-F35A5231A02B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B42E6F0F-CC75-0D5F-0F19-F35A5231A02B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B42E6F0F-CC75-0D5F-0F19-F35A5231A02B}.Release|Any CPU.Build.0 = Release|Any CPU + {DAFC8A0D-2A92-05D6-0623-CE59CB1C666B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DAFC8A0D-2A92-05D6-0623-CE59CB1C666B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DAFC8A0D-2A92-05D6-0623-CE59CB1C666B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DAFC8A0D-2A92-05D6-0623-CE59CB1C666B}.Release|Any CPU.Build.0 = Release|Any CPU + {2A56A54D-488B-0945-3CF5-BC1E42712034}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A56A54D-488B-0945-3CF5-BC1E42712034}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A56A54D-488B-0945-3CF5-BC1E42712034}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2A56A54D-488B-0945-3CF5-BC1E42712034}.Release|Any CPU.Build.0 = Release|Any CPU + {4AA9343A-B2BF-0CC4-27D4-BD7EE9456985}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4AA9343A-B2BF-0CC4-27D4-BD7EE9456985}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AA9343A-B2BF-0CC4-27D4-BD7EE9456985}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4AA9343A-B2BF-0CC4-27D4-BD7EE9456985}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 34 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = tcEMS_LED\\tcEMS_LED.vbproj + SccProjectName1 = tcEMS_LED + SccLocalPath1 = tcEMS_LED + SccProjectUniqueName2 = tcEQP_IC\\tcEQP_IC.vbproj + SccProjectName2 = tcEQP_IC + SccLocalPath2 = tcEQP_IC + SccProjectUniqueName3 = tcEQP_LED\\tcEQP_LED.vbproj + SccProjectName3 = tcEQP_LED + SccLocalPath3 = tcEQP_LED + SccProjectUniqueName4 = tcEQP_Tape\\tcEQP_Tape.vbproj + SccProjectName4 = tcEQP_Tape + SccLocalPath4 = tcEQP_Tape + SccProjectUniqueName5 = tcERP\\tcERP.vbproj + SccProjectName5 = tcERP + SccLocalPath5 = tcERP + SccProjectUniqueName6 = tcINV_LED\\tcINV_LED.vbproj + SccProjectName6 = tcINV_LED + SccLocalPath6 = tcINV_LED + SccProjectUniqueName7 = tcMTL_Tape\\tcMTL_Tape.vbproj + SccProjectName7 = tcMTL_Tape + SccLocalPath7 = tcMTL_Tape + SccProjectUniqueName8 = tcOE_LED\\tcOE_LED.vbproj + SccProjectName8 = tcOE_LED + SccLocalPath8 = tcOE_LED + SccProjectUniqueName9 = tcOE_Tape\\tcOE_Tape.vbproj + SccProjectName9 = tcOE_Tape + SccLocalPath9 = tcOE_Tape + SccProjectUniqueName10 = tcOP_Tape\\tcOP_Tape.vbproj + SccProjectName10 = tcOP_Tape + SccLocalPath10 = tcOP_Tape + SccProjectUniqueName11 = tcPRD_FAB\\tcPRD_FAB.vbproj + SccProjectName11 = tcPRD_FAB + SccLocalPath11 = tcPRD_FAB + SccProjectUniqueName12 = tcPRD_Film\\tcPRD_Film.vbproj + SccProjectName12 = tcPRD_Film + SccLocalPath12 = tcPRD_Film + SccProjectUniqueName13 = tcPRD_IC\\tcPRD_IC.vbproj + SccProjectName13 = tcPRD_IC + SccLocalPath13 = tcPRD_IC + SccProjectUniqueName14 = tcPRD_LED\\tcPRD_LED.vbproj + SccProjectName14 = tcPRD_LED + SccLocalPath14 = tcPRD_LED + SccProjectUniqueName15 = tcPRD_Tape\\tcPRD_Tape.vbproj + SccProjectName15 = tcPRD_Tape + SccLocalPath15 = tcPRD_Tape + SccProjectUniqueName16 = tcSPC_IC\\tcSPC_IC.vbproj + SccProjectName16 = tcSPC_IC + SccLocalPath16 = tcSPC_IC + SccProjectUniqueName17 = tcSYS_IC\\tcSYS_IC.vbproj + SccProjectName17 = tcSYS_IC + SccLocalPath17 = tcSYS_IC + SccProjectUniqueName18 = tcUSR_IC\\tcUSR_IC.vbproj + SccProjectName18 = tcUSR_IC + SccLocalPath18 = tcUSR_IC + SccProjectUniqueName19 = tcWIP_Car\\tcWIP_Car.vbproj + SccProjectName19 = tcWIP_Car + SccLocalPath19 = tcWIP_Car + SccProjectUniqueName20 = tcWIP_Cell\\tcWIP_Cell.vbproj + SccProjectName20 = tcWIP_Cell + SccLocalPath20 = tcWIP_Cell + SccProjectUniqueName21 = tcWIP_CF\\tcWIP_CF.vbproj + SccProjectName21 = tcWIP_CF + SccLocalPath21 = tcWIP_CF + SccProjectUniqueName22 = tcWIP_DT\\tcWIP_DT.vbproj + SccProjectName22 = tcWIP_DT + SccLocalPath22 = tcWIP_DT + SccProjectUniqueName23 = tcWIP_FAB\\tcWIP_FAB.vbproj + SccProjectName23 = tcWIP_FAB + SccLocalPath23 = tcWIP_FAB + SccProjectUniqueName24 = tcWIP_IC\\tcWIP_IC.vbproj + SccProjectName24 = tcWIP_IC + SccLocalPath24 = tcWIP_IC + SccProjectUniqueName25 = tcWIP_LED\\tcWIP_LED.vbproj + SccProjectName25 = tcWIP_LED + SccLocalPath25 = tcWIP_LED + SccProjectUniqueName26 = tcWIP_Mask\\tcWIP_Mask.vbproj + SccProjectName26 = tcWIP_Mask + SccLocalPath26 = tcWIP_Mask + SccProjectUniqueName27 = tcWIP_MOTrans\\tcWIP_MOTrans.vbproj + SccProjectName27 = tcWIP_MOTrans + SccLocalPath27 = tcWIP_MOTrans + SccProjectUniqueName28 = tcWIP_PCS\\tcWIP_PCS.vbproj + SccProjectName28 = tcWIP_PCS + SccLocalPath28 = tcWIP_PCS + SccProjectUniqueName29 = tcWIP_SFC\\tcWIP_SFC.vbproj + SccProjectName29 = tcWIP_SFC + SccLocalPath29 = tcWIP_SFC + SccProjectUniqueName30 = tcWIP_Tape\\tcWIP_Tape.vbproj + SccProjectName30 = tcWIP_Tape + SccLocalPath30 = tcWIP_Tape + SccProjectUniqueName31 = tcWIP_Unit\\tcWIP_Unit.vbproj + SccProjectName31 = tcWIP_Unit + SccLocalPath31 = tcWIP_Unit + SccProjectUniqueName32 = tcMES_LiveUpdate\\tcMES_LiveUpdate.vbproj + SccProjectName32 = tcMES_LiveUpdate + SccLocalPath32 = tcMES_LiveUpdate + SccProjectUniqueName33 = DataImporter\\DataImporter.vbproj + SccProjectName33 = DataImporter + SccLocalPath33 = DataImporter + EndGlobalSection +EndGlobal diff --git a/MESud/UserDefine.sln b/MESud/UserDefine.sln new file mode 100644 index 0000000..3f803c4 --- /dev/null +++ b/MESud/UserDefine.sln @@ -0,0 +1,203 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.32112.339 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udMESParameterFunction", "udMESParameterFunction\udMESParameterFunction.csproj", "{08468ABE-DB15-010B-0E53-AE39A3CF61E2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udScriptFunction", "udScriptFunction\udScriptFunction.csproj", "{8737DA38-23F1-07F7-1B07-2295ED690A56}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udQCRule", "udQCRule\udQCRule.csproj", "{47B8DF93-F4DA-0F62-15AF-4220270C7D44}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udSamplingFunction", "udSamplingFunction\udSamplingFunction.csproj", "{BB6CB718-5376-0053-39A6-DD08841993DD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udIssueFunction", "udIssueFunction\udIssueFunction.csproj", "{F8E747EA-8EA1-0543-3F50-360A9AF91C45}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udSplitDataChangeRule", "udSplitDataChangeRule\udSplitDataChangeRule.csproj", "{AA7B48CC-E165-0150-2FF6-D6C6724588C6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udOnlineReport", "udOnlineReport\udOnlineReport.csproj", "{FE4B4472-4B70-09CF-1E25-ED3B31C9595D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udEQCFunction", "udEQCFunction\udEQCFunction.csproj", "{FB87A357-DDC2-0914-10D6-CF7F186EEED3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udDriverFunction", "udDriverFunction\udDriverFunction.csproj", "{16BCC3B0-BDCB-06B8-1E48-DDD69A55A70A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udReverse", "udReverse\udReverse.csproj", "{BF83DF3F-F906-0F14-26FC-64B6D51C5BC0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udUnitTransferFunction", "udUnitTransferFunction\udUnitTransferFunction.csproj", "{0C637EE1-4325-084C-3546-394EDC25E0A4}" + ProjectSection(ProjectDependencies) = postProject + {BFE0BB52-2A20-0BA7-1FE1-00305141A790} = {BFE0BB52-2A20-0BA7-1FE1-00305141A790} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udPRD", "udPRD\udPRD.csproj", "{8BC128F6-B616-02F3-0B68-1D817E855CBF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udSPC", "udSpc\udSPC.csproj", "{4B76D6B0-7745-0FBE-2A8A-A32A5AFCA049}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udPM", "udPM\udPM.csproj", "{BDA9DAD0-E6AC-073D-16EA-E26C214C8B50}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udSYS", "udSYS\udSYS.csproj", "{4C8C75C4-820A-0D16-0FF6-0E6ED4375DD3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udSYS_Customer", "udSYS_Customer\udSYS_Customer.csproj", "{73D29D85-D190-04AF-0922-F34F21CAC888}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udScriptFunction_Customer", "udScriptFunction_Customer\udScriptFunction_Customer.csproj", "{F31A762E-F2F8-00E6-10BA-01E73BC174FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udUnitTransferFunction_Customer", "udUnitTransferFunction_Customer\udUnitTransferFunction_Customer.csproj", "{BFE0BB52-2A20-0BA7-1FE1-00305141A790}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udWIP", "udWIP\udWIP.csproj", "{0281871E-CF16-048A-0EA6-49C9CB8B34BB}" + ProjectSection(ProjectDependencies) = postProject + {BF83DF3F-F906-0F14-26FC-64B6D51C5BC0} = {BF83DF3F-F906-0F14-26FC-64B6D51C5BC0} + {0C637EE1-4325-084C-3546-394EDC25E0A4} = {0C637EE1-4325-084C-3546-394EDC25E0A4} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {08468ABE-DB15-010B-0E53-AE39A3CF61E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08468ABE-DB15-010B-0E53-AE39A3CF61E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08468ABE-DB15-010B-0E53-AE39A3CF61E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08468ABE-DB15-010B-0E53-AE39A3CF61E2}.Release|Any CPU.Build.0 = Release|Any CPU + {8737DA38-23F1-07F7-1B07-2295ED690A56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8737DA38-23F1-07F7-1B07-2295ED690A56}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8737DA38-23F1-07F7-1B07-2295ED690A56}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8737DA38-23F1-07F7-1B07-2295ED690A56}.Release|Any CPU.Build.0 = Release|Any CPU + {47B8DF93-F4DA-0F62-15AF-4220270C7D44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47B8DF93-F4DA-0F62-15AF-4220270C7D44}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47B8DF93-F4DA-0F62-15AF-4220270C7D44}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47B8DF93-F4DA-0F62-15AF-4220270C7D44}.Release|Any CPU.Build.0 = Release|Any CPU + {BB6CB718-5376-0053-39A6-DD08841993DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BB6CB718-5376-0053-39A6-DD08841993DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BB6CB718-5376-0053-39A6-DD08841993DD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BB6CB718-5376-0053-39A6-DD08841993DD}.Release|Any CPU.Build.0 = Release|Any CPU + {F8E747EA-8EA1-0543-3F50-360A9AF91C45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8E747EA-8EA1-0543-3F50-360A9AF91C45}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8E747EA-8EA1-0543-3F50-360A9AF91C45}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F8E747EA-8EA1-0543-3F50-360A9AF91C45}.Release|Any CPU.Build.0 = Release|Any CPU + {AA7B48CC-E165-0150-2FF6-D6C6724588C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA7B48CC-E165-0150-2FF6-D6C6724588C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA7B48CC-E165-0150-2FF6-D6C6724588C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA7B48CC-E165-0150-2FF6-D6C6724588C6}.Release|Any CPU.Build.0 = Release|Any CPU + {FE4B4472-4B70-09CF-1E25-ED3B31C9595D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE4B4472-4B70-09CF-1E25-ED3B31C9595D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE4B4472-4B70-09CF-1E25-ED3B31C9595D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE4B4472-4B70-09CF-1E25-ED3B31C9595D}.Release|Any CPU.Build.0 = Release|Any CPU + {FB87A357-DDC2-0914-10D6-CF7F186EEED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB87A357-DDC2-0914-10D6-CF7F186EEED3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB87A357-DDC2-0914-10D6-CF7F186EEED3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB87A357-DDC2-0914-10D6-CF7F186EEED3}.Release|Any CPU.Build.0 = Release|Any CPU + {16BCC3B0-BDCB-06B8-1E48-DDD69A55A70A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16BCC3B0-BDCB-06B8-1E48-DDD69A55A70A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16BCC3B0-BDCB-06B8-1E48-DDD69A55A70A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16BCC3B0-BDCB-06B8-1E48-DDD69A55A70A}.Release|Any CPU.Build.0 = Release|Any CPU + {BF83DF3F-F906-0F14-26FC-64B6D51C5BC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF83DF3F-F906-0F14-26FC-64B6D51C5BC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF83DF3F-F906-0F14-26FC-64B6D51C5BC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF83DF3F-F906-0F14-26FC-64B6D51C5BC0}.Release|Any CPU.Build.0 = Release|Any CPU + {0C637EE1-4325-084C-3546-394EDC25E0A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C637EE1-4325-084C-3546-394EDC25E0A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C637EE1-4325-084C-3546-394EDC25E0A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C637EE1-4325-084C-3546-394EDC25E0A4}.Release|Any CPU.Build.0 = Release|Any CPU + {8BC128F6-B616-02F3-0B68-1D817E855CBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BC128F6-B616-02F3-0B68-1D817E855CBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BC128F6-B616-02F3-0B68-1D817E855CBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BC128F6-B616-02F3-0B68-1D817E855CBF}.Release|Any CPU.Build.0 = Release|Any CPU + {4B76D6B0-7745-0FBE-2A8A-A32A5AFCA049}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4B76D6B0-7745-0FBE-2A8A-A32A5AFCA049}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B76D6B0-7745-0FBE-2A8A-A32A5AFCA049}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4B76D6B0-7745-0FBE-2A8A-A32A5AFCA049}.Release|Any CPU.Build.0 = Release|Any CPU + {BDA9DAD0-E6AC-073D-16EA-E26C214C8B50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDA9DAD0-E6AC-073D-16EA-E26C214C8B50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDA9DAD0-E6AC-073D-16EA-E26C214C8B50}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BDA9DAD0-E6AC-073D-16EA-E26C214C8B50}.Release|Any CPU.Build.0 = Release|Any CPU + {4C8C75C4-820A-0D16-0FF6-0E6ED4375DD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4C8C75C4-820A-0D16-0FF6-0E6ED4375DD3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C8C75C4-820A-0D16-0FF6-0E6ED4375DD3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4C8C75C4-820A-0D16-0FF6-0E6ED4375DD3}.Release|Any CPU.Build.0 = Release|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Debug|Any CPU.Build.0 = Debug|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Release|Any CPU.ActiveCfg = Release|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Release|Any CPU.Build.0 = Release|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Release|Any CPU.Build.0 = Release|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Release|Any CPU.Build.0 = Release|Any CPU + {0281871E-CF16-048A-0EA6-49C9CB8B34BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0281871E-CF16-048A-0EA6-49C9CB8B34BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0281871E-CF16-048A-0EA6-49C9CB8B34BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0281871E-CF16-048A-0EA6-49C9CB8B34BB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {01393213-2F2D-46B0-BA26-945900FF93CB} + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 20 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = udMESParameterFunction\\udMESParameterFunction.csproj + SccProjectName1 = udMESParameterFunction + SccLocalPath1 = udMESParameterFunction + SccProjectUniqueName2 = udScriptFunction\\udScriptFunction.csproj + SccProjectName2 = udScriptFunction + SccLocalPath2 = udScriptFunction + SccProjectUniqueName3 = udQCRule\\udQCRule.csproj + SccProjectName3 = udQCRule + SccLocalPath3 = udQCRule + SccProjectUniqueName4 = udSamplingFunction\\udSamplingFunction.csproj + SccProjectName4 = udSamplingFunction + SccLocalPath4 = udSamplingFunction + SccProjectUniqueName5 = udIssueFunction\\udIssueFunction.csproj + SccProjectName5 = udIssueFunction + SccLocalPath5 = udIssueFunction + SccProjectUniqueName6 = udSplitDataChangeRule\\udSplitDataChangeRule.csproj + SccProjectName6 = udSplitDataChangeRule + SccLocalPath6 = udSplitDataChangeRule + SccProjectUniqueName7 = udOnlineReport\\udOnlineReport.csproj + SccProjectName7 = udOnlineReport + SccLocalPath7 = udOnlineReport + SccProjectUniqueName8 = udEQCFunction\\udEQCFunction.csproj + SccProjectName8 = udEQCFunction + SccLocalPath8 = udEQCFunction + SccProjectUniqueName9 = udDriverFunction\\udDriverFunction.csproj + SccProjectName9 = udDriverFunction + SccLocalPath9 = udDriverFunction + SccProjectUniqueName10 = udReverse\\udReverse.csproj + SccProjectName10 = udReverse + SccLocalPath10 = udReverse + SccProjectUniqueName11 = udUnitTransferFunction\\udUnitTransferFunction.csproj + SccProjectName11 = udUnitTransferFunction + SccLocalPath11 = udUnitTransferFunction + SccProjectUniqueName12 = udPRD\\udPRD.csproj + SccProjectName12 = udPRD + SccLocalPath12 = udPRD + SccProjectUniqueName13 = udSpc\\udSPC.csproj + SccProjectName13 = udSpc + SccLocalPath13 = udSpc + SccProjectUniqueName14 = udPM\\udPM.csproj + SccProjectName14 = udPM + SccLocalPath14 = udPM + SccProjectUniqueName15 = udSYS\\udSYS.csproj + SccProjectName15 = udSYS + SccLocalPath15 = udSYS + SccProjectUniqueName16 = udSYS_Customer\\udSYS_Customer.csproj + SccProjectName16 = udSYS_Customer + SccLocalPath16 = udSYS_Customer + SccProjectUniqueName17 = udScriptFunction_Customer\\udScriptFunction_Customer.csproj + SccProjectName17 = udScriptFunction_Customer + SccLocalPath17 = udScriptFunction_Customer + SccProjectUniqueName18 = udUnitTransferFunction_Customer\\udUnitTransferFunction_Customer.csproj + SccProjectName18 = udUnitTransferFunction_Customer + SccLocalPath18 = udUnitTransferFunction_Customer + SccProjectUniqueName19 = udWIP\\udWIP.csproj + SccProjectName19 = udWIP + SccLocalPath19 = udWIP + EndGlobalSection +EndGlobal diff --git a/MESud/UserDefine_Customer.sln b/MESud/UserDefine_Customer.sln new file mode 100644 index 0000000..2b703bf --- /dev/null +++ b/MESud/UserDefine_Customer.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33529.622 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udScriptFunction_Customer", "udScriptFunction_Customer\udScriptFunction_Customer.csproj", "{F31A762E-F2F8-00E6-10BA-01E73BC174FA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udSYS_Customer", "udSYS_Customer\udSYS_Customer.csproj", "{73D29D85-D190-04AF-0922-F34F21CAC888}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "udUnitTransferFunction_Customer", "udUnitTransferFunction_Customer\udUnitTransferFunction_Customer.csproj", "{BFE0BB52-2A20-0BA7-1FE1-00305141A790}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F31A762E-F2F8-00E6-10BA-01E73BC174FA}.Release|Any CPU.Build.0 = Release|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Debug|Any CPU.Build.0 = Debug|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Release|Any CPU.ActiveCfg = Release|Any CPU + {73D29D85-D190-04AF-0922-F34F21CAC888}.Release|Any CPU.Build.0 = Release|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFE0BB52-2A20-0BA7-1FE1-00305141A790}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {295CB015-CB10-4EBB-8AB9-337FB5A9E996} + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 4 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = udScriptFunction_Customer\\udScriptFunction_Customer.csproj + SccProjectName1 = udScriptFunction_Customer + SccLocalPath1 = udScriptFunction_Customer + SccProjectUniqueName2 = udSYS_Customer\\udSYS_Customer.csproj + SccProjectName2 = udSYS_Customer + SccLocalPath2 = udSYS_Customer + SccProjectUniqueName3 = udUnitTransferFunction_Customer\\udUnitTransferFunction_Customer.csproj + SccProjectName3 = udUnitTransferFunction_Customer + SccLocalPath3 = udUnitTransferFunction_Customer + EndGlobalSection +EndGlobal diff --git a/MESws_MSG/ApplicationInsights.config b/MESws_MSG/ApplicationInsights.config new file mode 100644 index 0000000..ee9ea3c --- /dev/null +++ b/MESws_MSG/ApplicationInsights.config @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + System.Web.Handlers.TransferRequestHandler + Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler + System.Web.StaticFileHandler + System.Web.Handlers.AssemblyResourceLoader + System.Web.Optimization.BundleHandler + System.Web.Script.Services.ScriptHandlerFactory + System.Web.Handlers.TraceHandler + System.Web.Services.Discovery.DiscoveryRequestHandler + System.Web.HttpDebugHandler + + + + + + + + 5 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESws_MSG/Global.asax b/MESws_MSG/Global.asax new file mode 100644 index 0000000..bed8adf --- /dev/null +++ b/MESws_MSG/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="sMES_Services.WebApiApplication" Language="C#" %> diff --git a/MESws_MSG/ModuleSettings.config b/MESws_MSG/ModuleSettings.config new file mode 100644 index 0000000..8ed8198 --- /dev/null +++ b/MESws_MSG/ModuleSettings.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/MESws_MSG/ScheduleSettings.config b/MESws_MSG/ScheduleSettings.config new file mode 100644 index 0000000..9feedf4 --- /dev/null +++ b/MESws_MSG/ScheduleSettings.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/MESws_MSG/Web.config b/MESws_MSG/Web.config new file mode 100644 index 0000000..5cf4065 --- /dev/null +++ b/MESws_MSG/Web.config @@ -0,0 +1,115 @@ + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESws_MSG/favicon.ico b/MESws_MSG/favicon.ico new file mode 100644 index 0000000..a3a7999 Binary files /dev/null and b/MESws_MSG/favicon.ico differ diff --git a/MESws_MSG/packages.config b/MESws_MSG/packages.config new file mode 100644 index 0000000..19b2a90 --- /dev/null +++ b/MESws_MSG/packages.config @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESws_MSG/sMESService.asmx b/MESws_MSG/sMESService.asmx new file mode 100644 index 0000000..04ad673 --- /dev/null +++ b/MESws_MSG/sMESService.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="sMESService.asmx.cs" Class="sMES_Services.sMESService" %> diff --git a/MESws_MSG/wsInvoke.asmx b/MESws_MSG/wsInvoke.asmx new file mode 100644 index 0000000..a1bc7e3 --- /dev/null +++ b/MESws_MSG/wsInvoke.asmx @@ -0,0 +1 @@ +<%@ WebService Language="C#" CodeBehind="wsInvoke.asmx.cs" Class="sMES_Services.wsInvoke" %> diff --git a/MESws_STD/AssemblyInfo.cs b/MESws_STD/AssemblyInfo.cs new file mode 100644 index 0000000..23f1aa3 --- /dev/null +++ b/MESws_STD/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System; +using System.Reflection; +using System.Runtime.InteropServices; + +// 一般的組件資訊是由下列這組屬性所控制。 +// 變更這些屬性的值即可修改組件的相關資訊。 +// 檢閱組件屬性的值 + +[assembly: AssemblyTitle("MESws")] +[assembly: AssemblyDescription("MESws for MESSeries")] +[assembly: AssemblyCompany("iMES Technology Inc.")] +[assembly: AssemblyProduct("MESSeries 6")] +[assembly: AssemblyCopyright("Copyright © iMES Technology Inc.")] +[assembly: AssemblyTrademark("")] +[assembly: ComVisible(false)] + +// 下列 GUID 為專案公開 (Expose) 至 COM 時所要使用的 typelib ID +[assembly: Guid("225BED8B-F97A-4177-956A-445E2C61B05A")] + +// 組件的版本資訊由下列四個值所組成: +// +// 主要版本 +// 次要版本 +// 組建編號 +// 修訂 +// +// 您可以自行指定所有的值,也可以依照以下的方式,使用 '*' 將修訂和組建編號 +// 指定為預設值: + +[assembly: AssemblyVersion("6.0.3.1")] diff --git a/MESws_STD/DataExchange.cs b/MESws_STD/DataExchange.cs new file mode 100644 index 0000000..c85ed01 --- /dev/null +++ b/MESws_STD/DataExchange.cs @@ -0,0 +1,1083 @@ +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Web; +using System.Xml; +using static iMESCore.Base.iMESComSubroutine; +using static iMESCore.Base.iMESComXML; + +namespace MESws +{ + internal class DataExchange + { + /// + /// 2020/04/24 雋辰,XML string convert DataSet + /// + /// + /// 資料表需求欄位 + /// + public static DataSet XmlString2DataSet(string OutXml, string[] columns = null) + { + + DataSet result = null; + StringReader tmpStringReader; // 將字串轉換成可讀入DataSet的物件 + var XmlDoc = new XmlDocument(); + XmlElement xElement_Schema = null; + string FirstChildName = ""; + string XmlSchema = ""; + string XmlData = ""; // 儲存取回之資料 + var aryException = new List(); // Exception + + try + { + using (var dsReturn = new DataSet()) + { + // 利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml); + + // 找出第一個節點 + FirstChildName = XmlDoc.FirstChild.Name; + + // 取出Schema + XmlSchema = XmlDoc.FirstChild.SelectSingleNode("schema").InnerXml; + if (!string.IsNullOrEmpty(XmlSchema)) + { + // 將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + tmpStringReader = new StringReader(XmlSchema); + dsReturn.ReadXmlSchema(tmpStringReader); + tmpStringReader.Close(); + } + + // 取出Data + XmlData = XmlDoc.FirstChild.SelectSingleNode("value").InnerXml; + if (!string.IsNullOrEmpty(XmlData)) + { + tmpStringReader = new StringReader(XmlData); + dsReturn.ReadXml(tmpStringReader, XmlReadMode.InferSchema); + tmpStringReader.Close(); + } + + // 欄位轉大寫 + ColumnName_ToUpper(dsReturn); + + // 只取需要的欄位 + DataSet ds = (DataSet)Specify_Field(dsReturn, new List() { columns }); + result = ds; + + } + } + catch (Exception ex) + { + throw; + } + + return result; + + } + + /// + /// 2020/05/28 雋辰,XML string convert JObject , 為了因應xml有多個根節點(多個類型的資料) + /// + /// + /// 資料表需求欄位 + /// + public static JObject XmlString2JsonObj(string OutXml, string[] columns = null) + { + + var result = new JObject(); + JToken tempToken; + + var XmlDoc = new XmlDocument(); + + string XmlSchema = ""; + string XmlData = ""; // 儲存取回之資料 + + string rootName = "tempRoot"; + + string key = ""; + string tempKey; + bool firstDataSet = true; + + try + { + // 利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(string.Format("<{0}>{1}", rootName, OutXml)); + + var root = XmlDoc.SelectSingleNode(rootName); + + foreach (XmlNode node in root.ChildNodes) + { + if (!(node.SelectSingleNode("name") == null) && !(node.SelectSingleNode("type") == null) && !(node.SelectSingleNode("value") == null)) + { + + if (node.SelectSingleNode("type").InnerXml.ToUpper() == "DATASET") + { + + if (node.SelectSingleNode("schema") == null) + continue; + XmlSchema = node.SelectSingleNode("schema").InnerXml; + if (string.IsNullOrEmpty(XmlSchema)) + continue; + + var ds = new DataSet(); + using (var tmpStringReader = new StringReader(XmlSchema)) + { + ds.ReadXmlSchema(tmpStringReader); + } + + DataSet dsSpecify; + if (firstDataSet) + { + dsSpecify = (DataSet)Specify_Field(ds, new List() { columns }); + firstDataSet = false; + } + else + { + dsSpecify = ds; + } + + XmlData = node.SelectSingleNode("value").InnerXml; + if (!string.IsNullOrEmpty(XmlData)) + { + using (var tmpStringReader = new StringReader(XmlData)) + { + dsSpecify.ReadXml(tmpStringReader, XmlReadMode.Auto); + } + } + ColumnName_ToUpper(dsSpecify); + + foreach (DataTable dt in dsSpecify.Tables) + { + key = dt.TableName; + + tempKey = key; + tempToken = result[key]; + if (!(tempToken == null)) + { + int index = 2; + do + { + tempKey = string.Format("{0}({1})", key, index); + tempToken = result[tempKey]; + index += 1; + } + while (tempToken != null); + } + + result.Add(tempKey, JToken.Parse(JsonConvert.SerializeObject(dt))); + } + } + + else + { + key = node.SelectSingleNode("name").InnerXml; + + if (string.IsNullOrEmpty(key)) + continue; + + tempKey = key; + tempToken = result[key]; + if (!(tempToken == null)) + { + int index = 2; + do + { + tempKey = string.Format("{0}({1})", key, index); + tempToken = result[tempKey]; + index += 1; + } + while (tempToken != null); + } + + result.Add(tempKey, node.SelectSingleNode("value").InnerXml); + } + + } + } + } + catch (Exception ex) + { + throw; + } + + return result; + + } + + /// + /// 2020/07/31 雋辰,XML string convert JObject for wsSTD + /// + /// + /// 資料表需求欄位 + /// + public static JObject XmlString2JsonObj_wsSTD(ref string stack, string OutXml, string[] columns = null, string language = "", string resourceDir = "Resource") + { + + var result = new JObject(); + JToken tempToken; + + var XmlDoc = new XmlDocument(); + + string XmlSchema = ""; + string XmlData = ""; // 儲存取回之資料 + + string rootName = "returnvalue"; + + string key = ""; + string tempKey; + bool firstDataSet = true; + + try + { + // 利用XmlDoc物件處理ReturnValue + XmlDoc.LoadXml(OutXml); + + if (!chkExecutionSuccess(XmlDoc)) + { + string exCode = GetExceptionCode(XmlDoc); + string exMsg = GetExceptionSysMsg(XmlDoc); + string exStack = GetExceptionStack(XmlDoc); + stack = exStack; + var iex = new iMESException.MESException(exCode, exMsg); + throw new System.Reflection.TargetInvocationException(exMsg, iex); + } + + var response = XmlDoc.SelectSingleNode("response"); + if (response == null) + throw new iMESException.MESException("0000-200091", "OutXML [%Format Error%]"); + + // 20210408 13871,執行結果success/fail + var resultTag = response.SelectSingleNode("result"); + if (!(resultTag == null)) + result.Add("ReturnValue", resultTag.InnerText); + + // 20210408 13871,額外訊息message tag下的資訊 + // + // + // + // + // + // + // + // + // + // + // + var messageTag = response.SelectSingleNode("message"); + if (!(messageTag == null)) + { + var dtMessage = new DataTable(); + dtMessage.Columns.Add("MCODE"); + dtMessage.Columns.Add("MTYPE"); + dtMessage.Columns.Add("MMSG"); + var notes = messageTag.SelectNodes("note"); + + for (int i = 0, loopTo = notes.Count - 1; i <= loopTo; i++) + { + var drTmp = dtMessage.NewRow(); + if (!(notes.Item(i).SelectSingleNode("mcode") == null)) + { + drTmp["MCODE"] = notes.Item(i).SelectSingleNode("mcode").InnerText; + } + if (!(notes.Item(i).SelectSingleNode("mtype") == null)) + { + drTmp["MTYPE"] = notes.Item(i).SelectSingleNode("mtype").InnerText; + } + if (!(notes.Item(i).SelectSingleNode("mmsg") == null)) + { + drTmp["MMSG"] = TranslateMsg(notes.Item(i).SelectSingleNode("mmsg").InnerText, language, resourceDir); + } + dtMessage.Rows.Add(drTmp); + } + + result.Add("RETURNMESSAGE", JToken.Parse(JsonConvert.SerializeObject(dtMessage))); + } + + // 20210408 13871,回傳的結果於returnvalue tag下的資訊 + var root = response.SelectSingleNode(rootName); + if (!(root == null)) + { + foreach (XmlNode node in root.ChildNodes) + { + if (!(node.SelectSingleNode("name") == null) && !(node.SelectSingleNode("type") == null) && !(node.SelectSingleNode("value") == null)) + { + if (node.SelectSingleNode("type").InnerXml.ToUpper() == "DATASET") + { + + if (node.SelectSingleNode("schema") == null) + continue; + XmlSchema = node.SelectSingleNode("schema").InnerXml; + if (string.IsNullOrEmpty(XmlSchema)) + continue; + + var ds = new DataSet(); + using (var tmpStringReader = new StringReader(XmlSchema)) + { + ds.ReadXmlSchema(tmpStringReader); + } + + DataSet dsSpecify; + if (firstDataSet) + { + dsSpecify = (DataSet)Specify_Field(ds, new List() { columns }); + firstDataSet = false; + } + else + { + dsSpecify = ds; + } + + XmlData = node.SelectSingleNode("value").InnerXml; + if (!string.IsNullOrEmpty(XmlData)) + { + using (var tmpStringReader = new StringReader(XmlData)) + { + dsSpecify.ReadXml(tmpStringReader, XmlReadMode.Auto); + } + } + ColumnName_ToUpper(dsSpecify); + + foreach (DataTable dt in dsSpecify.Tables) + { + key = dt.TableName; + + tempKey = key; + tempToken = result[key]; + if (!(tempToken == null)) + { + int index = 2; + do + { + tempKey = string.Format("{0}({1})", key, index); + tempToken = result[tempKey]; + index += 1; + } + while (tempToken != null); + } + + result.Add(tempKey, JToken.Parse(JsonConvert.SerializeObject(dt))); + } + } + + else + { + key = node.SelectSingleNode("name").InnerXml; + + if (string.IsNullOrEmpty(key)) + continue; + + tempKey = key; + tempToken = result[key]; + if (!(tempToken == null)) + { + int index = 2; + do + { + tempKey = string.Format("{0}({1})", key, index); + tempToken = result[tempKey]; + index += 1; + } + while (tempToken != null); + } + + result.Add(tempKey, node.SelectSingleNode("value").InnerXml); + } + + } + } + } + } + catch (Exception ex) + { + throw; + } + + return result; + + } + + /// + /// 2020/04/24 雋辰,輸出指定欄位資料表 + /// + /// + /// + /// + public static object Specify_Field(DataSet ds, List columns) + { + var result = new DataSet(); + if (!(ds == null)) + { + for (int i = 0, loopTo = ds.Tables.Count - 1; i <= loopTo; i++) + { + if (!(columns == null) && columns.Count > i && !(columns[i] == null)) + { + result.Tables.Add(ds.Tables[i].DefaultView.ToTable(false, columns[i])); + } + else + { + result.Tables.Add(ds.Tables[i].Copy()); + } + } + } + + return result; + + } + + /// + /// 2020/04/24 雋辰,欄位名稱轉大寫 + /// + /// + public static void ColumnName_ToUpper(DataSet ds) + { + if (!(ds == null)) + { + foreach (DataTable dt in ds.Tables) + { + foreach (DataColumn dc in dt.Columns) + dc.ColumnName = dc.ColumnName.ToUpper(); + } + } + } + + /// + /// 2020/09/28 雋辰,欄位名稱轉大寫 + /// + /// + public static void ColumnName_ToUpper(DataTable dt) + { + if (!(dt == null)) + { + foreach (DataColumn dc in dt.Columns) + dc.ColumnName = dc.ColumnName.ToUpper(); + } + } + + /// + /// 2020/06/10 雋辰,處理Transfer + /// + /// + /// call function result + /// + /// + public static void ProcessTransfer(List listTransfer, object val, ref Dictionary transferGlobal, ref Dictionary transferSingle) + { + + string strTransferLevel; + string strTransferParName; + string strTransferValue; + Dictionary addTransfer; + + if (listTransfer == null || listTransfer.Count <= 0 || transferGlobal == null || transferSingle == null) + return; + + // 處理傳遞引數 + foreach (JToken item in listTransfer) + { + var dicTemp = JsonConvert.DeserializeObject>(item.ToString()); + var dicProp = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (string key in dicTemp.Keys) + dicProp[key] = dicTemp[key]; + + if (!dicProp.ContainsKey("level") || !dicProp.ContainsKey("value") || !dicProp.ContainsKey("parname")) + continue; + strTransferLevel = dicProp["level"].ToUpper(); + strTransferParName = dicProp["parname"]; + strTransferValue = dicProp["value"].ToUpper(); + + if (strTransferLevel == "G") + { + addTransfer = transferGlobal; + } + else if (strTransferLevel == "S") + { + addTransfer = transferSingle; + } + else + { + continue; + } + + if (addTransfer == null) + continue; + + if (val.GetType().Equals(typeof(DataSet))) + { + DataSet ds = val as DataSet; + if (strTransferValue == "M_RESULT") + { + addTransfer[strTransferParName] = ds.Tables[0]; + } + else if (ds.Tables[0].Columns.Contains(strTransferValue)) + addTransfer[strTransferParName] = ds.Tables[0].Rows.Count > 0 ? ds.Tables[0].Rows[0][strTransferValue] : ""; + } + else if (val.GetType().Equals(typeof(JObject))) + { + JObject jObj = val as JObject; + var list = (from prop in jObj.Properties() + select prop.Name.ToUpper()).ToList(); + + if (strTransferValue == "M_RESULT") + strTransferValue = "RETURNVALUE"; + if (list.Contains(strTransferValue)) + { + foreach (JProperty p in jObj.Properties()) + { + if (p.Name.ToUpper() == strTransferValue) + { + if (p.Value.GetType().Equals(typeof(JArray))) + { + var ds = JsonConvert.DeserializeObject("{" + p.ToString() + "}"); + addTransfer[strTransferParName] = ds.Tables[0]; + break; + } + else + { + addTransfer[strTransferParName] = p.Value.ToString(); + break; + } + } + } + } + } + else if (strTransferValue == "M_RESULT") + addTransfer[strTransferParName] = val; + } + } + + /// + /// 2020/07/31 雋辰,處理Transfer + /// + /// + /// call function result + /// + /// + public static void ProcessTransfer_Load(List listTransfer, JObject jObj, ref Dictionary transferGlobal, ref Dictionary transferSingle) + { + + string strTransferLevel; + string strTransferParName; + string strTransferValue; + Dictionary addTransfer; + + if (!(listTransfer == null) && !(transferGlobal == null) && !(transferSingle == null)) + { + foreach (JToken item in listTransfer) + { + var dicTemp = JsonConvert.DeserializeObject>(item.ToString()); + var dicProp = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (string key in dicTemp.Keys) + dicProp[key] = dicTemp[key]; + + if (!dicProp.ContainsKey("level") || !dicProp.ContainsKey("value") || !dicProp.ContainsKey("parname")) + continue; + strTransferLevel = dicProp["level"].ToUpper(); + strTransferParName = dicProp["parname"]; + strTransferValue = dicProp["value"].ToUpper(); + + if (strTransferLevel == "G") + { + addTransfer = transferGlobal; + } + else if (strTransferLevel == "S") + { + addTransfer = transferSingle; + } + else + { + continue; + } + + if (addTransfer == null) + continue; + + if (strTransferValue == "M_RESULT") + { + foreach (JProperty subResult in jObj.Children()) + { + if (subResult.ToString().Contains("[") && subResult.ToString().Contains("]")) + { + var ds = JsonConvert.DeserializeObject("{" + subResult.ToString() + "}"); + addTransfer[strTransferParName] = ds.Tables[0]; + break; + } + } + } + else + { + foreach (JProperty subResult in jObj.Children()) + { + // 沒有想到合適的方式區分一般值與DataSet + if (subResult.Value.GetType().Equals(typeof(JArray))) + { + var ds = JsonConvert.DeserializeObject("{" + subResult.ToString() + "}"); + if (ds.Tables[0].Columns.Contains(strTransferValue)) + { + addTransfer[strTransferParName] = ds.Tables[0].Rows.Count > 0 ? ds.Tables[0].Rows[0][strTransferValue] : ""; + break; + } + } + else if (strTransferValue == subResult.Name.ToUpper()) + { + addTransfer[strTransferParName] = subResult.Value.ToString(); + break; + } + } + } + } + } + } + + /// + /// 2020/07/31,處理Ref類型參數 + /// + /// + /// + /// + public static void PorcessRef(ref JObject jObj, object[] pars, Dictionary index) + { + + if (index == null || pars == null) + return; + + + for (int i = 0, loopTo = pars.Length - 1; i <= loopTo; i++) + { + try + { + if (pars[i] == null) + continue; + + if (ReferenceEquals(pars[i].GetType(), typeof(DataSet))) + { + DataSet dsTemp = pars[i] as DataSet; + ColumnName_ToUpper(dsTemp); + pars[i] = dsTemp; + } + else if (ReferenceEquals(pars[i].GetType(), typeof(DataTable))) + { + DataTable dtTemp = pars[i] as DataTable; + ColumnName_ToUpper(dtTemp); + pars[i] = dtTemp; + } + } + catch (Exception ex) + { + Log.WriteLog("PorcessRef fail:DataTable Upper" + i, iMESLog.iMESLogLevel.Warn, ex); + } + } + + string key = ""; + foreach (short i in index.Keys) + { + try + { + key = ""; + key = index[i]; + var p = jObj.Property(index[i]); + + if (!(p == null)) + continue; + + jObj.Add(key, Newtonsoft.Json.Linq.JToken.Parse(JsonConvert.SerializeObject(pars[i]))); + } + catch (Exception ex) + { + Log.WriteLog("PorcessRef fail:" + key, iMESLog.iMESLogLevel.Warn, ex); + } + } + } + + /// + /// 2020/07/28 雋辰,parameter convert to XML + /// + /// parameter + /// + public static string Parameter2XML(Dictionary dic, Dictionary t_global = null, Dictionary t_single = null) + { + string result = ""; + try + { + foreach (string key in dic.Keys) + { + try + { + if (dic[key] == null) + continue; + + if (key.ToLower() == "additional") + { + result += dic[key]; + } + else if (dic[key].GetType() == typeof(Newtonsoft.Json.Linq.JArray)) + { + try + { + // 20210513 13871,MantisBT:0092632,DataTable轉型傳入自定義JsonConvert方式,排除浮點數被轉成整數問題 + JsonSerializerSettings settings = new JsonSerializerSettings() { Converters = new[] { new TypeInferringDataTableConverter() } }; + DataTable dt = JsonConvert.DeserializeObject(dic[key].ToString(), settings); + string tmpXml = ""; + string tmpVal = ""; + foreach (DataRow row in dt.Rows) + { + tmpVal = ""; + foreach (DataColumn col in dt.Columns) + { + if (col.ColumnName.Contains("$$hashKey")) + continue; // 20211202 13871,排除$$hasekey + // 20211228 13871,值進行CInput處理 + tmpVal += CombineXMLValue(col.ColumnName.ToLower(), CInput(row[col.ColumnName].ToString())); + } + tmpXml += CombineXMLValueTag(tmpVal); + } + string argvalue_name = key.ToString(); + string argname = key.ToString(); + string argtype = "String"; + string argdesc = ""; + result += CombineXMLParameterMultiValue(argvalue_name, argname, argtype, tmpXml, argdesc); + } + catch (Exception ex) + { + Log.WriteLog(key + ":Parameter2XML fail", iMESLog.iMESLogLevel.Warn, ex); + // 20210513 13871,轉型錯誤直接回傳前端 + throw; + } + } + else if (string.IsNullOrEmpty(dic[key].ToString())) + { + string argname1 = key.ToString(); + string argtype1 = dic[key].GetType().Name; + string argdesc1 = ""; + result += CombineXMLParameter_Space(argname1, argtype1, argdesc1); + } + else + { + // 20211228 13871,值進行CInput處理 + result += CombineXMLParameter(key.ToString(), dic[key].GetType().Name, CInput(dic[key].ToString()), ""); + } + } + catch (Exception ex) + { + Log.WriteLog(key + ":" + ex.ToString(), iMESLog.iMESLogLevel.Warn, ex); + // 20210513 13871,轉型錯誤直接回傳前端 + throw; + } + } + if (!(t_single == null)) + { + foreach (string key in t_single.Keys) + { + if (t_single[key].GetType().Equals(typeof(DataTable))) + { + try + { + DataTable dt = t_single[key] as DataTable; + string tmpXml = ""; + string tmpVal = ""; + foreach (DataRow row in dt.Rows) + { + tmpVal = ""; + foreach (DataColumn col in dt.Columns) + { + string argTagName1 = col.ColumnName.ToLower(); + string argValue1 = row[col.ColumnName].ToString(); + tmpVal += CombineXMLValue(argTagName1, argValue1); + } + tmpXml += CombineXMLValueTag(tmpVal); + } + string argvalue_name1 = key.ToString(); + string argname3 = key.ToString(); + string argtype3 = "String"; + string argdesc3 = ""; + result += CombineXMLParameterMultiValue(argvalue_name1, argname3, argtype3, tmpXml, argdesc3); + } + catch (Exception ex) + { + Log.WriteLog("Parameter2XML fail", iMESLog.iMESLogLevel.Warn, ex); + } + } + else if (string.IsNullOrEmpty(t_single[key].ToString())) + { + string argname4 = key.ToString(); + string argtype4 = t_single[key].GetType().Name; + string argdesc4 = ""; + result += CombineXMLParameter_Space(argname4, argtype4, argdesc4); + } + else + { + string argname5 = key.ToString(); + string argtype5 = t_single[key].GetType().Name; + string argvalue1 = t_single[key].ToString(); + string argdesc5 = ""; + result += CombineXMLParameter(argname5, argtype5, argvalue1, argdesc5); + } + } + } + if (!(t_global == null)) + { + foreach (string key in t_global.Keys) + { + if (t_single != null && t_single.ContainsKey(key)) + continue; + if (t_global[key].GetType().Equals(typeof(DataTable))) + { + try + { + DataTable dt = t_global[key] as DataTable; + string tmpXml = ""; + string tmpVal = ""; + foreach (DataRow row in dt.Rows) + { + tmpVal = ""; + foreach (DataColumn col in dt.Columns) + { + string argTagName2 = col.ColumnName.ToLower(); + string argValue2 = row[col.ColumnName].ToString(); + tmpVal += CombineXMLValue(argTagName2, argValue2); + } + tmpXml += CombineXMLValueTag(tmpVal); + } + string argvalue_name2 = key.ToString(); + string argname6 = key.ToString(); + string argtype6 = "String"; + string argdesc6 = ""; + result += CombineXMLParameterMultiValue(argvalue_name2, argname6, argtype6, tmpXml, argdesc6); + } + catch (Exception ex) + { + Log.WriteLog("Parameter2XML fail", iMESLog.iMESLogLevel.Warn, ex); + } + } + else if (string.IsNullOrEmpty(t_global[key].ToString())) + { + string argname7 = key.ToString(); + string argtype7 = t_global[key].GetType().Name; + string argdesc7 = ""; + result += CombineXMLParameter_Space(argname7, argtype7, argdesc7); + } + else + { + string argname8 = key.ToString(); + string argtype8 = t_global[key].GetType().Name; + string argvalue2 = t_global[key].ToString(); + string argdesc8 = ""; + result += CombineXMLParameter(argname8, argtype8, argvalue2, argdesc8); + } + } + } + } + catch (Exception ex) + { + throw; + } + return result; + } + + #region Combine Response + + /// + /// 2020/04/22 雋辰,取得RsponseMessage的json string + /// + /// + /// 例外狀況 + /// 語系 + /// + public static string CombineRsponseMessage(iMESCIO.CDO.Common.RsponseMessage response = null, Exception ex = null, string language = "", string stack = "", string resourceDir = "Resource") + { + + if (response == null) + response = new iMESCIO.CDO.Common.RsponseMessage(); + + try + { + + if (!(ex == null)) + { + response.Code = Get_Exception_Code(ex); + response.CodeInformation = Convert.ToString(Translate_iMESCode(response.Code, language)); + response.Exception = Convert.ToString(Get_Exception_Type(ex)); + response.Message = TranslateMsg(Convert.ToString(Get_Exception_Message(ex)), language, resourceDir); + if (string.IsNullOrEmpty(stack)) + { + response.StackTrace = Convert.ToString(Get_Exception_StackTrace(ex)); + } + else + { + response.StackTrace = stack; + } + + } + } + catch (Exception e) + { + Exception tmpEx = (Exception)Activator.CreateInstance(e.GetType(), new object[] { e.Message, ex }); + + response.Code = "0000-200091"; + response.CodeInformation = Convert.ToString(Translate_iMESCode(response.Code, language)); + response.Exception = Convert.ToString(Get_Exception_Type(tmpEx)); + string argstrInput = Convert.ToString(Get_Exception_Type(tmpEx)); + response.Message = CInput(argstrInput); + string argstrInput1 = Convert.ToString(Get_Exception_StackTrace(tmpEx)); + response.StackTrace = CInput(argstrInput1); + } + + return response.SerializeObjectData(); + + } + + /// + /// 2020/04/22 雋辰,取得"ex"內含所有Exception的訊息 + /// + /// + /// + public static object Get_Exception_Message(Exception ex) + { + + string result = ""; + var tmpEx = new Exception(ex.Message, ex); + + while (!(tmpEx.InnerException == null)) + { + result += tmpEx.InnerException.Message + ";"; + tmpEx = tmpEx.InnerException; + } + + return result; + + } + + /// + /// 2020/04/22 雋辰,取得"ex"內含所有Exception的例外堆疊資訊 + /// + /// + /// + public static object Get_Exception_StackTrace(Exception ex) + { + + string result = ""; + var tmpList = new List(); + string divider = "----- 內部例外狀況堆疊追蹤的結尾 ---"; + var tmpEx = new Exception(ex.Message, ex); + + while (!(tmpEx.InnerException == null)) + { + tmpList.Add(tmpEx.InnerException.StackTrace); + tmpList.Add(divider); + + tmpEx = tmpEx.InnerException; + } + if (tmpList[tmpList.Count - 1] == divider) + tmpList.RemoveAt(tmpList.Count - 1); + + for (int i = 0, loopTo = tmpList.Count - 1; i <= loopTo; i++) + { + result += tmpList[i]; + if (i < tmpList.Count - 1) + result += Constants.vbCrLf; + } + + return result; + + } + + /// + /// 2020/04/22 雋辰,取得"ex"內含所有Exception的類別 + /// + /// + /// + public static object Get_Exception_Type(Exception ex) + { + + string result = ""; + var tmpList = new List(); + string divider = "--- 內部例外 ---"; + var tmpEx = new Exception(ex.Message, ex); + + while (!(tmpEx.InnerException == null)) + { + tmpList.Add(tmpEx.InnerException.GetType().ToString()); + tmpList.Add(divider); + + tmpEx = tmpEx.InnerException; + } + if (tmpList[tmpList.Count - 1] == divider) + tmpList.RemoveAt(tmpList.Count - 1); + + for (int i = 0, loopTo = tmpList.Count - 1; i <= loopTo; i++) + { + result += tmpList[i]; + if (i < tmpList.Count - 1) + result += Constants.vbCrLf; + } + + return result; + + } + + /// + /// 2020/05/22 雋辰,取出iMES Code + /// + /// + /// + public static string Get_Exception_Code(Exception ex) + { + string code = "0000-200091"; + var tmpEx = new Exception(ex.Message, ex); + + while (!(tmpEx.InnerException == null)) + { + if (tmpEx.InnerException is iMESException.MESException) + { + code = Convert.ToString((tmpEx.InnerException as iMESException.MESException).ErrorCode); + break; + } + tmpEx = tmpEx.InnerException; + } + + return code; + + } + + #endregion + + } + + + internal class iMES_ResponseMessage + { + public string code { get; set; } + public string exception { get; set; } + public string message { get; set; } + public string stacktrace { get; set; } + + public string CombineRsponseMessage(iMES_ResponseMessage oResponseMsg, string LanguageMode, string resourceDir = "Resource") + { + + try + { + if (oResponseMsg.code != "0") + { + string argstrInput = TranslateMsg(oResponseMsg.exception, LanguageMode, resourceDir); + oResponseMsg.exception = CInput(argstrInput); + } + } + catch (Exception ex) + { + oResponseMsg.code = "0000-999999"; + oResponseMsg.exception = ex.Message; + oResponseMsg.message = ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + + return JsonConvert.SerializeObject(oResponseMsg); + + } + } +} \ No newline at end of file diff --git a/MESws_STD/Global.asax b/MESws_STD/Global.asax new file mode 100644 index 0000000..a33f792 --- /dev/null +++ b/MESws_STD/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.vb" Inherits="MESws.Global" %> \ No newline at end of file diff --git a/MESws_STD/Global.asax.cs b/MESws_STD/Global.asax.cs new file mode 100644 index 0000000..a734031 --- /dev/null +++ b/MESws_STD/Global.asax.cs @@ -0,0 +1,112 @@ +using System; +using System.Diagnostics; +using System.Web; + +namespace MESws +{ + + + public class Global : HttpApplication + { + + #region Component Designer Generated Code + + public Global() : base() + { + + // This call is required by the Component Designer. + InitializeComponent(); + + // Add any initialization after the InitializeComponent() call + + } + + // Required by the Component Designer + private System.ComponentModel.IContainer components; + + // NOTE: The following procedure is required by the Component Designer + // It can be modified using the Component Designer. + // Do not modify it using the code editor. + [DebuggerStepThrough()] + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + + public void Application_Start(object sender, EventArgs e) + { + // 啟動應用程式時引發 + // funClearLoginInfo(Session.SessionID.ToString, True) + } + + public void Session_Start(object sender, EventArgs e) + { + // 啟動工作階段時引發 + funAddLoginInfo(Session.SessionID.ToString()); + + } + + public void Application_BeginRequest(object sender, EventArgs e) + { + // 於每一個要求開始時引發 + } + + public void Application_AuthenticateRequest(object sender, EventArgs e) + { + // 嘗試驗證使用時引發 + } + + public void Application_Error(object sender, EventArgs e) + { + // 發生錯誤時引發 + try + { + EventLog.WriteEntry("MES Web Service", Server.GetLastError().Message, EventLogEntryType.Error, 9001); + } + catch (Exception ex) + { + } + finally + { + Server.ClearError(); + } + } + + public void Session_End(object sender, EventArgs e) + { + // 於工作階段結束時引發 + // funClearLoginInfo(Session.SessionID.ToString) + } + + public void Application_End(object sender, EventArgs e) + { + // 於應用程式結束時引發 + // funClearLoginInfo(Session.SessionID.ToString, True) + } + private void funAddLoginInfo(string tmpSessionID) + { + DateTime LoginTime; + string strSQL; + var kc = new iMESUserManager.clsUSRLoginInfo(); + + LoginTime = DateTime.Now; + + try + { + kc.AddLoginInfo(tmpSessionID); + } + catch (Exception ex) + { + throw; + } // New Exception("wsUSR: Add Login Info " & ex.Message) + finally + { + kc = null; + } + + } + + } +} \ No newline at end of file diff --git a/MESws_STD/JsonConevertExtensions.cs b/MESws_STD/JsonConevertExtensions.cs new file mode 100644 index 0000000..5f9f2b1 --- /dev/null +++ b/MESws_STD/JsonConevertExtensions.cs @@ -0,0 +1,299 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System.Globalization; +using Microsoft.VisualBasic.CompilerServices; +using System.Data; + +namespace MESws +{ + + /// + /// 20210513 13871,Json相關擴充方法 + /// + internal static class JsonSerializationExceptionHelper + { + public static JsonSerializationException Create(this JsonReader reader, string format, params object[] args) + { + IJsonLineInfo lineInfo = reader as IJsonLineInfo; + string path = reader == null ? null : reader.Path; + string message = string.Format(CultureInfo.InvariantCulture, format, args); + + if (Convert.ToBoolean(!message.EndsWith(Environment.NewLine, StringComparison.Ordinal))) + { + message = message.Trim(); + if (Convert.ToBoolean(!message.EndsWith(".", StringComparison.Ordinal))) + message += "."; + message += " "; + } + + message += string.Format(CultureInfo.InvariantCulture, "Path '{0}'", path); + if (lineInfo != null && lineInfo.HasLineInfo()) message += String.Format(CultureInfo.InvariantCulture, ", line {0}, position {1}", lineInfo.LineNumber, lineInfo.LinePosition); + message += "."; + return new JsonSerializationException(Convert.ToString(message)); + } + } + + internal static class StringUtils + { + public static string FormatWith(this string format, IFormatProvider provider, object arg0) + { + return format.FormatWith(provider, new[] { arg0 }); + } + + private static string FormatWith(string format, IFormatProvider provider, params object[] args) + { + return string.Format(provider, format, args); + } + } + + internal static class JsonReaderExtensions + { + public static void ReadAndAssert(this JsonReader reader) + { + if (reader == null) + throw new ArgumentNullException("reader"); + + if (!reader.Read()) + { + throw reader.Create("Unexpected end when reading JSON."); + } + } + } + + /// + /// 20210513 13871,Json DataTableConverter類別,自定義轉型方法,排除浮點數被轉成整數問題 + /// + internal class TypeInferringDataTableConverter : Newtonsoft.Json.Converters.DataTableConverter + { + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + return null; + } + + DataTable dt = existingValue as DataTable; + + if (dt == null) + { + dt = objectType == typeof(DataTable) ? new DataTable() : (DataTable)Activator.CreateInstance(objectType); + } + + if (reader.TokenType == JsonToken.PropertyName) + { + dt.TableName = Convert.ToString(reader.Value); + reader.ReadAndAssert(); + + if (reader.TokenType == JsonToken.Null) + { + return dt; + } + } + + if (reader.TokenType != JsonToken.StartArray) + { + throw reader.Create("Unexpected JSON token when reading DataTable. Expected StartArray, got {0}.".FormatWith(CultureInfo.InvariantCulture, reader.TokenType)); + } + + reader.ReadAndAssert(); + object ambiguousColumnTypes = new HashSet(); + + while (reader.TokenType != JsonToken.EndArray) + { + CreateRow(reader, dt, serializer, (HashSet)ambiguousColumnTypes); + reader.ReadAndAssert(); + } + + return dt; + } + + private static void CreateRow(JsonReader reader, DataTable dt, JsonSerializer serializer, HashSet ambiguousColumnTypes) + { + var dr = dt.NewRow(); + reader.ReadAndAssert(); + + while (reader.TokenType == JsonToken.PropertyName) + { + string columnName = Convert.ToString(reader.Value); + reader.ReadAndAssert(); + DataColumn column = dt.Columns[columnName]; // 20211203 13871,DataTable內欄位如果是陣列、物件則不處理 + + if (column == null) + { + bool isAmbiguousType = false; + Type columnType = GetColumnDataType(reader, ref isAmbiguousType); + if (columnType == null) //20211203 13871,DataTable內欄位如果是陣列、物件則不處理 + { + reader.ReadAndAssert(); + continue; + } + column = new DataColumn(columnName, columnType); + dt.Columns.Add(column); + if (isAmbiguousType) ambiguousColumnTypes.Add(columnName); + } + else if (ambiguousColumnTypes.Contains(columnName)) + { + bool isAmbiguousType = false; + Type newColumnType = GetColumnDataType(reader, ref isAmbiguousType); + if (!isAmbiguousType) ambiguousColumnTypes.Remove(columnName); + + + if (newColumnType != column.DataType) + { + column = ReplaceColumn(dt, column, newColumnType, serializer); + } + } + + if (column.DataType == typeof(DataTable)) + { + + if (reader.TokenType == JsonToken.StartArray) + { + reader.ReadAndAssert(); + } + + var nestedDt = new DataTable(); + object nestedUnknownColumnTypes = new HashSet(); + + while (reader.TokenType != JsonToken.EndArray) + { + CreateRow(reader, nestedDt, serializer, (HashSet)nestedUnknownColumnTypes); + reader.ReadAndAssert(); + } + + dr[columnName] = nestedDt; + } + else if (column.DataType.IsArray && column.DataType != typeof(byte[])) + { + + if (reader.TokenType == JsonToken.StartArray) + { + reader.ReadAndAssert(); + } + + var o = new List(); + + while (reader.TokenType != JsonToken.EndArray) + { + o.Add(reader.Value); + reader.ReadAndAssert(); + } + + var destinationArray = Array.CreateInstance(column.DataType.GetElementType(), o.Count); + Array.Copy(o.ToArray(), destinationArray, o.Count); + dr[columnName] = destinationArray; + } + else + { + var columnValue = reader.Value != null ? serializer.Deserialize(reader, column.DataType) ?? DBNull.Value : DBNull.Value; + dr[columnName] = columnValue; + } + + reader.ReadAndAssert(); + } + + dr.EndEdit(); + dt.Rows.Add(dr); + } + + private static object RemapValue(object oldValue, Type newType, JsonSerializer serializer) + { + if (oldValue == null) + return null; + if (Convert.ToBoolean(Operators.ConditionalCompareObjectEqual(oldValue, DBNull.Value, false))) + return oldValue; + return JToken.FromObject(oldValue, serializer).ToObject(newType, serializer); + } + + private static DataColumn ReplaceColumn(DataTable dt, DataColumn column, Type newColumnType, JsonSerializer serializer) + { + List newValues = Enumerable.Range(0, dt.Rows.Count).Select(i => dt.Rows[i]).Select(r => RemapValue(r[column], newColumnType, serializer)).ToList(); + int ordinal = column.Ordinal; + string name = column.ColumnName; + string @namespace = column.Namespace; + DataColumn newColumn = new DataColumn(Convert.ToString(name), newColumnType); + newColumn.Namespace = @namespace; + dt.Columns.Remove(column); + dt.Columns.Add(newColumn); + newColumn.SetOrdinal(ordinal); + + for (int i = 0, loopTo = dt.Rows.Count - 1; i <= loopTo; i++) + dt.Rows[i][newColumn] = newValues[i]; + + return (DataColumn)newColumn; + } + + private static Type GetColumnDataType(JsonReader reader, ref bool isAmbiguous) + { + var tokenType = reader.TokenType; + + switch (tokenType) + { + case JsonToken.Integer: + { + isAmbiguous = false; + return Type.GetType("System.Decimal"); + } + case JsonToken.Float: + { + isAmbiguous = false; + return Type.GetType("System.Decimal"); + } + case JsonToken.Null: + case JsonToken.Undefined: + { + isAmbiguous = false; + return typeof(string); + } + case JsonToken.Boolean: + { + return Type.GetType("System.Boolean"); + } + // 20211203 13871,DataTable內欄位如果是陣列、物件則不處理 + case JsonToken.StartArray: + { + isAmbiguous = false; + int iCount = 1; + while (iCount > 0) + { + reader.ReadAndAssert(); + var tokenType2 = reader.TokenType; + if (tokenType2 == JsonToken.StartArray) + iCount += 1; + if (tokenType2 == JsonToken.EndArray) + iCount -= 1; + } + return null; + } + case JsonToken.StartObject: + { + isAmbiguous = false; + int iCount = 1; + while (iCount > 0) + { + reader.ReadAndAssert(); + var tokenType2 = reader.TokenType; + if (tokenType2 == JsonToken.StartObject) + iCount += 1; + if (tokenType2 == JsonToken.EndObject) + iCount -= 1; + } + return null; + } + + default: + { + isAmbiguous = false; + return reader.ValueType; + } + } + } + } + + +} \ No newline at end of file diff --git a/MESws_STD/Log.cs b/MESws_STD/Log.cs new file mode 100644 index 0000000..864e500 --- /dev/null +++ b/MESws_STD/Log.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Diagnostics; + +namespace MESws +{ + public class Log + { + + public static void WriteLog(string msg, iMESLog.iMESLogLevel level, Exception e = null) + { + string MethodInfo = ""; + var ss = new StackTrace(true); + var mb = ss.GetFrame(1).GetMethod(); + MethodInfo = mb.DeclaringType.Namespace + "." + mb.DeclaringType.Name + "." + mb.Name; + + var log = new iMESLog.MESLog(mb.DeclaringType.Namespace); + log.WriteLog(msg, level, e, MethodInfo); + } + + } +} \ No newline at end of file diff --git a/MESws_STD/MESws_STD.Publish.xml b/MESws_STD/MESws_STD.Publish.xml new file mode 100644 index 0000000..a02638f --- /dev/null +++ b/MESws_STD/MESws_STD.Publish.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESws_STD/MESws_STD.csproj b/MESws_STD/MESws_STD.csproj new file mode 100644 index 0000000..5128ca5 --- /dev/null +++ b/MESws_STD/MESws_STD.csproj @@ -0,0 +1,298 @@ + + + + + 8.0.50727 + 2.0 + {2D7E0B65-75CE-0A76-3410-2A2EE98F0905} + SAK + SAK + SAK + SAK + {349c5851-65df-11da-9384-00065b846f21};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + AnyCPU + + + + + MESws + + + None + JScript + Grid + IE50 + false + Library + Binary + On + Off + MESws + + + true + false + true + + + Windows + + + v4.6.2 + 4.0 + false + + + + + + + + $(DefaultItemExcludes);$(ProjectDir)**\*.vb + + + bin\ + bin\MESws_STD.xml + 285212672 + + + + + true + true + true + false + false + false + false + 0 + 42016,42017,42018,42019,42032,42353,42354,42355 + full + AnyCPU + false + + + bin\ + bin\ + + 285212672 + + + + + false + true + true + true + false + false + false + 0 + 42016,42017,42018,42019,42032,42353,42354,42355 + Full + AnyCPU + false + + + + ..\MES_S_DLL\iMESComSubroutine.dll + False + + + ..\MES_S_DLL\iMESComXML.dll + False + + + ..\MES_S_DLL\iMESConst.dll + False + + + ..\MES_S_DLL\iMESUserManager.dll + False + + + + + False + ..\MES_S_DLL\iMESAppSetting.dll + False + + + ..\MES_S_DLL\iMESCIO.dll + False + + + False + ..\MES_S_DLL\iMESException.dll + False + + + ..\MES_S_DLL\iMESLog.dll + False + + + ..\MES_S_DLL\iMESSCI.dll + False + + + False + ..\MES_S_DLL\kcSYS.dll + False + + + packages\Microsoft.AspNet.SignalR.Core.2.4.1\lib\net45\Microsoft.AspNet.SignalR.Core.dll + + + packages\Microsoft.AspNet.SignalR.SystemWeb.2.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll + + + packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll + + + packages\Microsoft.Owin.Cors.4.0.1\lib\net45\Microsoft.Owin.Cors.dll + + + packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll + + + packages\Microsoft.Owin.Hosting.2.1.0\lib\net45\Microsoft.Owin.Hosting.dll + + + packages\Microsoft.Owin.Security.2.1.0\lib\net45\Microsoft.Owin.Security.dll + + + packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + False + packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll + + + packages\Owin.1.0\lib\net40\Owin.dll + True + + + System + + + + System.Data + + + + system.drawing + + + + System.Web + + + + + + + System.Web.Services + + + System.XML + + + + + + + + + + + + + + + Code + + + + Global.asax + + + + True + True + Settings.settings + + + + + + wsInvoke.asmx + Component + + + wsUpdateResource.asmx + Component + + + + + + + + + + + + + Designer + + + + + wsUpdateResource.asmx.cs + + + + + MESws.My + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + + + + + + + False + True + 3044 + / + + + False + False + + + False + + + + + + \ No newline at end of file diff --git a/MESws_STD/MESws_STD.sln b/MESws_STD/MESws_STD.sln new file mode 100644 index 0000000..34ae285 --- /dev/null +++ b/MESws_STD/MESws_STD.sln @@ -0,0 +1,30 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESws_STD", "MESws_STD.csproj", "{2D7E0B65-75CE-0A76-3410-2A2EE98F0905}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2D7E0B65-75CE-0A76-3410-2A2EE98F0905}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2D7E0B65-75CE-0A76-3410-2A2EE98F0905}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D7E0B65-75CE-0A76-3410-2A2EE98F0905}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {2D7E0B65-75CE-0A76-3410-2A2EE98F0905}.Release|Any CPU.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 2 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = . + SccProjectUniqueName1 = MESws_STD.vbproj + SccLocalPath1 = . + EndGlobalSection +EndGlobal diff --git a/MESws_STD/NLog.config b/MESws_STD/NLog.config new file mode 100644 index 0000000..f31589c --- /dev/null +++ b/MESws_STD/NLog.config @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MESws_STD/TableSample.html b/MESws_STD/TableSample.html new file mode 100644 index 0000000..9f91b84 --- /dev/null +++ b/MESws_STD/TableSample.html @@ -0,0 +1,10 @@ + +   +   +   +   +   +   +   +   +
這裡是第一行的第一個欄位這裡是第一行的第二個欄位
這裡是第二行的第一個欄位這裡是第二行的第二個欄位
\ No newline at end of file diff --git a/MESws_STD/Web.config b/MESws_STD/Web.config new file mode 100644 index 0000000..735a36a --- /dev/null +++ b/MESws_STD/Web.config @@ -0,0 +1,215 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MESws_STD/packages.config b/MESws_STD/packages.config new file mode 100644 index 0000000..b09e6b9 --- /dev/null +++ b/MESws_STD/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/MESws_STD/wsInvoke.asmx b/MESws_STD/wsInvoke.asmx new file mode 100644 index 0000000..29ba89c --- /dev/null +++ b/MESws_STD/wsInvoke.asmx @@ -0,0 +1 @@ +<%@ WebService Language="vb" CodeBehind="wsInvoke.asmx.vb" Class="MESws.wsInvoke" %> diff --git a/MESws_STD/wsInvoke.asmx.cs b/MESws_STD/wsInvoke.asmx.cs new file mode 100644 index 0000000..51ac10b --- /dev/null +++ b/MESws_STD/wsInvoke.asmx.cs @@ -0,0 +1,3155 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using static System.Configuration.ConfigurationManager; +using System.Data; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Web; +using System.Web.Services; +using Microsoft.AspNet.SignalR; +using Microsoft.VisualBasic; +using Microsoft.VisualBasic.CompilerServices; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using static Newtonsoft.Json.JsonConvert; +using static iMESCore.Base.iMESConst; +using static iMESCore.Base.iMESComXML; +using static iMESCore.Base.iMESComSubroutine; +using System.Xml; +using System.Text; +using System.Linq; +using Microsoft.VisualBasic.ApplicationServices; + +namespace MESws +{ + + [WebService(Namespace = "http://www.imestech.com/wsInvoke")] + [System.Web.Script.Services.ScriptService()] + public class wsInvoke : WebService + { + + private System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); // 用以讀取Xml字串 + private string strIdentity; + private string strReturnValue; // ReturnValue XML字串 + private string strException; // Exception XML字串 + private string strResult; // Result XML字串 + private iMESCore.Settings.AppSettings objSetting = new iMESCore.Settings.AppSettings(); + private string strResourceDir = "Resources"; + + public wsInvoke() + { + try + { + strResourceDir = System.IO.Path.Combine("wsUpdateResource", objSetting["ResourceDir"].ToString()); + } + catch (Exception) + { } + } + + /// + /// 叫用Web Service + /// 2019/06/20 Lena, Mantis: 0058845 [WIP] CI/CO執行時間紀錄 + /// 調整為 parameters 會多傳入一個 LogOn 參數(True/False),在 Arrary 的最後一個. + /// 2019/08/27 OwenLiu, Mantis:0061520, 修正invokeSrv啟用CI/CO 效能監控 與之前版本不相容問題 + /// + /// 要呼叫哪一個WebService的方法, ex: wsWIP.LoadLotBasis + /// 要傳入method的參數 + /// + [WebMethod(Description = "Invoke with objects and Return XML")] + public object invokeSrv(string method, object[] parameters) + { + + object result; + + result = Invoke(method, ref parameters); + return result; + + } + + /// + /// 2019/08/27 OwenLiu, Mantis:0061520, 修正invokeSrv啟用CI/CO 效能監控 與之前版本不相容問題 + /// + /// + /// + /// + /// + [WebMethod(Description = "Invoke with objects and Return XML, And Enable Performance Log")] + public object invokeSrv_EnableLog(string method, object[] parameters, bool LogOn) + { + + object result; + + if (LogOn) + { + result = Invoke(method, ref parameters, LogOn); + } + else + { + result = Invoke(method, ref parameters); + } + + return result; + + } + + /// + /// 透過傳入的InXml, 叫用Web Service + /// + /// 要呼叫哪一個WebService的方法, ex: wsWIP.LoadLotBasis + /// 要傳入method的Xml + /// + [WebMethod(Description = "Invoke with Xml String and Return XML")] + public object invokeSrv_Xml(string method, string inXMl) + { + var argparameters = new object[] { inXMl }; + var result = Invoke(method, ref argparameters); + return result; + } + + /// + /// 透過傳入的InXml, 叫用Web Service, 並同時啟用Session + /// + /// 要呼叫哪一個WebService的方法, ex: wsWIP.LoadLotBasis + /// 要傳入method的Xml + /// + [WebMethod(Description = "EnableSession, Invoke with Xml String and Return XML", EnableSession = true)] + public object invokeSrv_Xml_Session(string method, string inXMl) + { + var argparameters = new object[] { inXMl }; + var result = Invoke(method, ref argparameters); + return result; + } + + /// + /// 叫用Web Service + /// + /// 要呼叫哪一個WebService的方法, ex: wsWIP.LoadLotBasis + /// 要傳入method的參數 + /// 要傳入method的參數 + /// + [WebMethod(Description = "Invoke with DataTable and Object Return XML")] + public object invokeSrv_DataTableParameter(string method, object[] parameters, ref DataTable pDataTable) + { + parameters.SetValue(pDataTable, parameters.Length - 1); + var result = Invoke(method, ref parameters); + pDataTable = (DataTable)parameters[parameters.Length - 1]; + return result; + } + + /// + /// 叫用Web Service + /// + /// 要呼叫哪一個WebService的方法, ex: wsWIP.LoadLotBasis + /// InXml + /// 接收結果的DataTable + /// + [WebMethod(Description = "Invoke with DataTable and Return XML")] + public object invokeSrv_DataTable(string method, string InXml, ref DataTable pDataTable) + { + object[] parameters = new object[] { InXml, pDataTable }; + var result = Invoke(method, ref parameters); + pDataTable = (DataTable)parameters[1]; + return result; + } + + /// + /// 叫用Web Service + /// + /// 要呼叫哪一個WebService的方法, ex: wsWIP.LoadLotBasis + /// InXml + /// 接收結果的DataSet + /// + [WebMethod(Description = "Invoke with DataSet and Return XML")] + public object invokeSrv_DataSet(string method, string InXml, ref DataSet pDataSet) + { + object[] parameters = new object[] { InXml, pDataSet }; + var result = Invoke(method, ref parameters); + pDataSet = (DataSet)parameters[1]; + + // 2016-08-29, Joe, 因MESSeries.exe一開啟程式會將CultureInfo改成en-US,如ws沒有將Culture同步調整會造成DataTable Relation時造成Locale不同而錯誤 + var ciCultureInfo = new System.Globalization.CultureInfo("en-US"); + foreach (DataTable dt in pDataSet.Tables) + dt.Locale = ciCultureInfo; + + return result; + } + + /// + /// 叫用Web Service + /// + /// Web Service的方法 + /// 參數 + /// + [WebMethod(Description = "EnableSession, Invoke and Return XML", EnableSession = true)] + public object invokeSrv_Session(string method, object[] parameters) + { + var result = Invoke(method, ref parameters); + return result; + } + + // 前端傳入範例(metadata) + // { + // "computername": "H-08453-1", + // "curuserno": "IMES", + // "sendtime": "2019/02/13 14:02:59", + // "languagemode": "zh-cht", + // "method": "wsUSR.ChkUserSecurity_json" + // } + + // 前端傳入範例(content) + // { + // "userno": "1", + // "computername": "H-08453-1", + // "clearcodepassword": "1" + // } + /// + /// 2019/02/13 OwenLiu, 標準版WS增加 InvokeSrv_Session_json共用函式,供User登入之用 + /// + /// + /// + /// + [WebMethod(Description = "EnableSession, Invoke Web Service Resolved json", EnableSession = true)] + public string invokeSrv_Session_json(string metadata, string parameter) + { + + var result = default(object); + string strResponse = ""; + string strMessage = ""; + string method = ""; + string strClassName = ""; + string strMethodName = ""; + string strComponent = ""; + string[] aryTemp; + string typeName; + Type t; + MethodInfo mi; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + string strSendTime = ""; + var ometadata = new Dictionary(); + var oResponseMsg = new iMES_ResponseMessage(); + + do + { + try + { + if (metadata == null || string.IsNullOrEmpty(metadata.Trim()) || string.IsNullOrEmpty(metadata)) + { + break; + } + // If (parameter Is Nothing) OrElse (parameter.Trim = "") OrElse (String.IsNullOrEmpty(parameter)) Then + // Exit Try + // End If + + DateTime argobjSource = DateTime.Now; + strSendTime = funTransVarFormat(argobjSource, "yyyy/MM/dd HH:mm:ss"); + + ometadata = DeserializeObject>(metadata); + + if (!ometadata.ContainsKey("method")) + break; + method = ometadata["method"]; + aryTemp = method.Split('.'); + + if (aryTemp.Length < 2 || aryTemp.Length > 3) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + if (aryTemp.Length == 2) + { + strComponent = "wsSTD.dll"; + strClassName = aryTemp[0]; + strMethodName = aryTemp[1]; + } + else if (aryTemp.Length == 3 && aryTemp[1].StartsWith("ws") == false) // 2017-06-09, Joe, 不透過ws直接Call kc/tc/ud + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + else + { + strComponent = "ws" + aryTemp[0] + ".dll"; + strClassName = aryTemp[1]; + strMethodName = aryTemp[2]; + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + string strAppBase = AppDomain.CurrentDomain.BaseDirectory; + string strFilePath = strAppBase.TrimEnd('\\') + @"\bin\" + strComponent; + var mainAssembly = Assembly.LoadFrom(strFilePath); + + try + { + t = mainAssembly.GetType(mainAssembly.GetName().Name + "." + strClassName, true, true); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-003000", "WebService: " + strClassName + " [%LOAD FAIL%]!" + Constants.vbCrLf + ex.Message); + } + + argumentTypes = Type.EmptyTypes; + ctor = t.GetConstructor(argumentTypes); + obj = ctor.Invoke(new object[] { }); + mi = t.GetMethod(strMethodName); + + try + { + result = mi.Invoke(obj, new object[] { metadata, parameter }); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + strMessage = ex.Message; + } + else + { + strMessage = ex.InnerException.Message; + } + throw new iMESException.MESException("0000-003000", strClassName + "." + strMethodName + " [%INVOKE FAIL%]!" + Constants.vbCrLf + strMessage); + } + } + + catch (iMESException.MESException ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_Session_json fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_Session_json fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, ometadata["languagemode"], strResourceDir); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_Session_json fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_Session_json fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, ometadata["languagemode"], strResourceDir); + } + finally + { + + oResponseMsg = null; + } + } + while (false); + + return Convert.ToString(result); + + } + + /// + /// 2020/03/23 Yenru, 新增將DataTable 轉為Json格式資料查訊接口 + /// + /// + /// + /// + [WebMethod(Description = "Invoke Web Service Resolved json")] + public string invokeSrv_iMES_json(string uri, string content) + { + + var result = default(object); + string strResponse = ""; + string strMessage = ""; + string method = ""; + string strClassName = ""; + string strMethodName = ""; + string strComponent = ""; + string[] aryTemp; + string typeName; + Type t; + MethodInfo mi; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + string strSendTime = ""; + var ometadata = new Dictionary(); + var oResponseMsg = new iMES_ResponseMessage(); + + do + { + try + { + if (uri == null || string.IsNullOrEmpty(uri.Trim()) || string.IsNullOrEmpty(uri)) + { + break; + } + + object argobjSource = DateTime.Now; + strSendTime = funTransVarFormat(argobjSource, "yyyy/MM/dd HH:mm:ss"); + + ometadata = DeserializeObject>(uri); + + if (!ometadata.ContainsKey("method")) + break; + method = ometadata["method"]; + aryTemp = method.Split('.'); + + if (aryTemp.Length == 1) + { + // STD + strComponent = "wsSTD.dll"; + strClassName = "wsMDS"; + strMethodName = aryTemp[0]; + } + else if (aryTemp.Length == 2) + { + // CUS + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + string strAppBase = AppDomain.CurrentDomain.BaseDirectory; + string strFilePath = strAppBase.TrimEnd('\\') + @"\bin\" + strComponent; + var mainAssembly = Assembly.LoadFrom(strFilePath); + + try + { + t = mainAssembly.GetType(mainAssembly.GetName().Name + "." + strClassName, true, true); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-003000", "WebService: " + strClassName + " [%LOAD FAIL%]!" + Constants.vbCrLf + ex.Message); + } + + argumentTypes = Type.EmptyTypes; + ctor = t.GetConstructor(argumentTypes); + obj = ctor.Invoke(new object[] { }); + mi = t.GetMethod(strMethodName); + + try + { + result = mi.Invoke(obj, new object[] { content }); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + strMessage = ex.Message; + } + else + { + strMessage = ex.InnerException.Message; + } + throw new iMESException.MESException("0000-003000", strClassName + "." + strMethodName + " [%INVOKE FAIL%]!" + Constants.vbCrLf + strMessage); + } + } + + catch (iMESException.MESException ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_json fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_json fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, ometadata["languagemode"], strResourceDir); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_json fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_json fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, ometadata["languagemode"], strResourceDir); + } + finally + { + + oResponseMsg = null; + } + } + while (false); + + return Convert.ToString(result); + + } + + /// + /// 叫用Web Service的方法 + /// + /// Web Service的方法 + /// 參數 + /// + /// 2016/06/22 YF, 調整Invoke以符合產業包叫用方式 + /// 標準版呼叫方式: invokeSrv("wsENT.AddCustomerBasis", InXml) + /// 產業包呼叫方式: invokeSrv("LED.wsWIP.Exe_CheckOut_Sorter", InXml) + /// 以小數點劃分, 小數點有兩位為標準版wsSTD, 小數點有三位為產業包(第1位為產業代號, 本例為wsLED) + /// 2019/06/20 Lena, Mantis: 0058845 [WIP] CI/CO 執行時間紀錄 + /// + private object Invoke(string method, ref object[] parameters, bool LogOn = false) + { + + object result; + string[] aryTemp; + string strClassName = ""; + string strMethodName = ""; + string typeName; + Type t; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + MethodInfo mi; + string strMessage; + var strComponent = default(string); + + DateTime datStartTime = default(DateTime), datEndTime; + var stpCostTime = new Stopwatch(); + short intParameterLength = 0; + + try + { + + + // 2019/06/20 Lena, Mantis: 0058845 + // 記錄執行開始時間. + stpCostTime.Start(); + datStartTime = DateTime.Now; + + string argComputerName = Server.MachineName; + string argCurUserNo = Server.MachineName; + string argSendTime = Strings.Format(DateTime.Now, "yyyy/MM/dd HH:mm:ss"); + strIdentity = CombineXMLIdentity(argComputerName, argCurUserNo, argSendTime); + + // 取出Class及Method + if (string.IsNullOrEmpty(method.Trim())) + { + throw new iMESException.MESException("0000-003000", "Invoke method [%IS EMPTY%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis!"); + } + + aryTemp = method.Split('.'); + + if (aryTemp.Length < 2 || aryTemp.Length > 3) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + if (aryTemp.Length == 2) + { + strComponent = "wsSTD.dll"; + strClassName = aryTemp[0]; + strMethodName = aryTemp[1]; + } + else if (aryTemp.Length == 3 && aryTemp[1].StartsWith("ws") == false) // 2017-06-09, Joe, 不透過ws直接Call kc/tc/ud + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + else + { + strComponent = "ws" + aryTemp[0] + ".dll"; + strClassName = aryTemp[1]; + strMethodName = aryTemp[2]; + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + string strAppBase = AppDomain.CurrentDomain.BaseDirectory; + string strFilePath = strAppBase.TrimEnd('\\') + @"\bin\" + strComponent; + var mainAssembly = Assembly.LoadFrom(strFilePath); + + try + { + t = mainAssembly.GetType(mainAssembly.GetName().Name + "." + strClassName, true, true); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-003000", "WebService: " + strClassName + " [%LOAD FAIL%]!" + Constants.vbCrLf + ex.Message); + } + + argumentTypes = Type.EmptyTypes; + ctor = t.GetConstructor(argumentTypes); + obj = ctor.Invoke(new object[] { }); + mi = t.GetMethod(strMethodName); + + try + { + // 2019/08/27 OwenLiu, Mantis:0061520, 修正invokeSrv啟用CI/CO 效能監控 與之前版本不相容問題 + intParameterLength = (short)mi.GetParameters().GetLength(0); + + if (parameters != null && parameters.Length > 0) + { + + // 0106799: [共用程式]新增XML格式合理性查核 + ParameterInfo[] aryParameterInfo = mi.GetParameters(); + for (int i = 0, loopTo = aryParameterInfo.Length - 1; i <= loopTo; i++) + { + if (aryParameterInfo[i].Name.ToUpper().Contains("INXML")) + { + string strInXML = ""; + strInXML = parameters[i].ToString(); + if (!string.IsNullOrEmpty(strInXML)) + { + if (!CheckXML(strInXML)) + { + // 「傳入XML無法被正確解析,因包含特殊符号或格式不相符」 + throw new iMESException.MESException("0000-003000", "[%XML Cannot Be Parsed Correctly,Because of Special Symbols%]"); + } + } + break; + } + } + + string strBooleanValueTemp = ""; + if (intParameterLength < parameters.Length && IsBoolean(parameters[parameters.Length - 1].ToString(), ref strBooleanValueTemp)) + { + var subParameters = new object[intParameterLength]; + Array.Copy(parameters, subParameters, intParameterLength); + result = mi.Invoke(obj, subParameters); + } + else + { + result = mi.Invoke(obj, parameters); + } + } + else + { + result = mi.Invoke(obj, parameters); + } + } + + + + catch (Exception ex) + { + if (ex.InnerException == null) + { + strMessage = ex.Message; + } + else + { + strMessage = ex.InnerException.Message; + } + throw new iMESException.MESException("0000-003000", strClassName + "." + strMethodName + " [%INVOKE FAIL%]!" + Constants.vbCrLf + strMessage); + } + } + + catch (iMESException.MESException ex) + { + if (ex.InnerException == null) + { + string argcode = Convert.ToString(ex.ErrorCode); + string argsysmsg = ex.Message; + string argmesmsg = "Invoke Fail!"; + strException = CombineXMLException(argcode, argsysmsg, argmesmsg, ex.StackTrace); + } + else + { + string argcode1 = Convert.ToString(ex.ErrorCode); + string argsysmsg1 = ex.InnerException.Message; + string argmesmsg1 = "Invoke Fail!"; + strException = CombineXMLException(argcode1, argsysmsg1, argmesmsg1, ex.StackTrace); + } + string argReturnValue = ""; + string argResult = "fail"; + string argMessage = ""; + result = CombineXMLResponse(strIdentity, argReturnValue, strException, argResult, argMessage); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + string argsysmsg = ex.Message; + string argmesmsg = "Invoke Fail!"; + strException = CombineXMLException(defWSErrCode, argsysmsg, argmesmsg, ex.StackTrace); + } + else + { + string argsysmsg1 = ex.InnerException.Message; + string argmesmsg1 = "Invoke Fail!"; + strException = CombineXMLException(defWSErrCode, argsysmsg1, argmesmsg1, ex.StackTrace); + } + string argReturnValue = ""; + string argResult = "fail"; + string argMessage = ""; + result = CombineXMLResponse(strIdentity, argReturnValue, strException, argResult, argMessage); + } + + // 2020/07/06 雋辰,Info Log + string strParameterMsg = ""; + try + { + if (!(parameters == null)) + { + foreach (object item in parameters) + { + if (item == null) + { + strParameterMsg += "parameter is Null" + Constants.vbNewLine; + } + else + { + strParameterMsg += item.ToString() + Constants.vbNewLine; + } + } + } + } + catch (Exception ex) + { + strParameterMsg = ex.ToString(); + } + try + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.AppendLine("Parameter:"); + strBulder.Append(strParameterMsg); + if (result == null) + { + strBulder.Append("Response:" + ""); + } + else + { + strBulder.Append("Response:" + result.ToString()); + } + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Info, null); + } + catch (Exception ex) + { + Log.WriteLog("WriteLog Info fail:" + method, iMESLog.iMESLogLevel.Warn, ex); + } + + // 2020/06/30 雋辰,新增Nlog相關 + if (!(result == null || result.ToString() == "")) + { + try + { + var XmlDoc = new System.Xml.XmlDocument(); + if (result == null) + { + XmlDoc.LoadXml(""); + } + else + { + XmlDoc.LoadXml(result.ToString()); + } + + if (!chkExecutionSuccess(XmlDoc)) + { + string exCode = GetExceptionCode(XmlDoc); + string exMsg = GetExceptionSysMsg(XmlDoc); + string exStack = GetExceptionStack(XmlDoc); + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.AppendLine("Code:" + exCode); + strBulder.AppendLine("Msg:" + exMsg); + strBulder.AppendLine("Parameter:"); + strBulder.Append(strParameterMsg); + strBulder.Append("Stack:" + exStack); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, null); + } + } + catch (System.Xml.XmlException exXML) + { + try + { + // 2020/0810 雋辰,可能有Response是Json格式 + iMESCIO.CDO.Common.RsponseMessage response; + if (result == null) + { + response = DeserializeObject(""); + } + else + { + response = DeserializeObject(result.ToString().Replace(@"\\", "")); + } + if (response.Code != "0") + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.AppendLine("Code:" + response.Code); + strBulder.AppendLine("CodeInformation:" + response.CodeInformation); + strBulder.AppendLine("Msg:" + response.Message); + strBulder.AppendLine("Parameter:"); + strBulder.Append(strParameterMsg); + strBulder.Append("Stack:" + response.StackTrace); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, null); + } + } + catch (Exception ex) + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("WriteLog Err fail:"); + strBulder.AppendLine("Method:" + method); + if (result == null) + { + strBulder.Append("Response:" + ""); + } + else + { + strBulder.Append("Response:" + result.ToString().Replace(@"\\", "")); + } + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Warn, ex); + } + } + catch (Exception ex) + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("WriteLog Err fail:"); + strBulder.AppendLine("Method:" + method); + if (result == null) + { + strBulder.Append("Response:" + ""); + } + else + { + strBulder.Append("Response:" + result.ToString().Replace(@"\\", "")); + } + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Warn, ex); + } + } + + // 2019/06/20 Lena, Mantis: 0058845 + // 記錄執行結束時間. + stpCostTime.Stop(); + datEndTime = DateTime.Now; + + // 79915: 效能監控擴充 2020/10/20 效能監控 Edison + // ==============================================79915 Start ============================================== + // If LogOn Then + if (!string.IsNullOrEmpty(strComponent) && !string.IsNullOrEmpty(strClassName) && !string.IsNullOrEmpty(strMethodName)) + { + // ==============================================79915 End ============================================== + + long Duration = 0L; + string InXml; + string UserNo = "N/A"; + string ComputerName = "N/A"; + string LotNo = "N/A"; + + var XmlDoc = new System.Xml.XmlDocument(); + + try + { + + // 取出開始到結束的執行時間(毫秒為單位). + Duration = stpCostTime.ElapsedMilliseconds; + + // 取出 InXml + // 2019/08/27 OwenLiu, Mantis:0061520, 修正invokeSrv啟用CI/CO 效能監控 與之前版本不相容問題 + if (parameters != null && parameters.Length > 0) + { + + string strBooleanValueTmp = ""; + if (intParameterLength < parameters.Length && IsBoolean(parameters[parameters.Length - 1].ToString(), ref strBooleanValueTmp)) + { + InXml = parameters[parameters.Length - 2].ToString(); + // 讀取 InXml字串 + XmlDoc.LoadXml(InXml); + // 取出 UserNo,ComputerName + UserNo = GetXMLCurUserNo(XmlDoc); + ComputerName = GetXMLCurComputer(XmlDoc); + + if (XmlDoc.DocumentElement.GetElementsByTagName("lotno").Count > 0) + { + if (XmlDoc.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Count > 0) + { + LotNo = XmlDoc.DocumentElement.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + } + else + { + InXml = parameters[parameters.Length - 1].ToString(); + // 讀取 InXml字串 + XmlDoc.LoadXml(InXml); + // 取出 UserNo,ComputerName + UserNo = GetXMLCurUserNo(XmlDoc); + ComputerName = GetXMLCurComputer(XmlDoc); + + if (XmlDoc.DocumentElement.GetElementsByTagName("lotno").Count > 0) + { + if (XmlDoc.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Count > 0) + { + LotNo = XmlDoc.DocumentElement.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Item(0).InnerText; + } + } + } + } + } + + catch (Exception ex) + { + } + + finally + { + XmlDoc = null; + } + + // 79915: 效能監控擴充 2020/10/20 效能監控 Edison + // ==============================================79915 Start ============================================== + int intChkDurationLog = -1; + + using (var objSYS = new kcSYS.clsSYSUserLog()) + { + try + { + intChkDurationLog = objSYS.ChkDurationLog(strComponent, strClassName, strMethodName); + } + catch (Exception ex) + { + objSYS.AddErrorLog("wsInvoke.Invoke", UserNo, "ChkDurationLog", method, datEndTime, ex.Message, ComputerName: ComputerName); + } + + // 2020/05/18 Shih Kai, 71364: 若寫入失敗,則新增一筆 ErrorLog + // 記錄Log + if (intChkDurationLog == 0) + { + try + { + // 2022/6/6,Ning,記錄LotNo + if (LotNo != "N/A") + { + strMethodName = strMethodName + ", LotNo: " + LotNo; + } + objSYS.AddMESTransactionLog(UserNo, strComponent, strClassName, strMethodName, datStartTime, datEndTime, Duration, ComputerName); + } + catch (Exception ex) + { + objSYS.AddErrorLog("wsInvoke.Invoke", UserNo, "AddMESTransactionLog", method, datEndTime, ex.Message, ComputerName: ComputerName); + } + } + + } + // ==============================================79915 End ============================================== + + } + + return result; + + } + + + // 2016/07/05 YF + [WebMethod(Description = "Web service and database connection test")] + public string Test(string UserNo) + { + string TestRet = default(string); + + try + { + // 呼叫Dll執行 + using (var obj = new iMESUserManager.clsUSRSecurity()) + { + TestRet = obj.Test(UserNo); + } + } + + catch (Exception ex) + { + string argsysmsg = ex.Message; + string argmesmsg = "Test failed!"; + TestRet = CombineXMLException(defWSErrCode, argsysmsg, argmesmsg, ex.StackTrace); + } + + return TestRet; + + } + + [WebMethod(Description = "Web service connection test")] + public string Testalive(string request) + { + string strTransactionId = "", strModuleId = "", strComputerName = "", + strCuruserNo = "", strSendTime = "", strLanguageMode = "", strState = ""; + + try + { + var XmlDoc = new System.Xml.XmlDocument(); + + try + { + XmlDoc.LoadXml(request); + + } + catch (Exception e) + { + throw new iMESException.MESException("0000-003000", "[%ABNORMAL INTERFACE FORMAT%]"); + } + + var rowNoteList = XmlDoc.SelectNodes("/request/identity/*"); + if (rowNoteList != null) + foreach (XmlNode rowNode in rowNoteList) + switch (rowNode.Name) + { + case "transactionid": + strTransactionId = rowNode.InnerText.Trim(); + break; + + case "moduleid": + strModuleId = rowNode.InnerText.Trim(); + break; + + case "computername": + strComputerName = rowNode.InnerText.Trim(); + break; + + case "curuserno": + strCuruserNo = rowNode.InnerText.Trim(); + break; + + case "sendtime": + strSendTime = rowNode.InnerText.Trim(); + break; + + case "languagemode": + strLanguageMode = rowNode.InnerText.Trim(); + strLanguageMode = strLanguageMode.ToLower(); + break; + } + + var stateNode = XmlDoc.SelectNodes("/request/parameter/state"); + if (stateNode != null) + if (stateNode.Count > 0) + strState = stateNode[0].InnerText.Trim(); + + if (string.IsNullOrEmpty(strTransactionId) || string.IsNullOrEmpty(strModuleId) || + string.IsNullOrEmpty(strComputerName) || string.IsNullOrEmpty(strCuruserNo) || + string.IsNullOrEmpty(strSendTime) || string.IsNullOrEmpty(strLanguageMode) || + string.IsNullOrEmpty(strState)) + { + throw new iMESException.MESException("0000-003000", "[%ABNORMAL INTERFACE FORMAT%]"); + } + + return CreateSuccessResponse(strTransactionId, strModuleId, strComputerName, strCuruserNo, strSendTime, strLanguageMode); + + } + catch (iMESException.MESException e) + { + return CreateFailResponse(strTransactionId, strModuleId, strComputerName, strCuruserNo, strSendTime, strLanguageMode, + TranslateMsg(e.Message, strLanguageMode, strResourceDir), e.ErrorCode.ToString(), e.StackTrace); + + } + catch (Exception ex) + { + return CreateFailResponse(strTransactionId, strModuleId, strComputerName, strCuruserNo, strSendTime, strLanguageMode, + TranslateMsg(ex.Message, strLanguageMode, strResourceDir), defWSErrCode, ex.StackTrace); + } + } + private string CreateFailResponse(string strTransactionId, string strModuleId, + string strComputerName, string strCuruserNo, string strSendTime, string strLanguageMode, + string strMesMsg, string strCode, string strStack) + { + // 创建XML文档 + var ResposeDoc = new XmlDocument(); + + // 创建根节点 + var responseNode = ResposeDoc.CreateElement("response"); + ResposeDoc.AppendChild(responseNode); + + // 创建identity节点 + var identityNode = ResposeDoc.CreateElement("identity"); + responseNode.AppendChild(identityNode); + + // 添加identity子节点 + AddChildNode(ResposeDoc, identityNode, "transactionid", strTransactionId); + AddChildNode(ResposeDoc, identityNode, "moduleid", strModuleId); + AddChildNode(ResposeDoc, identityNode, "computername", strComputerName); + AddChildNode(ResposeDoc, identityNode, "curuserno", strCuruserNo); + AddChildNode(ResposeDoc, identityNode, "sendtime", strSendTime); + AddChildNode(ResposeDoc, identityNode, "languagemode", strLanguageMode); + + // 添加其他节点 + AddChildNode(ResposeDoc, responseNode, "returnvalue", ""); + AddChildNode(ResposeDoc, responseNode, "result", "fail"); + AddChildNode(ResposeDoc, responseNode, "message", strMesMsg); + + var exceptionNode = ResposeDoc.CreateElement("exception"); + responseNode.AppendChild(exceptionNode); + + AddChildNode(ResposeDoc, exceptionNode, "code", strCode); + AddChildNode(ResposeDoc, exceptionNode, "sysmsg", strMesMsg); + AddChildNode(ResposeDoc, exceptionNode, "mesmsg", strMesMsg); + AddChildNode(ResposeDoc, exceptionNode, "stack", strStack); + + return ResposeDoc.InnerXml; + } + + private string CreateSuccessResponse(string strTransactionId, string strModuleId, + string strComputerName, string strCuruserNo, string strSendTime, string strLanguageMode) + { + // 创建XML文档 + var ResposeDoc = new XmlDocument(); + + // 创建根节点 + var responseNode = ResposeDoc.CreateElement("response"); + ResposeDoc.AppendChild(responseNode); + + // 创建identity节点 + var identityNode = ResposeDoc.CreateElement("identity"); + responseNode.AppendChild(identityNode); + + // 添加identity子节点 + AddChildNode(ResposeDoc, identityNode, "transactionid", strTransactionId); + AddChildNode(ResposeDoc, identityNode, "moduleid", strModuleId); + AddChildNode(ResposeDoc, identityNode, "computername", strComputerName); + AddChildNode(ResposeDoc, identityNode, "curuserno", strCuruserNo); + AddChildNode(ResposeDoc, identityNode, "sendtime", strSendTime); + AddChildNode(ResposeDoc, identityNode, "languagemode", strLanguageMode); + + // 添加其他节点 + AddChildNode(ResposeDoc, responseNode, "returnvalue", ""); + AddChildNode(ResposeDoc, responseNode, "result", "success"); + AddChildNode(ResposeDoc, responseNode, "message", + TranslateMsg("[%THE SYSTEM IS RUNNING NORMALLY%]", strLanguageMode, strResourceDir)); + + return ResposeDoc.InnerXml; + } + private void AddChildNode(XmlDocument doc, XmlNode parentNode, string nodeName, string nodeValue) + { + var childNode = doc.CreateElement(nodeName); + childNode.InnerText = nodeValue; + parentNode.AppendChild(childNode); + } + + /// + /// 呼叫 SignalR + /// + /// + /// + [WebMethod(Description = "Call SignalR, Invoke and Return XML")] + public object invoke_SignalR(string mseContent) + { + object invoke_SignalRRet = default(object); + + try + { + IHubContext context = GlobalHost.ConnectionManager.GetHubContext(); + context.Clients.All.BroadCast(mseContent); + } + catch (Exception ex) + { + string argsysmsg = ex.Message; + string argmesmsg = "invoke_SignalR failed!"; + invoke_SignalRRet = CombineXMLException(defWSErrCode, argsysmsg, argmesmsg, ex.StackTrace); + } + + return invoke_SignalRRet; + + } + + /// 2020/01/15 Shih Kai + /// + /// 後端細切共用轉呼叫函式 + /// + /// + /// + /// + [WebMethod(Description = "Invoke Module with InXml")] + public object invokeSrv_Module(string method, ref object[] parameters, object pInvokeType, string[] pLogKeyFields, bool blnLogOn) + { + + object result; + DataSet argpDataSet = null; + result = Invoke_Module(ref argpDataSet, method, ref parameters, pInvokeType, pLogKeyFields, blnLogOn); + return result; + + } + + [WebMethod(Description = "Invoke Module with InXml and DataSet Parameter")] + public object invokeSrv_Module_DataSet(string method, ref object[] parameters, object pInvokeType, string[] pLogKeyFields, bool blnLogOn, ref DataSet pDataSet) + { + object result; + result = Invoke_Module(ref pDataSet, method, ref parameters, pInvokeType, pLogKeyFields, blnLogOn); + // 2016-08-29, Joe, 因MESSeries.exe一開啟程式會將CultureInfo改成en-US,如ws沒有將Culture同步調整會造成DataTable Relation時造成Locale不同而錯誤 + var ciCultureInfo = new System.Globalization.CultureInfo("en-US"); + foreach (DataTable dt in pDataSet.Tables) + dt.Locale = ciCultureInfo; + + return result; + } + + private object Invoke_Module(ref DataSet pDataSet, string method, ref object[] parameters, object pInvokeType, string[] pLogKeyFields, bool blnLogOn = false) + { + + object result; + string[] aryTemp; + string strClassName = ""; + string strMethodName = ""; + string typeName; + Type t; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + MethodInfo mi; + string strMessage; + var strComponent = default(string); + short intParameterLength = 0; + DateTime datStartTime = default(DateTime), datEndTime; + var stpCostTime = new Stopwatch(); + + try + { + + // 記錄執行開始時間. + stpCostTime.Start(); + datStartTime = DateTime.Now; + + string argComputerName = Server.MachineName; + string argCurUserNo = Server.MachineName; + string argSendTime = Strings.Format(DateTime.Now, "yyyy/MM/dd HH:mm:ss"); + strIdentity = CombineXMLIdentity(argComputerName, argCurUserNo, argSendTime); + + // 取出Class及Method + if (string.IsNullOrEmpty(method.Trim())) + { + throw new iMESException.MESException("0000-003000", "Invoke method [%IS EMPTY%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis!"); + } + + aryTemp = method.Split('.'); + + if (aryTemp.Length < 2 || aryTemp.Length > 3) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + if (aryTemp.Length == 2) + { + strComponent = "wsSTD.dll"; + strClassName = aryTemp[0]; + strMethodName = aryTemp[1]; + } + else if (aryTemp.Length == 3 && aryTemp[1].StartsWith("ws") == false) // 2017-06-09, Joe, 不透過ws直接Call kc/tc/ud + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + else + { + strComponent = "ws" + aryTemp[0] + ".dll"; + strClassName = aryTemp[1]; + strMethodName = aryTemp[2]; + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + string strAppBase = AppDomain.CurrentDomain.BaseDirectory; + string strFilePath = strAppBase.TrimEnd('\\') + @"\bin\" + strComponent; + var mainAssembly = Assembly.LoadFrom(strFilePath); + + try + { + t = mainAssembly.GetType(mainAssembly.GetName().Name + "." + strClassName, true, true); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-003000", "WebService: " + strClassName + " [%LOAD FAIL%]!" + Constants.vbCrLf + ex.Message); + } + + argumentTypes = Type.EmptyTypes; + ctor = t.GetConstructor(argumentTypes); + obj = ctor.Invoke(new object[] { }); + mi = t.GetMethod(strMethodName); + + try + { + // 解析XML,並Invoke指定Method + if (!(pDataSet == null)) + { + result = InvokeFunction_Module((iMESCore.Base._enuInvokeType)pInvokeType, parameters[0].ToString(), ref obj, strMethodName, strComponent, pLogKeyFields, pDataSet); + } + + else + { + result = InvokeFunction_Module((iMESCore.Base._enuInvokeType)pInvokeType, parameters[0].ToString(), ref obj, strMethodName, strComponent, pLogKeyFields); + + } + } + + catch (Exception ex) + { + if (ex.InnerException == null) + { + strMessage = ex.Message; + } + else + { + strMessage = ex.InnerException.Message; + } + throw new iMESException.MESException("0000-003000", strClassName + "." + strMethodName + " [%INVOKE FAIL%]!" + Constants.vbCrLf + strMessage); + } + } + + catch (iMESException.MESException ex) + { + if (ex.InnerException == null) + { + string argcode = Convert.ToString(ex.ErrorCode); + string argsysmsg = ex.Message; + string argmesmsg = "Invoke_Module Fail!"; + strException = CombineXMLException(argcode, argsysmsg, argmesmsg, ex.StackTrace); + } + else + { + string argcode1 = Convert.ToString(ex.ErrorCode); + string argsysmsg1 = ex.InnerException.Message; + string argmesmsg1 = "Invoke_Module Fail!"; + strException = CombineXMLException(argcode1, argsysmsg1, argmesmsg1, ex.StackTrace); + } + string argReturnValue = ""; + string argResult = "fail"; + string argMessage = ""; + result = CombineXMLResponse(strIdentity, argReturnValue, strException, argResult, argMessage); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + string argsysmsg = ex.Message; + string argmesmsg = "Invoke_Module Fail!"; + strException = CombineXMLException(defWSErrCode, argsysmsg, argmesmsg, ex.StackTrace); + } + else + { + string argsysmsg1 = ex.InnerException.Message; + string argmesmsg1 = "Invoke_Module Fail!"; + strException = CombineXMLException(defWSErrCode, argsysmsg1, argmesmsg1, ex.StackTrace); + } + string argReturnValue = ""; + string argResult = "fail"; + string argMessage = ""; + result = CombineXMLResponse(strIdentity, argReturnValue, strException, argResult, argMessage); + } + + // 記錄執行結束時間. + stpCostTime.Stop(); + datEndTime = DateTime.Now; + + // 執行時間紀錄 + if (blnLogOn) + { + + long Duration = 0L; + string InXml; + string UserNo = "N/A"; + string ComputerName = "N/A"; + + var XmlDoc = new System.Xml.XmlDocument(); + + try + { + + // 取出開始到結束的執行時間(毫秒為單位). + Duration = stpCostTime.ElapsedMilliseconds; + + // 取出 InXml + // 2019/08/27 OwenLiu, Mantis:0061520, 修正invokeSrv啟用CI/CO 效能監控 與之前版本不相容問題 + if (parameters != null && parameters.Length > 0) + { + string strBooleanValueTmp = ""; + if (intParameterLength < parameters.Length && IsBoolean(parameters[parameters.Length - 1].ToString(), ref strBooleanValueTmp)) + { + InXml = parameters[parameters.Length - 2].ToString(); + // 讀取 InXml字串 + XmlDoc.LoadXml(InXml); + // 取出 UserNo,ComputerName + UserNo = GetXMLCurUserNo(XmlDoc); + ComputerName = GetXMLCurComputer(XmlDoc); + } + else + { + InXml = parameters[parameters.Length - 1].ToString(); + // 讀取 InXml字串 + XmlDoc.LoadXml(InXml); + // 取出 UserNo,ComputerName + UserNo = GetXMLCurUserNo(XmlDoc); + ComputerName = GetXMLCurComputer(XmlDoc); + } + } + } + + catch (Exception ex) + { + } + + finally + { + XmlDoc = null; + } + + // 記錄Log + using (var objSYS = new kcSYS.clsSYSUserLog()) + { + try + { + objSYS.AddMESTransactionLog(UserNo, strComponent, strClassName, strMethodName, datStartTime, datEndTime, Duration, ComputerName); + } + + catch (Exception ex) + { + objSYS.AddErrorLog("wsInvoke.Invoke_Module", UserNo, "AddMESTransactionLog", method, datEndTime, ex.Message, ComputerName: ComputerName); + } + } + + } + + return result; + + } + + private string InvokeFunction_Module(iMESCore.Base._enuInvokeType pInvokeType, string InXml, ref object pClass, string pMethod, string pServiceName, string[] pLogKeyFields = null, DataSet pDataSetParameter = null) + { + string InvokeFunction_ModuleRet = default(string); + + object[] ArgsValue; + + System.Reflection.ParameterInfo[] aryParameterInfo = pClass.GetType().GetMethod(pMethod).GetParameters(); + var dicParameter = new Dictionary(); + string strIdentity = default(string), strNode, strException = default(string), strResult = default(string), strTemp; + string strReturnValue = ""; + string strKeyFields = ""; + string strKeyValues = ""; + + var XmlDoc = new XmlDocument(); + var ArriveTime = DateTime.Now; + bool blnAddEventLog = false; + try + { + + // 讀取InXml字串 + XmlDoc.LoadXml(InXml); + // 組Identity字串 + string argComputerName = Environment.MachineName; + string argCurUserNo = GetXMLCurUserNo(XmlDoc); + string argSendTime = Convert.ToString(ArriveTime); + strIdentity = CombineXMLIdentity(argComputerName, argCurUserNo, argSendTime); + ArriveTime = Convert.ToDateTime(argSendTime); + + ArgsValue = new object[aryParameterInfo.Length]; + + // 確認參數及參數預設值,並拆解xml取需要的參數值 + for (int inti = 0, loopTo = aryParameterInfo.Length - 1; inti <= loopTo; inti++) + { + + // 給定參數預設值 + try + { + ArgsValue[inti] = aryParameterInfo[inti].DefaultValue; + } + catch (Exception) + { + ArgsValue[inti] = default(DateTime); + } + + // 以參數名稱當做節點 + strNode = aryParameterInfo[inti].Name.ToLower(); + + if (aryParameterInfo[inti].Name == "AdditionalXml") + { + + if (XmlDoc.DocumentElement.GetElementsByTagName("additional").Count > 0) + { + ArgsValue[inti] = XmlDoc.DocumentElement.GetElementsByTagName("additional").Item(0).OuterXml; + } + } + + // 依value數量判定傳入的為 + else if (XmlDoc.DocumentElement.GetElementsByTagName(strNode).Count > 0 && XmlDoc.GetElementsByTagName(strNode).Item(0).SelectNodes("value").Count > 0) + { + + // 一般變數 + strTemp = XmlDoc.DocumentElement.GetElementsByTagName(strNode).Item(0).SelectNodes("value").Item(0).InnerText; + // 檢查資料型態是否符合 + switch (aryParameterInfo[inti].ParameterType.Name) + { + case "String": + { + // 字串型態無需特別檢查 + ArgsValue[inti] = strTemp; + break; + } + case "Int16": + { + if (!Information.IsNumeric(strTemp)) + throw new iMESException.MESException("0000-200011", "[%" + strNode + "%]"); + ArgsValue[inti] = Conversions.ToShort(strTemp); + break; + } + case "Integer": + case "Int32": + { + if (!Information.IsNumeric(strTemp)) + throw new iMESException.MESException("0000-200011", "[%" + strNode + "%]"); + ArgsValue[inti] = Conversions.ToInteger(strTemp); + break; + } + case "Long": + case "Int64": + { + if (!Information.IsNumeric(strTemp)) + throw new iMESException.MESException("0000-200011", "[%" + strNode + "%]"); + ArgsValue[inti] = Conversions.ToLong(strTemp); + break; + } + case "Double": + { + if (!Information.IsNumeric(strTemp)) + throw new iMESException.MESException("0000-200011", "[%" + strNode + "%]"); + ArgsValue[inti] = Convert.ToDouble(strTemp); + break; + } + case "Decimal": + { + if (!Information.IsNumeric(strTemp)) + throw new iMESException.MESException("0000-200011", "[%" + strNode + "%]"); + ArgsValue[inti] = Convert.ToDecimal(strTemp); + break; + } + case "DateTime": + { + if (!Information.IsDate(strTemp)) + throw new iMESException.MESException("0000-200012", "[%" + strNode + "%]"); + ArgsValue[inti] = Convert.ToDateTime(strTemp); + break; + } + case "Boolean": + { + string argstrBooleanValue = "Null"; + if (!IsBoolean(strTemp, strBooleanValue: ref argstrBooleanValue)) + throw new iMESException.MESException("0000-200012", "[%" + strNode + "%]"); + ArgsValue[inti] = Convert.ToBoolean(strTemp); + break; + } + case "DataTable": + { + ArgsValue[inti] = funXmlToDataTable(XmlDoc.GetElementsByTagName(strNode).Item(0).OuterXml, strNode); + break; + } + + default: + { + throw new iMESException.MESException("0000-003000", "Unhandled data type in 「InvokeFunction」, Please Contact RD Members. "); + } + } + + dicParameter.Add(aryParameterInfo[inti].Name, ArgsValue[inti]); + } + else if (aryParameterInfo[inti].ParameterType.Name.StartsWith("DataTable")) + { + // 若無資料,重新定義DataTable = nothing + ArgsValue[inti] = null; + } + else if (aryParameterInfo[inti].ParameterType.Name.StartsWith("DataSet")) + { + // 若參數為DataSet + ArgsValue[inti] = pDataSetParameter; + } + else if ((int)System.Reflection.ParameterAttributes.HasDefault == Conversions.ToInteger(false)) + { + // 參數沒有預設值(為必要欄位),又找不到資料則Throw Exception + throw new iMESException.MESException("0000-200002", strNode + " Not Found!"); + } + } + + if (!(pLogKeyFields == null)) + { + strKeyFields = Strings.Join(pLogKeyFields, ","); + foreach (string strField in pLogKeyFields) + strKeyValues = strKeyValues + dicParameter[strField].ToString() + ","; + if (strKeyValues.EndsWith(",")) + { + strKeyValues = Strings.Mid(strKeyValues, 1, strKeyValues.Length - 1); + } + } + + switch (pInvokeType) + { + case iMESCore.Base._enuInvokeType._Load: + strReturnValue = Convert.ToString(pClass.GetType().GetMethod(pMethod).Invoke(pClass, ArgsValue)); + break; + case iMESCore.Base._enuInvokeType._Add: + case iMESCore.Base._enuInvokeType._Edit: + case iMESCore.Base._enuInvokeType._Delete: + pClass.GetType().GetMethod(pMethod).Invoke(pClass, ArgsValue); + + // 記錄EventLog + using (var objSYS = new kcSYS.clsSYSUserLog()) + { + objSYS.AddEventLog(pServiceName, GetXMLCurUserNo(XmlDoc), strKeyFields, strKeyValues, DateTime.Now, pMethod); + } + + break; + } + + strException = ""; + strResult = "success"; + } + + catch (iMESException.MESException ex) + { + + strReturnValue = ""; + if (ex.InnerException == null) + { + string argcode = Convert.ToString(ex.ErrorCode); + string argsysmsg = TranslateMsg(ex.Message, GetXMLLanguageMode(XmlDoc), strResourceDir); + string argmesmsg = pMethod + + (string.IsNullOrEmpty(strKeyValues) ? "" : " : (" + strKeyValues + ") ") + " Failed!"; + strException = CombineXMLException(argcode, argsysmsg, argmesmsg, ex.StackTrace); + } + else + { + string argcode1 = Convert.ToString(ex.ErrorCode); + string argsysmsg1 = TranslateMsg(ex.InnerException.Message, GetXMLLanguageMode(XmlDoc), strResourceDir); + string argmesmsg1 = pMethod + + (string.IsNullOrEmpty(strKeyValues) ? "" : " : (" + strKeyValues + ") ") + " Failed!"; + strException = CombineXMLException(argcode1, argsysmsg1, argmesmsg1, ex.StackTrace); + } + + strResult = "fail"; + + using (var objSYS = new kcSYS.clsSYSUserLog()) + { + objSYS.AddErrorLog(pServiceName, GetXMLCurUserNo(XmlDoc), strKeyFields, strKeyValues, DateTime.Now, strException, ComputerName: GetXMLCurComputer(XmlDoc)); + } + } + + catch (Exception ex) + { + + strReturnValue = ""; + if (ex.InnerException == null) + { + string argsysmsg = ex.Message; + string argmesmsg = pMethod + + (string.IsNullOrEmpty(strKeyValues) ? "" : " : (" + strKeyValues + ") ") + " Failed!"; + strException = CombineXMLException(defWSErrCode, argsysmsg, argmesmsg, ex.StackTrace); + } + else + { + string argsysmsg1 = ex.InnerException.Message; + string argmesmsg1 = pMethod + + (string.IsNullOrEmpty(strKeyValues) ? "" : " : (" + strKeyValues + ") ") + " Failed!"; + strException = CombineXMLException(defWSErrCode, argsysmsg1, argmesmsg1, ex.StackTrace); + } + strResult = "fail"; + + using (var objSYS = new kcSYS.clsSYSUserLog()) + { + objSYS.AddErrorLog(pServiceName, GetXMLCurUserNo(XmlDoc), strKeyFields, strKeyValues, DateTime.Now, strException, ComputerName: GetXMLCurComputer(XmlDoc)); + } + } + finally + { + + // 將各部份之XML字串組起來並傳出 + string argMessage = ""; + InvokeFunction_ModuleRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, argMessage); + + dicParameter = null; + XmlDoc = null; + } + + return InvokeFunction_ModuleRet; + + } + + private static DataTable funXmlToDataTable(string InXML, string TagName) + { + var tmpStringReader = default(StringReader); // 將字串轉換成可讀入DataSet的物件 + var xmlDoc = new XmlDocument(); + string XmlData; // 儲存取回之資料 + var dsTemp = new DataSet(); + string strXml = ""; + + try + { + xmlDoc.LoadXml(InXML); + // 只取出Value() + for (int i = 0, loopTo = xmlDoc.GetElementsByTagName(TagName).Item(0).SelectNodes("value").Count - 1; i <= loopTo; i++) + strXml += xmlDoc.GetElementsByTagName(TagName).Item(0).SelectNodes("value").Item(i).OuterXml; + strXml = CombineXMLValue(TagName, strXml); + tmpStringReader = new StringReader(strXml); + dsTemp.ReadXml(tmpStringReader); + tmpStringReader.Close(); + // 重新命名Table Name + dsTemp.Tables[0].TableName = TagName; + return dsTemp.Tables[0]; + } + + catch (Exception ex) + { + throw; + } + finally + { + if (!(tmpStringReader == null)) + tmpStringReader.Close(); + if (!(dsTemp == null)) + dsTemp.Dispose(); + } + + + } + + + #region 行動報工 + /// + /// 2019/02/13 OwenLiu, 標準版WS增加 InvokeSrv_json共用函式,供前端介面直接叫用 + /// + /// + /// + /// + [WebMethod(Description = "Invoke Web Service Resolved json")] + public string invokeSrv_json(string uri, string content) + { + + object result; + string strResponse = ""; + string strMessage = ""; + string method = ""; + string strClassName = ""; + string strMethodName = ""; + string strComponent = ""; + string execptionStack = ""; + string[] aryTemp; + string typeName; + Type t; + MethodInfo mi; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + string strSendTime = ""; + var ometadata = new Dictionary(); + var oResponseMsg = new iMESCIO.CDO.Common.RsponseMessage(); + string strCompumterName = Environment.MachineName; + string strUserNo = "PAD"; + string strSessionNo = ""; + string strExceptionMethodName = ""; + + do + { + try + { + if (uri == null || string.IsNullOrEmpty(uri.Trim()) || string.IsNullOrEmpty(uri)) + { + break; + } + // If (parameter Is Nothing) OrElse (parameter.Trim = "") OrElse (String.IsNullOrEmpty(parameter)) Then + // Exit Try + // End If + + object argobjSource = DateTime.Now; + strSendTime = funTransVarFormat(argobjSource, "yyyy/MM/dd HH:mm:ss"); + + // 2020/04/24 雋辰,修改為非json也給予基礎參數 + try + { + ometadata = DeserializeObject>(uri); + if (ometadata.ContainsKey("computername")) + strCompumterName = ometadata["computername"]; + if (ometadata.ContainsKey("userid")) + strUserNo = ometadata["userid"]; + if (ometadata.ContainsKey("sessionno")) + strSessionNo = ometadata["sessionno"]; + } + catch (Exception ex) + { + ometadata.Add("method", uri); + ometadata.Add("languagemode", "en"); + } + + // 2020/04/27 雋辰,Check Session + CheckSession(strSessionNo); + + if (!ometadata.ContainsKey("method")) + break; + method = ometadata["method"]; + aryTemp = method.Split('.'); + + if (aryTemp.Length < 2 || aryTemp.Length > 3) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + if (aryTemp.Length == 2) + { + strComponent = "wsSTD.dll"; + strClassName = aryTemp[0]; + strMethodName = aryTemp[1]; + } + else if (aryTemp.Length == 3 && aryTemp[1].StartsWith("ws") == false) // 2017-06-09, Joe, 不透過ws直接Call kc/tc/ud + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + else + { + strComponent = "ws" + aryTemp[0] + ".dll"; + strClassName = aryTemp[1]; + strMethodName = aryTemp[2]; + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + try + { + // result = mi.Invoke(obj, New Object() {metadata, parameter}) + + result = InvokeFunction_json(ref execptionStack, method, DeserializeObject>(content), ometadata["languagemode"], strUserNo, strCompumterName); + + oResponseMsg.Code = 0.ToString(); + oResponseMsg.ResultJson = Convert.ToString(result); + + strResponse = DataExchange.CombineRsponseMessage(oResponseMsg, language: ometadata["languagemode"].ToString()); + + // 2020/07/28 雋辰,行動報工接口加入log + try + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.AppendLine("Content:" + content); + strBulder.Append("Response:" + strResponse); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Info, null); + } + catch (Exception ex) + { + Log.WriteLog("WriteLog Info fail:" + method, iMESLog.iMESLogLevel.Warn, ex); + } + } + + catch (Exception ex) + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.Append("Content:" + content); + if (!string.IsNullOrEmpty(execptionStack)) + { + strBulder.AppendLine(""); + strBulder.Append("Stack:" + execptionStack); + } + if (!(ex.InnerException == null) && ex is TargetInvocationException) + { + strResponse = DataExchange.CombineRsponseMessage(ex: ex.InnerException, language: ometadata["languagemode"].ToString(), stack: execptionStack, resourceDir: strResourceDir); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, ex.InnerException); + } + else + { + strResponse = DataExchange.CombineRsponseMessage(ex: ex, language: ometadata["languagemode"].ToString(), stack: execptionStack, resourceDir: strResourceDir); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, ex); + } + } + } + catch (Exception ex) + { + strExceptionMethodName = ometadata["method"]; + strResponse = DataExchange.CombineRsponseMessage(ex: ex, language: ometadata["languagemode"], stack: execptionStack, resourceDir: strResourceDir); + } + } + while (false); + + return strResponse; + + } + + /// + /// 2020/04/24 雋辰,執行底層功能 + /// + /// json string , Example: {method:kcXXX.cs.function,kcXXX.cs.function} + /// json string , Invoke Function args + /// + [WebMethod(Description = "Invoke any library , Available for PAD , Method allows multiple ',' to separate")] + public string InvokeSrv_Json_Multi(string uri, string content) + { + + string strResponse = ""; + var response = new iMESCIO.CDO.Common.RsponseMessage(); + var resultJson = new Newtonsoft.Json.Linq.JObject(); + + string strCompumterName = Environment.MachineName; + string strUserNo = "PAD"; + string strSessionNo = ""; + string strExceptionMethod = ""; + string execptionStack = ""; + var method = default(string); + string tempMethod; + Newtonsoft.Json.Linq.JToken tempToken; + List methods; + List pars; + Dictionary par; + var ometadata = new Dictionary(); + + do + { + try + { + if (uri == null || string.IsNullOrEmpty(uri.Trim()) || string.IsNullOrEmpty(uri)) + { + break; + } + if (content == null || string.IsNullOrEmpty(content.Trim()) || string.IsNullOrEmpty(content)) + { + break; + } + + // 前端傳入:function name + try + { + ometadata = DeserializeObject>(uri); + if (ometadata.ContainsKey("computername")) + strCompumterName = ometadata["computername"].ToString(); + if (ometadata.ContainsKey("userid")) + strUserNo = ometadata["userid"].ToString(); + if (ometadata.ContainsKey("sessionno")) + strSessionNo = ometadata["sessionno"].ToString(); + } + catch (Exception ex) + { + ometadata.Add("method", SerializeObject(uri.Split(','))); + ometadata.Add("languagemode", "en"); + } + + try + { + methods = DeserializeObject>(ometadata["method"].ToString()); + pars = DeserializeObject>(content); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-200091", "Json [%Format Error%]"); + } + + // 2020/04/27 雋辰,Check Session + CheckSession(strSessionNo); + + var transferGlobal = new Dictionary(StringComparer.OrdinalIgnoreCase); + var transferSingle = new Dictionary(StringComparer.OrdinalIgnoreCase); + for (int i = 0, loopTo = methods.Count - 1; i <= loopTo; i++) + { + method = methods[i]; + + // 取得key Name,避免請求重複函式導致Catch + tempMethod = method; + tempToken = resultJson[tempMethod]; + if (!(tempToken == null)) + { + int index = 2; + do + { + tempMethod = string.Format("{0}({1})", method, index); + tempToken = resultJson[tempMethod]; + index += 1; + } + while (tempToken != null); + } + + // 取得Function 參數 + par = pars.Count > i ? DeserializeObject>(pars[i].ToString()) : null; + + resultJson.Add(tempMethod, InvokeFunction_json(ref execptionStack, method, par, ometadata["languagemode"].ToString(), strUserNo, strCompumterName, transferGlobal, transferSingle)); + } + + response.Code = defSuccessCode; + response.ResultJson = SerializeObject(resultJson); + + strResponse = DataExchange.CombineRsponseMessage(response, language: ometadata["languagemode"].ToString()); + + // 2020/07/28 雋辰,行動報工接口加入log + string strMethods = ""; + try + { + foreach (string m in methods) + strMethods += m + ","; + strMethods = strMethods.TrimEnd(','); + } + catch (Exception ex) + { + } + try + { + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + strMethods); + strBulder.AppendLine("Content:" + content); + strBulder.Append("Response:" + strResponse.Replace(@"\\", "")); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Info); + } + catch (Exception ex) + { + Log.WriteLog("WriteLog Info fail:" + strMethods, iMESLog.iMESLogLevel.Warn, ex); + } + } + + catch (Exception ex) + { + strExceptionMethod = method; + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.Append("Content:" + content); + if (!string.IsNullOrEmpty(execptionStack)) + { + strBulder.AppendLine(""); + strBulder.Append("Stack:" + execptionStack); + } + if (!(ex.InnerException == null) && ex is TargetInvocationException) + { + strResponse = DataExchange.CombineRsponseMessage(ex: ex.InnerException, language: ometadata["languagemode"].ToString(), stack: execptionStack, resourceDir: strResourceDir); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, ex.InnerException); + } + else + { + strResponse = DataExchange.CombineRsponseMessage(ex: ex, language: ometadata["languagemode"].ToString(), stack: execptionStack, resourceDir: strResourceDir); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, ex); + } + } + } + while (false); + + return strResponse; + + } + + /// + /// 2020/06/09 雋辰,新增summary,執行底層函式 + /// + /// 函式名稱 + /// 函式引數 + /// 語系 + /// 使用者編號 + /// 電腦名稱資訊 + /// 函式引數表全域 + /// 函式引數表,只使用一次 + /// + private string InvokeFunction_json(ref string stack, string method, Dictionary args = null, string language = "", string userNo = "", string computerName = "", Dictionary transferGlobal = null, Dictionary transferSingle = null) + { + string result; + + string[] aryTemp; + string dllName; + string csName; + var methodName = default(string); + var logFlag = default(bool); + string[] columns = null; + var listTransfer = default(List); + iMESCore.Base._enuInvokeType methodType; + var refParameters = new Dictionary(); + string[] aryMTypes; // 20211202 13871,多載Method使用 + var m_types = default(List); // 20211202 13871,多載Method使用 + + Assembly assembly; + Type t; + MethodInfo mi; + Type miReturnType; + var miParameters = default(ParameterInfo[]); + var argsIgnoreCase = new Dictionary(StringComparer.OrdinalIgnoreCase); + object[] parameters; + var copyParameters = default(object[]); + object miResult; + bool changeToXml = false; + bool notXml = false; + + var objSYS = new kcSYS.clsSYSUserLog(); + + // 79915: 效能監控擴充 2020/10/20 效能監控 Edison + // ==============================================79915 Start ============================================== + DateTime datStartTime, datEndTime; + var stpCostTime = new Stopwatch(); + + try + { + + // 記錄執行開始時間. + stpCostTime.Start(); + datStartTime = DateTime.Now; + // ==============================================79915 End ============================================== + + // 解析請求 + aryTemp = method.Split('.'); + if (aryTemp.Length == 2) + { + dllName = "wsSTD.dll"; + csName = aryTemp[0]; + methodName = aryTemp[1].Replace(".", "_"); + } + else if (aryTemp.Length == 3) + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + dllName = aryTemp[0] + ".dll"; // dll name + csName = aryTemp[1]; // class name + methodName = aryTemp[2].Replace(".", "_"); // function name + } + else + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + // 將參數值移至忽略大小寫的Dictionary + if (!(args == null)) + { + foreach (string key in args.Keys) + argsIgnoreCase[key] = args[key]; + } + + // 取出指定欄位參數 + if (argsIgnoreCase.ContainsKey("Columns")) + { + columns = DeserializeObject(argsIgnoreCase["Columns"].ToString()); + argsIgnoreCase.Remove("Columns"); + } + + // 20211202 13871,多載Method使用 + var dicTypes = new Dictionary(); // 儲存名稱對應的Type避免每次都要從GetAssemblies尋找 + if (argsIgnoreCase.ContainsKey("m_Types")) + { + aryMTypes = DeserializeObject(argsIgnoreCase["m_Types"].ToString()); + m_types = new List(); + for (int i = 0, loopTo = aryMTypes.Length - 1; i <= loopTo; i++) + { + string strName = aryMTypes[i]; + Type t_pars; + + t_pars = Type.GetType(strName); + + if (t_pars == null) + { + if (dicTypes.ContainsKey(strName)) + { + t_pars = dicTypes[strName]; + } + else + { + foreach (Assembly item in AppDomain.CurrentDomain.GetAssemblies()) + { + var t_temp = item.GetType(strName); + if (t_temp != null) + { + t_pars = t_temp; + break; + } + } + if (t_pars == null) + throw new iMESException.MESException("0000-200091", string.Format("{0} [%IS NOT EXIST%]", strName)); + + dicTypes[strName] = t_pars; + } + } + + m_types.Add(t_pars); + } + } + + // 取出傳遞引數參數 + if (argsIgnoreCase.ContainsKey("m_Transfer")) + { + listTransfer = DeserializeObject>(argsIgnoreCase["m_Transfer"].ToString()); + argsIgnoreCase.Remove("m_Transfer"); + } + + //20240522,13871,即便呼叫不是ws但是有傳入此參數,遇到INXML參數也會將json轉為xml + if (argsIgnoreCase.ContainsKey("m_ChangeToXml")) + { + if (argsIgnoreCase["m_ChangeToXml"] != null) + bool.TryParse(argsIgnoreCase["m_ChangeToXml"].ToString(), out changeToXml); + argsIgnoreCase.Remove("m_ChangeToXml"); + } + + //20240531,13871,即便呼叫ws也不處理InXml + if (argsIgnoreCase.ContainsKey("m_NotXml")) + { + if (argsIgnoreCase["m_NotXml"] != null) + bool.TryParse(argsIgnoreCase["m_NotXml"].ToString(), out notXml); + argsIgnoreCase.Remove("m_NotXml"); + } + + // 判斷method類型,後續結果處理的依據 + string tmpMethodName = methodName.ToUpper(); + if (tmpMethodName.StartsWith("LOAD")) + methodType = iMESCore.Base._enuInvokeType._Load; + else if (tmpMethodName.StartsWith("SHOW")) + methodType = iMESCore.Base._enuInvokeType._Show; + else if (tmpMethodName.StartsWith("GET")) + methodType = iMESCore.Base._enuInvokeType._Get; + else if (tmpMethodName.StartsWith("ADD")) + methodType = iMESCore.Base._enuInvokeType._Add; + else if (tmpMethodName.StartsWith("EDIT")) + methodType = iMESCore.Base._enuInvokeType._Edit; + else if (tmpMethodName.StartsWith("DEL")) + methodType = iMESCore.Base._enuInvokeType._Delete; + else + methodType = iMESCore.Base._enuInvokeType._Unknow; + + // 判斷需不需要紀錄Ws Log,wsSTD的函式內已經有Log + logFlag = !dllName.StartsWith("ws") && ((int)methodType >= 1 && (int)methodType <= 3 || (int)methodType < 0) ? true : false; + + assembly = Assembly.Load(AssemblyName.GetAssemblyName(Path.Combine(HttpContext.Current.Server.MapPath("bin"), dllName))); + t = assembly.GetType(string.Format("{0}.{1}", assembly.GetName().Name, csName), true, true); + // 20211202 13871,多載Method使用 + if (m_types == null) + { + mi = t.GetMethod(methodName); + } + else + { + mi = t.GetMethod(methodName, m_types.ToArray()); + } + if (mi == null) + throw new iMESException.MESException("0000-200091", string.Format("{0} [%IS NOT EXIST%]", method)); + miReturnType = mi.ReturnType; + + miParameters = mi.GetParameters(); + + // 建立函式所需參數 + if (miParameters.Length <= 0) + { + // 20220314 13871,增加錯誤卡控 + parameters = null; + copyParameters = null; + } + else + { + parameters = new object[miParameters.Length]; + copyParameters = new object[miParameters.Length]; + for (int i = 0, loopTo1 = miParameters.Length - 1; i <= loopTo1; i++) + { + string parName = miParameters[i].Name; + var parType = miParameters[i].ParameterType; + + if (miParameters[i].IsOut || miParameters[i].ParameterType.IsByRef) + { + refParameters.Add((short)i, parName); + parType = parType.GetElementType(); + } + + if (parName.ToUpper() == "INXML" && ((dllName.StartsWith("ws") && notXml == false) || changeToXml)) + { + // 2020/07/28 雋辰,parameter to xml + string argSendTime = Convert.ToString(DateTime.Now); + string strIdentity = CombineXMLIdentity(computerName, userNo, argSendTime, language); + string strParameter = DataExchange.Parameter2XML(argsIgnoreCase, transferGlobal, transferSingle); + string inXML = CombineXMLRequest(strIdentity, strParameter); + parameters[i] = inXML; + } + else if (argsIgnoreCase.ContainsKey(parName)) + { + try + { + // 20210118 雋辰,避免空字串被JsonConvert轉為Nothing + if (!(argsIgnoreCase[parName] == null) && string.IsNullOrEmpty(argsIgnoreCase[parName].ToString())) + { + parameters[i] = Convert.ChangeType(argsIgnoreCase[parName].ToString(), parType); + } + else + { + // 20210513 13871,MantisBT:0092632,DataTable轉型傳入自定義JsonConvert方式,排除浮點數被轉成整數問題 + JsonSerializerSettings settings = new JsonSerializerSettings() { Converters = new[] { new TypeInferringDataTableConverter() } }; + if (ReferenceEquals(parType, typeof(DataTable))) + { + parameters[i] = JsonConvert.DeserializeObject(argsIgnoreCase[parName].ToString(), parType, settings); + } + else + { + parameters[i] = DeserializeObject(argsIgnoreCase[parName].ToString(), parType); + } + } + } + catch (Exception ex) + { + try + { + parameters[i] = Convert.ChangeType(argsIgnoreCase[parName], parType); + } + catch (Exception ex2) + { + parameters[i] = argsIgnoreCase[parName]; + } + } + } + else if (!(transferSingle == null) && transferSingle.ContainsKey(parName)) + { + try + { + parameters[i] = Convert.ChangeType(transferSingle[parName], parType); + } + catch (Exception ex) + { + parameters[i] = transferSingle[parName]; + } + } + else if (!(transferGlobal == null) && transferGlobal.ContainsKey(parName)) + { + try + { + parameters[i] = Convert.ChangeType(transferGlobal[parName], parType); + } + catch (Exception ex) + { + parameters[i] = transferGlobal[parName]; + } + } + else + { + if (miParameters[i].IsOptional == false) + throw new iMESException.MESException("0000-200002", string.Format("[%{0}%] [%IS EMPTY%]", parName)); + try + { + parameters[i] = miParameters[i].DefaultValue; + } + catch (Exception) + { + if (parType == typeof(DateTime)) + parameters[i] = default(DateTime); + else + throw; + } + } + } + } + // 20210118 雋辰,複製傳入的參數陣列,避免ref值被改變,記錄log用 + // 20220314 13871,增加錯誤卡控 + if (parameters != null && copyParameters != null) + parameters.CopyTo(copyParameters, 0); + + // 執行函式 + miResult = mi.Invoke(Activator.CreateInstance(t), parameters); + + // 清除已使用的transferSingle + if (!(transferSingle == null)) + transferSingle.Clear(); + + // 結果 處理 + if (miReturnType.Equals(typeof(DataSet))) + { + DataSet ds = miResult as DataSet; + DataExchange.ColumnName_ToUpper(ds); + + result = SerializeObject(DataExchange.Specify_Field(ds, new List() { columns })); + var jObj = DeserializeObject(result); + Newtonsoft.Json.Linq.JObject argjObj = (Newtonsoft.Json.Linq.JObject)jObj; + DataExchange.PorcessRef(ref argjObj, parameters, refParameters); + jObj = argjObj; + result = SerializeObject(jObj); + + // 處理傳遞引數 + DataExchange.ProcessTransfer_Load(listTransfer, (Newtonsoft.Json.Linq.JObject)jObj, ref transferGlobal, ref transferSingle); + } + else if (miReturnType.Equals(typeof(DataTable))) + { + DataTable dt = miResult as DataTable; + var ds = new DataSet(); + ds.Tables.Add(dt); + DataExchange.ColumnName_ToUpper(ds); + result = SerializeObject(DataExchange.Specify_Field(ds, new List() { columns })); + var jObj = DeserializeObject(result); + Newtonsoft.Json.Linq.JObject argjObj1 = (Newtonsoft.Json.Linq.JObject)jObj; + DataExchange.PorcessRef(ref argjObj1, parameters, refParameters); + jObj = argjObj1; + result = SerializeObject(jObj); + + // 處理傳遞引數 + DataExchange.ProcessTransfer_Load(listTransfer, (Newtonsoft.Json.Linq.JObject)jObj, ref transferGlobal, ref transferSingle); + } + else if (miReturnType.Equals(typeof(DataRow))) + { + DataRow row = miResult as DataRow; + var dt = row.Table.Clone(); + var ds = new DataSet(); + var dr = dt.NewRow(); + for (int i = 0, loopTo2 = dr.Table.Columns.Count - 1; i <= loopTo2; i++) + dr[i] = row[i]; + dt.Rows.Add(dr); + ds.Tables.Add(dt); + DataExchange.ColumnName_ToUpper(ds); + + result = SerializeObject(DataExchange.Specify_Field(ds, new List() { columns })); + var jObj = DeserializeObject(result); + Newtonsoft.Json.Linq.JObject argjObj2 = (Newtonsoft.Json.Linq.JObject)jObj; + DataExchange.PorcessRef(ref argjObj2, parameters, refParameters); + jObj = argjObj2; + result = SerializeObject(jObj); + + // 處理傳遞引數 + DataExchange.ProcessTransfer_Load(listTransfer, (Newtonsoft.Json.Linq.JObject)jObj, ref transferGlobal, ref transferSingle); + } + else if ((dllName.StartsWith("ws") && notXml == false) || changeToXml) + { + // 2020/07/28 雋辰,處理wsSTD類的Result + try + { + var jObj = DataExchange.XmlString2JsonObj_wsSTD(ref stack, miResult.ToString(), columns, language, strResourceDir); + DataExchange.PorcessRef(ref jObj, parameters, refParameters); + result = SerializeObject(jObj); + + // 處理傳遞引數 + DataExchange.ProcessTransfer(listTransfer, jObj, ref transferGlobal, ref transferSingle); + } + catch (Exception ex) + { + throw; + } + } + else + { + switch (methodType) + { + case iMESCore.Base._enuInvokeType._Load: + case iMESCore.Base._enuInvokeType._Show: + // Load函式Return XML,將XML string轉成DataSet + Newtonsoft.Json.Linq.JObject jObj; + if (miResult == null) + { + jObj = DataExchange.XmlString2JsonObj("", columns); + } + else + { + jObj = DataExchange.XmlString2JsonObj(miResult.ToString(), columns); + } + + DataExchange.PorcessRef(ref jObj, parameters, refParameters); + result = SerializeObject(jObj); + + DataExchange.ProcessTransfer_Load(listTransfer, jObj, ref transferGlobal, ref transferSingle); + break; + default: + // Add、Edit、Del函式Resutn一般字串success、fail、other + var jObj2 = new Newtonsoft.Json.Linq.JObject(); + try + { + jObj2.Add("ReturnValue", Newtonsoft.Json.Linq.JToken.Parse(SerializeObject(Convert.ChangeType(miResult, mi.ReturnType)))); + } + catch (Exception ex) + { + if (miResult == null) + { + jObj2.Add("ReturnValue", ""); + } + else + { + jObj2.Add("ReturnValue", miResult.ToString()); + } + + } + + DataExchange.PorcessRef(ref jObj2, parameters, refParameters); + result = SerializeObject(jObj2); + + // 處理傳遞引數 + DataExchange.ProcessTransfer(listTransfer, jObj2, ref transferGlobal, ref transferSingle); + break; + } + } + + // 紀錄Log + try + { + if (logFlag) + { + string strResult; + if (miResult == null) + { + strResult = ""; + } + else + { + strResult = miResult.ToString(); + } + var parName = default(string); + var parVal = default(string); + string desc = strResult == "fail" ? methodName + "Fail," : methodName + ","; + foreach (string key in argsIgnoreCase.Keys) + { + if (string.IsNullOrEmpty(parName)) + { + parName = key; + parVal = argsIgnoreCase[key].ToString(); + } + if (argsIgnoreCase[key] == null) + { + desc += key + ":" + " "; + } + else + { + desc += key + ":" + argsIgnoreCase[key].ToString() + " "; + } + } + + if (strResult == "fail") + { + objSYS.AddErrorLog("MESws", userNo, parName, parVal, DateTime.Now, desc, ComputerName: computerName); + } + else + { + objSYS.AddEventLog("MESws", userNo, parName, parVal, DateTime.Now, desc, ComputerName: computerName); + } + } + } + catch (Exception ex) + { + + } + // 2020/07/30 雋辰,增加log + try + { + string parMsg = ""; + string val = ""; + if (!(copyParameters == null)) + { + for (int i = 0, loopTo3 = copyParameters.Length - 1; i <= loopTo3; i++) + { + if (copyParameters[i] == null) + { + val = "parameter is Null"; + } + else + { + val = (copyParameters[i].GetType().Equals(typeof(DataTable)) ? SerializeObject(copyParameters[i]) : copyParameters[i].ToString()); + } + parMsg += string.Format("{0}:{1}{2}", miParameters[i].Name, val, Constants.vbNewLine); + } + } + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.AppendLine("Parameter:"); + strBulder.Append(parMsg); + strBulder.Append("Response:" + result); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Info, null); + } + catch (Exception ex) + { + Log.WriteLog("WriteLog fail.", iMESLog.iMESLogLevel.Warn, ex); + } + } + catch (Exception ex) + { + if (!(ex.InnerException == null) && ex.InnerException is iMESException.MESException) + ex = ex.InnerException; + + // 紀錄Log + try + { + if (logFlag) + { + var parName = default(string); + var parVal = default(string); + string desc = methodName + "Fail,"; + string descException; + foreach (string key in argsIgnoreCase.Keys) + { + if (string.IsNullOrEmpty(parName)) + { + parName = key; + parVal = argsIgnoreCase[key].ToString(); + } + desc += key + ":" + argsIgnoreCase[key].ToString() + " "; + } + if (ex is iMESException.MESException) + { + string argcode = Convert.ToString((ex as iMESException.MESException).ErrorCode); + string argsysmsg = TranslateMsg(ex.Message, language, strResourceDir); + descException = CombineXMLException(argcode, argsysmsg, desc, ex.StackTrace); + } + else + { + string argsysmsg1 = ex.Message; + descException = CombineXMLException(defWSErrCode, argsysmsg1, desc, ex.StackTrace); + } + objSYS.AddErrorLog("MESws", userNo, parName, parVal, DateTime.Now, descException, ComputerName: computerName); + } + } + catch (Exception ex2) + { + + } + // 2020/07/30 雋辰,增加log + try + { + string parMsg = ""; + string val = ""; + if (!(copyParameters == null)) + { + for (int i = 0, loopTo = copyParameters.Length - 1; i <= loopTo; i++) + { + if (copyParameters[i] == null) + { + val = "parameter is Null"; + } + else + { + val = copyParameters[i].GetType().Equals(typeof(DataTable)) ? SerializeObject(copyParameters[i]) : copyParameters[i].ToString(); + } + parMsg += string.Format("{0}:{1}{2}", miParameters[i].Name, val, Constants.vbNewLine); + } + } + var strBulder = new System.Text.StringBuilder(); + strBulder.AppendLine("Method:" + method); + strBulder.AppendLine("Parameter:"); + strBulder.Append(parMsg); + Log.WriteLog(strBulder.ToString(), iMESLog.iMESLogLevel.Error, ex); + } + catch (Exception ex2) + { + Log.WriteLog("WriteLog Err fail:" + methodName, iMESLog.iMESLogLevel.Warn, ex); + } + throw; + } + finally + { + objSYS.Dispose(); + } + + // 79915: 效能監控擴充 2020/10/20 效能監控 Edison + // ==============================================79915 Start ============================================== + stpCostTime.Stop(); + datEndTime = DateTime.Now; + + if (!string.IsNullOrEmpty(dllName) && !string.IsNullOrEmpty(csName) && !string.IsNullOrEmpty(methodName)) + { + + long Duration = 0L; + string InXml; + if (string.IsNullOrEmpty(userNo)) + userNo = "N/A"; + if (string.IsNullOrEmpty(computerName)) + computerName = "N/A"; + + var XmlDoc = new System.Xml.XmlDocument(); + + try + { + + // 取出開始到結束的執行時間(毫秒為單位). + Duration = stpCostTime.ElapsedMilliseconds; + } + + catch (Exception ex) + { + } + + finally + { + XmlDoc = null; + } + + + int intChkDurationLog = -1; + + using (var objSYSLog = new kcSYS.clsSYSUserLog()) + { + try + { + intChkDurationLog = objSYSLog.ChkDurationLog(dllName, csName, methodName); + } + catch (Exception ex) + { + objSYSLog.AddErrorLog("wsInvoke.Invoke", userNo, "ChkDurationLog", method, datEndTime, ex.Message, ComputerName: computerName); + } + + // 記錄Log + if (intChkDurationLog == 0) + { + try + { + objSYSLog.AddMESTransactionLog(userNo, dllName, csName, methodName, datStartTime, datEndTime, Duration, computerName); + } + catch (Exception ex) + { + objSYSLog.AddErrorLog("wsInvoke.Invoke", userNo, "AddMESTransactionLog", method, datEndTime, ex.Message, ComputerName: computerName); + } + } + + } + + } + // ==============================================79915 End ============================================== + + return result; + + } + + + /// + /// 2019/03/05 OwenLiu, 與EAI一致的簡易呼叫方式 + /// + /// + /// + /// + [WebMethod(Description = "EnableSession, Invoke Web Service Resolved json", EnableSession = true)] + public string invokeSrv_Session_plainjson(string uri, string content) + { + + var result = default(object); + string strResponse = ""; + string strMessage = ""; + string method = ""; + string strClassName = ""; + string strMethodName = ""; + string strComponent = ""; + string[] aryTemp; + string typeName; + Type t; + MethodInfo mi; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + string strSendTime = ""; + var ometadata = new Dictionary(); + var ocontent = new Dictionary(); + var oResponseMsg = new iMES_ResponseMessage(); + string strlanguagemode = ""; + + do + { + try + { + if (uri == null || string.IsNullOrEmpty(uri.Trim()) || string.IsNullOrEmpty(uri)) + { + break; + } + + if (content == null || string.IsNullOrEmpty(content.Trim()) || string.IsNullOrEmpty(content)) + { + // 2019/03/25 OwenLiu, 如果傳入的content是空的,把uri的內容指定給content + content = uri; + } + else + { + ocontent = DeserializeObject>(content); + if (ocontent.Count.Equals(0)) + { + content = uri; + } + } + + object argobjSource = DateTime.Now; + strSendTime = funTransVarFormat(argobjSource, "yyyy/MM/dd HH:mm:ss"); + + try + { + ometadata = DeserializeObject>(uri); + } + catch (Exception ex) + { + ometadata.Add("method", uri); + ometadata.Add("languagemode", "en"); + } + + method = ometadata["method"]; + aryTemp = method.Split('.'); + + if (aryTemp.Length < 2 || aryTemp.Length > 3) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + if (aryTemp.Length == 2) + { + strComponent = "wsSTD.dll"; + strClassName = aryTemp[0]; + strMethodName = aryTemp[1]; + } + else if (aryTemp.Length == 3 && aryTemp[1].StartsWith("ws") == false) // 2017-06-09, Joe, 不透過ws直接Call kc/tc/ud + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + else + { + strComponent = "ws" + aryTemp[0] + ".dll"; + strClassName = aryTemp[1]; + strMethodName = aryTemp[2]; + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + string strAppBase = AppDomain.CurrentDomain.BaseDirectory; + string strFilePath = strAppBase.TrimEnd('\\') + @"\bin\" + strComponent; + var mainAssembly = Assembly.LoadFrom(strFilePath); + + try + { + t = mainAssembly.GetType(mainAssembly.GetName().Name + "." + strClassName, true, true); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-003000", "WebService: " + strClassName + " [%LOAD FAIL%]!" + Constants.vbCrLf + ex.Message); + } + + argumentTypes = Type.EmptyTypes; + ctor = t.GetConstructor(argumentTypes); + obj = ctor.Invoke(new object[] { }); + mi = t.GetMethod(strMethodName); + + try + { + result = mi.Invoke(obj, new object[] { uri, content }); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + strMessage = ex.Message; + } + else + { + strMessage = ex.InnerException.Message; + } + throw new iMESException.MESException("0000-003000", strClassName + "." + strMethodName + " [%INVOKE FAIL%]!" + Constants.vbCrLf + strMessage); + } + } + + catch (iMESException.MESException ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_Session_plainjson fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_Session_plainjson fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, strlanguagemode, strResourceDir); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_Session_plainjson fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_Session_plainjson fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, strlanguagemode, strResourceDir); + } + finally + { + + oResponseMsg = null; + } + } + while (false); + + return Convert.ToString(result); + + } + + /// + /// 2019/03/05 OwenLiu, 與EAI一致的簡易呼叫方式 + /// + /// + /// + /// + [WebMethod(Description = "Invoke Web Service Resolved json")] + public string invokeSrv_plainjson(string uri, string content) + { + + var result = default(object); + string strResponse = ""; + string strMessage = ""; + string method = ""; + string strClassName = ""; + string strMethodName = ""; + string strComponent = ""; + string[] aryTemp; + string typeName; + Type t; + MethodInfo mi; + Type[] argumentTypes; + ConstructorInfo ctor; + object obj; + string strSendTime = ""; + var ometadata = new Dictionary(); + var ocontent = new Dictionary(); + var oResponseMsg = new iMES_ResponseMessage(); + string strlanguagemode = ""; + + do + { + try + { + if (uri == null || string.IsNullOrEmpty(uri.Trim()) || string.IsNullOrEmpty(uri)) + { + break; + } + if (content == null || string.IsNullOrEmpty(content.Trim()) || string.IsNullOrEmpty(content)) + { + // 2019/03/25 OwenLiu, 如果傳入的content是空的,把uri的內容指定給content + content = uri; + } + else + { + ocontent = DeserializeObject>(content); + if (ocontent.Count.Equals(0)) + { + content = uri; + } + } + + object argobjSource = DateTime.Now; + strSendTime = funTransVarFormat(argobjSource, "yyyy/MM/dd HH:mm:ss"); + + + try + { + ometadata = DeserializeObject>(uri); + } + catch (Exception ex) + { + ometadata.Add("method", uri); + ometadata.Add("languagemode", "en"); + } + + + method = ometadata["method"]; + aryTemp = method.Split('.'); + + if (aryTemp.Length < 2 || aryTemp.Length > 3) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + if (aryTemp.Length == 2) + { + strComponent = "wsSTD.dll"; + strClassName = aryTemp[0]; + strMethodName = aryTemp[1]; + } + else if (aryTemp.Length == 3 && aryTemp[1].StartsWith("ws") == false) // 2017-06-09, Joe, 不透過ws直接Call kc/tc/ud + { + // 前端傳入:kcXXX.clsXXX.AddXXXXX + strComponent = aryTemp[0] + ".dll"; // dll name + strClassName = aryTemp[1]; // class name + strMethodName = aryTemp[2]; // function name + } + else + { + strComponent = "ws" + aryTemp[0] + ".dll"; + strClassName = aryTemp[1]; + strMethodName = aryTemp[2]; + } + + if (string.IsNullOrEmpty(strComponent) || string.IsNullOrEmpty(strClassName) || string.IsNullOrEmpty(strMethodName)) + { + throw new iMESException.MESException("0000-003000", "Invoke method(" + method + ") [%FORMAT ERROR%], [%FOR EXAMPLE%] wsENT.LoadCustomerBasis [%OR%] LED.wsENT.LoadCustomerBasis!"); + } + + string strAppBase = AppDomain.CurrentDomain.BaseDirectory; + string strFilePath = strAppBase.TrimEnd('\\') + @"\bin\" + strComponent; + var mainAssembly = Assembly.LoadFrom(strFilePath); + + try + { + t = mainAssembly.GetType(mainAssembly.GetName().Name + "." + strClassName, true, true); + } + catch (Exception ex) + { + throw new iMESException.MESException("0000-003000", "WebService: " + strClassName + " [%LOAD FAIL%]!" + Constants.vbCrLf + ex.Message); + } + + argumentTypes = Type.EmptyTypes; + ctor = t.GetConstructor(argumentTypes); + obj = ctor.Invoke(new object[] { }); + mi = t.GetMethod(strMethodName); + object intParameterLength = mi.GetParameters().GetLength(0); + + try + { + if (Convert.ToBoolean(Operators.ConditionalCompareObjectEqual(intParameterLength, 1, false))) + { + result = mi.Invoke(obj, new object[] { content }); + } + else if (Convert.ToBoolean(Operators.ConditionalCompareObjectEqual(intParameterLength, 2, false))) + { + result = mi.Invoke(obj, new object[] { uri, content }); + } + } + + catch (Exception ex) + { + if (ex.InnerException == null) + { + strMessage = ex.Message; + } + else + { + strMessage = ex.InnerException.Message; + } + throw new iMESException.MESException("0000-003000", strClassName + "." + strMethodName + " [%INVOKE FAIL%]!" + Constants.vbCrLf + strMessage); + } + } + + catch (iMESException.MESException ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_plainjson fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = Convert.ToString(ex.ErrorCode); + oResponseMsg.exception = "invokeSrv_plainjson fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, strlanguagemode, strResourceDir); + } + catch (Exception ex) + { + if (ex.InnerException == null) + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_plainjson fail;" + ex.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + else + { + oResponseMsg.code = defWSErrCode; + oResponseMsg.exception = "invokeSrv_plainjson fail;" + ex.InnerException.Message; + oResponseMsg.stacktrace = ex.StackTrace; + } + result = oResponseMsg.CombineRsponseMessage(oResponseMsg, strlanguagemode, strResourceDir); + } + finally + { + + oResponseMsg = null; + } + } + while (false); + + return Convert.ToString(result); + + } + + /// + /// 2020/08/28 雋辰,檢查、更新sesstion + /// + /// session編號 + private void CheckSession(string sessionId) + { + var XmlDoc = new System.Xml.XmlDocument(); + var dsLogin = new DataSet(); + string xmlSchema; + string xmlData; + + var kcLogin = new iMESUserManager.clsUSRLoginInfo(); + + // 測試時不會有Session,所以測試不檢查 + if (string.IsNullOrEmpty(sessionId)) + return; + + try + { + // 檢查session + string outXML = kcLogin.LoadLoginInfo(sessionId); + + XmlDoc.LoadXml(outXML); + xmlSchema = XmlDoc.SelectSingleNode("loadlogininfo").SelectSingleNode("schema").InnerXml; + if (!string.IsNullOrEmpty(xmlSchema)) + { + // 將XML讀入String Reader object中,因為Dataset讀入XML時必須透過String Reader物件 + using (var tmpStringReader = new StringReader(xmlSchema)) + { + dsLogin.ReadXmlSchema(tmpStringReader); + } + } + // 取出Data + xmlData = XmlDoc.SelectSingleNode("loadlogininfo").SelectSingleNode("value").InnerXml; + if (!string.IsNullOrEmpty(xmlData)) + { + using (var tmpStringReader = new StringReader(xmlData)) + { + dsLogin.ReadXml(tmpStringReader, XmlReadMode.InferSchema); + } + } + + if (dsLogin.Tables[0].Rows.Count <= 0) + { + throw new iMESException.MESException("0000-202414", "[%Disconnect%]"); + } + + // 更新session + kcLogin.RefreshIdleTime(sessionId); + } + catch (Exception ex) + { + throw; + } + } + + #endregion + + #region GuardServer + [WebMethod(Description = "return hysical directory")] + public object Invoke_GuardServer_Process() + { + return HttpContext.Current.Server.MapPath("."); + } + #endregion + + } +} \ No newline at end of file diff --git a/iMES_Base/iMESBase.sln b/iMES_Base/iMESBase.sln new file mode 100644 index 0000000..3804dcf --- /dev/null +++ b/iMES_Base/iMESBase.sln @@ -0,0 +1,246 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33529.622 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "data_access_service", "data_access_service\data_access_service.csproj", "{7D944E0C-08C1-4FF9-A933-D7ADA76344CB}" + ProjectSection(ProjectDependencies) = postProject + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7} = {409B533F-0B4B-47D0-8C3F-C034D5C32EE7} + {16B8188D-F79E-4128-AACB-A02565EB6437} = {16B8188D-F79E-4128-AACB-A02565EB6437} + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3} = {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3} + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09} = {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESAppSetting", "iMESAppSetting\iMESAppSetting.csproj", "{4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}" + ProjectSection(ProjectDependencies) = postProject + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7} = {409B533F-0B4B-47D0-8C3F-C034D5C32EE7} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESComSubroutine", "iMESComSubroutine\iMESComSubroutine.csproj", "{16383675-A21F-470E-8D4A-44F1113693BF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESComXML", "iMESComXML\iMESComXML.csproj", "{5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESConst", "iMESConst\iMESConst.csproj", "{409B533F-0B4B-47D0-8C3F-C034D5C32EE7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESMail", "iMESMail\iMESMail\iMESMail.csproj", "{ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESPlugIn", "iMESPlugIn\iMESPlugIn.csproj", "{CFE0836F-C8E6-4B42-8DA8-5F04573D456A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataObjectCore", "iMESDataObject\DataObjectCore.csproj", "{DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESProjectBase", "iMESProjectBase\iMESProjectBase.csproj", "{3C1466DB-32D2-4D76-AE89-191080D8D946}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESException", "iMESException\iMESException\iMESException.vbproj", "{16B8188D-F79E-4128-AACB-A02565EB6437}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESChart_HtmlHandler", "iMESChart_HtmlHandler\iMESChart_HtmlHandler\iMESChart_HtmlHandler.csproj", "{84A741BE-3D4C-4103-96A7-65230465BB07}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + C++Buile|Any CPU = C++Buile|Any CPU + Debug|Any CPU = Debug|Any CPU + Quick|Any CPU = Quick|Any CPU + Release|Any CPU = Release|Any CPU + StorageBuild|Any CPU = StorageBuild|Any CPU + UnitTest|Any CPU = UnitTest|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.Quick|Any CPU.Build.0 = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.Release|Any CPU.Build.0 = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {7D944E0C-08C1-4FF9-A933-D7ADA76344CB}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.Quick|Any CPU.Build.0 = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.Release|Any CPU.Build.0 = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {4920DFE2-EE09-4A81-81DE-F2DB6B6F6B09}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.Quick|Any CPU.Build.0 = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.Release|Any CPU.Build.0 = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {16383675-A21F-470E-8D4A-44F1113693BF}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.Quick|Any CPU.Build.0 = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.Release|Any CPU.Build.0 = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {5BAA3297-8BC2-4903-8B39-47AD39EF9FF3}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.Quick|Any CPU.Build.0 = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.Release|Any CPU.Build.0 = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {409B533F-0B4B-47D0-8C3F-C034D5C32EE7}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.Quick|Any CPU.Build.0 = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.Release|Any CPU.Build.0 = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {ADBC00CD-B2E0-4F61-A4BD-4CF979873CA2}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Quick|Any CPU.Build.0 = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.Release|Any CPU.Build.0 = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {CFE0836F-C8E6-4B42-8DA8-5F04573D456A}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.C++Buile|Any CPU.ActiveCfg = C++Buile|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.C++Buile|Any CPU.Build.0 = C++Buile|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.Quick|Any CPU.ActiveCfg = Quick|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.Quick|Any CPU.Build.0 = Quick|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.Release|Any CPU.Build.0 = Release|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.StorageBuild|Any CPU.ActiveCfg = StorageBuild|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.StorageBuild|Any CPU.Build.0 = StorageBuild|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.UnitTest|Any CPU.ActiveCfg = UnitTest|Any CPU + {DB3B1DF7-6D4B-441E-B661-6FE6F39F7A2C}.UnitTest|Any CPU.Build.0 = UnitTest|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.C++Buile|Any CPU.ActiveCfg = C++Buile|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.C++Buile|Any CPU.Build.0 = C++Buile|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.Quick|Any CPU.ActiveCfg = C++Buile|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.Quick|Any CPU.Build.0 = C++Buile|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.Release|Any CPU.Build.0 = Release|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.StorageBuild|Any CPU.ActiveCfg = StorageBuild|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.StorageBuild|Any CPU.Build.0 = StorageBuild|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.UnitTest|Any CPU.ActiveCfg = C++Buile|Any CPU + {3C1466DB-32D2-4D76-AE89-191080D8D946}.UnitTest|Any CPU.Build.0 = C++Buile|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.C++Buile|Any CPU.ActiveCfg = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.C++Buile|Any CPU.Build.0 = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.Quick|Any CPU.ActiveCfg = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.Quick|Any CPU.Build.0 = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.Release|Any CPU.Build.0 = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.StorageBuild|Any CPU.ActiveCfg = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.StorageBuild|Any CPU.Build.0 = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.UnitTest|Any CPU.ActiveCfg = Release|Any CPU + {16B8188D-F79E-4128-AACB-A02565EB6437}.UnitTest|Any CPU.Build.0 = Release|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.C++Buile|Any CPU.ActiveCfg = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.C++Buile|Any CPU.Build.0 = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Quick|Any CPU.ActiveCfg = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Quick|Any CPU.Build.0 = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Release|Any CPU.Build.0 = Release|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.StorageBuild|Any CPU.ActiveCfg = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.StorageBuild|Any CPU.Build.0 = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.UnitTest|Any CPU.ActiveCfg = Debug|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.UnitTest|Any CPU.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4F587C40-0D7A-4FB5-845A-37C7B38EC0CF} + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 11 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccProjectUniqueName0 = data_access_service\\data_access_service.csproj + SccProjectName0 = data_access_service + SccAuxPath0 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = data_access_service + SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName1 = iMESAppSetting\\iMESAppSetting.csproj + SccProjectName1 = iMESAppSetting + SccAuxPath1 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath1 = iMESAppSetting + SccProvider1 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName2 = iMESComXML\\iMESComXML.csproj + SccProjectName2 = iMESComXML + SccAuxPath2 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath2 = iMESComXML + SccProvider2 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName3 = iMESMail\\iMESMail\\iMESMail.csproj + SccProjectName3 = iMESMail/iMESMail + SccAuxPath3 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath3 = iMESMail\\iMESMail + SccProvider3 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName4 = iMESPlugIn\\iMESPlugIn.csproj + SccProjectName4 = iMESPlugIn + SccAuxPath4 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath4 = iMESPlugIn + SccProvider4 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName5 = iMESDataObject\\DataObjectCore.csproj + SccProjectName5 = iMESDataObject + SccAuxPath5 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath5 = iMESDataObject + SccProvider5 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName6 = iMESProjectBase\\iMESProjectBase.csproj + SccProjectName6 = iMESProjectBase + SccAuxPath6 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath6 = iMESProjectBase + SccProvider6 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName7 = iMESException\\iMESException\\iMESException.vbproj + SccProjectName7 = iMESException/iMESException + SccAuxPath7 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath7 = iMESException\\iMESException + SccProvider7 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName8 = iMESConst\\iMESConst.csproj + SccProjectName8 = iMESConst + SccAuxPath8 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath8 = iMESConst + SccProvider8 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName9 = iMESComSubroutine\\iMESComSubroutine.csproj + SccProjectName9 = iMESComSubroutine + SccAuxPath9 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath9 = iMESComSubroutine + SccProvider9 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName10 = iMESChart_HtmlHandler\\iMESChart_HtmlHandler\\iMESChart_HtmlHandler.csproj + SccProjectName10 = iMESChart_HtmlHandler/iMESChart_HtmlHandler + SccAuxPath10 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath10 = iMESChart_HtmlHandler\\iMESChart_HtmlHandler + SccProvider10 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + EndGlobalSection +EndGlobal diff --git a/iMES_Base/iMESComp.sln b/iMES_Base/iMESComp.sln new file mode 100644 index 0000000..5a2f6cf --- /dev/null +++ b/iMES_Base/iMESComp.sln @@ -0,0 +1,243 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESBarChart", "iMESBarChart\iMESBarChart\iMESBarChart.vbproj", "{A0EDFB97-6656-49AB-844F-F4404D308E32}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESChart", "iMESChart\iMESChart\iMESChart.csproj", "{84A741BE-3D4C-4103-96A7-65230465BB07}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "winAutoLogout", "iMESClientHandler\iMESAutoLogOut\winAutoLogout.vbproj", "{8010893A-052C-4CCE-842A-88F6F5D38007}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESClientHandler", "iMESClientHandler\iMESClientHandler\iMESClientHandler.vbproj", "{5818F1C8-377D-4721-BD05-3BA44FC0D5CC}" + ProjectSection(ProjectDependencies) = postProject + {8010893A-052C-4CCE-842A-88F6F5D38007} = {8010893A-052C-4CCE-842A-88F6F5D38007} + EndProjectSection +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESExceptionManager", "iMESException\iMESExceptionManager\iMESExceptionManager.vbproj", "{101C7640-9970-4AB6-9F25-E4784A583490}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESGPIBUtil", "iMESGPIB7723\iMESGPIBUtil\iMESGPIBUtil.vbproj", "{3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESLineChart", "iMESLineChart\iMESLineChart\iMESLineChart.vbproj", "{B83EA107-2D34-40B4-A6F2-FEF96C663E1B}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESMainMenu", "iMESMainMenu\iMESMainMenu\iMESMainMenu.vbproj", "{C173044B-EEA6-4673-A67E-DF35D5575210}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESOnlineControlChart", "iMESOnlineControlChart\iMESOnlineControlChart\iMESOnlineControlChart.vbproj", "{251A218A-0FAB-40F5-9B4F-375F5952541C}" + ProjectSection(ProjectDependencies) = postProject + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B} = {B83EA107-2D34-40B4-A6F2-FEF96C663E1B} + {CC38372D-05A8-4128-81DA-6090DF73B96A} = {CC38372D-05A8-4128-81DA-6090DF73B96A} + {101C7640-9970-4AB6-9F25-E4784A583490} = {101C7640-9970-4AB6-9F25-E4784A583490} + {C173044B-EEA6-4673-A67E-DF35D5575210} = {C173044B-EEA6-4673-A67E-DF35D5575210} + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D} = {003B12AD-E5C6-4A34-B2F8-87DB82F9609D} + EndProjectSection +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESRS232", "iMESRS232\iMESRS232\iMESRS232.vbproj", "{42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESUltraGrid", "iMESUltraGrid\iMESUltraGrid\iMESUltraGrid.vbproj", "{003B12AD-E5C6-4A34-B2F8-87DB82F9609D}" +EndProject +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "iMESWinFormUserControl", "iMESWinFormUserControl\iMESWinFormUserControl\iMESWinFormUserControl.vbproj", "{CC38372D-05A8-4128-81DA-6090DF73B96A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESWizards", "iMESWizards\iMESWizards\iMESWizards.csproj", "{DCF08909-AC8C-4E8D-A868-F54D5B888E43}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iMESXMLFlow", "iMESXMLFlow\iMESXMLFlow\iMESXMLFlow.csproj", "{FA7C4145-C17F-48E9-BABF-78CD521FC9B5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Debug|x86.ActiveCfg = Debug|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Debug|x86.Build.0 = Debug|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Release|Any CPU.Build.0 = Release|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Release|x86.ActiveCfg = Release|Any CPU + {A0EDFB97-6656-49AB-844F-F4404D308E32}.Release|x86.Build.0 = Release|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Debug|Any CPU.ActiveCfg = Debug|x86 + {84A741BE-3D4C-4103-96A7-65230465BB07}.Debug|Any CPU.Build.0 = Debug|x86 + {84A741BE-3D4C-4103-96A7-65230465BB07}.Debug|x86.ActiveCfg = Debug|x86 + {84A741BE-3D4C-4103-96A7-65230465BB07}.Debug|x86.Build.0 = Debug|x86 + {84A741BE-3D4C-4103-96A7-65230465BB07}.Release|Any CPU.ActiveCfg = Release|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Release|Any CPU.Build.0 = Release|Any CPU + {84A741BE-3D4C-4103-96A7-65230465BB07}.Release|x86.ActiveCfg = Release|x86 + {84A741BE-3D4C-4103-96A7-65230465BB07}.Release|x86.Build.0 = Release|x86 + {8010893A-052C-4CCE-842A-88F6F5D38007}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Debug|x86.ActiveCfg = Debug|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Debug|x86.Build.0 = Debug|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Release|Any CPU.Build.0 = Release|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Release|x86.ActiveCfg = Release|Any CPU + {8010893A-052C-4CCE-842A-88F6F5D38007}.Release|x86.Build.0 = Release|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Debug|x86.ActiveCfg = Debug|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Debug|x86.Build.0 = Debug|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Release|Any CPU.Build.0 = Release|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Release|x86.ActiveCfg = Release|Any CPU + {5818F1C8-377D-4721-BD05-3BA44FC0D5CC}.Release|x86.Build.0 = Release|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Debug|Any CPU.Build.0 = Debug|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Debug|x86.ActiveCfg = Debug|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Debug|x86.Build.0 = Debug|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Release|Any CPU.ActiveCfg = Release|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Release|Any CPU.Build.0 = Release|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Release|x86.ActiveCfg = Release|Any CPU + {101C7640-9970-4AB6-9F25-E4784A583490}.Release|x86.Build.0 = Release|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Debug|x86.ActiveCfg = Debug|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Debug|x86.Build.0 = Debug|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Release|Any CPU.Build.0 = Release|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Release|x86.ActiveCfg = Release|Any CPU + {3D97ECCF-DF61-4EE2-BE7C-C1D10C306719}.Release|x86.Build.0 = Release|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Debug|x86.ActiveCfg = Debug|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Debug|x86.Build.0 = Debug|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Release|Any CPU.Build.0 = Release|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Release|x86.ActiveCfg = Release|Any CPU + {B83EA107-2D34-40B4-A6F2-FEF96C663E1B}.Release|x86.Build.0 = Release|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Debug|x86.ActiveCfg = Debug|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Debug|x86.Build.0 = Debug|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Release|Any CPU.Build.0 = Release|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Release|x86.ActiveCfg = Release|Any CPU + {C173044B-EEA6-4673-A67E-DF35D5575210}.Release|x86.Build.0 = Release|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Debug|x86.ActiveCfg = Debug|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Debug|x86.Build.0 = Debug|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Release|Any CPU.Build.0 = Release|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Release|x86.ActiveCfg = Release|Any CPU + {251A218A-0FAB-40F5-9B4F-375F5952541C}.Release|x86.Build.0 = Release|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Debug|x86.ActiveCfg = Debug|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Debug|x86.Build.0 = Debug|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Release|Any CPU.Build.0 = Release|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Release|x86.ActiveCfg = Release|Any CPU + {42E1B46D-4E4F-4D94-BB8F-4A0F68FDA6A9}.Release|x86.Build.0 = Release|Any CPU + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Debug|Any CPU.ActiveCfg = Debug|x86 + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Debug|Any CPU.Build.0 = Debug|x86 + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Debug|x86.ActiveCfg = Debug|Any CPU + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Debug|x86.Build.0 = Debug|Any CPU + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Release|Any CPU.Build.0 = Release|Any CPU + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Release|x86.ActiveCfg = Release|Any CPU + {003B12AD-E5C6-4A34-B2F8-87DB82F9609D}.Release|x86.Build.0 = Release|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Debug|x86.ActiveCfg = Debug|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Debug|x86.Build.0 = Debug|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Release|Any CPU.Build.0 = Release|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Release|x86.ActiveCfg = Release|Any CPU + {CC38372D-05A8-4128-81DA-6090DF73B96A}.Release|x86.Build.0 = Release|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Debug|x86.ActiveCfg = Debug|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Debug|x86.Build.0 = Debug|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Release|Any CPU.Build.0 = Release|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Release|x86.ActiveCfg = Release|Any CPU + {DCF08909-AC8C-4E8D-A868-F54D5B888E43}.Release|x86.Build.0 = Release|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Debug|x86.ActiveCfg = Debug|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Debug|x86.Build.0 = Debug|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Release|Any CPU.Build.0 = Release|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Release|x86.ActiveCfg = Release|Any CPU + {FA7C4145-C17F-48E9-BABF-78CD521FC9B5}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(TeamFoundationVersionControl) = preSolution + SccNumberOfProjects = 14 + SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccTeamFoundationServer = http://tfs.imestech.com:8080/tfs/messeries6 + SccProjectUniqueName0 = iMESBarChart\\iMESBarChart\\iMESBarChart.vbproj + SccProjectName0 = iMESBarChart/iMESBarChart + SccAuxPath0 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath0 = iMESBarChart\\iMESBarChart + SccProvider0 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName1 = iMESChart\\iMESChart\\iMESChart.csproj + SccProjectName1 = iMESChart/iMESChart + SccAuxPath1 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath1 = iMESChart\\iMESChart + SccProvider1 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName2 = iMESClientHandler\\iMESAutoLogOut\\winAutoLogout.vbproj + SccProjectName2 = iMESClientHandler/iMESAutoLogOut + SccAuxPath2 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath2 = iMESClientHandler\\iMESAutoLogOut + SccProvider2 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName3 = iMESClientHandler\\iMESClientHandler\\iMESClientHandler.vbproj + SccProjectName3 = iMESClientHandler/iMESClientHandler + SccAuxPath3 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath3 = iMESClientHandler\\iMESClientHandler + SccProvider3 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName4 = iMESException\\iMESExceptionManager\\iMESExceptionManager.vbproj + SccProjectName4 = iMESException/iMESExceptionManager + SccAuxPath4 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath4 = iMESException\\iMESExceptionManager + SccProvider4 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName5 = iMESGPIB7723\\iMESGPIBUtil\\iMESGPIBUtil.vbproj + SccProjectName5 = iMESGPIB7723/iMESGPIBUtil + SccAuxPath5 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath5 = iMESGPIB7723\\iMESGPIBUtil + SccProvider5 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName6 = iMESLineChart\\iMESLineChart\\iMESLineChart.vbproj + SccProjectName6 = iMESLineChart/iMESLineChart + SccAuxPath6 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath6 = iMESLineChart\\iMESLineChart + SccProvider6 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName7 = iMESMainMenu\\iMESMainMenu\\iMESMainMenu.vbproj + SccProjectName7 = iMESMainMenu/iMESMainMenu + SccAuxPath7 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath7 = iMESMainMenu\\iMESMainMenu + SccProvider7 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName8 = iMESOnlineControlChart\\iMESOnlineControlChart\\iMESOnlineControlChart.vbproj + SccProjectName8 = iMESOnlineControlChart/iMESOnlineControlChart + SccAuxPath8 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath8 = iMESOnlineControlChart\\iMESOnlineControlChart + SccProvider8 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName9 = iMESRS232\\iMESRS232\\iMESRS232.vbproj + SccProjectName9 = iMESRS232/iMESRS232 + SccAuxPath9 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath9 = iMESRS232\\iMESRS232 + SccProvider9 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName10 = iMESUltraGrid\\iMESUltraGrid\\iMESUltraGrid.vbproj + SccProjectName10 = iMESUltraGrid/iMESUltraGrid + SccAuxPath10 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath10 = iMESUltraGrid\\iMESUltraGrid + SccProvider10 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName11 = iMESWinFormUserControl\\iMESWinFormUserControl\\iMESWinFormUserControl.vbproj + SccProjectName11 = iMESWinFormUserControl/iMESWinFormUserControl + SccAuxPath11 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath11 = iMESWinFormUserControl\\iMESWinFormUserControl + SccProvider11 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName12 = iMESWizards\\iMESWizards\\iMESWizards.csproj + SccProjectName12 = iMESWizards/iMESWizards + SccAuxPath12 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath12 = iMESWizards\\iMESWizards + SccProvider12 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + SccProjectUniqueName13 = iMESXMLFlow\\iMESXMLFlow\\iMESXMLFlow.csproj + SccProjectName13 = iMESXMLFlow/iMESXMLFlow + SccAuxPath13 = http://tfs.imestech.com:8080/tfs/messeries6 + SccLocalPath13 = iMESXMLFlow\\iMESXMLFlow + SccProvider13 = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} + EndGlobalSection +EndGlobal diff --git a/iMES_PAD/app.metadata b/iMES_PAD/app.metadata new file mode 100644 index 0000000..d8ce306 --- /dev/null +++ b/iMES_PAD/app.metadata @@ -0,0 +1,4 @@ +{ + "applicationId": "dca15348-80a9-42e3-b47f-4e9390b58a01", + "version": "1.0.0.1" +} \ No newline at end of file diff --git a/iMES_PAD/index.html b/iMES_PAD/index.html new file mode 100644 index 0000000..75ce5f0 --- /dev/null +++ b/iMES_PAD/index.html @@ -0,0 +1,64 @@ + + + + + + + + PAD + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

+
+
+
+ + +
+ +
+
+
+ +
+ + + diff --git a/iMES_PAD/startup.html b/iMES_PAD/startup.html new file mode 100644 index 0000000..2d368f7 --- /dev/null +++ b/iMES_PAD/startup.html @@ -0,0 +1,195 @@ + + + + + + + + + Update... + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/iMES_PAD/startup.js b/iMES_PAD/startup.js new file mode 100644 index 0000000..fd21982 --- /dev/null +++ b/iMES_PAD/startup.js @@ -0,0 +1,947 @@ +var window, platform, log, servicePlatform, win, isDebug = false, isFull; + +if ($(window).width() < 1024) { + var scale = Math.round($(window).width() / 1024 * 10) / 10; + try { + // document.getElementsByName('viewport')[0].setAttribute('content','user-scalable=no, initial-scale='+scale+', maximum-scale='+scale+', minimum-scale='+scale+',target-densitydpi=device-dpi'); + // 20200730 modify by WeiTing for M#72479 - 針對螢幕解析度過小的裝置,縮小畫面比例。 + if (+(scale) < 0.7) { + scale = 0.7; // 0.8 以下比例過小,所以最小一律為 0.8 + } + document.getElementsByTagName('style')[0].innerHTML += "html, body{ zoom:" + scale + "; }"; + } catch (e) { } +} + +if (typeof cordova === 'undefined') { + //判斷目前是使用NW.js 還是electron + try { + try { + + var remote = nodeRequire('electron').remote; + window = win = remote.getCurrentWindow(); + var appVersion = remote.app.getVersion(); + if (appVersion != '6.0.1') { + //win.setFullScreen(false); + win.setMinimumSize(1024, 768); + win.setSize(1024, 768); + win.center(); + win.setResizable(false); + win.setMaximizable(false); + isFull = true; + } + + platform = 'electron'; + } catch (e) { + window = win = nodeRequire('nw.gui').Window.get(); + isFull = true; + platform = 'nw'; + } + } catch (e) { + //platform = 'web'; + } + //網頁時的啟動 + angular.element().ready(startup); +} else { + //裝置上運行時的啟動 + document.addEventListener("deviceready", function () { + try { + //設定全螢幕 + AndroidFullScreen.immersiveMode(function () { + console.info("It worked!"); + }, function (error) { + console.error(error); + }); + //綁定橫向螢幕 + screen.lockOrientation('landscape'); + //關閉狀態列 + StatusBar.hide(); + navigator.splashscreen.hide(); + } catch (e) { }; + startup(); + }, false); +} + +function startup() { + init(); + var domElement = document.querySelector('body'); + angular.bootstrap(domElement, ["update"]); +} + +function parseParamsToConfig(config) { + if (platform == 'electron' || platform == 'nw') { + try { + var outside_params = []; + var remote; + if (platform == 'electron') { + remote = nodeRequire('electron').remote; + outside_params = remote.process.argv; + } else if (platform == 'nw') { + outside_params = nodeRequire('nw.gui').App.argv; + } + + //20200929 雋辰,透過sc開啟,處理參數 參數格式:imes:-params + if (outside_params && outside_params.length == 2) { + if (outside_params[1].indexOf('imes:') == 0) { + outside_params = outside_params[1].replace('imes:', '').split('&'); + } + } + + for (var index in outside_params) { + var param = outside_params[index]; + if (param.indexOf('-params?') == 0) { + var paramArray = param.replace('-params?', '').split(';'); + for (var index_y in paramArray) { + var keyValue = paramArray[index_y].split('='); + if (keyValue[0] == 'ip') { + //20201125 雋辰,新增選擇DNS/IP + var tmp = keyValue[1].split('.'); + var isIP = false , isNum = true; + for (var i = 0; i < tmp.length; i++) { + if (isNaN(new Number(tmp[i]))) { + isNum = false; + break; + } + } + isIP = tmp.length == 4 && isNum; + if (isIP) + { + config.setting.DNSMode = false; + config.server.ip = keyValue[1]; + } + else + { + config.setting.DNSMode = true; + config.server.DNS = keyValue[1]; + } + + } + if (keyValue[0] == 'port') { + config.server.port = keyValue[1]; + } + if (keyValue[0] == 'name') { + config.server.name = keyValue[1]; + } + if (keyValue[0] == 'eainame') { + config.server.eainame = keyValue[1]; + } + if (keyValue[0] == 'env') { + //20220826,13871,0118013: 【先之科】PAD更新sop修改功能后测试错误提示 + try { + if (config.serverList && config.serverList.hasOwnProperty(keyValue[1])) { + config.setting.environment = keyValue[1]; + config.server.name = config.serverList[keyValue[1]].name; + config.server.eainame = config.serverList[keyValue[1]].eainame; + config.server.scname = config.serverList[keyValue[1]].scname; + config.server.timeout = config.serverList[keyValue[1]].timeout; + if (typeof (Storage) !== "undefined") { + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + } + } + //config.setting.environment = keyValue[1]; + } catch (e) { + + } + } + } + } else if (param.indexOf('-debug') == 0) { + if (platform == 'electron') { + isDebug = true; + remote.getCurrentWebContents().openDevTools(); + } else if (platform == 'nw') { + isDebug = true; + win.showDevTools(); + } + } else if (param.indexOf('-online') == 0) { + config.cache.offline = false; + } else if (param.indexOf('-noneFullScreen') == 0) { + config.setting.fullScreen = 'N' + } + } + } catch (e) { + console.log(e); + } + } + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + localStorage.setItem(config.appName + "_setting", JSON.stringify(config.setting)); + return config; +} + +function fullScreen(config) { + if (platform == 'electron') { + try { + const remote = nodeRequire('electron').remote; + var version = remote.app.getVersion(); + if (version != '6.0.1') { + win = remote.getCurrentWindow(); + if (config.setting.fullScreen == 'Y') { + win.setFullScreen(true); + } else { + win.setMinimumSize(1024, 768); + win.setSize(1024, 768); + win.center(); + win.setResizable(false); + win.setMaximizable(false); + isFull = true; + } + } + } catch (e) { } + } +} + +function init() { + var app = angular.module("update", ['pascalprecht.translate', 'ngMaterialLite', 'angularCSS']); + app.config(["$httpProvider", "$provide", "$translateProvider", + function ($httpProvider, $provide, $translateProvider) { + $translateProvider.useStaticFilesLoader({ prefix: 'module/system/localization/localization-', suffix: '.json' }); + $translateProvider.preferredLanguage('zh_TW'); + } + ]); + app.value('config', {}); + app.controller("update_controller", ["$scope", "$timeout", "$http", "$mdDialog", "config", "$translate", "$filter", function ($scope, $timeout, $http, $mdDialog, config, $translate, $filter) { + var newAppVersion; + $scope.mode = ''; + $scope.isFull = isFull; + + //20201023 雋辰,新增WS設定 + $scope.showWS = false; + var showWSClickCount = 0; + + $scope.init = function () { + //log.innerHTML = '...'; + log = document.getElementById('update_log'); + log.innerHTML = '...'; + downloadConfig(); + + } + + $scope.close = function () { + window.close(); + } + + $scope.loadServerList = function () { + var serverList = []; + if (config.serverList) { + for (var env_name in config.serverList) { + serverList.push({ code: env_name, label: $filter('translate')('Login.env.' + env_name), server: config.serverList[env_name] }); + } + } + showSelect({ + title: $filter('translate')('Login.ServerList'), + label: 'label', + code: 'code', + selectCode: '', + list: serverList, + confirm: function (item, dialog) { + dialog.hide(); + config.setting.environment = $scope.environment = item.code; + config.server.name = item.server.name; + config.server.eainame = item.server.eainame; + //20220419 13871,增加sc設定 + config.server.scname = item.server.scname; + if (typeof (Storage) !== "undefined") { + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + localStorage.setItem(config.appName + "_setting", JSON.stringify(config.setting)); + //localStorage.setItem(config.appName + "_lang", $scope.currentUse); + } + } + }); + } + + $scope.checkNecessaryInformation = function () { + if (config.setting && config.setting.deviceName && config.setting.deviceName.length > 0) { + return false; + } + return true; + } + + //20201023 雋辰,顯示/隱藏WS設定 + $scope.showWSClick = function () { + showWSClickCount++; + if (showWSClickCount >= 5) { + showWSClickCount = 0; + $scope.showWS = !$scope.showWS; + } + } + + function showSelect(options) { + $mdDialog.dialog('JSplugins/angular-material-lite/template/radioList.tmp.html', function (dialog) { + //20210320 雋辰 , 增加額外功能按鈕 + dialog.EXECUTE_FUNCTION = options.EXECUTE_FUNCTION; + dialog.EXECUTE_FUNCTION_BTN_IMG_URL = options.EXECUTE_FUNCTION_BTN_IMG_URL; + + return { + //20220419 13871同步common.js,$rootScope.showSelect + title: options.title || $filter('translate')('common.msg.plz_select'), + label: options.label || 'label', + sub_label: options.sub_label, //2021/02/26 傳入subLabel + order: options.order || options.label, + selectCode: options.selectCode, + + labelOutput: function (item) { + if (typeof (options.label) === 'function') { + return options.label(item); + } else { + return item[dialog.label]; + } + }, + code: options.code, + valueOutput: function (item) { + if (typeof (options.code) === 'function') { + return options.code(item); + } else { + return item[dialog.code]; + } + }, + back: function () { + this.hide(); + }, + itemList: options.list, + + search: function (itemList, filter_string, strkey) { + + var key = strkey; + var obj = { + [key]: filter_string + }; + + return filter_string != "" ? $filter('filter')(itemList, obj): itemList; + + }, + + itemClick: function (item, event) { + if (options.confirm) + options.confirm(item, this); + }, + itemCancel: function () { + dialog.hide(); + if (options.cancel) + options.cancel(this); + }, + isCancel: options.cancel != undefined, + background: { + click: function() { + dialog.hide(); + } + }, + //20210320 雋辰 , 增加額外功能按鈕,需要動態變更原資料寬度 + checkItemWidth: function () { + if (dialog.EXECUTE_FUNCTION) + return { float: 'left', position: 'relative', width: 'calc(100% - 68px)' }; + else + return { float: 'left', position: 'relative', width: '100%' }; + } + } + }); + } + + function downloadConfig() { + $http.post('config/config.json').then(function (res) { + angular.merge(config, res.data); + if (typeof (Storage) !== "undefined") { + //20201023 雋辰,新增WS設定 + angular.merge(config.serverList, JSON.parse(localStorage.getItem(config.appName + "_serverList"))); + angular.merge(config.server, JSON.parse(localStorage.getItem(config.appName + "_server"))); + angular.merge(config.setting, JSON.parse(localStorage.getItem(config.appName + "_setting"))); + //config.server.name = 'mobilemiddleware'; + //config.server.name = 'MES_Production_MESws_STD'; + //config.server.eainame = 'MES_Production_MESws_EAI'; + $scope.environment = config.setting.environment; + + if (!config.setting.fullScreen) { + config.setting.fullScreen = 'N'; + } + + //載入Server設定 + config.server = angular.merge({}, config.serverList[config.setting.environment]);//取出預設的Server資訊 + var LocalServerConfig = JSON.parse(localStorage.getItem(config.appName + '_server'));//取出本地端儲存的Server資訊 + angular.merge(config.server, LocalServerConfig); + if (config.server.name == '') { + config.server.name = 'MES_Production_MESws_STD'; + } + if (config.server.eainame == '') { + config.server.eainame = 'MES_Production_MESws_EAI'; + } + + parseParamsToConfig(config); + //20220826,13871,0118013: 【先之科】PAD更新sop修改功能后测试错误提示 + $scope.environment = config.setting.environment; + + if (platform == 'electron') { win.setFullScreen(false); } + else if (platform == 'nw') { win.leaveFullscreen(); } + + var temp = config.server.ip.split('.'); + if (temp.length == 4) { + $scope.serverIp = temp; + } else { + $scope.serverIp = ["0", "0", "0", "0"]; + } + $translate.use(config.setting.lang); + if (window.cordova) { + //20201223 雋辰,修正APK版初始版號被暫存值(空值)蓋掉 + var storageVer = localStorage.getItem(config.appName + '_version'); + if (storageVer && storageVer != '') + config.appVersion = storageVer; + } + $scope.config = config; + + } + angular.element(document.querySelector('#update_controller')).css('display', 'block'); + if (window.nodeRequire) { + $scope.isElectron = true; + checkUpdate(); + } else if (window.cordova) { + try { + navigator.splashscreen.hide(); + } catch (e) { }; + $timeout(function () { + checkUpdate(); + }); + } else { + changeMode('setting'); + } + }); + } + + function checkUpdate() { + //20201125 雋辰,新增選擇DNS/IP + var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip; + + //2021/09/13 0099745: [嘉聯益] KMI平板開啟異常 + if (ip == undefined) { + ip = ""; + } + + if (config.cache.offline) { + reDirect('index.html'); + } else if ((!config.setting.DNSMode && config.server.ip != '0.0.0.0') || + (config.setting.DNSMode && ip.length > 0) ) { + log.innerHTML = $filter('translate')('update.msg.checking_update');//檢查更新中... + + sendToMESSrv_plain({ + uri: 'tcMES_LiveUpdate.clsLiveUpdate.LiveUpdate', + content: { + applicationId: config.applicationId + }, + success: function (data) { + data = JSON.parse(data); + if (data.Result != 'fail') { + //console.log(data.version); + newAppVersion = data.version; + servicePlatform = data.platform; + + if (data.version == config.appVersion || data.version == '0.0.0.0' || data.version == '') { + checkUpdateExist(); + } else { + if (data.url.indexOf('http://') == -1) { + data.url = 'http://' + ip + ':' + config.server.port + "/" + data.url; + } + downloadZip(data.url); + } + } else { + log.innerHTML = data.SysMsg; + } + } + }); + } else { + //一開始IP還未設定的時候 + changeMode('setting'); + } + } + + //檢查是否已經更新過 + function checkUpdateExist() { + if (window.resolveLocalFileSystemURL) { + window.resolveLocalFileSystemURL(cordova.file.dataDirectory + 'update', function (updateFolder) { + reDirect(updateFolder.toURL() + '/index.html'); + }, function () { + reDirect('index.html'); + }); + } else { + reDirect('index.html'); + } + } + + //download ZIP file + function downloadZip(url) { + log.innerHTML = $filter('translate')('update.msg.update_download_start');//开始下载更新... + try { + var zipDistUrl = cordova.file.dataDirectory; + var ft = new FileTransfer(); + ft.onprogress = function (progressEvent) { + if (progressEvent.lengthComputable) { + //更新下載中 + log.innerHTML = $filter('translate')('update.msg.update_downloading') + Math.floor(progressEvent.loaded / progressEvent.total * 100) + '%'; + } + }; + ft.download(url, zipDistUrl + 'update.zip', + function (r) { + log.innerHTML = $filter('translate')('update.msg.updating');//程式更新中... + if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) { + unZIPforIOS(zipDistUrl); + } else { + prepareUnZip(zipDistUrl); + } + }, function (error) { + log.innerHTML = $filter('translate')('update.msg.cant_download');//無法下載更新,請確認伺服器連線是否正常; + changeMode('setting'); + } + ); + } catch (e) { + if (window.nodeRequire) { + var data = { + url: url, + method: 'GET', + type: "application/octet-stream", + responseType: 'arraybuffer' + }, + request = nodeRequire('request'), + progress = nodeRequire('request-progress'), + fs = nodeRequire('fs'), + AppPath; + const Zip = nodeRequire('adm-zip-electron'); + + log.innerHTML = $filter('translate')('update.msg.updating'); + if (platform == 'electron') { + AppPath = nodeRequire('electron').remote.app.getAppPath() + '\\'; + } else { + var nwDir = nodeRequire('path').dirname(process.execPath); + AppPath = nwDir + '\\package.nw\\'; + } + + var updateFile = AppPath + 'update.zip'; + var tempFile = fs.createWriteStream(updateFile); + tempFile.on('finish', function () { + tempFile.close(function () { + try { + log.innerHTML = $filter('translate')('update.msg.updating');//程式更新中... + var zip = new Zip(updateFile); + zip.extractAllTo(AppPath + 'www\\', true); + clearUpdate(AppPath, 'update.zip', function () { + reDirect('index.html'); + }); + + } catch (e) { + log.innerHTML = $filter('translate')('update.msg.zip_cant_download') + '
' + e;//無法下載更新,更新用的檔案不存在,請確認伺服器連線資訊是否正確 + changeMode('setting'); + } + }); + }); + + var request = request(url, function (error, response, body) { + if (error) { + log.innerHTML = $filter('translate')('update.msg.zip_cant_download');//無法下載更新,更新用的檔案不存在,請確認伺服器連線資訊是否正確 + changeMode('setting'); + } else { + log.innerHTML = $filter('translate')('update.msg.update_downloading') + '100%'; + } + }); + request.pipe(tempFile); + progress(request, { + throttle: 200, // Throttle the progress event to 2000ms, defaults to 1000ms + // delay: 1000, // Only start to emit after 1000ms delay, defaults to 0ms + // lengthHeader: 'x-transfer-length' // Length header to use, defaults to content-length + }) + .on('progress', function (state) { + //更新下載中 + log.innerHTML = $filter('translate')('update.msg.update_downloading') + + (Math.round(state.percent * 100)) + '%'; + }) + .on('error', function (err) { + log.innerHTML = $filter('translate')('update.msg.zip_cant_download');//無法下載更新,更新用的檔案不存在,請確認伺服器連線資訊是否正確 + changeMode('setting'); + }); + } else { + reDirect('index.html'); + } + } + } + + var g_zipDistUrl; + function prepareUnZip(zipDistUrl) { + var srcUrl = cordova.file.applicationDirectory + 'www/'; + g_zipDistUrl = zipDistUrl; + window.resolveLocalFileSystemURL(srcUrl, + function (directoryEntry) { + window.resolveLocalFileSystemURL(zipDistUrl, function (dstDirectoryEntry) { + dstDirectoryEntry.getDirectory('update', { create: true }, function (updateDirEntry) { + log.innerHTML = $filter('translate')('update.msg.prepare_updat'); //正在準備更新程式... + //get file cordova.js, cordova_plugins.js, plugins + directoryEntry.getFile('cordova.js', {}, function (fileEntry) { + //copy cordova.js + fileEntry.copyTo(updateDirEntry, 'cordova.js', function () { + directoryEntry.getFile('cordova_plugins.js', {}, function (fileEntry) { + //copy cordova_plugins.js + fileEntry.copyTo(updateDirEntry, 'cordova_plugins.js', function () { + directoryEntry.getDirectory('plugins', {}, function (pluginsDirEntry) { + //copy plugins + pluginsDirEntry.copyTo(updateDirEntry, 'plugins', function () { + directoryEntry.getDirectory('cordova-js-src', {}, function (pluginsDirEntry) { + //copy cordova-js-src + pluginsDirEntry.copyTo(updateDirEntry, 'cordova-js-src', function () { + directoryEntry.getDirectory('scripts', {}, function (pluginsDirEntry) { + //copy scripts + pluginsDirEntry.copyTo(updateDirEntry, 'scripts', function () { + unZIPforCordova(zipDistUrl); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, getDirectoryError); + }, getDirectoryError); + }, getDirectoryError + ); + } + + function copyfileError(error) { + if (error.code == 9 || error.code == 12) { + unZIPforCordova(g_zipDistUrl); + } else { + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele') + ":" + error.code;//暫存檔案刪除失敗,請重新下載 + changeMode('setting'); + } + } + + function unZIPforCordova(zipDistUrl) { + log.innerHTML = $filter('translate')('update.msg.updating');//程式更新中... + var dstDir = zipDistUrl + 'update' + zip.unzip(zipDistUrl + 'update.zip', dstDir, + function (result) { + if (result == 0) { + clearUpdate(zipDistUrl, 'update.zip', function () { + //localStorage.setItem(config.appName + "_version", newAppVersion); + reDirect(zipDistUrl + 'update/index.html'); + }); + } else { + log.innerHTML = $filter('translate')('update.msg.zip_server_connect');//'更新檔解析失敗,請重新下載'; + changeMode('setting'); + } + }, + function (progressEvent) { + log.innerHTML = $filter('translate')('update.msg.updating') + Math.round((progressEvent.loaded / progressEvent.total) * 100) + '%'; + } + ); + } + + function unZIPforIOS(zipDistUrl) { + var srcUrl = cordova.file.applicationDirectory + 'www/'; + var dstDir = zipDistUrl + 'update' + window.resolveLocalFileSystemURL( + srcUrl, + function (directoryEntry) { + window.resolveLocalFileSystemURL(zipDistUrl, function (dstDirectoryEntry) { + log.innerHTML = $filter('translate')('update.msg.prepare_updat'); //正在準備更新程式... + directoryEntry.copyTo(dstDirectoryEntry, 'update', function () { + zip.unzip(zipDistUrl + 'update.zip', dstDir, + function (result) { + if (result == 0) { + clearUpdate(zipDistUrl, 'update.zip', function () { + //localStorage.setItem(config.appName + "_version", newAppVersion); + reDirect(zipDistUrl + 'update/index.html'); + }); + } else { + log.innerHTML = $filter('translate')('update.msg.zip_server_connect');//'更新檔解析失敗,請重新下載'; + changeMode('setting'); + } + }, + function (progressEvent) { + log.innerHTML = $filter('translate')('update.msg.updating') + Math.round((progressEvent.loaded / progressEvent.total) * 100) + '%'; + } + ); + }, function (error) { + if (error.code == 9 || error.code == 12) { + log.innerHTML = $filter('translate')('update.msg.delete_temp_file');//正在刪除暫存檔案... + resolveLocalFileSystemURL(dstDir, function (dstDirectory) { + dstDirectory.removeRecursively(function () { + unZIPforCordova(zipDistUrl); + }, function (error) { + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele');//暫存檔案刪除失敗,請重新下載 + changeMode('setting'); + }); + }, getDirectoryError); + } else { + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele') + ":" + error.code;//暫存檔案刪除失敗,請重新下載 + changeMode('setting'); + } + }); + }, getDirectoryError); + + }, + getDirectoryError + ); + } + + function getDirectoryError(error) { + log.innerHTML = "ERROR" + ":" + error.code;//暫存檔案刪除失敗,請重新下載 + changeMode('setting'); + } + + //delete update.zip file + function clearUpdate(url, fileName, feedback) { + try { + resolveLocalFileSystemURL(url, function (dir) { + dir.getFile(fileName, { create: false }, function (fileEntry) { + fileEntry.remove(function () { + if (feedback) + feedback(); + // The file has been removed succesfully + }, function (error) { + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele');//暫存檔案刪除失敗 + if (feedback) + feedback(); + }, function () { + log.innerHTML = $filter('translate')('update.msg.temp_file_not_exist');//暫存檔案不存在 + if (feedback) + feedback(); + }); + }); + }); + } catch (e) { + nodeRequire('fs').unlink(url + '\\' + fileName, function (error) { + if (feedback) + feedback(); + }); + } + } + + function changeMode(mode) { + $timeout(function () { + $scope.mode = mode; + if (mode == 'setting') { + if (platform == 'electron') { + win.setSize(1024, 768); + win.center(); + } else if (platform == 'nw') { + win.resizeTo(1024, 768); + } + } else { + if (platform == 'electron') { + win.setSize(1024, 768); + win.center(); + } else if (platform == 'nw') { + win.resizeTo(1024, 768); + } + } + }); + } + + $scope.reCheckUpdate = function () { + config.server.ip = combineIP($scope.serverIp); + config.server.name = config.serverList[config.setting.environment].name; + config.server.eainame = config.serverList[config.setting.environment].eainame; + //20220419 13871,增加sc設定 + config.server.scname = config.serverList[config.setting.environment].scname; + + localStorage.setItem(config.appName + "_serverList", JSON.stringify(config.serverList)); + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + localStorage.setItem(config.appName + "_setting", JSON.stringify(config.setting)); + changeMode(''); + checkUpdate(); + } + + function combineIP(array) { + var totalip; + array.forEach(function (ipstring) { + if (!totalip) + totalip = ipstring; + else + totalip += "." + ipstring; + }); + return totalip; + } + + function reDirect(url, msg) { + log.innerHTML = msg || $filter('translate')('update.msg.update_complete');//程式更新完成... + //底層為Cordova 的狀態下,一旦更新完成就把新的版本號寫入localStorage + if (window.cordova && newAppVersion != '0.0.0.0') { + localStorage.setItem(config.appName + "_version", newAppVersion); + } + localStorage.setItem(config.appName + "_servicePlatform", servicePlatform); + + $timeout(function () { + if (platform == 'electron') { + createWindow(url); + } else if (platform == 'nw') { + createWindowNW(url); + } else { + document.location.href = url; + } + }, 100); + } + + function createWindow(url) { + var BrowserWindow = nodeRequire('electron').remote.BrowserWindow; + var newWin = new BrowserWindow({ + width: 1024, + minWidth: 1024, + height: 768, + minHeight: 768, + frame: false, + fullscreen: false, + fullscreenable: true, + titleBarStyle: 'customButtonsOnHover', + show: false + }); + newWin.loadURL('file://' + __dirname + '/' + url); + newWin.on('closed', function () { + newWin = null; + }); + newWin.once('ready-to-show', function () { + if (isDebug) + newWin.webContents.openDevTools(); + newWin.show(); + newWin.setFullScreen(config.setting.fullScreen == 'Y'); + win.close(); + }); + } + + function createWindowNW(url) { + var nw = nodeRequire('nw.gui'), + settings = { + position: "center", + min_width: 1024, + min_height: 768, + width: 1024, + height: 768, + resizable: true, + fullscreen: config.setting.fullScreen == 'N', + frame: false, + show: false, + icon: "icon/icon.png" + }; + nw.Window.open('www/' + url, settings, function (new_win) { + if (isDebug) + new_win.showDevTools(); + new_win.on('loaded', function () { + new_win.show(); + win.close(); + }); + }); + } + + function prepareHeader(data) { + var header = {}; + //TODO + header.Method = data.uri; + header["mds.userid"] = ''; + header["mds.password"] = ''; + header["mds.environment"] = config.setting.environment; + header["mds.language_mode"] = $translate.use(); + header["mds.computer_name"] = config.client.ip; + header["mds.sessionno"] = config.mdssessionno; + return header; + } + + function prepareContent(data) { + var content = {}; + content.CompanyID = config.setting.companyId; + content.Equipment = ''; + content = angular.merge(content, data.content); + return content; + } + + function prepareMESHeader(data) { + var header = {}; + //TODO + header["method"] = data.uri; + header["userid"] = config.cache.account || ''; + header["languagemode"] = $translate.use(); + header["computername"] = config.client.ip; + header["sessionno"] = config.mdssessionno; + return header; + } + + function sendToMESSrv_plain(sendData) { + //20201125 雋辰,新增選擇DNS/IP + var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip; + var apiurl = config.server.name + '/wsInvoke.asmx/InvokeSrv_plainjson'; + var liveupdate_url = 'http://' + ip + ':' + config.server.port + '/' + apiurl; + var header = prepareMESHeader(sendData); + + var data = { + url: liveupdate_url, + method: 'POST', + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + }, + data: { + "uri": JSON.stringify(header), + "content": JSON.stringify(sendData.content) + } + }; + if (config.server.timeout != 0) + data.timeout = config.server.timeout; + + $http(data).success(function (data, status, headers, config) { + try { + var contentData = JSON.parse(data.d); + if (contentData.Code === '0' || contentData.Code === null || contentData.code === '0' || contentData.code === null) { + if (sendData.success) + sendData.success(contentData.ResultJson); + } else { + if (sendData.error) { + sendData.error(contentData); + } else { + log.innerHTML = contentData.exception; + changeMode('setting'); + } + } + } catch (e) { + log.innerHTML = e + changeMode('setting'); + } + }).error(function (a, b, c, d) { + log.innerHTML = $filter('translate')('update.msg.cant_get_verInfo');//無法取得版本資訊 + changeMode('setting'); + }); + } + + + function send(sendData) { + var data = { + url: 'http://' + config.server.ip + ':' + config.server.port + '/mobilemiddleware/api/v1/transaction/json', + method: 'POST', + headers: { + 'Content-Type': 'application/json;charset=UTF-8' + }, + data: { + "applicationId": config.applicationId, + "uri": sendData.uri, + "headers": prepareHeader(sendData), + "cookies": [], + 'content': JSON.stringify(prepareContent(sendData)) + } + }; + if (config.server.timeout != 0) + data.timeout = config.server.timeout; + + $http(data).success(function (data, status, headers, config) { + try { + var contentData = JSON.parse(data.content); + if (contentData.IsSuccess) { + if (sendData.success) + sendData.success(contentData.Result); + } else { + if (sendData.error) { + sendData.error(contentData); + } else { + log.innerHTML = contentData.SysException; + changeMode('setting'); + } + } + } catch (e) { + log.innerHTML = e + changeMode('setting'); + } + }).error(function (a, b, c, d) { + log.innerHTML = $filter('translate')('update.msg.cant_get_verInfo');//無法取得版本資訊 + changeMode('setting'); + }); + } + }]); +}; diff --git a/iMES_PDA/app.metadata b/iMES_PDA/app.metadata new file mode 100644 index 0000000..dca1c58 --- /dev/null +++ b/iMES_PDA/app.metadata @@ -0,0 +1,4 @@ +{ + "applicationId": "dca15348-80a9-42e3-b47f-4e9390b58a01", + "version": "1.0.0.0" +} \ No newline at end of file diff --git a/iMES_PDA/index.html b/iMES_PDA/index.html new file mode 100644 index 0000000..76dde01 --- /dev/null +++ b/iMES_PDA/index.html @@ -0,0 +1,71 @@ + + + + + + + + + PDA + + + + + + + + + + + + + + + + + +
+
+
+
+

+
+
+
+
+
+ +
+ + +
+
+
+
+ +
+
+ +
+ + + + \ No newline at end of file diff --git a/iMES_PDA/startup.html b/iMES_PDA/startup.html new file mode 100644 index 0000000..43117cb --- /dev/null +++ b/iMES_PDA/startup.html @@ -0,0 +1,206 @@ + + + + + + + + Update... + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+
+
+ + +
+ + + +
+
+
+ + +
+
+ +
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+
+ + + + +
+
+ + +
+
+ +
+
+
+
+ + +
+
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+
+
+ + diff --git a/iMES_PDA/startup.js b/iMES_PDA/startup.js new file mode 100644 index 0000000..28c1400 --- /dev/null +++ b/iMES_PDA/startup.js @@ -0,0 +1,887 @@ +var window, platform, log, servicePlatform,win, isDebug = false, isFull; +if (typeof cordova === 'undefined') { + //判斷目前是使用NW.js 還是electron + try{ + try{ + var remote = nodeRequire('electron').remote; + window = win = remote.getCurrentWindow(); + var appVersion = remote.app.getVersion(); + if(appVersion != '6.0.1'){ + //win.setFullScreen(false); + win.setMinimumSize(320, 568); + win.setSize(320, 568); + win.center(); + win.setResizable(false); + win.setMaximizable(false); + isFull = true; + } + + platform = 'electron'; + } catch(e){ + window = win = nodeRequire('nw.gui').Window.get(); + isFull = true; + platform = 'nw'; + } + }catch(e){ + //platform = 'web'; + } + //網頁時的啟動 + angular.element().ready(startup); +} else { + //裝置上運行時的啟動 + document.addEventListener("deviceready", function(){ + try{ + //設定全螢幕 + AndroidFullScreen.immersiveMode(function(){ + console.info("It worked!"); + }, function(error){ + console.error(error); + }); + //綁定橫向螢幕 + screen.lockOrientation('landscape'); + //關閉狀態列 + StatusBar.hide(); + navigator.splashscreen.hide(); + } catch(e){}; + startup(); + }, false); +} + +function startup(){ + init(); + var domElement = document.querySelector('body'); + angular.bootstrap(domElement, ["update"]); +} + +function parseParamsToConfig(config){ + if(platform == 'electron' || platform == 'nw'){ + try{ + var outside_params = []; + var remote; + if(platform == 'electron'){ + remote = nodeRequire('electron').remote; + outside_params = remote.process.argv; + } else if(platform == 'nw'){ + outside_params = nodeRequire('nw.gui').App.argv; + } + for(var index in outside_params){ + var param = outside_params[index]; + if(param.indexOf('-params?') == 0){ + var paramArray = param.replace('-params?','').split(';'); + for(var index_y in paramArray){ + var keyValue = paramArray[index_y].split('='); + if(keyValue[0] == 'ip'){ + //20201125 雋辰,新增選擇DNS/IP + var tmp = keyValue[1].split('.'); + var isIP = false , isNum = true; + for (var i = 0; i < tmp.length; i++) { + if (isNaN(new Number(tmp[i]))) { + isNum = false; + break; + } + } + isIP = tmp.length == 4 && isNum; + if (isIP) + { + config.setting.DNSMode = false; + config.server.ip = keyValue[1]; + } + else + { + config.setting.DNSMode = true; + config.server.DNS = keyValue[1]; + } + + + } + if(keyValue[0] == 'port'){ + config.server.port = keyValue[1]; + } + if(keyValue[0] == 'name'){ + config.server.name = keyValue[1]; + } + if(keyValue[0] == 'eainame'){ + config.server.eainame = keyValue[1]; + } + } + } else if(param.indexOf('-debug') == 0){ + if(platform == 'electron'){ + isDebug = true; + remote.getCurrentWebContents().openDevTools(); + } else if(platform == 'nw'){ + isDebug = true; + win.showDevTools(); + } + } else if(param.indexOf('-online') == 0){ + config.cache.offline = false; + } else if(param.indexOf('-noneFullScreen') == 0){ + config.setting.fullScreen = 'N' + } + } + }catch(e){ + console.log(e); + } + } + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + return config; +} + +function fullScreen(config){ + if(platform == 'electron'){ + try { + debugger; + const remote = nodeRequire('electron').remote; + var version = remote.app.getVersion(); + if(version != '6.0.1'){ + win = remote.getCurrentWindow(); + if(config.setting.fullScreen == 'Y'){ + win.setFullScreen(true); + } else { + win.setMinimumSize(320, 568); + win.setSize(320, 568); + win.center(); + win.setResizable(false); + win.setMaximizable(false); + isFull = true; + } + } + }catch(e){} + } +} + +function init(){ + var app = angular.module("update", ['pascalprecht.translate', 'ngMaterialLite', 'angularCSS']); + app.config(["$httpProvider", "$provide", "$translateProvider", + function ($httpProvider, $provide, $translateProvider) { + $translateProvider.useStaticFilesLoader({ prefix: 'module/system/localization/localization-', suffix: '.json' }); + $translateProvider.preferredLanguage('zh_TW'); + } + ]); + app.value('config',{}); + app.controller("update_controller", ["$scope", "$timeout", "$http", "$mdDialog", "config", "$translate", "$filter", function($scope, $timeout, $http, $mdDialog, config, $translate, $filter) { + var newAppVersion; + $scope.show_screen=false; + $scope.show_update=false; + $scope.mode = ''; + $scope.isFull = isFull; + + //20201023 雋辰,新增WS設定 + $scope.showWS = false; + var showWSClickCount = 0; + + $scope.init = function(){ + //log.innerHTML = '...'; + log = document.getElementById('update_log'); + log.innerHTML = '...'; + downloadConfig(); + } + + $scope.close = function(){ + window.close(); + } + + $scope.loadServerList = function(){ + var serverList = []; + if(config.serverList){ + for(var env_name in config.serverList){ + serverList.push({code:env_name, label:$filter('translate')('mms01_user_login.env.'+env_name), server:config.serverList[env_name]}); + } + } + showSelect({ + title : $filter('translate')('mms01_user_login.ServerList'), + label : 'label', + code : 'code', + selectCode : '', + list : serverList, + confirm : function(item, dialog){ + dialog.hide(); + config.setting.environment = $scope.environment = item.code; + config.server.name = item.server.name; + config.server.eainame = item.server.eainame; + //20220419 13871,增加sc設定 + config.server.scname = item.server.scname; + if (typeof(Storage) !== "undefined") { + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + localStorage.setItem(config.appName + "_setting", JSON.stringify(config.setting)); + //localStorage.setItem(config.appName + "_lang", $scope.currentUse); + } + } + }); + } + + //20201023 雋辰,顯示/隱藏WS設定 + $scope.showWSClick = function () { + showWSClickCount++; + if (showWSClickCount >= 5) { + showWSClickCount = 0; + $scope.showWS = !$scope.showWS; + } + } + + function showSelect(options){ + $mdDialog.dialog('JSplugins/angular-material-lite/template/radioList.tmp.html', function(dialog){ + return { + title : options.title||$filter('translate')('common.msg.plz_select'), + label : options.label, + code : options.code, + order: options.order||options.label, + selectCode : options.selectCode, + back : function() { + this.hide(); + }, + itemList : options.list, + itemClick : function(item, event){ + //$translate.use(item.code); + //$scope.currentUse = item.code; + if(options.confirm) + options.confirm(item, this); + //this.hide(); + }, + itemCancel:function(){ + dialog.hide(); + if(options.cancel) + options.cancel(this); + }, + isCancel:options.cancel!=undefined + } + }); + } + + function downloadConfig(){ + $http.post('config/config.json').then(function(res){ + angular.merge(config, res.data); + if (typeof (Storage) !== "undefined") { + //20201023 雋辰,新增WS設定 + angular.merge(config.serverList, JSON.parse(localStorage.getItem(config.appName + "_serverList"))); + angular.merge(config.server, JSON.parse(localStorage.getItem(config.appName + "_server"))); + angular.merge(config.setting, JSON.parse(localStorage.getItem(config.appName + "_setting"))); + //config.server.name = 'mobilemiddleware'; + //config.server.name = 'MES_Production_MESws_STD'; + //config.server.eainame = 'MES_Production_MESws_EAI'; + $scope.environment = config.setting.environment; + + if(!config.setting.fullScreen){ + config.setting.fullScreen = 'N'; + } + + //載入Server設定 + config.server = angular.merge({}, config.serverList[config.setting.environment]);//取出預設的Server資訊 + var LocalServerConfig = JSON.parse(localStorage.getItem(config.appName + '_server'));//取出本地端儲存的Server資訊 + angular.merge(config.server, LocalServerConfig); + if(config.server.name==''){ + config.server.name = 'MES_Production_MESws_STD'; + } + if(config.server.eainame==''){ + config.server.eainame = 'MES_Production_MESws_EAI'; + } + + parseParamsToConfig(config); + if(platform == 'electron') + {win.setFullScreen(false);} + else if(platform == 'nw') + {win.leaveFullscreen();} + + var temp = config.server.ip.split('.'); + if(temp.length == 4){ + $scope.serverIp = temp; + } else { + $scope.serverIp = ["0", "0", "0", "0"]; + } + $translate.use(config.setting.lang); + if(window.cordova){ + config.appVersion = localStorage.getItem(config.appName + "_version"); + } + $scope.config = config; + + } + angular.element(document.querySelector('#update_controller')).css('display','block'); + if(window.nodeRequire){ + $scope.isElectron = true; + checkUpdate(); + } else if (window.cordova){ + try{ + navigator.splashscreen.hide(); + } catch(e){}; + $timeout(function(){ + checkUpdate(); + }); + } else { + changeMode('setting'); + } + }); + } + + function checkUpdate(){ + //20201125 雋辰,新增選擇DNS/IP + var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip; + + if(config.cache.offline){ + reDirect('index.html'); + } else if((!config.setting.DNSMode && config.server.ip != '0.0.0.0') || + (config.setting.DNSMode && ip.length > 0)){ + $scope.show_update=true; + log.innerHTML = $filter('translate')('update.msg.checking_update');//檢查更新中... + + sendToMESSrv_plain({ + uri: 'tcMES_LiveUpdate.clsLiveUpdate.LiveUpdate_PDA', + //uri: 'tcMES_LiveUpdate.clsLiveUpdate.LiveUpdate', + content : { + applicationId:config.applicationId + }, + success : function(data){ + data = JSON.parse(data); + if(data.Result != 'fail'){ + //console.log(data.version); + newAppVersion = data.version; + servicePlatform = data.platform; + + if(data.version == config.appVersion || data.version == '0.0.0.0' || data.version == ''){ + $scope.show_update=true; + checkUpdateExist(); + } else { + if(data.url.indexOf('http://')==-1){ + data.url = 'http://'+config.server.ip+':'+config.server.port+"/"+data.url; + } + $scope.show_update=true; + downloadZip(data.url); + } + } else { + log.innerHTML = data.SysMsg; + $scope.show_update=false; + } + } + }); + } else { + //一開始IP還未設定的時候 + changeMode('setting'); + } + } + + //檢查是否已經更新過 + function checkUpdateExist(){ + if(window.resolveLocalFileSystemURL){ + window.resolveLocalFileSystemURL(cordova.file.dataDirectory+'update', function(updateFolder){ + reDirect(updateFolder.toURL() + '/index.html'); + }, function(){ + reDirect('index.html'); + }); + } else { + reDirect('index.html'); + } + } + + //download ZIP file + function downloadZip(url){ + log.innerHTML = $filter('translate')('update.msg.update_download_start');//开始下载更新... + $scope.show_update=true; + try{ + var zipDistUrl = cordova.file.dataDirectory; + var ft = new FileTransfer(); + ft.onprogress = function(progressEvent) { + if (progressEvent.lengthComputable) { + //更新下載中 + log.innerHTML = $filter('translate')('update.msg.update_downloading')+Math.floor(progressEvent.loaded / progressEvent.total * 100)+'%'; + $scope.show_update=true; + } + }; + ft.download(url, zipDistUrl+'update.zip', + function(r) { + log.innerHTML = $filter('translate')('update.msg.updating');//程式更新中... + $scope.show_update=true; + if(navigator.userAgent.match(/iPhone|iPad|iPod/i)){ + unZIPforIOS(zipDistUrl); + } else { + prepareUnZip(zipDistUrl); + } + }, function(error) { + log.innerHTML = $filter('translate')('update.msg.cant_download');//無法下載更新,請確認伺服器連線是否正常; + $scope.show_update=false; + changeMode('setting'); + } + ); + }catch(e){ + if(window.nodeRequire){ + var data = { + url : url, + method : 'GET', + type:"application/octet-stream", + responseType: 'arraybuffer' + }, + request = nodeRequire('request'), + progress = nodeRequire('request-progress'), + fs = nodeRequire('fs'), + AppPath; + const Zip = nodeRequire('adm-zip-electron'); + + log.innerHTML = $filter('translate')('update.msg.updating'); + $scope.show_update=true; + if(platform == 'electron'){ + AppPath = nodeRequire('electron').remote.app.getAppPath()+'\\'; + } else { + var nwDir = nodeRequire('path').dirname(process.execPath); + AppPath = nwDir+'\\package.nw\\'; + } + + var updateFile = AppPath + 'update.zip'; + var tempFile = fs.createWriteStream(updateFile); + tempFile.on('finish', function(){ + tempFile.close(function(){ + try{ + log.innerHTML = $filter('translate')('update.msg.updating');//程式更新中... + $scope.show_update=true; + var zip = new Zip(updateFile); + zip.extractAllTo(AppPath+'www\\', true); + clearUpdate(AppPath, 'update.zip', function(){ + reDirect('index.html'); + }); + + }catch(e){ + log.innerHTML = $filter('translate')('update.msg.zip_cant_download')+'
'+e;//無法下載更新,更新用的檔案不存在,請確認伺服器連線資訊是否正確 + $scope.show_update=false; + changeMode('setting'); + } + }); + }); + + var request = request(url, function(error, response, body){ + if(error){ + log.innerHTML = $filter('translate')('update.msg.zip_cant_download');//無法下載更新,更新用的檔案不存在,請確認伺服器連線資訊是否正確 + $scope.show_update=false; + changeMode('setting'); + } else { + log.innerHTML = $filter('translate')('update.msg.update_downloading') + '100%'; + $scope.show_update=true; + } + }); + request.pipe(tempFile); + progress(request, { + throttle: 200, // Throttle the progress event to 2000ms, defaults to 1000ms + // delay: 1000, // Only start to emit after 1000ms delay, defaults to 0ms + // lengthHeader: 'x-transfer-length' // Length header to use, defaults to content-length + }) + .on('progress', function (state) { + //更新下載中 + log.innerHTML = $filter('translate')('update.msg.update_downloading')+(Math.round(state.percent * 100))+'%'; + $scope.show_update=true; + }) + .on('error', function (err) { + log.innerHTML = $filter('translate')('update.msg.zip_cant_download');//無法下載更新,更新用的檔案不存在,請確認伺服器連線資訊是否正確 + $scope.show_update=false; + changeMode('setting'); + }); + } else { + reDirect('index.html'); + } + } + } + + var g_zipDistUrl; + function prepareUnZip(zipDistUrl){ + var srcUrl = cordova.file.applicationDirectory + 'www/'; + g_zipDistUrl = zipDistUrl; + window.resolveLocalFileSystemURL(srcUrl, + function(directoryEntry){ + window.resolveLocalFileSystemURL(zipDistUrl, function(dstDirectoryEntry){ + dstDirectoryEntry.getDirectory('update', {create: true}, function(updateDirEntry){ + log.innerHTML = $filter('translate')('update.msg.prepare_updat'); //正在準備更新程式... + $scope.show_update=true; + //get file cordova.js, cordova_plugins.js, plugins + directoryEntry.getFile('cordova.js', {}, function (fileEntry) { + //copy cordova.js + fileEntry.copyTo(updateDirEntry,'cordova.js', function(){ + directoryEntry.getFile('cordova_plugins.js', {}, function (fileEntry) { + //copy cordova_plugins.js + fileEntry.copyTo(updateDirEntry,'cordova_plugins.js', function(){ + directoryEntry.getDirectory('plugins', {}, function(pluginsDirEntry){ + //copy plugins + pluginsDirEntry.copyTo(updateDirEntry,'plugins', function(){ + directoryEntry.getDirectory('cordova-js-src', {}, function(pluginsDirEntry){ + //copy cordova-js-src + pluginsDirEntry.copyTo(updateDirEntry,'cordova-js-src', function(){ + directoryEntry.getDirectory('scripts', {}, function(pluginsDirEntry){ + //copy scripts + pluginsDirEntry.copyTo(updateDirEntry,'scripts', function(){ + unZIPforCordova(zipDistUrl); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, copyfileError); + }, getDirectoryError); + }, getDirectoryError); + }, getDirectoryError); + }, getDirectoryError + ); + } + + function copyfileError(error){ + if(error.code == 9 || error.code == 12){ + unZIPforCordova(g_zipDistUrl); + } else { + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele')+":"+error.code;//暫存檔案刪除失敗,請重新下載 + $scope.show_update=false; + changeMode('setting'); + } + } + + function unZIPforCordova(zipDistUrl){ + log.innerHTML = $filter('translate')('update.msg.updating');//程式更新中... + $scope.show_update=true; + var dstDir = zipDistUrl + 'update' + zip.unzip(zipDistUrl+'update.zip', dstDir, + function(result){ + if(result==0){ + clearUpdate(zipDistUrl, 'update.zip', function(){ + //localStorage.setItem(config.appName + "_version", newAppVersion); + reDirect(zipDistUrl+'update/index.html'); + }); + } else { + log.innerHTML = $filter('translate')('update.msg.zip_server_connect');//'更新檔解析失敗,請重新下載'; + $scope.show_update=false; + changeMode('setting'); + } + }, + function(progressEvent){ + log.innerHTML = $filter('translate')('update.msg.updating') + Math.round((progressEvent.loaded / progressEvent.total) * 100)+'%'; + $scope.show_update=true; + } + ); + } + + function unZIPforIOS(zipDistUrl){ + var srcUrl = cordova.file.applicationDirectory + 'www/'; + var dstDir = zipDistUrl + 'update' + window.resolveLocalFileSystemURL( + srcUrl, + function(directoryEntry){ + window.resolveLocalFileSystemURL(zipDistUrl, function(dstDirectoryEntry){ + log.innerHTML = $filter('translate')('update.msg.prepare_updat'); //正在準備更新程式... + $scope.show_update=true; + directoryEntry.copyTo(dstDirectoryEntry, 'update', function(){ + zip.unzip(zipDistUrl+'update.zip', dstDir, + function(result){ + if(result==0){ + clearUpdate(zipDistUrl, 'update.zip', function(){ + //localStorage.setItem(config.appName + "_version", newAppVersion); + reDirect(zipDistUrl+'update/index.html'); + }); + } else { + log.innerHTML = $filter('translate')('update.msg.zip_server_connect');//'更新檔解析失敗,請重新下載'; + $scope.show_update=false; + changeMode('setting'); + } + }, + function(progressEvent){ + log.innerHTML = $filter('translate')('update.msg.updating') + Math.round((progressEvent.loaded / progressEvent.total) * 100)+'%'; + } + ); + }, function(error){ + if(error.code == 9 || error.code == 12){ + log.innerHTML = $filter('translate')('update.msg.delete_temp_file');//正在刪除暫存檔案... + $scope.show_update=true; + resolveLocalFileSystemURL(dstDir, function(dstDirectory){ + dstDirectory.removeRecursively(function(){ + unZIPforCordova(zipDistUrl); + },function(error){ + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele');//暫存檔案刪除失敗,請重新下載 + $scope.show_update=false; + changeMode('setting'); + }); + }, getDirectoryError); + } else { + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele')+":"+error.code;//暫存檔案刪除失敗,請重新下載 + $scope.show_update=false; + changeMode('setting'); + } + }); + }, getDirectoryError); + + }, + getDirectoryError + ); + } + + function getDirectoryError(error){ + log.innerHTML = "ERROR"+":"+error.code;//暫存檔案刪除失敗,請重新下載 + $scope.show_update=false; + changeMode('setting'); + } + + //delete update.zip file + function clearUpdate(url, fileName, feedback){ + try{ + resolveLocalFileSystemURL(url, function(dir) { + dir.getFile(fileName, {create:false}, function(fileEntry) { + fileEntry.remove(function(){ + if(feedback) + feedback(); + // The file has been removed succesfully + },function(error){ + log.innerHTML = $filter('translate')('update.msg.temp_file_cant_dele');//暫存檔案刪除失敗 + $scope.show_update=false; + if(feedback) + feedback(); + },function(){ + log.innerHTML = $filter('translate')('update.msg.temp_file_not_exist');//暫存檔案不存在 + $scope.show_update=false; + if(feedback) + feedback(); + }); + }); + }); + } catch(e){ + nodeRequire('fs').unlink(url+'\\'+fileName, function(error){ + if(feedback) + feedback(); + }); + } + } + + function changeMode(mode){ + $timeout(function(){ + $scope.mode = mode; + if(mode == 'setting'){ + if(platform == 'electron'){ + win.setSize(320, 568); + win.center(); + } else if(platform == 'nw'){ + win.resizeTo(320, 568); + } + } else{ + if(platform == 'electron'){ + win.setSize(320, 568); + win.center(); + } else if(platform == 'nw'){ + win.resizeTo(320, 568); + } + } + }); + + $timeout(function(){ + $scope.show_screen=true; + },750); + } + + $scope.reCheckUpdate = function(){ + config.server.ip = combineIP($scope.serverIp); + config.server.name = config.serverList[config.setting.environment].name; + config.server.eainame = config.serverList[config.setting.environment].eainame; + //20220419 13871,增加sc設定 + config.server.scname = config.serverList[config.setting.environment].scname; + + localStorage.setItem(config.appName + "_serverList", JSON.stringify(config.serverList)); + localStorage.setItem(config.appName + "_server", JSON.stringify(config.server)); + changeMode(''); + checkUpdate(); + } + + function combineIP(array){ + var totalip; + array.forEach(function(ipstring){ + if(!totalip) + totalip = ipstring; + else + totalip += "." +ipstring; + }); + return totalip; + } + + function reDirect(url, msg){ + log.innerHTML = msg||$filter('translate')('update.msg.update_complete');//程式更新完成... + $scope.show_update=true; + //底層為Cordova 的狀態下,一旦更新完成就把新的版本號寫入localStorage + if(window.cordova && newAppVersion != '0.0.0.0'){ + localStorage.setItem(config.appName + "_version", newAppVersion); + } + localStorage.setItem(config.appName + "_servicePlatform", servicePlatform); + + $timeout(function(){ + if(platform == 'electron'){ + createWindow(url); + } else if(platform == 'nw'){ + createWindowNW(url); + } else { + document.location.href = url; + } + }, 100); + } + + function createWindow (url) { + var BrowserWindow = nodeRequire('electron').remote.BrowserWindow; + var newWin = new BrowserWindow({ + width: 320, + minWidth: 320, + height: 568, + minHeight: 568, + frame:false, + fullscreen: false, + fullscreenable: true, + titleBarStyle : 'customButtonsOnHover', + show: false + }); + newWin.loadURL('file://'+__dirname+'/'+url); + newWin.on('closed', function(){ + newWin = null; + }); + newWin.once('ready-to-show', function(){ + if(isDebug) + newWin.webContents.openDevTools(); + newWin.show(); + newWin.setFullScreen(config.setting.fullScreen == 'Y'); + win.close(); + }); + } + + function createWindowNW (url) { + var nw = nodeRequire('nw.gui'), + settings = { + position: "center", + min_width:320, + min_height:568, + width:320, + height:568, + resizable:true, + fullscreen:config.setting.fullScreen == 'N', + frame: false, + show: false, + icon:"icon/icon.png" + }; + nw.Window.open('www/'+url, settings, function(new_win) { + if(isDebug) + new_win.showDevTools(); + new_win.on('loaded', function(){ + new_win.show(); + win.close(); + }); + }); + } + + function prepareHeader(data){ + var header = {}; + //TODO + header.Method = data.uri; + header["mds.userid"] = ''; + header["mds.password"] = ''; + header["mds.environment"] = config.setting.environment; + header["mds.language_mode"] = $translate.use(); + header["mds.computer_name"] = config.client.ip; + header["mds.sessionno"] = config.mdssessionno; + return header; + } + + function prepareContent(data){ + var content = {}; + content.CompanyID = config.setting.companyId; + content.Equipment = ''; + content = angular.merge(content, data.content); + return content; + } + + function prepareMESHeader(data){ + var header = {}; + //TODO + header["method"] = data.uri; + header["userid"] = config.cache.account||''; + header["languagemode"] = $translate.use(); + header["computername"] = config.client.ip; + header["sessionno"] = config.mdssessionno; + return header; + } + + function sendToMESSrv_plain(sendData) { + //20201125 雋辰,新增選擇DNS/IP + var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip; + + var apiurl = config.server.name+'/wsInvoke.asmx/InvokeSrv_plainjson'; + var liveupdate_url = 'http://'+ip+':'+config.server.port+'/'+apiurl; + var header = prepareMESHeader(sendData); + + var data = { + url : liveupdate_url, + method : 'POST', + headers : { + 'Content-Type': 'application/json;charset=UTF-8' + }, + data : { + "uri":JSON.stringify(header), + "content":JSON.stringify(sendData.content) + } + }; + if(config.server.timeout != 0) + data.timeout =config.server.timeout; + + $http(data).success(function(data, status, headers, config) { + try{ + var contentData = JSON.parse(data.d); + if(contentData.Code === '0' || contentData.Code === null || contentData.code === '0' || contentData.code === null){ + if(sendData.success) + sendData.success(contentData.ResultJson); + } else { + if(sendData.error){ + sendData.error(contentData); + } else { + log.innerHTML = contentData.exception; + $scope.show_update=false; + changeMode('setting'); + } + } + }catch(e){ + log.innerHTML = e + $scope.show_update=false; + changeMode('setting'); + } + }).error(function(a,b,c,d){ + log.innerHTML = $filter('translate')('update.msg.cant_get_verInfo');//無法取得版本資訊 + $scope.show_update=false; + changeMode('setting'); + }); + } + + + function send(sendData){ + var data = { + url : 'http://'+config.server.ip+':'+config.server.port+'/mobilemiddleware/api/v1/transaction/json', + method : 'POST', + headers : { + 'Content-Type': 'application/json;charset=UTF-8' + }, + data : { + "applicationId":config.applicationId, + "uri": sendData.uri, + "headers":prepareHeader(sendData), + "cookies":[], + 'content':JSON.stringify(prepareContent(sendData)) + } + }; + if(config.server.timeout != 0) + data.timeout =config.server.timeout; + + $http(data).success(function(data, status, headers, config) { + try{ + var contentData = JSON.parse(data.content); + if(contentData.IsSuccess){ + if(sendData.success) + sendData.success(contentData.Result); + } else { + if(sendData.error){ + sendData.error(contentData); + } else { + log.innerHTML = contentData.SysException; + changeMode('setting'); + } + } + }catch(e){ + log.innerHTML = e + changeMode('setting'); + } + }).error(function(a,b,c,d){ + log.innerHTML = $filter('translate')('update.msg.cant_get_verInfo');//無法取得版本資訊 + changeMode('setting'); + }); + } + }]); +};