diff --git a/HEZON_ITK.sln b/HEZON_ITK.sln new file mode 100644 index 0000000..bb7bd0f --- /dev/null +++ b/HEZON_ITK.sln @@ -0,0 +1,26 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HEZON_ITK", "HEZON_ITK\HEZON_ITK.vcxproj", "{8E665218-4AC2-4DDD-A50E-4245BA64C3C3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Debug|Win32.ActiveCfg = Debug|Win32 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Debug|Win32.Build.0 = Debug|Win32 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Debug|x64.ActiveCfg = Debug|x64 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Debug|x64.Build.0 = Debug|x64 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Release|Win32.ActiveCfg = Release|Win32 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Release|Win32.Build.0 = Release|Win32 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Release|x64.ActiveCfg = Release|x64 + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/HEZON_ITK/HEZON_ITK.cpp b/HEZON_ITK/HEZON_ITK.cpp new file mode 100644 index 0000000..6272e3e --- /dev/null +++ b/HEZON_ITK/HEZON_ITK.cpp @@ -0,0 +1,11 @@ +// HEZON_ITK.cpp : ̨Ӧóڵ㡣 +// + +#include "stdafx.h" + + +int _tmain(int argc, _TCHAR* argv[]) +{ + return 0; +} + diff --git a/HEZON_ITK/HEZON_ITK.vcxproj b/HEZON_ITK/HEZON_ITK.vcxproj new file mode 100644 index 0000000..d5b31d5 --- /dev/null +++ b/HEZON_ITK/HEZON_ITK.vcxproj @@ -0,0 +1,173 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {8E665218-4AC2-4DDD-A50E-4245BA64C3C3} + Win32Proj + HEZON_ITK + + + + Application + true + Unicode + v110 + + + Application + true + Unicode + v110 + + + Application + false + true + Unicode + v110 + + + DynamicLibrary + false + false + Unicode + false + v110 + true + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + Use + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + Level3 + NotUsing + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;IPLIB=none;%(PreprocessorDefinitions) + C:\Java\jdk1.8.0_191\include\win32;C:\Java\jdk1.8.0_191\include;D:\Siemens\Teamcenter11\include;D:\Siemens\Teamcenter11\include_cpp;%(AdditionalIncludeDirectories) + Cdecl + + + Console + true + true + true + + + D:\Siemens\Teamcenter11\lib\*.lib;C:\Java\jdk1.8.0_191\lib\*.lib;%(AdditionalDependencies) + libuser_exits.ar.lib;%(IgnoreSpecificDefaultLibraries) + $(OutDir)\bs.dll + /force %(AdditionalOptions) + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HEZON_ITK/HEZON_ITK.vcxproj.filters b/HEZON_ITK/HEZON_ITK.vcxproj.filters new file mode 100644 index 0000000..0c768b1 --- /dev/null +++ b/HEZON_ITK/HEZON_ITK.vcxproj.filters @@ -0,0 +1,73 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {d25e0aa0-8791-4277-b392-abc3943f925c} + + + {f8d4fa90-4363-4e0f-8f44-a2e02a224ad9} + + + {5f8496b0-ad7e-4c6c-b832-59575601b9f1} + + + {aa5fbb6b-b5ee-4f80-8b16-de99d912a542} + + + + + + + + + epm-handler + + + common + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + \ No newline at end of file diff --git a/HEZON_ITK/ReadMe.txt b/HEZON_ITK/ReadMe.txt new file mode 100644 index 0000000..49df47a --- /dev/null +++ b/HEZON_ITK/ReadMe.txt @@ -0,0 +1,36 @@ +======================================================================== + 控制台应用程序:HEZON_ITK 项目概述 +======================================================================== + +应用程序向导已为您创建了此 HEZON_ITK 应用程序。 + +本文件概要介绍组成 HEZON_ITK 应用程序的每个文件的内容。 + + +HEZON_ITK.vcxproj + 这是使用应用程序向导生成的 VC++ 项目的主项目文件, + 其中包含生成该文件的 Visual C++ + 的版本信息,以及有关使用应用程序向导选择的平台、配置和项目功能的信息。 + +HEZON_ITK.vcxproj.filters + 这是使用“应用程序向导”生成的 VC++ 项目筛选器文件。 + 它包含有关项目文件与筛选器之间的关联信息。 在 IDE + 中,通过这种关联,在特定节点下以分组形式显示具有相似扩展名的文件。 + 例如,“.cpp”文件与“源文件”筛选器关联。 + +HEZON_ITK.cpp + 这是主应用程序源文件。 + +///////////////////////////////////////////////////////////////////////////// +其他标准文件: + +StdAfx.h,StdAfx.cpp + 这些文件用于生成名为 HEZON_ITK.pch 的预编译头 (PCH) 文件和 + 名为 StdAfx.obj 的预编译类型文件。 + +///////////////////////////////////////////////////////////////////////////// +其他注释: + +应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。 + +///////////////////////////////////////////////////////////////////////////// diff --git a/HEZON_ITK/bs_bypass.cpp b/HEZON_ITK/bs_bypass.cpp new file mode 100644 index 0000000..979d474 --- /dev/null +++ b/HEZON_ITK/bs_bypass.cpp @@ -0,0 +1,44 @@ +/*============================================================================= + Copyright (c) 2003-2005 UGS Corporation + Unpublished - All Rights Reserved + + File :qtmc_by_pass.cpp + Module : user_exits + + + +============================================================================================================ +DATE Name Description of Change +30_OTC_2014 mengyawei creation +$HISTORY$ + +============================================================================================================*/ + +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + extern "C" int POM_AM__set_application_bypass(logical bypass); + + int bs_bypass(void *retValType) + { + int ifail = ITK_ok; + + logical bypass=true; + USERARG_get_logical_argument(&bypass); + POM_AM__set_application_bypass( bypass ); + + return ifail; + } + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/HEZON_ITK/bs_custom_main.cxx b/HEZON_ITK/bs_custom_main.cxx new file mode 100644 index 0000000..f930510 --- /dev/null +++ b/HEZON_ITK/bs_custom_main.cxx @@ -0,0 +1,68 @@ +/** +* @defgroup common ú +* @defgroup workflow ̺ +* @defgroup bmf ҵչ +* @defgroup service +*/ + +/** +* @addtogroup common +* @{ +*/ + +/** +* @file +* @brief ע +* @date 2014/4/21 +* @author mengyawei +*/ + +#pragma warning (disable: 4819) + +/** +* @headerfile tcua ͷļ +*/ +#include +#include +#include +#include "epm_register_handler.h" +#include "epm_handler_common.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + + /** + * @fn extern "C" DLLAPI int liborigin_register_callbacks + * @return usually return ITK_ok + * @brief liborigin customization entry + */ + DLLAPI int bs_register_callbacks() + { + int ifail = ITK_ok; + ifail = CUSTOM_register_exit( + "bs", + "USERSERVICE_register_methods", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods) ; + + + ifail = CUSTOM_register_exit( + "bs", + "USER_gs_shell_init_module", + (CUSTOM_EXIT_ftn_t)CUST_init_module); + + return ifail; + } + +#ifdef __cplusplus +} +#endif + + + + +/** +* @} +*/ \ No newline at end of file diff --git a/HEZON_ITK/common_itk_util.c b/HEZON_ITK/common_itk_util.c new file mode 100644 index 0000000..eb5b112 --- /dev/null +++ b/HEZON_ITK/common_itk_util.c @@ -0,0 +1,273 @@ +/** +* @file common_itk_util.cpp +* @brief itk warpper utility function +* @author James +* @history +* =================================================================================== +* Date Name Description of Change +* 18-July-2008 James +*/ + +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +//#include +//#include +//#include + +#include +//#include +#include +#include +//#include +//#include +#include "error_handling.h" +#include "common_itk_util.h" + +#ifdef WIN32 +#include +#include +#else +#include +#endif + + +#define ARGS_LENGTH 200 +#define ARGS_NAME_DEBUG "-debug" +#define DEBUG "-debug=" +#define MAX_PRINTLINE_LENGTH 2000 +#define MAX_PATH_LENGTH 2000 +#define MAX_ARGUMENT_LENGTH 400 +#define MAX_PARAMNAME_LENGTH 50 +#define MAX_FILE_EXT_LENGTH 10 +#define TRUE_FLAG 1 +#define FALSE_FLAG 0 +#define DETAILLOG 1 + + +FILE* logFile = NULL; + +void set_bypass(logical bypass) +{ + AM__set_application_bypass(bypass); +} +/*=============================================================================* + * FUNCTION: current_time + * PURPOSE : get the current datetime + * INPUT: + * date_t* date_tag // current date time tag + * + * RETURN: + * void + *============================================================================*/ +void current_time( date_t * date_tag ) +{ + time_t ltime; + struct tm *today ; + + // Set time zone from TZ environment variable. If TZ is not set, + // the operating system is queried to obtain the default value + // for the variable. + // + //_tzset(); + + // Get UNIX-style time and display as number and string. + time( <ime ); + + today = localtime( <ime ); + date_tag->year = today->tm_year + 1900 ; + date_tag->month = today->tm_mon ; + date_tag->day = today->tm_mday ; + date_tag->hour = today->tm_hour ; + date_tag->minute = today->tm_min ; + date_tag->second = today->tm_sec ; +} +/*=============================================================================* + * FUNCTION: CreateLogFile + * PURPOSE : create log file + * INPUT: + * char* FunctionName // the funtion which need to create log file + * FILE** logFile // out: the log file pointer + * + * RETURN: + * void + *============================================================================*/ +void CreateLogFile(char* FunctionName, char **fullname) +{ + int i=0, ifail = ITK_ok; + //date_t status_now; + //char* date_string = NULL; + char date_string[MAX_PATH_LENGTH]; + char logFileDir[MAX_PATH_LENGTH]; + char logFileName[MAX_PATH_LENGTH]; + + char* session_uid = NULL; + tag_t session_tag = NULLTAG; + time_t now; + struct tm *p; + + time(&now); + + logFile = NULL; + //current_time(&status_now); + p=localtime(&now); + + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string,"%4d%02d%02d%02d%02d%02d",1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ,p->tm_hour,p->tm_min ,p->tm_sec ); + //if( DATE_date_to_string( status_now, "%Y%m%d%H%M%S", &date_string) != ITK_ok ) + //ifail = ITK_date_to_string (status_now, &date_string ); + //if (ifail) + //{ + // printf("!*ERROR*!: Failed to get current date time\n"); + // goto CLEANUP; + //} + + memset(logFileDir, 0, sizeof(logFileDir)); + memset(logFileName, 0, sizeof(logFileName)); + //get log dir + sprintf(logFileDir, "%s", getenv("TEMP")); + printf("\n log file dir: %s\n", logFileDir); + //try to change dir to TC_USER_LOG_DIR + if(chdir(logFileDir)!=ITK_ok) + { + //not set TC_USER_LOG_DIR + //log in to default TC_LOG + memset(logFileDir, 0, sizeof(logFileDir)); + sprintf(logFileDir, "%s", getenv("TC_LOG")); + printf("\n TC_USER_LOG_DIR invalide, log file dir: %s\n", logFileDir); + if(chdir(logFileDir)!=ITK_ok) + { + //still can not change to log dir + printf("!*ERROR*!: Failed to change dir to TC_USER_LOG_DIR\n"); + goto CLEANUP; + } + } + + //get session_uid to make sure the log file name unique + POM_ask_session(&session_tag); + ITK__convert_tag_to_uid(session_tag, &session_uid); + + + //get logFileName + sprintf(logFileName, "%s_%s_%s.log", FunctionName, session_uid, date_string); + printf("log file name: %s\n", logFileName); + + *fullname = (char *)MEM_alloc(sizeof(char)*512); + sprintf(*fullname,"%s\\%s",logFileDir,logFileName); + + //for(i = 0; _access((char *)logFileName, 4) == 0; i++) + /*{ + memset(logFileName, 0, sizeof(logFileName)); + sprintf(logFileName, "%s_%s_%s_%d.log", FunctionName, session_uid, date_string, i); + } + printf("final log file name: %s\n", logFileName);*/ + + //create log file + logFile = fopen(logFileName, "w"); + +CLEANUP: + //DOFREE(date_string); + DOFREE(session_uid); +} + + +/*=============================================================================* + * FUNCTION: WriteLog + * PURPOSE : write log, if debug log File not null, write log message to log File + * INPUT: + * const char* format // debug message string + * + * RETURN: + * void + *============================================================================*/ +void WriteLog(const char* format, ...) +{ + va_list arg; + char tmp[MAX_PRINTLINE_LENGTH]; + + if(logFile) + { + //get the message + memset(tmp, 0, sizeof(tmp)); + va_start(arg, format); + vsprintf(tmp, format, arg); + va_end(arg); + + //----------print to command window for trace--------// + printf("%s\n", tmp); + + //print message to log file + fprintf(logFile, "%s\n", tmp); + fflush(logFile); + } + else + { + printf("*!Error!*: Log File Not Exist\n"); + } +} + +void CloseLog(void) +{ + if(logFile) + { + fclose(logFile); + logFile = NULL; + } +} + +//void getTypeinfo(char *type) +//{ +// int ulen = 0,i=0,tempcount=0,asd=0; +// +// char temp[128]=""; +// ulen = strlen(type); +// asd = ulen-1; +// for(i=0;i < ulen;i++) +// { +// if(type[i] == ';') +// { +// temp[tempcount] = '\0'; +// strcpy(excludetypes[typecount].type,temp); +// strcpy(temp,""); +// tempcount = 0; +// typecount = typecount + 1; +// } +// else +// { +// +// temp[tempcount] = type[i]; +// tempcount = tempcount + 1; +// if(i==asd) +// { +// temp[tempcount] = '\0'; +// strcpy(excludetypes[typecount].type,temp); +// typecount = typecount + 1; +// } +// +// } +// +// } +//} \ No newline at end of file diff --git a/HEZON_ITK/common_itk_util.h b/HEZON_ITK/common_itk_util.h new file mode 100644 index 0000000..f1e4cab --- /dev/null +++ b/HEZON_ITK/common_itk_util.h @@ -0,0 +1,31 @@ +/** +* @file common_itk_util.h +* @brief itk warpper utility function +* @author James +* @history +* =================================================================================== +* Date Name Description of Change +* 09-July-2008 James +*/ + +#ifndef COMMON_ITK_UTIL +#define COMMON_ITK_UTIL + +#ifdef __cplusplus +extern "C" { +#endif + +void CreateLogFile(char* FunctionName, char **fullname); +void WriteLog(const char* format, ...); +void CloseLog(void); +void set_bypass(logical bypass); +//int FindDatasetReferenceExt( tag_t datasettype, const char *datasettype_ref, char ext[10] ); +//int CompareDate( date_t date1, date_t date2 ); +//int GetRandomTempFile( char tempFile[256] ); +//logical IsItemRevisionType( char object_type[WSO_name_size_c + 1] ); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/HEZON_ITK/epm_handler_common.h b/HEZON_ITK/epm_handler_common.h new file mode 100644 index 0000000..f774f37 --- /dev/null +++ b/HEZON_ITK/epm_handler_common.h @@ -0,0 +1,60 @@ +/** +* @addtogroup handler +* @{ +*/ + +/** +* @file epm_handler_common.h +* @brief handler functions declation +* @date 2011/4/12 +* @author Ray +* @history +* =================================================================================== +* Date Name Description +* 12-Apr-2011 Ray created +*/ + + +#ifndef EPM_HANDLER_COMMON +#define EPM_HANDLER_COMMON + +#include +#include + + + +#ifdef __cplusplus +extern "C" { +#endif + + + using namespace std; + + +#define TC_specification "IMAN_specification" +//#define NX_3W_DATASET_TYPE "UGMASTER" +//#define NX_2W_DATASET_TYPE "UGPART" +//#define DATASET_REF_TYPE "UGPART" + + + ////Ϣǩ汾ȥ + //int qtmc_sign_ir(EPM_action_message_t msg); + + int kl_erp_save(EPM_action_message_t msg); + int kl_erp_update(EPM_action_message_t msg); + int kl_erp_bom(EPM_action_message_t msg); +int sap(EPM_action_message_t msg); + + + + //user service end +#ifdef __cplusplus +} +#endif + +#endif + + +/** +* @} +*/ \ No newline at end of file diff --git a/HEZON_ITK/epm_register_handler.cxx b/HEZON_ITK/epm_register_handler.cxx new file mode 100644 index 0000000..dce9a28 --- /dev/null +++ b/HEZON_ITK/epm_register_handler.cxx @@ -0,0 +1,265 @@ +/*=================================================================================================== + Copyright(c) 2011 Siemens PLM Software Corp. All rights reserved. + Unpublished - All rights reserved +==================================================================================================== +File description: + + Filename : epm_register_handler.c + + This file registers functions which are called when Teamcenter is being initialized + +==================================================================================================== +Date Name Description of Change +2011-8-21 Ray wei creation + +$HISTORY$ +==================================================================================================*/ + +#pragma warning (disable: 4819) + +/** +* @headerfile tcua ͷļ +*/ +#include +#include +#include + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +#include +#include + + +/** +* @headerfile user's header files +*/ +#include "epm_register_handler.h" +#include "epm_handler_common.h" + + + +// Method and Workflow Handler +extern DLLAPI int CUST_init_module(int *decision, va_list args) +{ + int ifail = ITK_ok, n=0; + char date_buf[80],*expire_date; + time_t now; + struct tm *p; + + *decision = ALL_CUSTOMIZATIONS; + + + //ifail = EPM_register_action_handler("qtmc-sign-ir", "qtmc-sign-ir", + //(EPM_action_handler_t)qtmc_sign_ir); + //if(ifail == ITK_ok) + //{ + // fprintf(stdout,"Registering action handler qtmc-sign-ir completed!\n"); + //} + //else + //{ + // fprintf(stdout , "Registering action handler qtmc-sign-ir failed %d!\n",ifail); + //} + + ifail=EPM_register_action_handler("kl_erp_save", "kl_erp_save", kl_erp_save); + + if(ifail) + { + printf("register save error"); + }else + { + printf("register save ok"); + + } + ifail = EPM_register_action_handler("kl_erp_bom", "kl_erp_bom", kl_erp_bom); + if (ifail) + { + printf("register bom error"); + } + else + { + printf("register bom ok"); + + } + // ifail=EPM_register_action_handler("kl_erp_update", "kl_erp_update", kl_erp_update); + // if (ifail) + // { + // printf("register update error"); + // } + // else + // { + // printf("register update ok"); + // + // } + + return ifail; +} +// +////register service method +extern DLLAPI int USERSERVICE_custom_register_methods() +{ + + ////2.7 SP-CUS-007 DBOMEBOM + //numberOfArguments = 1; + //functionPtr = Q7_ebom_to_pbom; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_TAG_TYPE; + ////argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; + //returnValueType = USERARG_STRING_TYPE; + //ITKCALL(status = USERSERVICE_register_method("Q7_ebom_to_pbom", functionPtr, numberOfArguments, + // argumentList, returnValueType )); + //MEM_free(argumentList); + //if(status == ITK_ok) + //{ + // fprintf( stdout, "\n Registering Q7_ebom_to_pbom finished\n" ); + //} + //else + //{ + // fprintf( stdout, "\n Registering Q7_ebom_to_pbom failed %d\n" , status ); + //} + ////QTM_ebom_to_pbom + //numberOfArguments = 1; + //functionPtr = QTM_ebom_to_pbom; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_TAG_TYPE; + ////argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; + //returnValueType = USERARG_STRING_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTM_ebom_to_pbom", functionPtr, numberOfArguments, + // argumentList, returnValueType )); + //MEM_free(argumentList); + //if(status == ITK_ok) + //{ + // fprintf( stdout, "\n Registering QTM_ebom_to_pbom finished\n" ); + //} + //else + //{ + // fprintf( stdout, "\n Registering QTM_ebom_to_pbom failed %d\n" , status ); + //} + ////QTM_ebom_to_mbom + //numberOfArguments = 1; + //functionPtr = QTM_ebom_to_mbom; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_TAG_TYPE; + ////argumentList[1] = USERARG_STRING_TYPE + USERARG_ARRAY_TYPE; + //returnValueType = USERARG_STRING_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTM_ebom_to_mbom", functionPtr, numberOfArguments, + // argumentList, returnValueType )); + //MEM_free(argumentList); + //if(status == ITK_ok) + //{ + // fprintf( stdout, "\n Registering QTM_ebom_to_mbom finished\n" ); + //} + //else + //{ + // fprintf( stdout, "\n Registering QTM_ebom_to_mbom failed %d\n" , status ); + //} + + ////2.6 SP-CUS-006е¶excelϢ + //numberOfArguments = 3; + //functionPtr = qtmc_update_revision_prop; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_TAG_TYPE+USERARG_ARRAY_TYPE; + //argumentList[1] = USERARG_TAG_TYPE; + //argumentList[2] = USERARG_STRING_TYPE; + //returnValueType = USERARG_VOID_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTMC_update_revision_prop",functionPtr,numberOfArguments,argumentList,returnValueType)); + //if(status == ITK_ok) + //{ + // fprintf(stdout,"Registering user service QTMC_update_revision_prop successful !\n"); + //}else{ + // fprintf(stdout,"Registering user service QTMC_update_revision_prop failed %d\n",status); + //} + + // + + ////SP-CUS-017SolidWorksģ浽TC + //numberOfArguments = 7; + //functionPtr = qtmc_import_solidworks_to_tc; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_STRING_TYPE; + //argumentList[1] = USERARG_STRING_TYPE; + //argumentList[2] = USERARG_STRING_TYPE; + //argumentList[3] = USERARG_TAG_TYPE; + //argumentList[4] = USERARG_LOGICAL_TYPE; + //argumentList[5] = USERARG_LOGICAL_TYPE; + //argumentList[6] = USERARG_LOGICAL_TYPE; + //returnValueType = USERARG_LOGICAL_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTMC_import_solidworks",functionPtr,numberOfArguments,argumentList,returnValueType)); + //if(status == ITK_ok) + //{ + // fprintf(stdout,"Registering user service QTMC_import_solidworks successful !\n"); + //}else{ + // fprintf(stdout,"Registering user service QTMC_import_solidworks failed %d\n",status); + //} + + + ////3.8 SP-CUS-020ϵм + //numberOfArguments = 3; + //functionPtr = qtmc_update_series_parts; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_TAG_TYPE; + //argumentList[1] = USERARG_STRING_TYPE; + //argumentList[2] = USERARG_STRING_TYPE; + //returnValueType = USERARG_TAG_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTMC_update_series_parts",functionPtr,numberOfArguments,argumentList,returnValueType)); + //if(status == ITK_ok) + //{ + // fprintf(stdout,"Registering user service QTMC_update_series_parts successful !\n"); + //}else{ + // fprintf(stdout,"Registering user service QTMC_update_series_parts failed %d\n",status); + //} + + //numberOfArguments = 1; + //functionPtr = qtmc_by_pass; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_LOGICAL_TYPE; + //returnValueType = USERARG_VOID_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTMC-bypass",functionPtr,numberOfArguments,argumentList,returnValueType)); + //if(status == ITK_ok) + //{ + // fprintf(stdout,"Registering user service QTMC-bypass successful !\n"); + //}else{ + // fprintf(stdout,"Registering user service QTMC-bypass failed %d\n",status); + //} + + + //numberOfArguments = 3; + //functionPtr = qtmc_qry_service; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_STRING_TYPE; + //argumentList[1] = USERARG_STRING_TYPE+USERARG_ARRAY_TYPE; + //argumentList[2] = USERARG_STRING_TYPE+USERARG_ARRAY_TYPE; + //returnValueType = USERARG_TAG_TYPE+USERARG_ARRAY_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTMC_Search",functionPtr,numberOfArguments,argumentList,returnValueType)); + //if(status == ITK_ok) + //{ + // fprintf(stdout,"Registering user service QTMC_Search successful !\n"); + //}else{ + // fprintf(stdout,"Registering user service QTMC_Search failed %d\n",status); + //} + + + // + ////7.3 HBOMݵĵ + //numberOfArguments = 4; + //functionPtr = qtmc_update_hbom_bomline_prop; + //argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int) ); + //argumentList[0] = USERARG_TAG_TYPE; + //argumentList[1] = USERARG_TAG_TYPE; + //argumentList[2] = USERARG_STRING_TYPE; + //argumentList[3] = USERARG_STRING_TYPE; + //returnValueType = USERARG_VOID_TYPE; + //ITKCALL(status = USERSERVICE_register_method("QTMC_update_bomline",functionPtr,numberOfArguments,argumentList,returnValueType)); + //if(status == ITK_ok) + //{ + // fprintf(stdout,"Registering user service QTMC_update_bomline successful !\n"); + //}else{ + // fprintf(stdout,"Registering user service QTMC_update_bomline failed %d\n",status); + //} + + return 0; +} + diff --git a/HEZON_ITK/epm_register_handler.h b/HEZON_ITK/epm_register_handler.h new file mode 100644 index 0000000..bf79702 --- /dev/null +++ b/HEZON_ITK/epm_register_handler.h @@ -0,0 +1,36 @@ + +/*================================================================================= +* @file epm_register_handler.h +* @brief itk user exits function declation, to register custom handlers +* @date 2009/2/13 +* @author Ray Li +* @history +* =================================================================================== +* Date Name Description +* 13-Feb-2009 Ray created +*===================================================================================*/ + + +#ifndef EPM_REGISTER_HANDLER_CUSTOM +#define EPM_REGISTER_HANDLER_CUSTOM + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern DLLAPI int CUST_init_module(int *, va_list); +extern DLLAPI int USERSERVICE_custom_register_methods(); + + +#ifdef __cplusplus +} +#endif + +#endif + + +/** +* @} +*/ \ No newline at end of file diff --git a/HEZON_ITK/hezon_by_pass.cxx b/HEZON_ITK/hezon_by_pass.cxx new file mode 100644 index 0000000..36ac06f --- /dev/null +++ b/HEZON_ITK/hezon_by_pass.cxx @@ -0,0 +1,46 @@ +/*============================================================================= + Copyright (c) 2003-2005 UGS Corporation + Unpublished - All Rights Reserved + + File :qtmc_by_pass.cpp + Module : user_exits + + + +============================================================================================================ +DATE Name Description of Change +30_OTC_2014 mengyawei creation +$HISTORY$ + +============================================================================================================*/ + +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + extern "C" int POM_AM__set_application_bypass(logical bypass); + + int qtmc_by_pass(void *retValType) + { + int ifail = ITK_ok; + + logical bypass = FALSE; + + USERARG_get_logical_argument( &bypass ); + + POM_AM__set_application_bypass( bypass ); + + return ifail; + } + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/HEZON_ITK/kl_erp_bom.cpp b/HEZON_ITK/kl_erp_bom.cpp new file mode 100644 index 0000000..0f70a21 --- /dev/null +++ b/HEZON_ITK/kl_erp_bom.cpp @@ -0,0 +1,468 @@ +#include "util.h" +string getTime2() +{ + stringstream ss; + time_t t = time(0); + tm* local = localtime(&t); + ss << local->tm_year + 1900 << '/'; + ss << local->tm_mon + 1 << '/'; + ss << local->tm_mday << ' '; + + return ss.str(); +} + +const char* newGUID() +{ + static char buf[64] = { 0 }; + GUID guid; + if (S_OK == ::CoCreateGuid(&guid)) + { + _snprintf(buf, sizeof(buf) + , "%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X" + , guid.Data1 + , guid.Data2 + , guid.Data3 + , guid.Data4[0], guid.Data4[1] + , guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5] + , guid.Data4[6], guid.Data4[7] + ); + } + return (const char*)buf; + +} + +int send_erp(tag_t top_line,int type,string &now,char **pref_vals, Testclass ^class1, System::String ^save_url, System::String ^check_url, vector> &configs,map>> &zl_map, System::String ^key,string creation_date) +{ + printf("send_erp\n"); + int line_cnt,rel_cnt; + tag_t rev, *lines,form,relation_type,*rels; + + AOM_ask_value_tag(top_line, "bl_line_object", &rev); + GRM_find_relation_type(IMAN_master_form_rtype, &relation_type); + GRM_list_secondary_objects_only(rev, relation_type, &rel_cnt, &rels); + form = rels[0]; + + BOM_line_ask_child_lines(top_line, &line_cnt, &lines); + string item_id = get_val(top_line, "bl_item_item_id"); + string rev_id = get_val(top_line, "bl_rev_item_revision_id"); + string tc = get_val(top_line, "KL3_tc"); + Document doc; + Document doc2; + doc2.SetObject(); + doc.SetObject(); + Document::AllocatorType &al = doc.GetAllocator(); + Document::AllocatorType &al2 = doc2.GetAllocator(); + + Value data(kObjectType); + Value data2(kObjectType); + Value data_page1(kArrayType); + Value page1(kObjectType); + Value data_page2(kArrayType); + Value parent_val(kObjectType); + Value empty(kObjectType); + empty.AddMember("FNumber", "", al); + empty.AddMember("FName", "", al); + parent_val.AddMember("FNumber", "KL", al); + parent_val.AddMember("FName", "BOM", al); + string bill_no=item_id + rev_id; + page1.AddMember("FParentID", parent_val, al); + data2.AddMember("FBillNo", Value().SetString(bill_no.c_str(), al2), al2); + page1.AddMember("FBOMNumber", Value().SetString(bill_no.c_str(), al), al); + page1.AddMember("FVersion", Value().SetString(rev_id.c_str(), al), al); + page1.AddMember("FPercentErpClsID", Value().SetString(get_val(form, "kl3_item_wlsx"), al), al); + page1.AddMember("FAudDate", Value().SetString(now.c_str(), al), al); + page1.AddMember("FCheckDate", Value().SetString(creation_date.c_str(), al), al); + page1.AddMember("FEntertime", Value().SetString(now.c_str(), al), al); + Value manager(kObjectType); + manager.AddMember("FName", Value().SetString(pref_vals[4], al), al); + manager.AddMember("FNumber", Value().SetString(pref_vals[5], al), al); + page1.AddMember("FCheckerID", manager, al); + Value manager2(kObjectType); + manager2.AddMember("FName", Value().SetString(pref_vals[6], al), al); + manager2.AddMember("FNumber", Value().SetString(pref_vals[7], al), al); + page1.AddMember("FCheckID", manager2, al); + + page1.AddMember("FStatus", 1, al); + Value status_val(kObjectType); + status_val.AddMember("FNumber", "ZT02", al); + status_val.AddMember("FName", "δʹ", al); + + page1.AddMember("FBOMUseStatus", status_val, al); + Value percent_id_val(kObjectType); + percent_id_val.AddMember("FNumber", Value().SetString(item_id.c_str(), al), al); + percent_id_val.AddMember("FName", Value().SetString(get_val(top_line, "bl_item_object_name"), al), al); + page1.AddMember("FPercentItemID", percent_id_val, al); + page1.AddMember("FNote",Value().SetString(get_val(form,"kl3_item_ylxx"),al),al); + + page1.AddMember("FPercentItemName", Value().SetString(get_val(top_line, "bl_item_object_name"), al), al); + string jldwz = get_val(form, "kl3_jldwz"); + int jldw_index = jldwz.find('/'); + jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz; + + if (zl_map.find(jldwz)!=zl_map.end()) + { + Value jldw_val(kObjectType); + string temp_val = get_val(form, "kl3_item_scjldw"); + jldw_val.AddMember("FName", Value().SetString(temp_val.c_str(), al), al); + jldw_val.AddMember("FNumber", Value().SetString(zl_map[jldwz][temp_val]["id"].c_str(), al), al); + page1.AddMember("FPercentUnitID", jldw_val, al); + + //page1.AddMember("FPercentUnitID", get_jldw(get_val(form, "kl3_item_scjldw"), al, jldw_val), al); + } + page1.AddMember("FPercentItemModel", Value().SetString(get_val(form, "kl3_item_ggxh"), al), al); + string gylx = get_val(top_line, "bl_ItemRevision Master_kl3_item_gylxmc"); + page1.AddMember("FRoutingName", Value().SetString(gylx.c_str(), al), al); + Value routing_val(kObjectType); + routing_val.AddMember("FName", Value().SetString(gylx.c_str(), al), al); + routing_val.AddMember("FNumber", Value().SetString(configs[2][gylx].c_str(), al), al); + + //routing_val.AddMember("FNumber", (*configs[6])[gylx.c_str()].IsNull()?Value().SetString("",al): (*configs[6])[gylx.c_str()], al); + page1.AddMember("FRoutingID", routing_val, al); + + Value skip_val(kObjectType); + if(item_id[0] == 'B' || item_id[0] == 'C') + { + skip_val.AddMember("FNumber", "N", al); + skip_val.AddMember("FName", "", al); + + }else + { + skip_val.AddMember("FNumber", "Y", al); + skip_val.AddMember("FName", "", al); + } + page1.AddMember("FBOMSkip", skip_val, al); + page1.AddMember("FPercentQty", "1", al); + page1.AddMember("FAuxQty", "1", al); + page1.AddMember("FPercentAuxPropID", empty, al); + page1.AddMember("FNote", "", al); + page1.AddMember("FYield", 100, al); + page1.AddMember("FIsCharSourceItem", "", al); + page1.AddMember("FTranType", 50, al); + page1.AddMember("FInterID", 6297, al); + page1.AddMember("FMultiCheckStatus", 2, al); + + + data_page1.PushBack(page1,al); + printf("end page1\n"); + for (auto j = 0; j writer(sb); + doc.Accept(writer); + printf("data:%s\n", sb.GetString()); + string result = ConvertToString(class1->Send(save_url, convert_to_cstring(sb.GetString()),key)); + printf("result:%s\n", result.c_str()); + if(result[0]=='s') + { + LOG(INFO) << result; + data2.AddMember("FUserName", "administrator", al2); + data2.AddMember("FUseDirection", "1", al2); + doc2.AddMember("Data", data2, al2); + StringBuffer sb2; + Writer writer2(sb2); + doc2.Accept(writer2); + printf("data2:%s\n", sb2.GetString()); + result = ConvertToString(class1->Send(check_url, convert_to_cstring(sb2.GetString()),key)); + printf("result2:%s\n", result.c_str()); + + if(result[0]=='s') + { + LOG(INFO) << result; + }else + { + LOG(ERROR) << result; + EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str()); + return 1; + } + }else + { + LOG(ERROR) << result; + + EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str()); + return 1; + } + return 0; + +} +int erp_bom(tag_t task, string key_str, string pref1, string pref2) +{ + printf("erp_bom start\n"); + tag_t root_task, *atts, win; + int att_cnt; + EPM_ask_root_task(task, &root_task); + EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &atts); + int pref_cnt, pref_cnt2; + char **pref_vals, **pref_vals2; + PREF_ask_char_values(pref1.c_str(), &pref_cnt, &pref_vals); + PREF_ask_char_values(pref2.c_str(), &pref_cnt2, &pref_vals2); + vector> configs; + Document doc; + doc.SetObject(); + Document::AllocatorType &al = doc.GetAllocator(); + map>> zl_map; + string creation_date = getTime2(); + for (auto i = 0; i> temp_map; + for(auto k=j->value.MemberBegin();k!=j->value.MemberEnd();k++) + { + string name = k->name.GetString(); + map temp_map2; + if(name=="id") + { + temp_map2["id"] = k->value.GetString(); + }else + { + for(auto l=k->value.MemberBegin();l!=k->value.MemberEnd();l++) + { + temp_map2[l->name.GetString()] = l->value.GetString(); + + } + } + temp_map[name] = temp_map2; + + } + zl_map[j->name.GetString()] = temp_map; + } + } + if(i==1||i>4) + { + Document temp_doc; + temp_doc.Parse(pref_vals2[i]); + map temp_map; + for(auto j=temp_doc.MemberBegin();j!=temp_doc.MemberEnd();j++) + { + temp_map[j->name.GetString()] = j->value.GetString(); + } + configs.push_back(temp_map); + } + } + printf("pref_cnt:%d\n", pref_cnt); + string ip = pref_vals[0]; + string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1]; + Testclass ^class1 = gcnew Testclass(); + System::String ^key = convert_to_cstring(key_str.c_str()); + + string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key)); + printf("token:%s\n", token.c_str()); + string s_url = ip + "/K3API/BOM/Save?token=" + token; + string c_url = ip + "/K3API/BOM/CheckUse?token=" + token; + System::String ^save_url = convert_to_cstring(s_url.c_str()); + System::String ^check_url = convert_to_cstring(c_url.c_str()); + + BOM_create_window(&win); + string now = getTime(); + for (auto i = 0; i configs; + Document doc0, doc1, doc2, doc3, doc4, doc5,doc6,doc7; + vector vec; + vec.push_back(&doc0); + vec.push_back(&doc1); + vec.push_back(&doc2); + vec.push_back(&doc3); + vec.push_back(&doc4); + vec.push_back(&doc5); + vec.push_back(&doc6); + vec.push_back(&doc7); + + for (auto i = 0; iParse(pref_vals2[i]); + configs.push_back(vec[i]); + } + string ip = pref_vals[0]; + string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1]; + + Testclass ^class1 = gcnew Testclass(); + System::String ^key = convert_to_cstring(key_str.c_str()); + + string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key)); + printf("token:%s\n", token.c_str()); + string s_url = ip + "/K3API/Material/Save?token=" + token; + string c_url = ip + "/K3API/Material/GetDetail?token=" + token; + System::String ^save_url = convert_to_cstring(s_url.c_str()); + System::String ^check_url = convert_to_cstring(c_url.c_str()); + string u_url = ip + "/K3API/Material/Update?token=" + token; + System::String ^update_url = convert_to_cstring(u_url.c_str()); + + POM_AM__set_application_bypass(true); + printf("att_cnt:%d\n", att_cnt); + for (auto i = 0; i check_writer(check_sb); + bool is_update = true; + + check_doc.Accept(check_writer); + string check_result = ConvertToString(class1->Send(check_url, convert_to_cstring(check_sb.GetString()), key)); + printf("check_result:%s\n", check_result.c_str()); + if(check_result[0]!='s') + { + LERROR << "check error:" << check_result; + printf("check error\n"); + break; + } + if(check_result.find("ڻûзȨ")!=-1) + { + is_update = false; + } + doc.SetObject(); + Document::AllocatorType &al = doc.GetAllocator(); + Value data(kObjectType); + printf("is_update:%d\n", is_update); + if(is_update) + { + string syzt = get_val(atts[i], "kl3_syzt"); + if (syzt == "") + continue; + if (type != 1 && type != 2 && type != 6) + { + data.AddMember("Fmaund", 0, al); + } + else + { + Value maund(kObjectType); + string zldw = get_val(atts[i], "kl3_zldw"); + maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al); + maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al); + data.AddMember("Fmaund", maund, al); + } + printf("111\n"); + + Value manager(kObjectType); + manager.AddMember("FName", Value().SetString(pref_vals[2], al), al); + manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al); + data.AddMember("FDSManagerID", manager, al); + + data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al); + data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); + data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al); + // if(type<3||type>5) + // { + // data.AddMember("FKFPeriod", Value().SetString(get_val(atts[i], "kl3_bzqt"), al), al); + // } + // data.AddMember("FISKFPeriod", true, al); + + data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al); + data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al); + + + data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al); + + string jldwz = get_val(atts[i], "kl3_jldwz"); + int jldw_index = jldwz.find('/'); + jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz; + Value &jldw_val = (*configs[4])[jldwz.c_str()]; + if (!jldw_val.IsNull()) + { + Value jldw(kObjectType); + jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al); + jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al); + data.AddMember("FUnitGroupID", jldw, al); + data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al); + data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al); + data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al); + data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al); + data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al); + } + printf("222\n"); + if(type!=2){ + data.AddMember("FLength", 0, al); + data.AddMember("FWidth", 0, al); + data.AddMember("FHeight", 0, al); + data.AddMember("FSize", 0, al); + }else{ + int int_val; + double db_val; + char *ch_val; + AOM_ask_value_int(atts[i],"kl3_chang",&int_val); + db_val=(double)int_val/1000; + data.AddMember("FLength", db_val, al); + AOM_ask_value_int(atts[i],"kl3_kuan",&int_val); + db_val=(double)int_val/1000; + data.AddMember("FWidth", db_val, al); + AOM_ask_value_int(atts[i],"kl3_gao",&int_val); + db_val=(double)int_val/1000; + data.AddMember("FHeight", db_val, al); + AOM_ask_value_string(atts[i],"kl3_dxtj",&ch_val); + db_val=atof(ch_val); + data.AddMember("FSize", db_val, al); + } + switch (type) + { + case 0: + // data.AddMember("FDefaultLoc", 651, al); + // break; + case 1: + case 2: + data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al); + + break; + case 3: + case 5: + data.AddMember("FDefaultLoc", 666, al); + break; + case 4: + data.AddMember("FDefaultLoc", 667, al); + break; + default: + break; + } + if (type == 0) + { + data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al); + data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al); + data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al); + data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); + data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); + data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al); + + } + if (type == 0) + { + string inspect = get_val(atts[i], "kl3_cgjyfs"); + int inspect_val = 353; + if (inspect == "ȫ") + { + inspect_val = 351; + } + else if (inspect == "") + { + inspect_val = 352; + }else if (inspect == "") + { + inspect_val = 353; + } + data.AddMember("FInspectionLevel", inspect_val, al); + + } + if(type==1||type==2||type==6) + { + string ly_val = get_val(atts[i], "kl3_ly"); + Value source_val(kObjectType); + + if(ly_val=="ע첿") + { + source_val.AddMember("FName", "ע첿", al); + source_val.AddMember("FNumber", "13", al); + }else if(ly_val=="첿") + { + source_val.AddMember("FName", "첿", al); + source_val.AddMember("FNumber", "14", al); + }else + { + source_val.AddMember("FName", "", al); + source_val.AddMember("FNumber", "", al); + } + data.AddMember("FSource", source_val, al); + + } + if (type == 2) + { + Value type_id(kObjectType); + string wlfl = get_val(atts[i], "kl3_wlfl"); + type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al); + type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al); + data.AddMember("FTypeID", type_id, al); + data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); + data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al); + data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al); + data.AddMember("F_113", Value().SetString(get_val(atts[i], "kl3_cx"), al), al); + data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al); + data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al); + data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al); + data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al); + data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); + data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al); + data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al); + data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al); + string s = ""; + data.AddMember("F_136", s== get_val(atts[i], "kl3_sfyz")?1:0, al); + data.AddMember("F_138", s == get_val(atts[i], "kl3_sfsbz") ? 1 : 0, al); + data.AddMember("F_139", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al); + data.AddMember("F_142", Value().SetString(get_val(atts[i], "kl3_MOQ"), al), al); + data.AddMember("F_143", Value().SetString(get_val(atts[i], "kl3_ydcgzq"), al), al); + } + if (type == 4) + { + data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al); + data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al); + data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al); + } + Value data2(kObjectType); + data2.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); + data2.AddMember("Data", data, al); + doc.AddMember("Data", data2, al); + }else + { + + data.AddMember("Fdeleted", 0, al); + data.AddMember("FTrack", 76, al); + data.AddMember("FDefaultReadyLoc", 664, al); + data.AddMember("FCostProject", 57, al); + data.AddMember("FPlanMode", 14036, al); + data.AddMember("FOrderTrategy", 331, al); + data.AddMember("FCtrlType", 14039, al); + data.AddMember("FBeforeExpire", 0, al); + data.AddMember("FSOChkMde", 352, al); + data.AddMember("FWthDrwChkMde", 352, al); + data.AddMember("FOtherChkMde", 352, al); + data.AddMember("FQtyDecimal", 8, al); + data.AddMember("FUseState", 341, al); + data.AddMember("FGrossWeight", 0, al); + data.AddMember("FNetWeight", 0, al); + + if(type==1) + { + data.AddMember("FPriceDecimal", 10, al); + }else if(type==2) + { + data.AddMember("FPriceDecimal", 6, al); + + }else + { + data.AddMember("FPriceDecimal", 4, al); + + } + + if(type==1||type==2||type==6) + { + string ly_val = get_val(atts[i], "kl3_ly"); + Value source_val(kObjectType); + + if(ly_val=="ע첿") + { + source_val.AddMember("FName", "ע첿", al); + source_val.AddMember("FNumber", "13", al); + }else if(ly_val=="첿") + { + source_val.AddMember("FName", "첿", al); + source_val.AddMember("FNumber", "14", al); + }else + { + source_val.AddMember("FName", "", al); + source_val.AddMember("FNumber", "", al); + } + data.AddMember("FSource", source_val, al); + + } + printf("111\n"); + if (type != 1 && type != 2 && type != 6) + { + data.AddMember("Fmaund", 0, al); + } + else + { + Value maund(kObjectType); + string zldw = get_val(atts[i], "kl3_zldw"); + maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al); + maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al); + data.AddMember("Fmaund", maund, al); + } + if(type!=2){ + data.AddMember("FLength", 0, al); + data.AddMember("FWidth", 0, al); + data.AddMember("FHeight", 0, al); + data.AddMember("FSize", 0, al); + }else{ + int int_val; + double db_val; + char *ch_val; + AOM_ask_value_int(atts[i],"kl3_chang",&int_val); + db_val=(double)int_val/1000; + data.AddMember("FLength", db_val, al); + AOM_ask_value_int(atts[i],"kl3_kuan",&int_val); + db_val=(double)int_val/1000; + data.AddMember("FWidth", db_val, al); + AOM_ask_value_int(atts[i],"kl3_gao",&int_val); + db_val=(double)int_val/1000; + data.AddMember("FHeight", db_val, al); + AOM_ask_value_string(atts[i],"kl3_dxtj",&ch_val); + db_val=atof(ch_val); + data.AddMember("FSize", db_val, al); + } + + data.AddMember("FLenDecimal", 0, al); + data.AddMember("FCubageDecimal", 0, al); + data.AddMember("FWeightDecimal", 0, al); + Value manager(kObjectType); + manager.AddMember("FName", Value().SetString(pref_vals[2], al), al); + manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al); + data.AddMember("FDSManagerID", manager, al); + + data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al); + data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); + data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al); + + data.AddMember("FPlanTrategy", type<3 ? 321 : 324, al); + if (type == 0) + { + string inspect = get_val(atts[i], "kl3_cgjyfs"); + int inspect_val = 353; + if (inspect == "ȫ") + { + inspect_val = 351; + } + else if (inspect == "") + { + inspect_val = 352; + }else if (inspect == "") + { + inspect_val = 353; + } + data.AddMember("FInspectionLevel", inspect_val, al); + + } + else + { + data.AddMember("FInspectionLevel", type<2 ? 353 : 352, al); + + } + + data.AddMember("FProChkMde", type<1 ? 353 : 352, al); + + data.AddMember("FWWChkMde", type<1 ? 353 : 352, al); + + data.AddMember("FStkChkMde", type<5 ? 353 : 352, al); + data.AddMember("FBatchManager", type<3 ? 1 : 0, al); + + data.AddMember("FISKFPeriod", (type<3 || type>5) ? 1 : 0, al); + + data.AddMember("FKFPeriod", (type<3 || type>5) ? (Value().SetString(get_val(atts[i], "kl3_bzqt"), al)) : Value().SetString("", al), al); + data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al); + data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al); + + data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al); + printf("222\n"); + + string jldwz = get_val(atts[i], "kl3_jldwz"); + int jldw_index = jldwz.find('/'); + jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz; + Value &jldw_val = (*configs[4])[jldwz.c_str()]; + if (!jldw_val.IsNull()) + { + + Value jldw(kObjectType); + jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al); + jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al); + data.AddMember("FUnitGroupID", jldw, al); + data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al); + data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al); + data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al); + data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al); + data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al); + } + + string item_id = get_val(rev, "item_id"); + item_id = item_id.substr(0, 3); + + data.AddMember("FAcctID", get_acct(item_id, al, 0, *configs[2]), al); + data.AddMember("FSaleAcctID", get_acct(item_id, al, 1, *configs[2]), al); + data.AddMember("FCostAcctID", get_acct(item_id, al, 2, *configs[2]), al); + + printf("333\n"); + + switch (type) + { + case 0: + // data.AddMember("FDefaultLoc", 651, al); + // break; + case 1: + case 2: + data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al); + break; + case 3: + case 5: + data.AddMember("FDefaultLoc", 666, al); + break; + case 4: + data.AddMember("FDefaultLoc", 667, al); + break; + default: + break; + } + if (type == 0) + { + data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al); + data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al); + data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al); + data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); + data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); + data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al); + data.AddMember("FStockTime", 1, al); + + } + if (type == 2) + { + Value type_id(kObjectType); + string wlfl = get_val(atts[i], "kl3_wlfl"); + type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al); + type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al); + + data.AddMember("FTypeID", type_id, al); + data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); + data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al); + data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al); + data.AddMember("F_113", Value().SetString(get_val(atts[i], "kl3_cx"), al), al); + data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al); + data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al); + data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al); + data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al); + data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); + data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al); + data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al); + data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al); + string s=""; + data.AddMember("F_136", s== get_val(atts[i], "kl3_sfyz")?1:0, al); + data.AddMember("F_138", s == get_val(atts[i], "kl3_sfsbz") ? 1 : 0, al); + //data.AddMember("F_136", 0, al); + //data.AddMember("F_138", 0, al); + data.AddMember("F_139", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al); + data.AddMember("F_142", Value().SetString(get_val(atts[i], "kl3_MOQ"), al), al); + data.AddMember("F_143", Value().SetString(get_val(atts[i], "kl3_ydcgzq"), al), al); + } + if (type == 4) + { + data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al); + data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al); + data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al); + } + doc.AddMember("Data", data, al); + + } + + StringBuffer sb; + Writer writer(sb); + doc.Accept(writer); + printf("data:%s\n", sb.GetString()); + string result = ConvertToString(class1->Send(is_update?update_url:save_url, convert_to_cstring(sb.GetString()),key)); + if(result[0]=='s') + { + LOG(INFO) << result; + }else + { + POM_AM__set_application_bypass(false); + + LOG(ERROR) << result; + EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str()); + + return 1; + } + printf("result:%s\n", result.c_str()); + } + POM_AM__set_application_bypass(false); + + return 0; +} +int kl_erp_save(EPM_action_message_t msg) +{ + + int arg_cnt = TC_number_of_arguments(msg.arguments); + string key, pref1, pref2; + for(auto i=0;i configs; + Document doc0, doc1, doc2, doc3, doc4, doc5, doc6, doc7; + vector vec; + vec.push_back(&doc0); + vec.push_back(&doc1); + vec.push_back(&doc2); + vec.push_back(&doc3); + vec.push_back(&doc4); + vec.push_back(&doc5); + vec.push_back(&doc6); + vec.push_back(&doc7); + + for (auto i = 0; iParse(pref_vals2[i]); + configs.push_back(vec[i]); + } + + string ip = pref_vals[0]; + string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1]; + POM_AM__set_application_bypass(true); + System::String ^key = convert_to_cstring(key_str.c_str()); + Testclass ^class1 = gcnew Testclass(); + string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key)); + printf("token:%s\n", token.c_str()); + string s_url = ip + "/K3API/Material/Update?token=" + token; + System::String ^save_url = convert_to_cstring(s_url.c_str()); + + for (auto i = 0; i5) ? (Value().SetString(get_val(atts[i], "kl3_bzqt"), al)) : Value().SetString("", al), al); + data.AddMember("FISKFPeriod", true, al); + + data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al); + data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al); + + + data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al); + + string jldwz = get_val(atts[i], "kl3_jldwz"); + int jldw_index = jldwz.find('/'); + jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz; + Value &jldw_val = (*configs[4])[jldwz.c_str()]; + if (!jldw_val.IsNull()) + { + // Value jldw(kObjectType); + // jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al); + // jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al); + // data.AddMember("FUnitGroupID", jldw, al); + data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al); + data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al); + data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al); + data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al); + data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al); + } + printf("222\n"); + switch (type) + { + case 0: + data.AddMember("FDefaultLoc", 651, al); + break; + case 1: + case 2: + data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al); + + break; + case 3: + case 5: + data.AddMember("FDefaultLoc", 666, al); + break; + case 4: + data.AddMember("FDefaultLoc", 667, al); + break; + default: + break; + } + if (type == 0) + { + data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al); + data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al); + data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al); + data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); + data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); + data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al); + + } + if (type == 2) + { + Value type_id(kObjectType); + string wlfl = get_val(atts[i], "kl3_wlfl"); + type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al); + type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al); + data.AddMember("FTypeID", type_id, al); + data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); + data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al); + data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al); + data.AddMember("F_124", Value().SetString(get_val(atts[i], "kl3_cx"), al), al); + data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al); + data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al); + data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al); + data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al); + data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); + data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al); + data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al); + data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al); + data.AddMember("F_136", 0, al); + data.AddMember("F_138", 0, al); + data.AddMember("F_137", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al); + } + if (type == 4) + { + data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al); + data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al); + data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al); + } + Value data2(kObjectType); + data2.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); + data2.AddMember("Data", data, al); + doc.AddMember("Data", data2, al); + StringBuffer sb; + Writer writer(sb); + doc.Accept(writer); + printf("data:%s\n", sb.GetString()); + string result = ConvertToString(class1->Send(save_url, convert_to_cstring(sb.GetString()),key)); + printf("result:%s\n", result.c_str()); + if(result[0]=='s') + { + LOG(INFO) << result; + }else + { + LOG(ERROR) << result; + } + } + + POM_AM__set_application_bypass(false); + + return 0; +} + +int kl_erp_update(EPM_action_message_t msg) +{ + int arg_cnt = TC_number_of_arguments(msg.arguments); + string key, pref1, pref2; + for (auto i = 0; i +#include +#include +#include "error_handling.h" +#include "epm_register_handler.h" +#include "epm_handler_common.h" + + +#ifdef __cplusplus +extern "C" { +#endif + + + /** + * @fn extern "C" DLLAPI int liborigin_register_callbacks + * @return usually return ITK_ok + * @brief liborigin customization entry + */ + DLLAPI int libqtmc_register_callbacks() + { + int ifail = ITK_ok; + + CALL( ifail = CUSTOM_register_exit( + "libqtmc", + "USERSERVICE_register_methods", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods) ); + fprintf( stdout, "\n libqtmc registering USERSERVICE_register_methods completed!\n" ); + + CALL( ifail = CUSTOM_register_exit( + "libqtmc", + "USER_gs_shell_init_module", + (CUSTOM_EXIT_ftn_t)CUST_init_module)); + fprintf( stdout, "\n libqtmc registering USER_gs_shell_init_module completed!\n" ); + + return ifail; + } + +#ifdef __cplusplus +} +#endif + + + + +/** +* @} +*/ \ No newline at end of file diff --git a/HEZON_ITK/stdafx.cpp b/HEZON_ITK/stdafx.cpp new file mode 100644 index 0000000..8e8922b --- /dev/null +++ b/HEZON_ITK/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : ֻ׼ļԴļ +// HEZON_ITK.pch ΪԤͷ +// stdafx.obj ԤϢ + +#include "stdafx.h" + +// TODO: STDAFX.H +// κĸͷļڴļ diff --git a/HEZON_ITK/stdafx.h b/HEZON_ITK/stdafx.h new file mode 100644 index 0000000..9d41f0f --- /dev/null +++ b/HEZON_ITK/stdafx.h @@ -0,0 +1,15 @@ +// stdafx.h : ׼ϵͳļİļ +// Ǿʹõĵ +// ضĿİļ +// + +#pragma once + +#include "targetver.h" + +#include +#include + + + +// TODO: ڴ˴óҪͷļ diff --git a/HEZON_ITK/string_helper.cpp b/HEZON_ITK/string_helper.cpp new file mode 100644 index 0000000..5a7322f --- /dev/null +++ b/HEZON_ITK/string_helper.cpp @@ -0,0 +1,146 @@ +/** +* @file string_helper.cpp +* @brief string utility functions' implemention +* @author James +* @history +* =================================================================================== +* Date Name Description of Change +* 09-July-2008 James +* 14-Jau-2009 James modify Split functions, add trim blank characters +*/ +#pragma warning(disable:4996) +// +//#include +//#include +//#include +#include "string_helper.h" + +string TrimString( string strArg ) +{ + size_t index1 = 0; + index1 = strArg.find_first_not_of( ' '); + if( index1 != string::npos ) + strArg.erase( strArg.begin(), strArg.begin()+index1 ); + index1 = strArg.find_last_not_of( ' '); + if( index1 != string::npos ) + strArg.erase( strArg.begin() + index1 + 1 ); + return strArg; +} + +void Split( string strArg, char spliter, vector &ans ) +{ + ans.clear(); + size_t index0 = 0; + string one_arg; + if ( strArg.find_first_not_of(' ') == string.npos ) + strArg = ""; + while( strArg.size()>0 ) + { + index0 = strArg.find_first_of( spliter ); + if( index0 != string::npos ) + { + one_arg = strArg.substr( 0,index0 ); + strArg = strArg.substr( index0 + 1 ); + ans.push_back( one_arg ); + } + else + { + ans.push_back( strArg ); + break; + } + } +} + +void Split( string strArg, string spliter, vector &ans ) +{ + + ans.clear(); + + size_t index0; + string one_arg; + + if ( strArg.find_first_not_of(" ") == string::npos ) + strArg = ""; + + + while( strArg.size()>0 ) + { + + index0 = strArg.find(spliter); + + if( index0 != string::npos ) + { + + one_arg = strArg.substr( 0, index0 ); + strArg = strArg.substr( index0 + spliter.size() ); + + ans.push_back( one_arg ); + } + else + { + + ans.push_back( strArg ); + break; + } + } +} + + +void RemoveLiner( string &in, string &out ) +{ + char buf[BUFSIZ] = ""; + for( int i=0; i<(int)in.size(); i++ ) + { + if( in[i] == '\n') + continue; + else + sprintf( buf,"%s%c", buf, in[i] ); + } + out.assign(buf); +} + +////Converting a WChar string to a Ansi string +//std::string WChar2Ansi(LPCWSTR pwszSrc) +//{ +// int nLen = WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, NULL, 0, NULL, NULL); +// +// if (nLen<= 0) return std::string(""); +// +// char* pszDst = new char[nLen]; +// if (NULL == pszDst) return std::string(""); +// +// WideCharToMultiByte(CP_ACP, 0, pwszSrc, -1, pszDst, nLen, NULL, NULL); +// pszDst[nLen -1] = 0; +// +// std::string strTemp(pszDst); +// delete [] pszDst; +// +// return strTemp; +//} +// +//string ws2s(wstring& inputws){ return WChar2Ansi(inputws.c_str()); } +// +////Converting a Ansi string to WChar string +//std::wstring Ansi2WChar(LPCSTR pszSrc, int nLen) +//{ +// int nSize = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pszSrc, nLen, 0, 0); +// if(nSize <= 0) return NULL; +// +// WCHAR *pwszDst = new WCHAR[nSize+1]; +// if( NULL == pwszDst) return NULL; +// +// MultiByteToWideChar(CP_ACP, 0,(LPCSTR)pszSrc, nLen, pwszDst, nSize); +// pwszDst[nSize] = 0; +// +// if( pwszDst[0] == 0xFEFF) // skip Oxfeff +// for(int i = 0; i < nSize; i ++) +// pwszDst[i] = pwszDst[i+1]; +// +// wstring wcharString(pwszDst); +// delete pwszDst; +// +// return wcharString; +//} +// +//std::wstring s2ws(const string& s){ return Ansi2WChar(s.c_str(),s.size());} + diff --git a/HEZON_ITK/string_helper.h b/HEZON_ITK/string_helper.h new file mode 100644 index 0000000..b4f7532 --- /dev/null +++ b/HEZON_ITK/string_helper.h @@ -0,0 +1,25 @@ +/** +* @file string_helper.h +* @brief string utilities to help dealing with string +* @author James +* @history +* =================================================================================== +* Date Name Description of Change +* 09-July-2008 James +*/ + +#ifndef STRING_HELPER +#define STRING_HELPER + +#include +#include +using namespace std; + +string TrimString( string strArg ); +void Split( string strArg, char spliter, vector &ans ); +void Split( string strArg, string spliter, vector &ans ); +void RemoveLiner( string &in, string &out ); +//string ws2s(wstring& inputws); +//wstring s2ws(const string& s); + +#endif \ No newline at end of file diff --git a/HEZON_ITK/targetver.h b/HEZON_ITK/targetver.h new file mode 100644 index 0000000..7a7d2c8 --- /dev/null +++ b/HEZON_ITK/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// SDKDDKVer.h õ߰汾 Windows ƽ̨ + +// ҪΪǰ Windows ƽ̨Ӧó WinSDKVer.h +// WIN32_WINNT ΪҪֵ֧ƽ̨Ȼٰ SDKDDKVer.h + +#include diff --git a/HEZON_ITK/test.cpp b/HEZON_ITK/test.cpp new file mode 100644 index 0000000..e152273 --- /dev/null +++ b/HEZON_ITK/test.cpp @@ -0,0 +1,206 @@ +#include "epm_handler_common.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tc/envelope.h" +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include "ce/ce.h" +#include +#include +#include +#include +#include +#include "string" +#include "sstream" +#include +#include +#include +#include "ctime" +#include "tchar.h" +#include "jni.h" + +using namespace std; +extern "C" int POM_AM__set_application_bypass(logical bypass); +bool isTypeOf(tag_t objtag, const char * type_name) { + tag_t type = NULLTAG; + TCTYPE_ask_object_type(objtag, &type); + tag_t item_type = NULLTAG; + TCTYPE_find_type(type_name, "", &item_type); + bool is_type = false; + if (item_type != NULLTAG) { + logical isok = FALSE; + TCTYPE_is_type_of(type, item_type, &isok); + if (isok) { + is_type = true; + } + } + return is_type; +} + +string GBKToUTF8(const char* strGBK) +{ + int len = MultiByteToWideChar(CP_ACP, 0, strGBK, -1, NULL, 0); + wchar_t* wstr = new wchar_t[len+1]; + memset(wstr, 0, len+1); + MultiByteToWideChar(CP_ACP, 0, strGBK, -1, wstr, len); + len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL); + char* str = new char[len+1]; + memset(str, 0, len+1); + WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL); + string strTemp = str; + if(wstr) delete[] wstr; + if(str) delete[] str; + return strTemp; +} + +int sap(EPM_action_message_t msg) +{ + printf("start sap\n"); + int ifail = ITK_ok, att_count; + tag_t rootTask, *attachments, user_tag,relation_type; + char *action_string, *user_name, *task_name; + + EPM_ask_root_task(msg.task, &rootTask); + + EPM_ask_attachments(rootTask,EPM_target_attachment, &att_count, &attachments); + TC_argument_list_t * arguments = msg.arguments; + int arg_cnt = TC_number_of_arguments(arguments), status = 0; + map paras; + + for (auto i = 0; iFindClass("zplm_interface/SAPTest"); + jmethodID methodId_main = env->GetStaticMethodID(class_Test, "sap", "([Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Z"); + jobjectArray info = env->NewObjectArray(2, env->FindClass("Ljava/lang/String;"), NULL); + + + int index=0; + + PREF_ask_char_values("Origin_SAP_URL",&pref_cnt,&pref_vals); + jstring url=env->NewStringUTF(pref_vals[0]); + PREF_ask_char_values("Origin_SAP_PassWord",&pref_cnt,&pref_vals); + env->SetObjectArrayElement(info, 0, env->NewStringUTF(pref_vals[0])); + env->SetObjectArrayElement(info, 1, env->NewStringUTF(pref_vals[1])); + + vector vec; + vec.push_back("cdc_Partnum"); + vec.push_back("CustName"); + vec.push_back("DCM_specification"); + vec.push_back("cdc_Specsize1"); + vec.push_back("DCM_Weight"); + vec.push_back("DCM_SurfState"); + vec.push_back("cdc_WetherTSTM"); + vec.push_back("cdc_InWPTDT"); + vec.push_back("cdc_WithWPTSTM"); + + printf("start\n"); + GRM_find_relation_type(IMAN_master_form_rtype, &relation_type); + printf("type:%s\n",paras["itemRev_type"].c_str()); + for(int i=0;iNewObjectArray(vec.size(), env->FindClass("Ljava/lang/String;"), NULL); + + for(auto j=0;j3){ + temp=temp.substr(3); + } + printf("args:%s\n",temp.c_str()); + temp=GBKToUTF8(temp.c_str()); + env->SetObjectArrayElement(strs, j, env->NewStringUTF(temp.c_str())); + } + printf("pass11"); + jboolean result= env->CallStaticBooleanMethod(class_Test, methodId_main, strs, url,info); + printf("result:%d\n",result==JNI_TRUE); + if(result==JNI_FALSE){ + printf("error\n"); + EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, "SAP쳣SAPϵͳԱϵ"); + return 1; + } + } + } + jvm->DestroyJavaVM(); + FreeLibrary(hModule); + return 0; +} + diff --git a/HEZON_ITK/test.h b/HEZON_ITK/test.h new file mode 100644 index 0000000..939acd8 --- /dev/null +++ b/HEZON_ITK/test.h @@ -0,0 +1,56 @@ + +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tc/envelope.h" +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include "ce/ce.h" +#include +#include +#include +#include +#include "string" +#include "sstream" +#include +#include +#include +#include "ctime" +#include "tchar.h" +#include "rapidjson/document.h" // rapidjson's DOM-style API +#include "rapidjson/writer.h" +#include "rapidjson/stringbuffer.h" +#include "rapidjson/prettywriter.h" +#include "easylogging++.h" \ No newline at end of file diff --git a/HEZON_ITK/util.cpp b/HEZON_ITK/util.cpp new file mode 100644 index 0000000..54ee656 --- /dev/null +++ b/HEZON_ITK/util.cpp @@ -0,0 +1,108 @@ +#include "util.h" +bool isTypeOf(tag_t objtag, const char * type_name) { + tag_t type = NULLTAG; + TCTYPE_ask_object_type(objtag, &type); + tag_t item_type = NULLTAG; + TCTYPE_find_type(type_name, "", &item_type); + bool is_type = false; + if (item_type != NULLTAG) { + logical isok = FALSE; + TCTYPE_is_type_of(type, item_type, &isok); + if (isok) { + is_type = true; + } + } + return is_type; +} + +string ConvertToString(System::String^ str) +{ + char* p = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str); + return p; +} +System::String ^ convert_to_cstring(const char *p) +{ + return System::Runtime::InteropServices::Marshal::PtrToStringAnsi((System::IntPtr)(char *)p); +} + +char * get_val(tag_t tag, char *name) +{ + char *val; + AOM_UIF_ask_value(tag, name, &val); + return val; +} +char * get_real_val(tag_t tag, char *name) +{ + char *val; + AOM_ask_value_string(tag, name, &val); + return val; +} + + + +Value get_jldw(const char *str, Document::AllocatorType &al,Value &config) +{ + Value val(kObjectType); + if(config.HasMember(str)) + { + val.AddMember("FName", Value().SetString(str,al), al); + val.AddMember("FNumber",Value().SetString(config[str]["id"].GetString(),al), al); + } + return val; +} + +Value get_wlsx(string str, Document::AllocatorType &al,Value &config) +{ + Value val(kObjectType); + char *name = "", *id = ""; + if(config.HasMember(str.c_str())) + { + val.AddMember("FID", Value().SetString(config[str.c_str()].GetString(), al), al); + val.AddMember("FName", Value().SetString(str.c_str(), al), al); + } + + return val; +} + +Value get_acct(string str, Document::AllocatorType &al,int type,Value &config) +{ + Value val(kObjectType); + + if(config.HasMember(str.c_str())) + { + val.AddMember("FName",Value().SetString(config[str.c_str()]["name"].GetString(),al), al); + if (type == 0) + { + val.AddMember("FNumber", Value().SetString(config[str.c_str()]["acct"].GetString(), al), al); + } + else if (type == 1) + { + val.AddMember("FNumber", Value().SetString(config[str.c_str()]["sale"].GetString(), al), al); + } + else + { + val.AddMember("FNumber", Value().SetString(config[str.c_str()]["cost"].GetString(), al), al); + } + } + + return val; +} + +string getTime() +{ + stringstream ss; + time_t t = time(0); + tm* local = localtime(&t); + ss << local->tm_year + 1900 << '-'; + + ss << local->tm_mon + 1 << '-'; + + ss << local->tm_mday << ' '; + + ss << local->tm_hour << ':'; + + ss << local->tm_min << ':'; + + ss << local->tm_sec; + return ss.str(); +} \ No newline at end of file diff --git a/HEZON_ITK/util.h b/HEZON_ITK/util.h new file mode 100644 index 0000000..9681cfa --- /dev/null +++ b/HEZON_ITK/util.h @@ -0,0 +1,82 @@ +#pragma once +#using "D:/test/declib.dll" + +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tc/envelope.h" +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include "ce/ce.h" +#include +#include +#include +#include +#include "string" +#include "sstream" +#include +#include +#include +#include "ctime" +#include "tchar.h" +#include "rapidjson/document.h" // rapidjson's DOM-style API +#include "rapidjson/writer.h" +#include "rapidjson/stringbuffer.h" +#include "rapidjson/prettywriter.h" +#include "easylogging++.h" +#ifndef easylog +#define easylog + +_INITIALIZE_EASYLOGGINGPP +#endif + +using namespace easyloggingpp; +using namespace rapidjson; + +using namespace Testdll; + +using namespace std; + +extern "C" int POM_AM__set_application_bypass(logical bypass); +string ConvertToString(System::String^ str); +char * get_val(tag_t tag, char *name); +char * get_real_val(tag_t tag, char *name); + +bool isTypeOf(tag_t objtag, const char * type_name); +Value get_jldw(const char *str, Document::AllocatorType &al,Value &val); +Value get_wlsx(string str, Document::AllocatorType &al,Value &val); +System::String ^ convert_to_cstring(const char *p); +Value get_acct(string str, Document::AllocatorType &al, int type,Value &val); +string getTime(); \ No newline at end of file