commit f48201c70a7a912f45be38b8a5cbdba19c4e6f10 Author: hezq Date: Tue May 19 10:29:08 2020 +0800 使用sourcetree备份 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dd09e51 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.git.zip +jf_itk.sdf +JK_itk.sdf diff --git a/JK_itk.sln b/JK_itk.sln new file mode 100644 index 0000000..3a65d5a --- /dev/null +++ b/JK_itk.sln @@ -0,0 +1,29 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JK_itk", "jf_itk\jf_itk.vcxproj", "{AEABC483-FCBD-45F5-9884-8FA4C5A9892D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Itanium = Debug|Itanium + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Itanium = Release|Itanium + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Debug|Itanium.ActiveCfg = Debug|Win32 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Debug|Win32.ActiveCfg = Debug|Win32 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Debug|Win32.Build.0 = Debug|Win32 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Debug|x64.ActiveCfg = Debug|x64 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Debug|x64.Build.0 = Debug|x64 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Release|Itanium.ActiveCfg = Release|Win32 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Release|Win32.ActiveCfg = Release|Win32 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Release|Win32.Build.0 = Release|Win32 + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D}.Release|x64.ActiveCfg = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/hz_itk.opensdf b/hz_itk.opensdf new file mode 100644 index 0000000..738a347 Binary files /dev/null and b/hz_itk.opensdf differ diff --git a/jf_erp_check_project/Release/CL.read.1.tlog b/jf_erp_check_project/Release/CL.read.1.tlog new file mode 100644 index 0000000..7cd59ed Binary files /dev/null and b/jf_erp_check_project/Release/CL.read.1.tlog differ diff --git a/jf_erp_check_project/Release/CL.write.1.tlog b/jf_erp_check_project/Release/CL.write.1.tlog new file mode 100644 index 0000000..b0408b5 Binary files /dev/null and b/jf_erp_check_project/Release/CL.write.1.tlog differ diff --git a/jf_erp_check_project/Release/cl.command.1.tlog b/jf_erp_check_project/Release/cl.command.1.tlog new file mode 100644 index 0000000..f9b3c2f Binary files /dev/null and b/jf_erp_check_project/Release/cl.command.1.tlog differ diff --git a/jf_erp_check_project/Release/jf_erp_check_project.lastbuildstate b/jf_erp_check_project/Release/jf_erp_check_project.lastbuildstate new file mode 100644 index 0000000..85a14fb --- /dev/null +++ b/jf_erp_check_project/Release/jf_erp_check_project.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Release|Win32|F:\Connor(项目管理)\继峰项目\签名\jf_itk\| diff --git a/jf_erp_check_project/Release/jf_erp_check_project.unsuccessfulbuild b/jf_erp_check_project/Release/jf_erp_check_project.unsuccessfulbuild new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_check_project/Release/jf_erp_check_project.write.1.tlog b/jf_erp_check_project/Release/jf_erp_check_project.write.1.tlog new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_check_project/Release/link.command.1.tlog b/jf_erp_check_project/Release/link.command.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_check_project/Release/link.command.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_check_project/Release/link.read.1.tlog b/jf_erp_check_project/Release/link.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_check_project/Release/link.read.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_check_project/Release/link.write.1.tlog b/jf_erp_check_project/Release/link.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_check_project/Release/link.write.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_check_project/common_itk_util.c b/jf_erp_check_project/common_itk_util.c new file mode 100644 index 0000000..730d9c4 --- /dev/null +++ b/jf_erp_check_project/common_itk_util.c @@ -0,0 +1,290 @@ +/** +* @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 + +extern "C" int AM__set_application_bypass(logical bypass); + +void ECHO(char *format, ...) +{ + //if( !YFJC_OPT_DEBUG ) + // return; + + char msg[1024]; + va_list args; + + va_start( args, format ); + vsprintf( msg, format, args ); + va_end( args ); + + printf( msg ); + TC_write_syslog( msg ); +} + +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/jf_erp_check_project/common_itk_util.h b/jf_erp_check_project/common_itk_util.h new file mode 100644 index 0000000..b08db85 --- /dev/null +++ b/jf_erp_check_project/common_itk_util.h @@ -0,0 +1,42 @@ +/** +* @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 + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} +void ECHO(char *format, ...); +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/jf_erp_check_project/error_handling.h b/jf_erp_check_project/error_handling.h new file mode 100644 index 0000000..b6b8099 --- /dev/null +++ b/jf_erp_check_project/error_handling.h @@ -0,0 +1,160 @@ +/*! +* @addtogroup common +* \file error_handling.h +* \brief +* \date 2008/6/10 +* \author Ray Li +*/ + +#ifndef SIMPLE_ERR_H_INCLUDED +#define SIMPLE_ERR_H_INCLUDED + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define BUFSIZE 512 + + +// +//#define HANDLER_ARGUMENT_ERROR EMH_USER_error_base + 1 +//#define WORKFLOW_NODE_IS_NOT_VALID EMH_USER_error_base + 2 +//#define HANDLER_PLACED_INVALID EMH_USER_error_base + 3 +// +////user errors define +////վļȱ %1$ ã +//#define ERROR_PREFERENCE_NOT_FOUND (EMH_USER_error_base + 100) + + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} + + + +//#define ECHO(X) printf X; +#define SYS_LOG(X) IMAN_write_syslog X; +#define LOG_ECHO(X) printf X; IMAN_write_syslog X; + + + +/*! +* \def CALL(x) +* ӡϢ +*/ +#define CALL(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != ITK_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + LOG_ECHO( ("ERROR: %d ERROR MSG: %s.\n",stat, err_string) ) \ + LOG_ECHO( ("Function: %s FILE: %s LINE: %d\n", #x, __FILE__, __LINE__ ) ) \ + MEM_free (err_string); \ + return (stat); \ + } \ +} + +/*! +* \def DO(x) +* ӡϢ +*/ +#define DO(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != POM_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + printf ("ERROR: %d ERROR MSG: %s.\n", stat, err_string); \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + MEM_free (err_string); \ + } \ +} + +/*! +* \def CALLRNULL(x) +* ӡϢ +*/ +#define CALLRNULL(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != ITK_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + printf ("ERROR: %d ERROR MSG: %s.\n", stat, err_string); \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + MEM_free (err_string); \ + return ((char *)NULL); \ + } \ +} + +/*! +* \def CALL2(x) +* ӡϢ +*/ +#define CALL2(x) { \ + int stat, n_ifails, *serverities, *ifails, err_count; \ + char *err_string, **texts; \ + if( (stat = (x)) != ITK_ok) \ + { \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + EMH_ask_errors( &n_ifails, (const int**)(&serverities), (const int**)(&ifails), (const char***)(&texts) );\ + for( err_count=0; err_count + + + + Debug + Itanium + + + Debug + Win32 + + + Debug + x64 + + + Release + Itanium + + + Release + Win32 + + + Release + x64 + + + + {5B00E072-1EDF-4670-81F0-555DB0C78516} + Win32Proj + jf_erp_check_project + + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + true + Unicode + + + DynamicLibrary + false + true + Unicode + + + DynamicLibrary + false + true + Unicode + + + DynamicLibrary + false + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + false + false + + + false + false + + + false + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;JF_ERP_CHECK_PROJECT_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;JF_ERP_CHECK_PROJECT_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;JF_ERP_CHECK_PROJECT_EXPORTS;%(PreprocessorDefinitions) + + + Windows + true + + + + + Level3 + + + MaxSpeed + true + true + IPLIB=none;WIN32;NDEBUG;_WINDOWS;_USRDLL;JF_ERP_CHECK_PROJECT_EXPORTS;%(PreprocessorDefinitions) + F:\Teamcenter10.1.0Env\OCI\include;F:\Teamcenter10.1.0Env\tcbin\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + IPLIB=none;WIN32;NDEBUG;_WINDOWS;_USRDLL;JF_ERP_CHECK_PROJECT_EXPORTS;%(PreprocessorDefinitions) + F:\Teamcenter10.1.0Env\OCI\include;F:\Teamcenter10.1.0Env\tcbin\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + IPLIB=none;WIN32;NDEBUG;_WINDOWS;_USRDLL;JF_ERP_CHECK_PROJECT_EXPORTS;%(PreprocessorDefinitions) + F:\Teamcenter10.1.0Env\OCI\include;F:\Teamcenter10.1.0Env\tcbin\include;%(AdditionalIncludeDirectories) + + + Windows + true + true + true + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jf_erp_check_project/jf_erp_check_project.vcxproj.filters b/jf_erp_check_project/jf_erp_check_project.vcxproj.filters new file mode 100644 index 0000000..1717db4 --- /dev/null +++ b/jf_erp_check_project/jf_erp_check_project.vcxproj.filters @@ -0,0 +1,57 @@ + + + + + {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 + + + {65de63f5-1c56-4dd5-8613-cf9edb74ee2c} + + + + + 源文件 + + + common + + + common + + + common + + + common + + + + + 头文件 + + + common + + + common + + + common + + + common + + + common + + + \ No newline at end of file diff --git a/jf_erp_check_project/ocilib.cxx b/jf_erp_check_project/ocilib.cxx new file mode 100644 index 0000000..30151e3 --- /dev/null +++ b/jf_erp_check_project/ocilib.cxx @@ -0,0 +1,440 @@ +/*===================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +======================================================================================================================= +File description: + + Filename: ocilib.cxx + Module : OCI + + This file describes OCI library Package. + +======================================================================================================================= +Date Name Description of Change +1-Feb-2015 Ray li Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#include "ocilib.h" +#include + +#define NUM 100 +#define USERNAME "infodba" +#define PASSWORD "infodba" +#define DBNAME "tc" + + +// ṹ +typedef struct{ + OCIEnv *p_env; //OCI environment handle + OCIError *p_err; //OCI error handle + OCISvcCtx *p_svc; //OCI service context handel ľ + OCIServer *p_ser; //OCI server handle + OCISession *p_usr; //OCI user session handle ûỰ + OCIStmt *p_sql; //OCI statement handle + OCIDefine *p_dfn; //OCI define handle + OCIBind *p_bnd; //OCI bind handle 󶨾 +}OCIHandleInfo; + + +// ṹ +typedef struct{ + OCIEnv *p_env; + OCIError *p_err; + OCISvcCtx *p_svc; + OCIStmt *p_sql; + OCIDefine *p_dfn; + OCIBind *p_bnd; +}OCIDATA; + + +// ִʱ +typedef struct{ + char value[NUM][NUM]; + char type[NUM][NUM]; +}SqlField; + + +// ѯʱ, +typedef struct{ + int naIntValue[NUM]; + int nIntNum; + char caCharValue[500][500]; + int nCharNum; +}SqlSelField; + +OCIHandleInfo *ociHandle = NULL; +OCIHandleInfo ociHand; + +int InitHandle(); +int _ExeSQL(char *SQL,char ** inputValue,int inputValueCount); +int _QuerySQL(char *SQL, SqlSelField *pOutField, SqlSelField *pSelField); +int GetDataFromQuery(int *pRc, SqlSelField *pOutField); +void QuitFreeHandle(); + + + + +/**************************************************************************************************************************************** +ƣ +ܣ +ڲ +ڲ + ע +*****************************************************************************************************************************************/ + + +// ʼHandler +int InitHandle() +{ + int swResult; + + ociHandle = &ociHand; + + + /*create OCI environment*/ + if(swResult = OCIEnvCreate(&ociHandle->p_env,OCI_DEFAULT,NULL,NULL,NULL,NULL,0,NULL)) // + { + printf("environment create error!\n\n"); + return -1; + } + else + { + printf("environment create success!\n\n"); + //return 0; + } + + /*init handle*/ + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_ser,OCI_HTYPE_SERVER,0,NULL)) // + { + printf("init server handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_err,OCI_HTYPE_ERROR,0,NULL)) // + { + printf("init error handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_usr,OCI_HTYPE_SESSION,0,NULL)) // + { + printf("init session handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_svc,OCI_HTYPE_SVCCTX,0,NULL)) //ľ + { + printf("init service context handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_sql,OCI_HTYPE_STMT,0,NULL)) //SQL + { + printf("init statement handle error!\n\n"); + return -1; + } + + printf("init handle success!\n\n"); + + return 0; +} + + + +// ݿ +int ConnServer(char *username,char *password,char *dbname) +{ + int swResult; + char errbuf[100]={0}; + int errcode; + + if(InitHandle() == -1)//ʼ + return -1; + + if(swResult = OCILogon(ociHandle->p_env,ociHandle->p_err,&ociHandle->p_svc,(text *)username,strlen(username),(text *)password,strlen(password),(text *)dbname,strlen(dbname))) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Error - %.*s/n", 512, errbuf); + return -1; + } + else + printf("ݿӳɹ!\n\n"); + return 0; +} + + + +// SQLij(ִSQL) +int _ExeSQL(char *SQL,char ** inputValue,int inputValueCount) +{ + int swResult,i; + int errcode; + + //ð󶨱 + OCIBind *p_bndp[100]; + + //׼SQL + if(swResult = OCIStmtPrepare(ociHandle->p_sql,ociHandle->p_err,(text *)SQL,strlen(SQL),OCI_NTV_SYNTAX,OCI_DEFAULT)) + { + printf("prepare SQL statements error!\n\n"); + } + else + { + printf("prepare SQL statements success!\n\n"); + } + + + // + for(i=0;ip_sql,&p_bndp[i],ociHandle->p_err,i+1,(dvoid *)inputValue[i],(sb4)strlen(inputValue[i])+1,SQLT_STR, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Bind Error - %.*s/n", 512, errbuf); + return -1; + } + } + + //ִSQL statements + if(swResult = OCIStmtExecute(ociHandle->p_svc,ociHandle->p_sql,ociHandle->p_err,1,0,NULL,NULL,OCI_DEFAULT)) + { + char errbuf[100]={0}; + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("execute SQL statement Error - %.*s\n", 512, errbuf); + return -1; + } + else + { + printf("execute SQL statement success!\n\n"); + } + return 0; +} + + + + +// ѯSQL +int _QuerySQL(char *SQL, SqlSelField *pOutField, SqlSelField *pSelField ) +{ + sword status; + int rc= 0,ret=0; + char errbuf[100]={0}; + int maxNum = 2048; + char chTag[8]; + int iIndex = 0; + int outputColumn = 0; + int errcode=0; + char nullValue = '\0'; // + sb2 sb2aInd[30] = {'\0'}; + + // ׼SQL + status = OCIStmtPrepare(ociHandle->p_sql, ociHandle->p_err, (text *)SQL,(ub4)strlen(SQL), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT); + + if (status != OCI_SUCCESS) + { + printf("SQL Preparing failed/n"); + return -1; + } + + + // int͵, SQLʱ :1,:2, + for (iIndex=0; iIndexnIntNum; iIndex++) + { + memset(chTag, 0, 8); + sprintf(chTag, ":%d", iIndex+1); + if(rc = OCIBindByName(ociHandle->p_sql, (OCIBind **)&ociHandle->p_dfn, ociHandle->p_err, (text *)chTag,(sb4)strlen((char *)chTag),(dvoid *) &pSelField->naIntValue[iIndex], sizeof(int), SQLT_INT,(dvoid *) 0,(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("BindByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + // char *͵, SQLʱ :3,:4, + for (iIndex=0; iIndexnCharNum; iIndex++) + { + int n=0; + memset(chTag, 0, 8); + n = pSelField->nIntNum + iIndex +1; + sprintf(chTag, ":%d", n); + if(rc = OCIBindByName(ociHandle->p_sql, (OCIBind **)&ociHandle->p_dfn, ociHandle->p_err, (text *)chTag,(sb4)strlen((char *)chTag),(dvoid *) &pSelField->caCharValue[iIndex], NUM, SQLT_STR,(dvoid *) 0,(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("BindByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + + // ִSQL + if (rc = OCIStmtExecute(ociHandle->p_svc, ociHandle->p_sql, ociHandle->p_err, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_STMT_SCROLLABLE_READONLY)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("execute SQL Error - %.*s\n", 512, errbuf); + return -1; + } + else + { + printf("execute SQL success!\n\n"); + } + + + if (ret = OCIAttrGet (ociHandle->p_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) &outputColumn, (ub4 *) 0, (ub4)OCI_ATTR_PARAM_COUNT, ociHandle->p_err)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Get OCIAttr Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + + + // int͵, SQLʱ :1,:2, + for (iIndex=0; iIndexnIntNum; iIndex++) + { + if(rc = OCIDefineByPos(ociHandle->p_sql, &ociHandle->p_dfn, ociHandle->p_err, iIndex+1, (dvoid *)&pOutField->naIntValue[iIndex], sizeof(int), SQLT_INT, (dvoid *) 0, (ub2 *)0,(ub2 *)0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("DefineByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + + // char *͵, SQLʱ :1,:2, + for (iIndex=0; iIndexp_sql, &ociHandle->p_dfn, ociHandle->p_err, n, (dvoid *)&pOutField->caCharValue[iIndex], 1000*sizeof(char), SQLT_STR, (dvoid *) 0, (ub2 *)0,(ub2 *)0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("DefineByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + return 0; + +} + + + +// ͷHandler +void QuitFreeHandle() +{ + // ˳ + OCILogoff(ociHandle->p_svc,ociHandle->p_err); + printf("Quit success!\n"); + + // ͷž + OCIHandleFree(ociHandle->p_ser,OCI_HTYPE_SERVER); //ͷŷ + OCIHandleFree(ociHandle->p_err,OCI_HTYPE_ERROR); //ͷŴ + OCIHandleFree(ociHandle->p_usr,OCI_HTYPE_SESSION); //ͷ + OCIHandleFree(ociHandle->p_svc,OCI_HTYPE_SVCCTX); //ͷľ + OCIHandleFree(ociHandle->p_sql,OCI_HTYPE_STMT); //ͷSQL +} + + +// ִ +int ExecuteSQL(char *SQL,int valueCount,char **value) +{ + int i=0; + + if(i=_ExeSQL(SQL,value,valueCount)) + { + QuitFreeHandle(); + return -1; + } + + return 0; +} + + +// IJѯ +int QuerySQL(char *SQL, int inputValueCount, char ** inputValue, int * outputColumn, int * outputValueCount, char **** outputValue) +{ + int i = 0, j=0 ,ret =0; + + int times = 0, temp=0; + + SqlSelField infield; + SqlSelField outField; + + // ʼṹ + infield.nCharNum = inputValueCount; + infield.nIntNum = 0; + outField.nCharNum = 0; + outField.nIntNum = 0; + + * outputColumn = 0; + * outputValueCount = 0; + + for(i=0;ip_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) outputColumn, (ub4 *) 0, (ub4)OCI_ATTR_PARAM_COUNT, ociHandle->p_err); + + // ȡһ,ȥ + ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_LAST,0, OCI_DEFAULT); + // ȡ + ret= OCIAttrGet (ociHandle->p_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) outputValueCount, (ub4 *) 0, (ub4)OCI_ATTR_ROW_COUNT, ociHandle->p_err); + + if(*outputValueCount == 0) + return 0; + + + // ʼڴ沢Ҵ洢 + ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_FIRST,0, OCI_DEFAULT); + *outputValue = (char ***) calloc ((*outputValueCount)+1,sizeof(char**)); + do + { + (*outputValue)[i] = (char **) calloc ((*outputColumn)+1,sizeof(char *)); + for(j=0;j<(*outputColumn);j++) + { + (*outputValue)[i][j] = (char *) calloc (1000,sizeof(char)); + strcpy((*outputValue)[i][j],outField.caCharValue[j]); + //printf("outValue[%d][%d] = %s , ַ=%d, ַָ= %d\n ",i,j,(*outputValue)[i][j],&(*outputValue)[i][j],(*outputValue)[i][j]); + } + i++; + } + while((ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_NEXT, 1, OCI_DEFAULT)!= OCI_NO_DATA)); + + return 0; +} + + +// IJѯ +int QuerySQLNoInputParam(char *SQL, int * outputColumn, int * outputValueCount, char **** outputValue) +{ + return QuerySQL(SQL,0,NULL,outputColumn,outputValueCount,outputValue); +} + +// ޲ +int ExecuteSQLNoInputParam(char *SQL) +{ + return ExecuteSQL(SQL,0,NULL); +} + +// Ͽ +void DisConnServer() +{ + if(ociHandle != NULL) + QuitFreeHandle(); +} + diff --git a/jf_erp_check_project/ocilib.h b/jf_erp_check_project/ocilib.h new file mode 100644 index 0000000..0a4e752 --- /dev/null +++ b/jf_erp_check_project/ocilib.h @@ -0,0 +1,98 @@ +/*===================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +======================================================================================================================= +File description: + + Filename: ocilib.h + Module : OCI + + This Header file of OCI library Package. + +======================================================================================================================= +Date Name Description of Change +1-Feb-2015 Ray Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#include +#include +#include +#include +#include +//#include + +#define OCI_FAIL 1 +#define OCI_OK 0 + +#ifdef __cplusplus +extern "C" +{ +#endif + /** + * ݿ. + * @param username - û + * @param password - + * @param dbname - ݿSID + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ConnServer(char *username,char *password,char *dbname); + + + /** + * ִSQL. + * @param SQL - SQL + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ExecuteSQLNoInputParam(char *SQL); + + /** + * ִSQL. + * @param SQL - SQL + * @param inputValueCount - + * @param inputValue - ֵ + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ExecuteSQL(char *SQL,int inputValueCount,char **inputValue); + + /** + * IJѯSQL. + * @param SQL - SQL + * @param outputColumn - е + * @param outputValueCount - е + * @param outputValue - + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int QuerySQLNoInputParam(char *SQL, int * outputColumn, int * outputValueCount, char **** outputValue); + + /** + * IJѯSQL. + * @param SQL - SQL + * @param inputValueCount - + * @param inputValue - ֵ + * @param outputColumn - е + * @param outputValueCount - е + * @param outputValue - + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int QuerySQL(char *SQL, int inputValueCount, char ** inputValue, int * outputColumn, int * outputValueCount, char **** outputValue); + + /** + * Ͽݿ. + * + * ORACLE ݿװ + */ + extern void DisConnServer(); + +#ifdef __cplusplus +} +#endif diff --git a/jf_erp_check_project/string_helper.cpp b/jf_erp_check_project/string_helper.cpp new file mode 100644 index 0000000..553e6f3 --- /dev/null +++ b/jf_erp_check_project/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/jf_erp_check_project/string_helper.h b/jf_erp_check_project/string_helper.h new file mode 100644 index 0000000..b4f7532 --- /dev/null +++ b/jf_erp_check_project/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/jf_erp_check_project/string_utils.cxx b/jf_erp_check_project/string_utils.cxx new file mode 100644 index 0000000..07d93cb --- /dev/null +++ b/jf_erp_check_project/string_utils.cxx @@ -0,0 +1,253 @@ +/*================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +==================================================================================================================== +File description: + Filename: string_utils.c + Module : Common module. + + This file includes some operations of the string. + +==================================================================================================================== +Date Name Description of Change +3-Feb-2015 Ray li Initialize creation +$HISTORY$ +===================================================================================================================*/ +#ifndef _cplusplus +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#endif + +#include +#include +#include +#include +#include +#include + +#include "string_utils.h" + +//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; +// } +// } +//} +char* GSTR_clone( char **dst, const char *src ) +{ + char *retVal = NULL; + int srcLen = 0; + + *dst = NULL; + if (src == NULL) + return NULL; + + srcLen = (int)tc_strlen( src ) + 1; + *dst = (char*)MEM_alloc( srcLen * sizeof(char) ); + retVal = tc_strncpy( *dst, src, srcLen ); + (*dst)[srcLen - 1] = '\0'; + + return retVal; +} + +char* GSTR_copy( char *dst, const char *src, int dstSize ) +{ + char *retVal = tc_strncpy( dst, src, dstSize ); + dst[dstSize - 1] = '\0'; + return retVal; +} + +char* GSTR_int_to_string( char **dst, int value ) +{ + char strVal[128 + 1]; + + *dst = NULL; + memset( strVal, 0, sizeof(strVal)/sizeof(char) ); + sprintf( strVal, "%d", value ); + + return GSTR_clone( dst, strVal ); +} + +void GSTR_format_int_to_string( char *dst, int digitNum, int value ) +{ + char sNum[WSO_desc_size_c + 1]; + sprintf( sNum, "%%0%dd", digitNum ); + sprintf( dst, sNum, value ); +} + +void GSTR_format_string( const char *dst, int m, const char *fill_char, char **out ) +{ + char sNum[WSO_name_size_c + 1] = {0}; + char sNew[WSO_name_size_c + 1] = {0}; + sprintf( sNum, "%%%d.%ds", m, m ); + sprintf( sNew, sNum, dst ); + STRNG_replace_str( sNew, " ", fill_char, out ); +} + + +char* GSTR_string_append( const char *s1, const char *s2 ) +{ + char *s = NULL; + if (s1 == NULL || s2 == NULL) + { + GSTR_clone(&s, s1 == NULL ? (s2 == NULL ? "" : s2) : s1 ); + } + else + { + int size = (int)tc_strlen(s1) + (int)tc_strlen(s2) + 1; + s = (char *)MEM_alloc( size ); + tc_strcpy( s, s1 ); + tc_strcat( s, s2 ); + s[size - 1] = '\0'; + } + return s; +} + +logical GSTR_is_float(const char *str) +{ + logical isfloat = true; + char *pStr = (char *)str; + logical hasPositive = false; + logical hasMinus = false; + logical hasDot = false; + + if (str == NULL) + return false; + + while (*pStr != '\0' && isfloat == true) + { + if ( (*pStr >= '0' && *pStr <= '9')) + { + //continue; + } + else if ( *pStr == '+' ) + { + isfloat = (hasPositive ? false : (hasPositive = true)); + } + else if ( *pStr == '-' ) + { + isfloat = (hasMinus ? false : (hasMinus = true)); + } + else if ( *pStr == '.' ) + { + isfloat = (hasDot ? false : (hasDot = true)); + } + else + isfloat = false; + + pStr ++; + } + return isfloat; +} + +logical GSTR_is_number(const char *str) +{ + logical is_number = true; + char *pStr = (char *)str; + if (str == NULL) + return false; + + while (*pStr != '\0') + { + if ( !( (*pStr >= '0' && *pStr <= '9') || *pStr == '-' ) ) + { + is_number = false; + break; + } + pStr ++; + } + return is_number; +} + +logical GSTR_is_ascii(char ch) +{ + return ((unsigned int)ch) < 128; +} + +int GSTR_trim_l( char *str, char s ) +{ + int count = 0; + char *pointer = str, *poffset = NULL; + if (str == NULL || str[0] == '\0') + return 0; + + while ( *pointer != '\0' ) + { + if ( *pointer != s ) + { + break; + } + count++; + pointer++; + } + if (count == 0) + return 0; + + poffset = str + count; + pointer = str; + while ( *poffset != '\0' ) + { + *pointer = *poffset; + pointer ++; + poffset ++; + } + *pointer = '\0'; + + return count; +} + +int GSTR_trim_r( char *str, char s ) +{ + int count = 0; + char *pointer = NULL; + if (str == NULL || str[0] == '\0') + return 0; + + pointer = str + ((int) strlen(str) - 1); + + while ( pointer != str ) + { + if ( *pointer != s ) + { + break; + } + + *pointer = '\0'; + + count++; + pointer--; + } + + return count; +} + +void GSTR_trim_float( char *floatValue ) +{ + if ( !IS_EMPTY(floatValue) && tc_strstr(floatValue, ".") != NULL ) + { + int len = 0; + GSTR_trim_r(floatValue, '0'); + len = (int)tc_strlen(floatValue); + if (floatValue[ len - 1 ] == '.') + floatValue[ len - 1 ] = '\0'; + } +} + diff --git a/jf_erp_check_project/string_utils.h b/jf_erp_check_project/string_utils.h new file mode 100644 index 0000000..4b379cc --- /dev/null +++ b/jf_erp_check_project/string_utils.h @@ -0,0 +1,125 @@ +/*===================================================================================================================== + Copyright(c) 2005 ORIGIN PLM Software Corp. All rights reserved. + Unpublished - All rights reserved +======================================================================================================================= +File description: + Filename: string_utils.h + Module : Common module. + + This file includes some operations of the string. + +======================================================================================================================= +Date Name Description of Change +14-Jul-2009 Ray Li Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#ifndef STRING_UTILS_H +#define STRING_UTILS_H +#include +#include +#include +using namespace std; +#ifdef __cplusplus + extern "C" + { +#endif + +// @{{ String assister +#define IS_NULL(S) ((S)==NULL) +#define IS_EMPTY(S) (((S)==NULL) || !(*(S))) +// @}} + void Split( string strArg, string spliter, vector &ans ); + /** + * Clones the string. + * @param dst - the output string. + * @param src - the string to be cloned. + * @return - the destinatin string pointer. + */ + extern char* GSTR_clone( char **dst, const char *src ); + + /** + * Copy safely the string with null end. + * @param dst - the output string. + * @param src - the string to be cloned. + * @param dstSize - the size of output string. + * @return - the destinatin string pointer. + */ + extern char *GSTR_copy( char *dst, const char *src, int dstSize ); + + /** + * Converts int to string. + * @param dst - the output string. + * @param value - the int to be cloned. + * @return - the destinatin string pointer. + */ + extern char* GSTR_int_to_string( char **dst, int value ); + + /** + * Formats the int/string value as string. + * @param dst - the destination string. + * @param digitNum - the digit number of the value. + * @param value - the value to be converted. + * @return - N/A. + */ + extern void GSTR_format_int_to_string( char *dst, int digitNum, int value ); + extern void GSTR_format_string( const char *dst, int m, const char *fill_char, char **out ); + + /** + * Appends the strings( never null returned ) + * @param s1 - string 1 + * @param s2 - string 2 + * @return - new string + */ + extern char* GSTR_string_append( const char *s1, const char *s2 ); + + /** + * Whether the string is float type + * @param str - The string + * + * NOTE: it's only check whether each word is in "+-.0123456789", not care the float with "E" or the float rule, + * like "00-1.+01", it will return true. + * @return - return true if it is one. + */ + extern logical GSTR_is_float(const char *str); + + /** + * Whether all char of the string are number + * @param str - The string + * + * NOTE: it's only check whether each word is in "0123456789" + * @return - return true if it is one. + */ + extern logical GSTR_is_number(const char *str); + + /** + * Is ascii char + * @param ch - ascii char + * @return - return true if it is. + */ + extern logical GSTR_is_ascii(char ch); + + /** + * Trims the string's prefix. + * @param str - The string + * @param s - The char + * + * @return - count. + */ + extern int GSTR_trim_l( char *str, char s ); + extern int GSTR_trim_r( char *str, char s ); + + /** + * Remove the zero. + * For Example: + * floatValue="50.00" -> = "50" + * floatValue="50.0100" -> = "50.01" + * @return - count. + */ + extern void GSTR_trim_float( char *floatValue ); + +#ifdef __cplusplus + } +#endif + + +#endif //STRING_UTILS_H diff --git a/jf_erp_check_project/x64/Release/CL.read.1.tlog b/jf_erp_check_project/x64/Release/CL.read.1.tlog new file mode 100644 index 0000000..b5f064f Binary files /dev/null and b/jf_erp_check_project/x64/Release/CL.read.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/CL.write.1.tlog b/jf_erp_check_project/x64/Release/CL.write.1.tlog new file mode 100644 index 0000000..187ae2a Binary files /dev/null and b/jf_erp_check_project/x64/Release/CL.write.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/cl.command.1.tlog b/jf_erp_check_project/x64/Release/cl.command.1.tlog new file mode 100644 index 0000000..08c87d5 Binary files /dev/null and b/jf_erp_check_project/x64/Release/cl.command.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/jf_erp_check_project.dll.intermediate.manifest b/jf_erp_check_project/x64/Release/jf_erp_check_project.dll.intermediate.manifest new file mode 100644 index 0000000..ecea6f7 --- /dev/null +++ b/jf_erp_check_project/x64/Release/jf_erp_check_project.dll.intermediate.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jf_erp_check_project/x64/Release/jf_erp_check_project.lastbuildstate b/jf_erp_check_project/x64/Release/jf_erp_check_project.lastbuildstate new file mode 100644 index 0000000..8997680 --- /dev/null +++ b/jf_erp_check_project/x64/Release/jf_erp_check_project.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Release|x64|F:\Connor(项目管理)\继峰项目\签名\jf_itk\| diff --git a/jf_erp_check_project/x64/Release/jf_erp_check_project.write.1.tlog b/jf_erp_check_project/x64/Release/jf_erp_check_project.write.1.tlog new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_check_project/x64/Release/link.command.1.tlog b/jf_erp_check_project/x64/Release/link.command.1.tlog new file mode 100644 index 0000000..24e16ae Binary files /dev/null and b/jf_erp_check_project/x64/Release/link.command.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/link.read.1.tlog b/jf_erp_check_project/x64/Release/link.read.1.tlog new file mode 100644 index 0000000..4d7ab74 Binary files /dev/null and b/jf_erp_check_project/x64/Release/link.read.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/link.write.1.tlog b/jf_erp_check_project/x64/Release/link.write.1.tlog new file mode 100644 index 0000000..34581b5 Binary files /dev/null and b/jf_erp_check_project/x64/Release/link.write.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/mt.command.1.tlog b/jf_erp_check_project/x64/Release/mt.command.1.tlog new file mode 100644 index 0000000..5b71543 Binary files /dev/null and b/jf_erp_check_project/x64/Release/mt.command.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/mt.read.1.tlog b/jf_erp_check_project/x64/Release/mt.read.1.tlog new file mode 100644 index 0000000..69a572c Binary files /dev/null and b/jf_erp_check_project/x64/Release/mt.read.1.tlog differ diff --git a/jf_erp_check_project/x64/Release/mt.write.1.tlog b/jf_erp_check_project/x64/Release/mt.write.1.tlog new file mode 100644 index 0000000..f47f9ba Binary files /dev/null and b/jf_erp_check_project/x64/Release/mt.write.1.tlog differ diff --git a/jf_erp_project/Release/CL.read.1.tlog b/jf_erp_project/Release/CL.read.1.tlog new file mode 100644 index 0000000..e1e31d8 Binary files /dev/null and b/jf_erp_project/Release/CL.read.1.tlog differ diff --git a/jf_erp_project/Release/CL.write.1.tlog b/jf_erp_project/Release/CL.write.1.tlog new file mode 100644 index 0000000..2aa4147 Binary files /dev/null and b/jf_erp_project/Release/CL.write.1.tlog differ diff --git a/jf_erp_project/Release/cl.command.1.tlog b/jf_erp_project/Release/cl.command.1.tlog new file mode 100644 index 0000000..d6fadb4 Binary files /dev/null and b/jf_erp_project/Release/cl.command.1.tlog differ diff --git a/jf_erp_project/Release/jf_erp_project.lastbuildstate b/jf_erp_project/Release/jf_erp_project.lastbuildstate new file mode 100644 index 0000000..85a14fb --- /dev/null +++ b/jf_erp_project/Release/jf_erp_project.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Release|Win32|F:\Connor(项目管理)\继峰项目\签名\jf_itk\| diff --git a/jf_erp_project/Release/jf_erp_project.unsuccessfulbuild b/jf_erp_project/Release/jf_erp_project.unsuccessfulbuild new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_project/Release/jf_erp_project.write.1.tlog b/jf_erp_project/Release/jf_erp_project.write.1.tlog new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_project/Release/link.command.1.tlog b/jf_erp_project/Release/link.command.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_project/Release/link.command.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_project/Release/link.read.1.tlog b/jf_erp_project/Release/link.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_project/Release/link.read.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_project/Release/link.write.1.tlog b/jf_erp_project/Release/link.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_project/Release/link.write.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_project/common_itk_util.c b/jf_erp_project/common_itk_util.c new file mode 100644 index 0000000..b56d00d --- /dev/null +++ b/jf_erp_project/common_itk_util.c @@ -0,0 +1,291 @@ +/** +* @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 + + int AM__set_application_bypass(logical bypass); + +void ECHO(char *format, ...) +{ + //if( !YFJC_OPT_DEBUG ) + // return; + + char msg[1024]; + va_list args; + + va_start( args, format ); + vsprintf( msg, format, args ); + va_end( args ); + + printf( msg ); + TC_write_syslog( msg ); +} + +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/jf_erp_project/common_itk_util.h b/jf_erp_project/common_itk_util.h new file mode 100644 index 0000000..f27d079 --- /dev/null +++ b/jf_erp_project/common_itk_util.h @@ -0,0 +1,40 @@ +/** +* @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 + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} +void ECHO(char *format, ...); +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/jf_erp_project/error_handling.h b/jf_erp_project/error_handling.h new file mode 100644 index 0000000..b6b8099 --- /dev/null +++ b/jf_erp_project/error_handling.h @@ -0,0 +1,160 @@ +/*! +* @addtogroup common +* \file error_handling.h +* \brief +* \date 2008/6/10 +* \author Ray Li +*/ + +#ifndef SIMPLE_ERR_H_INCLUDED +#define SIMPLE_ERR_H_INCLUDED + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define BUFSIZE 512 + + +// +//#define HANDLER_ARGUMENT_ERROR EMH_USER_error_base + 1 +//#define WORKFLOW_NODE_IS_NOT_VALID EMH_USER_error_base + 2 +//#define HANDLER_PLACED_INVALID EMH_USER_error_base + 3 +// +////user errors define +////վļȱ %1$ ã +//#define ERROR_PREFERENCE_NOT_FOUND (EMH_USER_error_base + 100) + + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} + + + +//#define ECHO(X) printf X; +#define SYS_LOG(X) IMAN_write_syslog X; +#define LOG_ECHO(X) printf X; IMAN_write_syslog X; + + + +/*! +* \def CALL(x) +* ӡϢ +*/ +#define CALL(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != ITK_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + LOG_ECHO( ("ERROR: %d ERROR MSG: %s.\n",stat, err_string) ) \ + LOG_ECHO( ("Function: %s FILE: %s LINE: %d\n", #x, __FILE__, __LINE__ ) ) \ + MEM_free (err_string); \ + return (stat); \ + } \ +} + +/*! +* \def DO(x) +* ӡϢ +*/ +#define DO(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != POM_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + printf ("ERROR: %d ERROR MSG: %s.\n", stat, err_string); \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + MEM_free (err_string); \ + } \ +} + +/*! +* \def CALLRNULL(x) +* ӡϢ +*/ +#define CALLRNULL(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != ITK_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + printf ("ERROR: %d ERROR MSG: %s.\n", stat, err_string); \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + MEM_free (err_string); \ + return ((char *)NULL); \ + } \ +} + +/*! +* \def CALL2(x) +* ӡϢ +*/ +#define CALL2(x) { \ + int stat, n_ifails, *serverities, *ifails, err_count; \ + char *err_string, **texts; \ + if( (stat = (x)) != ITK_ok) \ + { \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + EMH_ask_errors( &n_ifails, (const int**)(&serverities), (const int**)(&ifails), (const char***)(&texts) );\ + for( err_count=0; err_count + + + + Debug + Itanium + + + Debug + Win32 + + + Debug + x64 + + + Release + Itanium + + + Release + Win32 + + + Release + x64 + + + + {375BE822-1125-4D9E-A589-08243D1FF487} + Win32Proj + jf_erp_project + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + true + Unicode + + + Application + false + true + Unicode + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + IPLIB=none;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + F:\Teamcenter10.1.0Env\OCI\include;F:\Teamcenter10.1.0Env\tcbin\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;%(AdditionalDependencies) + + + + + Level3 + + + MaxSpeed + true + true + IPLIB=none;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + F:\Teamcenter10.1.0Env\OCI\include;F:\Teamcenter10.1.0Env\tcbin\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;%(AdditionalDependencies) + + + + + F:\Teamcenter10.1.0Env\OCI\include;F:\Teamcenter10.1.0Env\tcbin\include;%(AdditionalIncludeDirectories) + IPLIB=none;%(PreprocessorDefinitions) + + + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;F:\Teamcenter10.1.0Env\tcbin\lib\itk_main.obj;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jf_erp_project/jf_erp_project.vcxproj.filters b/jf_erp_project/jf_erp_project.vcxproj.filters new file mode 100644 index 0000000..08a1f7d --- /dev/null +++ b/jf_erp_project/jf_erp_project.vcxproj.filters @@ -0,0 +1,57 @@ + + + + + {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 + + + {695e5212-e914-4315-a83f-087109122c06} + + + + + common + + + common + + + common + + + common + + + 源文件 + + + + + common + + + common + + + common + + + common + + + common + + + 头文件 + + + \ No newline at end of file diff --git a/jf_erp_project/ocilib.cxx b/jf_erp_project/ocilib.cxx new file mode 100644 index 0000000..30151e3 --- /dev/null +++ b/jf_erp_project/ocilib.cxx @@ -0,0 +1,440 @@ +/*===================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +======================================================================================================================= +File description: + + Filename: ocilib.cxx + Module : OCI + + This file describes OCI library Package. + +======================================================================================================================= +Date Name Description of Change +1-Feb-2015 Ray li Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#include "ocilib.h" +#include + +#define NUM 100 +#define USERNAME "infodba" +#define PASSWORD "infodba" +#define DBNAME "tc" + + +// ṹ +typedef struct{ + OCIEnv *p_env; //OCI environment handle + OCIError *p_err; //OCI error handle + OCISvcCtx *p_svc; //OCI service context handel ľ + OCIServer *p_ser; //OCI server handle + OCISession *p_usr; //OCI user session handle ûỰ + OCIStmt *p_sql; //OCI statement handle + OCIDefine *p_dfn; //OCI define handle + OCIBind *p_bnd; //OCI bind handle 󶨾 +}OCIHandleInfo; + + +// ṹ +typedef struct{ + OCIEnv *p_env; + OCIError *p_err; + OCISvcCtx *p_svc; + OCIStmt *p_sql; + OCIDefine *p_dfn; + OCIBind *p_bnd; +}OCIDATA; + + +// ִʱ +typedef struct{ + char value[NUM][NUM]; + char type[NUM][NUM]; +}SqlField; + + +// ѯʱ, +typedef struct{ + int naIntValue[NUM]; + int nIntNum; + char caCharValue[500][500]; + int nCharNum; +}SqlSelField; + +OCIHandleInfo *ociHandle = NULL; +OCIHandleInfo ociHand; + +int InitHandle(); +int _ExeSQL(char *SQL,char ** inputValue,int inputValueCount); +int _QuerySQL(char *SQL, SqlSelField *pOutField, SqlSelField *pSelField); +int GetDataFromQuery(int *pRc, SqlSelField *pOutField); +void QuitFreeHandle(); + + + + +/**************************************************************************************************************************************** +ƣ +ܣ +ڲ +ڲ + ע +*****************************************************************************************************************************************/ + + +// ʼHandler +int InitHandle() +{ + int swResult; + + ociHandle = &ociHand; + + + /*create OCI environment*/ + if(swResult = OCIEnvCreate(&ociHandle->p_env,OCI_DEFAULT,NULL,NULL,NULL,NULL,0,NULL)) // + { + printf("environment create error!\n\n"); + return -1; + } + else + { + printf("environment create success!\n\n"); + //return 0; + } + + /*init handle*/ + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_ser,OCI_HTYPE_SERVER,0,NULL)) // + { + printf("init server handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_err,OCI_HTYPE_ERROR,0,NULL)) // + { + printf("init error handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_usr,OCI_HTYPE_SESSION,0,NULL)) // + { + printf("init session handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_svc,OCI_HTYPE_SVCCTX,0,NULL)) //ľ + { + printf("init service context handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_sql,OCI_HTYPE_STMT,0,NULL)) //SQL + { + printf("init statement handle error!\n\n"); + return -1; + } + + printf("init handle success!\n\n"); + + return 0; +} + + + +// ݿ +int ConnServer(char *username,char *password,char *dbname) +{ + int swResult; + char errbuf[100]={0}; + int errcode; + + if(InitHandle() == -1)//ʼ + return -1; + + if(swResult = OCILogon(ociHandle->p_env,ociHandle->p_err,&ociHandle->p_svc,(text *)username,strlen(username),(text *)password,strlen(password),(text *)dbname,strlen(dbname))) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Error - %.*s/n", 512, errbuf); + return -1; + } + else + printf("ݿӳɹ!\n\n"); + return 0; +} + + + +// SQLij(ִSQL) +int _ExeSQL(char *SQL,char ** inputValue,int inputValueCount) +{ + int swResult,i; + int errcode; + + //ð󶨱 + OCIBind *p_bndp[100]; + + //׼SQL + if(swResult = OCIStmtPrepare(ociHandle->p_sql,ociHandle->p_err,(text *)SQL,strlen(SQL),OCI_NTV_SYNTAX,OCI_DEFAULT)) + { + printf("prepare SQL statements error!\n\n"); + } + else + { + printf("prepare SQL statements success!\n\n"); + } + + + // + for(i=0;ip_sql,&p_bndp[i],ociHandle->p_err,i+1,(dvoid *)inputValue[i],(sb4)strlen(inputValue[i])+1,SQLT_STR, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Bind Error - %.*s/n", 512, errbuf); + return -1; + } + } + + //ִSQL statements + if(swResult = OCIStmtExecute(ociHandle->p_svc,ociHandle->p_sql,ociHandle->p_err,1,0,NULL,NULL,OCI_DEFAULT)) + { + char errbuf[100]={0}; + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("execute SQL statement Error - %.*s\n", 512, errbuf); + return -1; + } + else + { + printf("execute SQL statement success!\n\n"); + } + return 0; +} + + + + +// ѯSQL +int _QuerySQL(char *SQL, SqlSelField *pOutField, SqlSelField *pSelField ) +{ + sword status; + int rc= 0,ret=0; + char errbuf[100]={0}; + int maxNum = 2048; + char chTag[8]; + int iIndex = 0; + int outputColumn = 0; + int errcode=0; + char nullValue = '\0'; // + sb2 sb2aInd[30] = {'\0'}; + + // ׼SQL + status = OCIStmtPrepare(ociHandle->p_sql, ociHandle->p_err, (text *)SQL,(ub4)strlen(SQL), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT); + + if (status != OCI_SUCCESS) + { + printf("SQL Preparing failed/n"); + return -1; + } + + + // int͵, SQLʱ :1,:2, + for (iIndex=0; iIndexnIntNum; iIndex++) + { + memset(chTag, 0, 8); + sprintf(chTag, ":%d", iIndex+1); + if(rc = OCIBindByName(ociHandle->p_sql, (OCIBind **)&ociHandle->p_dfn, ociHandle->p_err, (text *)chTag,(sb4)strlen((char *)chTag),(dvoid *) &pSelField->naIntValue[iIndex], sizeof(int), SQLT_INT,(dvoid *) 0,(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("BindByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + // char *͵, SQLʱ :3,:4, + for (iIndex=0; iIndexnCharNum; iIndex++) + { + int n=0; + memset(chTag, 0, 8); + n = pSelField->nIntNum + iIndex +1; + sprintf(chTag, ":%d", n); + if(rc = OCIBindByName(ociHandle->p_sql, (OCIBind **)&ociHandle->p_dfn, ociHandle->p_err, (text *)chTag,(sb4)strlen((char *)chTag),(dvoid *) &pSelField->caCharValue[iIndex], NUM, SQLT_STR,(dvoid *) 0,(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("BindByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + + // ִSQL + if (rc = OCIStmtExecute(ociHandle->p_svc, ociHandle->p_sql, ociHandle->p_err, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_STMT_SCROLLABLE_READONLY)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("execute SQL Error - %.*s\n", 512, errbuf); + return -1; + } + else + { + printf("execute SQL success!\n\n"); + } + + + if (ret = OCIAttrGet (ociHandle->p_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) &outputColumn, (ub4 *) 0, (ub4)OCI_ATTR_PARAM_COUNT, ociHandle->p_err)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Get OCIAttr Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + + + // int͵, SQLʱ :1,:2, + for (iIndex=0; iIndexnIntNum; iIndex++) + { + if(rc = OCIDefineByPos(ociHandle->p_sql, &ociHandle->p_dfn, ociHandle->p_err, iIndex+1, (dvoid *)&pOutField->naIntValue[iIndex], sizeof(int), SQLT_INT, (dvoid *) 0, (ub2 *)0,(ub2 *)0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("DefineByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + + // char *͵, SQLʱ :1,:2, + for (iIndex=0; iIndexp_sql, &ociHandle->p_dfn, ociHandle->p_err, n, (dvoid *)&pOutField->caCharValue[iIndex], 1000*sizeof(char), SQLT_STR, (dvoid *) 0, (ub2 *)0,(ub2 *)0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("DefineByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + return 0; + +} + + + +// ͷHandler +void QuitFreeHandle() +{ + // ˳ + OCILogoff(ociHandle->p_svc,ociHandle->p_err); + printf("Quit success!\n"); + + // ͷž + OCIHandleFree(ociHandle->p_ser,OCI_HTYPE_SERVER); //ͷŷ + OCIHandleFree(ociHandle->p_err,OCI_HTYPE_ERROR); //ͷŴ + OCIHandleFree(ociHandle->p_usr,OCI_HTYPE_SESSION); //ͷ + OCIHandleFree(ociHandle->p_svc,OCI_HTYPE_SVCCTX); //ͷľ + OCIHandleFree(ociHandle->p_sql,OCI_HTYPE_STMT); //ͷSQL +} + + +// ִ +int ExecuteSQL(char *SQL,int valueCount,char **value) +{ + int i=0; + + if(i=_ExeSQL(SQL,value,valueCount)) + { + QuitFreeHandle(); + return -1; + } + + return 0; +} + + +// IJѯ +int QuerySQL(char *SQL, int inputValueCount, char ** inputValue, int * outputColumn, int * outputValueCount, char **** outputValue) +{ + int i = 0, j=0 ,ret =0; + + int times = 0, temp=0; + + SqlSelField infield; + SqlSelField outField; + + // ʼṹ + infield.nCharNum = inputValueCount; + infield.nIntNum = 0; + outField.nCharNum = 0; + outField.nIntNum = 0; + + * outputColumn = 0; + * outputValueCount = 0; + + for(i=0;ip_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) outputColumn, (ub4 *) 0, (ub4)OCI_ATTR_PARAM_COUNT, ociHandle->p_err); + + // ȡһ,ȥ + ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_LAST,0, OCI_DEFAULT); + // ȡ + ret= OCIAttrGet (ociHandle->p_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) outputValueCount, (ub4 *) 0, (ub4)OCI_ATTR_ROW_COUNT, ociHandle->p_err); + + if(*outputValueCount == 0) + return 0; + + + // ʼڴ沢Ҵ洢 + ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_FIRST,0, OCI_DEFAULT); + *outputValue = (char ***) calloc ((*outputValueCount)+1,sizeof(char**)); + do + { + (*outputValue)[i] = (char **) calloc ((*outputColumn)+1,sizeof(char *)); + for(j=0;j<(*outputColumn);j++) + { + (*outputValue)[i][j] = (char *) calloc (1000,sizeof(char)); + strcpy((*outputValue)[i][j],outField.caCharValue[j]); + //printf("outValue[%d][%d] = %s , ַ=%d, ַָ= %d\n ",i,j,(*outputValue)[i][j],&(*outputValue)[i][j],(*outputValue)[i][j]); + } + i++; + } + while((ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_NEXT, 1, OCI_DEFAULT)!= OCI_NO_DATA)); + + return 0; +} + + +// IJѯ +int QuerySQLNoInputParam(char *SQL, int * outputColumn, int * outputValueCount, char **** outputValue) +{ + return QuerySQL(SQL,0,NULL,outputColumn,outputValueCount,outputValue); +} + +// ޲ +int ExecuteSQLNoInputParam(char *SQL) +{ + return ExecuteSQL(SQL,0,NULL); +} + +// Ͽ +void DisConnServer() +{ + if(ociHandle != NULL) + QuitFreeHandle(); +} + diff --git a/jf_erp_project/ocilib.h b/jf_erp_project/ocilib.h new file mode 100644 index 0000000..0a4e752 --- /dev/null +++ b/jf_erp_project/ocilib.h @@ -0,0 +1,98 @@ +/*===================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +======================================================================================================================= +File description: + + Filename: ocilib.h + Module : OCI + + This Header file of OCI library Package. + +======================================================================================================================= +Date Name Description of Change +1-Feb-2015 Ray Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#include +#include +#include +#include +#include +//#include + +#define OCI_FAIL 1 +#define OCI_OK 0 + +#ifdef __cplusplus +extern "C" +{ +#endif + /** + * ݿ. + * @param username - û + * @param password - + * @param dbname - ݿSID + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ConnServer(char *username,char *password,char *dbname); + + + /** + * ִSQL. + * @param SQL - SQL + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ExecuteSQLNoInputParam(char *SQL); + + /** + * ִSQL. + * @param SQL - SQL + * @param inputValueCount - + * @param inputValue - ֵ + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ExecuteSQL(char *SQL,int inputValueCount,char **inputValue); + + /** + * IJѯSQL. + * @param SQL - SQL + * @param outputColumn - е + * @param outputValueCount - е + * @param outputValue - + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int QuerySQLNoInputParam(char *SQL, int * outputColumn, int * outputValueCount, char **** outputValue); + + /** + * IJѯSQL. + * @param SQL - SQL + * @param inputValueCount - + * @param inputValue - ֵ + * @param outputColumn - е + * @param outputValueCount - е + * @param outputValue - + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int QuerySQL(char *SQL, int inputValueCount, char ** inputValue, int * outputColumn, int * outputValueCount, char **** outputValue); + + /** + * Ͽݿ. + * + * ORACLE ݿװ + */ + extern void DisConnServer(); + +#ifdef __cplusplus +} +#endif diff --git a/jf_erp_project/string_helper.cpp b/jf_erp_project/string_helper.cpp new file mode 100644 index 0000000..553e6f3 --- /dev/null +++ b/jf_erp_project/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/jf_erp_project/string_helper.h b/jf_erp_project/string_helper.h new file mode 100644 index 0000000..b4f7532 --- /dev/null +++ b/jf_erp_project/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/jf_erp_project/string_utils.cxx b/jf_erp_project/string_utils.cxx new file mode 100644 index 0000000..07d93cb --- /dev/null +++ b/jf_erp_project/string_utils.cxx @@ -0,0 +1,253 @@ +/*================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +==================================================================================================================== +File description: + Filename: string_utils.c + Module : Common module. + + This file includes some operations of the string. + +==================================================================================================================== +Date Name Description of Change +3-Feb-2015 Ray li Initialize creation +$HISTORY$ +===================================================================================================================*/ +#ifndef _cplusplus +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#endif + +#include +#include +#include +#include +#include +#include + +#include "string_utils.h" + +//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; +// } +// } +//} +char* GSTR_clone( char **dst, const char *src ) +{ + char *retVal = NULL; + int srcLen = 0; + + *dst = NULL; + if (src == NULL) + return NULL; + + srcLen = (int)tc_strlen( src ) + 1; + *dst = (char*)MEM_alloc( srcLen * sizeof(char) ); + retVal = tc_strncpy( *dst, src, srcLen ); + (*dst)[srcLen - 1] = '\0'; + + return retVal; +} + +char* GSTR_copy( char *dst, const char *src, int dstSize ) +{ + char *retVal = tc_strncpy( dst, src, dstSize ); + dst[dstSize - 1] = '\0'; + return retVal; +} + +char* GSTR_int_to_string( char **dst, int value ) +{ + char strVal[128 + 1]; + + *dst = NULL; + memset( strVal, 0, sizeof(strVal)/sizeof(char) ); + sprintf( strVal, "%d", value ); + + return GSTR_clone( dst, strVal ); +} + +void GSTR_format_int_to_string( char *dst, int digitNum, int value ) +{ + char sNum[WSO_desc_size_c + 1]; + sprintf( sNum, "%%0%dd", digitNum ); + sprintf( dst, sNum, value ); +} + +void GSTR_format_string( const char *dst, int m, const char *fill_char, char **out ) +{ + char sNum[WSO_name_size_c + 1] = {0}; + char sNew[WSO_name_size_c + 1] = {0}; + sprintf( sNum, "%%%d.%ds", m, m ); + sprintf( sNew, sNum, dst ); + STRNG_replace_str( sNew, " ", fill_char, out ); +} + + +char* GSTR_string_append( const char *s1, const char *s2 ) +{ + char *s = NULL; + if (s1 == NULL || s2 == NULL) + { + GSTR_clone(&s, s1 == NULL ? (s2 == NULL ? "" : s2) : s1 ); + } + else + { + int size = (int)tc_strlen(s1) + (int)tc_strlen(s2) + 1; + s = (char *)MEM_alloc( size ); + tc_strcpy( s, s1 ); + tc_strcat( s, s2 ); + s[size - 1] = '\0'; + } + return s; +} + +logical GSTR_is_float(const char *str) +{ + logical isfloat = true; + char *pStr = (char *)str; + logical hasPositive = false; + logical hasMinus = false; + logical hasDot = false; + + if (str == NULL) + return false; + + while (*pStr != '\0' && isfloat == true) + { + if ( (*pStr >= '0' && *pStr <= '9')) + { + //continue; + } + else if ( *pStr == '+' ) + { + isfloat = (hasPositive ? false : (hasPositive = true)); + } + else if ( *pStr == '-' ) + { + isfloat = (hasMinus ? false : (hasMinus = true)); + } + else if ( *pStr == '.' ) + { + isfloat = (hasDot ? false : (hasDot = true)); + } + else + isfloat = false; + + pStr ++; + } + return isfloat; +} + +logical GSTR_is_number(const char *str) +{ + logical is_number = true; + char *pStr = (char *)str; + if (str == NULL) + return false; + + while (*pStr != '\0') + { + if ( !( (*pStr >= '0' && *pStr <= '9') || *pStr == '-' ) ) + { + is_number = false; + break; + } + pStr ++; + } + return is_number; +} + +logical GSTR_is_ascii(char ch) +{ + return ((unsigned int)ch) < 128; +} + +int GSTR_trim_l( char *str, char s ) +{ + int count = 0; + char *pointer = str, *poffset = NULL; + if (str == NULL || str[0] == '\0') + return 0; + + while ( *pointer != '\0' ) + { + if ( *pointer != s ) + { + break; + } + count++; + pointer++; + } + if (count == 0) + return 0; + + poffset = str + count; + pointer = str; + while ( *poffset != '\0' ) + { + *pointer = *poffset; + pointer ++; + poffset ++; + } + *pointer = '\0'; + + return count; +} + +int GSTR_trim_r( char *str, char s ) +{ + int count = 0; + char *pointer = NULL; + if (str == NULL || str[0] == '\0') + return 0; + + pointer = str + ((int) strlen(str) - 1); + + while ( pointer != str ) + { + if ( *pointer != s ) + { + break; + } + + *pointer = '\0'; + + count++; + pointer--; + } + + return count; +} + +void GSTR_trim_float( char *floatValue ) +{ + if ( !IS_EMPTY(floatValue) && tc_strstr(floatValue, ".") != NULL ) + { + int len = 0; + GSTR_trim_r(floatValue, '0'); + len = (int)tc_strlen(floatValue); + if (floatValue[ len - 1 ] == '.') + floatValue[ len - 1 ] = '\0'; + } +} + diff --git a/jf_erp_project/string_utils.h b/jf_erp_project/string_utils.h new file mode 100644 index 0000000..4b379cc --- /dev/null +++ b/jf_erp_project/string_utils.h @@ -0,0 +1,125 @@ +/*===================================================================================================================== + Copyright(c) 2005 ORIGIN PLM Software Corp. All rights reserved. + Unpublished - All rights reserved +======================================================================================================================= +File description: + Filename: string_utils.h + Module : Common module. + + This file includes some operations of the string. + +======================================================================================================================= +Date Name Description of Change +14-Jul-2009 Ray Li Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#ifndef STRING_UTILS_H +#define STRING_UTILS_H +#include +#include +#include +using namespace std; +#ifdef __cplusplus + extern "C" + { +#endif + +// @{{ String assister +#define IS_NULL(S) ((S)==NULL) +#define IS_EMPTY(S) (((S)==NULL) || !(*(S))) +// @}} + void Split( string strArg, string spliter, vector &ans ); + /** + * Clones the string. + * @param dst - the output string. + * @param src - the string to be cloned. + * @return - the destinatin string pointer. + */ + extern char* GSTR_clone( char **dst, const char *src ); + + /** + * Copy safely the string with null end. + * @param dst - the output string. + * @param src - the string to be cloned. + * @param dstSize - the size of output string. + * @return - the destinatin string pointer. + */ + extern char *GSTR_copy( char *dst, const char *src, int dstSize ); + + /** + * Converts int to string. + * @param dst - the output string. + * @param value - the int to be cloned. + * @return - the destinatin string pointer. + */ + extern char* GSTR_int_to_string( char **dst, int value ); + + /** + * Formats the int/string value as string. + * @param dst - the destination string. + * @param digitNum - the digit number of the value. + * @param value - the value to be converted. + * @return - N/A. + */ + extern void GSTR_format_int_to_string( char *dst, int digitNum, int value ); + extern void GSTR_format_string( const char *dst, int m, const char *fill_char, char **out ); + + /** + * Appends the strings( never null returned ) + * @param s1 - string 1 + * @param s2 - string 2 + * @return - new string + */ + extern char* GSTR_string_append( const char *s1, const char *s2 ); + + /** + * Whether the string is float type + * @param str - The string + * + * NOTE: it's only check whether each word is in "+-.0123456789", not care the float with "E" or the float rule, + * like "00-1.+01", it will return true. + * @return - return true if it is one. + */ + extern logical GSTR_is_float(const char *str); + + /** + * Whether all char of the string are number + * @param str - The string + * + * NOTE: it's only check whether each word is in "0123456789" + * @return - return true if it is one. + */ + extern logical GSTR_is_number(const char *str); + + /** + * Is ascii char + * @param ch - ascii char + * @return - return true if it is. + */ + extern logical GSTR_is_ascii(char ch); + + /** + * Trims the string's prefix. + * @param str - The string + * @param s - The char + * + * @return - count. + */ + extern int GSTR_trim_l( char *str, char s ); + extern int GSTR_trim_r( char *str, char s ); + + /** + * Remove the zero. + * For Example: + * floatValue="50.00" -> = "50" + * floatValue="50.0100" -> = "50.01" + * @return - count. + */ + extern void GSTR_trim_float( char *floatValue ); + +#ifdef __cplusplus + } +#endif + + +#endif //STRING_UTILS_H diff --git a/jf_erp_project/x64/Release/CL.read.1.tlog b/jf_erp_project/x64/Release/CL.read.1.tlog new file mode 100644 index 0000000..bdf14e1 Binary files /dev/null and b/jf_erp_project/x64/Release/CL.read.1.tlog differ diff --git a/jf_erp_project/x64/Release/CL.write.1.tlog b/jf_erp_project/x64/Release/CL.write.1.tlog new file mode 100644 index 0000000..7e9800c Binary files /dev/null and b/jf_erp_project/x64/Release/CL.write.1.tlog differ diff --git a/jf_erp_project/x64/Release/cl.command.1.tlog b/jf_erp_project/x64/Release/cl.command.1.tlog new file mode 100644 index 0000000..4d49d29 Binary files /dev/null and b/jf_erp_project/x64/Release/cl.command.1.tlog differ diff --git a/jf_erp_project/x64/Release/jf_erp_project.lastbuildstate b/jf_erp_project/x64/Release/jf_erp_project.lastbuildstate new file mode 100644 index 0000000..8997680 --- /dev/null +++ b/jf_erp_project/x64/Release/jf_erp_project.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Release|x64|F:\Connor(项目管理)\继峰项目\签名\jf_itk\| diff --git a/jf_erp_project/x64/Release/jf_erp_project.unsuccessfulbuild b/jf_erp_project/x64/Release/jf_erp_project.unsuccessfulbuild new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_project/x64/Release/jf_erp_project.write.1.tlog b/jf_erp_project/x64/Release/jf_erp_project.write.1.tlog new file mode 100644 index 0000000..e69de29 diff --git a/jf_erp_project/x64/Release/link.command.1.tlog b/jf_erp_project/x64/Release/link.command.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_project/x64/Release/link.command.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_project/x64/Release/link.read.1.tlog b/jf_erp_project/x64/Release/link.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_project/x64/Release/link.read.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_erp_project/x64/Release/link.write.1.tlog b/jf_erp_project/x64/Release/link.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_erp_project/x64/Release/link.write.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/BOMDiscontinuation.cpp b/jf_itk/BOMDiscontinuation.cpp new file mode 100644 index 0000000..6725e01 --- /dev/null +++ b/jf_itk/BOMDiscontinuation.cpp @@ -0,0 +1,213 @@ +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +//#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include "string_utils.h" +#include +#include "tc_log.h" +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "epm/epm.h" + +//#include "libxl.h" +#include +#include +using namespace std; +typedef struct +{ + string ITEM_ID;//id +}PRO_STRUCT; + + +int BOMDiscontinuation(EPM_rule_message_t msg) +{ + cout<<"BOMܷͣ"<"< item_vec; + for (i = 0; i < att_cnt; i++) + { + //øbomӼ + ITKCALL(ifail=AOM_ask_value_string(attachments[i],"object_type",&object_type)); + if(strcmp(object_type,"BOMView Revision")==0) + { + ITKCALL( ifail = BOM_create_window(&bom_window_tag));//windowͼ + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,attachments[i],&top_line_tag));//ȡbomline + ITKCALL(ifail =BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + for (int j=0;j0) +// { +// ITKCALL( ifail=AOM_ask_value_string(item[0],"item_id",&object_type)); +// elements.ITEM_ID.assign(object_type); +// item_vec.push_back(elements); +// break; +// } + } + } + } + ITKCALL(ifail=BOM_close_window(bom_window_tag)); + } + + + } + cout<<"item_vec.size()--------------"<0) + { + for (int i=0;i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +//#include +//#include +#include +#include +#include +#include +#include +#include +using namespace std; + +/** +* @headerfile user's header files +*/ +#include "epm_handler_common.h" +#include "error_handling.h" +#include "common_itk_util.h" +//#include "string_helper.h" + +//̽ڵϢ +struct FLOWNODEINFOS +{ + char taskname[128]; + char username[128]; + char timeinfo[128]; + char group[128]; +}flownode_s[64]; + +//ԱϢ +struct USERINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}userinfo_s[64]; + +//Ϣ +struct TIMEINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}timeinfo_s[64]; + +////ǩϢ +//struct SIGNCOUNTERINFO +//{ +// char taskname[128]; +// char group[128]; +// char propertyname[128]; +//}counter_s[64]; + +int nodecount = 0; +int userinfoscount = 0; +int timeinfoscount = 0; + + +//int counterinfocount = 0; +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} +//struct SIGN_INFO_STRUCT +//{ +// string userid; +// string username; +// string taskname; +// string signdate; +//}; +//struct SIGN_PROPS_STRUCT +//{ +// string taskname; +// string propname; +//}; +//struct SIGN_TIME_STRUCT +//{ +// string taskname; +// string propname; +//}; +extern "C" int POM_AM__set_application_bypass(logical bypass); + + +//void ECHO(char *format, ...) +//{ +// //if( !YFJC_OPT_DEBUG ) +// // return; +// +// char msg[2048]; +// va_list args; +// +// va_start( args, format ); +// vsprintf( msg, format, args ); +// va_end( args ); +// +// printf( msg ); +// TC_write_syslog( msg ); +//} +//ַָ + + +int ORIGIN_ask_sign_info(tag_t task_node, char *output_str,char *task_name,char *arg3value) +{ + int ifail = ITK_ok; + tag_t cur_perform_task = NULLTAG,tempTask = NULLTAG; + char cur_task_name[WSO_name_size_c+1]="",buf[128] = ""; + //жϱ + int s = 0; + EPM_decision_t decision = EPM_nogo; + char* userName; + char *timeinfo1 = "",person_name[SA_name_size_c+1]="",*prop_name = "last_mod_date"; + tag_t aUserTag = NULLTAG,responsibleParty = NULLTAG; + date_t decision_date; + //ڵ + int perform_count = 0; + int *attach_type; + tag_t *perform_attaches = NULLTAG; + tag_t memberTag = NULLTAG; + SIGNOFF_TYPE_t memberType; + CR_signoff_decision_t signoff_decision; + char comments[CR_comment_size_c+1],*timeinfo="",*group_full_name = NULL; + tag_t user_tag=NULLTAG, group_tag = NULLTAG; + //ѭжϱ + int i=0; + + ITKCALL( EPM_ask_name( task_node, cur_task_name ) ); + ECHO("cur_task_name = %s\n",cur_task_name); + if ( stricmp( cur_task_name, "perform-signoffs" ) == 0 ) + { + cur_perform_task = task_node; + ITKCALL( EPM_ask_parent_task( cur_perform_task, &tempTask ) ); + ITKCALL( EPM_ask_name( tempTask, cur_task_name ) ); + } + else if( strcmp( cur_task_name, "" ) == 0 ) + { + cur_perform_task = task_node; + } + else + { + ITKCALL( EPM_ask_sub_task(task_node, "perform-signoffs", &cur_perform_task) ); + if ( cur_perform_task != NULLTAG ) + { + ITKCALL( EPM_ask_name( task_node, cur_task_name ) ); + + ECHO( "---------> cur_task_name = %s\n" , cur_task_name ); + + } + } + if(cur_perform_task != NULLTAG ) + { + if( strcmp( cur_task_name, "" ) == 0 ) + { + //ECHO("task_name=%s",task_name); + //s = EPM_ask_responsible_party(cur_perform_task,&responsibleParty); + //if(responsibleParty != NULLTAG) + //{ + // decision = EPM_go; + //} + //s = POM_get_user(&userName,&aUserTag); + //ITKCALL(SA_ask_user_person_name(aUserTag, person_name)); + //strcat(output_str, cur_task_name); + //strcat(output_str, "="); + //strcat(output_str, person_name); + //strcat(output_str, "|"); + //strcat(output_str, cur_task_name); + //strcat(output_str, "="); + //ITKCALL(AOM_ask_value_date(cur_perform_task,prop_name,&decision_date)); + //ITKCALL(DATE_date_to_string(decision_date,arg3value,&timeinfo1)); + ////ECHO("timeinfo : %s",timeinfo1); + ////ITK_date_to_string (decision_date, &timeinfo1); + //strcat( output_str, timeinfo1 ); + //strcat(output_str,"|"); + //ECHO("timeinfo : %s",timeinfo1); + //strcpy(flownode_s[nodecount].taskname,cur_task_name); + //strcpy(flownode_s[nodecount].username,person_name); + //strcpy(flownode_s[nodecount].timeinfo,timeinfo1); + //nodecount = nodecount + 1; + //MEM_free(userName); + } + else + { + //˼ + tag_t owner = NULLTAG; + date_t date; + logical is_valid; + char *d_value = NULL; + CALL(AOM_ask_owner( cur_perform_task, &owner)); + if( owner != NULLTAG ) + CALL(SA_ask_user_person_name(owner, person_name)); + ITKCALL(AOM_ask_value_date(cur_perform_task,"creation_date", &date));//fnd0StartDate + DATE_date_to_string(date,arg3value,&d_value); + //ITKCALL(AOM_UIF_ask_value( cur_perform_task, "fnd0StartDate", &d_value)); + ECHO("d_value : %s",d_value); + strcat(output_str, ""); + strcat(output_str, "="); + strcat(output_str, person_name); + strcat(output_str, "|"); + strcat(output_str, "="); + //CALL(DATE_date_to_string(date,arg3value,&timeinfo)); + //ITKCALL(DATE_string_to_date_t(d_value, &is_valid,&date)); + //CALL(DATE_date_to_string(date,arg3value,&timeinfo)); + //ECHO("timeinfo : %s",timeinfo); + //vector ans; + //if( d_value != NULL ) + //{ + // Split(d_value, ' ', ans); + // if(ans.size() > 1) + // strcat(output_str,ans[0].c_str()); + //} + strcat(output_str,d_value); + //DOFREE(timeinfo); + strcat(output_str, "|"); + strcpy(flownode_s[nodecount].taskname,""); + strcpy(flownode_s[nodecount].username,person_name); + //if(ans.size() > 1) + strcpy(flownode_s[nodecount].timeinfo,d_value); + nodecount = nodecount + 1; + ECHO("output_str=%s",output_str); + ITKCALL(EPM_ask_all_attachments(cur_perform_task,&perform_count,&perform_attaches,&attach_type)); + ECHO("EPM_signoff_attachment Counts = %d", perform_count); + + for(i=0;i 0) + { + for (i=0;i type_vec; + + //Split(exclude_type,";",type_vec); + + ECHO("1%d\n",userinfoscount); + ECHO("2%d\n",timeinfoscount); + + ITKCALL( EPM_ask_root_task( msg.task, &root_task ) ); + ITKCALL( EPM_ask_sub_tasks( root_task, &sub_task_count, &sub_tasks) ); + ITKCALL( EPM_ask_name( root_task, root_task_name ) ); + ECHO("root_task_name=%s\n",root_task_name); + ITKCALL( EPM_ask_name( current_task, task_name ) ); + ECHO( "sub_task_count = %d\n", sub_task_count ); + +//test========================== + //tag_t user = NULLTAG, *tasks = NULL; + //int n_task= 0; + //ITKCALL(SA_find_user( "admin", &user )); + //ITKCALL(SA_ask_user_work_contexts ( user, &n_task, &tasks)); + //ECHO("==========n_task=%d",n_task); +//============================== + + //DOڵ + if(strcmp(task_name,"") == 0) + { + ECHO("task_name:%s",task_name); + s = EPM_ask_responsible_party(current_task,&responsibleParty); + if(responsibleParty != NULLTAG) + { + decision = EPM_go; + } + s = POM_get_user(&userName,&aUserTag); + ITKCALL(SA_ask_user_person_name(aUserTag,person_name)); + strcat(sign_info,task_name); + strcat(sign_info,"="); + strcat(sign_info,person_name); + strcat(sign_info,"|"); + strcat(sign_info,task_name); + strcat(sign_info,"="); + AOM_ask_value_date(current_task,prop_name,&decision_date); + //AOM_UIF_ask_value(current_task,prop_name, &timeinfo2); + DATE_date_to_string(decision_date,arg3value,&timeinfo2); + ECHO("timeinfo2=%s",timeinfo2); + strcat(sign_info,timeinfo2); + strcat(sign_info,"|"); + strcpy(flownode_s[nodecount].taskname,task_name); + strcpy(flownode_s[nodecount].username,person_name); + strcpy(flownode_s[nodecount].timeinfo,timeinfo2); + nodecount = nodecount + 1; + + } + else //performڵ + { + for(i=0;i +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int JK_check_workflow(EPM_rule_message_t msg) +{ + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok, arg_cnt = 0, i = 0, att_cnt = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL; + char * object_TYPE_1 = NULL; + char * object_string1=NULL; + string value_type = ""; + string value_property=""; + string errorMessage="EBOMӦMBOM°δֹ:\n"; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + int reference_count=0;tag_t * reference_attachment=NULLTAG; + ifail = EPM_ask_attachments(rootTask_tag, EPM_reference_attachment, &reference_count, &reference_attachment); + vector errorVec;//ŵδMBOMIDEBOMidӰ汾 + //ѭĿ + for (i = 0; i < att_cnt; i++) { + ITKCALL(ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1));// + cout << object_TYPE_1; + cout << endl; + if(strcmp("JK8MaterialRevision",object_TYPE_1)==0) + { + int MBOMNums=0; + tag_t *MBOMTags=NULLTAG; + ITKCALL(ifail=AOM_ask_value_tags(attachments[i],"JK8MBOMRelation",&MBOMNums,&MBOMTags)); + for (int j=0;j0) + { + for (int i=0;i +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +//#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include "string_utils.h" +#include +#include "tc_log.h" +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "epm/epm.h" + +//#include "libxl.h" +#include +#include +using namespace std; +typedef struct +{ + string ITEM_ID;//id + string ITEM_REVISION_ID;// +}PRO_STRUCT1; +//ͣ߼ѡеϷ̣еİ汾Ƿ񷢲δİ汾ֹ̣ʾϢ +//ע⣺ܶԶϷ +int MaterialDiscontinuation(EPM_rule_message_t msg) +{ + cout<<"ܷͣ"<"< item_vec; + for (i = 0; i < att_cnt; i++) + { + //øа汾汾revision_list + ITKCALL(ifail=AOM_ask_value_string(attachments[i],"object_type",&object_type)); + if(strcmp("JK8Material",object_type)==0)//LP2_Design_Part + { + ITKCALL( ifail=AOM_ask_value_tags(attachments[i],"revision_list",&revtion_nums,&revision_list)); + for (int j=0;j0) + { + cout<<"111111111111"< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +//#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include "string_utils.h" +#include +#include "tc_log.h" +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "epm/epm.h" + +//#include "libxl.h" +#include +#include +using namespace std; +typedef struct +{ + string ITEM_ID;//id +}PRO_STRUCT; +int MaterialOpenning(EPM_rule_message_t msg) +{ + cout<<"ܷ"<"< item_vec; + for (i = 0; i < att_cnt; i++) + { + //øа汾汾revision_listжϰ汾ûʧЧ״̬жûʧЧ״̬ + ifail=AOM_ask_value_string(attachments[i],"object_type",&object_type); + if(strcmp("JK8Material",object_type)==0) + { + ifail=AOM_ask_value_tags(attachments[i],"release_status_list",&release_nums,&release_list); + if(release_nums==0) + { + PRO_STRUCT elements ; + ifail=AOM_ask_value_string(attachments[i],"item_id",&object_type); + elements.ITEM_ID.assign(object_type); + item_vec.push_back(elements); + } + for (int k=0;k0) + { + string error_string="\n"; + for (int i=0;i +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +# include "common_itk_util.h" +using namespace std; +extern "C" int POM_AM__set_application_bypass(logical bypass); +int addDisabled(EPM_action_message_t msg) +{ + int ifail=ITK_ok; + + EPM_decision_t decision = EPM_go; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULLTAG,*revision_list=NULLTAG; + int arg_cnt = 0, i = 0, att_cnt = 0,revtion_nums=0; + int release_nums=0; + tag_t *release_list=NULLTAG; + char* object_type; + tag_t release_stat = NULLTAG; + vector attatcgments; + string dateType="dis"; + ITKCALL(ifail=RELSTAT_create_release_status("jk8Disabled", &release_stat));//TCM Released jk8Disabled + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + cout<<"------->"< +#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 + + +void ECHO(char *format, ...) +{ + //if( !YFJC_OPT_DEBUG ) + // return; + + char msg[20480]; + va_list args; + + va_start( args, format ); + vsprintf( msg, format, args ); + va_end( args ); + + printf( msg ); + TC_write_syslog( msg ); +} + +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/jf_itk/common_itk_util.h b/jf_itk/common_itk_util.h new file mode 100644 index 0000000..71ca4ea --- /dev/null +++ b/jf_itk/common_itk_util.h @@ -0,0 +1,41 @@ +/** +* @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 + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} +void ECHO(char *format, ...); +void CreateLogFile(char* FunctionName, char **fullname); +void WriteLog(const char* format, ...); +void CloseLog(void); +void set_bypass(logical bypass); +void current_time( date_t * date_tag ); +//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/jf_itk/connor_util.cpp b/jf_itk/connor_util.cpp new file mode 100644 index 0000000..ce93499 --- /dev/null +++ b/jf_itk/connor_util.cpp @@ -0,0 +1,52 @@ +#include "connor_util.h" + +/** +*жijǷ +*objtag ҪжϵĶ +*type_name ͵ +*/ +int checkIsTypeOrSubtype(tag_t objtag,char * type_name){ + printf("жǷ%s\n",type_name); + tag_t type = NULLTAG; + ITKCALL(TCTYPE_ask_object_type(objtag,&type)); + tag_t item_type = NULLTAG; + ITKCALL(TCTYPE_find_type(type_name,"",&item_type)); + int is_type = 0; + if(item_type != NULLTAG){ + printf("ҵ%s\n",type_name); + //printf(" find Folder type ok !!!! \n"); + logical isok = FALSE; + ITKCALL(TCTYPE_is_type_of(type,item_type,&isok)); + if(isok){ + printf("%s༰\n",type_name); + is_type= 1; + }else{ + printf("%s༰\n",type_name); + is_type= 0; + } + }else{ + printf("ûҵ%s\n",type_name); + } + return is_type; +} + +/** +* ȡѡ +*/ +int getPrefStrings( const char *preference, TC_preference_search_scope_t scope, vector &pref_vec ) +{ + int ifail = ITK_ok , i = 0, j = 0, k =0, num = 0; + char **values; + TC_preference_search_scope_t old_scope; + ITKCALL( ifail = PREF_ask_search_scope( &old_scope) ); + ITKCALL( ifail = PREF_set_search_scope( scope ) ); + ITKCALL( ifail = PREF_ask_char_values( preference, &num, &values ) ); + //WriteLog("num=%d",num); + for(i = 0; i < num; i++) + { + pref_vec.push_back(values[i]); + } + DOFREE(values); + ITKCALL( ifail = PREF_set_search_scope( old_scope ) ); + return ifail; +} \ No newline at end of file diff --git a/jf_itk/connor_util.h b/jf_itk/connor_util.h new file mode 100644 index 0000000..1c1a6cd --- /dev/null +++ b/jf_itk/connor_util.h @@ -0,0 +1,54 @@ +#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 +#include +#include +#include +#include +#include +#include +using namespace std; + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} + +int checkIsTypeOrSubtype(tag_t objtag,char * type_name); +int getPrefStrings( const char *preference, TC_preference_search_scope_t scope, vector &pref_vec); + + \ No newline at end of file diff --git a/jf_itk/epm_attach_objects.cxx b/jf_itk/epm_attach_objects.cxx new file mode 100644 index 0000000..f131856 --- /dev/null +++ b/jf_itk/epm_attach_objects.cxx @@ -0,0 +1,321 @@ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) + +/** +* @headerfile tcua ͷļ +*/ +#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 +#include +using namespace std; + +/** +* @headerfile user's header files +*/ + +#include "epm_handler_common.h" +#include "error_handling.h" + +#define BOM_VIEWTYPE "view" +void ECHO(char *format, ...); +extern "C" int POM_AM__set_application_bypass(logical bypass); +extern "C" int AM__set_application_bypass(logical bypass); + + + +int getBomView(tag_t rev_tag, char* viewtype, tag_t *bomView, tag_t *bomBVR, int debug); + + + + + +int CycleBOM1( tag_t bomline, char *userid,char *status, vector &attach_vec, map< string,int > &errMap, logical debug) +{ + tag_t child_item_tag = NULLTAG, child_rev_tag = NULLTAG, ebom_view = NULLTAG, ebom_bvr = NULLTAG, + *child_lines = NULL, *status_tag_list = NULL, last_rev = NULLTAG, owning_user = NULLTAG; + int ifail = ITK_ok ,j = 0, itemrev_attr_id = 0, zuhao_attr_id = 0, child_cnt = 0, viewtype_attr_id = 0, + status_attr_id = 0, status_count = 0; + char child_item_id[ITEM_id_size_c + 1]="", *viewtype_value = NULL, *status_list = NULL, + child_rev_id[8]="", user_id[33]=""; + + ITKCALL(ifail = BOM_line_look_up_attribute(bomAttr_itemRevStatus, &status_attr_id)); + ITKCALL( ifail = BOM_line_look_up_attribute(bomAttr_lineItemRevTag, &itemrev_attr_id)); + ITKCALL(ifail = BOM_line_ask_child_lines(bomline, &child_cnt, &child_lines)); + for( int i = 0; i < child_cnt; i++ ) + { + //ITKCALL(ifail = BOM_line_ask_attribute_string(child_lines[k], status_attr_id, &status_list)); + + ITKCALL( ifail = BOM_line_ask_attribute_tag(child_lines[i], itemrev_attr_id, &child_rev_tag)); + ITKCALL(AOM_ask_owner( child_rev_tag, &owning_user)); + ITKCALL (SA_ask_user_identifier(owning_user, user_id)); + if( debug ) + ECHO("process user_id is %s, object owner is %s\n", userid, user_id); + if( strcmp( userid, user_id ) ==0 ) + { + ITKCALL(WSOM_ask_release_status_list(child_rev_tag,&status_count,&status_tag_list)); + logical isInculde = false; + if( status_count > 0 ) + { + for (int j = 0;j < status_count;j++) + { + char status_type[WSO_name_size_c+1] = ""; + ITKCALL(CR_ask_release_status_type(status_tag_list[j],status_type)); + if( debug ) + ECHO("ָ״̬:%s, 󷢲״̬%s\n",status,status_type); + if( stricmp(status_type, status) == 0 ) + { + int last_status_count = 0; + tag_t *last_status_tag_list = NULL,new_child_rev = NULLTAG; + ITKCALL(ITEM_ask_item_of_rev( child_rev_tag, &child_item_tag )); + ITKCALL(ITEM_ask_latest_rev( child_item_tag, &last_rev )); + ITKCALL(WSOM_ask_release_status_list(last_rev,&last_status_count,&last_status_tag_list)); + if( last_status_count == 0 ) + { + attach_vec.push_back(last_rev); + if( debug ) + ECHO("add last_rev"); + } + else + { + POM_AM__set_application_bypass(true); + //ITKCALL( ITEM_create_rev(child_item_tag, NULL, &new_child_rev )); + ITKCALL( ITEM_copy_rev( last_rev,NULL, &new_child_rev )); + ITKCALL(AOM_save(new_child_rev)); + ITKCALL(AOM_unlock(new_child_rev)); + attach_vec.push_back(new_child_rev); + if( debug ) + ECHO("add new_child_rev"); + } + DOFREE(last_status_tag_list); + } + } //for + + } + else + { + attach_vec.push_back(child_rev_tag); + if( debug ) + ECHO("add self"); + } + DOFREE(status_tag_list); + } + + } + for( int i = 0; i < child_cnt; i++ ) + { + ifail = CycleBOM1(child_lines[i], userid, status, attach_vec, errMap, debug); + } + return ifail; +} + +int HZ_attach_assembly(EPM_action_message_t msg) +{ + + int ifail = ITK_ok, arg_cnt = 0, att_cnt = 0, i, j, k, m,p,q, pref_count = 0, bvr_cnt = 0, child_cnt = 0, + status_attr_id = 0, rev_attr_id = 0, form_count =0, value_count = 0,n_instances = 0, + factory_count = 0, num = 0, bvr_count = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + tag_t *attachments = NULL, *bvrs = NULL, *child_lines = NULL, child_rev_tag = NULLTAG, item_tag = NULLTAG, + rev_tag = NULLTAG; + char *arg = NULL, *flag = NULL, *value = NULL, **values = NULL, type_class[WSO_object_type_size_c+1], + item_id[ITEM_id_size_c+1], rev_id[ITEM_id_size_c+1], *argflag =NULL,*argvalue=NULL , + arg_rev_rule[128] = "",arg_status[128] = "",arg3value[128]="",arg_debug[10]="", userid[33]=""; + + int attachment_types = 0; + logical is_bypass= false; + logical debug = true; + tag_t bomWindow = NULLTAG, bom_top_line = NULLTAG, bom_config_rule = NULLTAG; + map errMap; + vector attach_vec; + EPM_decision_t decision = EPM_go; + + ECHO("*************************************************************\n"); + ECHO("* HZ_attach_assembly is comming ! *\n"); + ECHO("*************************************************************\n"); + + POM_AM__set_application_bypass(true); + ECHO("POM_AM__set_application_bypass\n"); + + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + //goto end_handler; + return ifail; + } + tag_t rootTask = NULLTAG; + + + //ò + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + for (i=0;i 0 ) + //{ + // EPM_set_decision(msg.task, user, CR_no_decision, "", false ); + // map::iterator err_it; + // for( err_it = errMap.begin(); err_it != errMap.end(); err_it++ ) + // { + // ECHO("DEBUG: err_it is %s\n", err_it->first.c_str()); + // EMH_store_error_s1(EMH_severity_information,err_it->second, err_it->first.c_str()); + // } + // ifail = CR_error_in_handler; + // return ifail; + //} + + + errMap.clear(); + ECHO("\n************************************************************\n"); + ECHO("* HZ_attach_assembly is end! *\n"); + ECHO("*************************************************************\n"); + return ITK_ok; +} \ No newline at end of file diff --git a/jf_itk/epm_check_status.cxx b/jf_itk/epm_check_status.cxx new file mode 100644 index 0000000..1879f3f --- /dev/null +++ b/jf_itk/epm_check_status.cxx @@ -0,0 +1,389 @@ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) + +/** +* @headerfile tcua ͷļ +*/ +#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 +using namespace std; + +/** +* @headerfile user's header files +*/ + +#include "epm_handler_common.h" +#include "error_handling.h" + +#define BOM_VIEWTYPE "view" +void ECHO(char *format, ...) +{ + //if( !YFJC_OPT_DEBUG ) + // return; + + char msg[20480]; + va_list args; + + va_start( args, format ); + vsprintf( msg, format, args ); + va_end( args ); + + printf( msg ); + TC_write_syslog( msg ); +} + + + + +int getBomView(tag_t rev_tag, char* viewtype, tag_t *bomView, tag_t *bomBVR, int debug) +{ + int ifail = ITK_ok, rcode = 0, count = 0, i = 0, j =0, p =0, q = 0, length = 0,child_cnt = 0, + bvr_count =0, n = 0, bom_attr_id = 0, itemid_attr_id = 0,revid_attr_id = 0, view_count =0, + itemrev_attr_id = 0, qty_attr_id = 0, seq_attr_id = 0, child_bvr_count = 0, factory_count =0; + + tag_t item = NULLTAG, new_bom_line = NULLTAG, folder = NULLTAG, *bomview_list = NULL, *bvr_list = NULL, + p_rev_tag = NULLTAG, bom_view = NULLTAG, bvr = NULLTAG, child_item_tag = NULLTAG, view_type = NULLTAG, + mbom_bvr = NULLTAG, ebom_bvr = NULLTAG,ebom_view = NULLTAG, mbom_view = NULLTAG; + char object_type[WSO_object_type_size_c+1]="",*value = NULL; + + + *bomBVR = NULLTAG; + *bomView = NULLTAG; + ITKCALL( ITEM_rev_list_bom_view_revs( rev_tag, &bvr_count, &bvr_list ) ); + if( bvr_count > 0 ) + { + mbom_bvr = NULLTAG; + for( i=0; i < bvr_count; i++ ) + { + ITKCALL(PS_ask_bom_view_of_bvr(bvr_list[i], &bom_view)); + + ITKCALL(PS_ask_bom_view_type(bom_view, &view_type)); + //ITKCALL( PS_find_view_type(bom_view, &view_type)); + char *view_type_name = NULL; + ITKCALL(PS_ask_view_type_name(view_type, &view_type_name)); + if( debug ) + ECHO("\nDEBUG: view_type_name=%s\n", view_type_name); + + if (tc_strcmp(view_type_name, viewtype) == 0) + { + *bomBVR = bvr_list[i]; + *bomView = bom_view; + } + DOFREE(view_type_name); + } + } + DOFREE(bvr_list); + return ifail; +} +//equal=0Ϊ>=,equal=1Ϊ> +int getAfterStatus( vector &full_vec,int equal,char *status, vector &after_vec ) +{ + int ifail = 0, i =0, j=0; + logical flag = false; + for( i = 0; i &full_vec,char *arg_status, int equal,char *status ) +{ + int ifail = 0, i =0, j=0; + logical isInclude = false; + vector after_vec; + + getAfterStatus(full_vec, equal, arg_status, after_vec); + for( i = 0; i < after_vec.size(); i ++ ) + { + ECHO("after_vec[%d]:%s status:%s\n",i,after_vec[i].c_str(), status); + if( stricmp(after_vec[i].c_str(), status) ==0 ) + { + isInclude = true; + break; + } + } + return isInclude; +} +int CycleBOM( tag_t bomline,char *process_owner, char *arg_status, vector &status_vec, map< string,int > &errMap, logical debug) +{ + tag_t child_item_tag = NULLTAG, child_rev_tag = NULLTAG, ebom_view = NULLTAG, ebom_bvr = NULLTAG, + *child_lines = NULL, *status_tag_list = NULL,owning_user = NULLTAG; + int ifail = ITK_ok ,j = 0, itemrev_attr_id = 0, zuhao_attr_id = 0, child_cnt = 0, viewtype_attr_id = 0, + status_attr_id = 0, status_count = 0; + char child_item_id[ITEM_id_size_c + 1]="", *viewtype_value = NULL, *status_list = NULL, + child_rev_id[8]="", user_id[33]=""; + + ITKCALL(ifail = BOM_line_look_up_attribute(bomAttr_itemRevStatus, &status_attr_id)); + ITKCALL( ifail = BOM_line_look_up_attribute(bomAttr_lineItemRevTag, &itemrev_attr_id)); + ITKCALL(ifail = BOM_line_ask_child_lines(bomline, &child_cnt, &child_lines)); + for( int i = 0; i < child_cnt; i++ ) + { + //ITKCALL(ifail = BOM_line_ask_attribute_string(child_lines[k], status_attr_id, &status_list)); + ITKCALL( ifail = BOM_line_ask_attribute_tag(child_lines[i], itemrev_attr_id, &child_rev_tag)); + ITKCALL(AOM_ask_owner( child_rev_tag, &owning_user)); + ITKCALL (SA_ask_user_identifier(owning_user, user_id)); + ITKCALL(WSOM_ask_release_status_list(child_rev_tag,&status_count,&status_tag_list)); + //if( debug ) + ECHO("status_count%d\n",status_count); + logical isInculde = false; + if( status_count > 0 ) + { + for (int j = 0;j < status_count;j++) + { + char status_type[WSO_name_size_c+1] = ""; + ITKCALL(CR_ask_release_status_type(status_tag_list[j],status_type)); + //if( debug ) + ECHO("״̬: %s, 󷢲״̬%s\n",arg_status,status_type); + if( strcmp( process_owner, user_id ) ==0 ) + { + if( isInVec(status_vec,arg_status,0,status_type) ) //>= + { + isInculde = true; + } + } + else if( strcmp( process_owner, user_id ) !=0 && + stricmp( status_type,"H9_Released" ) != 0) + { + if( isInVec(status_vec,arg_status,1,status_type) ) //> + { + isInculde = true; + } + } + + } + if( !isInculde ) + { + ITKCALL(ITEM_ask_rev_id(child_rev_tag, child_rev_id)); + ITKCALL(ITEM_ask_item_of_rev( child_rev_tag, &child_item_tag )); + ITKCALL(ITEM_ask_id( child_item_tag, child_item_id )); + string errMsg; + errMsg.assign(child_item_id).append("/").append(child_rev_id).append(" ȲϷҪ"); + errMap.insert(pair(errMsg,ERROR_STATUS_ERROR)); + } + + } + else //working״̬ + { + ECHO("״̬, process_owner:%s, user_id:%s\n",arg_status,user_id); + if( strcmp( process_owner, user_id ) !=0 ) + { + ITKCALL(ITEM_ask_rev_id(child_rev_tag, child_rev_id)); + ITKCALL(ITEM_ask_item_of_rev( child_rev_tag, &child_item_tag )); + ITKCALL(ITEM_ask_id( child_item_tag, child_item_id )); + string errMsg; + errMsg.assign(child_item_id).append("/").append(child_rev_id).append(" ȲϷҪ"); + errMap.insert(pair(errMsg,ERROR_STATUS_ERROR)); + } + } + DOFREE(status_tag_list); + + } + for( int i = 0; i < child_cnt; i++ ) + { + ifail = CycleBOM(child_lines[i],process_owner, arg_status, status_vec, errMap, debug); + } + return ifail; +} + +int HZ_Check_BOM_Condition(EPM_rule_message_t msg) +{ + + int ifail = ITK_ok, arg_cnt = 0, att_cnt = 0, i, j, k, m,p,q, pref_count = 0, bvr_cnt = 0, child_cnt = 0, + status_attr_id = 0, rev_attr_id = 0, form_count =0, value_count = 0,n_instances = 0, + factory_count = 0, num = 0, bvr_count = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + tag_t *attachments = NULL, *bvrs = NULL, *child_lines = NULL, child_rev_tag = NULLTAG, item_tag = NULLTAG, + rev_tag = NULLTAG, user = NULLTAG; + char *arg = NULL, *flag = NULL, *value = NULL, **values = NULL, type_class[WSO_object_type_size_c+1], + item_id[ITEM_id_size_c+1], rev_id[ITEM_id_size_c+1], *argflag =NULL,*argvalue=NULL , + arg_rev_rule[128] = "",arg_status[128] = "",arg3value[128]="",arg_debug[10]="", userid[33]=""; + + + tag_t bomWindow = NULLTAG, bom_top_line = NULLTAG, bom_config_rule = NULLTAG; + map errMap; + vector status_vec; + //map zuhaoMap; + EPM_decision_t decision = EPM_go; + logical debug = true; + ECHO("*************************************************************\n"); + ECHO("* HZ_Check_BOM_Condition is comming ! *\n"); + ECHO("*************************************************************\n"); + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + //goto end_handler; + return EPM_nogo; + } + tag_t rootTask = NULLTAG; + status_vec.clear(); + status_vec.push_back("working"); + status_vec.push_back("H9_M0"); + status_vec.push_back("H9_M1"); + status_vec.push_back("H9_M2"); + status_vec.push_back("H9_P"); + status_vec.push_back("H9_M3"); + status_vec.push_back("H9_B"); + status_vec.push_back("H9_D"); + status_vec.push_back("H9_Released"); + + //ò + arg_cnt = TC_number_of_arguments(msg.arguments); + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + return EPM_nogo; + } + + ifail = CFM_find(arg_rev_rule, &rev_rule_tag ); + + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + + ITKCALL(AOM_ask_owner(rootTask_tag, &user)); + + ITKCALL(SA_ask_user_identifier( user , userid)); + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + if( debug ) + ECHO("DEBUG: find %d target\n", att_cnt); + for( i = 0; i < att_cnt; i++ ) + { + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + if (((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && (strstr(type_class,"BOM") ==NULL) && (strstr(type_class,"bom") ==NULL) && (strstr(type_class,"Bom") == NULL)) + { + rev_tag = attachments[i]; + ITKCALL(ITEM_ask_item_of_rev(rev_tag, &item_tag)); + ITKCALL(ITEM_ask_id(item_tag, item_id)); + tag_t ebom_view = NULLTAG, ebom_bvr = NULLTAG, ebom_window = NULLTAG, ebom_line = NULLTAG, + dbom_view = NULLTAG,dbom_bvr = NULLTAG; + ifail = getBomView(rev_tag, BOM_VIEWTYPE, &ebom_view, &ebom_bvr, 1); + + if( ebom_view != NULLTAG ) + { + ITKCALL( BOM_create_window( &ebom_window ) ); + if( rev_rule_tag != NULLTAG) + ITKCALL( BOM_set_window_config_rule(ebom_window, rev_rule_tag)); + ITKCALL( BOM_set_window_top_line_bvr( ebom_window, ebom_bvr, &ebom_line ) ); + CycleBOM(ebom_line,userid,arg_status,status_vec,errMap,debug); + ITKCALL(BOM_close_window(ebom_window)); + } + } + + } + DOFREE(attachments); + if( debug ) + ECHO("DEBUG: errMap.size is %d\n", errMap.size()); + if( errMap.size() > 0 ) + decision = EPM_nogo; + else + decision = EPM_go; + map::iterator err_it; + for( err_it = errMap.begin(); err_it != errMap.end(); err_it++ ) + { + ECHO("DEBUG: err_it is %s\n", err_it->first.c_str()); + EMH_store_error_s1(EMH_severity_information,err_it->second, err_it->first.c_str()); + } + errMap.clear(); + ECHO("\n************************************************************\n"); + ECHO("* HZ_Check_BOM_Condition is end! *\n"); + ECHO("*************************************************************\n"); + return decision; +} \ No newline at end of file diff --git a/jf_itk/epm_handler_common.h b/jf_itk/epm_handler_common.h new file mode 100644 index 0000000..b0f86ca --- /dev/null +++ b/jf_itk/epm_handler_common.h @@ -0,0 +1,69 @@ +/** +* @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 +#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 ORIGIN_set_bypass(void *returnValue); +int USERSEVICE_TEST(void * returnValue); +int remove_class(void *returnValue); +int connor_set_release_status(void * returnValue); +int ORIGIN_close_bypass(void *returnValue); +int getDbMsg(void *returnValue); +int jf_sign_ir_master(EPM_action_message_t msg); +int tx_sign_ir_master(EPM_action_message_t msg); +int tx_AutoSign_Handler(EPM_action_message_t msg); +int jk_AutoSign_Handler(EPM_action_message_t msg); +int jf_signoff_dataset( EPM_action_message_t msg ); +int check_target_null( EPM_rule_message_t msg ); +int jk_check_virtual( EPM_rule_message_t msg ); +int JK_check_workflow( EPM_rule_message_t msg ); +int tm_sign_tongzhi(EPM_action_message_t msg); +int tm_show_object_name(EPM_action_message_t msg); +int JK_bypass(EPM_action_message_t msg); +int JK_class_null(EPM_rule_message_t msg); + +int HZ_Check_BOM_Condition(EPM_rule_message_t msg); +int HZ_attach_assembly(EPM_action_message_t msg); + //user service end +#ifdef __cplusplus +} +#endif + +#endif + + +/** +* @} +*/ \ No newline at end of file diff --git a/jf_itk/epm_register_handler.cpp b/jf_itk/epm_register_handler.cpp new file mode 100644 index 0000000..4b5f843 --- /dev/null +++ b/jf_itk/epm_register_handler.cpp @@ -0,0 +1,868 @@ +/*=================================================================================================== + 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 creation + +$HISTORY$ +==================================================================================================*/ + +#pragma warning (disable: 4819) + +/** +* @headerfile tcua ͷļ +*/ +#include +#include +#include +#include + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +#include +#include +#include +#include + + +/** +* @headerfile user's header files +*/ +#include "epm_register_handler.h" +#include "epm_handler_common.h" +#include "erp_send_item.h" +#include "hz_custom.h" +#include "hx_custom.h" +#include "jk_custom.h" +#include "jk_custom_erp.h" + +#define LIMITDAY 2016 + +int checkvalue(char* str) +{ + + int i; + for (i=0;i + +#ifdef __cplusplus +extern "C" { +#endif + +extern DLLAPI int USERSERVICE_custom_register_handlers(int *, va_list); +extern DLLAPI int USERSERVICE_custom_register_methods(int *decision, va_list args); +extern DLLAPI int USERSERVICE_custom_register_runtime_methods(int *decision, va_list args); +extern int Register_revise_msg( void ); +extern int Run_Time_register_properties( void ); +// int Q7_ebom_to_pbom (void * returnValueType); + +#ifdef __cplusplus +} +#endif + +#endif + + +/** +* @} +*/ \ No newline at end of file diff --git a/jf_itk/epm_sign_rev.cxx b/jf_itk/epm_sign_rev.cxx new file mode 100644 index 0000000..0db4c68 --- /dev/null +++ b/jf_itk/epm_sign_rev.cxx @@ -0,0 +1,1298 @@ +/*=================================================================================================== + Copyright(c) 2011 Siemens PLM Software Corp. All rights reserved. + Unpublished - All rights reserved +==================================================================================================== +File description: + + Filename : epm_autosign_hander.cpp + + This file describes action handler function : PLA8-signoff + + ǩϢд + +==================================================================================================== +Date Name Description of Change +19-Jan-2013 Ray Li creation + +$HISTORY$ +==================================================================================================*/ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) +/** +* @headerfile tcua ͷļ +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +//#include +//#include +#include +#include +#include +#include +#include +#include +using namespace std; + +/** +* @headerfile user's header files +*/ +#include "epm_handler_common.h" +#include "error_handling.h" +#include "common_itk_util.h" +#include "string_utils.h" +#include "epm_sign_rev.h" + +//̽ڵϢ +struct FLOWNODEINFOS +{ + char taskname[128]; + char username[128]; + char timeinfo[128]; + char group[128]; +}flownode_s[64]; + +//ԱϢ +struct USERINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}userinfo_s[64]; + +//Ϣ +struct TIMEINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}timeinfo_s[64]; + +////ǩϢ +//struct SIGNCOUNTERINFO +//{ +// char taskname[128]; +// char group[128]; +// char propertyname[128]; +//}counter_s[64]; + +int nodecount = 0; +int userinfoscount = 0; +int timeinfoscount = 0; + +typedef struct{ + string TaskUserName; + string TaskTimeName; + string UserName; + string TimeStr; + string GroupName; + string PropUserName; + string PropTimeName; +}NOTICE_NODE; + + +//int counterinfocount = 0; +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} +//struct SIGN_INFO_STRUCT +//{ +// string userid; +// string username; +// string taskname; +// string signdate; +//}; +//struct SIGN_PROPS_STRUCT +//{ +// string taskname; +// string propname; +//}; +//struct SIGN_TIME_STRUCT +//{ +// string taskname; +// string propname; +//}; +extern "C" int POM_AM__set_application_bypass(logical bypass); + + + + +int ORIGIN_ask_sign_info(tag_t task_node, char *output_str,char *task_name,char *arg3value) +{ + int ifail = ITK_ok; + tag_t cur_perform_task = NULLTAG,tempTask = NULLTAG; + char cur_task_name[WSO_name_size_c+1]="",buf[128] = ""; + //жϱ + int s = 0; + EPM_decision_t decision = EPM_nogo; + char* userName; + char *timeinfo1 = "",person_name[SA_name_size_c+1]="",*prop_name = "last_mod_date"; + tag_t aUserTag = NULLTAG,responsibleParty = NULLTAG; + date_t decision_date; + //ڵ + int perform_count = 0; + int *attach_type; + tag_t *perform_attaches = NULLTAG; + tag_t memberTag = NULLTAG; + SIGNOFF_TYPE_t memberType; + CR_signoff_decision_t signoff_decision; + char comments[CR_comment_size_c+1],*timeinfo="",*group_full_name = NULL; + tag_t user_tag=NULLTAG, group_tag = NULLTAG; + //ѭжϱ + int i=0; + + EPM_ask_name( task_node, cur_task_name ) ; + ECHO("cur_task_name = %s\n",cur_task_name); + if ( stricmp( cur_task_name, "perform-signoffs" ) == 0 ) + { + cur_perform_task = task_node; + //õڵ + EPM_ask_parent_task( cur_perform_task, &tempTask ); + EPM_ask_name( tempTask, cur_task_name ); + } + else if( strcmp( cur_task_name, "" ) == 0 || strcmp( cur_task_name, "" ) == 0) + { + cur_perform_task = task_node; + } + else + { + EPM_ask_sub_task(task_node, "perform-signoffs", &cur_perform_task) ; + if ( cur_perform_task != NULLTAG ) + { + EPM_ask_name( task_node, cur_task_name ); + + ECHO( "---------> cur_task_name = %s\n" , cur_task_name ); + + } + } + if(cur_perform_task != NULLTAG ) + { + if( strcmp( cur_task_name, "" ) == 0||strcmp( cur_task_name, "" ) == 0 ) + { + tag_t owner = NULLTAG; + ECHO("task_name=%s\n",task_name); + s = EPM_ask_responsible_party(cur_perform_task,&responsibleParty); + if(responsibleParty != NULLTAG) + { + decision = EPM_go; + } + AOM_ask_owner( cur_perform_task, &owner); + //s = POM_get_user(&userName,&aUserTag); + if( owner != NULLTAG ) + SA_ask_user_person_name(owner, person_name); + ECHO("person_name=%s\n",person_name); + strcat(output_str, cur_task_name); + strcat(output_str, "="); + strcat(output_str, person_name); + strcat(output_str, "|"); + strcat(output_str, cur_task_name); + strcat(output_str, "="); + AOM_ask_value_date(cur_perform_task,prop_name,&decision_date); + DATE_date_to_string(decision_date,arg3value,&timeinfo1); + ECHO("\n-------\ntimeinfo 111 : %s\n------------\n",timeinfo1); + //ITK_date_to_string (decision_date, &timeinfo1); 2017.11.23 ʱ串ǵ,ע + strcat( output_str, timeinfo1 ); + strcat(output_str,"|"); + ECHO("timeinfo : %s",timeinfo1); + strcpy(flownode_s[nodecount].taskname,cur_task_name); + strcpy(flownode_s[nodecount].username,person_name); + strcpy(flownode_s[nodecount].timeinfo,timeinfo1); + nodecount = nodecount + 1; + //MEM_free(userName); + } + else + { + //˼ + tag_t owner = NULLTAG; + date_t date; + logical is_valid; + char *d_value = NULL; + AOM_ask_owner( cur_perform_task, &owner); + if( owner != NULLTAG ) + SA_ask_user_person_name(owner, person_name); + AOM_ask_value_date(cur_perform_task,"creation_date", &date);//fnd0StartDate + DATE_date_to_string(date,arg3value,&d_value); + //ITKCALL(AOM_UIF_ask_value( cur_perform_task, "fnd0StartDate", &d_value)); + ECHO("d_value : %s",d_value); + strcat(output_str, ""); + strcat(output_str, "="); + strcat(output_str, person_name); + strcat(output_str, "|"); + strcat(output_str, "="); + //CALL(DATE_date_to_string(date,arg3value,&timeinfo)); + //ITKCALL(DATE_string_to_date_t(d_value, &is_valid,&date)); + //CALL(DATE_date_to_string(date,arg3value,&timeinfo)); + //ECHO("timeinfo : %s",timeinfo); + //vector ans; + //if( d_value != NULL ) + //{ + // Split(d_value, ' ', ans); + // if(ans.size() > 1) + // strcat(output_str,ans[0].c_str()); + //} + strcat(output_str,d_value); + //DOFREE(timeinfo); + strcat(output_str, "|"); + strcpy(flownode_s[nodecount].taskname,""); + strcpy(flownode_s[nodecount].username,person_name); + //if(ans.size() > 1) + strcpy(flownode_s[nodecount].timeinfo,d_value); + nodecount = nodecount + 1; + ECHO("output_str=%s",output_str); + EPM_ask_all_attachments(cur_perform_task,&perform_count,&perform_attaches,&attach_type); + ECHO("EPM_signoff_attachment Counts = %d", perform_count); + + for(i=0;i 0) + { + for (i=0;i type_vec; + + //Split(exclude_type,";",type_vec); + + ECHO("1%d\n",userinfoscount); + ECHO("2%d\n",timeinfoscount); + + //õhandlerĽڵ + msg.task; + //ͨڵȡ + EPM_ask_root_task( msg.task, &root_task ); + //õµеһڵ + EPM_ask_sub_tasks( root_task, &sub_task_count, &sub_tasks); + //õ̵ + EPM_ask_name( root_task, root_task_name ); + // + ECHO("root_task_name=%s\n",root_task_name); + EPM_ask_name( current_task, task_name ); + ECHO( "sub_task_count = %d\n", sub_task_count ); + +//test========================== + //tag_t user = NULLTAG, *tasks = NULL; + //int n_task= 0; + //ITKCALL(SA_find_user( "admin", &user )); + //ITKCALL(SA_ask_user_work_contexts ( user, &n_task, &tasks)); + //ECHO("==========n_task=%d",n_task); +//============================== + + //DOڵ + if(strcmp(task_name,"") == 0||strcmp(task_name,"") == 0) + { + ECHO("task_name:%s",task_name); + //ȡ + s = EPM_ask_responsible_party(current_task,&responsibleParty); + if(responsibleParty != NULLTAG) + { + decision = EPM_go; + } + //ȡǰû + s = POM_get_user(&userName,&aUserTag); + //ȡpersonname + SA_ask_user_person_name(aUserTag,person_name); + strcat(sign_info,task_name); + strcat(sign_info,"="); + strcat(sign_info,person_name); + strcat(sign_info,"|"); + strcat(sign_info,task_name); + strcat(sign_info,"="); + //POM_ask_v + //ȡʱԣ1󣬲2ƣ3ȡʱֵ + AOM_ask_value_date(current_task,prop_name,&decision_date); + //AOM_UIF_ask_value(current_task,prop_name, &timeinfo2); + //ʱṹתΪijʱʽַ + DATE_date_to_string(decision_date,arg3value,&timeinfo2); + ECHO("\n--------------\n timeinfo2=%s\n------------\n",timeinfo2); + strcat(sign_info,timeinfo2); + strcat(sign_info,"|"); + strcpy(flownode_s[nodecount].taskname,task_name); + strcpy(flownode_s[nodecount].username,person_name); + strcpy(flownode_s[nodecount].timeinfo,timeinfo2); + nodecount = nodecount + 1; + + } + else //performڵ + { + for(i=0;i0 ){ + + char * schdule_task_node_type = NULL; + AOM_ask_value_string(schdule_task_nodes[0],"object_type",&schdule_task_node_type); + if(strcmp(schdule_task_node_type,"ScheduleTask")==0){ + tag_t schdule = NULL_TAG; + date_t finish_date ; + AOM_ask_value_tag(schdule_task_nodes[0],"schedule_tag",&schdule); + AOM_ask_value_date(schdule_task_nodes[0],"finish_date",&finish_date); + char finish_date_str[300] = ""; + + if(schdule != NULL_TAG){ + char * schdule_name = NULL; + AOM_ask_value_string(schdule,"object_name",&schdule_name); + sprintf(finish_date_str,"%s[%d%d%d]",schdule_name,finish_date.year,finish_date.month+1,finish_date.day); + AOM_lock(tast_tag); + AOM_set_value_string(tast_tag,"object_name",finish_date_str); + + printf("\n"); + AOM_save(tast_tag); + AOM_unlock(tast_tag); + AOM_refresh(tast_tag,0); + if(schdule_name !=NULL){ + MEM_free(schdule_name); + schdule_name = NULL; + } + } + } + if(schdule_task_node_type !=NULL){ + MEM_free(schdule_task_node_type); + schdule_task_node_type = NULL; + } + } + if(task_name != NULL){ + MEM_free(task_name); + task_name = NULL; + } + if(schdule_task_nodes != NULL){ + MEM_free(schdule_task_nodes); + schdule_task_nodes = NULL; + } + + } + printf("سȨ\n"); + POM_AM__set_application_bypass(false); + printf("===================================\n"); + printf("ʱ \n"); + printf("===================================\n"); + + return ifail; + +} + +/** +* +* Description: +* This handler will set signoff infomation to properties of form +* +* Syntax: +* jf-sign-tongzhi [-debug=true|false] +* +* -SignUserName: =c7Formation;=c7Design;=c7Review +* +* -SignDate: =c7Formationtime;У=c7DesignTime;=c7ReviewTime +* +* -SignDateFormate: %Y-%m-%d +* +* -bypass +* +* -include_type Ҫǩı +* +*/ +int tm_sign_tongzhi(EPM_action_message_t msg) +{ + printf("======================================================\n"); + printf("ʼ֪ͨڵǩ\n"); + printf("======================================================\n"); + int ifail = ITK_ok ; + // + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="", + signcounter_info[1024] = "",include_type[1024]=""; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + BOOL setboth = TRUE ,bypass; + int arg_cnt = 0; + + //̽ڵ + tag_t root_task = NULLTAG ,current_task = NULLTAG,type_tag = NULLTAG; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + tag_t cur_task = NULLTAG; + char task_type[WSO_name_size_c+1] = ""; + int i=0, j=0, k=0, count = 0, n = 0; + tag_t itemrevision = NULLTAG,master_form_rel_type = NULLTAG; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + char *prop_name="last_mod_date"; + + current_task = msg.task; + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i include_type_vec; + vector signoff_name_info; + vector signoff_time_info; + vector notice_node_vec; + + Split(include_type,";",include_type_vec); + Split(arg1value,";",signoff_name_info); + Split(arg2value,";",signoff_time_info); + + if(signoff_name_info.size() != signoff_time_info.size()){ + printf("ǩ쳣\n"); + return 0; + } + + for(i = 0 ;i < signoff_name_info.size();i++){ + vector name_sub_vec; + vector tiem_sub_vec; + Split(signoff_name_info[i],"=",name_sub_vec); + Split(signoff_time_info[i],"=",tiem_sub_vec); + if(name_sub_vec.size()==2 && tiem_sub_vec.size() ==2 ){ + NOTICE_NODE node ; + node.TaskTimeName.assign(tiem_sub_vec[0]); + node.TaskUserName.assign(name_sub_vec[0]); + node.PropTimeName.assign(tiem_sub_vec[1]); + node.PropUserName.assign(name_sub_vec[1]); + notice_node_vec.push_back(node); + } + name_sub_vec.clear(); + tiem_sub_vec.clear(); + } + + ITKCALL( EPM_ask_root_task( msg.task, &root_task ) ); + + int valid_signoffs_count = 0; + tag_t * valid_signoffs_tags = NULL; + ITKCALL(AOM_ask_value_tags(msg.task,"valid_signoffs",&valid_signoffs_count,&valid_signoffs_tags)); + if(valid_signoffs_count !=0){ + for(int ii = 0 ;ii < valid_signoffs_count;ii++){ + date_t decision_date ; + char * decision_str = NULL; + char * assign_user_name = NULL; + char * group_name = NULL; + char * role_name = NULL; + char * timeinfo1 = NULL; + char * o_group_name = NULL; + tag_t assign_user = NULL_TAG; + tag_t assign_goup_mem = NULL_TAG; + tag_t role_tag = NULL_TAG; + tag_t o_group_tag = NULL_TAG; + //ȡʱ + AOM_ask_value_date(valid_signoffs_tags[ii],"decision_date",&decision_date); + // + AOM_UIF_ask_value(valid_signoffs_tags[ii],"decision",&decision_str); + //֪ͨ + AOM_ask_value_tag(valid_signoffs_tags[ii],"fnd0Assignee",&assign_user); + if(assign_user!=NULL_TAG){ + AOM_UIF_ask_value(assign_user,"user_name",&assign_user_name); + } + //֪ͨڵ + ITKCALL(AOM_ask_value_tag(valid_signoffs_tags[ii],"group_member",&assign_goup_mem)); + if(assign_goup_mem!=NULL_TAG){ + AOM_UIF_ask_value(assign_goup_mem,"object_name",&group_name); + //role_tag + AOM_ask_value_tag(assign_goup_mem,"role",&role_tag); + if(role_tag!= NULL_TAG){ + AOM_UIF_ask_value(role_tag,"object_name",&role_name); + } + AOM_ask_value_tag(assign_goup_mem,"group",&o_group_tag); + if(role_tag!= NULL_TAG){ + AOM_UIF_ask_value(o_group_tag,"name",&o_group_name); + } + + } + DATE_date_to_string(decision_date,arg3value,&timeinfo1); + printf("֪ͨˣ[%s] ֯[%s] ɫ[%s] ʱ䣺[%d-%d-%d] ״̬[%s]\n",assign_user_name,o_group_name,role_name,decision_date.year,decision_date.month,decision_date.day,decision_str); + + BOOL is_used = FALSE; + for( i = 0 ;i < notice_node_vec.size();i++){ + //string sign_task_name; + //sign_task_name.assign(notice_node_vec[i].TaskUserName.c_str()); + //string temp_task_name; + //temp_task_name.assign(group_name); + if(strcmp(role_name,notice_node_vec[i].TaskUserName.c_str())==0){ + printf("role_name = %s / TaskUserName = %s \n",role_name,notice_node_vec[i].TaskUserName.c_str()); + notice_node_vec[i].UserName.assign(assign_user_name); + notice_node_vec[i].TimeStr.assign(timeinfo1); + is_used = TRUE; + break; + }else if(strcmp(o_group_name,notice_node_vec[i].TaskUserName.c_str())==0){ + printf("group_name=%s / TaskUserName = %s \n",o_group_name,notice_node_vec[i].TaskUserName.c_str()); + notice_node_vec[i].UserName.assign(assign_user_name); + notice_node_vec[i].TimeStr.assign(timeinfo1); + is_used = TRUE; + break; + }else{ + printf("Other Group / TaskUserName = %s\n",notice_node_vec[i].TaskUserName.c_str()); + } + } + if(!is_used) + for( i = 0 ;i < notice_node_vec.size();i++){ + if(strcmp(notice_node_vec[i].TaskUserName.c_str(),"̼")==0){ + printf("group =̼ / TaskUserName = %s \n",notice_node_vec[i].TaskUserName.c_str()); + notice_node_vec[i].UserName.assign(assign_user_name); + notice_node_vec[i].TimeStr.assign(timeinfo1); + break; + } + } + + + if(decision_str!=NULL){ + MEM_free(decision_str); + decision_str = NULL; + } + if(assign_user_name!=NULL){ + MEM_free(assign_user_name); + assign_user_name = NULL; + } + if(group_name!=NULL){ + MEM_free(group_name); + group_name = NULL; + } + if(role_name!=NULL){ + MEM_free(role_name); + role_name = NULL; + } + if(timeinfo1!=NULL){ + MEM_free(timeinfo1); + timeinfo1 = NULL; + } + if(o_group_name!=NULL){ + MEM_free(o_group_name); + o_group_name = NULL; + } + } + } + + int occur_of_counts = 0; + tag_t * taskAttches =NULL; + ECHO("the node number is %d",nodecount); + if(current_task != NULLTAG) + { + EPM_ask_attachments(root_task, EPM_target_attachment, &occur_of_counts, &taskAttches); + ECHO("%d target attachment found",occur_of_counts); + for( count=0; count + +using namespace std; + +void SplitUserInfo(char *userinfo); +void txSplitUserInfo(char *userinfo); +void SplitTimeInfo(char *userinfo); +void txSplitTimeInfo(char *userinfo); +int ORIGIN_ask_sign_info(tag_t task_node, char *output_str,char *task_name,char *arg3value); \ No newline at end of file diff --git a/jf_itk/epm_signoff_dataset.cxx b/jf_itk/epm_signoff_dataset.cxx new file mode 100644 index 0000000..5c5232b --- /dev/null +++ b/jf_itk/epm_signoff_dataset.cxx @@ -0,0 +1,1395 @@ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) +/** +* @headerfile tcua ͷļ +*/ + +#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 "common_itk_util.h" + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +//#include +//#include +#include +#include +#include +#include +#include +#include +#include + +/** +* @headerfile user's header files +*/ +#include "epm_handler_common.h" +#include "error_handling.h" +#include "common_itk_util.h" +#include "string_helper.h" + + +using namespace std; +typedef struct +{ + string name; + string value; +}CAD_ATTR_STRUCT; +extern "C" int POM_AM__set_application_bypass(logical bypass); + + + +int USERSEVICE_TEST(void * returnValue){ + int ifail = ITK_ok; + tag_t item; + + USERARG_get_tag_argument(&item); + + + return ITK_ok; +} + +int connor_set_release_status(void * returnValue){ + int ifail = ITK_ok; + tag_t item = NULL_TAG,release_status =NULL_TAG; + char * release_name = NULL; + tag_t * release_objs = NULL; + + USERARG_get_tag_argument(&item); + USERARG_get_string_argument(&release_name); + + int temp_count = 1; + release_objs = (tag_t *)MEM_alloc(temp_count*sizeof(tag_t)); + release_objs[0] = item; + + ITKCALL(ifail = CR_create_release_status(release_name,&release_status)); + ITKCALL(ifail = EPM_add_release_status(release_status,temp_count,release_objs,TRUE)); + + if(release_name !=NULL){ + MEM_free(release_name); + } + + return ITK_ok; +} + + +int ORIGIN_set_bypass(void *returnValue) +{ + + POM_AM__set_application_bypass(true); + return 0; +} + +int remove_class(void *returnValue) +{ + char * icouid = NULL; + tag_t icotag = NULLTAG; + USERARG_get_string_argument(&icouid); + ITK__convert_uid_to_tag(icouid,&icotag); + if(icotag!=NULLTAG){ + POM_AM__set_application_bypass(true); + ITKCALL(ICS_ico_remove(icotag)); + POM_AM__set_application_bypass(false); + } + return 0; +} + + + + +int ORIGIN_close_bypass(void *returnValue) +{ + POM_AM__set_application_bypass(false); + return 0; +} + +int getDbMsg(void *returnValue) +{ + char * tc_root_dir = getenv("tc_root"); + + char name[32] = "-u=admin"; + char pwd[32] = "-p=admin"; + char output_file[SS_MAXPATHLEN] = ""; + char jar_file[SS_MAXPATHLEN] = ""; + + //----------------------------- + strcpy(jar_file, tc_root_dir); + strcat(jar_file, "\\bin\\"); + strcat(jar_file, "HX_ProjectDashboard.exe"); + + + //ITKCALL(IMF_export_file(ref_object, temp_file2)); + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + //strcpy( cmd, user_lib_env ); + strcpy( cmd, "\"" ); + strcat( cmd, jar_file ); + strcat( cmd, "\" \"" ); + + strcat( cmd, name ); + strcat( cmd, "\" \"" ); + strcat( cmd, pwd ); + + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + //system( cmd ); + WinExec(cmd,SW_HIDE); + + return 0; +} + +//ݼļ +static int export_dataset_file(tag_t dataset,char *ref_name, char *ext, char **filename, char **original_name) +{ + int ifail = ITK_ok; + tag_t ref_object = NULLTAG, + datasettype = NULLTAG, + new_ds = NULLTAG, + tool = NULLTAG, + folder_tag = NULLTAG, + spec_dataset_rev = NULLTAG; + AE_reference_type_t reference_type; + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name; + + *filename = (char *)MEM_alloc(sizeof(char)*512); + *original_name = (char *)MEM_alloc(sizeof(char)*512); + strcpy(*filename, ""); + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + AE_ask_dataset_named_ref(dataset, ref_name, &reference_type, &ref_object); + if(ref_object==NULLTAG) + { + ECHO("ref_object is NULLTAG\n"); + return 1; + } + //WriteLog("\reference_type=%d\n",reference_type); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + strcpy(*original_name, origin_file_name); + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("TEMP"); + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + ECHO("temp_file=%s\n",temp_file); + + IMF_export_file(ref_object, temp_file); + strcpy(*filename, temp_file); + } + return ITK_ok; +} + +//ݼ +static int import_dataset_file(tag_t dataset, char *ref_name, char *ext, char *fullfilename, char *original_name) +{ + int ifail = ITK_ok; + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor = NULL; + AOM_refresh( dataset, FALSE ); + char *new_file_name = NULL; + char new_ds_name[WSO_name_size_c + 1] = ""; + char *filename = NULL; + new_file_name = USER_new_file_name( new_ds_name, ref_name, ext, 0 ); + + + filename = strrchr(fullfilename,'\\') + 1; + if (filename == NULL) + return ITK_ok; + ECHO("IMF_import_file\n"); + set_bypass(true); + IMF_import_file(fullfilename, new_file_name, SS_BINARY,&new_file_tag, &file_descriptor); + ECHO("IMF_set_original_file_name\n"); + IMF_set_original_file_name(new_file_tag, original_name); + + IMF_close_file( file_descriptor ); + AOM_save( new_file_tag ); + AOM_unlock( new_file_tag ) ; + AOM_refresh( new_file_tag, FALSE ) ; + + // + set_bypass(true); + ITKCALL( AOM_lock( dataset ) ); + ECHO("AE_remove_dataset_named_ref\n"); + AE_remove_dataset_named_ref(dataset,ref_name); + AOM_save(dataset); + + ECHO("AE_add_dataset_named_ref\n"); + set_bypass(true); + AE_add_dataset_named_ref( dataset, ref_name, AE_PART_OF, new_file_tag ); + + AOM_save( dataset ) ; + AOM_unlock( dataset ) ; + //ITKCALL( AOM_refresh( dataset, FALSE ) ); + return ifail; +} +int create_signinfo_file(char *file_content,char *item_id, char **file_name) +{ + time_t now; + struct tm *p; + FILE *filePtr = NULL; + + char *temp_dir = getenv("TEMP"); + char local_path[MAX_PATH] = ""; + + time(&now); + p = localtime(&now); + if(temp_dir[strlen(temp_dir) - 1] == '\\') + { + sprintf_s(local_path, "%s%s-%d-%d-%d-%d-%d-%d.dat", temp_dir,item_id, + 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec); + } + else + { + sprintf_s(local_path, "%s\\%s-%d-%d-%d-%d-%d-%d.dat", temp_dir,item_id, + 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec); + } + + if((filePtr = fopen(local_path, "wt")) == NULL) + { + printf("Can not create the temp dat file!\n"); + return -1; + } + *file_name = (char *)MEM_alloc(sizeof(char)*512); + strcpy((*file_name), local_path); + + fwrite(file_content, sizeof(char), strlen(file_content), filePtr); + fclose(filePtr); + + return ITK_ok; +} + +int signoff_acad(tag_t dataset, char *dat_file) +{ + + + + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + + AE_reference_type_t reference_type; + + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "JK8_dwg"; + + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(ref_object==NULLTAG) + { + printf("\nref_object is NULLTAG\n"); + return ITK_ok; + } + printf("\reference_type=%d\n",reference_type); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + printf("\n3333333\n"); + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, "dwg", 0); + char *temp_dir = getenv("TEMP"); + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + printf("\ntemp_file=%s\n",temp_file); + + IMF_export_file(ref_object, temp_file); + printf("\n555555555\n"); + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + //user_lib_env = getenv("TC_USER_LIB"); + //strcpy(local_path, user_lib_env); + + //iCnt = strlen(user_lib_env); + //while( user_lib_env[iCnt] != '\\' ) + //{ + // iCnt--; + //} + + //strcpy(pTempStr,""); + //strcpy(pTempStr,&user_lib_env[iCnt+1]); + + //if( strcmp(pTempStr,"acad_signoff.exe") != 0 ) + //{ + // strcat( user_lib_env, "\\acad_signoff.exe" ); + //} + + //strcpy( cmd, user_lib_env ); + //strcat( user_lib_env, "\\acad_signoff.exe" ); + strcpy( cmd, "acad_signoff.exe" ); + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, dat_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + //CALL(AOM_load (spec_dataset_rev)); + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + AE_insert_dataset_named_ref2(spec_dataset_rev,0, ref_name, AE_PART_OF, new_file_tag);//һλò + //AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + + return ITK_ok; +} + +int signoff_msword(tag_t dataset, char *dat_file,char *ext) +{ + tag_t spec_dataset_rev = NULLTAG , ref_object = NULLTAG; + AE_reference_type_t reference_type; + //printf("\n111111111111\n"); + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "Fnd0word"; + //printf("\n22222222222\n"); + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + //printf("\n3333333333333\n"); + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + //printf("\n44444444444444\n"); + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + //printf("\n555555555555\n"); + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + //printf("\n66666666666666\n"); + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + //user_lib_env = getenv("TC_USER_LIB"); + //strcpy(local_path, user_lib_env); + + //iCnt = strlen(user_lib_env); + //while( user_lib_env[iCnt] != '\\' ) + //{ + // iCnt--; + //} + + //strcpy(pTempStr,""); + //strcpy(pTempStr,&user_lib_env[iCnt+1]); + + //if( strcmp(pTempStr,"SubstMacros-MSWord.wsf") != 0 ) + //{ + // strcat( user_lib_env, "\\SubstMacros-MSWord.wsf" ); + //} + + //strcpy( cmd, user_lib_env ); + strcpy( cmd, "SubstMacros-MSWord.wsf" ); + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, dat_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); +//printf("\n777777777777\n"); + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + return ITK_ok; +} + +int signoff_pdf(tag_t dataset, char *dat_file,char *ext) +{ + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + + AE_reference_type_t reference_type; +printf("\n111111111111\n"); + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "PDF_Reference"; + printf("\n22222222222\n"); + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + printf("\n3333333333333\n"); + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + printf("\n44444444444444\n"); + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + printf("\n555555555555\n"); + char temp_file[SS_MAXPATHLEN] = ""; + char temp_file2[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + sprintf(temp_file2,"%s.pdf",temp_file); + //printf("\n66666666666666\n"); + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + char * tc_root_dir = getenv("tc_root"); + //user_lib_env = getenv("TC_USER_LIB"); + //strcpy(local_path, user_lib_env); + + //iCnt = strlen(user_lib_env); + //while( user_lib_env[iCnt] != '\\' ) + //{ + // iCnt--; + //} + + //strcpy(pTempStr,""); + //strcpy(pTempStr,&user_lib_env[iCnt+1]); + + //if( strcmp(pTempStr,"SubstMacros-MSWord.wsf") != 0 ) + //{ + // strcat( user_lib_env, "\\SubstMacros-MSWord.wsf" ); + //} + strcpy( cmd, "java -jar " ); + strcat( cmd, tc_root_dir ); + strcat( cmd, "\\bin\\JK_PDFSignoff.jar" ); + strcat( cmd, " \"" ); + strcat( cmd, dat_file); + strcat( cmd, "\" \"" ); + strcat( cmd, temp_file); + strcat( cmd, "\" \"" ); + strcat( cmd, temp_file2); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); +//printf("\n777777777777\n"); + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file2, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + + return ITK_ok; +} + + +int signoff_msexcel(tag_t dataset, char *dat_file, char *ext) +{ + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + + AE_reference_type_t reference_type; + + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "excel"; + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + /*user_lib_env = getenv("TC_USER_LIB"); + strcpy(local_path, user_lib_env); + + iCnt = strlen(user_lib_env); + while( user_lib_env[iCnt] != '\\' ) + { + iCnt--; + } + strcpy(pTempStr,""); + strcpy(pTempStr,&user_lib_env[iCnt+1]); + + if( strcmp(pTempStr,"SubstMacros-MSExcel.wsf") != 0 ) + { + strcat( user_lib_env, "\\SubstMacros-MSExcel.wsf" ); + }*/ + //strcpy( cmd, user_lib_env ); + strcpy( cmd, "SubstMacros-MSExcel.wsf" ); + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, dat_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + //CALL(AOM_load (dataset)); + //CALL(AOM_load(spec_dataset_rev)); + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + + return ITK_ok; +} +/************************************************************************************************* +* jf_signoff_dataset() +* +* Description: +* This handler will set signoff infomation to properties of form +* +* Syntax: +* jf-signoff-dataset +* [-debug=true|false] +* +* -SignName: jf3bianzhi=;jf3drawing=ͼ;jf3review=;jf3reviewdate= +* +* +* -bypass +* Placement: +* no request +* +**************************************************************************************************/ +int jf_signoff_dataset( EPM_action_message_t msg ) +{ + int ifail = ITK_ok, rcode = 0; + // + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="", + signcounter_info[1024] = "", *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t root_task = NULLTAG,*sub_tasks = NULL,current_task = NULLTAG,type_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int occur_of_counts = 0; + tag_t *taskAttches = NULLTAG; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + char task_type[WSO_name_size_c+1] = ""; + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + char sign_info[2048]=""; + //ڵѭ + tag_t itemrevision = NULLTAG,master_form_rel_type = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + char local_path[128]=""; + //ƽڵ + int s=0; + char *timeinfo2=""; + EPM_decision_t decision = EPM_nogo; + tag_t aUserTag,responsibleParty; + char *userName; + date_t decision_date; + char person_name[SA_name_size_c + 1] = ""; + char *prop_name="last_mod_date"; + //ǩ + int n_prop=0, q = 0; + char **prop_names=NULL, hq_name[128] = "", hq_time_name[128] = "", *hq_value=NULL; + char exclude_type[256]="", item_type[ITEM_type_size_c+ 1]= ""; + tag_t item = NULLTAG; + logical is_sign = false; + + map sign_map; + vector prop_vec; + current_task = msg.task; + //CreateLogFile("PLA8_signoff",&txtfile); + ECHO("=========================================================\n"); + ECHO("jf_signoff_dataset ʼִ\n"); + ECHO("=========================================================\n"); + + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + POM_AM__set_application_bypass(true); + if (arg_cnt > 0) + { + for (i=0;i ans,ans1; + Split(argvalue,";",ans); + for( j = 0; j ::iterator it; + for( it = sign_map.begin(); it != sign_map.end(); it ++ ) + { + CAD_ATTR_STRUCT one_elem; + AOM_ask_value_string( master_form, it->first.c_str(), &value); + one_elem.name = it->second.name; + one_elem.value.assign(value); + it->second = one_elem; + } + DOFREE(form_list); + //formдıļ + string info; + map::iterator buf_it; + for( it = sign_map.begin(); it != sign_map.end(); it ++ ) + { + info.append(it->second.name); + info.append("="); + info.append(it->second.value); + info.append("|"); + } + ECHO("\n info: %s",info.c_str()); + char *data_file = NULL; + create_signinfo_file((char*)info.c_str(),item_id, &data_file); + if( data_file == NULL ) + { + + continue; + } + ECHO("\n ıļ%s\n",data_file); + //ݼ + tag_t relation_type=NULLTAG; + //tag_t attach_relation_type = NULLTAG; + GRM_find_relation_type(TC_specification_rtype, &relation_type); + tag_t *secondary_objects=NULLTAG; + int ds_count = 0; + char *dataset_type = NULL, *desc_value=NULL,*file_path = NULL,*desc_path; + + GRM_list_secondary_objects_only(itemrevision, relation_type, &ds_count, &secondary_objects); + for (int j = 0; j < ds_count; j++) + { + printf("1\n"); + AOM_ask_value_string(secondary_objects[j], "object_type", &dataset_type); + int des_count=0; + tag_t *dess=NULL; + char *name; + if(!(strcmp(dataset_type, "JK8_AutoCAD") == 0|| + strcmp(dataset_type, "MSWord") ==0|| + strcmp(dataset_type, "MSWordX") ==0|| + strcmp(dataset_type, "MSExcel") ==0|| + strcmp(dataset_type, "MSExcelX") ==0|| + strcmp(dataset_type, "PDF") ==0)){ + if(dataset_type!=NULL){ + MEM_free(dataset_type); + dataset_type =NULL; + } + + continue; + } + + + + + AOM_ask_value_tags(secondary_objects[j], "ref_list", &des_count,&dess); + if(des_count<1){ + printf("ݼ\n"); + continue; + } + + printf("ʼж\n"); + if(strcmp(dataset_type, "JK8_AutoCAD") == 0) + { + printf("cad\n"); + // ECHO("dwg...\n"); + // POM_AM__set_application_bypass(true); + // ifail = export_dataset_file(dataset_list[j], "PDF_Reference", "dwg", &filename,&original_name); + if( data_file != NULL ) + signoff_acad(secondary_objects[j],data_file); + } + else if(strcmp(dataset_type, "MSWord") ==0 ) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msword(secondary_objects[j],data_file,"doc"); + } + else if(strcmp(dataset_type, "MSWordX") ==0) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msword(secondary_objects[j],data_file,"docm"); + } + else if(strcmp(dataset_type, "MSExcel") ==0 ) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msexcel(secondary_objects[j],data_file,"xls"); + } + else if(strcmp(dataset_type, "MSExcelX") ==0) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msexcel(secondary_objects[j],data_file,"xlsm"); + }else if(strcmp(dataset_type, "PDF") ==0){ + signoff_pdf(secondary_objects[j],data_file,"pdf"); + } + MEM_free(dataset_type); + + } + DOFREE(secondary_objects); + + GRM_find_relation_type(TC_attaches_rtype, &relation_type); + + GRM_list_secondary_objects_only(itemrevision, relation_type, &ds_count, &secondary_objects); + for (int j = 0; j < ds_count; j++) + { + printf("2\n"); + AOM_ask_value_string(secondary_objects[j], "object_type", &dataset_type); + int des_count=0; + tag_t *dess=NULL; + char *name; + + if(!(strcmp(dataset_type, "JK8_AutoCAD") == 0|| + strcmp(dataset_type, "MSWord") ==0|| + strcmp(dataset_type, "MSWordX") ==0|| + strcmp(dataset_type, "MSExcel") ==0|| + strcmp(dataset_type, "MSExcelX") ==0|| + strcmp(dataset_type, "PDF") ==0)){ + if(dataset_type!=NULL){ + MEM_free(dataset_type); + dataset_type =NULL; + } + + continue; + } + AOM_ask_value_tags(secondary_objects[j], "ref_list", &des_count,&dess); + if(des_count<1){ + printf("ݼ\n"); + continue; + } + + if(strcmp(dataset_type, "JK8_AutoCAD") == 0) + { + // ECHO("dwg...\n"); + // POM_AM__set_application_bypass(true); + // ifail = export_dataset_file(dataset_list[j], "PDF_Reference", "dwg", &filename,&original_name); + if( data_file != NULL ) + signoff_acad(secondary_objects[j],data_file); + } + else if(strcmp(dataset_type, "MSWord") ==0 ) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msword(secondary_objects[j],data_file,"doc"); + } + else if(strcmp(dataset_type, "MSWordX") ==0) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msword(secondary_objects[j],data_file,"docx"); + } + else if(strcmp(dataset_type, "MSExcel") ==0 ) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msexcel(secondary_objects[j],data_file,"xls"); + } + else if(strcmp(dataset_type, "MSExcelX") ==0) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msexcel(secondary_objects[j],data_file,"xlsx"); + }else if(strcmp(dataset_type, "PDF") ==0){ + signoff_pdf(secondary_objects[j],data_file,"pdf"); + } + MEM_free(dataset_type); + } + + DOFREE(secondary_objects); + + GRM_find_relation_type("IMAN_Rendering", &relation_type); + + GRM_list_secondary_objects_only(itemrevision, relation_type, &ds_count, &secondary_objects); + for (int j = 0; j < ds_count; j++) + { + printf("3\n"); + AOM_ask_value_string(secondary_objects[j], "object_type", &dataset_type); + int des_count=0; + tag_t *dess=NULL; + char *name; + + if(!(strcmp(dataset_type, "JK8_AutoCAD") == 0|| + strcmp(dataset_type, "MSWord") ==0|| + strcmp(dataset_type, "MSWordX") ==0|| + strcmp(dataset_type, "MSExcel") ==0|| + strcmp(dataset_type, "MSExcelX") ==0|| + strcmp(dataset_type, "PDF") ==0)){ + if(dataset_type!=NULL){ + MEM_free(dataset_type); + dataset_type =NULL; + } + + continue; + } + AOM_ask_value_tags(secondary_objects[j], "ref_list", &des_count,&dess); + if(des_count<1){ + printf("ݼ\n"); + continue; + } + if(strcmp(dataset_type, "JK8_AutoCAD") == 0) + { + // ECHO("dwg...\n"); + // POM_AM__set_application_bypass(true); + // ifail = export_dataset_file(dataset_list[j], "PDF_Reference", "dwg", &filename,&original_name); + if( data_file != NULL ) + signoff_acad(secondary_objects[j],data_file); + } + else if(strcmp(dataset_type, "MSWord") ==0 ) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msword(secondary_objects[j],data_file,"doc"); + } + else if(strcmp(dataset_type, "MSWordX") ==0) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msword(secondary_objects[j],data_file,"docx"); + } + else if(strcmp(dataset_type, "MSExcel") ==0 ) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msexcel(secondary_objects[j],data_file,"xls"); + } + else if(strcmp(dataset_type, "MSExcelX") ==0) + { + AOM_ask_value_string(dess[0], "original_file_name", &name); + printf("name=%s\n",name); + if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){ + printf("׺Ϊdocxxlsx˳\n"); + continue; + } + signoff_msexcel(secondary_objects[j],data_file,"xlsx"); + }else if(strcmp(dataset_type, "PDF") ==0){ + signoff_pdf(secondary_objects[j],data_file,"pdf"); + } + MEM_free(dataset_type); + } + DOFREE(secondary_objects); + + } + } + POM_AM__set_application_bypass(false); + DOFREE(taskAttches); + ECHO("=========================================================\n"); + ECHO("jf_signoff_dataset ִн\n"); + ECHO("=========================================================\n"); + return rcode; +} + + +int JK_bypass(EPM_action_message_t msg){ + ECHO("==================bypass START =======================\n"); + int ifail = ITK_ok, arg_cnt; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + int i=0, j=0; + BOOL bypass = FALSE; + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + POM_AM__set_application_bypass(true); + if (arg_cnt > 0) + { + for (i=0;i type_vec; + + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + //strcpy(errs,"ͲĶ!!!"); + //ifail=EPM_nogo ; + break; + } + /*char * item_id_temp = NULL; + ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp)); + if(strstr(item_id_temp,"E-") !=NULL ){ + ECHO("E-ͷϲҪ\n"); + strcpy(errs,"E-ͷϲҪ!!!"); + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + ifail=EPM_nogo ; + break; + }*/ + logical isclassed = false; + logical isFilter = false; + tag_t classification_object = NULLTAG; + + ITKCALL(ICS_is_wsobject_classified(target_tag,&isclassed));//жǷѾ + + if(isclassed){ + //char * icOid = NULL; + //ITKCALL(ICS_ask_classification_object(target_tag,&classification_object)); + + //ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); + printf("\n ѷ͵ \n"); + }else{ + strcpy(errs,"ûз⣬ϵϵͳԱ!!"); + printf("\n ûз͵ \n"); + ifail=EPM_nogo ; + break; + } + + /*if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + }*/ + } + + + if(ifail==EPM_nogo){ + //PROP_unable_to_set_cp_value ERROR_ERRORSTORE_NOERRORS// + EMH_store_error_s1(EMH_severity_user_error,919002,errs);//󵯴 + } + + + ECHO("==================ĿеǷͷ END =======================\n"); + return ifail; +} + +/** +* ǩ֪ͨڵ +*/ +int tm_sign_tongzhi2( EPM_rule_message_t msg ){ + ECHO("==================ĿеļмǷж START =======================\n"); + int ifail = EPM_nogo,count = 0,i = 0; + tag_t root_task = NULL_TAG; + tag_t * attachments = NULL; + ITKCALL(EPM_ask_root_task(msg.task,&root_task)); + ITKCALL(EPM_ask_attachments(root_task,EPM_target_attachment,&count,&attachments)); + for(i = 0 ;i < count;i++){ + tag_t type_tag = NULL_TAG; + ITKCALL(TCTYPE_ask_object_type(attachments[i],&type_tag)); + tag_t folder_type = NULLTAG; + ITKCALL(TCTYPE_find_type("Folder","",&folder_type)); + if(folder_type != NULLTAG){ + //printf(" find Folder type ok !!!! \n"); + logical isok = FALSE; + ITKCALL(TCTYPE_is_type_of(type_tag,folder_type,&isok)); + if(isok){ + int contents_count = 0; + tag_t * contents_tags = NULL; + ITKCALL(AOM_ask_value_tags(attachments[i],"contents",&contents_count,&contents_tags)); + if(contents_count == 0){ + ifail = EPM_nogo; + //break; + } + // else{ + // for(int j = 0 ; j < contents_count;j++){ + // int release_count = 0; + // tag_t * release_tags = NULL; + // ITKCALL(AOM_ask_value_tags(contents_tags[j],"release_status_list",&release_count,&release_tags)); + // //if(release_count == 0){ + // // ifail = EPM_nogo; + // // //break; + // //}else{ + // // ifail = EPM_go; + // //} + // if(release_tags!=NULL){ + // MEM_free(release_tags); + // release_tags = NULL; + // } + // if(ifail == EPM_nogo){ + // break; + // } + // } + // + // } + if(contents_tags!=NULL){ + MEM_free(contents_tags); + contents_tags = NULL; + } + if(ifail == EPM_nogo){ + break; + } + } + } + } + if(attachments!=NULL){ + MEM_free(attachments); + attachments = NULL; + } + ECHO("==================ĿеļмǷж END =======================\n"); + return ifail; +} diff --git a/jf_itk/erp_send_item.h b/jf_itk/erp_send_item.h new file mode 100644 index 0000000..e98e72f --- /dev/null +++ b/jf_itk/erp_send_item.h @@ -0,0 +1,14 @@ +#include "erp_utils.h" +#include "ocilib.h" +#include "common_itk_util.h" +#include "string_utils.h" +#include +#include +#include + +int jf_erp_send_items(EPM_action_message_t msg); +int jf_erp_send_boms(EPM_action_message_t msg); +int jf_insert_img_pdf(EPM_action_message_t msg); +int jf_hl_send_items(EPM_action_message_t msg); +int jf_hl_send_boms(EPM_action_message_t msg); +int jf_control_plan_send(EPM_action_message_t msg); \ No newline at end of file diff --git a/jf_itk/erp_send_items.cxx b/jf_itk/erp_send_items.cxx new file mode 100644 index 0000000..e0c11bc --- /dev/null +++ b/jf_itk/erp_send_items.cxx @@ -0,0 +1,4584 @@ +#ifndef _cplusplus +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#endif + +#include"erp_send_item.h" + +#ifdef WIN32 +#pragma warning( push ) +#pragma warning( disable: 4311 ) +#pragma warning( disable: 4312 ) +#endif + +char control_plan_fields[29][45] = { + "STAGE",//׶ tm2_cpjd + "KEY_PHONE",//Ҫϵ˵绰 tm2_zylxdh + "cust_approval",//ͻ tm2_gkpz + "KEY_CONTACT",//Ҫϵ tm2_zylxr + "DATE_ORIG",// //5 tm2_bzrq + "DATE_REV",//޶ tm2_xdrq + "PLAP_NO",//Ƽƻ tm2_kzjhbh + "SOR",//SOR tm2_sor + "CORE_TEAM",//С tm2_hxxz + "Customer_engineering_approval",//˿͹׼/ //10 tm2_gkgcpz + "Part_Num_Latest_change",///¸ij̶ tm2_zxggcd + "Supplier_Plant_Approval",///׼/ tm2_gfgcpz + "Customer_quality_approval",//˿׼/ tm2_gkzlpz + "Customer_Part_Number",//ͻͼֽ tm2_khtzbh + "Part_Name_Description",/////15 tm2_ljmc + "Supplier_Plant",/// tm2_gfgc + "Supplier_Code",// tm2_gfdh + "Mode_year",/// tm2_cxnd + "Other_approval_1",//׼/// tm2_qtpzrq1 + "Other_approval_2",//׼///20 tm2_qtpzrq2 + "KEY_CONNECT",//KEY + "CHANGE_LEV",//׶ tm2_xgdj + "STATUS", + "ORIGINER", + "ERROR_MSG",//25 + "COMMIT_TIME", + "OPERATE_TIME", + "BATCH_ID", + "ORIGINER_SYS"//29 +}; +typedef struct{ + string STAGE; + string KEY_PHONE; + string cust_approval; + string KEY_CONTACT; + string DATE_ORIG;//5 + string DATE_REV; + string PLAN_NO; + string SOR; + string CORE_TEAM; + string Customer_engineering_approval;//10 + string Part_Num_Latest_change; + string Supplier_Plant_Approval; + string Customer_quality_approval; + string Customer_Part_Number; + string Part_Name_Description;//15 + string Supplier_Plant; + string Supplier_Code; + string Mode_year; + string Other_approval_1; + string Other_approval_2;//20 + string KEY_CONNECT; + string CHANGE_LEV;//ҵݽ + string STATUS; + string ORIGINER; + string ERROR_MSG;//25 + string COMMIT_TIME; + string OPERATE_TIME; + string BATCH_ID; + string ORIGINER_SYS;//29 +}CONTROL_PLAN_STRUCT; + +char comtrol_plan_array_fields[20][45]={ + "Part_Process_Number",//tm2_ljgybh + "Process_Name_Description",//tm2_gcmcms + "Machine_Device",//tm2_jqsbgzjj + "Characteristics_Bubbled",//tm2_qptbh + "Characteristics_Size",//5//tm2_cc + "Characteristics_No",//tm2_xh + "Characteristics_Product",//tm2_cp + "Characteristics_Process",//tm2_gc + "Special_Char_Class",//tm2_tstxfl + "Specification_Tolerance",//10//tm2_cpgcgggc + "UP_SPEC",//tm2_spc + "DOWN_SPEC",//tm2_xpc + "Evaluation_Measurement",//tm2_pgclff + "Sample_Size",//tm2_rl + "Sample_Freq",//15//tm2_pl + "Resp",//tm2_fzr + "Control_Method",//tm2_kzff + "Operation_criteria",//tm2_czgf + "Reaction_Plan",//tm2_fyjh + "KEY_CONNECT"//20 + +}; + +typedef struct{ + string Part_Process_Number; + string Process_Name_Description; + string Machine_Device; + string Characteristics_Bubbled; + string Characteristics_Size;//5 + string Characteristics_No; + string Characteristics_Product; + string Characteristics_Process; + string Special_Char_Class; + string Specification_Tolerance;//10 + string UP_SPEC; + string DOWN_SPEC; + string Evaluation_Measurement; + string Sample_Size; + string Sample_Freq;//15 + string Resp; + string Control_Method; + string Operation_criteria; + string Reaction_Plan; + string KEY_CONNECT;//20 +}CONTROL_PLAN_ARRAY_STRUCT; + +//----------------------------------- + +char erp_part_fields[28][40]={ + "PART_NAMBER", + "PART_NAME", + "REVISION", + "SPECIFICATION", + "CUSTOMER_PART_NUMBER",//5 + "PART_MODEL", + "STOCK_KEEPING_UNIT", + "SHELF_LIFE", + "SOURCE", + "FORMULA_TYPE",//10 + "CLASSIFICATION", + "SALE_CLASSIFICATION", + "INDICATIVE_PRICE", + "APPLICANT", + "APPLICANT_DATE",//15 + "PART_TYPE", + "VALID_DATE", + "INVALID_DATE", + "STATUS", + "ORIGINER",//20 + //"ERROR_MSG", + "COMMIT_TIME", + //"OPERATE_TIME", + "BATCH_ID", + //"PUID",//25 + "ORIGINER_SYS", + "POWDER_NO", + "CUSTOMER_NAME", + "WEIGHT", + "BLENDING_WAY", + "BASKET" +}; +//-------------------------------- +typedef struct{ + string PART_NAMBER; + string PART_NAME; + string REVISION; + string SPECIFICATION; + string CUSTOMER_PART_NUMBER;//5 + string PART_MODEL; + string STOCK_KEEPING_UNIT; + string SHELF_LIFE; + string SOURCE; + string FORMULA_TYPE;//10 + string CLASSIFICATION; + string SALE_CLASSIFICATION; + string INDICATIVE_PRICE; + string APPLICANT; + string APPLICANT_DATE;//15 + string PART_TYPE; + string VALID_DATE; + string INVALID_DATE; + string STATUS; + string ORIGINER;//20 + //string ERROR_MSG; + string COMMIT_TIME; + //string OPERATE_TIME; + string BATCH_ID; + //string PUID;//25 + string ORIGINER_SYS; + string POWDER_NO; + string CUSTOMER_NAME; + string WEIGHT; + string BLENDING_WAY; + string BASKET; +}ERP_PART_STRUCT; +//------------------------------------ +char erp_bom_fields[21][40]={ + "SEQ_NUMBER", + "P_NUMBER", + "P_REV", + "PART_NUMBER", + "PART_REV",//5 + "QUANTITY", + "UNIT", + "ACQUISITION", + "REPLACE_TYPE", + "VALID_DATE",//10 + "INVALID_DATE", + "STATUS", + "ORIGINER", + "COMMIT_TIME", + "BATCH_ID",//15 + "ORIGINER_SYS", + "SCALE", + "P_DEVIATION", + "M_DEVIATION", + "BASKET_BOMLINE", + "BL_SQUENCE" +}; +//--------------------------------- +typedef struct{ + string SEQ_NUMBER; + string P_NUMBER; + string P_REV; + string PART_NUMBER; + string PART_REV;//5 + string QUANTITY; + string UNIT; + string ACQUISITION; + string REPLACE_TYPE; + string VALID_DATE;//10 + string INVALID_DATE; + string STATUS; + string ORIGINER; + string COMMIT_TIME; + string BATCH_ID;//15 + string ORIGINER_SYS; + string SCALE; + string P_DEVIATION; + string M_DEVIATION; + string BASKET_BOMLINE; + string BL_SQUENCE; +}ERP_BOM_STRUCT; +//---------------------------------- +char hl_part_fields[21][40]={ + "PART_NAMBER", + "PART_NAME", + "REVISION", + "SPECIFICATION", + //"CUSTOMER_PART_NUMBER", + //"PART_MODEL", + "STOCK_KEEPING_UNIT",//5 + "SHELF_LIFE", + "SOURCE", + "FORMULA_TYPE", + "CLASSIFICATION", + //"SALE_CLASSIFICATION", + //"INDICATIVE_PRICE", + "APPLICANT",//10 + "APPLICANT_DATE", + "PART_TYPE", + "VALID_DATE", + "INVALID_DATE", + "STATUS",//15 + "ORIGINER", + //"ERROR_MSG", + "COMMIT_TIME", + //"OPERATE_TIME", + "BATCH_ID", + //"PUID", + "ORIGINER_SYS", + "BLENDING_WAY", + "BASKET" + +}; +typedef struct{ + string PART_NAMBER; + string PART_NAME; + string REVISION; + string SPECIFICATION; + //string CUSTOMER_PART_NUMBER; + //string PART_MODEL; + string STOCK_KEEPING_UNIT; + string SHELF_LIFE; + string SOURCE; + string FORMULA_TYPE; + string CLASSIFICATION; + //string SALE_CLASSIFICATION; + //string INDICATIVE_PRICE; + string APPLICANT; + string APPLICANT_DATE; + string PART_TYPE; + string VALID_DATE; + string INVALID_DATE; + string STATUS; + string ORIGINER; + //string ERROR_MSG; + string COMMIT_TIME; + //string OPERATE_TIME; + string BATCH_ID; + //string PUID; + string ORIGINER_SYS; + string BLENDING_WAY; + string BASKET; +}HL_PART_STRUCT; + +char hl_bom_fields[22][40]={ + "SEQ_NUMBER", + "P_NUMBER", + "P_REV", + "PART_NUMBER", + "PART_REV",//5 + "QUANTITY", + "UNIT", + "ACQUISITION", + "REPLACE_TYPE", + "VALID_DATE",//10 + "INVALID_DATE", + "STATUS", + "ORIGINER", + "COMMIT_TIME", + "BATCH_ID",//15 + "ORIGINER_SYS", + "WASTAGE", + "SCALE", + "P_DEVIATION", + "M_DEVIATION", + "BASKET_BOMLINE", + "BL_SQUENCE" +}; + +typedef struct{ + string SEQ_NUMBER; + string P_NUMBER; + string P_REV; + string PART_NUMBER; + string PART_REV;//5 + string QUANTITY; + string UNIT; + string ACQUISITION; + string REPLACE_TYPE; + string VALID_DATE;//10 + string INVALID_DATE; + string STATUS; + string ORIGINER; + string COMMIT_TIME; + string BATCH_ID;//15 + string ORIGINER_SYS; + string WASTAGE; + string SCALE; + string P_DEVIATION; + string M_DEVIATION; + string BASKET_BOMLINE; + string BL_SQUENCE; +}HL_BOM_STRUCT; + + +//---------------------------------------------------------- +char part_fields[18][40]={ +"PART_NUMBER", +"PART_NAME", +"PART_REV", +"STATUS", +"BATCH_ID",//5 +"COMMIT_TIME", +"ORIGINER", +"PART_SPEC", +"CLASS_CODE", +"SOURCE",//10 +"PROJ_CODE", +"UNIT", +"RELEASED_STATUS", +"INVALID_DATE", +"CUSTOMER_PART_NUMBER",//15 +"IS_STANDARD", +"CREATER", +"CREATE_DATE" +}; + +typedef struct{ +string PART_NUMBER; +string PART_NAME; +string PART_REV; +string STATUS; +string BATCH_ID;//5 +string COMMIT_TIME; +string ORIGINER; +string PART_SPEC; +string CLASS_CODE; +string SOURCE;//10 +string PROJ_CODE; +string UNIT; +string RELEASED_STATUS; +string INVALID_DATE; +string CUSTOMER_PART_NUMBER;//15 +string IS_STANDARD; +string CREATER; +string CREATE_DATE; +string SCALE; +string P_DEVIATION; +string M_DEVIATION; + +}PART_STRUCT; + +char bom_fields[17][40]={ +"SEQ_NUMBER", +"P_NUMBER", +"RELEASED_DATE", +"PART_NUMBER", +"VALID_DATE",//5 +"INVALID_DATE", +"QUANTITY", +"ASSEM_QUANTITY", +"OTHERS", +"ULLAGE",//10 +"JOB_NUMBER", +"REPLACE_TYPE", +"BATCH_ID", +"ORIGINER", +"COMMIT_TIME",//15 +"OPERATE_TIME", +"STATUS" +}; + +typedef struct{ +string SEQ_NUMBER; +string P_NUMBER; +string RELEASED_DATE; +string PART_NUMBER; +string VALID_DATE;//5 +string INVALID_DATE; +string QUANTITY; +string ASSEM_QUANTITY; +string OTHERS; +string ULLAGE;//10 +string JOB_NUMBER; +string REPLACE_TYPE; +string BATCH_ID; +string ORIGINER; +string COMMIT_TIME;//15 +string OPERATE_TIME; +string STATUS; + +}BOM_STRUCT; + + +extern "C" int POM_AM__set_application_bypass(logical bypass); + +/** +*ȡȺƥmapping +*/ +void get_class_code_mapping(map &pdm_wpm_attribute_map){ + vector pref_vec; + getPrefStrings("Cust_ERP_PLM_Class_Code_Mapping",TC_preference_site, pref_vec); + for(int i = 0 ;i < pref_vec.size();i++){ + vector values ; + Split(pref_vec[i],"@",values); + if(values.size() == 2){ + pdm_wpm_attribute_map.insert(pair(values[0],values[1])); + printf("CLASS_CODE PLM = %s , ERP = %s \n",values[0],values[1]); + } + } +} +/** +* ȡȺ +*/ +void get_class_code(map code_map ,string &value){ + vector vec; + vec.push_back(7); + vec.push_back(4); + for(int i = 0;i < vec.size();i++) + { + string v_str = value.substr(0,vec[i]); + map::iterator node; + node = code_map.find(v_str); + if(node != code_map.end()) + { + + value = node->second; + printf("\n====ҵȺ%s\n",value.c_str()); + break; + } + } +} + + +/** +*ƴַ +* +*/ +void get_erp_name(tag_t value_tag, vector prop_name,string &erp_name,tag_t item_tag){ + int ifail = ITK_ok; + char * str_value = NULL; + string erp_name_t; + tag_t descript = NULLTAG; + for(int i = 0 ;i < prop_name.size();i++){ + //ITKCALL(ifail = AOM_ask_descriptor(value_tag,prop_name[i].c_str(),descript)); + //PROPDESC_ask_display_values_from_LOV_attachments + //PROPDESC_ask_lov + //AOM_UIF_ask_value + if(strcmp(prop_name[i].c_str(),"object_name")==0){ + ITKCALL(ifail = AOM_UIF_ask_value(item_tag,prop_name[i].c_str(),&str_value)); + }else{ + ITKCALL(ifail = AOM_UIF_ask_value(value_tag,prop_name[i].c_str(),&str_value)); + } + if(str_value!=NULL){ + if(strcmp(str_value,"")!=0){ + erp_name_t.append("/").append(str_value); + } + MEM_free(str_value); + str_value = NULL; + } + } + if(erp_name_t.length() > 0 && erp_name_t.c_str()[0]=='/'){ + erp_name = erp_name_t.substr(1,(erp_name_t.length()-1)); + } +} + + +/** +* ȡİ汾 +* +*/ +int jf_erp_send_all_item(map rev_map,vector &part_vec,string batchid,char * nowtime){ + int ifail = ITK_ok; + tag_t tag_value = NULLTAG,item = NULLTAG; + date_t p; + // char * value =NULL; + char ** str_values = NULL ,*value = NULL; + char item_type[ITEM_type_size_c + 1] =""; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + + map::iterator rev_it; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + + + int formcount = 0; + int rev_count = 0; + tag_t * rev_tags = NULL; + tag_t * formtags = NULL; + ERP_PART_STRUCT one_elem; + ITEM_ask_item_of_rev(rev_it->first, &item) ; + ITEM_list_all_revs(item,&rev_count,&rev_tags); + if(rev_count > 1){ + MEM_free(rev_tags); + rev_tags = NULL; + continue; + } + + ITEM_ask_id(item, item_id); + ITEM_ask_name(item, item_name); + ITEM_ask_type(item,item_type); + if((strcmp(item_type,"TM2_materials")==0||strcmp(item_type,"TM2_auxiliary")==0||strcmp(item_type,"TM2_powder")==0||strcmp(item_type,"TM2_rawpowder")==0)!=1){ + printf("[%s]\n",item_type); + continue; + }else{ + //one_elem.PART_TYPE.assign(item_type); + one_elem.PART_NAMBER.assign(item_id); + one_elem.PART_NAME.assign(item_name); + + } + if(strcmp(item_type,"TM2_materials")==0){ + one_elem.PART_TYPE.assign("Ʒ"); + }else if(strcmp(item_type,"TM2_auxiliary")==0){ + one_elem.PART_TYPE.assign("ײƷ"); + }else if(strcmp(item_type,"TM2_powder")==0){ + one_elem.PART_TYPE.assign("䷽"); + }else { + one_elem.PART_TYPE.assign("ԭϷ"); + } + + ITEM_ask_rev_id(rev_it->first, rev_id); + one_elem.REVISION.assign(rev_id); + AOM_ask_value_tags(rev_it->first,"IMAN_master_form_rev",&formcount,&formtags); + //ȡλ + ifail = ITEM_ask_unit_of_measure(item,&tag_value); + if(ifail == ITK_ok&& tag_value!=NULLTAG){ + + UOM_ask_symbol(tag_value,&value); + if(value!=NULL){ + one_elem.STOCK_KEEPING_UNIT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.STOCK_KEEPING_UNIT.assign(""); + } + }else{ + one_elem.STOCK_KEEPING_UNIT.assign(""); + } + + + ifail = SA_ask_current_groupmember(&tag_value); + if(ifail == ITK_ok) + { + tag_t user_tag = NULLTAG; + SA_ask_groupmember_user(tag_value,&user_tag); + if(user_tag!=NULLTAG) + { + char user_id_temp[SA_user_size_c+1] =""; + ifail = SA_ask_user_identifier(user_tag,user_id_temp); + one_elem.ORIGINER.assign(user_id_temp); + } + } + //汾ȡ + + //汾ȡ + if(formcount!=0){ + //------------------------------sqr sqsj + + tag_t user_tag = NULLTAG; + AOM_ask_value_tag(formtags[0],"owning_user",&user_tag);// + if(user_tag !=NULLTAG){ + AOM_ask_value_string(user_tag,"user_name",&value); + if(value!=NULL){ + one_elem.APPLICANT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.APPLICANT.assign(""); + } + } + + ifail = AOM_ask_value_date(formtags[0],"creation_date",&p);//˴ʱ + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + if(p.year !=0){ + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); + one_elem.APPLICANT_DATE.assign(date_value_str); + } + } + + //------------------------------ + if(strcmp(item_type,"TM2_materials")==0||strcmp(item_type,"TM2_auxiliary")==0){ + AOM_ask_value_string(formtags[0],"tm2_ckjg",&value);//Ʒ̬ + if(value!=NULL){ + one_elem.INDICATIVE_PRICE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SPECIFICATION.assign(""); + } + //get_erp_name(formtags[0],ycl_name_vec,erpname,item); + + AOM_ask_value_string(formtags[0],"tm2_khth",&value);//ͻͼ + if(value!=NULL){ + one_elem.CUSTOMER_PART_NUMBER.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.CUSTOMER_PART_NUMBER.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_fh",&value);//ۺ + if(value!=NULL){ + one_elem.POWDER_NO.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.CUSTOMER_PART_NUMBER.assign(""); + } + AOM_ask_value_string(formtags[0],"tm2_khmc",&value);//ۺ + if(value!=NULL){ + one_elem.CUSTOMER_NAME.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.CUSTOMER_PART_NUMBER.assign(""); + } + AOM_ask_value_string(formtags[0],"tm2_zl",&value);//ۺ + if(value!=NULL){ + one_elem.WEIGHT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.CUSTOMER_PART_NUMBER.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_cpxh",&value);//Ʒͺ + if(value!=NULL){ + one_elem.PART_MODEL.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.PART_MODEL.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_xsfl",&value);//۷ + if(value!=NULL){ + one_elem.SALE_CLASSIFICATION.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SALE_CLASSIFICATION.assign(""); + } + + + }else{ + + if(strcmp(item_type,"TM2_powder")==0){ + + AOM_ask_value_string(formtags[0],"tm2_pflx",&value);//䷽ + if(value!=NULL){ + one_elem.FORMULA_TYPE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.FORMULA_TYPE.assign(""); + } + } + if(strcmp(item_type,"TM2_rawpowder")==0){ + //BLENDING_WAY + AOM_UIF_ask_value(formtags[0],"tm2_lt",&value);//Ͱ + if(value!=NULL){ + one_elem.BASKET.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.BASKET.assign(""); + } + AOM_UIF_ask_value(formtags[0],"tm2_plfs",&value);//Ϸʽ + if(value!=NULL){ + one_elem.BLENDING_WAY.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.BLENDING_WAY.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_ylfl",&value);//䷽ + if(value!=NULL){ + one_elem.CLASSIFICATION.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.CLASSIFICATION.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_gg",&value);//Ʒ̬ + if(value!=NULL){ + one_elem.SPECIFICATION.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SPECIFICATION.assign(""); + } + } + ifail = AOM_ask_value_date(formtags[0],"tm2_effective_date",&p); + if(ifail==ITK_ok && p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); + one_elem.VALID_DATE.assign(date_value_str); + } + ifail = AOM_ask_value_date(formtags[0],"tm2_expiry_date",&p); + if(ifail==ITK_ok && p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month +1,p.day,p.hour,p.minute,p.second); + one_elem.INVALID_DATE.assign(date_value_str); + } + AOM_ask_value_string(formtags[0],"tm2_bzq",&value);// + if(value!=NULL){ + one_elem.SHELF_LIFE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SHELF_LIFE.assign(""); + } + AOM_ask_value_string(formtags[0],"tm2_lpxtlx",&value);//Ʒ̬ + if(value!=NULL){ + one_elem.SOURCE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SOURCE.assign(""); + } + + + + + } + + } + + one_elem.COMMIT_TIME.assign(nowtime);//COMMIT_TIME + one_elem.ORIGINER_SYS.assign("PLM");//IS_STANDARD + one_elem.BATCH_ID.assign(batchid);//BATCH_ID + one_elem.STATUS.assign("0");//STATUS + + part_vec.push_back(one_elem); + + if(formtags!=NULL){ + MEM_free(formtags); + formtags = NULL; + } + + } + printf("\nȡ\n"); +} + +/** +* ȡİ汾() +* +*/ +int jf_hl_send_all_item(map rev_map,vector &part_vec,string batchid,char * nowtime){ + int ifail = ITK_ok; + tag_t tag_value = NULLTAG,item = NULLTAG; + date_t p; + // char * value =NULL; + char ** str_values = NULL ,*value = NULL; + char item_type[ITEM_type_size_c + 1] =""; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + map::iterator rev_it; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + + + int formcount = 0; + int rev_count = 0; + tag_t * rev_tags = NULL; + tag_t * formtags = NULL; + HL_PART_STRUCT one_elem; + ITKCALL( ITEM_ask_item_of_rev(rev_it->first, &item) ); + ITKCALL(ITEM_list_all_revs(item,&rev_count,&rev_tags)); + /*if(rev_count > 1){ + MEM_free(rev_tags); + rev_tags = NULL; + continue; + }*/ + + ITKCALL( ITEM_ask_id(item, item_id) ); + ITKCALL( ITEM_ask_name(item, item_name)); + ITKCALL(ITEM_ask_type(item,item_type)); + if((strcmp(item_type,"TM2_powder")==0||strcmp(item_type,"TM2_rawpowder")==0)!=1){ + printf("[%s]\n",item_type); + continue; + }else{ + //one_elem.PART_TYPE.assign(item_type); + one_elem.PART_NAMBER.assign(item_id); + one_elem.PART_NAME.assign(item_name); + + } + if(strcmp(item_type,"TM2_materials")==0){ + one_elem.PART_TYPE.assign("Ʒ"); + }else if(strcmp(item_type,"TM2_auxiliary")==0){ + one_elem.PART_TYPE.assign("ײƷ"); + }else if(strcmp(item_type,"TM2_powder")==0){ + one_elem.PART_TYPE.assign("䷽"); + }else { + one_elem.PART_TYPE.assign("ԭϷ"); + } + + ITKCALL( ITEM_ask_rev_id(rev_it->first, rev_id)); + one_elem.REVISION.assign(rev_id); + AOM_ask_value_tags(rev_it->first,"IMAN_master_form_rev",&formcount,&formtags); + //ȡλ + ITKCALL(ifail = ITEM_ask_unit_of_measure(item,&tag_value)); + if(ifail == ITK_ok&& tag_value!=NULLTAG){ + + ITKCALL(UOM_ask_symbol(tag_value,&value)); + if(value!=NULL){ + one_elem.STOCK_KEEPING_UNIT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.STOCK_KEEPING_UNIT.assign(""); + } + }else{ + one_elem.STOCK_KEEPING_UNIT.assign(""); + } + + ITKCALL(ifail = SA_ask_current_groupmember(&tag_value)); + if(ifail == ITK_ok) + { + tag_t user_tag = NULLTAG; + SA_ask_groupmember_user(tag_value,&user_tag); + if(user_tag!=NULLTAG) + { + char user_id_temp[SA_user_size_c+1] =""; + ITKCALL(ifail = SA_ask_user_identifier(user_tag,user_id_temp)); + one_elem.ORIGINER.assign(user_id_temp); + } + } + + //汾ȡ + + //汾ȡ + if(formcount!=0){ + + tag_t user_tag = NULLTAG; + AOM_ask_value_tag(formtags[0],"owning_user",&user_tag);// + if(user_tag !=NULLTAG){ + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&value)); + if(value!=NULL){ + one_elem.APPLICANT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.APPLICANT.assign(""); + } + } + + ifail = AOM_ask_value_date(formtags[0],"creation_date",&p);//˴ʱ + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + if(p.year !=0){ + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); + one_elem.APPLICANT_DATE.assign(date_value_str); + } + } + + //------------------------------ + if(strcmp(item_type,"TM2_materials")==0||strcmp(item_type,"TM2_auxiliary")==0){ + + + }else{ + + if(strcmp(item_type,"TM2_powder")==0){ + + AOM_ask_value_string(formtags[0],"tm2_pflx",&value);//䷽ + if(value!=NULL){ + one_elem.FORMULA_TYPE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.FORMULA_TYPE.assign(""); + } + } + if(strcmp(item_type,"TM2_rawpowder")==0){ + AOM_UIF_ask_value(formtags[0],"tm2_lt",&value);//Ͱ + if(value!=NULL){ + one_elem.BASKET.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.BASKET.assign(""); + } + + AOM_UIF_ask_value(formtags[0],"tm2_plfs",&value);//Ϸʽ + if(value!=NULL){ + one_elem.BLENDING_WAY.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.BLENDING_WAY.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_ylfl",&value);//䷽ + if(value!=NULL){ + one_elem.CLASSIFICATION.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.CLASSIFICATION.assign(""); + } + + AOM_ask_value_string(formtags[0],"tm2_gg",&value);//Ʒ̬ + if(value!=NULL){ + one_elem.SPECIFICATION.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SPECIFICATION.assign(""); + } + } + ifail = AOM_ask_value_date(formtags[0],"tm2_effective_date",&p); + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); + one_elem.VALID_DATE.assign(date_value_str); + } + ifail = AOM_ask_value_date(formtags[0],"tm2_expiry_date",&p); + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month +1,p.day,p.hour,p.minute,p.second); + one_elem.INVALID_DATE.assign(date_value_str); + } + AOM_ask_value_string(formtags[0],"tm2_bzq",&value);// + if(value!=NULL){ + one_elem.SHELF_LIFE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SHELF_LIFE.assign(""); + } + AOM_ask_value_string(formtags[0],"tm2_lpxtlx",&value);//Ʒ̬ + if(value!=NULL){ + one_elem.SOURCE.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.SOURCE.assign(""); + } + + + + + } + + } + + one_elem.COMMIT_TIME.assign(nowtime);//COMMIT_TIME + one_elem.ORIGINER_SYS.assign("PLM");//IS_STANDARD + one_elem.BATCH_ID.assign(batchid);//BATCH_ID + one_elem.STATUS.assign("0");//STATUS + + part_vec.push_back(one_elem); + + if(formtags!=NULL){ + MEM_free(formtags); + formtags = NULL; + } + } +} + +/** +* ȡƼƻϢ +*/ +int jf_control_send_all_item(map rev_map,vector & part_vec, vector &array_vec,string batchid,char * nowtime){ + int ifail = ITK_ok; + tag_t tag_value = NULLTAG,item = NULLTAG; + date_t p; + // char * value =NULL; + char ** str_values = NULL ,*value = NULL; + char item_type[ITEM_type_size_c + 1] =""; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + map::iterator rev_it; + int i =0 , j = 0; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + int formcount = 0; + //int rev_count = 0; + //tag_t * rev_tags = NULL; + tag_t * formtags = NULL; + CONTROL_PLAN_STRUCT one_elem; + ITEM_ask_item_of_rev(rev_it->first, &item); + //ITKCALL(ITEM_list_all_revs(item,&rev_count,&rev_tags)); + + + ITEM_ask_id(item, item_id); + ITEM_ask_name(item, item_name); + ITEM_ask_type(item,item_type); + if(strcmp(item_type,"TM2_SCKZJH")!=0){ + printf("[%s]\n",item_type); + continue; + } + + //ITKCALL( ITEM_ask_rev_id(rev_it->first, rev_id)); + //one_elem.REVISION.assign(rev_id); + AOM_ask_value_tags(rev_it->first,"IMAN_master_form_rev",&formcount,&formtags); + + ifail = SA_ask_current_groupmember(&tag_value); + if(ifail == ITK_ok) + { + tag_t user_tag = NULLTAG; + SA_ask_groupmember_user(tag_value,&user_tag); + if(user_tag!=NULLTAG) + { + char user_id_temp[SA_user_size_c+1] =""; + ifail = SA_ask_user_identifier(user_tag,user_id_temp); + one_elem.ORIGINER.assign(user_id_temp); + } + } + + int outputColumn = 0; + int outputValueCount = 0; + char *** outputValue; + string batchid = "000"; + char keyConnectSQL[100] = "SELECT keyconnect_id_sequence.nextval FROM DUAL"; + if(QuerySQLNoInputParam(keyConnectSQL,&outputColumn,&outputValueCount,&outputValue) != -1) + { + WriteLog("DEBUG: ѯмʧ\n"); + + + for (int i=0;i>(one_elem,cp_vec)); + + if(formtags!=NULL){ + MEM_free(formtags); + formtags = NULL; + } + } + } +} + + +/** +* BOMṹ(ERP) +*/ +int jf_erp_bom_struct(tag_t bom_line ,map &rev_map,vector &bom_vec,string batchid,char * nowtime ){ + int ifail = ITK_ok; + char user_id_temp[SA_user_size_c+1] =""; + tag_t tag_value; + //ȡǰ½û + ITKCALL(ifail = SA_ask_current_groupmember(&tag_value)); + if(ifail == ITK_ok) + { + tag_t user_tag = NULLTAG; + SA_ask_groupmember_user(tag_value,&user_tag); + if(user_tag!=NULLTAG) + { + ITKCALL(ifail = SA_ask_user_identifier(user_tag,user_id_temp)); + //one_elem.ORIGINER.assign(user_id_temp); + } + } + // + if(bom_line!=NULL){ + int child_count = 0; + tag_t * child_tags = NULL; + char * parent_item_id = NULL; + char * parent_rev_id = NULL; + //ȡ + ITKCALL(ifail = BOM_line_ask_all_child_lines(bom_line,&child_count,&child_tags)); + //ȡID + ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_item_item_id",&parent_item_id)); + ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_rev_item_revision_id",&parent_rev_id)); + //string parent_temp ; + //parent_temp.assign(parent_item_id); + //ӱ߼ + for(int i = 0 ;i < child_count;i++){ + char * child_item_id = NULL; + char * quantity = NULL; + char * sequence_no =NULL; + char * child_rev_id = NULL; + char * value = NULL; + char item_type[ITEM_type_size_c + 1] =""; + char * bili = NULL; + char * spc = NULL; + char * xpc = NULL; + char * lt = NULL; + tag_t item = NULLTAG; + tag_t rev_tag = NULLTAG; + ERP_BOM_STRUCT one_elem ; + //ȡID + ifail = AOM_ask_value_string(child_tags[i],"bl_item_item_id",&child_item_id); + ifail = AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&child_rev_id); + ifail = AOM_ask_value_string(child_tags[i],"bl_quantity",&quantity); + ifail = AOM_ask_value_string(child_tags[i],"TM2_bl",&bili); + ifail = AOM_ask_value_string(child_tags[i],"TM2_spc",&spc); + ifail = AOM_ask_value_string(child_tags[i],"TM2_xpc",&xpc); + ifail = AOM_ask_value_string(child_tags[i],"tm2_lt_bomline",<); + ifail = AOM_ask_value_string(child_tags[i],"bl_sequence_no",&sequence_no); + ifail = AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag); + ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag,&item)); + ITKCALL(ifail = ITEM_ask_type(item,item_type)); + + ITKCALL(ifail = ITEM_ask_unit_of_measure(item,&tag_value)); + if(ifail == ITK_ok&& tag_value!=NULLTAG){ + ITKCALL(UOM_ask_symbol(tag_value,&value)); + if(value!=NULL){ + one_elem.UNIT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.UNIT.assign(""); + } + }else{ + one_elem.UNIT.assign(""); + } + if(strcmp(item_type,"TM2_powder") == 0 || strcmp(item_type,"TM2_rawpowder") == 0 ){ + int form_count = 0; + tag_t * form_tags = NULL; + ITKCALL(ifail = AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&form_count,&form_tags)); + if(ifail == ITK_ok && form_count>0){ + date_t p ; + ifail = AOM_ask_value_date(form_tags[0],"tm2_effective_date",&p); + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); + one_elem.VALID_DATE.assign(date_value_str); + } + ifail = AOM_ask_value_date(form_tags[0],"tm2_expiry_date",&p); + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); + one_elem.INVALID_DATE.assign(date_value_str); + } + } + if(form_tags!=NULL){ + MEM_free(form_tags); + form_tags = NULL; + } + } + + + + + jf_erp_bom_struct(child_tags[i],rev_map,bom_vec,batchid,nowtime); + + one_elem.P_NUMBER.assign(parent_item_id); + one_elem.PART_NUMBER.assign(child_item_id); + one_elem.SEQ_NUMBER.assign(sequence_no); + one_elem.QUANTITY.assign(quantity); + one_elem.P_REV.assign(parent_rev_id);//5 + one_elem.PART_REV.assign(child_rev_id); + one_elem.SCALE.assign(bili); + one_elem.P_DEVIATION.assign(spc); + one_elem.M_DEVIATION.assign(xpc); + one_elem.BASKET_BOMLINE.assign(lt); + + char temp_i_str[10] = ""; + sprintf(temp_i_str,"%d",i+1); + one_elem.BL_SQUENCE.assign(temp_i_str); + one_elem.ACQUISITION.assign(""); + one_elem.REPLACE_TYPE.assign(""); + //one_elem.VALID_DATE.assign("");//10 + //one_elem.INVALID_DATE.assign(""); + + one_elem.BATCH_ID.assign(batchid); + one_elem.COMMIT_TIME.assign(nowtime); + one_elem.ORIGINER.assign(user_id_temp);//15 + one_elem.STATUS.assign("0"); + one_elem.ORIGINER_SYS.assign("PLM"); + one_elem.ORIGINER.assign(user_id_temp); + + bom_vec.push_back(one_elem); + rev_map.insert(pair(rev_tag,"")); + if(child_item_id !=NULL){ + MEM_free(child_item_id); + child_item_id = NULL; + } + if(quantity !=NULL){ + MEM_free(quantity); + quantity = NULL; + } + if(sequence_no !=NULL){ + MEM_free(sequence_no); + sequence_no = NULL; + } + if(child_rev_id !=NULL){ + MEM_free(child_rev_id); + child_rev_id = NULL; + } + if(bili !=NULL){ + MEM_free(bili); + bili = NULL; + } + if(spc !=NULL){ + MEM_free(spc); + spc = NULL; + } + if(xpc !=NULL){ + MEM_free(xpc); + xpc = NULL; + } + if(lt !=NULL){ + MEM_free(lt); + lt = NULL; + } + + } + if(child_tags!=NULL ){ + MEM_free(child_tags); + child_tags = NULL; + } + if(parent_item_id!=NULL){ + MEM_free(parent_item_id); + parent_item_id = NULL; + } + if(parent_rev_id !=NULL){ + MEM_free(parent_rev_id); + parent_rev_id = NULL; + } + + + } +} + +/** +* ȡBOMĽṹϢ(ERP) +*/ +void jf_erp_bom_all_bom(map bom_map,map &rev_map,vector &bom_vec,string batchid,char * nowtime){ + int ifail = ITK_ok; + + //BOMṹ + map::iterator bom_it; + for( bom_it = bom_map.begin(); bom_it != bom_map.end(); bom_it++ ) + { + tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,bom_it->first,&top_bom_line_tag)); + + if(top_bom_line_tag != NULLTAG){ + ITKCALL(ifail = AOM_ask_value_tag(top_bom_line_tag,"bl_line_object",&rev_tag)); + if(rev_tag!=NULLTAG){ + ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag,&item_tag)); + if(item_tag!=NULLTAG){ + int rev_count = 0 ; + tag_t * rev_all = NULL; + ITKCALL(ifail = ITEM_list_all_revs(item_tag,&rev_count,&rev_all)); + if(rev_all!=NULL){ + if(rev_count>1){ + continue; + } + MEM_free(rev_all); + rev_all = NULL; + } + } + }else{ + continue; + } + //================================================= + jf_erp_bom_struct(top_bom_line_tag,rev_map,bom_vec,batchid,nowtime); + } + + ITKCALL(ifail = BOM_close_window(bom_window_tag)); + } +} + + +/** +* BOMṹ() +*/ +int jf_hl_bom_struct(tag_t bom_line ,map &rev_map,vector &bom_vec,string batchid,char * nowtime ){ + int ifail = ITK_ok; + char user_id_temp[SA_user_size_c+1] =""; + tag_t tag_value; + //ȡǰ½û + ITKCALL(ifail = SA_ask_current_groupmember(&tag_value)); + if(ifail == ITK_ok) + { + tag_t user_tag = NULLTAG; + SA_ask_groupmember_user(tag_value,&user_tag); + if(user_tag!=NULLTAG) + { + ITKCALL(ifail = SA_ask_user_identifier(user_tag,user_id_temp)); + //one_elem.ORIGINER.assign(user_id_temp); + } + } + // + if(bom_line!=NULL){ + int child_count = 0; + tag_t * child_tags = NULL; + char * parent_item_id = NULL; + char * parent_rev_id = NULL; + //ȡ + ITKCALL(ifail = BOM_line_ask_all_child_lines(bom_line,&child_count,&child_tags)); + //ȡID + ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_item_item_id",&parent_item_id)); + ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_rev_item_revision_id",&parent_rev_id)); + //string parent_temp ; + //parent_temp.assign(parent_item_id); + //ӱ߼ + for(int i = 0 ;i < child_count;i++){ + char * child_item_id = NULL; + char * quantity = NULL; + char * sequence_no =NULL; + char * child_rev_id = NULL; + char * value = NULL; + char item_type[ITEM_type_size_c + 1] =""; + char * wastage = NULL; + char * bili = NULL; + char * spc = NULL; + char * xpc = NULL; + char * lt = NULL; + tag_t item = NULLTAG; + tag_t rev_tag = NULLTAG; + HL_BOM_STRUCT one_elem ; + //ȡID + ifail = AOM_ask_value_string(child_tags[i],"bl_item_item_id",&child_item_id); + ifail = AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&child_rev_id); + ifail = AOM_ask_value_string(child_tags[i],"bl_quantity",&quantity); + ifail = AOM_ask_value_string(child_tags[i],"bl_sequence_no",&sequence_no); + ifail = AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag); + ifail = AOM_ask_value_string(child_tags[i],"TM2_sh",&wastage); + ifail = AOM_ask_value_string(child_tags[i],"TM2_bl",&bili); + ifail = AOM_ask_value_string(child_tags[i],"TM2_spc",&spc); + ifail = AOM_ask_value_string(child_tags[i],"TM2_xpc",&xpc); + ifail = AOM_ask_value_string(child_tags[i],"tm2_lt_bomline",<); + + ifail = ITEM_ask_item_of_rev(rev_tag,&item); + ifail = ITEM_ask_type(item,item_type); + + ifail = ITEM_ask_unit_of_measure(item,&tag_value); + if(ifail == ITK_ok&& tag_value!=NULLTAG){ + ITKCALL(UOM_ask_symbol(tag_value,&value)); + if(value!=NULL){ + one_elem.UNIT.assign(value); + MEM_free(value); + value = NULL; + }else{ + one_elem.UNIT.assign(""); + } + }else{ + one_elem.UNIT.assign(""); + } + if(strcmp(item_type,"TM2_powder") == 0 || strcmp(item_type,"TM2_rawpowder") == 0 ){ + int form_count = 0; + tag_t * form_tags = NULL; + ITKCALL(ifail = AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&form_count,&form_tags)); + if(ifail == ITK_ok && form_count>0){ + date_t p ; + ITKCALL(ifail = AOM_ask_value_date(form_tags[0],"tm2_effective_date",&p)); + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); + one_elem.VALID_DATE.assign(date_value_str); + } + ITKCALL(ifail = AOM_ask_value_date(form_tags[0],"tm2_expiry_date",&p)); + if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE + char date_value_str[128] = ""; + sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); + one_elem.INVALID_DATE.assign(date_value_str); + } + } + if(form_tags!=NULL){ + MEM_free(form_tags); + form_tags = NULL; + } + } + + + + + jf_hl_bom_struct(child_tags[i],rev_map,bom_vec,batchid,nowtime); + + one_elem.P_NUMBER.assign(parent_item_id); + one_elem.PART_NUMBER.assign(child_item_id); + one_elem.SEQ_NUMBER.assign(sequence_no); + one_elem.QUANTITY.assign(quantity); + one_elem.P_REV.assign(parent_rev_id);//5 + one_elem.PART_REV.assign(child_rev_id); + + one_elem.ACQUISITION.assign(""); + one_elem.REPLACE_TYPE.assign(""); + //one_elem.VALID_DATE.assign("");//10 + //one_elem.INVALID_DATE.assign(""); + + one_elem.BATCH_ID.assign(batchid); + one_elem.COMMIT_TIME.assign(nowtime); + one_elem.ORIGINER.assign(user_id_temp);//15 + one_elem.STATUS.assign("0"); + one_elem.ORIGINER_SYS.assign("PLM"); + one_elem.ORIGINER.assign(user_id_temp); + one_elem.WASTAGE.assign(wastage); + one_elem.BASKET_BOMLINE.assign(lt); + + char temp_i_str[10] = ""; + sprintf(temp_i_str,"%d",i+1); + + one_elem.BL_SQUENCE.assign(temp_i_str); + one_elem.SCALE.assign(bili); + one_elem.P_DEVIATION.assign(spc); + one_elem.M_DEVIATION.assign(xpc); + + bom_vec.push_back(one_elem); + rev_map.insert(pair(rev_tag,"")); + if(child_item_id !=NULL){ + MEM_free(child_item_id); + child_item_id = NULL; + } + if(lt !=NULL){ + MEM_free(lt); + lt = NULL; + } + if(quantity !=NULL){ + MEM_free(quantity); + quantity = NULL; + } + if(sequence_no !=NULL){ + MEM_free(sequence_no); + sequence_no = NULL; + } + if(child_rev_id !=NULL){ + MEM_free(child_rev_id); + child_rev_id = NULL; + } + if(wastage!=NULL){ + MEM_free(wastage); + wastage = NULL; + } + + if(bili !=NULL) + { + MEM_free(bili); + bili = NULL; + } + if(spc !=NULL) + { + MEM_free(spc); + spc = NULL; + + } + if(xpc !=NULL) + { + MEM_free(xpc); + xpc = NULL; + } + } + if(child_tags!=NULL ){ + MEM_free(child_tags); + child_tags = NULL; + } + if(parent_item_id!=NULL){ + MEM_free(parent_item_id); + parent_item_id = NULL; + } + if(parent_rev_id !=NULL){ + MEM_free(parent_rev_id); + parent_rev_id = NULL; + } + + + } +} + +/** +* ȡBOMĽṹϢ() +*/ +void jf_hl_bom_all_bom(map bom_map,map &rev_map,vector &bom_vec,string batchid,char * nowtime){ + int ifail = ITK_ok; + + //BOMṹ + map::iterator bom_it; + for( bom_it = bom_map.begin(); bom_it != bom_map.end(); bom_it++ ) + { + tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,bom_it->first,&top_bom_line_tag)); + + if(top_bom_line_tag != NULLTAG){ + ITKCALL(ifail = AOM_ask_value_tag(top_bom_line_tag,"bl_line_object",&rev_tag)); + if(rev_tag!=NULLTAG){ + ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag,&item_tag)); + if(item_tag!=NULLTAG){ + //ж + + int rev_count = 0 ; + tag_t * rev_all = NULL; + ITKCALL(ifail = ITEM_list_all_revs(item_tag,&rev_count,&rev_all)); + if(rev_all!=NULL){ + /*if(rev_count>1){ + continue; + }*/ + MEM_free(rev_all); + rev_all = NULL; + } + } + }else{ + continue; + } + //================================================= + jf_hl_bom_struct(top_bom_line_tag,rev_map,bom_vec,batchid,nowtime); + } + + ITKCALL(ifail = BOM_close_window(bom_window_tag)); + } +} + + +/** +* ȡBOMṹݣERP +* +*/ +int jf_erp_send_boms(EPM_action_message_t msg){ + int ifail = ITK_ok; + ECHO("=========================================================\n"); + ECHO("ERPBOM ִпʼ\n"); + ECHO("=========================================================\n"); + + int rcode = 0, debug = 0; + // + char *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int att_cnt = 0; + tag_t *attachments = NULL; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + //char sign_info[2048]=""; + //ڵѭ + tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + + //char *qrySQL; + vector pref_vec; + + + map rev_map; + map bom_map; + vector part_vec; + vector bom_vec; + getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); + //-------------------- + //vector erp_cp_name_vec; + //vector erp_cp_gg_vec; + //vector erp_bcp_name_vec; + //vector erp_bcp_gg_vec; + //vector erp_ycl_name_vec; + + //------------------- + //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, erp_cp_name_vec); + //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, erp_cp_gg_vec); + //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, erp_bcp_name_vec); + //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, erp_bcp_gg_vec); + //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, erp_ycl_name_vec); + + if( pref_vec.size() != 3) + { + if (debug) + { + ECHO("DEBUG: ѡ%sòȷ\n",PREF_JF3_ERP_DB_Login_Info); + } + EMH_store_error_s1( EMH_severity_information, + ERROR_PREFERENCE_ERROR, + PREF_JF3_ERP_DB_Login_Info ); + ifail = ERROR_PREFERENCE_ERROR; + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return ifail; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + + //goto end_handler; + return ifail; + } + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + if (arg_cnt > 0) + { + for (i=0;i class_mapping; + //get_class_code_mapping(class_mapping); + + + //====================================================== + char updatesqlF[256] ="UPDATE ERP_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; + + char updatesqlBom[256] ="UPDATE ERP_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s'"; + char updatesqlBom2[256] ="UPDATE ERP_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s' AND PART_NUMBER='%s'"; + + //===================ȡ====================== + char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; + int outputColumn = 0; + int outputValueCount = 0; + char *** outputValue; + string batchid = "000"; + if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) + { + WriteLog("DEBUG: ѯмʧ\n"); + //findError =TRUE; + //return ifail; + + for (int i=0;i(attachments[i],"")); + } + + if(((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))){ + bom_map.insert(pair(attachments[i],"")); + + } + } + + + + + + //Դ洢 + tag_t tag_value = NULLTAG; + // char * value =NULL; + char ** str_values = NULL; + char item_type[ITEM_type_size_c + 1] =""; + date_t p; + struct tm *pp; + time_t now; + time(&now); + pp = localtime(&now); + char nowtime[30] = ""; + sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); + + //--------------------------------BOMϢ------------------------------------------------- + jf_erp_bom_all_bom(bom_map,rev_map,bom_vec,batchid,nowtime); + //--------------------------------BOM------------------------------------------------- + + //--------------------------------еitem---------------------------------------------- + //ȡ + jf_erp_send_all_item(rev_map,part_vec,batchid,nowtime); + + //ƴsql + //qrySQL= (char *) calloc (1000,sizeof(char)); + char fields[4096]="", insert_values[4096]=""; + for( i = 0; i < 28; i++ ) + { + strcat(fields, erp_part_fields[i]); + if( i != 27 ) + strcat(fields,","); + } + //BOM + char qrySQLBom[6000] = ""; + //qrySQLBom= (char *) calloc (1000,sizeof(char)); + char fieldsBOM[4096]="", insert_valuesBOM[4096]=""; + for( i = 0; i < 21; i++ ) + { + strcat(fieldsBOM, erp_bom_fields[i]); + if( i != 20 ) + strcat(fieldsBOM,","); + } + /* + "SEQ_NUMBER", + "P_NUMBER", + "P_REV", + "PART_NUMBER", + "PART_REV",//5 + "QUANTITY", + "UNIT", + "ACQUISITION", + "REPLACE_TYPE", + "VALID_DATE",//10 + "INVALID_DATE", + "STATUS", + "ORIGINER", + "COMMIT_TIME", + "BATCH_ID",//15 + "ORIGINER_SYS" +*/ + for(i = 0; i < bom_vec.size(); i++ ){ + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlBom, + "4", + nowtime, + bom_vec[i].P_NUMBER, + "0" + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlBom, + "3", + nowtime, + bom_vec[i].P_NUMBER, + "2" + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + } + + + for(i = 0; i < bom_vec.size(); i++ ){ + strcpy(insert_valuesBOM,"'"); + strcat(insert_valuesBOM,bom_vec[i].SEQ_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_REV.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].PART_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].PART_REV.c_str());//5 + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].QUANTITY.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].UNIT.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ACQUISITION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].REPLACE_TYPE.c_str()); + strcat(insert_valuesBOM,"',to_date('"); + strcat(insert_valuesBOM, bom_vec[i].VALID_DATE.c_str());//10 + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_valuesBOM, bom_vec[i].INVALID_DATE.c_str()); + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_valuesBOM, bom_vec[i].STATUS.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ORIGINER.c_str()); + strcat(insert_valuesBOM,"',to_date('"); + strcat(insert_valuesBOM, bom_vec[i].COMMIT_TIME.c_str()); + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_valuesBOM, bom_vec[i].BATCH_ID.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_valuesBOM,"','"); + //--------------------- + strcat(insert_valuesBOM, bom_vec[i].SCALE.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_DEVIATION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].M_DEVIATION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].BASKET_BOMLINE.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].BL_SQUENCE.c_str()); + strcat(insert_valuesBOM,"'"); + + sprintf(qrySQLBom,"insert into %s (%s) values (%s)", + "ERP_BOM_INFO_TABLE", + fieldsBOM, + insert_valuesBOM); + ECHO("\n 11qrySQL: %s",qrySQLBom); + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlBom2, + "1", + nowtime, + bom_vec[i].P_NUMBER, + "0", + bom_vec[i].PART_NUMBER + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + + if(ExecuteSQLNoInputParam(qrySQLBom)==-1) + { + ECHO("ʾ:BOM_TABLE ʧ, %s \n",qrySQLBom); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + }else{ + ECHO("ʾ:BOM_TABLE ɹ, %s \n",qrySQLBom); + + } + } + //ECHO("ʾ:part_vec.size() ɹ, %d \n",part_vec.size()); + //rev_map + //ECHO("ʾ:rev_map.size() ɹ, %d \n",rev_map.size()); + //ִв + + + for( i = 0; i < part_vec.size(); i++ ) + { + strcpy(insert_values,"'"); + strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].REVISION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CUSTOMER_PART_NUMBER.c_str());//5 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_MODEL.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SOURCE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SALE_CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].INDICATIVE_PRICE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].APPLICANT.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].PART_TYPE.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].VALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].STATUS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].BATCH_ID.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_values,"','"); + //------------------ + strcat(insert_values, part_vec[i].POWDER_NO.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CUSTOMER_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].WEIGHT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BASKET.c_str()); + strcat(insert_values,"'"); + char qrySQL[5000] = "\0"; + sprintf(qrySQL,"insert into %s (%s) values (%s)", + "ERP_PART_INFO_TABLE", + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlF, + "4", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "0" + ); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlF, + "3", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "2" + ); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:PART_INFO_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + + } + //-------------------------------------------------------------------------------------------- + ExecuteSQLNoInputParam("commit"); + //ifail= 0; + DisConnServer(); + + ECHO("=========================================================\n"); + ECHO("ERPBOM ִпʼ ִн\n"); + ECHO("=========================================================\n"); + end_handler: + if (ifail != ITK_ok ) + { + pref_vec.clear(); + //DOFREE(qrySQL); + DisConnServer(); + } + + return ifail; +} + +/** +* ȡBOMṹ() +* +*/ +int jf_hl_send_boms(EPM_action_message_t msg){ + int ifail = ITK_ok; + ECHO("=========================================================\n"); + ECHO("HLBOM ִпʼ\n"); + ECHO("=========================================================\n"); + int rcode = 0, debug = 0; + // + char *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int att_cnt = 0; + tag_t *attachments = NULL; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + //char sign_info[2048]=""; + //ڵѭ + tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + + //char *qrySQL; + vector pref_vec; + + + map rev_map; + map bom_map; + vector part_vec; + vector bom_vec; + getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); + //-------------------- + //vector erp_cp_name_vec; + //vector erp_cp_gg_vec; + //vector erp_bcp_name_vec; + //vector erp_bcp_gg_vec; + //vector erp_ycl_name_vec; + + //------------------- + //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, erp_cp_name_vec); + //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, erp_cp_gg_vec); + //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, erp_bcp_name_vec); + //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, erp_bcp_gg_vec); + //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, erp_ycl_name_vec); + + if( pref_vec.size() != 3) + { + if (debug) + { + ECHO("DEBUG: ѡ%sòȷ\n",PREF_JF3_ERP_DB_Login_Info); + } + EMH_store_error_s1( EMH_severity_information, + ERROR_PREFERENCE_ERROR, + PREF_JF3_ERP_DB_Login_Info ); + ifail = ERROR_PREFERENCE_ERROR; + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return ifail; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + + //goto end_handler; + return ifail; + } + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + if (arg_cnt > 0) + { + for (i=0;i class_mapping; + //get_class_code_mapping(class_mapping); + + + //====================================================== + //char updatesqlF[256] ="UPDATE HL_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; + char updatesqlF[256] ="UPDATE HL_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; + char updatesqlBom[256] ="UPDATE HL_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s'"; + char updatesqlBom2[256] ="UPDATE HL_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s' AND PART_NUMBER='%s'"; + + //===================ȡ====================== + char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; + int outputColumn = 0; + int outputValueCount = 0; + char *** outputValue; + string batchid = "000"; + if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) + { + WriteLog("DEBUG: ѯмʧ\n"); + //findError =TRUE; + //return ifail; + + for (int i=0;i(attachments[i],"")); + } + + if(((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))) + { + bom_map.insert(pair(attachments[i],"")); + } + } + //Դ洢 + tag_t tag_value = NULLTAG; + // char * value =NULL; + char ** str_values = NULL; + char item_type[ITEM_type_size_c + 1] =""; + date_t p; + struct tm *pp; + time_t now; + time(&now); + pp = localtime(&now); + char nowtime[30] = ""; + sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); + + //--------------------------------BOMϢ------------------------------------------------- + jf_hl_bom_all_bom(bom_map,rev_map,bom_vec,batchid,nowtime); + //--------------------------------BOM------------------------------------------------- + + //--------------------------------еitem---------------------------------------------- + //ȡ + jf_hl_send_all_item(rev_map,part_vec,batchid,nowtime); + + //ƴsql + //qrySQL= (char *) calloc (1000,sizeof(char)); + char fields[4096]="", insert_values[4096]=""; + for( i = 0; i < 21; i++ ) + { + strcat(fields, hl_part_fields[i]); + if( i != 20 ) + strcat(fields,","); + } + //BOM + char qrySQLBom[6000] = ""; + //qrySQLBom= (char *) calloc (1000,sizeof(char)); + char fieldsBOM[5000]="", insert_valuesBOM[5000]=""; + for( i = 0; i < 22; i++ ) + { + strcat(fieldsBOM, hl_bom_fields[i]); + if( i != 21 ) + strcat(fieldsBOM,","); + } + /* + "SEQ_NUMBER", + "P_NUMBER", + "P_REV", + "PART_NUMBER", + "PART_REV",//5 + "QUANTITY", + "UNIT", + "ACQUISITION", + "REPLACE_TYPE", + "VALID_DATE",//10 + "INVALID_DATE", + "STATUS", + "ORIGINER", + "COMMIT_TIME", + "BATCH_ID",//15 + "ORIGINER_SYS" +*/ + for(i = 0; i < bom_vec.size(); i++ ){ + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlBom, + "4", + nowtime, + bom_vec[i].P_NUMBER, + "0" + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlBom, + "3", + nowtime, + bom_vec[i].P_NUMBER, + "2" + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + } + printf("BOM\n"); + + for(i = 0; i < bom_vec.size(); i++ ){ + strcpy(insert_valuesBOM,"'"); + strcat(insert_valuesBOM,bom_vec[i].SEQ_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_REV.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].PART_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].PART_REV.c_str());//5 + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].QUANTITY.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].UNIT.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ACQUISITION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].REPLACE_TYPE.c_str()); + strcat(insert_valuesBOM,"',to_date('"); + strcat(insert_valuesBOM, bom_vec[i].VALID_DATE.c_str());//10 + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_valuesBOM, bom_vec[i].INVALID_DATE.c_str()); + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_valuesBOM, bom_vec[i].STATUS.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ORIGINER.c_str()); + strcat(insert_valuesBOM,"',to_date('"); + strcat(insert_valuesBOM, bom_vec[i].COMMIT_TIME.c_str()); + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_valuesBOM, bom_vec[i].BATCH_ID.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].WASTAGE.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].SCALE.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_DEVIATION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].M_DEVIATION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].BASKET_BOMLINE.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].BL_SQUENCE.c_str()); + strcat(insert_valuesBOM,"'"); + + sprintf(qrySQLBom,"insert into %s (%s) values (%s)", + "HL_BOM_INFO_TABLE", + fieldsBOM, + insert_valuesBOM); + ECHO("\n 11qrySQL: %s",qrySQLBom); + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlBom2, + "1", + nowtime, + bom_vec[i].P_NUMBER, + "0", + bom_vec[i].PART_NUMBER + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQLBom)==-1) + { + ECHO("ʾ:BOM_TABLE ʧ, %s \n",qrySQLBom); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + }else{ + ECHO("ʾ:BOM_TABLE ɹ, %s \n",qrySQLBom); + + } + } + //ECHO("ʾ:part_vec.size() ɹ, %d \n",part_vec.size()); + //rev_map + //ECHO("ʾ:rev_map.size() ɹ, %d \n",rev_map.size()); + //ִв + + + + + for( i = 0; i < part_vec.size(); i++ ) + { + strcpy(insert_values,"'"); + strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].REVISION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SOURCE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].APPLICANT.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].PART_TYPE.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].VALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].STATUS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].BATCH_ID.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BASKET.c_str()); + strcat(insert_values,"'"); + char qrySQL[5000] = "\0"; + sprintf(qrySQL,"insert into %s (%s) values (%s)", + "HL_PART_INFO_TABLE", + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlF, + "4", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "0" + ); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlF, + "3", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "2" + ); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:PART_INFO_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + + } + //-------------------------------------------------------------------------------------------- + ExecuteSQLNoInputParam("commit"); + //ifail = 0; + DisConnServer(); + + ECHO("=========================================================\n"); + ECHO("HLBOM ִн\n"); + ECHO("=========================================================\n"); + end_handler: + if (ifail != ITK_ok ) + { + pref_vec.clear(); + //DOFREE(qrySQL); + DisConnServer(); + } + return ifail; +} + + +/** +* ݶ汾ERPм(ERP) +*/ +int jf_erp_send_items(EPM_action_message_t msg) +{ + ECHO("=========================================================\n"); + ECHO("ERP ִпʼ\n"); + ECHO("=========================================================\n"); + int ifail = ITK_ok, rcode = 0, debug = 0; + // + char *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int att_cnt = 0; + tag_t *attachments = NULL; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + //char sign_info[2048]=""; + //ڵѭ + tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + + // + vector pref_vec; + map rev_map; + vector part_vec; + + getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); + + //vector cp_name_vec; + //vector cp_gg_vec; + //vector bcp_name_vec; + //vector bcp_gg_vec; + //vector ycl_name_vec; + + //------------------- + //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, cp_name_vec); + //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, cp_gg_vec); + //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, bcp_name_vec); + //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, bcp_gg_vec); + //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, ycl_name_vec); + if( pref_vec.size() != 3) + { + if (debug) + { + ECHO("DEBUG: ѡ%sòȷ\n",PREF_JF3_ERP_DB_Login_Info); + } + EMH_store_error_s1( EMH_severity_information, + ERROR_PREFERENCE_ERROR, + PREF_JF3_ERP_DB_Login_Info ); + ifail = ERROR_PREFERENCE_ERROR; + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return ifail; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + + //goto end_handler; + return ifail; + } + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + if (arg_cnt > 0) + { + for (i=0;i class_mapping; + //get_class_code_mapping(class_mapping); + + + //====================================================== + char updatesqlF[256] ="UPDATE ERP_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; + //===================ȡ====================== + char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; + int outputColumn = 0; + int outputValueCount = 0; + char *** outputValue; + string batchid = "000"; + if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) + { + printf("DEBUG: ѯмʧ\n"); + //findError =TRUE; + //return ifail; + + for (int i=0;i(attachments[i],"")); + } + } + //Դ洢 + tag_t tag_value = NULLTAG; + // char * value =NULL; + char ** str_values = NULL; + char item_type[ITEM_type_size_c + 1] =""; + date_t p; + struct tm *pp; + time_t now; + time(&now); + pp = localtime(&now); + char nowtime[30] = ""; + sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); + //ȡ + jf_erp_send_all_item(rev_map,part_vec,batchid,nowtime); + //ƴsql + //qrySQL= (char *) calloc (500,sizeof(char)); + char fields[5000]="", insert_values[5000]=""; + for( i = 0; i < 28; i++ ) + { + strcat(fields, erp_part_fields[i]); + if( i != 27 ) + strcat(fields,","); + } + //ִв + for( i = 0; i < part_vec.size(); i++ ) + { + + strcpy(insert_values,"'"); + strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].REVISION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CUSTOMER_PART_NUMBER.c_str());//5 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_MODEL.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SOURCE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SALE_CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].INDICATIVE_PRICE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].APPLICANT.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].PART_TYPE.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].VALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].STATUS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].BATCH_ID.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_values,"','"); + + strcat(insert_values, part_vec[i].POWDER_NO.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CUSTOMER_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].WEIGHT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BASKET.c_str()); + strcat(insert_values,"'"); + + char qrySQL[5000] = "\0"; + sprintf(qrySQL,"insert into %s (%s) values (%s)", + PART_INFO_TABLE, + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlF, + "4", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "0" + ); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlF, + "3", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "2" + ); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:PART_INFO_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + } + ExecuteSQLNoInputParam("commit"); + //ifail = 0; + DisConnServer(); + ECHO("=========================================================\n"); + ECHO("ERP ִн\n"); + ECHO("=========================================================\n"); + +end_handler: + if (ifail != ITK_ok ) + { + pref_vec.clear(); + DisConnServer(); + } + + return ifail; +} + +/** +* ݶ汾м() +*/ +int jf_hl_send_items(EPM_action_message_t msg) +{ + ECHO("=========================================================\n"); + ECHO("HL ִпʼ\n"); + ECHO("=========================================================\n"); + int ifail = ITK_ok, rcode = 0, debug = 0; + // + char *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int att_cnt = 0; + tag_t *attachments = NULL; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + //char sign_info[2048]=""; + //ڵѭ + tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + + //char *qrySQL; + vector pref_vec; + map rev_map; + vector part_vec; + + + + getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); + + + //vector cp_name_vec; + //vector cp_gg_vec; + //vector bcp_name_vec; + //vector bcp_gg_vec; + //vector ycl_name_vec; + + //------------------- + //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, cp_name_vec); + //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, cp_gg_vec); + //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, bcp_name_vec); + //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, bcp_gg_vec); + //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, ycl_name_vec); + if( pref_vec.size() != 3) + { + if (debug) + { + ECHO("DEBUG: ѡ%sòȷ\n",PREF_JF3_ERP_DB_Login_Info); + } + EMH_store_error_s1( EMH_severity_information, + ERROR_PREFERENCE_ERROR, + PREF_JF3_ERP_DB_Login_Info ); + ifail = ERROR_PREFERENCE_ERROR; + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return ifail; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + //goto end_handler; + return ifail; + } + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + if (arg_cnt > 0) + { + for (i=0;i class_mapping; + //get_class_code_mapping(class_mapping); + + + //====================================================== + char updatesqlF[256] ="UPDATE HL_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; + //===================ȡ====================== + char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; + int outputColumn = 0; + int outputValueCount = 0; + char *** outputValue; + string batchid = "000"; + if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) + { + WriteLog("DEBUG: ѯмʧ\n"); + //findError =TRUE; + //return ifail; + + for (int i=0;i(attachments[i],"")); + } + } + //Դ洢 + tag_t tag_value = NULLTAG; + // char * value =NULL; + char ** str_values = NULL; + char item_type[ITEM_type_size_c + 1] =""; + date_t p; + struct tm *pp; + time_t now; + time(&now); + pp = localtime(&now); + char nowtime[30] = ""; + sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); + //ȡ + jf_hl_send_all_item(rev_map,part_vec,batchid,nowtime); + //ƴsql + //qrySQL= (char *) calloc (500,sizeof(char)); + char fields[4096]="", insert_values[4096]=""; + for( i = 0; i < 21; i++ ) + { + strcat(fields, hl_part_fields[i]); + if( i != 20 ) + strcat(fields,","); + } + //ִв + for( i = 0; i < part_vec.size(); i++ ) + { + + /* + "PART_NAMBER", + "PART_NAME", + "REVISION", + "SPECIFICATION", + "CUSTOMER_PART_NUMBER",//5 + "PART_MODEL", + "STOCK_KEEPING_UNIT", + "SHELF_LIFE", + "SOURCE", + "FORMULA_TYPE",//10 + "CLASSIFICATION", + "SALE_CLASSIFICATION", + "INDICATIVE_PRICE", + "APPLICANT", + "APPLICANT_DATE",//15 + "PART_TYPE", + "VALID_DATE", + "INVALID_DATE", + "STATUS", + "ORIGINER",//20 + "ERROR_MSG", + "COMMIT_TIME", + "OPERATE_TIME", + "BATCH_ID", + "PUID",//25 + "ORIGINER_SYS" +*/ + strcpy(insert_values,"'"); + strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].REVISION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SOURCE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].APPLICANT.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].PART_TYPE.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].VALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].STATUS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].BATCH_ID.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BASKET.c_str()); + strcat(insert_values,"'"); + + char qrySQL[5000] = "\0"; + sprintf(qrySQL,"insert into %s (%s) values (%s)", + "HL_PART_INFO_TABLE", + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlF, + "4", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "0" + ); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlF, + "3", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "2" + ); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:PART_INFO_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + } + ExecuteSQLNoInputParam("commit"); + //ifail = ITK_ok; + DisConnServer(); + ECHO("=========================================================\n"); + ECHO("HL ִн\n"); + ECHO("=========================================================\n"); + +end_handler: + if (ifail != ITK_ok ) + { + pref_vec.clear(); + //DOFREE(qrySQL); + DisConnServer(); + } + + return ifail; +} + +/** +* ݱERP +*/ +int jf_erp_ecn_send_msg(EPM_action_message_t msg){ + int ifail = ITK_ok; + ECHO("=========================================================\n"); + ECHO("ERP ECN ִпʼ\n"); + ECHO("=========================================================\n"); + + int rcode = 0, debug = 0; + // + char *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int att_cnt = 0; + tag_t *attachments = NULL; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + //char sign_info[2048]=""; + //ڵѭ + tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + + char *qrySQL; + vector pref_vec; + + + map rev_map; + map bom_map; + vector part_vec; + vector bom_vec; + getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); + //-------------------- + //vector erp_cp_name_vec; + //vector erp_cp_gg_vec; + //vector erp_bcp_name_vec; + //vector erp_bcp_gg_vec; + //vector erp_ycl_name_vec; + + //------------------- + //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, erp_cp_name_vec); + //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, erp_cp_gg_vec); + //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, erp_bcp_name_vec); + //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, erp_bcp_gg_vec); + //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, erp_ycl_name_vec); + + if( pref_vec.size() != 3) + { + if (debug) + { + ECHO("DEBUG: ѡ%sòȷ\n",PREF_JF3_ERP_DB_Login_Info); + } + EMH_store_error_s1( EMH_severity_information, + ERROR_PREFERENCE_ERROR, + PREF_JF3_ERP_DB_Login_Info ); + ifail = ERROR_PREFERENCE_ERROR; + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return ifail; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + + //goto end_handler; + return ifail; + } + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + if (arg_cnt > 0) + { + for (i=0;i class_mapping; + get_class_code_mapping(class_mapping); + + + //====================================================== + char updatesqlF[256] ="UPDATE ERP_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; + + char updatesqlBom[256] ="UPDATE ERP_BOM_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE P_NUMBER='%s' AND STATUS='%s'"; + char updatesqlBom2[256] ="UPDATE ERP_BOM_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE P_NUMBER='%s' AND STATUS='%s' AND PART_NUMBER='%s'"; + + //===================ȡ====================== + char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; + int outputColumn = 0; + int outputValueCount = 0; + char *** outputValue; + string batchid = "000"; + if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) + { + WriteLog("DEBUG: ѯмʧ\n"); + //findError =TRUE; + //return ifail; + + for (int i=0;i(attachments[i],"")); + } + + if((strstr(type_class,"Revision") == NULL) && (strstr(type_class,"revision") == NULL) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))) + { + bom_map.insert(pair(attachments[i],"")); + + } + } + + + + + + //Դ洢 + tag_t tag_value = NULLTAG; + // char * value =NULL; + char ** str_values = NULL; + char item_type[ITEM_type_size_c + 1] =""; + date_t p; + struct tm *pp; + time_t now; + time(&now); + pp = localtime(&now); + char nowtime[30] = ""; + sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); + + //--------------------------------BOMϢ------------------------------------------------- + jf_erp_bom_all_bom(bom_map,rev_map,bom_vec,batchid,nowtime); + //--------------------------------BOM------------------------------------------------- + + //--------------------------------еitem---------------------------------------------- + //ȡ + jf_erp_send_all_item(rev_map,part_vec,batchid,nowtime); + + //ƴsql + qrySQL= (char *) calloc (1000,sizeof(char)); + char fields[4096]="", insert_values[4096]=""; + for( i = 0; i < 28; i++ ) + { + strcat(fields, erp_part_fields[i]); + if( i != 27 ) + strcat(fields,","); + } + //BOM + char * qrySQLBom = NULL; + qrySQLBom= (char *) calloc (1000,sizeof(char)); + char fieldsBOM[4096]="", insert_valuesBOM[4096]=""; + for( i = 0; i < 21; i++ ) + { + strcat(fieldsBOM, erp_bom_fields[i]); + if( i != 20 ) + strcat(fieldsBOM,","); + } + /* + "SEQ_NUMBER", + "P_NUMBER", + "P_REV", + "PART_NUMBER", + "PART_REV",//5 + "QUANTITY", + "UNIT", + "ACQUISITION", + "REPLACE_TYPE", + "VALID_DATE",//10 + "INVALID_DATE", + "STATUS", + "ORIGINER", + "COMMIT_TIME", + "BATCH_ID",//15 + "ORIGINER_SYS" +*/ + for(i = 0; i < bom_vec.size(); i++ ){ + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlBom, + "4", + nowtime, + bom_vec[i].P_NUMBER, + "0" + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlBom, + "3", + nowtime, + bom_vec[i].P_NUMBER, + "2" + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + } + + + for(i = 0; i < bom_vec.size(); i++ ){ + strcpy(insert_valuesBOM,"'"); + strcat(insert_valuesBOM,bom_vec[i].SEQ_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].P_REV.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].PART_NUMBER.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].PART_REV.c_str());//5 + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].QUANTITY.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].UNIT.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ACQUISITION.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].REPLACE_TYPE.c_str()); + strcat(insert_valuesBOM,"',to_date('"); + strcat(insert_valuesBOM, bom_vec[i].VALID_DATE.c_str());//10 + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_valuesBOM, bom_vec[i].INVALID_DATE.c_str()); + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_valuesBOM, bom_vec[i].STATUS.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ORIGINER.c_str()); + strcat(insert_valuesBOM,"',to_date('"); + strcat(insert_valuesBOM, bom_vec[i].COMMIT_TIME.c_str()); + strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_valuesBOM, bom_vec[i].BATCH_ID.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].BASKET_BOMLINE.c_str()); + strcat(insert_valuesBOM,"','"); + strcat(insert_valuesBOM, bom_vec[i].BL_SQUENCE.c_str()); + strcat(insert_valuesBOM,"'"); + + sprintf(qrySQLBom,"insert into %s (%s) values (%s)", + "ERP_BOM_INFO_TABLE", + fieldsBOM, + insert_valuesBOM); + ECHO("\n 11qrySQL: %s",qrySQLBom); + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlBom2, + "1", + nowtime, + bom_vec[i].P_NUMBER, + "0", + bom_vec[i].PART_NUMBER + ); + ECHO("\nupdateqrySQL: %s",updateSQL); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQLBom)==-1) + { + ECHO("ʾ:BOM_TABLE ʧ, %s \n",qrySQLBom); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + }else{ + ECHO("ʾ:BOM_TABLE ɹ, %s \n",qrySQLBom); + + } + } + //ECHO("ʾ:part_vec.size() ɹ, %d \n",part_vec.size()); + //rev_map + //ECHO("ʾ:rev_map.size() ɹ, %d \n",rev_map.size()); + //ִв + + + + + for( i = 0; i < part_vec.size(); i++ ) + { + strcpy(insert_values,"'"); + strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_NAME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].REVISION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CUSTOMER_PART_NUMBER.c_str());//5 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_MODEL.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SOURCE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SALE_CLASSIFICATION.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].INDICATIVE_PRICE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].APPLICANT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PART_TYPE.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].VALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); + strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].STATUS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].BATCH_ID.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BASKET.c_str()); + strcat(insert_values,"'"); + + sprintf(qrySQL,"insert into %s (%s) values (%s)", + PART_INFO_TABLE, + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlF, + "4", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "0" + ); + + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlF, + "3", + nowtime, + part_vec[i].PART_NAMBER, + part_vec[i].REVISION, + "2" + ); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:PART_INFO_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + + } + //-------------------------------------------------------------------------------------------- + ExecuteSQLNoInputParam("commit"); + ifail = 0; + DisConnServer(); + + ECHO("=========================================================\n"); + ECHO("ERP ECN ִн\n"); + ECHO("=========================================================\n"); + end_handler: + if (ifail != ITK_ok ) + { + pref_vec.clear(); + DOFREE(qrySQL); + DisConnServer(); + } + return ifail; +} + + + +/** +* ݶ汾м() +*/ +int jf_control_plan_send(EPM_action_message_t msg){ + + ECHO("=========================================================\n"); + ECHO("ݿƼƻ ִпʼ\n"); + ECHO("=========================================================\n"); + int ifail = ITK_ok, rcode = 0, debug = 0; + // + char *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128]="",task_name[128] = ""; + int att_cnt = 0; + tag_t *attachments = NULL; + char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; + ////ѭڲ + tag_t cur_task = NULLTAG; + + //ѭ + int i=0, j=0, k=0, count = 0, n = 0; + //ڵϢ + //char sign_info[2048]=""; + //ڵѭ + tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; + char rev_id[ITEM_id_size_c+1]=""; + char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; + int form_count = 0; + tag_t *form_list = NULL,master_form = NULLTAG; + + //char *qrySQL; + vector pref_vec; + map rev_map; + vector part_vec; + vector array_vec; + + getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); + + if( pref_vec.size() != 3) + { + if (debug) + { + ECHO("DEBUG: ѡ%sòȷ\n",PREF_JF3_ERP_DB_Login_Info); + } + EMH_store_error_s1( EMH_severity_information, + ERROR_PREFERENCE_ERROR, + PREF_JF3_ERP_DB_Login_Info ); + ifail = ERROR_PREFERENCE_ERROR; + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return ifail; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + + //goto end_handler; + return ifail; + } + arg_cnt = TC_number_of_arguments(msg.arguments); + if (debug) + ECHO("\n arg_cnt=%d\n",arg_cnt); + ITKCALL(ifail = EPM_setup_parser(task_tag)); + if (arg_cnt > 0) + { + for (i=0;i(attachments[i],"")); + } + } + } + //Դ洢 + tag_t tag_value = NULLTAG; + // char * value =NULL; + char ** str_values = NULL; + char item_type[ITEM_type_size_c + 1] =""; + date_t p; + struct tm *pp; + time_t now; + time(&now); + pp = localtime(&now); + char nowtime[30] = ""; + sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); + //ȡ + jf_control_send_all_item(rev_map,part_vec,array_vec,batchid,nowtime); + //ƴsql + //qrySQL= (char *) calloc (500,sizeof(char)); + char fields[4096]="", insert_values[4096]=""; + for( i = 0; i < 29; i++ ) + { + strcat(fields, control_plan_fields[i]); + if( i != 28 ) + strcat(fields,","); + } + //ִв + //map>::iterator itNote; + for( i = 0;i< part_vec.size();i++ ) + { + strcpy(insert_values,"'"); + strcat(insert_values, part_vec[i].STAGE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].KEY_PHONE.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].cust_approval.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].KEY_CONTACT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].DATE_ORIG.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].DATE_REV.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].PLAN_NO.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].SOR.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CORE_TEAM.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Customer_engineering_approval.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Part_Num_Latest_change.c_str());//15 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Supplier_Plant_Approval.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Customer_quality_approval.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Customer_Part_Number.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Part_Name_Description.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Supplier_Plant.c_str());//20 + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Supplier_Code.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Mode_year.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Other_approval_1.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].Other_approval_2.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].KEY_CONNECT.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].CHANGE_LEV.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].STATUS.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ERROR_MSG.c_str()); + strcat(insert_values,"',to_date('"); + strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); + strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); + strcat(insert_values, part_vec[i].OPERATE_TIME.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].BATCH_ID.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); + strcat(insert_values,"'"); + + char qrySQL[5000] = "\0"; + sprintf(qrySQL,"insert into %s (%s) values (%s)", + "CP_INFO_TABLE", + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + + char updateSQL[300] ="\0"; + sprintf(updateSQL,updatesqlF, + "4", + nowtime, + part_vec[i].PLAN_NO.c_str(), + + "0" + ); + ExecuteSQLNoInputParam(updateSQL); + + sprintf(updateSQL,updatesqlF, + "3", + nowtime, + part_vec[i].PLAN_NO.c_str(), + + "2" + ); + ExecuteSQLNoInputParam(updateSQL); + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:CP_INFO_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + } + + strcpy(fields,""); + for( i = 0; i < 20; i++ ) + { + strcat(fields, comtrol_plan_array_fields[i]); + if( i != 19 ) + strcat(fields,","); + } + + for( i = 0;i< array_vec.size();i++ ) + { + strcpy(insert_values,"'"); + strcat(insert_values, array_vec[i].Part_Process_Number.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Process_Name_Description.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Machine_Device.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Characteristics_Bubbled.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Characteristics_Size.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Characteristics_No.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Characteristics_Product.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Characteristics_Process.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Special_Char_Class.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Specification_Tolerance.c_str());//10 + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].UP_SPEC.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].DOWN_SPEC.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Evaluation_Measurement.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Sample_Size.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Sample_Freq.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Resp.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Control_Method.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Operation_criteria.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].Reaction_Plan.c_str()); + strcat(insert_values,"','"); + strcat(insert_values, array_vec[i].KEY_CONNECT.c_str()); + strcat(insert_values,"'"); + + char qrySQL[5000] = "\0"; + sprintf(qrySQL,"insert into %s (%s) values (%s)", + "CP_INFO_ARRAY_TABLE", + fields, + insert_values); + ECHO("\nqrySQL: %s",qrySQL); + + + + if(ExecuteSQLNoInputParam(qrySQL)==-1) + { + ECHO("ʾ:CP_INFO_ARRAY_TABLE ʧ, %s \n",qrySQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + goto end_handler; + } + } + + ExecuteSQLNoInputParam("commit"); + //ifail = ITK_ok; + DisConnServer(); + ECHO("=========================================================\n"); + ECHO("ݿƼƻ ִн\n"); + ECHO("=========================================================\n"); + +end_handler: + if (ifail != ITK_ok ) + { + pref_vec.clear(); + //DOFREE(qrySQL); + DisConnServer(); + } + + return ifail; + + + //return 0; +}; + +/** +*ݼݼJAVAͼƬ +* +*/ +int insert_pdf(tag_t dataset, char *ext) +{ + printf("insert_pdf \r\n"); + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + AE_reference_type_t reference_type; + ITKCALL(AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev)); + char ref_name[WSO_name_size_c + 1] = "PDF_Reference"; + ITKCALL(AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object)); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + ITKCALL(IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname)); + char origin_file_name[IMF_filename_size_c + 1] = ""; + ITKCALL(IMF_ask_original_file_name(ref_object, origin_file_name)); + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + char * tc_root_dir = getenv("tc_root"); + char img_file[SS_MAXPATHLEN] = ""; + char temp_file[SS_MAXPATHLEN] = ""; + char temp_file2[SS_MAXPATHLEN] = ""; + char jar_file[SS_MAXPATHLEN] = ""; + //----------------------------- + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + //-------------------------- + strcpy(temp_file2, temp_dir); + strcat(temp_file2, "\\"); + strcat(temp_file2, new_file_name); + strcat(temp_file2, ".pdf"); + //----------------------------- + strcpy(img_file, tc_root_dir); + strcat(img_file, "\\bin\\"); + strcat(img_file, "jfom_img.tif"); + //----------------------------- + strcpy(jar_file, tc_root_dir); + strcat(jar_file, "\\bin\\"); + strcat(jar_file, "insert_pdf.jar"); + + ITKCALL(IMF_export_file(ref_object, temp_file)); + ITKCALL(IMF_export_file(ref_object, temp_file2)); + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + //strcpy( cmd, user_lib_env ); + strcpy( cmd, "java -jar \"" ); + strcat( cmd, jar_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, temp_file2 ); + strcat( cmd, "\" \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, img_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + + //strcpy(user_lib_env, local_path); + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + ITKCALL(IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor)); + ITKCALL(IMF_set_original_file_name(new_file_tag, origin_file_name)); + ITKCALL(IMF_close_file(file_descriptor)); + ITKCALL(AOM_save(new_file_tag)); + ITKCALL(AOM_unlock(new_file_tag)); + ITKCALL(AOM_lock(spec_dataset_rev)); + ITKCALL(AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object)); + ITKCALL(AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag)); + ITKCALL(AOM_save(spec_dataset_rev)); + ITKCALL(AOM_unlock(spec_dataset_rev)); + //free(new_file_name); + //free(temp_dir); + } + + return ITK_ok; +} + + +/** +*PDFвͼƬhandler +* +*/ +int jf_insert_img_pdf(EPM_action_message_t msg) +{ + // + POM_AM__set_application_bypass(true); + int ifail = ITK_ok,att_cnt = 0, i = 0; + tag_t task_tag = NULLTAG, + rootTask_tag = NULLTAG, + *attachments = NULL, + relation_type = NULLTAG, + type_tag =NULLTAG; + char tgt_type[WSO_name_size_c+1]="", + type_class[TCTYPE_class_name_size_c+1]="", + rev_type[ITEM_type_size_c+1]=""; + map rev_map; + //ȡ + task_tag = msg.task; + //ȡ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿ + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + for( i = 0; i < att_cnt; i++ ) + { + ITKCALL(TCTYPE_ask_object_type(attachments[i], &type_tag)); + ITKCALL(ifail = TCTYPE_ask_class_name(type_tag, type_class)); + ECHO("type_class : %s \r\n",type_class); + //˵ǰ汾 + if (((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && (strstr(type_class,"BOM") ==NULL) && (strstr(type_class,"bom") ==NULL) && (strstr(type_class,"Bom") == NULL)) + { + //汾д뵽 + rev_map.insert(pair(attachments[i],"")); + } + } + + // + ITKCALL(GRM_find_relation_type(IMAN_specification_rtype, &relation_type )); + //ITKCALL(GRM_create_relation(pTags[i],new_dataset,relation_type,NULLTAG,&relation)); + + //汾 + map::iterator rev_it; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + ITKCALL(ITEM_ask_rev_type(rev_it->first,rev_type)); + tag_t * second_tags = NULL; + int second_tags_count = 0; + //if(strcmp(rev_type,"JF3_CPRevision")==0){ + if(true){ + //ݼ߼ + ITKCALL(GRM_list_secondary_objects_only(rev_it->first,relation_type,&second_tags_count,&second_tags)); + for( i = 0 ;i < second_tags_count;i++){ + char * second_tag_type = NULL; + ITKCALL(AOM_ask_value_string(second_tags[i],"object_type",&second_tag_type)); + + printf(" second_tag_type => %s \r\n",second_tag_type); + + if(strcmp(second_tag_type,"PDF")==0){ + insert_pdf(second_tags[i],"pdf"); + } + + if(second_tag_type!=NULL){ + MEM_free(second_tag_type); + second_tag_type = NULL; + } + } + } + + if(second_tags !=NULL){ + MEM_free(second_tags); + second_tags =NULL; + } + } + + + if(attachments!=NULL){ + MEM_free(attachments); + attachments = NULL; + } + POM_AM__set_application_bypass(false); + return ifail; +} diff --git a/jf_itk/erp_utils.cxx b/jf_itk/erp_utils.cxx new file mode 100644 index 0000000..36646a6 --- /dev/null +++ b/jf_itk/erp_utils.cxx @@ -0,0 +1,28 @@ + +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) + + +#include "erp_utils.h" +#include "ocilib.h" +#include "common_itk_util.h" +using namespace std; + + +int getPrefStrings( const char *preference, TC_preference_search_scope_t scope, vector &pref_vec ) +{ + int ifail = ITK_ok , i = 0, j = 0, k =0, num = 0; + char **values; + TC_preference_search_scope_t old_scope; + ITKCALL( ifail = PREF_ask_search_scope( &old_scope) ); + ITKCALL( ifail = PREF_set_search_scope( scope ) ); + ITKCALL( ifail = PREF_ask_char_values( preference, &num, &values ) ); + WriteLog("num=%d",num); + for(i = 0; i < num; i++) + { + pref_vec.push_back(values[i]); + } + DOFREE(values); + ITKCALL( ifail = PREF_set_search_scope( old_scope ) ); + return ifail; +} \ No newline at end of file diff --git a/jf_itk/erp_utils.h b/jf_itk/erp_utils.h new file mode 100644 index 0000000..d483878 --- /dev/null +++ b/jf_itk/erp_utils.h @@ -0,0 +1,102 @@ +/** +* @addtogroup batch service +* @{ +*/ + +/** +* @file erp_utils.h +* +* @brief import item from middle table +* +* @author Ray Li +* +* @history +* =================================================================================== +* Date Name Description of Change +* 3-Feb-2015 Ray created +*/ + + +/** +* @headerfile tcua ͷļ +*/ + +#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 +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +//erp table name +#define PART_INFO_TABLE "ERP_PART_INFO_TABLE" + +#define PREF_JF3_ERP_DB_Login_Info "TM2_ERP_DB_Login_Info" + +#define CUST_CP_NAME_PROPS "Cust_ERP_PLM_CP_Name_Props"//Ʒƹ +#define CUST_CP_GG_PROPS "Cust_ERP_PLM_CP_GG_Props"//Ʒ +#define CUST_BCP_NAME_PROPS "Cust_ERP_PLM_BCP_Name_Props"//Ʒƹ +#define CUST_BCP_GG_PROPS "Cust_ERP_PLM_BCP_GG_Props"//Ʒ +#define CUST_YCL_NAME_PROPS "Cust_ERP_PLM_YCL_NAME_Props"//ԭƹ +#define CUST_WL_PROPS "Cust_ERP_PLM_WL_Props"//JAVAȡԹ + +//error +#define ERROR_PREFERENCE_ERROR (EMH_USER_error_base + 1) +#define ERROR_ERP_LOGIN_FAIL (EMH_USER_error_base + 2) + +//ERP +#define ERROR_OCI_FAIL (EMH_USER_error_base + 11) + + +#ifdef __cplusplus +extern "C" +{ +#endif + + + + +int getPrefStrings( const char *preference, TC_preference_search_scope_t scope, vector &pref_vec ); + +#ifdef __cplusplus +} +#endif + diff --git a/jf_itk/error_handling.h b/jf_itk/error_handling.h new file mode 100644 index 0000000..05d9d62 --- /dev/null +++ b/jf_itk/error_handling.h @@ -0,0 +1,162 @@ +/*! +* @addtogroup common +* \file error_handling.h +* \brief +* \date 2008/6/10 +* \author Ray Li +*/ + +#ifndef SIMPLE_ERR_H_INCLUDED +#define SIMPLE_ERR_H_INCLUDED + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define BUFSIZE 512 + + +// +#define HANDLER_ARGUMENT_ERROR EMH_USER_error_base + 1 +//#define WORKFLOW_NODE_IS_NOT_VALID EMH_USER_error_base + 2 + +#define ERROR_STATUS_ERROR EMH_USER_error_base + 2 +//#define HANDLER_PLACED_INVALID EMH_USER_error_base + 3 +// +////user errors define +////վļȱ %1$ ã +//#define ERROR_PREFERENCE_NOT_FOUND (EMH_USER_error_base + 100) + + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} + + + +//#define ECHO(X) printf X; +#define SYS_LOG(X) IMAN_write_syslog X; +#define LOG_ECHO(X) printf X; IMAN_write_syslog X; + + + +/*! +* \def CALL(x) +* ӡϢ +*/ +#define CALL(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != ITK_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + LOG_ECHO( ("ERROR: %d ERROR MSG: %s.\n",stat, err_string) ) \ + LOG_ECHO( ("Function: %s FILE: %s LINE: %d\n", #x, __FILE__, __LINE__ ) ) \ + MEM_free (err_string); \ + return (stat); \ + } \ +} + +/*! +* \def DO(x) +* ӡϢ +*/ +#define DO(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != POM_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + printf ("ERROR: %d ERROR MSG: %s.\n", stat, err_string); \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + MEM_free (err_string); \ + } \ +} + +/*! +* \def CALLRNULL(x) +* ӡϢ +*/ +#define CALLRNULL(x) { \ + int stat; \ + char *err_string; \ + if( (stat = (x)) != ITK_ok) \ + { \ + EMH_ask_error_text (stat, &err_string); \ + printf ("ERROR: %d ERROR MSG: %s.\n", stat, err_string); \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + MEM_free (err_string); \ + return ((char *)NULL); \ + } \ +} + +/*! +* \def CALL2(x) +* ӡϢ +*/ +#define CALL2(x) { \ + int stat, n_ifails, *serverities, *ifails, err_count; \ + char *err_string, **texts; \ + if( (stat = (x)) != ITK_ok) \ + { \ + printf ("Function: %s FILE: %s LINE: %d\n",#x, __FILE__, __LINE__); \ + EMH_ask_errors( &n_ifails, (const int**)(&serverities), (const int**)(&ifails), (const char***)(&texts) );\ + for( err_count=0; err_count +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +# include "common_itk_util.h" +using namespace std; +extern "C" int POM_AM__set_application_bypass(logical bypass); +int historicalDataAddMark(EPM_action_message_t msg) +{ + int ifail=ITK_ok; + + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULLTAG; + int arg_cnt = 0, att_cnt = 0; + + char* object_type ; + char * argflag = NULL , + *argvalue =NULL , + *arg = NULL , + + statusMark[1024]="\0"; + tag_t release_stat = NULLTAG; + vector attatcgments; + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (int i=0;i"< %s\n",cd9_codeDesc); + if(cd9_codeDesc !=NULL){ + MEM_free(cd9_codeDesc); + cd9_codeDesc =NULL; + } + + + if(*item_tag != NULLTAG && strcmp(item_type,"HX3_XXM")==0){ + int count = 0 ,entry_count = 0,status = 0,num_found=0; + char ** values_list = NULL ;//** values = NULL, ** entries = NULL; + + tag_t query_tag = NULLTAG ,*results = NULL; + + // + ITKCALL(QRY_find("KHDH-TO-XM",&query_tag)); + if(query_tag==NULLTAG) + { + printf("ûҵ [%s]ѯ\n","KHDH-TO-XM" ); + return 0; + } + printf("ҵ [%s]ѯ\n","KHDH-TO-XM" ); + + ITKCALL(AOM_ask_value_strings(*item_tag,"hx3_khdh",&count,&values_list)); + //char other_entrys[1][64] = {"ͻ"};//hx3_khdh ͻ + //char other_values[1][64] = {""}; + + + for(int i = 0 ;i < count;i++){ + char *other_values[1] ; + char *other_entrys[1] ; + other_values[0]= (char*)calloc(48,sizeof(char)); + other_entrys[0] = (char*)calloc(48,sizeof(char)); + tc_strcpy(other_entrys[0],"ͻ"); + tc_strcpy(other_values[0],values_list[i]); + printf("ִвѯ[%s][%s]\n",other_entrys[0],other_values[0]); + ITKCALL(status = QRY_execute(query_tag,1,other_entrys,other_values,&num_found,&results)); + printf("ִвѯ[%d]\n",status); + free(other_values[0]); + free(other_entrys[0]); + //printf("11111111111111\n"); + if(status !=ITK_ok){ + char * message =NULL; + EMH_ask_error_text(status, &message); + printf("ѯ쳣 : \"%d\",\"%s\"\n",status,message); + MEM_free(message); + message =NULL; + return 0; + } + + for(int j =0;j < num_found;j++){ + //¼Ϣ + char item_id1[ITEM_id_size_c + 1] = "\0"; + ITEM_ask_id(results[j],item_id1); + if(strcmp(item_id,item_id1)!=0){ + ifail = ITEM_unable_to_create; + //char msg[214] = "\0"; + char * object_string =NULL; + AOM_ask_value_string(results[j],"object_string",&object_string); + + error_string.append("Ŀ[").append(values_list[i]).append("]").append("ѾĿ[").append(object_string).append("]ͻ\n"); + + if(object_string!=NULL){ + MEM_free(object_string); + object_string =NULL; + } + } + + } + if(results!=NULL){ + MEM_free(results); + results =NULL; + } + + } + + //printf("222222222222\n"); + + //ͷ + + if(values_list!=NULL){ + for(int i = 0 ;i < count;i++){ + if(values_list[i]!=NULL){ + MEM_free(values_list[i]); + values_list[i] = NULL; + } + } + MEM_free(values_list); + values_list =NULL; + } + } + // printf("333333333\n"); + // + if(ITEM_unable_to_create == ifail){ + // ӴϢ + EMH_store_error_s1(EMH_severity_user_error,ERROR_QRY_NOT_FOUND,error_string.c_str()); + error_string.clear(); + } + + + return ifail; +} + +int HX3_post_prop_set_MJ( METHOD_message_t *msg, va_list args ) +{ + int ifail = ITK_ok , + count = 0, + form_count = 0; + tag_t prop_tag =NULLTAG, + obj_tag=NULLTAG, + form_tag=NULLTAG, + * values_tags =NULL, + * form_tags =NULL; + //ȡԶ + prop_tag = va_arg( args, tag_t ); + //ȡ + count = va_arg( args, int ); + //ȡֵ + values_tags = va_arg( args, tag_t* ); + + printf("set prop \n"); + vector vec; + if(prop_tag!=NULLTAG ){ + //char * name =NULL; + //ȡԶ + PROP_ask_owning_object(prop_tag,&obj_tag); + //ȡ汾 + AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&form_count,&form_tags); + + + + if(form_count > 0){ + // + for(int i = 0 ;i < 8;i++){ + char mj_propName[16] = "\0"; + char mj_propValue[12] = "\0"; + //mj_propValue=(char*)malloc(256*sizeof(char)); + sprintf(mj_propName,"hx3_mjt%d",(i+1)); + + ITKCALL(AOM_lock(form_tags[0])); + ITKCALL(AOM_set_value_string(form_tags[0],mj_propName,mj_propValue)); + ITKCALL(AOM_save(form_tags[0])); + + //free(mj_propValue); + //mj_propValue =NULL; + + } + + + + char ** value_list =NULL; + if(count > 0){ + //ٿռ + value_list=(char**)malloc(count*sizeof(char*)); + for(int i=0;i%s \n",prop_value); + + + return 0 ; +} + + +int LP_set_prop( METHOD_message_t *msg, va_list args ) +{ + printf("-----------------------------------------\n"); + printf("----------жϿʼ-------------------\n"); + printf("-----------------------------------------\n"); + int ifail = ITK_ok ; + + //ȡԶ + tag_t prop_tag = va_arg( args, tag_t ); + + //ȡֵ + char * values = va_arg( args, char* ); + + char propContents[1024] = "\0"; + if(prop_tag!=NULLTAG ){ + char * propname = NULL; + char propOptionName[128] = "\0"; + strcpy(propContents,"\0"); + int isContents = 0; + //ȡ + PROP_ask_name(prop_tag,&propname); + sprintf(propOptionName,"LP_%s_Option",propname); + printf("ѡ[%s]\n",propOptionName); + vector pref_vec; + getPrefStrings(propOptionName,TC_preference_site, pref_vec); + strcat(propContents,"ֵ:"); + strcat(propContents,values); + strcat(propContents,",ֵ:\n"); + for(int i = 0 ;i vec; + if(prop_tag!=NULLTAG ){ + //char * name =NULL; + //ȡԶ + PROP_ask_owning_object(prop_tag,&obj_tag); + //ȡ汾 + AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&form_count,&form_tags); + if(form_count > 0){ + + // + for(int i = 0 ;i < 12;i++){ + char mj_propName[16] = "\0"; + char mj_propValue[12] = "\0"; + //mj_propValue=(char*)malloc(256*sizeof(char)); + //strcpy(mj_propValue,""); + sprintf(mj_propName,"hx3_jjt%d",(i+1)); + + ITKCALL(AOM_lock(form_tags[0])); + ITKCALL(AOM_set_value_string(form_tags[0],mj_propName,mj_propValue)); + ITKCALL(AOM_save(form_tags[0])); + + //free(mj_propValue); + //mj_propValue =NULL; + + } + + char ** value_list =NULL; + if(count > 0){ + //ٿռ + value_list=(char**)malloc(count*sizeof(char*)); + for(int i=0;i & line_vec){ + int count = 0 , ifail =ITK_ok; + tag_t *lineS = NULL,rev_tag =NULL_TAG; + ITKCALL(ifail = AOM_ask_value_tag(line_tag,"bl_line_object",&rev_tag)); + line_vec.push_back(rev_tag); + ITKCALL(ifail = BOM_line_ask_all_child_lines(line_tag,&count,&lineS)); + //е + for(int i = 0 ;i < count;i++){ + getAllBomline(lineS[i],line_vec); + } + //Դͷ + if(lineS!=NULL){ + MEM_free(lineS); + lineS =NULL; + } +} + +/**************************************** +* +* ȡͬBOMƥϵ +* +*****************************************/ +void getBomClassInfo(vector & class_define_vec){ + vector pref_vec; + getPrefStrings("HXsortmapping",TC_preference_site, pref_vec); + for(int i = 0;i < pref_vec.size();i++){ + vector vec_1 ; + Split(pref_vec[i],"/",vec_1); + if(vec_1.size() != 2){ + continue; + } + vector vec_2; + Split(vec_1[0],"&",vec_2); + if(vec_2.size() != 3){ + continue; + } + CLASS_DEFINE_STRUCT class_struct; + class_struct.id.assign(vec_2[0]); + class_struct.class_dis_name.assign(vec_2[1]); + class_struct.class_rel_name.assign(vec_2[2]); + + vector vec_3; + Split(vec_1[1],"|",vec_3); + for(int j = 0 ;j < vec_3.size();j++){ + vector vec_4; + Split(vec_3[j],":",vec_4); + if(vec_4.size()!=4){ + continue; + } + //TODO + ATTR_NODE attr_node; + attr_node.p_attr_id.assign(vec_4[0]); + attr_node.c_class_name.assign(vec_4[1]); + attr_node.c_class_id.assign(vec_4[2]); + attr_node.c_attr_id.assign(vec_4[3]); + // + class_struct.attr_node_vec.push_back(attr_node); + } + class_define_vec.push_back(class_struct); + } +} +/*************************************** +* +* ȡidͷƵƥϵ +* +*****************************************/ +void getNameIDMapping(map & name_id_mapping){ + vector pref_vec; + getPrefStrings("HXpartname_IDmapping",TC_preference_site, pref_vec); + for(int i = 0;i < pref_vec.size();i++){ + vector name_id; + Split(pref_vec[i],":",name_id); + if(name_id.size()==2){ + name_id_mapping.insert(pair(name_id[0],name_id[1])); + } + } +} + +int HX3_bom_save(METHOD_message_t* msg, va_list args){ + printf("\n========================================================\n"); + printf("뱣\n"); + printf("========================================================\n"); + double value=0.00; + int ifail = ITK_ok; + tag_t window_tag = NULL_TAG,top_line =NULL_TAG,top_rev_tag =NULL_TAG, top_classificationObject = NULL_TAG,top_class_tag=NULL_TAG; + char * top_rev_item_id =NULL ,* top_class_id = NULL,* top_class_name = NULL; + int classNameCount = 0; + vector child_rev_vec ; + vector class_define_vec; + map name_id_mapping; + //ȡѡѡ + getBomClassInfo(class_define_vec); + getNameIDMapping(name_id_mapping); + + //ȡbomwindow + window_tag = va_arg(args,tag_t ); + if(window_tag ==NULL_TAG) + { + return ITK_ok; + } + ITKCALL(ifail = BOM_ask_window_top_line(window_tag,&top_line)); + if(top_line == NULL_TAG) + { + return ITK_ok; + } + ITKCALL(ifail = AOM_ask_value_tag(top_line,"bl_line_object",&top_rev_tag)); + if(top_rev_tag == NULL_TAG) + { + return ITK_ok; + } + if(!(checkIsTypeOrSubtype(top_rev_tag,"HX3_ZPTRevision") || checkIsTypeOrSubtype(top_rev_tag,"HX3_LJTRevision"))) + { + printf("Ͳƥ HX3_ZPTRevision HX3_LJTRevision\n "); + return ITK_ok; + } + + //ȡITEM_IDжǷԡFDFCͷ + char id_temp[8] = "\0"; + ITKCALL(ifail = AOM_ask_value_string(top_rev_tag,"item_id",&top_rev_item_id)); + if(top_rev_item_id!=NULL) + { + sprintf(id_temp,"%c%c",top_rev_item_id[0],top_rev_item_id[1]); + if(!(strcmp(id_temp,"FD")==0 || strcmp(id_temp,"FC")==0)) + { + printf("ID ƥ FD FC \n "); + MEM_free(top_rev_item_id); + top_rev_item_id =NULL; + return ITK_ok; + } + MEM_free(top_rev_item_id); + top_rev_item_id =NULL; + } + //ȡ REVISION Ӧķ + ICS_ask_classification_object(top_rev_tag,&top_classificationObject); + if(top_classificationObject == NULL_TAG) + { + printf("ûз͵\n"); + return 0; + } + + ICS_ask_class_of_classification_obj(top_classificationObject,&top_class_tag); + ICS_ask_id_name(top_class_tag,&top_class_id,&top_class_name); + + printf("BOM TOP LINE CLASS ID = %s | NAME = %s \n",top_class_id,top_class_name); + //ȡеӶӦİ汾 + getAllBomline(top_line,child_rev_vec); + + //ȡ + + for(int j = 0 ;j < class_define_vec.size();j++) + { + if(!(strcmp(id_temp,class_define_vec[j].id.c_str())==0 + && strcmp(class_define_vec[j].class_dis_name.c_str(),top_class_name)==0 + && strcmp(class_define_vec[j].class_rel_name.c_str(),top_class_id)==0)) + { + continue; + } + vector attr_node_vec = class_define_vec[j].attr_node_vec; + //ȡ汾ķ + for(int w = 1;w < child_rev_vec.size();w++) + { + // + int child_rev_class_names_count = 0,child_attr_count = 0; + char * child_rev_class_name =NULL,*child_rev_class_id =NULL,**child_attr_names =NULL,**child_attr_values =NULL; + tag_t child_classfication_tag = NULL_TAG, child_class_tag = NULL_TAG,*child_attr_list = NULL; + //ȡӵķϢ + ICS_ask_classification_object(child_rev_vec[w],&child_classfication_tag); + if(child_classfication_tag == NULL_TAG) + { + continue; + } + ICS_ask_class_of_classification_obj(child_classfication_tag,&child_class_tag); + ICS_ask_id_name(child_class_tag,&child_rev_class_id,&child_rev_class_name); + //ICS_ask_attributes(child_class_tag,&child_attr_count,&child_attr_list); + ICS_ask_attributes_of_classification_obj(child_classfication_tag,&child_attr_count,&child_attr_names,&child_attr_values); + //ѭ + for(int w_1 = 0;w_1 < attr_node_vec.size();w_1++) + { + if(!(strcmp(attr_node_vec[w_1].c_class_id.c_str(),child_rev_class_id)==0 + &&strcmp(attr_node_vec[w_1].c_class_name.c_str(),child_rev_class_name)==0 )) + { + continue; + } + for(int w_2 = 0 ;w_2 < child_attr_count;w_2++){ + printf("attr[%d] name = %s | value =%s \n",w_2,child_attr_names[w_2],child_attr_values[w_2]); + + } + + } + if(child_attr_names !=NULL) + { + for(int i = 0;i < child_attr_count;i++){ + MEM_free(child_attr_names[i]); + child_attr_names[i] =NULL; + } + MEM_free(child_attr_names); + child_attr_names =NULL; + } + + if(child_attr_values !=NULL) + { + for(int i = 0;i < child_attr_count;i++){ + MEM_free(child_attr_values[i]); + child_attr_values[i] =NULL; + } + MEM_free(child_attr_values); + child_attr_values =NULL; + } + + if(child_attr_list == NULL) + { + MEM_free(child_attr_list); + child_attr_list =NULL; + } + if(child_rev_class_id!=NULL) + { + MEM_free(child_rev_class_id); + child_rev_class_id =NULL; + } + if(child_rev_class_name!=NULL) + { + MEM_free(child_rev_class_name); + child_rev_class_name =NULL; + } + } + } + + //ͷԴ + FREE_ALL: + if(top_class_id!=NULL){ + MEM_free(top_class_id); + top_class_id =NULL; + } + if(top_class_name!=NULL){ + MEM_free(top_class_name); + top_class_name =NULL; + } + + printf("========================================================\n"); + printf("\n"); + printf("========================================================\n"); + + return 0; +} + + +int HX3_mod_date(METHOD_message_t* msg, va_list args){ + printf("========================================================\n"); + printf("HX3_mod_date\n"); + printf("========================================================\n"); + double value=0.00; + int ifail = ITK_ok; + + tag_t prop_tag = NULL_TAG; + logical isNew = NULL; + + + + printf("========================================================\n"); + printf("HX3_mod_date\n"); + printf("========================================================\n"); + + return 0; +} + + + + +/************************************************ +* +* ԲΪ +* -attachement = target reference ȡĿ +* -includeType = ItemRevision,HX3_WLRevision ĿµĶ +* -relation = IMAN_master_form_rev,IMAN_specification µĹϵ +* -targetType = ItemRevisionMastreForm,Form ȡԵĶ +* -properties = hx3_gy,hx3_wl Ҫȡ +* +*************************************************/ +int HX3_check_prop_is_not_empty(EPM_rule_message_t msg) +{ + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0"; + string attachement,includeType,relation,targetType,properties; + vector includeTypeVec,relationVec,targetTypeVec,propertiesVec; + + EPM_decision_t decision = EPM_go; + task_tag = msg.task; + if(task_tag == NULLTAG) + { + return EPM_nogo; + } + //ò + arg_cnt = TC_number_of_arguments(msg.arguments); + for (i=0;i errMap; + vector status_vec; + //map zuhaoMap; + EPM_decision_t decision = EPM_go; + logical debug = true; + ECHO("*************************************************************\n"); + ECHO("* HZ_Check_BOM_Condition is comming ! *\n"); + ECHO("*************************************************************\n"); + task_tag = msg.task; + if(task_tag == NULLTAG) + { + ifail = ITK_ok; + //goto end_handler; + return EPM_nogo; + } + tag_t rootTask = NULLTAG; + status_vec.clear(); + status_vec.push_back("working"); + status_vec.push_back("H9_M0"); + status_vec.push_back("H9_M1"); + status_vec.push_back("H9_M2"); + status_vec.push_back("H9_P"); + status_vec.push_back("H9_M3"); + status_vec.push_back("H9_B"); + status_vec.push_back("H9_D"); + status_vec.push_back("H9_Released"); + + //ò + arg_cnt = TC_number_of_arguments(msg.arguments); + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + return EPM_nogo; + } + + ifail = CFM_find(arg_rev_rule, &rev_rule_tag ); + + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + + ITKCALL(AOM_ask_owner(rootTask_tag, &user)); + + ITKCALL(SA_ask_user_identifier( user , userid)); + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + if( debug ) + ECHO("DEBUG: find %d target\n", att_cnt); + for( i = 0; i < att_cnt; i++ ) + { + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + if (((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && (strstr(type_class,"BOM") ==NULL) && (strstr(type_class,"bom") ==NULL) && (strstr(type_class,"Bom") == NULL)) + { + rev_tag = attachments[i]; + ITKCALL(ITEM_ask_item_of_rev(rev_tag, &item_tag)); + ITKCALL(ITEM_ask_id(item_tag, item_id)); + tag_t ebom_view = NULLTAG, ebom_bvr = NULLTAG, ebom_window = NULLTAG, ebom_line = NULLTAG, + dbom_view = NULLTAG,dbom_bvr = NULLTAG; + ifail = getBomView(rev_tag, BOM_VIEWTYPE, &ebom_view, &ebom_bvr, 1); + + if( ebom_view != NULLTAG ) + { + ITKCALL( BOM_create_window( &ebom_window ) ); + if( rev_rule_tag != NULLTAG) + ITKCALL( BOM_set_window_config_rule(ebom_window, rev_rule_tag)); + ITKCALL( BOM_set_window_top_line_bvr( ebom_window, ebom_bvr, &ebom_line ) ); + CycleBOM(ebom_line,userid,arg_status,status_vec,errMap,debug); + ITKCALL(BOM_close_window(ebom_window)); + } + } + + } + DOFREE(attachments); + if( debug ) + ECHO("DEBUG: errMap.size is %d\n", errMap.size()); + if( errMap.size() > 0 ) + decision = EPM_nogo; + else + decision = EPM_go; + map::iterator err_it; + for( err_it = errMap.begin(); err_it != errMap.end(); err_it++ ) + { + ECHO("DEBUG: err_it is %s\n", err_it->first.c_str()); + EMH_store_error_s1(EMH_severity_information,err_it->second, err_it->first.c_str()); + } + errMap.clear(); + ECHO("\n************************************************************\n"); + ECHO("* HZ_Check_BOM_Condition is end! *\n"); + ECHO("*************************************************************\n"); + */ + return decision; +} \ No newline at end of file diff --git a/jf_itk/hx_custom.h b/jf_itk/hx_custom.h new file mode 100644 index 0000000..f94d50b --- /dev/null +++ b/jf_itk/hx_custom.h @@ -0,0 +1,55 @@ +#include "erp_utils.h" +#include "ocilib.h" +#include "common_itk_util.h" +#include "string_utils.h" +#include "string_helper.h" +#include "error_handling.h" +#include "connor_util.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + + +#define ERROR_QRY_NOT_FOUND (EMH_USER_error_base + 120) +extern "C" int POM_AM__set_application_bypass(logical bypass); +int HX3_create_item_post(METHOD_message_t* msg , va_list va); +int HX3_post_prop_set_MJ( METHOD_message_t *msg, va_list args ); +int HX3_post_prop_set_JJ( METHOD_message_t *msg, va_list args ); +int HX3_regist_runtime_prop(METHOD_message_t* msg, va_list args); +int HX3_bom_save(METHOD_message_t* msg, va_list args); +int HX3_mod_date(METHOD_message_t* msg, va_list args); +int HX3_check_prop_is_not_empty(EPM_rule_message_t msg); +int Test_set_string( METHOD_message_t *msg, va_list args ); +int LP_set_prop( METHOD_message_t *msg, va_list args ); + +typedef struct +{ + + string p_attr_id; + string c_class_name; + string c_class_id; + string c_attr_id; + +} ATTR_NODE; + +typedef struct +{ + + string id; + string class_dis_name; + string class_rel_name; + string id_dis_anme; + vector attr_node_vec; + +} CLASS_DEFINE_STRUCT; \ No newline at end of file diff --git a/jf_itk/hz_custom.cpp b/jf_itk/hz_custom.cpp new file mode 100644 index 0000000..26078c0 --- /dev/null +++ b/jf_itk/hz_custom.cpp @@ -0,0 +1,352 @@ + +#include"hz_custom.h" + +/** +* +* Ŀ鵵 +* +*/ +int hz_auto_revison_to_folder(EPM_action_message_t msg) +{ + POM_AM__set_application_bypass(true); + int ifail = ITK_ok,att_cnt =0 ,i = 0; + tag_t task_tag = NULL_TAG,rootTask_tag=NULL_TAG,type_tag =NULL_TAG,proj_folder_tag= NULL_TAG; + tag_t * attachments = NULL; + char type_class[TCTYPE_class_name_size_c+1] = "\0"; + vector pref_vec; + + getPrefStrings("Connor_ProjectFolderUidOption",TC_preference_site, pref_vec); + if(pref_vec.size()>0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&proj_folder_tag); + + } + if(proj_folder_tag ==NULL){ + ifail = 2; + } + task_tag = msg.task; + if(task_tag == NULLTAG) + { + POM_AM__set_application_bypass(false); + return ITK_ok; + } + EPM_ask_root_task(task_tag, &rootTask_tag); + EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + for( i = 0; i < att_cnt; i++ ) + { + TCTYPE_ask_object_type(attachments[i], &type_tag); + TCTYPE_ask_class_name(type_tag, type_class); + ECHO("type_class : %s\n",type_class); + //˵ǰ汾 + if (((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && (strstr(type_class,"BOM") ==NULL) && (strstr(type_class,"bom") ==NULL) && (strstr(type_class,"Bom") == NULL)) + { + char * h9_DocProject =NULL; + char * h9_DocLevel2 = NULL; + char * h9_DocLevel3 = NULL; + char * name = NULL; + int mycount = 0,mycount2 = 0,mycount3 = 0,j =0,k = 0,w = 0; + tag_t *folder_tags = NULL,*folder_tags2 = NULL,*folder_tags3 = NULL; + AOM_UIF_ask_value(attachments[i],"h9_DocProject",&h9_DocProject); + AOM_UIF_ask_value(attachments[i],"h9_DocLevel2",&h9_DocLevel2); + AOM_UIF_ask_value(attachments[i],"h9_DocLevel3",&h9_DocLevel3); + AOM_ask_value_tags(proj_folder_tag,"contents",&mycount,&folder_tags); + + for(j = 0;j< mycount;j++){ + AOM_ask_value_string(folder_tags[j],"object_name",&name); + if(strcmp(h9_DocProject,name)==0){ + if(name!=NULL){ + MEM_free(name); + name = NULL; + } + AOM_ask_value_tags(folder_tags[j],"contents",&mycount2,&folder_tags2); + for(k = 0;k < mycount2;k++){ + AOM_ask_value_string(folder_tags2[k],"object_name",&name); + if(strcmp(name,h9_DocLevel2)==0){ + if(name!=NULL){ + MEM_free(name); + name = NULL; + } + AOM_ask_value_tags(folder_tags2[k],"contents",&mycount3,&folder_tags3); + for(w = 0 ;w < mycount3;w++){ + AOM_ask_value_string(folder_tags3[w],"object_name",&name); + if(strcmp(name,h9_DocLevel3)==0){ + FL_insert(folder_tags3[w],attachments[i],999); + // + AOM_save(folder_tags3[w]); + break; + } + + if(name!=NULL){ + MEM_free(name); + name = NULL; + } + + } + + break; + } + + if(name!=NULL){ + MEM_free(name); + name = NULL; + } + } + if(folder_tags2!=NULL){ + MEM_free(folder_tags2); + folder_tags2 =NULL; + } + break; + } + if(name!=NULL){ + MEM_free(name); + name = NULL; + } + + } + + if(h9_DocProject!=NULL){ + MEM_free(h9_DocProject); + h9_DocProject =NULL; + } + if(h9_DocLevel2!=NULL){ + MEM_free(h9_DocLevel2); + h9_DocLevel2 =NULL; + } + if(h9_DocLevel3!=NULL){ + MEM_free(h9_DocLevel3); + h9_DocLevel3 =NULL; + } + if(folder_tags!=NULL){ + MEM_free(folder_tags); + folder_tags =NULL; + } + + if(folder_tags3!=NULL){ + MEM_free(folder_tags3); + folder_tags3 =NULL; + } + + } + } + + if(attachments!=NULL){ + MEM_free(attachments); + attachments =NULL; + } + if(ifail == ITK_ok){ + EMH_clear_errors(); + } + POM_AM__set_application_bypass(false); + return 0; +} +/** +* +* +*/ +int hz_status_check(EPM_rule_message_t msg) +{ + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,att_cnt =0 ,i = 0,j = 0,arg_cnt = 0; + tag_t task_tag = NULL_TAG,rootTask_tag=NULL_TAG,type_tag =NULL_TAG,proj_folder_tag= NULL_TAG,relation_type; + tag_t * attachments = NULL; + char type_class[TCTYPE_class_name_size_c+1] = "\0"; + char * argflag = NULL,*argvalue =NULL,*arg = NULL; + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]=""; + + vector include_type_v; + vector secondary_type_v; + vector allowed_status_v; + + map errMap; + map::iterator err_it; + + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //θ + else if(stricmp(argflag, "secondary_type") == 0) + { + if(argvalue != NULL) + { + strcpy(arg2value,argvalue); + } + else{ + + string key_id; + key_id.assign("ȱsecondary_type"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //αļе + else if(stricmp(argflag,"relation") == 0) + { + if(argvalue != NULL) + { + strcpy(arg3value,argvalue); + }else{ + + string key_id; + key_id.assign("ȱrelation"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //״̬ + else if(stricmp(argflag,"allowed_status") == 0) + { + if(argvalue != NULL) + { + strcpy(arg4value,argvalue); + }else{ + + string key_id; + key_id.assign("ȱallowed_status"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + if(errMap.size() !=0){ + for( err_it = errMap.begin(); err_it != errMap.end(); err_it++ ) + { + ECHO("DEBUG: err_it is %s\n", err_it->first.c_str()); + EMH_store_error_s1(EMH_severity_information,err_it->second, err_it->first.c_str()); + } + errMap.clear(); + return EPM_nogo; + } + + ECHO("include_type : %s\n",arg1value); + ECHO("secondary_type : %s\n",arg2value); + ECHO("relation : %s\n",arg3value); + ECHO("allowed_status : %s \n",arg4value); + + + Split(arg1value,",",include_type_v); + Split(arg2value,",",secondary_type_v); + Split(arg4value,",",allowed_status_v); + + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &rootTask_tag); + EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + for( i = 0; i < att_cnt; i++ ) + { + TCTYPE_ask_object_type(attachments[i], &type_tag); + TCTYPE_ask_class_name(type_tag, type_class); + ECHO("include_type : %s\n",type_class); + //жǷõ + if(isInVec(type_class,include_type_v)){ + GRM_find_relation_type(arg3value, &relation_type); + int second_tags_count = 0 ; + tag_t * second_tags =NULL; + GRM_list_secondary_objects_only(attachments[i],relation_type,&second_tags_count,&second_tags); + + for(j = 0;j < second_tags_count;j++){ + TCTYPE_ask_object_type(second_tags[j], &type_tag); + TCTYPE_ask_class_name(type_tag, type_class); + ECHO("secondary_type : %s\n",type_class); + //жǷ + if(isInVec(type_class,secondary_type_v)){ + int status_count = 0; + tag_t * status_tag_list = NULL;; + WSOM_ask_release_status_list(second_tags[j],&status_count,&status_tag_list); + char status_type[WSO_name_size_c+1] = ""; + + char * object_string =NULL; + AOM_ask_value_string(second_tags[j],"object_string",&object_string); + + if(status_count == 0){ + string errMsg; + errMsg.assign(object_string).append("㷢״̬!"); + errMap.insert(pair(errMsg,HANDLER_ARGUMENT_ERROR)); + decision = EPM_nogo; + } + + for(int w = 0; w < status_count ;w++){ + ITKCALL(CR_ask_release_status_type(status_tag_list[w],status_type)); + + if(!isInVec(status_type,allowed_status_v)){ + //char * object_string =NULL; + //AOM_ask_value_string(second_tags[j],"object_string",&object_string); + string errMsg; + errMsg.assign(object_string).append("㷢״̬!"); + errMap.insert(pair(errMsg,HANDLER_ARGUMENT_ERROR)); + decision = EPM_nogo; + //if(object_string!=NULL){ + // MEM_free(object_string); + // object_string =NULL; + //} + } + + } + if(object_string!=NULL){ + MEM_free(object_string); + object_string =NULL; + } + if(status_tag_list!=NULL){ + MEM_free(status_tag_list); + status_tag_list =NULL; + } + } + } + + if(second_tags!=NULL){ + MEM_free(second_tags); + second_tags = NULL; + } + } + } + + for( err_it = errMap.begin(); err_it != errMap.end(); err_it++ ) + { + ECHO("DEBUG: err_it is %s\n", err_it->first.c_str()); + EMH_store_error_s1(EMH_severity_information,err_it->second, err_it->first.c_str()); + } + errMap.clear(); + + return decision; +} + + +logical isInVec(char *type, vector &type_vec) +{ + int i = 0; + logical isInclude = false; + for( i = 0; i < type_vec.size(); i++ ) + { + if( type_vec[i].compare(type) ==0 ) + { + isInclude = true; + break; + } + } + return isInclude; +} \ No newline at end of file diff --git a/jf_itk/hz_custom.h b/jf_itk/hz_custom.h new file mode 100644 index 0000000..bebe42a --- /dev/null +++ b/jf_itk/hz_custom.h @@ -0,0 +1,14 @@ +#include "erp_utils.h" +#include "ocilib.h" +#include "common_itk_util.h" +#include "string_utils.h" +#include "string_helper.h" +#include "error_handling.h" +#include +#include +#include + +extern "C" int POM_AM__set_application_bypass(logical bypass); +int hz_auto_revison_to_folder(EPM_action_message_t msg); +int hz_status_check(EPM_rule_message_t msg); +logical isInVec(char *type, vector &type_vec); \ No newline at end of file diff --git a/jf_itk/jf_itk.vcxproj b/jf_itk/jf_itk.vcxproj new file mode 100644 index 0000000..662db3c --- /dev/null +++ b/jf_itk/jf_itk.vcxproj @@ -0,0 +1,291 @@ + + + + + Debug + Itanium + + + Debug + Win32 + + + Debug + x64 + + + Release + Itanium + + + Release + Win32 + + + Release + x64 + + + + {AEABC483-FCBD-45F5-9884-8FA4C5A9892D} + Win32Proj + jf_itk + JK_itk + + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + true + Unicode + + + Application + false + true + Unicode + + + DynamicLibrary + false + true + Unicode + Static + v110 + + + DynamicLibrary + false + true + Unicode + Static + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + true + + + false + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;IPLIB=none;%(PreprocessorDefinitions) + C:\TEAMCENTER\tc\include;C:\TEAMCENTER\Oracle\product\11.2.0\dbhome_1\OCI\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + $(OutDir)JK_itk.dll + C:\TEAMCENTER\tc\lib\*.lib;%(AdditionalDependencies) + libuser_exits.ar.lib + C:\TEAMCENTER\Oracle\product\11.2.0\dbhome_1\OCI\lib\MSVC + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;IPLIB=none;%(PreprocessorDefinitions) + F:\Teamcenter10.1.0Env\tcbin\include;F:\Teamcenter10.1.0Env\OCI\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + $(OutDir)libjf.dll + F:\Teamcenter10.1.0Env\tcbin\lib\*.lib;%(AdditionalDependencies) + libuser_exits.ar.lib + D:\Work\CONNOR\继峰\CODE\OCI\lib\MSVC;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jf_itk/jf_itk.vcxproj.filters b/jf_itk/jf_itk.vcxproj.filters new file mode 100644 index 0000000..66786c6 --- /dev/null +++ b/jf_itk/jf_itk.vcxproj.filters @@ -0,0 +1,238 @@ + + + + + {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 + + + {70889105-2766-48cd-955a-f8fa1cab7cc6} + + + {2028f5f0-6bdd-4da5-8bc2-e680c333bf79} + + + {4e155a8b-5ae9-449f-bb95-aa3a2b2dd9f6} + + + + + common + + + epm-handler + + + common + + + common + + + epm-handler + + + epm-handler + + + common + + + common + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + common + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + + + epm-handler + + + epm-handler + + + common + + + common + + + common + + + common + + + epm-handler + + + common + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + epm-handler + + + common + + + epm-handler + + + epm-handler + + + + + epm-handler + + + + + epm-handler + + + \ No newline at end of file diff --git a/jf_itk/jk_AutoSign.cpp b/jf_itk/jk_AutoSign.cpp new file mode 100644 index 0000000..f4d073e --- /dev/null +++ b/jf_itk/jk_AutoSign.cpp @@ -0,0 +1,276 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX_PATH_LENGTH 2000 +/****************************************************** +* @headerfile standard c & cpp header files +********************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "epm_handler_common.h" +#include "error_handling.h" +#include "common_itk_util.h" +#include "string_helper.h" +#include "ocilib.h" +#include "erp_utils.h" +using namespace std; + +FILE* jklogFile = NULL; + +void jk2_CreateLogFile(char* FunctionName) +{ + 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); + + jklogFile = 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("TC_USER_LOG_DIR")); + 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("TEMP")); + 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); + + //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 + jklogFile = fopen(logFileName, "w"); + +CLEANUP: + //DOFREE(date_string); + DOFREE(session_uid); +} +int jk_AutoSign_Handler(EPM_action_message_t msg){ + int ifail = ITK_ok,arg_cnt=0,i=0; + tag_t root_task =NULLTAG; + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]=""; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + char *rootTaskUid = NULL; + char sql[4000] ="\0"; + char ** sqlArgs =NULL ; +// char tc_log_file_name[128]="\0"; //־ļ· + int sqlArgsCount = 9; + + vector pref_vec ; + + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); +// sprintf(tc_log_file_name, "%s\\tx_AutoSign_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); +// printf("tc_log_file_name=%s\n",tc_log_file_name); +// tx_CreateLogFile(tc_log_file_name); + + //TODO ѡ + getPrefStrings("jk_AutoSign_DB_Configer",TC_preference_site, pref_vec); + if(pref_vec.size() < 3){ +// WriteLog("ERROR:ûлȡѡ[AutoSign_DB_Configer]\n"); +// CloseLog(); + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1){ +// WriteLog("ERROR:ORACLEݿ¼ʧ\n"); +// CloseLog(); + return ifail; + } + cout<<"1-------------------------"< 0) + { + cout<<"3-------------------------"< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tchar.h" +#include +#include "tc_log.h" +#include +#include "erp_utils.h" +using namespace libxl; +extern "C" int POM_AM__set_application_bypass(logical bypass); +string ws2s(const std::wstring& wstr) +{ + + if (wstr.empty()||wstr.length()==0) return std::string(); + int size_needed = WideCharToMultiByte(CP_ACP, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); + std::string strTo(size_needed, 0); + WideCharToMultiByte(CP_ACP, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); + return strTo; +} + + static wstring Str2Wstr (string str ) +{ + if (str.length() == 0) + return L""; + + std::wstring wstr; + wstr.assign (str.begin(), str.end()); + return wstr; +} +// char *תΪTCHAR *WCHAR * +TCHAR convertTemp1[256] = {0}; +TCHAR convertTemp2[256] = {0}; +bool convertBufferSwitch(false); +TCHAR* CharToTchar(const char* str, int len) +{ + #ifdef _UNICODE + TCHAR* temp = convertBufferSwitch ? convertTemp1 : convertTemp2; + convertBufferSwitch = !convertBufferSwitch; + memset(temp, 0, sizeof(convertTemp1)); + MultiByteToWideChar(CP_UTF8, 0, str, len, temp, 256); + return temp; + #else + return str; + #endif +} +/*charתtchar,ּڽ⣬תĵһ룬Dz*/ +TCHAR* chineseChar(const char* sText) +{ + //char *СֽΪλһռֽ + int charLen = strlen(sText); + //ַֽĴСַ㡣 + int len = MultiByteToWideChar(CP_ACP,0,sText,charLen,NULL,0); + //Ϊַֽռ䣬СΪֽڼĶַֽС + TCHAR *buf = new TCHAR[len + 1]; + //ֽڱתɿֽڱ +// MultiByteToWideChar(CP_ACP,0,sText,charLen,buf,len); + MultiByteToWideChar(CP_ACP,0,sText,-1,buf,len+1); +// buf[len] = '\0'; //ַβעⲻlen+1 + buf[len+1] = '\0'; + buf[0]='\0'; + //ɾ + delete []buf; + return buf; +} + +TCHAR* chineseChar2(const char* sText) +{ + int len = MultiByteToWideChar(CP_UTF8, 0, sText, -1, NULL, 0); + TCHAR *buf = (TCHAR *)malloc(len); + MultiByteToWideChar(CP_UTF8, 0, sText, -1, buf, len); + //ɾ +// delete []buf; + return buf; +} + + void get_current_date_and_time(char *date_time) +{ + time_t the_time; + struct tm *time_ptr; + char *time_format = "%Y%m%d-%H%M%S"; + + the_time = time((time_t *)0); + time_ptr = localtime (&the_time); + strftime(date_time, 128, time_format, time_ptr); +} + +typedef struct{ + string ITEM_ID_VIRTUAL;//id + string VIRTUAL_SPEC;//Ĺͺ + string VIRTUAL_TECH;//ļͺ + string ITEM_ID_ACTUAL;//ʵid + string ACTUAL_SPEC;//ʵͺ +// string ACTUAL_TECH;//ʵͺ +}PROPERTY_STRUCT; +//ж͵ϣµʵ°汾Ϣд뵽һñУñеİ汾Ϣµ +int jk_add_actual(EPM_action_message_t msg) +{ + cout<<"ʵĶϵд"< vec; + char * object_TYPE_1 = NULL; + char * object_string1=NULL; + string value_type = ""; + string value_property=""; + char * ref_type=NULL; + int actualNum=0; + tag_t *actualtags=NULL; + string errorMessage=""; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + int reference_count=0;tag_t * reference_attachment=NULLTAG; + ifail = EPM_ask_attachments(rootTask_tag, EPM_reference_attachment, &reference_count, &reference_attachment); + /*tag_t classObj,attribute_tag; + ICS_ask_classification_object(task_tag,&classObj); + ITKCALL(ifail=ICS_ask_attribute(classObj,"Ʒʶ",&attribute_tag)); + char *classValue=NULL; + if(ifail==0) + { + ICS_ask_attribute_value(classObj,"Ʒʶ",&classValue); + }*/ + + + + boolean warn=false; + boolean ctn=false; + //ѭĿ + //·汾ʵ汾ļid + for (i = 0; i < att_cnt; i++) { + ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1);// + cout << object_TYPE_1; + cout << endl; + ctn=false; + if(strcmp("JK8VirtlMaterialRevision",object_TYPE_1)==0)//汾ͣͼµʵϵĹϵûʵ϶󣬲Ҷзİ汾 + { + int formCount=0; + tag_t * formTags=NULLTAG; + AOM_ask_value_tags(attachments[i],"IMAN_master_form_rev",&formCount,&formTags); + char *virtualTechValue=NULL; + char *virtualSpecValue=NULL; + AOM_ask_value_string(formTags[0],"jk8SpecModel",&virtualSpecValue); + AOM_ask_value_string(formTags[0],"jk8TechModel",&virtualTechValue); + + cout<<"7----------------"<0) + { + cout<<"11----------------------------------"<0) + { + + ctn=true; + break; + } + cout<<"16----------------------------------"< vec2; + + tag_t excelTag; + vector pref_vec; + getPrefStrings("JK_VIRTUAL_PUID",TC_preference_site, pref_vec);//ԣT1exiQYYYvbLjA ʽ + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&excelTag); + if(excelTag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + + } + } + + +// ITK__convert_uid_to_tag("T1exiQYYYvbLjA",&excelTag); + Book* book = nullptr; + book = xlCreateBook();//xlsļxlCreateBook() 򿪣xlsxļxmlṹԵxlCreateXMLBook() 򿪡 + book->setKey(L"Halil Kural", L"windows-2723210a07c4e90162b26966a8jcdboe");//˸ÿ⣬Ӧkeyûй + int n_refs = 0; + tag_t* refs = NULL; + + ifail = AE_ask_all_dataset_named_refs(excelTag, "excel", &n_refs, &refs); + if (ifail != ITK_ok) { /* your error logic here */ } + + char current_date_time_str[128 + 1] = {"\0"}; + get_current_date_and_time(current_date_time_str); + string time_now=current_date_time_str; + time_now="E:\\TEMP\\"+time_now+".xls"; + cout<<"ļ·----------"<load(excel_path.str().c_str())) + { + cout<<"88888888"<getSheet(0);//õ1sheetҳ + int lastRow=sheet->lastRow(); + for(int i=1;ireadStr(i, 0));//id + string value1=ws2s(sheet->readStr(i, 1));//ͺ + string value2=ws2s(sheet->readStr(i, 2));//ͺ + string value3=ws2s(sheet->readStr(i, 3));//ʵͺ + string value4=ws2s(sheet->readStr(i, 4));//ʵID + cout<0||value1.length()>0||value2.length()>0||value3.length()>0||value4.length()>0) + { + PROPERTY_STRUCT one_elem2; + + + one_elem2.ITEM_ID_VIRTUAL=value0; + one_elem2.VIRTUAL_SPEC=value1; + one_elem2.VIRTUAL_TECH=value2; + one_elem2.ACTUAL_SPEC=value3; + one_elem2.ITEM_ID_ACTUAL=value4; + vec2.push_back(one_elem2); + + } + + } + + + + } + cout<<"1-----------------------"< vec3; + if(vec2.size()>0) + { + for (int i=0;iwriteStr(i+1, 0, array1); + + //ϼͺ + MultiByteToWideChar(CP_ACP, 0, vec3[i].VIRTUAL_TECH.c_str(), -1, array2, 100); + sheet->writeStr(i+1, 1,array2 ); + + //Ϲͺ + MultiByteToWideChar(CP_ACP, 0, vec3[i].VIRTUAL_SPEC.c_str(), -1, array2, 100); + sheet->writeStr(i+1, 2,array2 ); + + //ʵϹͺ + MultiByteToWideChar(CP_ACP, 0, vec3[i].ACTUAL_SPEC.c_str(), -1, array2, 100); + sheet->writeStr(i+1, 3,array2 ); + + array1 = CharToTchar(vec3[i].ITEM_ID_ACTUAL.c_str(),200); + sheet->writeStr(i+1, 4, array1); + } + +// if (book->save(L"C:\\TEMP\\export_text.xls"))//浽example.xls + if (book->save(excel_path.str().c_str()))//浽example.xls + { + //..... + } + else + { + std::cout << book->errorMessage() << std::endl; + } + book->release();//ͷŶ󣡣 + //TODO 滻ݼ,· + POM_AM__set_application_bypass(true); + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + AE_reference_type_t reference_type; + ITKCALL(AE_ask_dataset_latest_rev(excelTag, &spec_dataset_rev)); + char ref_name[WSO_name_size_c + 1] = "excel"; + ITKCALL(AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object)); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + ITKCALL(IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname)); + char origin_file_name[IMF_filename_size_c + 1] = ""; + ITKCALL(IMF_ask_original_file_name(ref_object, origin_file_name)); + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + ITKCALL(IMF_import_file(time_now.c_str(), NULL, SS_BINARY, &new_file_tag, &file_descriptor)); + ITKCALL(IMF_set_original_file_name(new_file_tag, origin_file_name)); + ITKCALL(IMF_close_file(file_descriptor)); + ITKCALL(AOM_save(new_file_tag)); + ITKCALL(AOM_unlock(new_file_tag)); + ITKCALL(AOM_lock(spec_dataset_rev)); + ITKCALL(AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, "excel", ref_object)); + ITKCALL(AE_add_dataset_named_ref(spec_dataset_rev, "excel", AE_PART_OF, new_file_tag)); + ITKCALL(AOM_save(spec_dataset_rev)); + ITKCALL(AOM_unlock(spec_dataset_rev)); + } + POM_AM__set_application_bypass(false); + + return 0; +} \ No newline at end of file diff --git a/jf_itk/jk_add_attatchments.cpp b/jf_itk/jk_add_attatchments.cpp new file mode 100644 index 0000000..9b3af2e --- /dev/null +++ b/jf_itk/jk_add_attatchments.cpp @@ -0,0 +1,192 @@ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) +#pragma warning (disable: 4995) + +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tchar.h" +#include +#include "common_itk_util.h" +using namespace libxl; +extern "C" int POM_AM__set_application_bypass(logical bypass); +int loop(tag_t top_bom_line_tag,map &rev_map) +{ + int ifail=0; + int child_count = 0; + tag_t * child_tags = NULL; + tag_t child_rev_tag=NULL; + char * child_item_id = NULL; + // date_t p;// + + ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag,&child_count,&child_tags)); + for(int x=0;x(child_rev_tag,"")); + //BOMͼҲӽ + int num=0; + tag_t *bomTags=NULLTAG; + AOM_ask_value_tags(child_rev_tag,"structure_revisions",&num,&bomTags); + if(num>0) + { + rev_map.insert(pair(bomTags[0],"")); + MEM_free(bomTags); + bomTags=NULL; + + } + + } + + } + loop(child_tag,rev_map); + } + if(child_tags!=NULL) + { + MEM_free(child_tags); + child_tags=NULL; + } + if(child_item_id!=NULL) + { + MEM_free(child_item_id); + child_item_id=NULL; + } + return 0; +} +int jk_add_attatchments(EPM_action_message_t msg) +{ + cout<<"ѳƷɵĻͿBOMͼ"< rev_map; + map bom_map; + string errorMessage=""; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + for(int i = 0; i < att_cnt; i++ ) + { + //ö͵ϵͳ + ITKCALL(TCTYPE_ask_object_type(attachments[i], &type_tag)); + ITKCALL(ifail = TCTYPE_ask_class_name(type_tag, type_class)); + ECHO("type_class : %s\n",type_class); + + //Ϊ汾bomΪʲôѰ汾ӵУ + if(((strstr(type_class,"Revision") == NULL) || (strstr(type_class,"revision") == NULL)) + &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) + && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))){ + bom_map.insert(pair(attachments[i],"")); + } + } + + //BOMṹ + map::iterator bom_it; + for( bom_it = bom_map.begin(); bom_it != bom_map.end(); bom_it++ ) + { + + tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,bom_it->first,&top_bom_line_tag)); + + if(top_bom_line_tag != NULLTAG){ + /*ITKCALL(ifail = AOM_ask_value_tag(top_bom_line_tag,"bl_line_object",&rev_tag)); + //жһ¶ûзûŵmap + AOM_ask_value_string(rev_tag,"item_id",&item_id); + string item_id_string=item_id; + if(item_id_string.length()==12) + { + rev_map.insert(pair(rev_tag,""));//Ѷŵ + }*/ + loop(top_bom_line_tag,rev_map); + } + ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ棬޸Ժbomͼᱣ + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + + + } + //mapеа汾뵽Ŀ + vector target_vec; + map::iterator rev_it; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + target_vec.push_back(rev_it->first); + } + int *att_types=NULL; + att_types = (int*) MEM_alloc (sizeof(int) * ( target_vec.size() )); + attachments = (tag_t*) MEM_alloc (sizeof(tag_t) * ( target_vec.size() )); + //ƶĿ꣬ת + for ( int indx = 0; indx < target_vec.size(); indx++ ) + { + att_types[indx] = EPM_target_attachment;//EPM_reference_attachment; + attachments[indx] = target_vec[indx]; + } + //еİ汾ӵ + printf("1ifail=>%d\n",ifail); + ITKCALL(ifail=EPM_add_attachments(rootTask_tag,target_vec.size(),attachments,att_types)); + if(att_types) + { + MEM_free(att_types); + att_types = NULL; + } + if(item_id!=NULL) + { + MEM_free(item_id); + item_id=NULL; + } + if(attachments!=NULL) + { + MEM_free(attachments); + attachments=NULL; + } + return 0; +} \ No newline at end of file diff --git a/jf_itk/jk_auto_create_process.cpp b/jf_itk/jk_auto_create_process.cpp new file mode 100644 index 0000000..4c67467 --- /dev/null +++ b/jf_itk/jk_auto_create_process.cpp @@ -0,0 +1,97 @@ +/*#include "tc_log.h" +#include "ocilib.h" +#include "string_utils.h" +//#include +//#include +#include +#include +#include +#include +using namespace std; + +extern "C" int POM_AM__set_application_bypass(logical bypass);*/ +#include +#include +#include +#include +#include +using namespace std; +extern "C" int POM_AM__set_application_bypass(logical bypass); +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} +int jk_auto_create_process(EPM_action_message_t msg) +{ + tag_t targetTag,new_process = NULLTAG;; + tag_t template_tag; + tag_t *attachments = NULL,user_tag; + attachments = (tag_t *) MEM_alloc(1); + ITK__convert_uid_to_tag("nbaxT1swYvbLjA",&targetTag); + attachments[0]=targetTag; + int* att_types = NULL; + att_types = (int*) MEM_alloc (1); + att_types[0] = EPM_target_attachment; + cout<<"ģ岢..."< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int jk_check_virtual(EPM_rule_message_t msg) +{ + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok, arg_cnt = 0, i = 0, att_cnt = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL; + char * object_TYPE_1 = NULL; + char * object_string1=NULL; + string value_type = ""; + string value_property=""; + char * ref_type=NULL; + int actualNum=0; + tag_t *actualtags=NULL; + string errorMessage=""; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + int reference_count=0;tag_t * reference_attachment=NULLTAG; + ifail = EPM_ask_attachments(rootTask_tag, EPM_reference_attachment, &reference_count, &reference_attachment); + boolean warn=false; + boolean ctn=false; + //ѭĿ + for (i = 0; i < att_cnt; i++) { + ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1);// + cout << object_TYPE_1; + cout << endl; + ctn=false; + if(strcmp("JK8VirtlMaterialRevision",object_TYPE_1)==0)//汾ͣͼµʵϵĹϵûʵ϶󣬲Ҷзİ汾 + { + ifail=AOM_ask_value_tags(attachments[i],"JK8InstanceMaterialRelation",&actualNum,&actualtags); + for (int j=0;j0) + { + + ctn=true; + break; + } + } + if(revisionTags!=NULL) + { + MEM_free(revisionTags); + revisionTags=NULL; + } + + } + if(object_TYPE_2!=NULL) + { + MEM_free(object_TYPE_2); + object_TYPE_2=NULL; + } + } + + if(actualtags!=NULL) + { + MEM_free(actualtags); + actualtags=NULL; + } + if(ctn==false) + { + warn=true; + ifail = AOM_ask_value_string(attachments[i], "object_string", &object_string1);// + errorMessage=errorMessage+object_string1; + if(object_string1!=NULL) + { + MEM_free(object_string1); + object_string1=NULL; + } + } + + } + if(object_TYPE_1!=NULL) + { + MEM_free(object_TYPE_1); + object_TYPE_1=NULL; + } + + } + + if(reference_attachment!=NULL) + { + MEM_free(reference_attachment); + reference_attachment=NULL; + } + + if(errorMessage.length()>0) + { + errorMessage="ûйʵϻʵûзİ汾\n"+errorMessage; + } + if(warn==true) + { + EMH_store_error_s1(EMH_severity_warning, EMH_AE_error_base, errorMessage.c_str()); + + return EPM_nogo; + }else + { + return EPM_go; + } +} \ No newline at end of file diff --git a/jf_itk/jk_custom.cpp b/jf_itk/jk_custom.cpp new file mode 100644 index 0000000..8e1ac44 --- /dev/null +++ b/jf_itk/jk_custom.cpp @@ -0,0 +1,2155 @@ +#include "jk_custom.h" +#include "tc_log.h" +#include + +typedef struct{ + string jk8ProductType;//Ʒ + string jk8ProductModNO;// Ʒͺ + string jk8ProductIdentifyNO;// ʶ + string jk8ProductName;// Ʒ + string jk8BaseMeterManufactor;// 5 + string jk8ICCardType;// ICͺ + string jk8CircBoardModNO;// ·ͺ + string jk8ProgramFeatures;// + string jk8InsteadType;// ͺ + string jk8FunctionOverview;// ܸ 10 + string jk8CustSpecRequirements;// ͻҪ + //string jk8U8NO;// U8 ȥ + string jk8Valve;// + string jk8EncryptType;// + string jk8Applicant;// + string jk8RecordDate;// Ǽ + string jk8ApplyMarket;// г + string jk8BMManfMatched;// ׻ + + string jk8ProjectName;//Ŀ + string jk8ProjectNO;//Ŀ 19 + + string jk8Status;// ״̬ //2018.6.4¼4 + string jk8ValveType;// + string jk8CommunicateMode;// ͨŷʽ + string jk8PowerSupplyMode;// 23 + + //2019.07.31 + string jk8GasType;// + string jk8AlaDectRelation;//ⲿֵĹϵ + string jk8UsePlace;//ʹó + string jk8OutputSignal;//ź + string jk8ProFeatNum;//Ʒ + + //2020-03-31 + string jk8Manufacturer;// + string jk8CommunicateMode2;//ͨŷʽ2 + +}JK_SUMMARY_STRUCT; + + +typedef struct{ + string jk8Companylogo;//˾ʶ + string jk8MeasureType;// ʽ + string jk8CommunicateMode;// ͨѶʽ + string jk8Application;// Ӧ÷Χ + string jk8PCBNO;// pcb 5 + string jk8Projectname;//Ŀ +}JK_SUMMARY_PCB_STRUCT; + + +extern "C" int POM_AM__set_application_bypass(logical bypass); +/** +* ȡչ +* +*/ +void JK_get_form_prop(tag_t form_tag,JK_SUMMARY_STRUCT &bean,char *form_type){ +// char * form_value[28]; +// int prop_count = 28; + //2020-03-31 + char * form_value[30]; + int prop_count = 30; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[13])) + }else{ + form_value[13] = (char *)MEM_alloc(sizeof(char)*128);// + } + form_value[14] = (char *)MEM_alloc(sizeof(char)*128);//Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[14], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + if(strcmp(form_type , "JK8CotlerPModAppForm")==0){//(Ʒͺ) + + for (int i = 0; i < prop_count; i++) + { + if((i!=4)&&(i!=9)&&1 &bean_vec,int * isOk){ +// int prop_count = 28; +// int count[28],sum_count =0; +// char ** form_value[28]; + // 20200331 + int prop_count = 30; + int count[30],sum_count =0; + char ** form_value[30]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + WriteLog_jk("ȡܱ%d\n",form_tag); + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductType",&count[0],&form_value[0]));//Ʒ + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[1],&form_value[1]));// Ʒͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[2],&form_value[2]));// ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[3],&form_value[3]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BaseMeterManufactor",&count[4],&form_value[4]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ICCardType",&count[5],&form_value[5]));// ICͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CircBoardModNO",&count[6],&form_value[6]));// ·ͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProgramFeatures",&count[7],&form_value[7]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8InsteadType",&count[8],&form_value[8]));// ͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8FunctionOverview",&count[9],&form_value[9]));// ܸ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CustSpecRequirements",&count[10],&form_value[10]));// ͻҪ + //ITKCALL(AOM_ask_value_string(attachments[i],"jk8U8NO",&form_value));// U8 ȥ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Valve",&count[11],&form_value[11]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8EncryptType",&count[12],&form_value[12]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[13],&form_value[13]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[14],&form_value[14]));// Ǽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ApplyMarket",&count[15],&form_value[15]));// г + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManfMatched",&count[16],&form_value[16]));// ׻ + + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[17],&form_value[17]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[18],&form_value[18]));// Ŀ + + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[19],&form_value[19]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ValveType",&count[20],&form_value[20]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[21],&form_value[21]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PowerSupplyMode",&count[22],&form_value[22]));// Ŀ + //2019.07.31 + ITKCALL(AOM_ask_value_strings(form_tag,"jk8GasType",&count[23],&form_value[23]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8AlaDectRelation",&count[24],&form_value[24]));// ⲿֵĹϵ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8UsePlace",&count[25],&form_value[25]));// ʹó + ITKCALL(AOM_ask_value_strings(form_tag,"jk8OutputSignal",&count[26],&form_value[26]));// ź + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProFeatNum",&count[27],&form_value[27]));// Ʒ + //2020-03-31 + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Manufacturer",&count[28],&form_value[28]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode2",&count[29],&form_value[29]));// ͨŷʽ2 + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + WriteLog_jk("ܱԲȷ=>\n"); + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + MEM_free(form_value[i]); + form_value[i] = NULL; + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} + +/** +* ûܱ +*/ +void JK_set_summary_form_prop(tag_t form_tag,vector bean_vec){ + WriteLog_jk("ʼûܱ\n"); + int i = 0,j=0 ; + int prop_count = 30; + char ** values[30]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_SUMMARY_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8ProductType.c_str()); + strcpy(values[1][i],bean.jk8ProductModNO.c_str());// Ʒͺ + strcpy(values[2][i],bean.jk8ProductIdentifyNO.c_str());// ʶ + strcpy(values[3][i],bean.jk8ProductName.c_str());// Ʒ + strcpy(values[4][i],bean.jk8BaseMeterManufactor.c_str());// 5 + strcpy(values[5][i],bean.jk8ICCardType.c_str());// ICͺ + strcpy(values[6][i],bean.jk8CircBoardModNO.c_str());// ·ͺ + strcpy(values[7][i],bean.jk8ProgramFeatures.c_str());// + strcpy(values[8][i],bean.jk8InsteadType.c_str());;// ͺ + strcpy(values[9][i],bean.jk8FunctionOverview.c_str());// ܸ 10 + strcpy(values[10][i],bean.jk8CustSpecRequirements.c_str());// ͻҪ + //bean.jk8U8NO.c_str());// U8 ȥ + strcpy(values[11][i],bean.jk8Valve.c_str());// + strcpy(values[12][i],bean.jk8EncryptType.c_str());// + strcpy(values[13][i],bean.jk8Applicant.c_str());// + strcpy(values[14][i],bean.jk8RecordDate.c_str());// Ǽ + strcpy(values[15][i],bean.jk8ApplyMarket.c_str());// г + strcpy(values[16][i],bean.jk8BMManfMatched.c_str());// ׻ + + strcpy(values[17][i],bean.jk8ProjectName.c_str());// Ŀ + strcpy(values[18][i],bean.jk8ProjectNO.c_str());// Ŀ + + strcpy(values[19][i],bean.jk8Status.c_str());// ״̬ + strcpy(values[20][i],bean.jk8ValveType.c_str());// + strcpy(values[21][i],bean.jk8CommunicateMode.c_str());// ͨŷʽ + strcpy(values[22][i],bean.jk8PowerSupplyMode.c_str());// + + strcpy(values[23][i],bean.jk8GasType.c_str());// + strcpy(values[24][i],bean.jk8UsePlace.c_str());// ʹó + strcpy(values[25][i],bean.jk8AlaDectRelation.c_str());// + strcpy(values[26][i],bean.jk8OutputSignal.c_str());// ź + strcpy(values[27][i],bean.jk8ProFeatNum.c_str());// Ʒ + + // 2020-03-31 + strcpy(values[28][i],bean.jk8Manufacturer.c_str());// + strcpy(values[29][i],bean.jk8CommunicateMode2.c_str());// ͨŷʽ2 + + } + } + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductType",bean_vec.size(),values[0]));//Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[1]));// Ʒͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[2]));// ʶ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[3]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8BaseMeterManufactor",bean_vec.size(),values[4]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8ICCardType",bean_vec.size(),values[5]));// ICͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8CircBoardModNO",bean_vec.size(),values[6]));// ·ͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProgramFeatures",bean_vec.size(),values[7]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8InsteadType",bean_vec.size(),values[8]));// ͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8FunctionOverview",bean_vec.size(),values[9]));// ܸ + ITKCALL(AOM_set_value_strings(form_tag,"jk8CustSpecRequirements",bean_vec.size(),values[10]));// ͻҪ + //ITKCALL(AOM_ask_value_string(attachments[i],"jk8U8NO",&form_value));// U8 ȥ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Valve",bean_vec.size(),values[11]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8EncryptType",bean_vec.size(),values[12]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[13]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[14]));// Ǽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ApplyMarket",bean_vec.size(),values[15]));// г + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManfMatched",bean_vec.size(),values[16]));// ׻ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[17]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[18]));// Ŀ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[19]));// ״̬ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ValveType",bean_vec.size(),values[20]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[21]));// ͨŷʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8PowerSupplyMode",bean_vec.size(),values[22]));// + + //2019.07.31 + ITKCALL(AOM_set_value_strings(form_tag,"jk8GasType",bean_vec.size(),values[23]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8UsePlace",bean_vec.size(),values[24]));// ʹó + ITKCALL(AOM_set_value_strings(form_tag,"jk8AlaDectRelation",bean_vec.size(),values[25]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8OutputSignal",bean_vec.size(),values[26]));// ź + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProFeatNum",bean_vec.size(),values[27]));// Ʒ + + // 2020-03-31 + ITKCALL(AOM_set_value_strings(form_tag,"jk8Manufacturer",bean_vec.size(),values[28]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode2",bean_vec.size(),values[29]));// ͨŷʽ2 + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_refresh(form_tag,false)); + ITKCALL(AOM_unlock(form_tag,0)); + WriteLog_jk("ݻܱ,\n"); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + /*for(i = 0 ;i tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "%s\\jk_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name); + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_SQB_FORM_PUID",TC_preference_site, pref_vec); + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + logical is_reserved; + POM_AM__set_application_bypass(true); + ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); + if (is_reserved) + { + WriteLog_jk("ܱǩ,ʼǩ\n"); + ITKCALL(RES_checkin(summary_form_tag)); + } + ITKCALL(AOM_lock(summary_form_tag)); + ITKCALL(AOM_refresh(summary_form_tag,false)); + POM_AM__set_application_bypass(false); + JK_get_summary_form_prop(summary_form_tag,bean_vec,&isOk); + if(isOk == 0){ + ITKCALL(AOM_unlock(summary_form_tag)); + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + WriteLog_jk("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + printf("ѡ[connor_custSummaryFormPUID]\n"); + WriteLog_jk("ѡ[connor_custSummaryFormPUID]\n"); + CloseLog_jk(); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8DerPIdenNOAppForm + * ͣJK8SpecPINOAppForm + * ͣJK8NewPIdenNOAppForm + * ͣJK8NPModINOAppForm + * ͣJK8ExtPIdenNOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + WriteLog_jk("ͣ%s \n",type_class); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8DerPIdenNOAppForm") ==0 //Ʒʶ + ||strcmp(type_class,"JK8SpecPINOAppForm") ==0 //ҪƷʶ + ||strcmp(type_class,"JK8NewPIdenNOAppForm") ==0 //²Ʒʶ + ||strcmp(type_class,"JK8ExtPIdenNOAppForm") ==0 //չƷʶ //2017.12.4 + ||strcmp(type_class,"JK8NPModINOAppForm") ==0//²Ʒͺʶ + ||strcmp(type_class,"JK8CotlerPModAppForm") ==0//Ʒͺ//2018.1.20 + ||strcmp(type_class,"JK8ColPIdenNOAppForm") ==0//ʶ//2018.6.4 + ||strcmp(type_class,"JK8ALPModAppForm") ==0//2019.07.31 Ʒͺ + //2020-03-31 + ||strcmp(type_class,"JK8WarnerNPModINOAppForm") ==0 // Ʒͺʶ + ||strcmp(type_class,"JK8WarnerNPINOAppForm") ==0 // Ʒʶ + ) + { + WriteLog_jk("ͷ,ʼִд \n"); + char *name_fo; + ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); + WriteLog_jk("ƣ%s \n",name_fo); + + char *sbhstr,*cpxhstr; + if(strcmp(type_class,"JK8CotlerPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + else if(strcmp(type_class,"JK8ALPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + + else{ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// ʶ + + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ʶΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + + JK_SUMMARY_STRUCT bean ; + //ȡű + JK_get_form_prop(attachments[i],bean,type_class); + cout<<"Իȡ"< bean_vec){ + int i = 0,j=0 ; + int prop_count = 6; + char ** values[6]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_SUMMARY_PCB_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8PCBNO.c_str());//pcb + strcpy(values[1][i],bean.jk8Companylogo.c_str());// ˾ʶ + strcpy(values[2][i],bean.jk8MeasureType.c_str());// ԭ + strcpy(values[3][i],bean.jk8CommunicateMode.c_str());// ͨѶʽ + strcpy(values[4][i],bean.jk8Application.c_str());// Ӧ÷Χ 5 + strcpy(values[5][i],bean.jk8Projectname.c_str()); + } + } + ITKCALL(AOM_lock(form_tag)); + ITKCALL(AOM_set_value_strings(form_tag,"jk8PCBNO",bean_vec.size(),values[0]));//pcb + ITKCALL(AOM_set_value_strings(form_tag,"jk8Companylogo",bean_vec.size(),values[1]));//˾ʶ + ITKCALL(AOM_set_value_strings(form_tag,"jk8MeasureType",bean_vec.size(),values[2]));// ԭ + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[3]));// ͨѶʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Application",bean_vec.size(),values[4]));// Ӧ÷Χ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Projectname",bean_vec.size(),values[5]));// Ӧ÷Χ + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_unlock(form_tag,0)); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + for(i = 0 ;i &bean_vec,int * isOk){ + int prop_count = 6; + int count[6],sum_count =0; + char ** form_value[6]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PCBNO",&count[0],&form_value[0]));//PCB + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Companylogo",&count[1],&form_value[1]));// ˾ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8MeasureType",&count[2],&form_value[2]));// ԭ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[3],&form_value[3]));// ͨѶʽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Application",&count[4],&form_value[4]));// Ӧ÷Χ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Projectname",&count[5],&form_value[5]));// Ŀ + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + if(form_value[i][j]!=NULL){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + } + if(form_value[i]!=NULL){ + MEM_free(form_value[i]); + form_value[i] = NULL; + } + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} + + +/** +* pcbܱ +*/ +int JK_summary_pcb_form(EPM_rule_message_t msg) +{ + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_PCBReg_uid",TC_preference_site, pref_vec); + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + JK_get_summary_pcb_form_prop(summary_form_tag,bean_vec,&isOk); + if(isOk == 0){ + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + }else{ + printf("ѡ[JK_PCBReg_uid]\n"); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8PCBNOAppForm + * ͣJK8SpecPINOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8PCBNOAppForm") ==0 //PCB + ||strcmp(type_class,"JK8DerPCBNOAppForm") ==0 )//PCB + { + char *sbhstr; + ITKCALL(AOM_ask_value_string(attachments[i],"jk8PCBNO",&sbhstr));// ʶ + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + return EPM_nogo; + } + JK_SUMMARY_PCB_STRUCT bean ; + //ȡű + JK_get_pcb_form_prop(attachments[i],bean,type_class); + bean_vec.push_back(bean); + } + + } + + POM_AM__set_application_bypass(true); + JK_set_summary_pcb_form_prop(summary_form_tag,bean_vec); + printf("------------ݻܱ2222-----------------"); + POM_AM__set_application_bypass(false); + + if(attachments!=NULL) + { + MEM_free(attachments); + attachments = NULL; + } + printf("------------ݻܱ-----------------"); + return decision; +} + + + + + + + + + + + + +/** +* +* ʼ +* +*/ +int JK_send_email(EPM_action_message_t msg){ + int ifail = 0, att_cnt = 0 ,i =0,compare=0; + tag_t task_tag =NULLTAG , rootTask_tag =NULLTAG , *attachments =NULL; + char wuliao[10240] = "\0", * itemName = NULL, * itemID = NULL ,* itemUser = NULL,*jk8SpecModel=NULL,*jk8TechModel=NULL; + //vector emailNameVec ; + printf( "\n ----------俪ʼ---------\n"); + //ȡõķ͵ + //getPrefStrings("JK_SendEmailName_Option",TC_preference_site,emailNameVec); + + //ò-SignName 1;2 + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="", + signcounter_info[1024] = "", *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + char emailName[1024] = ""; + char title[256] = ""; + + + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + POM_AM__set_application_bypass(true); + if (arg_cnt > 0) + { + for (i=0;i0){ + form_tag = formTagS[0]; + printf("--------------------------------------\n"); + } + + } + if(stricmp(title, "") != 0){ + if(item_tag != NULLTAG){ + tag_t owning_user = NULLTAG; + AOM_ask_value_string(item_tag,"item_id",&itemID);//ȡitem_id + AOM_ask_value_string(item_tag,"object_name",&itemName);//ȡ + AOM_ask_value_tag(item_tag,"owning_user",&owning_user);//ȡ + ITKCALL(AOM_ask_value_string(owning_user,"user_name",&itemUser)) + strcat(wuliao,"[:"); + strcat(wuliao,itemID); + strcat(wuliao," :"); + strcat(wuliao,itemName); + strcat(wuliao," :"); + strcat(wuliao,itemUser); + strcat(wuliao,"]"); + //strcat(itemNames,itemName); + if(itemID !=NULL){ + MEM_free(itemID); + itemID =NULL; + } + + if(itemName !=NULL){ + MEM_free(itemName); + itemName =NULL; + } + if(itemUser !=NULL){ + MEM_free(itemUser); + itemUser =NULL; + } + + } + + + + }else{ + if(item_tag != NULLTAG&&form_tag!=NULLTAG){ + tag_t owning_user = NULLTAG; + AOM_ask_value_string(item_tag,"item_id",&itemID);//ȡitem_id + AOM_ask_value_string(item_tag,"object_name",&itemName);//ȡ + AOM_ask_value_tag(item_tag,"owning_user",&owning_user);//ȡ + ITKCALL(AOM_ask_value_string(owning_user,"user_name",&itemUser)) + AOM_ask_value_string(form_tag,"jk8SpecModel",&jk8SpecModel);//ȡĹͺ + AOM_ask_value_string(form_tag,"jk8TechModel",&jk8TechModel);//ȡļͺ + + + //TODO ͨжE-U8ϵǷԡE-8ͷǷʼ + compare=strncmp(itemID,"E-8",3); + if(compare == 0){ + ECHO("ΪE-U8ϲʼ"); + if(itemID !=NULL){ + MEM_free(itemID); + itemID =NULL; + } + + if(itemName !=NULL){ + MEM_free(itemName); + itemName =NULL; + } + if(itemUser !=NULL){ + MEM_free(itemUser); + itemUser =NULL; + } + if(jk8SpecModel !=NULL){ + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + if(jk8TechModel !=NULL){ + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + + continue; + //return 0; + + } + + + strcat(wuliao,"[:"); + strcat(wuliao,itemID); + strcat(wuliao," :"); + strcat(wuliao,itemName); + strcat(wuliao," ͺ:"); + strcat(wuliao,jk8SpecModel); + strcat(wuliao," ͺţ:"); + strcat(wuliao,jk8TechModel); + strcat(wuliao," :"); + strcat(wuliao,itemUser); + strcat(wuliao,"]"); + //strcat(itemNames,itemName); + if(itemID !=NULL){ + MEM_free(itemID); + itemID =NULL; + } + + if(itemName !=NULL){ + MEM_free(itemName); + itemName =NULL; + } + if(itemUser !=NULL){ + MEM_free(itemUser); + itemUser =NULL; + } + if(jk8SpecModel !=NULL){ + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + if(jk8TechModel !=NULL){ + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + } + } + + + } + strcat(wuliao,"}"); + + + + + + char cmd[20560] = "\0"; + char * tc_root_dir = getenv("tc_root"); + char jar_file[2560] = "\0"; + if(stricmp(title, "") != 0){ + strcpy(jar_file, tc_root_dir); + strcat(jar_file, "\\bin\\"); + strcat(jar_file, "JK_Email.jar"); + + strcpy( cmd, "java -jar " ); + strcat(cmd , " \""); + strcat(cmd ,jar_file); + strcat( cmd, "\" \"" ); + strcat( cmd, title ); + //strcat( cmd, "\" \"" ); + //strcat( cmd, itemNames ); + /*if(emailNameVec.size() > 0){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailNameVec[0].c_str()); + }*/ + //printf( "\n ѡ %s\n",emailNameVec[0].c_str() ); + if(emailName!=NULL){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailName); + } + strcat( cmd, "\" \"" ); + strcat( cmd, wuliao ); + strcat( cmd,"\""); + printf( "\n%s\n",cmd ); + }else{ + strcpy(jar_file, tc_root_dir); + strcat(jar_file, "\\bin\\"); + strcat(jar_file, "JK_SendEmail.jar"); + + strcpy( cmd, "java -jar " ); + strcat(cmd , " \""); + strcat(cmd ,jar_file); + strcat( cmd, "\" \"" ); + strcat( cmd, wuliao ); + //strcat( cmd, "\" \"" ); + //strcat( cmd, itemNames ); + /*if(emailNameVec.size() > 0){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailNameVec[0].c_str()); + }*/ + //printf( "\n ѡ %s\n",emailNameVec[0].c_str() ); + if(emailName!=NULL){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailName); + } + strcat( cmd,"\""); + } + printf( "\n%s\n",cmd ); + system( cmd ); + + + + + if(attachments !=NULL){ + MEM_free(attachments); + attachments = NULL; + } + + return 0; +} + +/** +* +* ʼ +* +*/ +int JK_send_email_2(EPM_action_message_t msg){ + int ifail = 0, att_cnt = 0 ,i =0,compare=0; + tag_t task_tag =NULLTAG , rootTask_tag =NULLTAG ; + char wuliao[10240] = "\0";// * itemName = NULL, * itemID = NULL ,* itemUser = NULL,*jk8SpecModel=NULL,*jk8TechModel=NULL; + //vector emailNameVec ; + printf( "\n ----------俪ʼ---------\n"); + //ȡõķ͵ + //getPrefStrings("JK_SendEmailName_Option",TC_preference_site,emailNameVec); + + //ò-SignName 1;2 + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="", + signcounter_info[1024] = "", *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + char emailName[1024] = ""; + char title[256] = ""; + char *my_job_name =NULL,*my_task_name=NULL,*template_name = NULL; + tag_t temp_task_tag =NULLTAG; + + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + POM_AM__set_application_bypass(true); + if (arg_cnt > 0) + { + for (i=0;i revVec,int num){ + tag_t release_status =NULLTAG; + tag_t * attachments = NULL; + int *att_types=NULL; + int ifail = 0; + att_types = (int*) MEM_alloc (sizeof(int) * ( revVec.size() )); + attachments = (tag_t*) MEM_alloc (sizeof(tag_t) * ( revVec.size() )); + //ƶĿ꣬ת + for ( int indx = 0; indx < revVec.size(); indx++ ) + { + att_types[indx] = EPM_target_attachment;//EPM_reference_attachment; + attachments[indx] = revVec[indx]; + } + //еİ汾ӵ + printf("1ifail=>%d\n",ifail); + ITKCALL(ifail=EPM_add_attachments(rootTask,revVec.size(),attachments,att_types)); + printf("2ifail=>%d\n",ifail); + ITKCALL(ifail =CR_create_release_status(statusName.c_str(),&release_status)); + printf("4ifail=>%d\n",ifail); + if(release_status!=NULLTAG){ + POM_AM__set_application_bypass(true); + //жλߵҪɾеĻ״̬ + for(int n=0;n%d\n",ifail); + POM_AM__set_application_bypass(false); + } + if(att_types) + { + MEM_free(att_types); + att_types = NULL; + } + if(attachments) + { + MEM_free(attachments); + attachments = NULL; + } + +} + +void removeRevFromTask1(tag_t rootTask,vector revVec){ + cout<<"enter removeRevFromTask "< target_vec; +// *specification_tags = NULL, +// *attach_tags =NULL; + POM_AM__set_application_bypass(true); + task_tag = msg.task; + ITKCALL(ifail = EPM_ask_root_task(task_tag, &root_task_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments)); + ITKCALL(ifail = AOM_ask_value_tag(root_task_tag,"owning_user",&owning_user)); + ITKCALL(ifail = AOM_ask_value_tag(root_task_tag,"owning_group",&owning_group)); + //ѭĿ + for(i = 0 ;i < att_cnt ;i ++) + { + if(checkIsTypeOrSubtype(attachments[i],"ItemRevision")){ + + + tag_t *xgwj_tags = NULL; + tag_t *release_status = NULL; + + //tag_t xgwj_tag = NULLTAG; + int xgwj_count = 0; + //TODO Ȼȡattachments[i]ͣͣжĸ + char *object_type=NULL; + AOM_ask_value_string(attachments[i],"object_type",&object_type); + cout<<"object_type-------------"<tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec); + } + else + { + sprintf_s(local_path, "%s\\%s-%d-%d-%d-%d-%d-%d.dat", temp_dir,item_id, + 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec); + } + + if((filePtr = fopen(local_path, "wt")) == NULL) + { + printf("Can not create the temp dat file!\n"); + return -1; + } + *file_name = (char *)MEM_alloc(sizeof(char)*512); + strcpy((*file_name), local_path); + + fwrite(file_content, sizeof(char), strlen(file_content), filePtr); + fclose(filePtr); + + return ITK_ok; +} + + +int summary_free_msexcel(tag_t dataset, char *dat_file, char *ext) +{ + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + + AE_reference_type_t reference_type; + + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "excel"; + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + /*char cmd[256] = ""; + + strcpy( cmd, "SubstMacros-MSExcel.wsf" ); + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, dat_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + */ + summary_fee(temp_file,dat_file); + + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + //CALL(AOM_load (dataset)); + //CALL(AOM_load(spec_dataset_rev)); + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + return ITK_ok; +} + + +/** +* Ϣ +* +* +* +*/ +int JK_matereial_summary_fee(EPM_action_message_t msg){ + int ifail =0, + att_cnt = 0, + excelCnt = 0; + tag_t task_tag = NULLTAG, + root_task_tag = NULLTAG, + * attachments =NULL, + * excelTags =NULL; + char *dataset_type = NULL; + task_tag = msg.task; + POM_AM__set_application_bypass(true); + ITKCALL(ifail = EPM_ask_root_task(task_tag, &root_task_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments)); + + for(int i = 0;i < att_cnt;i++){ + tag_t taskTag = attachments[i]; + if(checkIsTypeOrSubtype(taskTag,"JK8BOMCostEstmRevision")){ + ITKCALL(ifail = AOM_ask_value_tags(taskTag,"IMAN_specification",&excelCnt,&excelTags)); + + for(int j = 0 ;j < excelCnt;j++){ + AOM_ask_value_string(excelTags[j],"object_type",&dataset_type); + char *data_file = NULL; + create_summary_fee_file("","û־", &data_file); + if( data_file == NULL ) + { + continue; + } + ECHO("\n ıļ%s",data_file); + + + if(strcmp(dataset_type, "MSExcel") ==0 ) + { + summary_free_msexcel(excelTags[j],data_file,"xls"); + } + else if(strcmp(dataset_type, "MSExcelX") ==0) + { + summary_free_msexcel(excelTags[j],data_file,"xlsx"); + } + + if(dataset_type!=NULL){ + MEM_free(dataset_type); + dataset_type = NULL; + } + } + + if(excelTags!=NULL) + { + MEM_free(excelTags); + excelTags =NULL; + } + } + + } + if(attachments!= NULL){ + MEM_free(attachments); + attachments = NULL; + } + + POM_AM__set_application_bypass(false); + return 0; +} + + + +/******************************************************* +* +* ȡTOP BomlineԵ +* +********************************************************/ +void JK_get_bomline_props(tag_t top_line_tag,char errs[10240],char cherrs[10240]) +{ + int ifail = 0 , + i = 0, + status_count = 0 , + c_line_count = 0 , + rev_form_cnt = 0 , + isra_cou=0, + isra_cou_form=0; + tag_t rev_tag =NULLTAG, + item_tag = NULLTAG, + bom_window_tag = NULLTAG, + *c_line_tags = NULL, + *rev_form_tags = NULL, + *isra_tags = NULL, + *isra_tags_form = NULL; + + char item_id[ITEM_id_size_c + 1] = "\0", + rev_id[ITEM_id_size_c + 1] = "\0", + *user_name = NULL, + *jk8_mjshl = NULL, + create_date_str[32] = "\0", + person_name[SA_person_name_size_c + 1] = "\0"; + + //ΪȨ޿ƵԵʣҪڴ˴· + POM_AM__set_application_bypass(true); + + printf("1111"); + ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//ȡBOMLINEİ汾 + ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag)); + ITKCALL(ITEM_ask_id(item_tag,item_id));//ϱ + + printf("жǷ񷢲%s\n",item_id); + ITKCALL(AOM_ask_value_tags(rev_tag,"release_status_list",&isra_cou,&isra_tags));//жǷ񷢲 + if(isra_cou==0){ + printf("%sδ\n",item_id); + strcat(errs,"["); + strcat(errs,item_id); + strcat(errs,"]"); + }else{ + //20200427ż飬Ͳ + //20200429ǿ״̬Ͳ + + ITKCALL(ITEM_ask_rev_id(rev_tag,rev_id));//ȡ汾 + //20200318 + char* object_type_release=NULL; + logical develop=false; + for (int f=0;f0){ + // ITKCALL(AOM_ask_value_tags(rev_form_tags[0],"release_status_list",&isra_cou_form,&isra_tags_form));//жϱǷ񷢲 + // if(isra_cou_form==0){ + // printf("%sδ\n",item_id); + // strcat(errs,"["); + // strcat(errs,item_id); + // strcat(errs,"]"); + // } + // if(isra_tags_form!=NULL){ + // MEM_free(isra_tags_form); + // isra_tags_form =NULL; + // } + //} + //if(rev_form_tags!=NULL){ + // MEM_free(rev_form_tags); + // rev_form_tags =NULL; + //} + } + ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + if(c_line_count == 0){ + printf("ûBOMṹ"); + POM_AM__set_application_bypass(false); + return; + } + + for (int i = 0; i < c_line_count; i++) + { + cout<<"2----"< errMap; + + vector type_vec; + + + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + if (stricmp(argflag, "material_type") == 0) + { + if(argvalue != NULL) + { + strcpy(material_type,argvalue); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + char errs[1024]="\0"; + char cherrs[1024]="\0"; //20200318 + tag_t target_tag = attachments[i]; + //ȡ PSBOMViewRevision + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type \n"); + continue; + } + POM_AM__set_application_bypass(true); + ITKCALL(BOM_create_window(&bom_window_tag));//windowͼ + ITKCALL(BOM_set_window_top_line_bvr(bom_window_tag,target_tag,&top_line_tag));//ȡbomline + ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//ȡBOMLINEİ汾 + ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag)); + ITKCALL(ITEM_ask_id(item_tag,item_id));//ϱ + if(c_line_count == 0){ + printf("ûBOMṹ\n"); + }else{ + printf("BOMṹ %d\n",c_line_count); + for (int t = 0; t < c_line_count; t++) + { + printf("ʼ%s\n",item_id); + POM_AM__set_application_bypass(true); + cout<<"1----"< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "erp_utils.h" +#include "ocilib.h" +#include "common_itk_util.h" +#include "string_utils.h" +#include "error_handling.h" +#include +#include +#include +#include + + +int JK_summary_form(EPM_rule_message_t msg); +int jk_water_summary(EPM_rule_message_t msg); +int jk_decide_time(EPM_rule_message_t msg); +int JK_send_email(EPM_action_message_t msg); +int jk_add_actual(EPM_action_message_t msg); +int jk_exportExcel(EPM_action_message_t msg); +int jk_auto_create_process(EPM_action_message_t msg); +int jk_remove_allStatus(EPM_action_message_t msg); +int JK_change_qx(EPM_action_message_t msg); +int jk_add_attatchments(EPM_action_message_t msg); +int JK_matereial_summary_fee(EPM_action_message_t msg); + +int JK_summary_pcb_form(EPM_rule_message_t msg); +int JK_send_email_2(EPM_action_message_t msg); + +int JK_Bom_is_release(EPM_rule_message_t msg); +int MaterialDiscontinuation(EPM_rule_message_t msg); +int tx_checkMaterialReleased(EPM_rule_message_t msg); +int MaterialOpenning(EPM_rule_message_t msg); +int tx_checkMaterialDisabled(EPM_rule_message_t msg); +int BOMDiscontinuation(EPM_rule_message_t msg); +int addDisabled(EPM_action_message_t msg); +int tx_addDisabled(EPM_action_message_t msg); +int historicalDataAddMark(EPM_action_message_t msg); +int tx_erp_bom(EPM_action_message_t msg); +int tx_erp(EPM_action_message_t msg); +int removeDisabled(EPM_action_message_t msg); +int tx_removeDisabled(EPM_action_message_t msg); +int jk_upgrade_version(EPM_action_message_t msg); +int jk_test_ask_icoAttribute(EPM_action_message_t msg); +void get_current_date_and_time(char *date_time); +string ws2s(const std::wstring& wstr); +void removeReleaseStatusByName(string statusName,tag_t rootTask,vector revVec); +void removeRevFromTask(tag_t rootTask,vector revVec); +void tx_removeReleaseStatusByName(string statusName,tag_t rootTask,vector revVec); +void tx_removeRevFromTask(tag_t rootTask,vector revVec); +//int sendMaterialInfomationAddDisabled(EPM_action_message_t msg); + + diff --git a/jf_itk/jk_custom_erp.cpp b/jf_itk/jk_custom_erp.cpp new file mode 100644 index 0000000..4fdf444 --- /dev/null +++ b/jf_itk/jk_custom_erp.cpp @@ -0,0 +1,3210 @@ +# include "jk_custom_erp.h" +# include "jk_custom_erp_struct.h" +# include "erp_send_item.h" +# include "common_itk_util.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hx_custom.h" +#include +//#include "../../../../../../../../TEAMCENTER/tc/include/ics/ics2.h" +void JK_get_top_bomline_props(tag_t view_tag , + vector & p_bom_vec , + vector & c_bom_vec, + vector & sub_bom_vec); + + + + + +/******************************************************* +* +* ȡϵϢ 2018.5.4 +* +********************************************************/ +void JK_get_material_subs(tag_t obj_tag , + vector & sm_bean_vec + ) +{ + int ifail = 0 , + global_count = 0, + master_count = 0, + i = 0; + tag_t item_tag =NULLTAG, + *global_tags = NULL, + * master_tags = NULL, + master_tag = NULLTAG, + global_tag = NULLTAG; + + + char item_id[ITEM_id_size_c + 1] = "\0"; + + + ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); + if(master_count > 0) + { + master_tag = master_tags[0]; + } + + + ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem + + + ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ + date_t current_date; + char create_date_str[32] = "\0"; + //ȡǰʱ + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + + ITKCALL(ifail = AOM_ask_value_tags(item_tag,"global_alt_list",&global_count,&global_tags));//ȫ + if(global_count>0){ + + printf("ڶȫ"); + for(i = 0;i < global_count;i++) + { + char * sub_item_id=NULL; + ITKCALL(ifail = AOM_ask_value_string(global_tags[i],"item_id",&sub_item_id));//id + if (sub_item_id!=NULL) + { + JK_RECORD_SUBSTIT_T subBean; + subBean.NO.assign(item_id); //id + subBean.SUBSTITNO.assign(sub_item_id); //ȫid + subBean.STATES.assign("1");//״̬ Ĭϴ1 + subBean.SUB_TRANS_TIME.assign(create_date_str); + sm_bean_vec.push_back(subBean); + } + if(sub_item_id !=NULL) + { + MEM_free(sub_item_id); + sub_item_id =NULL; + } + + + } + }else{ + JK_RECORD_SUBSTIT_T subBean; + printf("ȫ"); + subBean.NO.assign(item_id); + subBean.SUBSTITNO.assign(""); //ûȫĬϴ + subBean.STATES.assign("1"); + subBean.SUB_TRANS_TIME.assign(create_date_str); + sm_bean_vec.push_back(subBean); + + } + + //ͷԴ + if(master_tags !=NULL) + { + MEM_free(master_tags); + master_tags = NULL; + } + + if(global_tags !=NULL) + { + MEM_free(global_tags); + global_tags =NULL; + } + +} + + +void JK_upadte_material_subs_table(vector sm_bean_vec) +{ +; + int ifail = 0; + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + char updateSQL[3000] = "\0"; + + for(int i = 0;i < sm_bean_vec.size();i++){ + sprintf(updateSQL,"UPDATE %s SET STATES='4' WHERE NO='%s' AND STATES='1'", + JK_RECORD_SUBSTIT_TABLE,sm_bean_vec[i].NO); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + }else{ + printf("ʾ:TABLE ɹ, %s \n",updateSQL); + } + } + + ExecuteSQLNoInputParam("commit"); + DisConnServer(); + +} + + +/******************************************************* +* +* ϵϢм 2018.5.4 +* +********************************************************/ +void JK_write_material_subs_to_DB(vector sm_bean_vec + ) +{ + JK_upadte_material_subs_table(sm_bean_vec); + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 4; i++ ) + { + strcat(fields_material, JK_RECORD_SUBSTIT_fields[i]); + if( i != 3 ){ + strcat(fields_material,","); + } + + } + cout<<"111111111111111111"<%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + }else{ + printf("ʾ:TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + }else{ + EMH_store_error_s1(EMH_severity_user_error,ifail,"[ϴȫмʧ,ϵԱ!!]");//󵯴 + } + +end_handler: + + DisConnServer(); + +} + + +/************************************************ +* +* Ϣݵݿ +* +*************************************************/ + +void JK_upadte_material_table(vector sm_bean_vec) +{ + + cout<<"enter JK_upadte_material_table"< sm_bean_vec, + vector &faild_m_vec) +{ + cout<<"enter JK_write_material_to_DB"<%s\n",sql_value); + + + /*sprintf(sql_value,"insert into %s (JK_ATTR_1,JK_ATTR_2 ) values ('sssssss','jhkjhj' )", + JK_MATERIAL_TABLE + ); + printf("SQL =>%s\n",sql_value);*/ + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + faild_m_vec.push_back(sm_bean_vec[i]); + //goto end_handler; + }else{ + printf("ʾ:TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + }else{ + EMH_store_error_s1(EMH_severity_user_error,ifail,"[ϴU8ʧ,ϵԱ!!]");//󵯴 + } + +end_handler: + + DisConnServer(); + +} + + + + + +/************************************************ +* +* BOM ͷ Ϣݵݿ +* +*************************************************/ +void JK_update_bom_tables(vector p_bom_bean_vec){ + int ifail = 0; + date_t current_date; + char create_date_str[32] = "\0"; + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + char updateSQL[3000] = "\0"; + + for(int i = 0;i < p_bom_bean_vec.size();i++){ + sprintf(updateSQL,"UPDATE %s SET JK_STATUS='4',JK_OPERATE_TIME='%s' WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s' AND JK_STATUS='0'", + JK_BOM_PARENT_LINE_TABLE ,create_date_str,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + sprintf(updateSQL,"UPDATE %s SET JK_STATUS='3',JK_OPERATE_TIME='%s' WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s' AND JK_STATUS='2'", + JK_BOM_PARENT_LINE_TABLE ,create_date_str,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + + sprintf(updateSQL,"DELETE %s WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s'", + JK_BOM_CHILD_LINE_TABLE ,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + sprintf(updateSQL,"DELETE %s WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s'", + JK_BOM_SUBSTITUTE_PART_TABLE ,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + } + + ExecuteSQLNoInputParam("commit"); + DisConnServer(); + + +} + +void JK_write_p_bom_to_DB(vector p_bom_bean_vec + ,vector & field_p_bean) +{ + + JK_update_bom_tables(p_bom_bean_vec); + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 24; i++ ) + { + strcat(fields_material, jk_p_bom_fields[i]); + if( i != 23 ) + strcat(fields_material,","); + } + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + for(i = 0; i < p_bom_bean_vec.size(); i++ ) + { + strcpy(insert_values_material,"'"); + strcat(insert_values_material,p_bom_bean_vec[i].JK_BOM_ID.c_str()); + strcat(insert_values_material,"','");// bom + strcat(insert_values_material,p_bom_bean_vec[i].JK_BOM_REV.c_str()); + strcat(insert_values_material,"','"); // bom汾 + strcat(insert_values_material,p_bom_bean_vec[i].JK_OWNING_USER.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,p_bom_bean_vec[i].JK_RATE.c_str()); + strcat(insert_values_material,"','"); // ĸ + strcat(insert_values_material,p_bom_bean_vec[i].JK_CREATION_DATE.c_str()); + strcat(insert_values_material,"','"); // Ч //5 + strcat(insert_values_material,p_bom_bean_vec[i].JK_SCRAP_DATE.c_str()); + strcat(insert_values_material,"','"); // ʧЧ + strcat(insert_values_material,p_bom_bean_vec[i].JK_IS_SCRAP.c_str()); + strcat(insert_values_material,"','"); // ǷʧЧ + strcat(insert_values_material,p_bom_bean_vec[i].JK_FROM.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,p_bom_bean_vec[i].JK_TRANS_TIME.c_str()); + strcat(insert_values_material,"','"); // ʱ + strcat(insert_values_material,p_bom_bean_vec[i].JK_STATUS.c_str()); + strcat(insert_values_material,"','"); // ״̬ + strcat(insert_values_material,p_bom_bean_vec[i].JK_ERROR_MSG.c_str()); + strcat(insert_values_material,"','"); // Ϣ + strcat(insert_values_material,p_bom_bean_vec[i].JK_OPERATE_TIME.c_str()); + strcat(insert_values_material,"','"); // ʱ //15 + strcat(insert_values_material,p_bom_bean_vec[i].JK_PUID.c_str()); + strcat(insert_values_material,"','"); // Ψһ + strcat(insert_values_material,p_bom_bean_vec[i].JK_FROM_SYS.c_str()); + strcat(insert_values_material,"','"); // ݷ + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_1.c_str()); + strcat(insert_values_material,"','"); // չֶ1 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_2.c_str()); + strcat(insert_values_material,"','"); // չֶ2 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_3.c_str()); + strcat(insert_values_material,"','"); // չֶ3 //20 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_4.c_str()); + strcat(insert_values_material,"','"); // չֶ4 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_5.c_str()); + strcat(insert_values_material,"','"); // չֶ5 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_6.c_str()); + strcat(insert_values_material,"','"); // չֶ6 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_7.c_str()); + strcat(insert_values_material,"','"); // չֶ7 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_8.c_str()); + strcat(insert_values_material,"','"); // չֶ8 //25 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_9.c_str()); + strcat(insert_values_material,"','"); // չֶ9 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 + strcat(insert_values_material,"'"); + + sprintf(sql_value,"insert into %s (%s ) values (%s )", + JK_BOM_PARENT_LINE_TABLE, + fields_material, + insert_values_material); + printf("SQL =>%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + field_p_bean.push_back(p_bom_bean_vec[i]); + }else{ + printf("ʾ:BOM_TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + } + +end_handler: + + DisConnServer(); + +} + +/************************************************ +* +* BOM ṹ Ϣݵݿ +* +*************************************************/ +void JK_write_c_bom_to_DB(vector c_bom_bean_vec + ,vector & field_c_bean) +{ + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 18; i++ ) + { + strcat(fields_material, jk_c_bom_fields[i]); + if( i != 17 ) + strcat(fields_material,","); + } + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + for(i = 0; i < c_bom_bean_vec.size(); i++ ){ + + if(strcmp(c_bom_bean_vec[i].JK_BOM_CID.c_str(),"")==0||c_bom_bean_vec[i].JK_BOM_CID.length()==0) + { + continue; + } + strcpy(insert_values_material,"'"); + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_ID.c_str()); + strcat(insert_values_material,"','");// bom + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_REV.c_str()); + strcat(insert_values_material,"','"); // bom汾 + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_CID.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,c_bom_bean_vec[i].JK_SUPPLY_TYPE.c_str()); + strcat(insert_values_material,"','"); // ĸ + strcat(insert_values_material,c_bom_bean_vec[i].JK_WAREHOUSE.c_str()); + strcat(insert_values_material,"','"); // Ч //5 + strcat(insert_values_material,c_bom_bean_vec[i].JK_QUANTITY.c_str()); + strcat(insert_values_material,"','"); // ʧЧ + strcat(insert_values_material,c_bom_bean_vec[i].JK_REMARK.c_str()); + strcat(insert_values_material,"','"); // ǷʧЧ + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_1.c_str()); + strcat(insert_values_material,"','"); // չֶ1 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_2.c_str()); + strcat(insert_values_material,"','"); // չֶ2 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_3.c_str()); + strcat(insert_values_material,"','"); // չֶ3 //20 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_4.c_str()); + strcat(insert_values_material,"','"); // չֶ4 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_5.c_str()); + strcat(insert_values_material,"','"); // չֶ5 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_6.c_str()); + strcat(insert_values_material,"','"); // չֶ6 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_7.c_str()); + strcat(insert_values_material,"','"); // չֶ7 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_8.c_str()); + strcat(insert_values_material,"','"); // չֶ8 //25 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_9.c_str()); + strcat(insert_values_material,"','"); // չֶ9 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 + strcat(insert_values_material,"','"); + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_CWR.c_str());//Ӽ //27 + strcat(insert_values_material,"'"); + + sprintf(sql_value,"insert into %s (%s) values (%s)", + JK_BOM_CHILD_LINE_TABLE, + fields_material, + insert_values_material); + printf("SQL =>%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + field_c_bean.push_back(c_bom_bean_vec[i]); + }else{ + printf("ʾ:BOM_TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + } + +end_handler: + + DisConnServer(); + +} +/************************************************ +* +* BOM 滻 Ϣݵݿ +* +*************************************************/ +void JK_write_sub_bom_to_DB(vector sub_bom_bean_vec + ,vector & field_sub_bean) +{ + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 17; i++ ) + { + strcat(fields_material, jk_sub_bom_fields[i]); + if( i != 16 ) + strcat(fields_material,","); + } + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + for(i = 0; i < sub_bom_bean_vec.size(); i++ ) + { + if(strcmp(sub_bom_bean_vec[i].JK_BOM_CID.c_str(),"")==0||sub_bom_bean_vec[i].JK_BOM_CID.length()==0) + + { + continue; + } + strcpy(insert_values_material,"'"); + strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_ID.c_str()); + strcat(insert_values_material,"','");// bom + strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_REV.c_str()); + strcat(insert_values_material,"','"); // bom汾 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_CID.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_ID.c_str()); + strcat(insert_values_material,"','"); // ĸ + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_INDEX.c_str()); + strcat(insert_values_material,"','"); // Ч //5 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_RATIO.c_str()); + strcat(insert_values_material,"','"); // ʧЧ + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_DATE.c_str()); + strcat(insert_values_material,"','"); // ǷʧЧ + strcat(insert_values_material,sub_bom_bean_vec[i].JK_IS_GLOBAL.c_str()); + strcat(insert_values_material,"','"); // չֶ1 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_2.c_str()); + strcat(insert_values_material,"','"); // չֶ2 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_3.c_str()); + strcat(insert_values_material,"','"); // չֶ3 //20 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_4.c_str()); + strcat(insert_values_material,"','"); // չֶ4 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_5.c_str()); + strcat(insert_values_material,"','"); // չֶ5 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_6.c_str()); + strcat(insert_values_material,"','"); // չֶ6 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_7.c_str()); + strcat(insert_values_material,"','"); // չֶ7 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_8.c_str()); + strcat(insert_values_material,"','"); // չֶ8 //25 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_9.c_str()); + strcat(insert_values_material,"','"); // չֶ9 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 + strcat(insert_values_material,"'"); + + sprintf(sql_value,"insert into %s (%s) values (%s)", + JK_BOM_SUBSTITUTE_PART_TABLE, + fields_material, + insert_values_material); + printf("SQL =>%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + field_sub_bean.push_back(sub_bom_bean_vec[i]); + }else{ + printf("ʾ:BOM_TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + } + +end_handler: + + DisConnServer(); + +} + +/******************************************************* +* +* ȡϵ +* +********************************************************/ +void JK_get_material_props(tag_t obj_tag , + vector & sm_bean_vec, + vector bigCodeVec, + vector qrBigCodeVec, + map uomMapping, + string materialStatusName) +{ + int ifail = 0 , + status_count = 0, + design_count = 0, + master_count = 0, + i = 0; + tag_t item_tag =NULLTAG, + *status_tags = NULL, + *desin_tags =NULL, + * master_tags = NULL, + master_tag = NULLTAG, + uom_tag =NULLTAG, + current_user_tag = NULLTAG, + current_group_mem_tag = NULLTAG, + person_tag = NULLTAG, + classification_object = NULLTAG, + parentTag = NULLTAG, + status_tag = NULLTAG; + + double dbjk8UnitWeight = 0,//λ + dbjk8UnitVolume = 0,//λ + dbjk8PurLeadTime=0,//̶ǰ + dbjk8SafeStock=0,//ȫ + dbjk8InnTransCoe=0;//ڲ׼۸ϵ + + + + char item_id[ITEM_id_size_c + 1] = "\0", + *object_name = NULL, + *item_revision_id = NULL, + *status_name = NULL, + *jk8SpecModel = NULL, + //2019.06.13 ˵ͲƷʶ + *jk8Remarks=NULL, +// *jk8ProductIdentifyNO=NULL, + //*jk8StockBigTypeNo = NULL, + *jk8TechModel = NULL, + *represented_by =NULL, + *jk8UnitWeight1 =NULL,//0 + *jk8UnitVolume1 =NULL,//0 + jk8UnitWeight[32 + 1]="\0", //λ" + jk8UnitVolume[32 + 1]="\0",//λ" + *jk8IsDomesticMarket =NULL,//Ƿ + *jk8Isconsumables =NULL,//Ƿ" + *jk8IsBuy =NULL,//Ƿɹ" + *jk8IsMake =NULL,//Ƿ" + *jk8IsOutsource =NULL,//Ƿί" + *jk8AccountSet =NULL,//Ĭ" + *jk8BusinessType =NULL,//ҵ" + *jk8Buyer =NULL,//ɹԱ" + *jk8PurLeadTime1 =NULL,//0 + *jk8SafeStock1 =NULL,//0 + jk8PurLeadTime[32 + 1]="\0",//̶ǰ" + jk8SafeStock[32 + 1]="\0",//ȫ" + *jk8SupplyType1 =NULL,//Ӧ" + jk8SupplyType2[40]="\0", + *jk8Warehouse1 =NULL,//Ĭϲֿ" + jk8Warehouse2[40]="\0", + *jk8InnTransCoe1 =NULL,//0 + jk8InnTransCoe[32 + 1]="\0",//ڲ׼۸ϵ" + *jk8WarehouseKeeper =NULL,//Ա" + *jk8IsInnTrans =NULL,//Ƿڲ" + *jk8PlanMethod =NULL,//ƻʽ" + *jk8DisabledDate=NULL,//ͣ + *jk8EnableDate=NULL,// + *jk8ProductIdentifyNO=NULL,//Ʒʶ + create_date_str[32] = "\0", + person_name[SA_person_name_size_c + 1] = "\0", + * icsID = NULL, + *uom_str = NULL; + date_t status_date ; + string is_scrap,scrap_date; + date_t current_date; + logical isclassed = false; + logical isFilter = false; + //ϴĹ + + //ȡ + ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ + if(isclassed){ + //char * icOid = NULL; + ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); + + ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); + + // + vector::iterator it; + it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID); + if(it != qrBigCodeVec.end()) + { + printf("\n[ %s ]Ƕ\n",icsID); + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + return; + } + + it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID); + + if(it != bigCodeVec.end()){ + printf("\n[ %s ]Ҫȡͷλ\n",icsID); + isFilter = true; + }else{ + printf("\n[ %s ]Ҫȡͷ5λ\n",icsID); + isFilter = false; + } + + }else{ + printf("\n ûз͵ \n"); + return ; + } + + + //ȡǰʱ + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); + ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); + ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); + ITKCALL(SA_ask_person_name(person_tag , person_name)); + printf("person_name=> %s\n",person_name); + + ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); + if(master_count > 0) + { + master_tag = master_tags[0]; + } + + //ȡ +// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ +// if(isclassed){ +// //char * icOid = NULL; +// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); +// +// ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); +// +// } +// + + ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem + + + ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ + + + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8DisabledDate,&jk8DisabledDate));//ͣ + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8EnableDate,&jk8EnableDate));// + ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));// + //2019.11.19 Ͱ汾Ϣ + ITKCALL(ifail = AOM_ask_value_string(obj_tag,"item_revision_id",&item_revision_id));// + //2018.12.4 ȡ״̬ +// ITKCALL(ifail = AOM_ask_value_string(obj_tag,"jk8Status",&status_name));//״̬ + char localization_status; + logical master ; + //2019.1.9״̬ķ͵м + ITKCALL(ifail = AOM_UIF_ask_localized_value_string(obj_tag,"jk8Status","zh_CN",&status_name,&localization_status,&master));//״̬ + materialStatusName=status_name; + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//ͺ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Remarks,&jk8Remarks));//˵ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//Ʒʶ + printf("ͺ=%s,\n",jk8SpecModel); + + //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));// + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//Ʒʶ + printf("Ʒʶ=%s,\n",jk8TechModel); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1)); + + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//λ + sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//λ + sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//Ƿɹ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//Ƿί + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//Ĭ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//ҵ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//ɹԱ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//̶ǰ + sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//ȫ + sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//Ӧ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//Ĭϲֿ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//ڲ׼۸ϵ + sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//Ա + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//Ƿڲ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//ƻʽ + //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//2019.04.11ȡƷʶţм + + ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//Ϣ + + //date_released name + ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//λ + //ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//λ + tag_t my_uom_tag = NULLTAG; + //ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag)); + //ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str)); + + ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ + + if(status_count > 0) + { + status_tag = status_tags[0]; + AOM_ask_value_date(status_tag,"date_released",&status_date); + + } + + for(i = 1;i < status_count;i++) + { + date_t date_t_i ; + + AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); + int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); + int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); + if(day_count1 < day_count2) + { + status_tag = status_tags[i]; + status_date = date_t_i; + } + } + + is_scrap.assign("0"); + if(status_tag !=NULLTAG) + { + char * status_name = NULL; + ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); + if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){ + is_scrap.assign("1"); + char scrp_date_str[32] = "\0"; + sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); + scrap_date.assign(scrp_date_str); + + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + if(status_name !=NULL){ + MEM_free(status_name); + status_name = NULL; + } + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + //printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by); + + + /*cout<<"ʼȡƷʶ---------"<attributeCount; + attributes = theViewDescriptor->attributes; + for(int i = 0; i < theAttributeCount;i++){ + + string attr_name; + cout<<"id--------------"<"<"<0) + { + //2018.12.26ʲôֵмʲôֵ + //2019.1.9ѱֵм + m_bean.JK_MATERIAL_STATUS.assign(materialStatusName); + }else + { + m_bean.JK_MATERIAL_STATUS.assign(status_name); + } + + + m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel); + char BIG_CODE[32] = "\0"; + char T_BIG_CODE[6] = "\0"; + sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]); + if(isFilter){ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]); + }else{ + sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]); + } + + }else{ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]); + }else{ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]); + } + } + if (strstr(icsID,"prt")!=NULL)//2018/10/9classid + { + sprintf(BIG_CODE,"%c%c%c%c%c",icsID[3],icsID[4],icsID[5],icsID[6],icsID[7]); + } + m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo + + m_bean.JK_PROD_CODE.assign(jk8TechModel); + + + map::iterator mapit; + //printf("uom_str = %s \n",uom_str); + mapit = uomMapping.find(uom_str); + if(mapit != uomMapping.end()){ + //printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str()); + m_bean.JK_UOM.assign(mapit->second.c_str());// + }else{ + m_bean.JK_UOM.assign("01");// + } + m_bean.JK_CREATION_DATE.assign(create_date_str); + m_bean.JK_SCRAP_DATE.assign(scrap_date); + m_bean.JK_DESIGN_CODE.assign(represented_by); + m_bean.JK_IS_SCRAP.assign(is_scrap); + + m_bean.JK_FROM.assign(person_name); + m_bean.JK_TRANS_TIME.assign(create_date_str); + m_bean.JK_STATUS.assign("0"); + m_bean.JK_FROM_SYS.assign("TC"); + /******************************************/ + //if(strcmp(jk8UnitWeight1,"")!=0){ + m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight); + //}else{ + //m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1); + //} +// if(strcmp(jk8UnitVolume1,"")!=0){ + m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume); + //}else{ + //m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1); + //} + m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket); + m_bean.JK_CONSUM.assign(jk8Isconsumables); + m_bean.JK_IS_BUY.assign(jk8IsBuy); + m_bean.JK_IS_MAKE.assign(jk8IsMake); + m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource); + m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet); + m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType); + m_bean.JK_BUYER.assign(jk8Buyer); + m_bean.JK_SCRAP_DATE.assign(jk8DisabledDate); + m_bean.JK_ATTR_1.assign(jk8EnableDate); + //if(strcmp.(jk8PurLeadTime1,"")!=0){ + m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime); + //}else{ + // m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1); + //} + printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1); + //if(strcmp(jk8SafeStock1,"")!=0){ + m_bean.JK_SAFE_STOCK.assign(jk8SafeStock); + //}else{ + // m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1); + //} + printf("jk8SafeStock1=%s\n",jk8SafeStock1); + if(strcmp(jk8SupplyType1,"")!=0){ + strncpy(jk8SupplyType2,jk8SupplyType1, 1);//ȡһ + printf("jk8SafeStock2=%s\n",jk8SupplyType2); + m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2); + }else{ + m_bean.JK_SUPPLY_TYPE1.assign("3"); + } + + printf("jk8Warehouse1=%s\n",jk8SafeStock1); + + if(strcmp(jk8Warehouse1,"")!=0){ + strncpy(jk8Warehouse2,jk8Warehouse1, 2);//ȡһ + + m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2); + }else{ + m_bean.JK_WARE_HOUSE1.assign("01"); + } + + //if(strcmp(jk8InnTransCoe1,"")!=0){ + m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe); + //}else{ + // m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1); + //} + m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper); + m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans); + m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod); + + + sm_bean_vec.push_back(m_bean); + + //ͷԴ + if(master_tags !=NULL) + { + MEM_free(master_tags); + master_tags = NULL; + } + + if(jk8SpecModel !=NULL) + { + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + + + + + if(jk8ProductIdentifyNO !=NULL) + { + MEM_free(jk8ProductIdentifyNO); + jk8ProductIdentifyNO =NULL; + } + if(jk8Remarks !=NULL) + { + MEM_free(jk8Remarks); + jk8Remarks =NULL; + } + if(jk8TechModel !=NULL) + { + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + if(jk8DisabledDate !=NULL) + { + MEM_free(jk8DisabledDate); + jk8DisabledDate =NULL; + } + if(jk8EnableDate !=NULL) + { + MEM_free(jk8EnableDate); + jk8EnableDate =NULL; + } + + if(status_tags !=NULL) + { + MEM_free(status_tags); + status_tags =NULL; + } + + if(desin_tags !=NULL){ + MEM_free(desin_tags); + desin_tags = NULL; + } + + if(uom_str != NULL) + { + MEM_free(uom_str); + uom_str =NULL; + } + + if(object_name != NULL) + { + MEM_free(object_name); + object_name = NULL; + + } + if(item_revision_id != NULL) + { + MEM_free(item_revision_id); + item_revision_id = NULL; + + } + if(status_name != NULL) + { + MEM_free(status_name); + status_name = NULL; + + } + if(represented_by !=NULL){ + MEM_free(represented_by); + represented_by = NULL; + } + + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + + + if(jk8IsDomesticMarket !=NULL) + { + MEM_free(jk8IsDomesticMarket); + jk8IsDomesticMarket =NULL; + } + if(jk8Isconsumables !=NULL) + { + MEM_free(jk8Isconsumables); + jk8Isconsumables =NULL; + } + if(jk8IsBuy !=NULL) + { + MEM_free(jk8IsBuy); + jk8IsBuy =NULL; + } + if(jk8IsMake !=NULL) + { + MEM_free(jk8IsMake); + jk8IsMake =NULL; + } + if(jk8IsOutsource !=NULL) + { + MEM_free(jk8IsOutsource); + jk8IsOutsource =NULL; + } + if(jk8AccountSet !=NULL) + { + MEM_free(jk8AccountSet); + jk8AccountSet =NULL; + } + if(jk8BusinessType !=NULL) + { + MEM_free(jk8BusinessType); + jk8BusinessType =NULL; + } + if(jk8Buyer !=NULL) + { + MEM_free(jk8Buyer); + jk8Buyer =NULL; + } + if(jk8SupplyType1 !=NULL) + { + MEM_free(jk8SupplyType1); + jk8SupplyType1 =NULL; + } + if(jk8Warehouse1 !=NULL) + { + MEM_free(jk8Warehouse1); + jk8Warehouse1 =NULL; + } + if(jk8WarehouseKeeper !=NULL) + { + MEM_free(jk8WarehouseKeeper); + jk8WarehouseKeeper =NULL; + } + + if(jk8IsInnTrans !=NULL) + { + MEM_free(jk8IsInnTrans); + jk8IsInnTrans =NULL; + } + + if(jk8PlanMethod !=NULL) + { + MEM_free(jk8PlanMethod); + jk8PlanMethod =NULL; + } + + + if(jk8UnitWeight1 !=NULL) + { + MEM_free(jk8UnitWeight1); + jk8UnitWeight1 =NULL; + } + if(jk8UnitVolume1 !=NULL) + { + MEM_free(jk8UnitVolume1); + jk8UnitVolume1 =NULL; + } + if(jk8PurLeadTime1 !=NULL) + { + MEM_free(jk8PurLeadTime1); + jk8PurLeadTime1 =NULL; + } + if(jk8SafeStock1 !=NULL) + { + MEM_free(jk8SafeStock1); + jk8SafeStock1 =NULL; + } + if(jk8InnTransCoe1 !=NULL) + { + MEM_free(jk8InnTransCoe1); + jk8InnTransCoe1 =NULL; + } + +} + +void JK_get_material_props1(tag_t obj_tag , + vector & sm_bean_vec, + vector bigCodeVec, + vector qrBigCodeVec, + map uomMapping, + string dateType) +{ + + cout<<"enter JK_get_material_props1"<::iterator it; + it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID); + if(it != qrBigCodeVec.end()) + { + printf("\n[ %s ]Ƕ\n",icsID); + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + return; + } + + it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID); + + if(it != bigCodeVec.end()){ + printf("\n[ %s ]Ҫȡͷλ\n",icsID); + isFilter = true; + }else{ + printf("\n[ %s ]Ҫȡͷ5λ\n",icsID); + isFilter = false; + } + + }else{ + printf("\n ûз͵ \n"); + return ; + } + + + //ȡǰʱ + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); + ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); + ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); + ITKCALL(SA_ask_person_name(person_tag , person_name)); + printf("person_name=> %s\n",person_name); + + ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); + if(master_count > 0) + { + master_tag = master_tags[0]; + } + + //ȡ +// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ +// if(isclassed){ +// //char * icOid = NULL; +// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); +// +// ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); +// +// } +// + + ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem + + + ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ + + + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8DisabledDate,&jk8DisabledDate));//ͣ + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8EnableDate,&jk8EnableDate));// + ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));// + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//ͺ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Remarks,&jk8Remarks));//˵ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//Ʒʶ + printf("ͺ=%s,\n",jk8SpecModel); + + //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));// + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//Ʒʶ + printf("Ʒʶ=%s,\n",jk8TechModel); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1)); + + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//λ + sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//λ + sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//Ƿɹ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//Ƿί + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//Ĭ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//ҵ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//ɹԱ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//̶ǰ + sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//ȫ + sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//Ӧ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//Ĭϲֿ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//ڲ׼۸ϵ + sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//Ա + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//Ƿڲ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//ƻʽ + + ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//Ϣ + + //date_released name + ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//λ + //ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//λ + tag_t my_uom_tag = NULLTAG; + //ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag)); + //ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str)); + + ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ + + if(status_count > 0) + { + status_tag = status_tags[0]; + AOM_ask_value_date(status_tag,"date_released",&status_date); + + } + + for(i = 1;i < status_count;i++) + { + date_t date_t_i ; + + AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); + int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); + int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); + if(day_count1 < day_count2) + { + status_tag = status_tags[i]; + status_date = date_t_i; + } + } + + is_scrap.assign("0"); + if(status_tag !=NULLTAG) + { + char * status_name = NULL; + ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); + if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){ + is_scrap.assign("1"); + char scrp_date_str[32] = "\0"; + sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); + scrap_date.assign(scrp_date_str); + + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + if(status_name !=NULL){ + MEM_free(status_name); + status_name = NULL; + } + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + //printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by); + + JK_MATERIAL_STRUCT m_bean; + + /*****************д*****************/ + m_bean.JK_ITEM_ID.assign(item_id); + m_bean.JK_ITEM_NAME.assign(object_name); + m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel); + m_bean.JK_REMARKS.assign(jk8Remarks); + m_bean.JK_PRODUCT_IDNO.assign(jk8ProductIdentifyNO); + char BIG_CODE[32] = "\0"; + char T_BIG_CODE[6] = "\0"; + sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]); + if(isFilter){ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]); + }else{ + sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]); + } + + }else{ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]); + }else{ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]); + } + } + if (strstr(icsID,"prt")!=NULL)//2018/10/9classid + { + sprintf(BIG_CODE,"%c%c%c%c%c",icsID[3],icsID[4],icsID[5],icsID[6],icsID[7]); + } + m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo + + m_bean.JK_PROD_CODE.assign(jk8TechModel); + + + map::iterator mapit; + //printf("uom_str = %s \n",uom_str); + mapit = uomMapping.find(uom_str); + if(mapit != uomMapping.end()){ + //printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str()); + m_bean.JK_UOM.assign(mapit->second.c_str());// + }else{ + m_bean.JK_UOM.assign("01");// + } + m_bean.JK_CREATION_DATE.assign(create_date_str); + m_bean.JK_SCRAP_DATE.assign(scrap_date); + m_bean.JK_DESIGN_CODE.assign(represented_by); + m_bean.JK_IS_SCRAP.assign(is_scrap); + + m_bean.JK_FROM.assign(person_name); + m_bean.JK_TRANS_TIME.assign(create_date_str); + m_bean.JK_STATUS.assign("0"); + m_bean.JK_FROM_SYS.assign("TC"); + /******************************************/ + //if(strcmp(jk8UnitWeight1,"")!=0){ + m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight); + //}else{ + //m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1); + //} +// if(strcmp(jk8UnitVolume1,"")!=0){ + m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume); + //}else{ + //m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1); + //} + m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket); + m_bean.JK_CONSUM.assign(jk8Isconsumables); + m_bean.JK_IS_BUY.assign(jk8IsBuy); + m_bean.JK_IS_MAKE.assign(jk8IsMake); + m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource); + m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet); + m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType); + m_bean.JK_BUYER.assign(jk8Buyer); + m_bean.JK_SCRAP_DATE.assign(jk8DisabledDate); + m_bean.JK_ATTR_1.assign(jk8EnableDate); + //ʧЧ״̬disΪգ״̬enaʧЧÿ + if(strcmp(dateType.c_str(),"dis")==0) + { + + m_bean.JK_ATTR_1.assign("\0"); + }else if(strcmp(dateType.c_str(),"ena")==0) + { + m_bean.JK_SCRAP_DATE.assign("\0"); + + } + //if(strcmp.(jk8PurLeadTime1,"")!=0){ + m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime); + //}else{ + // m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1); + //} + printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1); + //if(strcmp(jk8SafeStock1,"")!=0){ + m_bean.JK_SAFE_STOCK.assign(jk8SafeStock); + //}else{ + // m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1); + //} + printf("jk8SafeStock1=%s\n",jk8SafeStock1); + if(strcmp(jk8SupplyType1,"")!=0){ + strncpy(jk8SupplyType2,jk8SupplyType1, 1);//ȡһ + printf("jk8SafeStock2=%s\n",jk8SupplyType2); + m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2); + }else{ + m_bean.JK_SUPPLY_TYPE1.assign("3"); + } + + printf("jk8Warehouse1=%s\n",jk8SafeStock1); + + if(strcmp(jk8Warehouse1,"")!=0){ + strncpy(jk8Warehouse2,jk8Warehouse1, 2);//ȡһ + + m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2); + }else{ + m_bean.JK_WARE_HOUSE1.assign("01"); + } + + //if(strcmp(jk8InnTransCoe1,"")!=0){ + m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe); + //}else{ + // m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1); + //} + m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper); + m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans); + m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod); + + + sm_bean_vec.push_back(m_bean); + + //ͷԴ + if(master_tags !=NULL) + { + MEM_free(master_tags); + master_tags = NULL; + } + + if(jk8SpecModel !=NULL) + { + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + + if(jk8Remarks !=NULL) + { + MEM_free(jk8Remarks); + jk8Remarks =NULL; + } + if(jk8ProductIdentifyNO !=NULL) + { + MEM_free(jk8ProductIdentifyNO); + jk8ProductIdentifyNO =NULL; + } + + if(jk8TechModel !=NULL) + { + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + if(jk8DisabledDate !=NULL) + { + MEM_free(jk8DisabledDate); + jk8DisabledDate =NULL; + } + if(jk8EnableDate !=NULL) + { + MEM_free(jk8EnableDate); + jk8EnableDate =NULL; + } + + if(status_tags !=NULL) + { + MEM_free(status_tags); + status_tags =NULL; + } + + if(desin_tags !=NULL){ + MEM_free(desin_tags); + desin_tags = NULL; + } + + if(uom_str != NULL) + { + MEM_free(uom_str); + uom_str =NULL; + } + + if(object_name != NULL) + { + MEM_free(object_name); + object_name = NULL; + + } + if(represented_by !=NULL){ + MEM_free(represented_by); + represented_by = NULL; + } + + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + + + if(jk8IsDomesticMarket !=NULL) + { + MEM_free(jk8IsDomesticMarket); + jk8IsDomesticMarket =NULL; + } + if(jk8Isconsumables !=NULL) + { + MEM_free(jk8Isconsumables); + jk8Isconsumables =NULL; + } + if(jk8IsBuy !=NULL) + { + MEM_free(jk8IsBuy); + jk8IsBuy =NULL; + } + if(jk8IsMake !=NULL) + { + MEM_free(jk8IsMake); + jk8IsMake =NULL; + } + if(jk8IsOutsource !=NULL) + { + MEM_free(jk8IsOutsource); + jk8IsOutsource =NULL; + } + if(jk8AccountSet !=NULL) + { + MEM_free(jk8AccountSet); + jk8AccountSet =NULL; + } + if(jk8BusinessType !=NULL) + { + MEM_free(jk8BusinessType); + jk8BusinessType =NULL; + } + if(jk8Buyer !=NULL) + { + MEM_free(jk8Buyer); + jk8Buyer =NULL; + } + if(jk8SupplyType1 !=NULL) + { + MEM_free(jk8SupplyType1); + jk8SupplyType1 =NULL; + } + if(jk8Warehouse1 !=NULL) + { + MEM_free(jk8Warehouse1); + jk8Warehouse1 =NULL; + } + if(jk8WarehouseKeeper !=NULL) + { + MEM_free(jk8WarehouseKeeper); + jk8WarehouseKeeper =NULL; + } + + if(jk8IsInnTrans !=NULL) + { + MEM_free(jk8IsInnTrans); + jk8IsInnTrans =NULL; + } + + if(jk8PlanMethod !=NULL) + { + MEM_free(jk8PlanMethod); + jk8PlanMethod =NULL; + } + + if(jk8UnitWeight1 !=NULL) + { + MEM_free(jk8UnitWeight1); + jk8UnitWeight1 =NULL; + } + if(jk8UnitVolume1 !=NULL) + { + MEM_free(jk8UnitVolume1); + jk8UnitVolume1 =NULL; + } + if(jk8PurLeadTime1 !=NULL) + { + MEM_free(jk8PurLeadTime1); + jk8PurLeadTime1 =NULL; + } + if(jk8SafeStock1 !=NULL) + { + MEM_free(jk8SafeStock1); + jk8SafeStock1 =NULL; + } + if(jk8InnTransCoe1 !=NULL) + { + MEM_free(jk8InnTransCoe1); + jk8InnTransCoe1 =NULL; + } + +} + +/******************************************************* +* +* ȡϢ +* +*******************************************************/ +void JK_get_subline_props(string bom_id, + string bom_rev, + string c_line_id, + tag_t bom_line_tag, + vector & sub_bom_vec){ + + int sub_obj_count = 0, + effectiveDate_count = 0, + order_count = 0, + ratio_count = 0, + n_substitute = 0, + golbal_alt_count = 0, + golbal_Date_count = 0, + golbal_order_count = 0, + golbal_ratio_count = 0; + + + tag_t *substitute_tags = NULL, + *golbal_alt_tags = NULL, + bl_item = NULLTAG, + bl_rev = NULLTAG; + + char ** golbalDate_str_s = NULL, + ** golbalorder_str_s = NULL, + ** golbalratio_str_s = NULL; + /*char ** effectiveDate_str_s = NULL, + ** order_str_s = NULL, + ** ratio_str_s = NULL, + item_id_2[ITEM_id_size_c + 1] = "\0";*/ + + char * effectiveDate_str = NULL, + * order_str = NULL, + * ratio_str = NULL, + item_id_2[ITEM_id_size_c + 1] = "\0"; + if(bom_line_tag==NULL) + { + return; + } + ITKCALL(AOM_ask_value_tag(bom_line_tag,"bl_line_object",&bl_rev)); + if(bl_rev==NULL) + { + return; + } + ITKCALL(ITEM_ask_item_of_rev(bl_rev,&bl_item)); + ITKCALL(AOM_ask_value_tags(bl_item,"global_alt_list",&golbal_alt_count,&golbal_alt_tags)); + ITKCALL(BOM_line_list_substitutes(bom_line_tag,&n_substitute,&substitute_tags)); + + /*ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_EffectiveDate,&effectiveDate_count,&effectiveDate_str_s)); + ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_Order,&order_count,&order_str_s)); + ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_Ratio,&ratio_count,&ratio_str_s));*/ + + ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitTime",&golbal_Date_count,&golbalDate_str_s)); //2018.3.15ȫ + ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitOrder",&golbal_order_count,&golbalorder_str_s)); + ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitRatio",&golbal_ratio_count,&golbalratio_str_s)); + + ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_EffectiveDate1,&effectiveDate_str)); + ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_Order1,&order_str)); + ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_Ratio1,&ratio_str)); + + vector orderVecs ; + vector ratioVecs ; + vector effectiveVecs ; + Split(effectiveDate_str,",",effectiveVecs); + Split(order_str,",",orderVecs); + Split(ratio_str,",",ratioVecs); + + if(n_substitute == effectiveVecs.size() + && n_substitute == ratioVecs.size() + && n_substitute == orderVecs.size()){ + printf("滻滻滻ڣ滻˳ һ£贫\n"); + for(int i = 0;i < n_substitute;i++){ + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + char * item_id =NULL; + ITKCALL(AOM_ask_value_string(substitute_tags[i],"bl_item_item_id",&item_id)); + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id); + + string orderVec1="1"; + string ratioVec1="1"; + string effectiveVec1="2001-01-01"; + for(int j = 0;j < n_substitute;j++){ + vector orderVec ; + vector ratioVec ; + vector effectiveVec ; + printf("orderVecs=%s\n",orderVecs[i]); + printf("ratioVecs=%s\n",orderVecs[i]); + printf("effectiveVecs=%s\n",orderVecs[i]); + Split(orderVecs[i],"&",orderVec); + Split(ratioVecs[i],"&",ratioVec); + Split(effectiveVecs[i],"&",effectiveVec); + if(orderVec.empty()){ + + }else{ + if(orderVec.size()>1&&stricmp(item_id,orderVec[0].c_str()) == 0){ + if(strcmp(orderVec[1].c_str(),"")==0){ + + }else{ + orderVec1=orderVec[1]; + } + + } + } + + if(ratioVec.empty()){ + + }else{ + if(ratioVec.size()>1&&stricmp(item_id,ratioVec[0].c_str()) == 0){ + if(strcmp(ratioVec[1].c_str(),"")==0){ + + }else{ + ratioVec1=ratioVec[1]; + } + } + } + + if(effectiveVec.empty()){ + + }else{ + if(effectiveVec.size()>1&&stricmp(item_id,effectiveVec[0].c_str()) == 0){ + if(strcmp(effectiveVec[1].c_str(),"")==0){ + + }else{ + effectiveVec1=effectiveVec[1]; + } + + } + } + + + } + printf("id =%s ,orderVec1= %s /n",item_id,orderVec1); + printf("id =%s ,ratioVec1= %s /n",item_id,ratioVec1); + printf("id =%s ,effectiveVec1= %s /n",item_id,effectiveVec1); + + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(orderVec1); + + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign(ratioVec1); + + sub_struct.JK_SUBSTITUTE_PART_DATE.assign(effectiveVec1); + sub_struct.JK_IS_GLOBAL.assign("2"); + + sub_bom_vec.push_back(sub_struct); + if(item_id!=NULL){ + MEM_free(item_id); + item_id =NULL; + } + } + }else{ + printf("滻滻滻ڣ滻˳ һ£Ĭϴ\n"); + for(int i = 0;i < n_substitute;i++){ + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + char * item_id =NULL; + ITKCALL(AOM_ask_value_string(substitute_tags[i],"bl_item_item_id",&item_id)); + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id); + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(index); + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign("1"); + sub_struct.JK_SUBSTITUTE_PART_DATE.assign("2001-01-01"); + sub_struct.JK_IS_GLOBAL.assign("2"); + + sub_bom_vec.push_back(sub_struct); + if(item_id!=NULL){ + MEM_free(item_id); + item_id =NULL; + } + } + + } + //ȫ滻 + if(golbal_alt_count == golbal_Date_count + && golbal_alt_count == golbal_order_count + && golbal_alt_count == golbal_ratio_count){ + printf("ȫ滻滻滻ڣ滻˳ һ£贫\n"); + for(int i = 0 ;i < golbal_alt_count;i++){ + ITKCALL(ITEM_ask_id(golbal_alt_tags[i],item_id_2)); + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + char orderVec1[100]="1"; + char ratioVec1[100]="1"; + char effectiveVec1[100]="2001-01-01"; + + if(strcmp(golbalorder_str_s[i],"")==0){ + strcpy(orderVec1,"1"); + + }else{ + strcpy(orderVec1,golbalorder_str_s[i]); + } + if(strcmp(golbalratio_str_s[i],"")==0){ + strcpy(ratioVec1,"1"); + }else{ + strcpy(ratioVec1,golbalratio_str_s[i]); + } + if(strcmp(golbalDate_str_s[i],"")==0){ + strcpy(effectiveVec1,"2001-01-01"); + }else{ + strcpy(effectiveVec1,golbalDate_str_s[i]); + } + + + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id_2); + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(orderVec1); + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign(ratioVec1); + sub_struct.JK_SUBSTITUTE_PART_DATE.assign(effectiveVec1); + sub_struct.JK_IS_GLOBAL.assign("1"); + sub_bom_vec.push_back(sub_struct); + } + + + + }else{ + printf("ȫ滻滻滻ڣ滻˳ һ£Ĭϴ\n"); + for(int i = 0 ;i < golbal_alt_count;i++){ + ITKCALL(ITEM_ask_id(golbal_alt_tags[i],item_id_2)); + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id_2); + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(index); + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign("1"); + sub_struct.JK_SUBSTITUTE_PART_DATE.assign("2001-01-01"); + sub_struct.JK_IS_GLOBAL.assign("1"); + sub_bom_vec.push_back(sub_struct); + } + } + + + if(substitute_tags!=NULL){ + MEM_free(substitute_tags); + substitute_tags =NULL; + } + if(golbal_alt_tags !=NULL){ + MEM_free(golbal_alt_tags); + golbal_alt_tags =NULL; + } + + +} + +/******************************************************* +* +* ȡbomlineԵ +* +********************************************************/ +void JK_get_bomline_props(string bom_id, + string bom_rev, + tag_t line_tag , + vector & p_bom_vec , + vector & c_bom_vec, + vector & sub_bom_vec) +{ + int child_count = 0 , + i = 0; + tag_t * child_tags = NULL; + POM_AM__set_application_bypass(true); + ITKCALL(BOM_line_ask_all_child_lines(line_tag,&child_count,&child_tags)); + for( i = 0 ; i < child_count ; i++){ + char * bl_item_id =NULL, + * bl_item_rev_id = NULL, + * Jk8SupplyType = NULL, + Jk8SupplyType1[40]="\0", + *Jk8Warehouse =NULL, + Jk8Warehouse1[40]="\0", + *bl_quantity =NULL, + *JK_BOM_CWR = NULL, + *Jk8RemarkDesc = NULL; + char* type_class=NULL; + tag_t rev_tag = NULLTAG, + *view_tags =NULL; + int view_count = 0; + string bl_rev_id ; + //ΪȨ޹ܿԶȡbl_item_object_typeҪ· + POM_AM__set_application_bypass(true); + ITKCALL( AOM_ask_value_string(child_tags[i],"bl_item_object_type",&type_class)); + printf("type_class=%s\n",type_class); + if(strcmp(type_class, "JK8EmbSoftware" ) ==0){//벻 2017.9.27 + printf("JK8EmbSoftware"); + continue; + + } + + ITKCALL(AOM_ask_value_string(child_tags[i],"bl_item_item_id",&bl_item_id));//bl_item_item_id + if(strcmp(bl_item_id,"LS")==1){ //ʱϲ 2018.1.22 + continue; + } + ITKCALL(AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag)); + + ITKCALL(AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&bl_item_rev_id));//bl_item_id + ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8SupplyType,&Jk8SupplyType));//Jk8SupplyType Ӧ + ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8Warehouse,&Jk8Warehouse));//Jk8Warehouse ֿ + ITKCALL(AOM_UIF_ask_value(child_tags[i],BOM_JK_BOM_CWR,&JK_BOM_CWR));//BOM_JK_BOM_CWR + ITKCALL(AOM_ask_value_string(child_tags[i],"bl_quantity",&bl_quantity));// + ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8RemarkDesc,&Jk8RemarkDesc));//Jk8RemarkDesc ע + + bl_rev_id.assign(bl_item_rev_id); + JK_C_BOM_STRUCT c_bean; + + c_bean.JK_BOM_ID.assign(bom_id); + c_bean.JK_BOM_REV.assign(bom_rev); + c_bean.JK_BOM_CID.assign(bl_item_id); + + if(Jk8SupplyType==NULL || strlen(Jk8SupplyType) ==0){ + c_bean.JK_SUPPLY_TYPE.assign("3");//Jk8SupplyType + }else{ + strncpy(Jk8SupplyType1,Jk8SupplyType, 1);//ȡһ + c_bean.JK_SUPPLY_TYPE.assign(Jk8SupplyType1);//Jk8SupplyType + } + if(Jk8Warehouse == NULL || strlen(Jk8Warehouse) == 0){ + c_bean.JK_WAREHOUSE.assign("");//Jk8Warehouse + + }else{ + strncpy(Jk8Warehouse1,Jk8Warehouse, 2);//ȡ2 + c_bean.JK_WAREHOUSE.assign(Jk8Warehouse1);//Jk8Warehouse + } + + + if(bl_quantity == NULL ||strlen(bl_quantity) ==0){ + c_bean.JK_QUANTITY.assign("1"); + }else{ + c_bean.JK_QUANTITY.assign(bl_quantity); + } + c_bean.JK_REMARK.assign(Jk8RemarkDesc); + + if(JK_BOM_CWR == NULL|| strlen(JK_BOM_CWR)==0){ + c_bean.JK_BOM_CWR.assign("0");//JK_BOM_CWR//2017/10.23ӼĬֵ1Ϊ0 + //}else if(strcmp(JK_BOM_CWR,"")==0){ + }else{ + c_bean.JK_BOM_CWR.assign(JK_BOM_CWR);//JK_BOM_CWR + } + + c_bom_vec.push_back(c_bean); + if(child_tags[i]!=NULL) + { + JK_get_subline_props(bom_id,bom_rev,c_bean.JK_BOM_CID,child_tags[i],sub_bom_vec); + } + + + // ITKCALL(AOM_ask_value_tags(rev_tag,"structure_revisions",&view_count,&view_tags)); + if(view_count > 0){ + + //ȡBOMṹʼ + //JK_get_top_bomline_props(view_tags[0],p_bom_vec,c_bom_vec,sub_bom_vec); + } + + if(type_class !=NULL){ + MEM_free(type_class); + type_class =NULL; + } + + if(view_tags !=NULL){ + MEM_free(view_tags); + view_tags =NULL; + } + + if(bl_item_rev_id !=NULL){ + MEM_free(bl_item_rev_id); + bl_item_rev_id =NULL; + } + + if(bl_item_id!=NULL){ + MEM_free(bl_item_id); + bl_item_id = NULL; + } + if(Jk8SupplyType != NULL){ + MEM_free(Jk8SupplyType); + Jk8SupplyType =NULL; + } + if(Jk8Warehouse != NULL){ + MEM_free(Jk8Warehouse); + Jk8Warehouse =NULL; + } + if(bl_quantity != NULL){ + MEM_free(bl_quantity); + bl_quantity =NULL; + } + if(Jk8RemarkDesc != NULL){ + MEM_free(Jk8RemarkDesc); + Jk8RemarkDesc =NULL; + } + if(JK_BOM_CWR !=NULL){ + MEM_free(JK_BOM_CWR); + JK_BOM_CWR =NULL; + + } + + } + POM_AM__set_application_bypass(false); + if(child_tags!=NULL){ + MEM_free(child_tags); + child_tags =NULL; + } +} + + + +/******************************************************* +* +* ȡTOP BomlineԵ +* +********************************************************/ +void JK_get_top_bomline_props(tag_t view_tag , + vector & p_bom_vec , + vector & c_bom_vec, + vector & sub_bom_vec) +{ + int ifail = 0 , + i = 0, + status_count = 0 , + c_line_count = 0 , + rev_form_cnt = 0 ; + tag_t rev_tag =NULLTAG, + item_tag = NULLTAG, + owning_user_tag = NULLTAG, + current_user_tag = NULLTAG, + current_group_mem_tag = NULLTAG, + person_tag = NULLTAG, + bom_window_tag = NULLTAG, + *status_tags = NULL, + status_tag = NULLTAG, + top_line_tag = NULLTAG, + *c_line_tags = NULL, + *rev_form_tags = NULL; + + char item_id[ITEM_id_size_c + 1] = "\0", + rev_id[ITEM_id_size_c + 1] = "\0", + *user_name = NULL, + *jk8_mjshl = NULL, + create_date_str[32] = "\0", + send_date_str[32] = "\0", + person_name[SA_person_name_size_c + 1] = "\0"; + date_t status_date ; + date_t create_date ; + string is_scrap,scrap_date; + date_t current_date; + + current_time(¤t_date); + sprintf(send_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + ITKCALL(ifail = BOM_create_window(&bom_window_tag));//windowͼ + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,view_tag,&top_line_tag));//ȡbomline + ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + if(c_line_count == 0){ + printf("ûBOMṹ"); + ITKCALL(ifail = BOM_close_window(bom_window_tag)); + return; + } + //ȡǰû + ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); + ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); + ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); + ITKCALL(SA_ask_person_name(person_tag , person_name)); + printf("current person_name=> %s\n",person_name); + + ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//ȡBOMLINEİ汾 + ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag)); + ITKCALL(ITEM_ask_id(item_tag,item_id));//ϱ + + if(strcmp(item_id,"E-")==1){ + return; + } + if(strcmp(item_id,"LS")==1){ + return; + } + + + ITKCALL(ITEM_ask_rev_id(rev_tag,rev_id));//ȡ汾 + + ITKCALL(AOM_ask_value_date(rev_tag,"creation_date", &create_date));//add 汾ʱ creation_date + + if(create_date.year !=0){ + sprintf(create_date_str,"%04d-%02d-%02d",create_date.year,1+ create_date.month,create_date.day); + } + + ITKCALL(AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&rev_form_cnt,&rev_form_tags)); + ITKCALL(AOM_ask_value_tag(view_tag,"owning_user",&owning_user_tag));//bvr + ITKCALL(AOM_ask_value_string(owning_user_tag,"user_name",&user_name));//ȡ + + ITKCALL(ifail = AOM_UIF_ask_value(rev_form_tags[i],BOM_jk8_mjshl,&jk8_mjshl));//ĸ jk8_mjshl + ITKCALL(ifail = AOM_ask_value_tags(view_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ + + if(rev_form_tags!=NULL){ + MEM_free(rev_form_tags); + rev_form_tags =NULL; + } + if(status_count > 0) + { + status_tag = status_tags[0]; + AOM_ask_value_date(status_tag,"date_released",&status_date); + } + + for(i = 1;i < status_count;i++) + { + date_t date_t_i ; + AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); + int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); + int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); + if(day_count1 < day_count2) + { + status_tag = status_tags[i]; + status_date = date_t_i; + } + } + + is_scrap.assign("0"); + if(status_tag !=NULLTAG) + { + char * status_name = NULL; + ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); + if(strcmp(status_name, SCRAPE_STATUS_NAME ) ==0){ + is_scrap.assign("1"); + char scrp_date_str[32] = "\0"; + sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); + scrap_date.assign(scrp_date_str); + }else{ + scrap_date.assign("2099-12-31"); + } + + if(status_name !=NULL){ + MEM_free(status_name); + status_name = NULL; + } + }else{ + scrap_date.assign("2099-12-31"); + } + + JK_P_BOM_STRUCT p_bean; + + /*****************д*****************/ + p_bean.JK_BOM_ID.assign(item_id); + p_bean.JK_BOM_REV.assign(rev_id); + p_bean.JK_OWNING_USER.assign(user_name); + if(jk8_mjshl == NULL){ + p_bean.JK_RATE.assign("0");//jk8_mjshl//2017/10/23ĸĬֵ1Ϊ0 + }else if(strlen(jk8_mjshl)==0){ + p_bean.JK_RATE.assign("0");//jk8_mjshl//2017/10/23ĸĬֵ1Ϊ0 + }else{ + p_bean.JK_RATE.assign(jk8_mjshl);//jk8_mjshl + } + p_bean.JK_CREATION_DATE.assign(create_date_str); + p_bean.JK_SCRAP_DATE.assign(scrap_date.c_str()); + p_bean.JK_IS_SCRAP.assign(is_scrap); + + p_bean.JK_FROM.assign(person_name); + p_bean.JK_TRANS_TIME.assign(send_date_str); + p_bean.JK_STATUS.assign("0"); + p_bean.JK_FROM_SYS.assign("TC"); + /******************************************/ + p_bom_vec.push_back(p_bean); + printf("====>1"); + JK_get_bomline_props(p_bean.JK_BOM_ID,p_bean.JK_BOM_REV,top_line_tag,p_bom_vec,c_bom_vec,sub_bom_vec); + printf("====>2"); + //ͷԴ + if(c_line_tags !=NULL){ + MEM_free(c_line_tags); + c_line_tags = NULL; + } + if(user_name !=NULL) + { + MEM_free(user_name); + user_name = NULL; + } + if(jk8_mjshl !=NULL) + { + MEM_free(jk8_mjshl); + jk8_mjshl =NULL; + } + if(status_tags !=NULL) + { + MEM_free(status_tags); + status_tags =NULL; + } + ITKCALL(ifail = BOM_close_window(bom_window_tag)); +} + + +/******************************************************* +* +* Ϸ͵ERP +* handler +* include_type ҪЩ /ֿegItemRevision/JK8MaterialRevision/JK8LSMaterialRevision +* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +* +*******************************************************/ +int JK_send_material(EPM_action_message_t msg) +{ + ECHO("\n********************************"); + ECHO("\n********Ͽʼ************"); + ECHO("\n********************************\n"); + // + int ifail = EPM_go , + arg_cnt = 0 , + i = 0 , + att_cnt = 0; + + tag_t task_tag = NULLTAG , + root_task_tag =NULLTAG , + *attachments = NULL; + + char * argflag = NULL , + *argvalue =NULL , + *arg = NULL , + arg_value[1024] = "\0", + statusName[1024]="\0", + statusMark[1024]="\0", + type_class[WSO_object_type_size_c+1] ="\0"; + + string materialStatusName=""; + + logical is_debug = false; + logical add_mark=false; + + //¼Ϣ + map errMap; + + vector type_vec; + + vector material_vec; + vector material_sub_vec; + + vector bigCodeVec;//vector bigCodeVec,vector qrBigCodeVec + vector qrBigCodeVec; + vector uomVec; + map uomMapping; + //ȡҪȡΪķ + getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec); + //ȡݵķ + getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec); + //ȡλ + getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec); + for(i = 0 ; i < uomVec.size() ; i++){ + string uom_u8 = uomVec[i]; + vector uV; + Split(uom_u8,"=",uV); + //printf("%s%d \n",uom_u8.c_str(),uV.size()); + if(uV.size() == 2){ + printf("%s %s \n",uV[1],uV[0]); + uomMapping.insert(pair(uV[1],uV[0])); + } + } + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //ǷҪ¼log־ + else if(stricmp(argflag, "debug") == 0) + { + if(argvalue != NULL) + { + if(strcmp(argvalue,"true")==0) + { + is_debug = true; + } + else + { + is_debug = false; + } + } + else + { + + string key_id; + key_id.assign("ȱdebug"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //2018.12.26״̬ʲôֵмֵΪ׼ûоֵΪ׼ + else if(stricmp(argflag, "addStatus_name") == 0) + { + if(argvalue != NULL) + { + strcpy(statusName,argvalue); + materialStatusName=statusName; + } + /*else + { + + string key_id; + key_id.assign("ȱaddStatus_name"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + }*/ + } + //״̬ʵֵ + else if(stricmp(argflag, "addStatus_mark") == 0) + { + if(argvalue != NULL) + { + strcpy(statusMark,argvalue); + add_mark=true; + } + else + { + + string key_id; + key_id.assign("ȱaddStatus_mark"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + tag_t target_tag = attachments[i]; + //ȡ + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + continue; + } + char * item_id_temp = NULL; + ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp)); + if(strcmp(item_id_temp,"E-") == 1 ){ + ECHO("E-ͷϲҪ\n"); + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + continue; + } + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + //2018.12.4 ݲ汾״̬ 2018.12.26 ԣֻ + //2019.1.9 ݲ汾״̬ + if(materialStatusName.length()>0) + { + POM_AM__set_application_bypass(true); + ITKCALL(AOM_load(target_tag)); + ITKCALL(AOM_lock(target_tag)); + ITKCALL(AOM_refresh(target_tag,1)); +// ITKCALL(ifail=AOM_set_value_string(target_tag,"jk8TecModel1",statusName)); +// ITKCALL(ifail=AOM_set_value_string(target_tag,"jk8Status",statusName)); + ITKCALL(ifail=AOM_UIF_set_value(target_tag,"jk8Status",statusName)); + POM_AM__set_application_bypass(false); + AOM_save(target_tag); + AOM_refresh(target_tag,0); + AOM_unlock(target_tag); + } + + //2018.12.4 ݲ汾״̬ ͨϵͳhandlerӣ + if(add_mark==true) + { + tag_t release_stat = NULLTAG; + ITKCALL(ifail=RELSTAT_create_release_status(statusMark, &release_stat));//TCM Released jk8Disabled + POM_AM__set_application_bypass(true); + ITKCALL(ifail=RELSTAT_add_release_status(release_stat, 1, &target_tag, true)); + POM_AM__set_application_bypass(false); + } + + JK_get_material_props(target_tag , material_vec,bigCodeVec,qrBigCodeVec,uomMapping,materialStatusName); + + JK_get_material_subs(target_tag , material_sub_vec); + } + + if(attachments!=NULL){ + MEM_free(attachments); + attachments =NULL; + } + vector faild_vec ; + JK_write_material_to_DB(material_vec,faild_vec); + material_vec.clear(); + + JK_write_material_subs_to_DB(material_sub_vec); + material_sub_vec.clear(); + + ECHO("\n********************************"); + ECHO("\n********Ͻ************"); + ECHO("\n********************************\n"); + return ifail; +} + + + + + +int JK_send_material1(vector attachments,string dateType) +{ + ECHO("\n********************************"); + ECHO("\n********ϿʼJK_send_material1************"); + ECHO("\n********************************\n"); + // + int ifail = EPM_go , + arg_cnt = 0 , + i = 0 , + att_cnt = attachments.size(); + +// tag_t task_tag = NULLTAG , +// root_task_tag =NULLTAG , +// *attachments = NULL; + +// char * argflag = NULL , +// *argvalue =NULL , +// *arg = NULL , +// arg_value[1024] = "\0", + char type_class[WSO_object_type_size_c+1] ="\0"; + + logical is_debug = true; + + //¼Ϣ + map errMap; + + vector type_vec; + type_vec.push_back("JK8MaterialRevision"); + + vector material_vec; + + vector bigCodeVec;//vector bigCodeVec,vector qrBigCodeVec + vector qrBigCodeVec; + vector uomVec; + map uomMapping; + //ȡҪȡΪķ + getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec); + //ȡݵķ + getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec); + //ȡλ + getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec); + for(i = 0 ; i < uomVec.size() ; i++){ + string uom_u8 = uomVec[i]; + vector uV; + Split(uom_u8,"=",uV); + //printf("%s%d \n",uom_u8.c_str(),uV.size()); + if(uV.size() == 2){ + printf("%s %s \n",uV[1],uV[0]); + uomMapping.insert(pair(uV[1],uV[0])); + } + } + //ȡhandlerĸ +// arg_cnt = TC_number_of_arguments(msg.arguments); +// ECHO("Ϊ%d\n",arg_cnt); +// if (arg_cnt > 0) +// { +// for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); +// } +// } +// //ǷҪ¼log־ +// else if(stricmp(argflag, "debug") == 0) +// { +// if(argvalue != NULL) +// { +// if(strcmp(argvalue,"true")==0) +// { +// is_debug = true; +// } +// else +// { +// is_debug = false; +// } +// } +// else +// { +// +// string key_id; +// key_id.assign("ȱsecondary_type"); +// errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); +// } +// } +// } +// MEM_free(argflag); +// MEM_free(argvalue); +// } + + //ȡĿ +// task_tag = msg.task; +// if(task_tag == NULLTAG) +// { +// +// return EPM_nogo; +// } +// EPM_ask_root_task(task_tag, &root_task_tag); +// EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + tag_t target_tag = attachments[i]; + //ȡ + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + continue; + } + char * item_id_temp = NULL; + ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp)); + if(strcmp(item_id_temp,"E-") == 1 ){ + ECHO("E-ͷϲҪ\n"); + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + continue; + } + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + cout<<"material_vec.size()1---------------------"< faild_vec ; + JK_write_material_to_DB(material_vec,faild_vec); + material_vec.clear(); + + ECHO("\n********************************"); + ECHO("\n********Ͻ************"); + ECHO("\n********************************\n"); + return ifail; +} + + +/******************************************************* +* +* BOM͵ERP +* handler +* include_type ҪЩ /ֿegItemRevision/JK8MaterialRevision/JK8LSMaterialRevision +* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +* +********************************************************/ +int JK_send_bom(EPM_action_message_t msg) +{ + ECHO("\n********************************\n"); + ECHO("\n********BOMʼ************\n"); + ECHO("\n*******************************\n"); + // + int ifail = EPM_go , + arg_cnt = 0 , + i = 0 , + att_cnt = 0; + + tag_t task_tag = NULLTAG , + root_task_tag =NULLTAG , + *attachments = NULL; + + char * argflag = NULL , + *argvalue =NULL , + *arg = NULL , + arg_value[1024] = "\0", + type_class[WSO_object_type_size_c+1] ="\0"; + + logical is_debug = false; + + //¼Ϣ + map errMap; + + vector type_vec; + + vector p_bom_vec; + vector c_bom_vec; + vector sub_bom_vec; + + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //ǷҪ¼log־ + else if(stricmp(argflag, "debug") == 0) + { + if(argvalue != NULL) + { + if(strcmp(argvalue,"true")==0) + { + is_debug = true; + } + else + { + is_debug = false; + } + } + else + { + + string key_id; + key_id.assign("ȱsecondary_type"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + + tag_t target_tag = attachments[i]; + //ȡ PSBOMViewRevision + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + continue; + } + JK_get_top_bomline_props(target_tag,p_bom_vec,c_bom_vec,sub_bom_vec); + } + + if(attachments!=NULL) + { + MEM_free(attachments); + attachments =NULL; + } + vector faild_p_vec; + vector faild_c_vec; + vector faild_sub_vec; + //bomϢϢд뵽м + JK_write_p_bom_to_DB(p_bom_vec,faild_p_vec); + //bomṹϢд뵽м + JK_write_c_bom_to_DB(c_bom_vec,faild_c_vec); + JK_write_sub_bom_to_DB(sub_bom_vec,faild_sub_vec); + printf("faild_p_vec.size = %d \n",faild_p_vec.size()); + printf("faild_c_vec.size = %d \n",faild_c_vec.size()); + printf("faild_sub_vec.size = %d \n",faild_sub_vec.size()); + p_bom_vec.clear(); + c_bom_vec.clear(); + sub_bom_vec.clear(); + + ECHO("\n********************************"); + ECHO("\n********BOM************"); + ECHO("\n********************************\n"); + return 0; + +} + + + + diff --git a/jf_itk/jk_custom_erp.h b/jf_itk/jk_custom_erp.h new file mode 100644 index 0000000..381b6c6 --- /dev/null +++ b/jf_itk/jk_custom_erp.h @@ -0,0 +1,21 @@ +#include "erp_utils.h" +#include "ocilib.h" +#include "common_itk_util.h" +#include "string_utils.h" +#include "error_handling.h" +#include +#include +#include + + + + + + + + +int JK_send_material(EPM_action_message_t msg); +int JK_send_material1(vector attatchments,string dateType); +int JK_send_bom(EPM_action_message_t msg); + + diff --git a/jf_itk/jk_custom_erp_old.cpp b/jf_itk/jk_custom_erp_old.cpp new file mode 100644 index 0000000..c509da3 --- /dev/null +++ b/jf_itk/jk_custom_erp_old.cpp @@ -0,0 +1,3202 @@ +# include "jk_custom_erp.h" +# include "jk_custom_erp_struct.h" +# include "erp_send_item.h" +# include "common_itk_util.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hx_custom.h" +#include +//#include "../../../../../../../../TEAMCENTER/tc/include/ics/ics2.h" +void JK_get_top_bomline_props(tag_t view_tag , + vector & p_bom_vec , + vector & c_bom_vec, + vector & sub_bom_vec); + + + + + +/******************************************************* +* +* ȡϵϢ 2018.5.4 +* +********************************************************/ +void JK_get_material_subs(tag_t obj_tag , + vector & sm_bean_vec + ) +{ + int ifail = 0 , + global_count = 0, + master_count = 0, + i = 0; + tag_t item_tag =NULLTAG, + *global_tags = NULL, + * master_tags = NULL, + master_tag = NULLTAG, + global_tag = NULLTAG; + + + char item_id[ITEM_id_size_c + 1] = "\0"; + + + ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); + if(master_count > 0) + { + master_tag = master_tags[0]; + } + + + ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem + + + ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ + date_t current_date; + char create_date_str[32] = "\0"; + //ȡǰʱ + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + + ITKCALL(ifail = AOM_ask_value_tags(item_tag,"global_alt_list",&global_count,&global_tags));//ȫ + if(global_count>0){ + + printf("ڶȫ"); + for(i = 0;i < global_count;i++) + { + char * sub_item_id=NULL; + ITKCALL(ifail = AOM_ask_value_string(global_tags[i],"item_id",&sub_item_id));//id + if (sub_item_id!=NULL) + { + JK_RECORD_SUBSTIT_T subBean; + subBean.NO.assign(item_id); //id + subBean.SUBSTITNO.assign(sub_item_id); //ȫid + subBean.STATES.assign("1");//״̬ Ĭϴ1 + subBean.SUB_TRANS_TIME.assign(create_date_str); + sm_bean_vec.push_back(subBean); + } + if(sub_item_id !=NULL) + { + MEM_free(sub_item_id); + sub_item_id =NULL; + } + + + } + }else{ + JK_RECORD_SUBSTIT_T subBean; + printf("ȫ"); + subBean.NO.assign(item_id); + subBean.SUBSTITNO.assign(""); //ûȫĬϴ + subBean.STATES.assign("1"); + subBean.SUB_TRANS_TIME.assign(create_date_str); + sm_bean_vec.push_back(subBean); + + } + + //ͷԴ + if(master_tags !=NULL) + { + MEM_free(master_tags); + master_tags = NULL; + } + + if(global_tags !=NULL) + { + MEM_free(global_tags); + global_tags =NULL; + } + +} + + +void JK_upadte_material_subs_table(vector sm_bean_vec) +{ +; + int ifail = 0; + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + char updateSQL[3000] = "\0"; + + for(int i = 0;i < sm_bean_vec.size();i++){ + sprintf(updateSQL,"UPDATE %s SET STATES='4' WHERE NO='%s' AND STATES='1'", + JK_RECORD_SUBSTIT_TABLE,sm_bean_vec[i].NO); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + }else{ + printf("ʾ:TABLE ɹ, %s \n",updateSQL); + } + } + + ExecuteSQLNoInputParam("commit"); + DisConnServer(); + +} + + +/******************************************************* +* +* ϵϢм 2018.5.4 +* +********************************************************/ +void JK_write_material_subs_to_DB(vector sm_bean_vec + ) +{ + JK_upadte_material_subs_table(sm_bean_vec); + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 4; i++ ) + { + strcat(fields_material, JK_RECORD_SUBSTIT_fields[i]); + if( i != 3 ){ + strcat(fields_material,","); + } + + } + cout<<"111111111111111111"<%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + }else{ + printf("ʾ:TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + }else{ + EMH_store_error_s1(EMH_severity_user_error,ifail,"[ϴȫмʧ,ϵԱ!!]");//󵯴 + } + +end_handler: + + DisConnServer(); + +} + + +/************************************************ +* +* Ϣݵݿ +* +*************************************************/ + +void JK_upadte_material_table(vector sm_bean_vec) +{ + + cout<<"enter JK_upadte_material_table"< sm_bean_vec, + vector &faild_m_vec) +{ + cout<<"enter JK_write_material_to_DB"<%s\n",sql_value); + + + /*sprintf(sql_value,"insert into %s (JK_ATTR_1,JK_ATTR_2 ) values ('sssssss','jhkjhj' )", + JK_MATERIAL_TABLE + ); + printf("SQL =>%s\n",sql_value);*/ + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + faild_m_vec.push_back(sm_bean_vec[i]); + //goto end_handler; + }else{ + printf("ʾ:TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + }else{ + EMH_store_error_s1(EMH_severity_user_error,ifail,"[ϴU8ʧ,ϵԱ!!]");//󵯴 + } + +end_handler: + + DisConnServer(); + +} + + + + + +/************************************************ +* +* BOM ͷ Ϣݵݿ +* +*************************************************/ +void JK_update_bom_tables(vector p_bom_bean_vec){ + int ifail = 0; + date_t current_date; + char create_date_str[32] = "\0"; + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + char updateSQL[3000] = "\0"; + + for(int i = 0;i < p_bom_bean_vec.size();i++){ + sprintf(updateSQL,"UPDATE %s SET JK_STATUS='4',JK_OPERATE_TIME='%s' WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s' AND JK_STATUS='0'", + JK_BOM_PARENT_LINE_TABLE ,create_date_str,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + sprintf(updateSQL,"UPDATE %s SET JK_STATUS='3',JK_OPERATE_TIME='%s' WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s' AND JK_STATUS='2'", + JK_BOM_PARENT_LINE_TABLE ,create_date_str,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + + sprintf(updateSQL,"DELETE %s WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s'", + JK_BOM_CHILD_LINE_TABLE ,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + sprintf(updateSQL,"DELETE %s WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s'", + JK_BOM_SUBSTITUTE_PART_TABLE ,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV); + if(ExecuteSQLNoInputParam(updateSQL)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + } + } + + ExecuteSQLNoInputParam("commit"); + DisConnServer(); + + +} + +void JK_write_p_bom_to_DB(vector p_bom_bean_vec + ,vector & field_p_bean) +{ + + JK_update_bom_tables(p_bom_bean_vec); + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 24; i++ ) + { + strcat(fields_material, jk_p_bom_fields[i]); + if( i != 23 ) + strcat(fields_material,","); + } + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + for(i = 0; i < p_bom_bean_vec.size(); i++ ) + { + strcpy(insert_values_material,"'"); + strcat(insert_values_material,p_bom_bean_vec[i].JK_BOM_ID.c_str()); + strcat(insert_values_material,"','");// bom + strcat(insert_values_material,p_bom_bean_vec[i].JK_BOM_REV.c_str()); + strcat(insert_values_material,"','"); // bom汾 + strcat(insert_values_material,p_bom_bean_vec[i].JK_OWNING_USER.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,p_bom_bean_vec[i].JK_RATE.c_str()); + strcat(insert_values_material,"','"); // ĸ + strcat(insert_values_material,p_bom_bean_vec[i].JK_CREATION_DATE.c_str()); + strcat(insert_values_material,"','"); // Ч //5 + strcat(insert_values_material,p_bom_bean_vec[i].JK_SCRAP_DATE.c_str()); + strcat(insert_values_material,"','"); // ʧЧ + strcat(insert_values_material,p_bom_bean_vec[i].JK_IS_SCRAP.c_str()); + strcat(insert_values_material,"','"); // ǷʧЧ + strcat(insert_values_material,p_bom_bean_vec[i].JK_FROM.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,p_bom_bean_vec[i].JK_TRANS_TIME.c_str()); + strcat(insert_values_material,"','"); // ʱ + strcat(insert_values_material,p_bom_bean_vec[i].JK_STATUS.c_str()); + strcat(insert_values_material,"','"); // ״̬ + strcat(insert_values_material,p_bom_bean_vec[i].JK_ERROR_MSG.c_str()); + strcat(insert_values_material,"','"); // Ϣ + strcat(insert_values_material,p_bom_bean_vec[i].JK_OPERATE_TIME.c_str()); + strcat(insert_values_material,"','"); // ʱ //15 + strcat(insert_values_material,p_bom_bean_vec[i].JK_PUID.c_str()); + strcat(insert_values_material,"','"); // Ψһ + strcat(insert_values_material,p_bom_bean_vec[i].JK_FROM_SYS.c_str()); + strcat(insert_values_material,"','"); // ݷ + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_1.c_str()); + strcat(insert_values_material,"','"); // չֶ1 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_2.c_str()); + strcat(insert_values_material,"','"); // չֶ2 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_3.c_str()); + strcat(insert_values_material,"','"); // չֶ3 //20 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_4.c_str()); + strcat(insert_values_material,"','"); // չֶ4 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_5.c_str()); + strcat(insert_values_material,"','"); // չֶ5 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_6.c_str()); + strcat(insert_values_material,"','"); // չֶ6 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_7.c_str()); + strcat(insert_values_material,"','"); // չֶ7 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_8.c_str()); + strcat(insert_values_material,"','"); // չֶ8 //25 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_9.c_str()); + strcat(insert_values_material,"','"); // չֶ9 + strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 + strcat(insert_values_material,"'"); + + sprintf(sql_value,"insert into %s (%s ) values (%s )", + JK_BOM_PARENT_LINE_TABLE, + fields_material, + insert_values_material); + printf("SQL =>%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + field_p_bean.push_back(p_bom_bean_vec[i]); + }else{ + printf("ʾ:BOM_TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + } + +end_handler: + + DisConnServer(); + +} + +/************************************************ +* +* BOM ṹ Ϣݵݿ +* +*************************************************/ +void JK_write_c_bom_to_DB(vector c_bom_bean_vec + ,vector & field_c_bean) +{ + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 18; i++ ) + { + strcat(fields_material, jk_c_bom_fields[i]); + if( i != 17 ) + strcat(fields_material,","); + } + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + for(i = 0; i < c_bom_bean_vec.size(); i++ ){ + + if(strcmp(c_bom_bean_vec[i].JK_BOM_CID.c_str(),"")==0||c_bom_bean_vec[i].JK_BOM_CID.length()==0) + { + continue; + } + strcpy(insert_values_material,"'"); + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_ID.c_str()); + strcat(insert_values_material,"','");// bom + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_REV.c_str()); + strcat(insert_values_material,"','"); // bom汾 + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_CID.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,c_bom_bean_vec[i].JK_SUPPLY_TYPE.c_str()); + strcat(insert_values_material,"','"); // ĸ + strcat(insert_values_material,c_bom_bean_vec[i].JK_WAREHOUSE.c_str()); + strcat(insert_values_material,"','"); // Ч //5 + strcat(insert_values_material,c_bom_bean_vec[i].JK_QUANTITY.c_str()); + strcat(insert_values_material,"','"); // ʧЧ + strcat(insert_values_material,c_bom_bean_vec[i].JK_REMARK.c_str()); + strcat(insert_values_material,"','"); // ǷʧЧ + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_1.c_str()); + strcat(insert_values_material,"','"); // չֶ1 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_2.c_str()); + strcat(insert_values_material,"','"); // չֶ2 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_3.c_str()); + strcat(insert_values_material,"','"); // չֶ3 //20 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_4.c_str()); + strcat(insert_values_material,"','"); // չֶ4 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_5.c_str()); + strcat(insert_values_material,"','"); // չֶ5 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_6.c_str()); + strcat(insert_values_material,"','"); // չֶ6 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_7.c_str()); + strcat(insert_values_material,"','"); // չֶ7 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_8.c_str()); + strcat(insert_values_material,"','"); // չֶ8 //25 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_9.c_str()); + strcat(insert_values_material,"','"); // չֶ9 + strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 + strcat(insert_values_material,"','"); + strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_CWR.c_str());//Ӽ //27 + strcat(insert_values_material,"'"); + + sprintf(sql_value,"insert into %s (%s) values (%s)", + JK_BOM_CHILD_LINE_TABLE, + fields_material, + insert_values_material); + printf("SQL =>%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + field_c_bean.push_back(c_bom_bean_vec[i]); + }else{ + printf("ʾ:BOM_TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + } + +end_handler: + + DisConnServer(); + +} +/************************************************ +* +* BOM 滻 Ϣݵݿ +* +*************************************************/ +void JK_write_sub_bom_to_DB(vector sub_bom_bean_vec + ,vector & field_sub_bean) +{ + int i = 0, + ifail = 0; + char fields_material[4096]="", + insert_values_material[4096]="", + sql_value[10280] = "\0"; + for( i = 0; i < 17; i++ ) + { + strcat(fields_material, jk_sub_bom_fields[i]); + if( i != 16 ) + strcat(fields_material,","); + } + + if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) + { + ECHO("ʾ:мݱʧ\n"); + + EMH_store_error_s1( EMH_severity_information, + ERROR_ERP_LOGIN_FAIL, + "мݱʧ" ); + ifail = ERROR_ERP_LOGIN_FAIL; + return; + } + + for(i = 0; i < sub_bom_bean_vec.size(); i++ ) + { + if(strcmp(sub_bom_bean_vec[i].JK_BOM_CID.c_str(),"")==0||sub_bom_bean_vec[i].JK_BOM_CID.length()==0) + + { + continue; + } + strcpy(insert_values_material,"'"); + strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_ID.c_str()); + strcat(insert_values_material,"','");// bom + strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_REV.c_str()); + strcat(insert_values_material,"','"); // bom汾 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_CID.c_str()); + strcat(insert_values_material,"','"); // + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_ID.c_str()); + strcat(insert_values_material,"','"); // ĸ + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_INDEX.c_str()); + strcat(insert_values_material,"','"); // Ч //5 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_RATIO.c_str()); + strcat(insert_values_material,"','"); // ʧЧ + strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_DATE.c_str()); + strcat(insert_values_material,"','"); // ǷʧЧ + strcat(insert_values_material,sub_bom_bean_vec[i].JK_IS_GLOBAL.c_str()); + strcat(insert_values_material,"','"); // չֶ1 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_2.c_str()); + strcat(insert_values_material,"','"); // չֶ2 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_3.c_str()); + strcat(insert_values_material,"','"); // չֶ3 //20 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_4.c_str()); + strcat(insert_values_material,"','"); // չֶ4 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_5.c_str()); + strcat(insert_values_material,"','"); // չֶ5 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_6.c_str()); + strcat(insert_values_material,"','"); // չֶ6 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_7.c_str()); + strcat(insert_values_material,"','"); // չֶ7 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_8.c_str()); + strcat(insert_values_material,"','"); // չֶ8 //25 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_9.c_str()); + strcat(insert_values_material,"','"); // չֶ9 + strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 + strcat(insert_values_material,"'"); + + sprintf(sql_value,"insert into %s (%s) values (%s)", + JK_BOM_SUBSTITUTE_PART_TABLE, + fields_material, + insert_values_material); + printf("SQL =>%s\n",sql_value); + + if(ExecuteSQLNoInputParam(sql_value)==-1) + { + printf("ʾ:BOM_TABLE ʧ, %s \n",sql_value); + ifail = ERROR_OCI_FAIL; + EMH_store_error(EMH_severity_error, ifail); + //goto end_handler; + field_sub_bean.push_back(sub_bom_bean_vec[i]); + }else{ + printf("ʾ:BOM_TABLE ɹ, %s \n",sql_value); + } + } + if(ifail == 0) + { + ExecuteSQLNoInputParam("commit"); + } + +end_handler: + + DisConnServer(); + +} + +/******************************************************* +* +* ȡϵ +* +********************************************************/ +void JK_get_material_props(tag_t obj_tag , + vector & sm_bean_vec, + vector bigCodeVec, + vector qrBigCodeVec, + map uomMapping, + string materialStatusName) +{ + int ifail = 0 , + status_count = 0, + design_count = 0, + master_count = 0, + i = 0; + tag_t item_tag =NULLTAG, + *status_tags = NULL, + *desin_tags =NULL, + * master_tags = NULL, + master_tag = NULLTAG, + uom_tag =NULLTAG, + current_user_tag = NULLTAG, + current_group_mem_tag = NULLTAG, + person_tag = NULLTAG, + classification_object = NULLTAG, + parentTag = NULLTAG, + status_tag = NULLTAG; + + double dbjk8UnitWeight = 0,//λ + dbjk8UnitVolume = 0,//λ + dbjk8PurLeadTime=0,//̶ǰ + dbjk8SafeStock=0,//ȫ + dbjk8InnTransCoe=0;//ڲ׼۸ϵ + + + + char item_id[ITEM_id_size_c + 1] = "\0", + *object_name = NULL, + *item_revision_id = NULL, + *status_name = NULL, + *jk8SpecModel = NULL, + //2019.06.13 ˵ͲƷʶ + *jk8Remarks=NULL, +// *jk8ProductIdentifyNO=NULL, + //*jk8StockBigTypeNo = NULL, + *jk8TechModel = NULL, + *represented_by =NULL, + *jk8UnitWeight1 =NULL,//0 + *jk8UnitVolume1 =NULL,//0 + jk8UnitWeight[32 + 1]="\0", //λ" + jk8UnitVolume[32 + 1]="\0",//λ" + *jk8IsDomesticMarket =NULL,//Ƿ + *jk8Isconsumables =NULL,//Ƿ" + *jk8IsBuy =NULL,//Ƿɹ" + *jk8IsMake =NULL,//Ƿ" + *jk8IsOutsource =NULL,//Ƿί" + *jk8AccountSet =NULL,//Ĭ" + *jk8BusinessType =NULL,//ҵ" + *jk8Buyer =NULL,//ɹԱ" + *jk8PurLeadTime1 =NULL,//0 + *jk8SafeStock1 =NULL,//0 + jk8PurLeadTime[32 + 1]="\0",//̶ǰ" + jk8SafeStock[32 + 1]="\0",//ȫ" + *jk8SupplyType1 =NULL,//Ӧ" + jk8SupplyType2[40]="\0", + *jk8Warehouse1 =NULL,//Ĭϲֿ" + jk8Warehouse2[40]="\0", + *jk8InnTransCoe1 =NULL,//0 + jk8InnTransCoe[32 + 1]="\0",//ڲ׼۸ϵ" + *jk8WarehouseKeeper =NULL,//Ա" + *jk8IsInnTrans =NULL,//Ƿڲ" + *jk8PlanMethod =NULL,//ƻʽ" + *jk8DisabledDate=NULL,//ͣ + *jk8EnableDate=NULL,// + *jk8ProductIdentifyNO=NULL,//Ʒʶ + create_date_str[32] = "\0", + person_name[SA_person_name_size_c + 1] = "\0", + * icsID = NULL, + *uom_str = NULL; + date_t status_date ; + string is_scrap,scrap_date; + date_t current_date; + logical isclassed = false; + logical isFilter = false; + //ϴĹ + + //ȡ + ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ + if(isclassed){ + //char * icOid = NULL; + ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); + + ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); + + // + vector::iterator it; + it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID); + if(it != qrBigCodeVec.end()) + { + printf("\n[ %s ]Ƕ\n",icsID); + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + return; + } + + it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID); + + if(it != bigCodeVec.end()){ + printf("\n[ %s ]Ҫȡͷλ\n",icsID); + isFilter = true; + }else{ + printf("\n[ %s ]Ҫȡͷ5λ\n",icsID); + isFilter = false; + } + + }else{ + printf("\n ûз͵ \n"); + return ; + } + + + //ȡǰʱ + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); + ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); + ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); + ITKCALL(SA_ask_person_name(person_tag , person_name)); + printf("person_name=> %s\n",person_name); + + ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); + if(master_count > 0) + { + master_tag = master_tags[0]; + } + + //ȡ +// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ +// if(isclassed){ +// //char * icOid = NULL; +// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); +// +// ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); +// +// } +// + + ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem + + + ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ + + + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8DisabledDate,&jk8DisabledDate));//ͣ + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8EnableDate,&jk8EnableDate));// + ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));// + //2019.11.19 Ͱ汾Ϣ + ITKCALL(ifail = AOM_ask_value_string(obj_tag,"item_revision_id",&item_revision_id));// + //2018.12.4 ȡ״̬ +// ITKCALL(ifail = AOM_ask_value_string(obj_tag,"jk8Status",&status_name));//״̬ + char localization_status; + logical master ; + //2019.1.9״̬ķ͵м + ITKCALL(ifail = AOM_UIF_ask_localized_value_string(obj_tag,"jk8Status","zh_CN",&status_name,&localization_status,&master));//״̬ + materialStatusName=status_name; + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//ͺ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Remarks,&jk8Remarks));//˵ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//Ʒʶ + printf("ͺ=%s,\n",jk8SpecModel); + + //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));// + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//Ʒʶ + printf("Ʒʶ=%s,\n",jk8TechModel); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1)); + + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//λ + sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//λ + sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//Ƿɹ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//Ƿί + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//Ĭ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//ҵ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//ɹԱ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//̶ǰ + sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//ȫ + sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//Ӧ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//Ĭϲֿ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//ڲ׼۸ϵ + sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//Ա + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//Ƿڲ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//ƻʽ + //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//2019.04.11ȡƷʶţм + + ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//Ϣ + + //date_released name + ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//λ + //ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//λ + tag_t my_uom_tag = NULLTAG; + //ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag)); + //ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str)); + + ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ + + if(status_count > 0) + { + status_tag = status_tags[0]; + AOM_ask_value_date(status_tag,"date_released",&status_date); + + } + + for(i = 1;i < status_count;i++) + { + date_t date_t_i ; + + AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); + int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); + int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); + if(day_count1 < day_count2) + { + status_tag = status_tags[i]; + status_date = date_t_i; + } + } + + is_scrap.assign("0"); + if(status_tag !=NULLTAG) + { + char * status_name = NULL; + ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); + if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){ + is_scrap.assign("1"); + char scrp_date_str[32] = "\0"; + sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); + scrap_date.assign(scrp_date_str); + + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + if(status_name !=NULL){ + MEM_free(status_name); + status_name = NULL; + } + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + //printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by); + + + /*cout<<"ʼȡƷʶ---------"<attributeCount; + attributes = theViewDescriptor->attributes; + for(int i = 0; i < theAttributeCount;i++){ + + string attr_name; + cout<<"id--------------"<"<"<0) + { + //2018.12.26ʲôֵмʲôֵ + //2019.1.9ѱֵм + m_bean.JK_MATERIAL_STATUS.assign(materialStatusName); + }else + { + m_bean.JK_MATERIAL_STATUS.assign(status_name); + } + + + m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel); + char BIG_CODE[32] = "\0"; + char T_BIG_CODE[6] = "\0"; + sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]); + if(isFilter){ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]); + }else{ + sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]); + } + + }else{ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]); + }else{ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]); + } + } + if (strstr(icsID,"prt")!=NULL)//2018/10/9classid + { + sprintf(BIG_CODE,"%c%c%c%c%c",icsID[3],icsID[4],icsID[5],icsID[6],icsID[7]); + } + m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo + + m_bean.JK_PROD_CODE.assign(jk8TechModel); + + + map::iterator mapit; + //printf("uom_str = %s \n",uom_str); + mapit = uomMapping.find(uom_str); + if(mapit != uomMapping.end()){ + //printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str()); + m_bean.JK_UOM.assign(mapit->second.c_str());// + }else{ + m_bean.JK_UOM.assign("01");// + } + m_bean.JK_CREATION_DATE.assign(create_date_str); + m_bean.JK_SCRAP_DATE.assign(scrap_date); + m_bean.JK_DESIGN_CODE.assign(represented_by); + m_bean.JK_IS_SCRAP.assign(is_scrap); + + m_bean.JK_FROM.assign(person_name); + m_bean.JK_TRANS_TIME.assign(create_date_str); + m_bean.JK_STATUS.assign("0"); + m_bean.JK_FROM_SYS.assign("TC"); + /******************************************/ + //if(strcmp(jk8UnitWeight1,"")!=0){ + m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight); + //}else{ + //m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1); + //} +// if(strcmp(jk8UnitVolume1,"")!=0){ + m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume); + //}else{ + //m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1); + //} + m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket); + m_bean.JK_CONSUM.assign(jk8Isconsumables); + m_bean.JK_IS_BUY.assign(jk8IsBuy); + m_bean.JK_IS_MAKE.assign(jk8IsMake); + m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource); + m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet); + m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType); + m_bean.JK_BUYER.assign(jk8Buyer); + m_bean.JK_SCRAP_DATE.assign(jk8DisabledDate); + m_bean.JK_ATTR_1.assign(jk8EnableDate); + //if(strcmp.(jk8PurLeadTime1,"")!=0){ + m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime); + //}else{ + // m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1); + //} + printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1); + //if(strcmp(jk8SafeStock1,"")!=0){ + m_bean.JK_SAFE_STOCK.assign(jk8SafeStock); + //}else{ + // m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1); + //} + printf("jk8SafeStock1=%s\n",jk8SafeStock1); + if(strcmp(jk8SupplyType1,"")!=0){ + strncpy(jk8SupplyType2,jk8SupplyType1, 1);//ȡһ + printf("jk8SafeStock2=%s\n",jk8SupplyType2); + m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2); + }else{ + m_bean.JK_SUPPLY_TYPE1.assign("3"); + } + + printf("jk8Warehouse1=%s\n",jk8SafeStock1); + + if(strcmp(jk8Warehouse1,"")!=0){ + strncpy(jk8Warehouse2,jk8Warehouse1, 2);//ȡһ + + m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2); + }else{ + m_bean.JK_WARE_HOUSE1.assign("01"); + } + + //if(strcmp(jk8InnTransCoe1,"")!=0){ + m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe); + //}else{ + // m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1); + //} + m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper); + m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans); + m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod); + + + sm_bean_vec.push_back(m_bean); + + //ͷԴ + if(master_tags !=NULL) + { + MEM_free(master_tags); + master_tags = NULL; + } + + if(jk8SpecModel !=NULL) + { + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + + + + + if(jk8ProductIdentifyNO !=NULL) + { + MEM_free(jk8ProductIdentifyNO); + jk8ProductIdentifyNO =NULL; + } + if(jk8Remarks !=NULL) + { + MEM_free(jk8Remarks); + jk8Remarks =NULL; + } + if(jk8TechModel !=NULL) + { + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + if(jk8DisabledDate !=NULL) + { + MEM_free(jk8DisabledDate); + jk8DisabledDate =NULL; + } + if(jk8EnableDate !=NULL) + { + MEM_free(jk8EnableDate); + jk8EnableDate =NULL; + } + + if(status_tags !=NULL) + { + MEM_free(status_tags); + status_tags =NULL; + } + + if(desin_tags !=NULL){ + MEM_free(desin_tags); + desin_tags = NULL; + } + + if(uom_str != NULL) + { + MEM_free(uom_str); + uom_str =NULL; + } + + if(object_name != NULL) + { + MEM_free(object_name); + object_name = NULL; + + } + if(item_revision_id != NULL) + { + MEM_free(item_revision_id); + item_revision_id = NULL; + + } + if(status_name != NULL) + { + MEM_free(status_name); + status_name = NULL; + + } + if(represented_by !=NULL){ + MEM_free(represented_by); + represented_by = NULL; + } + + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + + + if(jk8IsDomesticMarket !=NULL) + { + MEM_free(jk8IsDomesticMarket); + jk8IsDomesticMarket =NULL; + } + if(jk8Isconsumables !=NULL) + { + MEM_free(jk8Isconsumables); + jk8Isconsumables =NULL; + } + if(jk8IsBuy !=NULL) + { + MEM_free(jk8IsBuy); + jk8IsBuy =NULL; + } + if(jk8IsMake !=NULL) + { + MEM_free(jk8IsMake); + jk8IsMake =NULL; + } + if(jk8IsOutsource !=NULL) + { + MEM_free(jk8IsOutsource); + jk8IsOutsource =NULL; + } + if(jk8AccountSet !=NULL) + { + MEM_free(jk8AccountSet); + jk8AccountSet =NULL; + } + if(jk8BusinessType !=NULL) + { + MEM_free(jk8BusinessType); + jk8BusinessType =NULL; + } + if(jk8Buyer !=NULL) + { + MEM_free(jk8Buyer); + jk8Buyer =NULL; + } + if(jk8SupplyType1 !=NULL) + { + MEM_free(jk8SupplyType1); + jk8SupplyType1 =NULL; + } + if(jk8Warehouse1 !=NULL) + { + MEM_free(jk8Warehouse1); + jk8Warehouse1 =NULL; + } + if(jk8WarehouseKeeper !=NULL) + { + MEM_free(jk8WarehouseKeeper); + jk8WarehouseKeeper =NULL; + } + + if(jk8IsInnTrans !=NULL) + { + MEM_free(jk8IsInnTrans); + jk8IsInnTrans =NULL; + } + + if(jk8PlanMethod !=NULL) + { + MEM_free(jk8PlanMethod); + jk8PlanMethod =NULL; + } + + + if(jk8UnitWeight1 !=NULL) + { + MEM_free(jk8UnitWeight1); + jk8UnitWeight1 =NULL; + } + if(jk8UnitVolume1 !=NULL) + { + MEM_free(jk8UnitVolume1); + jk8UnitVolume1 =NULL; + } + if(jk8PurLeadTime1 !=NULL) + { + MEM_free(jk8PurLeadTime1); + jk8PurLeadTime1 =NULL; + } + if(jk8SafeStock1 !=NULL) + { + MEM_free(jk8SafeStock1); + jk8SafeStock1 =NULL; + } + if(jk8InnTransCoe1 !=NULL) + { + MEM_free(jk8InnTransCoe1); + jk8InnTransCoe1 =NULL; + } + +} + +void JK_get_material_props1(tag_t obj_tag , + vector & sm_bean_vec, + vector bigCodeVec, + vector qrBigCodeVec, + map uomMapping, + string dateType) +{ + + cout<<"enter JK_get_material_props1"<::iterator it; + it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID); + if(it != qrBigCodeVec.end()) + { + printf("\n[ %s ]Ƕ\n",icsID); + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + return; + } + + it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID); + + if(it != bigCodeVec.end()){ + printf("\n[ %s ]Ҫȡͷλ\n",icsID); + isFilter = true; + }else{ + printf("\n[ %s ]Ҫȡͷ5λ\n",icsID); + isFilter = false; + } + + }else{ + printf("\n ûз͵ \n"); + return ; + } + + + //ȡǰʱ + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); + ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); + ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); + ITKCALL(SA_ask_person_name(person_tag , person_name)); + printf("person_name=> %s\n",person_name); + + ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); + if(master_count > 0) + { + master_tag = master_tags[0]; + } + + //ȡ +// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ +// if(isclassed){ +// //char * icOid = NULL; +// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); +// +// ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); +// +// } +// + + ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem + + + ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ + + + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8DisabledDate,&jk8DisabledDate));//ͣ + ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8EnableDate,&jk8EnableDate));// + ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));// + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//ͺ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Remarks,&jk8Remarks));//˵ + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//Ʒʶ + printf("ͺ=%s,\n",jk8SpecModel); + + //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));// + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//Ʒʶ + printf("Ʒʶ=%s,\n",jk8TechModel); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1)); + + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//λ + sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//λ + sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//Ƿɹ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//Ƿ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//Ƿί + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//Ĭ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//ҵ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//ɹԱ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//̶ǰ + sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime); + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//ȫ + sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//Ӧ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//Ĭϲֿ + + ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1)); + ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//ڲ׼۸ϵ + sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe); + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//Ա + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//Ƿڲ + + ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//ƻʽ + + ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//Ϣ + + //date_released name + ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//λ + //ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//λ + tag_t my_uom_tag = NULLTAG; + //ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag)); + //ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str)); + + ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ + + if(status_count > 0) + { + status_tag = status_tags[0]; + AOM_ask_value_date(status_tag,"date_released",&status_date); + + } + + for(i = 1;i < status_count;i++) + { + date_t date_t_i ; + + AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); + int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); + int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); + if(day_count1 < day_count2) + { + status_tag = status_tags[i]; + status_date = date_t_i; + } + } + + is_scrap.assign("0"); + if(status_tag !=NULLTAG) + { + char * status_name = NULL; + ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); + if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){ + is_scrap.assign("1"); + char scrp_date_str[32] = "\0"; + sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); + scrap_date.assign(scrp_date_str); + + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + if(status_name !=NULL){ + MEM_free(status_name); + status_name = NULL; + } + }else{ + //scrap_date.assign("2099-12-31"); + scrap_date.assign("\0"); + } + + //printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by); + + JK_MATERIAL_STRUCT m_bean; + + /*****************д*****************/ + m_bean.JK_ITEM_ID.assign(item_id); + m_bean.JK_ITEM_NAME.assign(object_name); + m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel); + m_bean.JK_REMARKS.assign(jk8Remarks); + m_bean.JK_PRODUCT_IDNO.assign(jk8ProductIdentifyNO); + char BIG_CODE[32] = "\0"; + char T_BIG_CODE[6] = "\0"; + sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]); + if(isFilter){ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]); + }else{ + sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]); + } + + }else{ + if(strcmp(T_BIG_CODE,"E-")==0){ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]); + }else{ + sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]); + } + } + if (strstr(icsID,"prt")!=NULL)//2018/10/9classid + { + sprintf(BIG_CODE,"%c%c%c%c%c",icsID[3],icsID[4],icsID[5],icsID[6],icsID[7]); + } + m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo + + m_bean.JK_PROD_CODE.assign(jk8TechModel); + + + map::iterator mapit; + //printf("uom_str = %s \n",uom_str); + mapit = uomMapping.find(uom_str); + if(mapit != uomMapping.end()){ + //printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str()); + m_bean.JK_UOM.assign(mapit->second.c_str());// + }else{ + m_bean.JK_UOM.assign("01");// + } + m_bean.JK_CREATION_DATE.assign(create_date_str); + m_bean.JK_SCRAP_DATE.assign(scrap_date); + m_bean.JK_DESIGN_CODE.assign(represented_by); + m_bean.JK_IS_SCRAP.assign(is_scrap); + + m_bean.JK_FROM.assign(person_name); + m_bean.JK_TRANS_TIME.assign(create_date_str); + m_bean.JK_STATUS.assign("0"); + m_bean.JK_FROM_SYS.assign("TC"); + /******************************************/ + //if(strcmp(jk8UnitWeight1,"")!=0){ + m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight); + //}else{ + //m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1); + //} +// if(strcmp(jk8UnitVolume1,"")!=0){ + m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume); + //}else{ + //m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1); + //} + m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket); + m_bean.JK_CONSUM.assign(jk8Isconsumables); + m_bean.JK_IS_BUY.assign(jk8IsBuy); + m_bean.JK_IS_MAKE.assign(jk8IsMake); + m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource); + m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet); + m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType); + m_bean.JK_BUYER.assign(jk8Buyer); + m_bean.JK_SCRAP_DATE.assign(jk8DisabledDate); + m_bean.JK_ATTR_1.assign(jk8EnableDate); + //ʧЧ״̬disΪգ״̬enaʧЧÿ + if(strcmp(dateType.c_str(),"dis")==0) + { + + m_bean.JK_ATTR_1.assign("\0"); + }else if(strcmp(dateType.c_str(),"ena")==0) + { + m_bean.JK_SCRAP_DATE.assign("\0"); + + } + //if(strcmp.(jk8PurLeadTime1,"")!=0){ + m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime); + //}else{ + // m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1); + //} + printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1); + //if(strcmp(jk8SafeStock1,"")!=0){ + m_bean.JK_SAFE_STOCK.assign(jk8SafeStock); + //}else{ + // m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1); + //} + printf("jk8SafeStock1=%s\n",jk8SafeStock1); + if(strcmp(jk8SupplyType1,"")!=0){ + strncpy(jk8SupplyType2,jk8SupplyType1, 1);//ȡһ + printf("jk8SafeStock2=%s\n",jk8SupplyType2); + m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2); + }else{ + m_bean.JK_SUPPLY_TYPE1.assign("3"); + } + + printf("jk8Warehouse1=%s\n",jk8SafeStock1); + + if(strcmp(jk8Warehouse1,"")!=0){ + strncpy(jk8Warehouse2,jk8Warehouse1, 2);//ȡһ + + m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2); + }else{ + m_bean.JK_WARE_HOUSE1.assign("01"); + } + + //if(strcmp(jk8InnTransCoe1,"")!=0){ + m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe); + //}else{ + // m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1); + //} + m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper); + m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans); + m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod); + + + sm_bean_vec.push_back(m_bean); + + //ͷԴ + if(master_tags !=NULL) + { + MEM_free(master_tags); + master_tags = NULL; + } + + if(jk8SpecModel !=NULL) + { + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + + if(jk8Remarks !=NULL) + { + MEM_free(jk8Remarks); + jk8Remarks =NULL; + } + if(jk8ProductIdentifyNO !=NULL) + { + MEM_free(jk8ProductIdentifyNO); + jk8ProductIdentifyNO =NULL; + } + + if(jk8TechModel !=NULL) + { + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + if(jk8DisabledDate !=NULL) + { + MEM_free(jk8DisabledDate); + jk8DisabledDate =NULL; + } + if(jk8EnableDate !=NULL) + { + MEM_free(jk8EnableDate); + jk8EnableDate =NULL; + } + + if(status_tags !=NULL) + { + MEM_free(status_tags); + status_tags =NULL; + } + + if(desin_tags !=NULL){ + MEM_free(desin_tags); + desin_tags = NULL; + } + + if(uom_str != NULL) + { + MEM_free(uom_str); + uom_str =NULL; + } + + if(object_name != NULL) + { + MEM_free(object_name); + object_name = NULL; + + } + if(represented_by !=NULL){ + MEM_free(represented_by); + represented_by = NULL; + } + + if(icsID !=NULL) + { + MEM_free(icsID); + icsID =NULL; + } + + + if(jk8IsDomesticMarket !=NULL) + { + MEM_free(jk8IsDomesticMarket); + jk8IsDomesticMarket =NULL; + } + if(jk8Isconsumables !=NULL) + { + MEM_free(jk8Isconsumables); + jk8Isconsumables =NULL; + } + if(jk8IsBuy !=NULL) + { + MEM_free(jk8IsBuy); + jk8IsBuy =NULL; + } + if(jk8IsMake !=NULL) + { + MEM_free(jk8IsMake); + jk8IsMake =NULL; + } + if(jk8IsOutsource !=NULL) + { + MEM_free(jk8IsOutsource); + jk8IsOutsource =NULL; + } + if(jk8AccountSet !=NULL) + { + MEM_free(jk8AccountSet); + jk8AccountSet =NULL; + } + if(jk8BusinessType !=NULL) + { + MEM_free(jk8BusinessType); + jk8BusinessType =NULL; + } + if(jk8Buyer !=NULL) + { + MEM_free(jk8Buyer); + jk8Buyer =NULL; + } + if(jk8SupplyType1 !=NULL) + { + MEM_free(jk8SupplyType1); + jk8SupplyType1 =NULL; + } + if(jk8Warehouse1 !=NULL) + { + MEM_free(jk8Warehouse1); + jk8Warehouse1 =NULL; + } + if(jk8WarehouseKeeper !=NULL) + { + MEM_free(jk8WarehouseKeeper); + jk8WarehouseKeeper =NULL; + } + + if(jk8IsInnTrans !=NULL) + { + MEM_free(jk8IsInnTrans); + jk8IsInnTrans =NULL; + } + + if(jk8PlanMethod !=NULL) + { + MEM_free(jk8PlanMethod); + jk8PlanMethod =NULL; + } + + if(jk8UnitWeight1 !=NULL) + { + MEM_free(jk8UnitWeight1); + jk8UnitWeight1 =NULL; + } + if(jk8UnitVolume1 !=NULL) + { + MEM_free(jk8UnitVolume1); + jk8UnitVolume1 =NULL; + } + if(jk8PurLeadTime1 !=NULL) + { + MEM_free(jk8PurLeadTime1); + jk8PurLeadTime1 =NULL; + } + if(jk8SafeStock1 !=NULL) + { + MEM_free(jk8SafeStock1); + jk8SafeStock1 =NULL; + } + if(jk8InnTransCoe1 !=NULL) + { + MEM_free(jk8InnTransCoe1); + jk8InnTransCoe1 =NULL; + } + +} + +/******************************************************* +* +* ȡϢ +* +*******************************************************/ +void JK_get_subline_props(string bom_id, + string bom_rev, + string c_line_id, + tag_t bom_line_tag, + vector & sub_bom_vec){ + + int sub_obj_count = 0, + effectiveDate_count = 0, + order_count = 0, + ratio_count = 0, + n_substitute = 0, + golbal_alt_count = 0, + golbal_Date_count = 0, + golbal_order_count = 0, + golbal_ratio_count = 0; + + + tag_t *substitute_tags = NULL, + *golbal_alt_tags = NULL, + bl_item = NULLTAG, + bl_rev = NULLTAG; + + char ** golbalDate_str_s = NULL, + ** golbalorder_str_s = NULL, + ** golbalratio_str_s = NULL; + /*char ** effectiveDate_str_s = NULL, + ** order_str_s = NULL, + ** ratio_str_s = NULL, + item_id_2[ITEM_id_size_c + 1] = "\0";*/ + + char * effectiveDate_str = NULL, + * order_str = NULL, + * ratio_str = NULL, + item_id_2[ITEM_id_size_c + 1] = "\0"; + if(bom_line_tag==NULL) + { + return; + } + ITKCALL(AOM_ask_value_tag(bom_line_tag,"bl_line_object",&bl_rev)); + if(bl_rev==NULL) + { + return; + } + ITKCALL(ITEM_ask_item_of_rev(bl_rev,&bl_item)); + ITKCALL(AOM_ask_value_tags(bl_item,"global_alt_list",&golbal_alt_count,&golbal_alt_tags)); + ITKCALL(BOM_line_list_substitutes(bom_line_tag,&n_substitute,&substitute_tags)); + + /*ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_EffectiveDate,&effectiveDate_count,&effectiveDate_str_s)); + ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_Order,&order_count,&order_str_s)); + ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_Ratio,&ratio_count,&ratio_str_s));*/ + + ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitTime",&golbal_Date_count,&golbalDate_str_s)); //2018.3.15ȫ + ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitOrder",&golbal_order_count,&golbalorder_str_s)); + ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitRatio",&golbal_ratio_count,&golbalratio_str_s)); + + ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_EffectiveDate1,&effectiveDate_str)); + ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_Order1,&order_str)); + ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_Ratio1,&ratio_str)); + + vector orderVecs ; + vector ratioVecs ; + vector effectiveVecs ; + Split(effectiveDate_str,",",effectiveVecs); + Split(order_str,",",orderVecs); + Split(ratio_str,",",ratioVecs); + + if(n_substitute == effectiveVecs.size() + && n_substitute == ratioVecs.size() + && n_substitute == orderVecs.size()){ + printf("滻滻滻ڣ滻˳ һ£贫\n"); + for(int i = 0;i < n_substitute;i++){ + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + char * item_id =NULL; + ITKCALL(AOM_ask_value_string(substitute_tags[i],"bl_item_item_id",&item_id)); + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id); + + string orderVec1="1"; + string ratioVec1="1"; + string effectiveVec1="2001-01-01"; + for(int j = 0;j < n_substitute;j++){ + vector orderVec ; + vector ratioVec ; + vector effectiveVec ; + printf("orderVecs=%s\n",orderVecs[i]); + printf("ratioVecs=%s\n",orderVecs[i]); + printf("effectiveVecs=%s\n",orderVecs[i]); + Split(orderVecs[i],"&",orderVec); + Split(ratioVecs[i],"&",ratioVec); + Split(effectiveVecs[i],"&",effectiveVec); + if(orderVec.empty()){ + + }else{ + if(orderVec.size()>1&&stricmp(item_id,orderVec[0].c_str()) == 0){ + if(strcmp(orderVec[1].c_str(),"")==0){ + + }else{ + orderVec1=orderVec[1]; + } + + } + } + + if(ratioVec.empty()){ + + }else{ + if(ratioVec.size()>1&&stricmp(item_id,ratioVec[0].c_str()) == 0){ + if(strcmp(ratioVec[1].c_str(),"")==0){ + + }else{ + ratioVec1=ratioVec[1]; + } + } + } + + if(effectiveVec.empty()){ + + }else{ + if(effectiveVec.size()>1&&stricmp(item_id,effectiveVec[0].c_str()) == 0){ + if(strcmp(effectiveVec[1].c_str(),"")==0){ + + }else{ + effectiveVec1=effectiveVec[1]; + } + + } + } + + + } + printf("id =%s ,orderVec1= %s /n",item_id,orderVec1); + printf("id =%s ,ratioVec1= %s /n",item_id,ratioVec1); + printf("id =%s ,effectiveVec1= %s /n",item_id,effectiveVec1); + + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(orderVec1); + + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign(ratioVec1); + + sub_struct.JK_SUBSTITUTE_PART_DATE.assign(effectiveVec1); + sub_struct.JK_IS_GLOBAL.assign("2"); + + sub_bom_vec.push_back(sub_struct); + if(item_id!=NULL){ + MEM_free(item_id); + item_id =NULL; + } + } + }else{ + printf("滻滻滻ڣ滻˳ һ£Ĭϴ\n"); + for(int i = 0;i < n_substitute;i++){ + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + char * item_id =NULL; + ITKCALL(AOM_ask_value_string(substitute_tags[i],"bl_item_item_id",&item_id)); + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id); + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(index); + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign("1"); + sub_struct.JK_SUBSTITUTE_PART_DATE.assign("2001-01-01"); + sub_struct.JK_IS_GLOBAL.assign("2"); + + sub_bom_vec.push_back(sub_struct); + if(item_id!=NULL){ + MEM_free(item_id); + item_id =NULL; + } + } + + } + //ȫ滻 + if(golbal_alt_count == golbal_Date_count + && golbal_alt_count == golbal_order_count + && golbal_alt_count == golbal_ratio_count){ + printf("ȫ滻滻滻ڣ滻˳ һ£贫\n"); + for(int i = 0 ;i < golbal_alt_count;i++){ + ITKCALL(ITEM_ask_id(golbal_alt_tags[i],item_id_2)); + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + char orderVec1[100]="1"; + char ratioVec1[100]="1"; + char effectiveVec1[100]="2001-01-01"; + + if(strcmp(golbalorder_str_s[i],"")==0){ + strcpy(orderVec1,"1"); + + }else{ + strcpy(orderVec1,golbalorder_str_s[i]); + } + if(strcmp(golbalratio_str_s[i],"")==0){ + strcpy(ratioVec1,"1"); + }else{ + strcpy(ratioVec1,golbalratio_str_s[i]); + } + if(strcmp(golbalDate_str_s[i],"")==0){ + strcpy(effectiveVec1,"2001-01-01"); + }else{ + strcpy(effectiveVec1,golbalDate_str_s[i]); + } + + + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id_2); + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(orderVec1); + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign(ratioVec1); + sub_struct.JK_SUBSTITUTE_PART_DATE.assign(effectiveVec1); + sub_struct.JK_IS_GLOBAL.assign("1"); + sub_bom_vec.push_back(sub_struct); + } + + + + }else{ + printf("ȫ滻滻滻ڣ滻˳ һ£Ĭϴ\n"); + for(int i = 0 ;i < golbal_alt_count;i++){ + ITKCALL(ITEM_ask_id(golbal_alt_tags[i],item_id_2)); + JK_SUB_BOM_STRUCT sub_struct ; + char index[12] = "\0"; + sprintf(index,"%d",i); + sub_struct.JK_BOM_ID.assign(bom_id); + sub_struct.JK_BOM_REV.assign(bom_rev); + sub_struct.JK_BOM_CID.assign(c_line_id); + sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id_2); + sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(index); + sub_struct.JK_SUBSTITUTE_PART_RATIO.assign("1"); + sub_struct.JK_SUBSTITUTE_PART_DATE.assign("2001-01-01"); + sub_struct.JK_IS_GLOBAL.assign("1"); + sub_bom_vec.push_back(sub_struct); + } + } + + + if(substitute_tags!=NULL){ + MEM_free(substitute_tags); + substitute_tags =NULL; + } + if(golbal_alt_tags !=NULL){ + MEM_free(golbal_alt_tags); + golbal_alt_tags =NULL; + } + + +} + +/******************************************************* +* +* ȡbomlineԵ +* +********************************************************/ +void JK_get_bomline_props(string bom_id, + string bom_rev, + tag_t line_tag , + vector & p_bom_vec , + vector & c_bom_vec, + vector & sub_bom_vec) +{ + int child_count = 0 , + i = 0; + tag_t * child_tags = NULL; + POM_AM__set_application_bypass(true); + ITKCALL(BOM_line_ask_all_child_lines(line_tag,&child_count,&child_tags)); + for( i = 0 ; i < child_count ; i++){ + char * bl_item_id =NULL, + * bl_item_rev_id = NULL, + * Jk8SupplyType = NULL, + Jk8SupplyType1[40]="\0", + *Jk8Warehouse =NULL, + Jk8Warehouse1[40]="\0", + *bl_quantity =NULL, + *JK_BOM_CWR = NULL, + *Jk8RemarkDesc = NULL; + char* type_class=NULL; + tag_t rev_tag = NULLTAG, + *view_tags =NULL; + int view_count = 0; + string bl_rev_id ; + //ΪȨ޹ܿԶȡbl_item_object_typeҪ· + POM_AM__set_application_bypass(true); + ITKCALL( AOM_ask_value_string(child_tags[i],"bl_item_object_type",&type_class)); + printf("type_class=%s\n",type_class); + if(strcmp(type_class, "JK8EmbSoftware" ) ==0){//벻 2017.9.27 + printf("JK8EmbSoftware"); + continue; + + } + + ITKCALL(AOM_ask_value_string(child_tags[i],"bl_item_item_id",&bl_item_id));//bl_item_item_id + if(strcmp(bl_item_id,"LS")==1){ //ʱϲ 2018.1.22 + continue; + } + ITKCALL(AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag)); + + ITKCALL(AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&bl_item_rev_id));//bl_item_id + ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8SupplyType,&Jk8SupplyType));//Jk8SupplyType Ӧ + ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8Warehouse,&Jk8Warehouse));//Jk8Warehouse ֿ + ITKCALL(AOM_UIF_ask_value(child_tags[i],BOM_JK_BOM_CWR,&JK_BOM_CWR));//BOM_JK_BOM_CWR + ITKCALL(AOM_ask_value_string(child_tags[i],"bl_quantity",&bl_quantity));// + ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8RemarkDesc,&Jk8RemarkDesc));//Jk8RemarkDesc ע + + bl_rev_id.assign(bl_item_rev_id); + JK_C_BOM_STRUCT c_bean; + + c_bean.JK_BOM_ID.assign(bom_id); + c_bean.JK_BOM_REV.assign(bom_rev); + c_bean.JK_BOM_CID.assign(bl_item_id); + + if(Jk8SupplyType==NULL || strlen(Jk8SupplyType) ==0){ + c_bean.JK_SUPPLY_TYPE.assign("3");//Jk8SupplyType + }else{ + strncpy(Jk8SupplyType1,Jk8SupplyType, 1);//ȡһ + c_bean.JK_SUPPLY_TYPE.assign(Jk8SupplyType1);//Jk8SupplyType + } + if(Jk8Warehouse == NULL || strlen(Jk8Warehouse) == 0){ + c_bean.JK_WAREHOUSE.assign("");//Jk8Warehouse + + }else{ + strncpy(Jk8Warehouse1,Jk8Warehouse, 2);//ȡ2 + c_bean.JK_WAREHOUSE.assign(Jk8Warehouse1);//Jk8Warehouse + } + + + if(bl_quantity == NULL ||strlen(bl_quantity) ==0){ + c_bean.JK_QUANTITY.assign("1"); + }else{ + c_bean.JK_QUANTITY.assign(bl_quantity); + } + c_bean.JK_REMARK.assign(Jk8RemarkDesc); + + if(JK_BOM_CWR == NULL|| strlen(JK_BOM_CWR)==0){ + c_bean.JK_BOM_CWR.assign("0");//JK_BOM_CWR//2017/10.23ӼĬֵ1Ϊ0 + //}else if(strcmp(JK_BOM_CWR,"")==0){ + }else{ + c_bean.JK_BOM_CWR.assign(JK_BOM_CWR);//JK_BOM_CWR + } + + c_bom_vec.push_back(c_bean); + if(child_tags[i]!=NULL) + { + JK_get_subline_props(bom_id,bom_rev,c_bean.JK_BOM_CID,child_tags[i],sub_bom_vec); + } + + + // ITKCALL(AOM_ask_value_tags(rev_tag,"structure_revisions",&view_count,&view_tags)); + if(view_count > 0){ + + //ȡBOMṹʼ + //JK_get_top_bomline_props(view_tags[0],p_bom_vec,c_bom_vec,sub_bom_vec); + } + + if(type_class !=NULL){ + MEM_free(type_class); + type_class =NULL; + } + + if(view_tags !=NULL){ + MEM_free(view_tags); + view_tags =NULL; + } + + if(bl_item_rev_id !=NULL){ + MEM_free(bl_item_rev_id); + bl_item_rev_id =NULL; + } + + if(bl_item_id!=NULL){ + MEM_free(bl_item_id); + bl_item_id = NULL; + } + if(Jk8SupplyType != NULL){ + MEM_free(Jk8SupplyType); + Jk8SupplyType =NULL; + } + if(Jk8Warehouse != NULL){ + MEM_free(Jk8Warehouse); + Jk8Warehouse =NULL; + } + if(bl_quantity != NULL){ + MEM_free(bl_quantity); + bl_quantity =NULL; + } + if(Jk8RemarkDesc != NULL){ + MEM_free(Jk8RemarkDesc); + Jk8RemarkDesc =NULL; + } + if(JK_BOM_CWR !=NULL){ + MEM_free(JK_BOM_CWR); + JK_BOM_CWR =NULL; + + } + + } + POM_AM__set_application_bypass(false); + if(child_tags!=NULL){ + MEM_free(child_tags); + child_tags =NULL; + } +} + + + +/******************************************************* +* +* ȡTOP BomlineԵ +* +********************************************************/ +void JK_get_top_bomline_props(tag_t view_tag , + vector & p_bom_vec , + vector & c_bom_vec, + vector & sub_bom_vec) +{ + int ifail = 0 , + i = 0, + status_count = 0 , + c_line_count = 0 , + rev_form_cnt = 0 ; + tag_t rev_tag =NULLTAG, + item_tag = NULLTAG, + owning_user_tag = NULLTAG, + current_user_tag = NULLTAG, + current_group_mem_tag = NULLTAG, + person_tag = NULLTAG, + bom_window_tag = NULLTAG, + *status_tags = NULL, + status_tag = NULLTAG, + top_line_tag = NULLTAG, + *c_line_tags = NULL, + *rev_form_tags = NULL; + + char item_id[ITEM_id_size_c + 1] = "\0", + rev_id[ITEM_id_size_c + 1] = "\0", + *user_name = NULL, + *jk8_mjshl = NULL, + create_date_str[32] = "\0", + person_name[SA_person_name_size_c + 1] = "\0"; + date_t status_date ; + string is_scrap,scrap_date; + date_t current_date; + + current_time(¤t_date); + sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); + + ITKCALL(ifail = BOM_create_window(&bom_window_tag));//windowͼ + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,view_tag,&top_line_tag));//ȡbomline + ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + if(c_line_count == 0){ + printf("ûBOMṹ"); + ITKCALL(ifail = BOM_close_window(bom_window_tag)); + return; + } + //ȡǰû + ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); + ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); + ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); + ITKCALL(SA_ask_person_name(person_tag , person_name)); + printf("current person_name=> %s\n",person_name); + + ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//ȡBOMLINEİ汾 + ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag)); + ITKCALL(ITEM_ask_id(item_tag,item_id));//ϱ + + if(strcmp(item_id,"E-")==1){ + return; + } + if(strcmp(item_id,"LS")==1){ + return; + } + + + ITKCALL(ITEM_ask_rev_id(rev_tag,rev_id));//ȡ汾 + + ITKCALL(AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&rev_form_cnt,&rev_form_tags)); + ITKCALL(AOM_ask_value_tag(view_tag,"owning_user",&owning_user_tag));//bvr + ITKCALL(AOM_ask_value_string(owning_user_tag,"user_name",&user_name));//ȡ + + ITKCALL(ifail = AOM_UIF_ask_value(rev_form_tags[i],BOM_jk8_mjshl,&jk8_mjshl));//ĸ jk8_mjshl + ITKCALL(ifail = AOM_ask_value_tags(view_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ + + if(rev_form_tags!=NULL){ + MEM_free(rev_form_tags); + rev_form_tags =NULL; + } + if(status_count > 0) + { + status_tag = status_tags[0]; + AOM_ask_value_date(status_tag,"date_released",&status_date); + } + + for(i = 1;i < status_count;i++) + { + date_t date_t_i ; + AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); + int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); + int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); + if(day_count1 < day_count2) + { + status_tag = status_tags[i]; + status_date = date_t_i; + } + } + + is_scrap.assign("0"); + if(status_tag !=NULLTAG) + { + char * status_name = NULL; + ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); + if(strcmp(status_name, SCRAPE_STATUS_NAME ) ==0){ + is_scrap.assign("1"); + char scrp_date_str[32] = "\0"; + sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); + scrap_date.assign(scrp_date_str); + }else{ + scrap_date.assign("2099-12-31"); + } + + if(status_name !=NULL){ + MEM_free(status_name); + status_name = NULL; + } + }else{ + scrap_date.assign("2099-12-31"); + } + + JK_P_BOM_STRUCT p_bean; + + /*****************д*****************/ + p_bean.JK_BOM_ID.assign(item_id); + p_bean.JK_BOM_REV.assign(rev_id); + p_bean.JK_OWNING_USER.assign(user_name); + if(jk8_mjshl == NULL){ + p_bean.JK_RATE.assign("0");//jk8_mjshl//2017/10/23ĸĬֵ1Ϊ0 + }else if(strlen(jk8_mjshl)==0){ + p_bean.JK_RATE.assign("0");//jk8_mjshl//2017/10/23ĸĬֵ1Ϊ0 + }else{ + p_bean.JK_RATE.assign(jk8_mjshl);//jk8_mjshl + } + p_bean.JK_CREATION_DATE.assign(create_date_str); + p_bean.JK_SCRAP_DATE.assign(scrap_date.c_str()); + p_bean.JK_IS_SCRAP.assign(is_scrap); + + p_bean.JK_FROM.assign(person_name); + p_bean.JK_TRANS_TIME.assign(create_date_str); + p_bean.JK_STATUS.assign("0"); + p_bean.JK_FROM_SYS.assign("TC"); + /******************************************/ + p_bom_vec.push_back(p_bean); + printf("====>1"); + JK_get_bomline_props(p_bean.JK_BOM_ID,p_bean.JK_BOM_REV,top_line_tag,p_bom_vec,c_bom_vec,sub_bom_vec); + printf("====>2"); + //ͷԴ + if(c_line_tags !=NULL){ + MEM_free(c_line_tags); + c_line_tags = NULL; + } + if(user_name !=NULL) + { + MEM_free(user_name); + user_name = NULL; + } + if(jk8_mjshl !=NULL) + { + MEM_free(jk8_mjshl); + jk8_mjshl =NULL; + } + if(status_tags !=NULL) + { + MEM_free(status_tags); + status_tags =NULL; + } + ITKCALL(ifail = BOM_close_window(bom_window_tag)); +} + + +/******************************************************* +* +* Ϸ͵ERP +* handler +* include_type ҪЩ /ֿegItemRevision/JK8MaterialRevision/JK8LSMaterialRevision +* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +* +*******************************************************/ +int JK_send_material(EPM_action_message_t msg) +{ + ECHO("\n********************************"); + ECHO("\n********Ͽʼ************"); + ECHO("\n********************************\n"); + // + int ifail = EPM_go , + arg_cnt = 0 , + i = 0 , + att_cnt = 0; + + tag_t task_tag = NULLTAG , + root_task_tag =NULLTAG , + *attachments = NULL; + + char * argflag = NULL , + *argvalue =NULL , + *arg = NULL , + arg_value[1024] = "\0", + statusName[1024]="\0", + statusMark[1024]="\0", + type_class[WSO_object_type_size_c+1] ="\0"; + + string materialStatusName=""; + + logical is_debug = false; + logical add_mark=false; + + //¼Ϣ + map errMap; + + vector type_vec; + + vector material_vec; + vector material_sub_vec; + + vector bigCodeVec;//vector bigCodeVec,vector qrBigCodeVec + vector qrBigCodeVec; + vector uomVec; + map uomMapping; + //ȡҪȡΪķ + getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec); + //ȡݵķ + getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec); + //ȡλ + getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec); + for(i = 0 ; i < uomVec.size() ; i++){ + string uom_u8 = uomVec[i]; + vector uV; + Split(uom_u8,"=",uV); + //printf("%s%d \n",uom_u8.c_str(),uV.size()); + if(uV.size() == 2){ + printf("%s %s \n",uV[1],uV[0]); + uomMapping.insert(pair(uV[1],uV[0])); + } + } + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //ǷҪ¼log־ + else if(stricmp(argflag, "debug") == 0) + { + if(argvalue != NULL) + { + if(strcmp(argvalue,"true")==0) + { + is_debug = true; + } + else + { + is_debug = false; + } + } + else + { + + string key_id; + key_id.assign("ȱdebug"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //2018.12.26״̬ʲôֵмֵΪ׼ûоֵΪ׼ + else if(stricmp(argflag, "addStatus_name") == 0) + { + if(argvalue != NULL) + { + strcpy(statusName,argvalue); + materialStatusName=statusName; + } + /*else + { + + string key_id; + key_id.assign("ȱaddStatus_name"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + }*/ + } + //״̬ʵֵ + else if(stricmp(argflag, "addStatus_mark") == 0) + { + if(argvalue != NULL) + { + strcpy(statusMark,argvalue); + add_mark=true; + } + else + { + + string key_id; + key_id.assign("ȱaddStatus_mark"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + tag_t target_tag = attachments[i]; + //ȡ + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + continue; + } + char * item_id_temp = NULL; + ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp)); + if(strcmp(item_id_temp,"E-") == 1 ){ + ECHO("E-ͷϲҪ\n"); + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + continue; + } + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + //2018.12.4 ݲ汾״̬ 2018.12.26 ԣֻ + //2019.1.9 ݲ汾״̬ + if(materialStatusName.length()>0) + { + POM_AM__set_application_bypass(true); + ITKCALL(AOM_load(target_tag)); + ITKCALL(AOM_lock(target_tag)); + ITKCALL(AOM_refresh(target_tag,1)); +// ITKCALL(ifail=AOM_set_value_string(target_tag,"jk8TecModel1",statusName)); +// ITKCALL(ifail=AOM_set_value_string(target_tag,"jk8Status",statusName)); + ITKCALL(ifail=AOM_UIF_set_value(target_tag,"jk8Status",statusName)); + POM_AM__set_application_bypass(false); + AOM_save(target_tag); + AOM_refresh(target_tag,0); + AOM_unlock(target_tag); + } + + //2018.12.4 ݲ汾״̬ ͨϵͳhandlerӣ + if(add_mark==true) + { + tag_t release_stat = NULLTAG; + ITKCALL(ifail=RELSTAT_create_release_status(statusMark, &release_stat));//TCM Released jk8Disabled + POM_AM__set_application_bypass(true); + ITKCALL(ifail=RELSTAT_add_release_status(release_stat, 1, &target_tag, true)); + POM_AM__set_application_bypass(false); + } + + JK_get_material_props(target_tag , material_vec,bigCodeVec,qrBigCodeVec,uomMapping,materialStatusName); + + JK_get_material_subs(target_tag , material_sub_vec); + } + + if(attachments!=NULL){ + MEM_free(attachments); + attachments =NULL; + } + vector faild_vec ; + JK_write_material_to_DB(material_vec,faild_vec); + material_vec.clear(); + + JK_write_material_subs_to_DB(material_sub_vec); + material_sub_vec.clear(); + + ECHO("\n********************************"); + ECHO("\n********Ͻ************"); + ECHO("\n********************************\n"); + return ifail; +} + + + + + +int JK_send_material1(vector attachments,string dateType) +{ + ECHO("\n********************************"); + ECHO("\n********ϿʼJK_send_material1************"); + ECHO("\n********************************\n"); + // + int ifail = EPM_go , + arg_cnt = 0 , + i = 0 , + att_cnt = attachments.size(); + +// tag_t task_tag = NULLTAG , +// root_task_tag =NULLTAG , +// *attachments = NULL; + +// char * argflag = NULL , +// *argvalue =NULL , +// *arg = NULL , +// arg_value[1024] = "\0", + char type_class[WSO_object_type_size_c+1] ="\0"; + + logical is_debug = true; + + //¼Ϣ + map errMap; + + vector type_vec; + type_vec.push_back("JK8MaterialRevision"); + + vector material_vec; + + vector bigCodeVec;//vector bigCodeVec,vector qrBigCodeVec + vector qrBigCodeVec; + vector uomVec; + map uomMapping; + //ȡҪȡΪķ + getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec); + //ȡݵķ + getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec); + //ȡλ + getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec); + for(i = 0 ; i < uomVec.size() ; i++){ + string uom_u8 = uomVec[i]; + vector uV; + Split(uom_u8,"=",uV); + //printf("%s%d \n",uom_u8.c_str(),uV.size()); + if(uV.size() == 2){ + printf("%s %s \n",uV[1],uV[0]); + uomMapping.insert(pair(uV[1],uV[0])); + } + } + //ȡhandlerĸ +// arg_cnt = TC_number_of_arguments(msg.arguments); +// ECHO("Ϊ%d\n",arg_cnt); +// if (arg_cnt > 0) +// { +// for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); +// } +// } +// //ǷҪ¼log־ +// else if(stricmp(argflag, "debug") == 0) +// { +// if(argvalue != NULL) +// { +// if(strcmp(argvalue,"true")==0) +// { +// is_debug = true; +// } +// else +// { +// is_debug = false; +// } +// } +// else +// { +// +// string key_id; +// key_id.assign("ȱsecondary_type"); +// errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); +// } +// } +// } +// MEM_free(argflag); +// MEM_free(argvalue); +// } + + //ȡĿ +// task_tag = msg.task; +// if(task_tag == NULLTAG) +// { +// +// return EPM_nogo; +// } +// EPM_ask_root_task(task_tag, &root_task_tag); +// EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + tag_t target_tag = attachments[i]; + //ȡ + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + continue; + } + char * item_id_temp = NULL; + ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp)); + if(strcmp(item_id_temp,"E-") == 1 ){ + ECHO("E-ͷϲҪ\n"); + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + continue; + } + if(item_id_temp !=NULL){ + MEM_free(item_id_temp); + item_id_temp = NULL; + } + cout<<"material_vec.size()1---------------------"< faild_vec ; + JK_write_material_to_DB(material_vec,faild_vec); + material_vec.clear(); + + ECHO("\n********************************"); + ECHO("\n********Ͻ************"); + ECHO("\n********************************\n"); + return ifail; +} + + +/******************************************************* +* +* BOM͵ERP +* handler +* include_type ҪЩ /ֿegItemRevision/JK8MaterialRevision/JK8LSMaterialRevision +* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +* +********************************************************/ +int JK_send_bom(EPM_action_message_t msg) +{ + ECHO("\n********************************\n"); + ECHO("\n********BOMʼ************\n"); + ECHO("\n*******************************\n"); + // + int ifail = EPM_go , + arg_cnt = 0 , + i = 0 , + att_cnt = 0; + + tag_t task_tag = NULLTAG , + root_task_tag =NULLTAG , + *attachments = NULL; + + char * argflag = NULL , + *argvalue =NULL , + *arg = NULL , + arg_value[1024] = "\0", + type_class[WSO_object_type_size_c+1] ="\0"; + + logical is_debug = false; + + //¼Ϣ + map errMap; + + vector type_vec; + + vector p_bom_vec; + vector c_bom_vec; + vector sub_bom_vec; + + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + //ǷҪ¼log־ + else if(stricmp(argflag, "debug") == 0) + { + if(argvalue != NULL) + { + if(strcmp(argvalue,"true")==0) + { + is_debug = true; + } + else + { + is_debug = false; + } + } + else + { + + string key_id; + key_id.assign("ȱsecondary_type"); + errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + + tag_t target_tag = attachments[i]; + //ȡ PSBOMViewRevision + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type\n"); + continue; + } + JK_get_top_bomline_props(target_tag,p_bom_vec,c_bom_vec,sub_bom_vec); + } + + if(attachments!=NULL) + { + MEM_free(attachments); + attachments =NULL; + } + vector faild_p_vec; + vector faild_c_vec; + vector faild_sub_vec; + //bomϢϢд뵽м + JK_write_p_bom_to_DB(p_bom_vec,faild_p_vec); + //bomṹϢд뵽м + JK_write_c_bom_to_DB(c_bom_vec,faild_c_vec); + JK_write_sub_bom_to_DB(sub_bom_vec,faild_sub_vec); + printf("faild_p_vec.size = %d \n",faild_p_vec.size()); + printf("faild_c_vec.size = %d \n",faild_c_vec.size()); + printf("faild_sub_vec.size = %d \n",faild_sub_vec.size()); + p_bom_vec.clear(); + c_bom_vec.clear(); + sub_bom_vec.clear(); + + ECHO("\n********************************"); + ECHO("\n********BOM************"); + ECHO("\n********************************\n"); + return 0; + +} + + + + diff --git a/jf_itk/jk_custom_erp_struct.h b/jf_itk/jk_custom_erp_struct.h new file mode 100644 index 0000000..16246d1 --- /dev/null +++ b/jf_itk/jk_custom_erp_struct.h @@ -0,0 +1,408 @@ +#include +#include +#include +//Է״̬ +#define SCRAPE_STATUS_NAME "ʧЧ" //״̬ +// +#define MATERIAL_jk8SpecModel "jk8SpecModel" //ͺ +#define MATERIAL_jk8Remarks "jk8Remarks" //t˵2019.06.13 +#define MATERIAL_jk8ProductIdentifyNO "jk8ProductIdentifyNO" //Ʒʶ2019.06.13 +#define MATERIAL_jk8StockBigTypeNo "jk8StockBigTypeNo" // +#define MATERIAL_jk8TechModel "jk8TechModel" //Ʒʶ + +#define MATERIAL_jk8UnitWeight "jk8UnitWeight" //λ (2017.8.28¼18) +#define MATERIAL_jk8UnitVolume "jk8UnitVolume" //λ +#define MATERIAL_jk8IsDomesticMarket "jk8IsDomesticMarket" //Ƿ +#define MATERIAL_jk8Isconsumables "jk8Isconsumables" //Ƿ +#define MATERIAL_jk8IsBuy "jk8IsBuy" //Ƿɹ +#define MATERIAL_jk8IsMake "jk8IsMake" //Ƿ +#define MATERIAL_jk8IsOutsource "jk8IsOutsource" //Ƿί +#define MATERIAL_jk8AccountSet "jk8AccountSet" //Ĭ +#define MATERIAL_jk8BusinessType "jk8BusinessType" //ҵ +#define MATERIAL_jk8Buyer "jk8Buyer" //ɹԱ +#define MATERIAL_jk8PurLeadTime "jk8PurLeadTime" //̶ǰ +#define MATERIAL_jk8SafeStock "jk8SafeStock" //ȫ +#define MATERIAL_jk8SupplyType1 "jk8SupplyType1" //Ӧ +#define MATERIAL_jk8Warehouse1 "jk8Warehouse1" //Ĭϲֿ +#define MATERIAL_jk8InnTransCoe "jk8InnTransCoe" //ڲ׼۸ϵ +#define MATERIAL_jk8WarehouseKeeper "jk8WarehouseKeeper" //Ա +#define MATERIAL_jk8IsInnTrans "jk8IsInnTrans" //Ƿڲ +#define MATERIAL_jk8PlanMethod "jk8PlanMethod" //ƻʽ +//#define MATERIAL_jk8ProductIdentifyNO "jk8ProductIdentifyNO" //ѡ书֮Ʒʶ +#define MATERIAL_jk8DisabledDate "jk8DisabledDate" //ͣ +#define MATERIAL_jk8EnableDate "jk8EnableDate" // + + +//BOM +#define BOM_Jk8SupplyType "jk8SupplyType1" //2017/11/2 // JK8SupplyType +#define BOM_Jk8Warehouse "jk8Warehouse1" //2017/11/2 //ֿ JK8Warehouse +#define BOM_Jk8RemarkDesc "JK8Remark" //ע +#define BOM_JK_BOM_CWR "jk8SubCompLossRate" //Ӽ +//BOMеĸ +#define BOM_jk8_mjshl "jk8ParentCompLossRate" //ĸ +//ݿϢ +#define JK_DB_USER_NAME "infodba" //û +#define JK_DB_USER_PWD "infodba" // +#define JK_DB_URL "//10.200.2.43/jktc" //ʽURL + +/*#define JK_DB_USER_NAME "infodba" //û +#define JK_DB_USER_PWD "infodba" // +#define JK_DB_URL "//10.201.5.202/jktc" //URL*/ + + +/*#define JK_DB_URL "//10.201.5.203/tc11" //URL +#define JK_DB_URL "//localhost/tc" //URL +#define JK_DB_URL "//10.201.5.202/JKTC" //URL*/ + +//м +#define JK_MATERIAL_TABLE "JK_MATERIAL_TABLE" //м +#define JK_BOM_PARENT_LINE_TABLE "JK_BOM_PARENT_LINE_TABLE" //BOMͷм +#define JK_BOM_CHILD_LINE_TABLE "JK_BOM_CHILD_LINE_TABLE" //BOMṹм +#define JK_BOM_SUBSTITUTE_PART_TABLE "JK_BOM_SUBSTITUTE_PART_TABLE" //BOMLINE滻м +#define JK_RECORD_SUBSTIT_TABLE "JK_RECORD_SUBSTIT_T" //ȫ 2018.5.4 +// +#define JK_SUBSTITUTE_EffectiveDate "jk8EffectiveDate" //Ч +#define JK_SUBSTITUTE_Order "jk8SubstitOrder" // +#define JK_SUBSTITUTE_Ratio "jk8SubstitRatio" // + +#define JK_SUBSTITUTE_EffectiveDate1 "JK8EffectiveDate" //Ч1 +#define JK_SUBSTITUTE_Order1 "JK8SubstitOrder" //1 +#define JK_SUBSTITUTE_Ratio1 "JK8SubstitRatio" //1 + +using namespace std; + + + + +/********************************************************** +* +* мֶ +* +***********************************************************/ +char jk_material_fields[45][45] = { + "JK_ITEM_ID", // ϱ + "JK_ITEM_NAME", // + "JK_ITEM_SPEC_MODEL", // ͺ + "JK_CLASS_CODE", // + "JK_PROD_CODE", // Ʒʶ //5 + "JK_UOM", // λ + "JK_CREATION_DATE", // + "JK_SCRAP_DATE", // ͣ + "JK_DESIGN_CODE", // ͼϢ + "JK_IS_SCRAP", // ǷʧЧ //10 + "JK_FROM", // + "JK_TRANS_TIME", // ʱ + "JK_STATUS", // ״̬ + "JK_ERROR_MSG", // Ϣ + "JK_OPERATE_TIME", // ʱ //15 + "JK_PUID", // Ψһ + "JK_FROM_SYS", // ݷ + "JK_ATTR_1", // չֶ2 + "JK_MATERIAL_STATUS", // 2018.12.7״̬ + "JK_REMARKS", // չֶ3 //20 + "JK_PRODUCT_IDNO", // չֶ4 + "JK_ITEM_REV", // չֶ5 2019.11.19汾Ϣ + "JK_ATTR_6", // չֶ6 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 //25 + "JK_CPSBH", // չֶ9 2019.04.11Ʒʶ + "JK_ATTR_10", // չֶ10 //27 + "JK_UNIT_WEIGHT", // "jk8UnitWeightλ" (2017.8.28м¼18ֶ) + "JK_UNIT_VOLUME", // "jk8UnitVolumeλ" + "JK_DOMSC_MARKET", // jk8IsDomesticMarketǷ //30 + "JK_CONSUM", // "jk8IsconsumablesǷ" + "JK_IS_BUY", // "jk8IsBuyǷɹ" + "JK_IS_MAKE", // "jk8IsMakeǷ" + "JK_OUT_SOURCE", // "jk8IsOutsourceǷί" + "JK_ACCOUNT_SET", // "jk8AccountSetĬ" //35 + "JK_BUSINESS_TYPE", // "jk8BusinessTypeҵ" + "JK_BUYER", // "jk8BuyerɹԱ" + "JK_PURLEAD_TIME", // "jk8PurLeadTime̶ǰ" + "JK_SAFE_STOCK", // "jk8SafeStockȫ" + "JK_SUPPLY_TYPE1", // "jk8SupplyType1Ӧ" //40 + "JK_WARE_HOUSE1", // "jk8Warehouse1Ĭϲֿ" + "JK_INNTRANS_COE", // "jk8InnTransCoeڲ׼۸ϵ" + "JK_HOUSE_KEEPER", // "jk8WarehouseKeeperԱ" + "JK_IS_INNTRANS", // "jk8IsInnTransǷڲ" + "JK_PLAN_METHOD" // "jk8PlanMethodƻʽ" //45 "LR" + + +}; + + +/********************************************************** +* +* ϴ洢Сλ +* +***********************************************************/ +typedef struct{ + string JK_ITEM_ID; // ϱ //item_id + string JK_ITEM_NAME; // //object_name + string JK_ITEM_SPEC_MODEL; // ͺ //jk8SpecModel(rev) + string JK_CLASS_CODE; // //jk8StockBigTypeNo(rev) + string JK_PROD_CODE; // Ʒʶ //5 //jk8TechModel(rev) + string JK_UOM; // λ //uom_tag(item) + string JK_CREATION_DATE; // //now_date(system) + string JK_SCRAP_DATE; // ͣ // + string JK_DESIGN_CODE; // ͼϢ // + string JK_IS_SCRAP; // ǷʧЧ //10 // + string JK_FROM; // //current_user_name + string JK_TRANS_TIME; // ʱ //now_date(system) + string JK_STATUS; // ״̬ //0-½,1-,2-쳣δ,3-ʧش,4-δش + string JK_ERROR_MSG; // Ϣ //erp + string JK_OPERATE_TIME; // ʱ //15 //erp + string JK_PUID; // Ψһ //puid + string JK_FROM_SYS; // ݷ //Ĭ"TC" + string JK_ATTR_1; // չֶ2 + string JK_MATERIAL_STATUS; // ״̬2018.12.7 + string JK_REMARKS; // չֶ3 //20 + string JK_PRODUCT_IDNO; // չֶ4 + string JK_ITEM_REV; // չֶ5 2019.11.19汾Ϣ + string JK_ATTR_6; // չֶ6 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 //25 + string JK_CPSBH; // չֶ9 2019.04.11洢Ʒʶ + string JK_ATTR_10; // չֶ10 //27 + string JK_UNIT_WEIGHT; //λ (2017.8.28¼18) + string JK_UNIT_VOLUME; //λ + string JK_DOMSC_MARKET; //Ƿ + string JK_CONSUM ; //Ƿ + string JK_IS_BUY ; //Ƿɹ + string JK_IS_MAKE ; //Ƿ + string JK_OUT_SOURCE; //Ƿί + string JK_ACCOUNT_SET; //Ĭ + string JK_BUSINESS_TYPE; //ҵ + string JK_BUYER ; //ɹԱ + string JK_PURLEAD_TIME; //̶ǰ + string JK_SAFE_STOCK; //ȫ + string JK_SUPPLY_TYPE1; //Ӧ + string JK_WARE_HOUSE1; //Ĭϲֿ + string JK_INNTRANS_COE; //ڲ׼۸ϵ + string JK_HOUSE_KEEPER; //Ա + string JK_IS_INNTRANS; //Ƿڲ + string JK_PLAN_METHOD; //ƻʽ + +}JK_MATERIAL_STRUCT; + + + +/********************************************************** +* +* BOM_P ṹмֶ +* +***********************************************************/ +char jk_p_bom_fields[24][45] = { + "JK_BOM_ID", // ĸ + "JK_BOM_REV", //ͼ汾 + "JK_OWNING_USER", // ߣûƣ + "JK_RATE", // ĸ + "JK_CREATION_DATE", // Ч //5 + "JK_SCRAP_DATE", // ʧЧ + "JK_IS_SCRAP", // ǷʧЧ + "JK_FROM", // + "JK_TRANS_TIME", // ʱ + "JK_STATUS", // ״̬ //10 + "JK_ERROR_MSG", // Ϣ + "JK_OPERATE_TIME", // ʱ + "JK_PUID", // Ψһ + "JK_FROM_SYS", // ݷ + "JK_ATTR_1", // չֶ1 //15 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 //20 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10" // չֶ10 //24 +}; + + +/******************************************************** +* +* BOM_P ṹ洢Сλ +* +*********************************************************/ +typedef struct{ + string JK_BOM_ID; // ĸ + string JK_BOM_REV; //ͼ汾 + string JK_OWNING_USER; // ߣûƣ + string JK_RATE; // ĸ + string JK_CREATION_DATE; // Ч //5 + string JK_SCRAP_DATE; // ʧЧ + string JK_IS_SCRAP; // ǷʧЧ + string JK_FROM; // + string JK_TRANS_TIME; // ʱ + string JK_STATUS; // ״̬ //10 + string JK_ERROR_MSG; // Ϣ + string JK_OPERATE_TIME; // ʱ + string JK_PUID; // Ψһ + string JK_FROM_SYS; // ݷ + string JK_ATTR_1; // չֶ1 //15 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 //20 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //24 +}JK_P_BOM_STRUCT; + + +/********************************************************** +* +* BOM_Cṹмֶ +* +***********************************************************/ +char jk_c_bom_fields[18][45] = { + "JK_BOM_ID", // ĸ + "JK_BOM_REV", // BOMͼ汾 + "JK_BOM_CID", // Ӽ + "JK_SUPPLY_TYPE", // Ӧ + "JK_WAREHOUSE", // ֿ //5 + "JK_QUANTITY", // / + "JK_REMARK", // ע˵ + "JK_ATTR_1", // չֶ1 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 //10 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 //15 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10", // չֶ10 //17 + "JK_BOM_CWR" +}; + + +/******************************************************** +* +* BOM_Cṹ洢Сλ +* +*********************************************************/ +typedef struct{ + string JK_BOM_ID; // ĸ + string JK_BOM_REV; // BOMͼ汾 + string JK_BOM_CID; // Ӽ + string JK_SUPPLY_TYPE; // Ӧ + string JK_WAREHOUSE; // ֿ //5 + string JK_QUANTITY; // / + string JK_REMARK; // ע˵ + string JK_ATTR_1; // չֶ1 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 //10 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 //15 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //17 + string JK_BOM_CWR; +}JK_C_BOM_STRUCT; + + + +/********************************************************** +* +* BOM_SUB ṹмֶ +* +***********************************************************/ +char jk_sub_bom_fields[17][45] = { + "JK_BOM_ID", // ĸ + "JK_BOM_REV", // BOMͼ汾 + "JK_BOM_CID", // Ӽ + "JK_SUBSTITUTE_PART_ID", // + "JK_SUBSTITUTE_PART_INDEX", // //5 + "JK_SUBSTITUTE_PART_RATIO", // + "JK_SUBSTITUTE_PART_DATE", // Чʱ + "JK_IS_GLOBAL", // չֶ1 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 //10 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 //15 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10" //չֶ10 //17 +}; + + +/******************************************************** +* +* BOM_SUB ṹ洢Сλ +* +*********************************************************/ +typedef struct{ + string JK_BOM_ID; // ĸ + string JK_BOM_REV; // BOMͼ汾 + string JK_BOM_CID; // Ӽ + string JK_SUBSTITUTE_PART_ID; // + string JK_SUBSTITUTE_PART_INDEX; // //5 + string JK_SUBSTITUTE_PART_RATIO; // + string JK_SUBSTITUTE_PART_DATE; // Чʱ + string JK_IS_GLOBAL; // չֶ1 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 //10 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 //15 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //17 +}JK_SUB_BOM_STRUCT; + + +int sum(int y,int m,int d) +{ + unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; + int i,s=0; + for(i=1;i +#include +#include +//Է״̬ +#define SCRAPE_STATUS_NAME "ʧЧ" //״̬ +// +#define MATERIAL_jk8SpecModel "jk8SpecModel" //ͺ +#define MATERIAL_jk8StockBigTypeNo "jk8StockBigTypeNo" // +#define MATERIAL_jk8TechModel "jk8TechModel" //Ʒʶ + +#define MATERIAL_jk8UnitWeight "jk8UnitWeight" //λ (2017.8.28¼18) +#define MATERIAL_jk8UnitVolume "jk8UnitVolume" //λ +#define MATERIAL_jk8IsDomesticMarket "jk8IsDomesticMarket" //Ƿ +#define MATERIAL_jk8Isconsumables "jk8Isconsumables" //Ƿ +#define MATERIAL_jk8IsBuy "jk8IsBuy" //Ƿɹ +#define MATERIAL_jk8IsMake "jk8IsMake" //Ƿ +#define MATERIAL_jk8IsOutsource "jk8IsOutsource" //Ƿί +#define MATERIAL_jk8AccountSet "jk8AccountSet" //Ĭ +#define MATERIAL_jk8BusinessType "jk8BusinessType" //ҵ +#define MATERIAL_jk8Buyer "jk8Buyer" //ɹԱ +#define MATERIAL_jk8PurLeadTime "jk8PurLeadTime" //̶ǰ +#define MATERIAL_jk8SafeStock "jk8SafeStock" //ȫ +#define MATERIAL_jk8SupplyType1 "jk8SupplyType1" //Ӧ +#define MATERIAL_jk8Warehouse1 "jk8Warehouse1" //Ĭϲֿ +#define MATERIAL_jk8InnTransCoe "jk8InnTransCoe" //ڲ׼۸ϵ +#define MATERIAL_jk8WarehouseKeeper "jk8WarehouseKeeper" //Ա +#define MATERIAL_jk8IsInnTrans "jk8IsInnTrans" //Ƿڲ +#define MATERIAL_jk8PlanMethod "jk8PlanMethod" //ƻʽ + + +//BOM +#define BOM_Jk8SupplyType "jk8SupplyType1" //2017/11/2 // JK8SupplyType +#define BOM_Jk8Warehouse "jk8Warehouse1" //2017/11/2 //ֿ JK8Warehouse +#define BOM_Jk8RemarkDesc "JK8Remark" //ע +#define BOM_JK_BOM_CWR "jk8SubCompLossRate" //Ӽ +//BOMеĸ +#define BOM_jk8_mjshl "jk8ParentCompLossRate" //ĸ +//ݿϢ +#define JK_DB_USER_NAME "infodba" //û +#define JK_DB_USER_PWD "infodba" // +#define JK_DB_URL "//10.200.2.43/jktc" //ʽURL +//#define JK_DB_URL "//10.201.5.203/tc11" //URL +//#define JK_DB_URL "//10.201.5.202/JKTC" //URL + +//м +#define JK_MATERIAL_TABLE "JK_MATERIAL_TABLE" //м +#define JK_BOM_PARENT_LINE_TABLE "JK_BOM_PARENT_LINE_TABLE" //BOMͷм +#define JK_BOM_CHILD_LINE_TABLE "JK_BOM_CHILD_LINE_TABLE" //BOMṹм +#define JK_BOM_SUBSTITUTE_PART_TABLE "JK_BOM_SUBSTITUTE_PART_TABLE" //BOMLINE滻м +// +#define JK_SUBSTITUTE_EffectiveDate "jk8EffectiveDate" //Ч +#define JK_SUBSTITUTE_Order "jk8SubstitOrder" // +#define JK_SUBSTITUTE_Ratio "jk8SubstitRatio" // + +#define JK_SUBSTITUTE_EffectiveDate1 "JK8EffectiveDate" //Ч1 +#define JK_SUBSTITUTE_Order1 "JK8SubstitOrder" //1 +#define JK_SUBSTITUTE_Ratio1 "JK8SubstitRatio" //1 + +using namespace std; + + + + +/********************************************************** +* +* мֶ +* +***********************************************************/ +char jk_material_fields1[45][45] = { + "JK_ITEM_ID", // ϱ + "JK_ITEM_NAME", // + "JK_ITEM_SPEC_MODEL", // ͺ + "JK_CLASS_CODE", // + "JK_PROD_CODE", // Ʒʶ //5 + "JK_UOM", // λ + "JK_CREATION_DATE", // + "JK_SCRAP_DATE", // ͣ + "JK_DESIGN_CODE", // ͼϢ + "JK_IS_SCRAP", // ǷʧЧ //10 + "JK_FROM", // + "JK_TRANS_TIME", // ʱ + "JK_STATUS", // ״̬ + "JK_ERROR_MSG", // Ϣ + "JK_OPERATE_TIME", // ʱ //15 + "JK_PUID", // Ψһ + "JK_FROM_SYS", // ݷ + "JK_ATTR_1", // չֶ1 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 //20 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 //25 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10", // չֶ10 //27 + "JK_UNIT_WEIGHT", // "jk8UnitWeightλ" (2017.8.28м¼18ֶ) + "JK_UNIT_VOLUME", // "jk8UnitVolumeλ" + "JK_DOMSC_MARKET", // jk8IsDomesticMarketǷ //30 + "JK_CONSUM", // "jk8IsconsumablesǷ" + "JK_IS_BUY", // "jk8IsBuyǷɹ" + "JK_IS_MAKE", // "jk8IsMakeǷ" + "JK_OUT_SOURCE", // "jk8IsOutsourceǷί" + "JK_ACCOUNT_SET", // "jk8AccountSetĬ" //35 + "JK_BUSINESS_TYPE", // "jk8BusinessTypeҵ" + "JK_BUYER", // "jk8BuyerɹԱ" + "JK_PURLEAD_TIME", // "jk8PurLeadTime̶ǰ" + "JK_SAFE_STOCK", // "jk8SafeStockȫ" + "JK_SUPPLY_TYPE1", // "jk8SupplyType1Ӧ" //40 + "JK_WARE_HOUSE1", // "jk8Warehouse1Ĭϲֿ" + "JK_INNTRANS_COE", // "jk8InnTransCoeڲ׼۸ϵ" + "JK_HOUSE_KEEPER", // "jk8WarehouseKeeperԱ" + "JK_IS_INNTRANS", // "jk8IsInnTransǷڲ" + "JK_PLAN_METHOD" // "jk8PlanMethodƻʽ" //45 "LR" + +}; + + +/********************************************************** +* +* ϴ洢Сλ +* +***********************************************************/ +typedef struct{ + string JK_ITEM_ID; // ϱ //item_id + string JK_ITEM_NAME; // //object_name + string JK_ITEM_SPEC_MODEL; // ͺ //jk8SpecModel(rev) + string JK_CLASS_CODE; // //jk8StockBigTypeNo(rev) + string JK_PROD_CODE; // Ʒʶ //5 //jk8TechModel(rev) + string JK_UOM; // λ //uom_tag(item) + string JK_CREATION_DATE; // //now_date(system) + string JK_SCRAP_DATE; // ͣ // + string JK_DESIGN_CODE; // ͼϢ // + string JK_IS_SCRAP; // ǷʧЧ //10 // + string JK_FROM; // //current_user_name + string JK_TRANS_TIME; // ʱ //now_date(system) + string JK_STATUS; // ״̬ //0-½,1-,2-쳣δ,3-ʧش,4-δش + string JK_ERROR_MSG; // Ϣ //erp + string JK_OPERATE_TIME; // ʱ //15 //erp + string JK_PUID; // Ψһ //puid + string JK_FROM_SYS; // ݷ //Ĭ"TC" + string JK_ATTR_1; // չֶ1 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 //20 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 //25 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //27 + string JK_UNIT_WEIGHT; //λ (2017.8.28¼18) + string JK_UNIT_VOLUME; //λ + string JK_DOMSC_MARKET; //Ƿ + string JK_CONSUM ; //Ƿ + string JK_IS_BUY ; //Ƿɹ + string JK_IS_MAKE ; //Ƿ + string JK_OUT_SOURCE; //Ƿί + string JK_ACCOUNT_SET; //Ĭ + string JK_BUSINESS_TYPE; //ҵ + string JK_BUYER ; //ɹԱ + string JK_PURLEAD_TIME; //̶ǰ + string JK_SAFE_STOCK; //ȫ + string JK_SUPPLY_TYPE1; //Ӧ + string JK_WARE_HOUSE1; //Ĭϲֿ + string JK_INNTRANS_COE; //ڲ׼۸ϵ + string JK_HOUSE_KEEPER; //Ա + string JK_IS_INNTRANS; //Ƿڲ + string JK_PLAN_METHOD; //ƻʽ + +}JK_MATERIAL_STRUCT1; + + + +/********************************************************** +* +* BOM_P ṹмֶ +* +***********************************************************/ +char jk_p_bom_fields1[24][45] = { + "JK_BOM_ID", // ĸ + "JK_BOM_REV", //ͼ汾 + "JK_OWNING_USER", // ߣûƣ + "JK_RATE", // ĸ + "JK_CREATION_DATE", // Ч //5 + "JK_SCRAP_DATE", // ʧЧ + "JK_IS_SCRAP", // ǷʧЧ + "JK_FROM", // + "JK_TRANS_TIME", // ʱ + "JK_STATUS", // ״̬ //10 + "JK_ERROR_MSG", // Ϣ + "JK_OPERATE_TIME", // ʱ + "JK_PUID", // Ψһ + "JK_FROM_SYS", // ݷ + "JK_ATTR_1", // չֶ1 //15 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 //20 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10" // չֶ10 //24 +}; + + +/******************************************************** +* +* BOM_P ṹ洢Сλ +* +*********************************************************/ +typedef struct{ + string JK_BOM_ID; // ĸ + string JK_BOM_REV; //ͼ汾 + string JK_OWNING_USER; // ߣûƣ + string JK_RATE; // ĸ + string JK_CREATION_DATE; // Ч //5 + string JK_SCRAP_DATE; // ʧЧ + string JK_IS_SCRAP; // ǷʧЧ + string JK_FROM; // + string JK_TRANS_TIME; // ʱ + string JK_STATUS; // ״̬ //10 + string JK_ERROR_MSG; // Ϣ + string JK_OPERATE_TIME; // ʱ + string JK_PUID; // Ψһ + string JK_FROM_SYS; // ݷ + string JK_ATTR_1; // չֶ1 //15 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 //20 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //24 +}JK_P_BOM_STRUCT1; + + +/********************************************************** +* +* BOM_Cṹмֶ +* +***********************************************************/ +char jk_c_bom_fields1[18][45] = { + "JK_BOM_ID", // ĸ + "JK_BOM_REV", // BOMͼ汾 + "JK_BOM_CID", // Ӽ + "JK_SUPPLY_TYPE", // Ӧ + "JK_WAREHOUSE", // ֿ //5 + "JK_QUANTITY", // / + "JK_REMARK", // ע˵ + "JK_ATTR_1", // չֶ1 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 //10 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 //15 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10", // չֶ10 //17 + "JK_BOM_CWR" +}; + + +/******************************************************** +* +* BOM_Cṹ洢Сλ +* +*********************************************************/ +typedef struct{ + string JK_BOM_ID; // ĸ + string JK_BOM_REV; // BOMͼ汾 + string JK_BOM_CID; // Ӽ + string JK_SUPPLY_TYPE; // Ӧ + string JK_WAREHOUSE; // ֿ //5 + string JK_QUANTITY; // / + string JK_REMARK; // ע˵ + string JK_ATTR_1; // չֶ1 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 //10 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 //15 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //17 + string JK_BOM_CWR; +}JK_C_BOM_STRUCT1; + + + +/********************************************************** +* +* BOM_SUB ṹмֶ +* +***********************************************************/ +char jk_sub_bom_fields1[17][45] = { + "JK_BOM_ID", // ĸ + "JK_BOM_REV", // BOMͼ汾 + "JK_BOM_CID", // Ӽ + "JK_SUBSTITUTE_PART_ID", // + "JK_SUBSTITUTE_PART_INDEX", // //5 + "JK_SUBSTITUTE_PART_RATIO", // + "JK_SUBSTITUTE_PART_DATE", // Чʱ + "JK_IS_GLOBAL", // չֶ1 + "JK_ATTR_2", // չֶ2 + "JK_ATTR_3", // չֶ3 //10 + "JK_ATTR_4", // չֶ4 + "JK_ATTR_5", // չֶ5 + "JK_ATTR_6", // չֶ6 + "JK_ATTR_7", // չֶ7 + "JK_ATTR_8", // չֶ8 //15 + "JK_ATTR_9", // չֶ9 + "JK_ATTR_10" //չֶ10 //17 +}; + + +/******************************************************** +* +* BOM_SUB ṹ洢Сλ +* +*********************************************************/ +typedef struct{ + string JK_BOM_ID; // ĸ + string JK_BOM_REV; // BOMͼ汾 + string JK_BOM_CID; // Ӽ + string JK_SUBSTITUTE_PART_ID; // + string JK_SUBSTITUTE_PART_INDEX; // //5 + string JK_SUBSTITUTE_PART_RATIO; // + string JK_SUBSTITUTE_PART_DATE; // Чʱ + string JK_IS_GLOBAL; // չֶ1 + string JK_ATTR_2; // չֶ2 + string JK_ATTR_3; // չֶ3 //10 + string JK_ATTR_4; // չֶ4 + string JK_ATTR_5; // չֶ5 + string JK_ATTR_6; // չֶ6 + string JK_ATTR_7; // չֶ7 + string JK_ATTR_8; // չֶ8 //15 + string JK_ATTR_9; // չֶ9 + string JK_ATTR_10; // չֶ10 //17 +}JK_SUB_BOM_STRUCT1; + + +int sum1(int y,int m,int d) +{ + unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; + int i,s=0; + for(i=1;i +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hx_custom.h" + +int sum2(int y,int m,int d) +{ + unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; + int i,s=0; + for(i=1;i shijian; + vector dates; + vector times; + string bianzhitime; + char * argflag = NULL , + *argvalue =NULL , + *arg = NULL , + arg_value[1024] = "\0"; + string minute=""; + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;itm_year + 1900),p->tm_mon,p->tm_mday)*10000+p->tm_hour*100+p->tm_min; + cout<<(p->tm_year + 1900)<<"-"<tm_mon<<"-"<tm_mday<<" "<tm_hour<<":"<tm_min<tm_year + 1900),p->tm_mon+1,p->tm_mday)>sum2(atoi(dates[0].c_str()),atoi(dates[1].c_str()),atoi(dates[2].c_str()))) + { + warn=false; + }else if(sum2((p->tm_year + 1900),p->tm_mon+1,p->tm_mday)==sum2(atoi(dates[0].c_str()),atoi(dates[1].c_str()),atoi(dates[2].c_str()))) + { + int time=atoi(minute.c_str()); + if(p->tm_hour*60+p->tm_min-time>atoi(times[0].c_str())*60+atoi(times[1].c_str())) + { + warn=false; + }else + { + warn=true; + } + } + if(warn==true) + { + cout<<"------------"< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "hx_custom.h" +#include "tc_log.h" +#include "jk_custom.h" + +typedef struct{ + string ITEMID;//ID + string ITEM_NAME;// + string ITEM_REV;//汾 + string DATE_RELEASED;//ʱ +}BOM_STRUCT; + +int getTopLevel(tag_t target,map &rev_map) +{ + int ifail=0; + int * levels; + tag_t *parents=NULLTAG; + int n_parents=0; + ITKCALL(ifail= PS_where_used_all(target,1,&n_parents,&levels,&parents)); + // cout<<"ʹö----->"<0) + { + for(int i=0;i::iterator rev_it; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + //ÿ汾BOM洢excelҵ汾 + tag_t target_Rev=NULL; + target_Rev=rev_it->first; + char * item_id=NULL; + char *item_revision_id=NULL; + AOM_ask_value_string(target_Rev,"item_id",&item_id); + AOM_ask_value_string(target_Rev,"item_revision_id",&item_revision_id); + // cout<(target,"")); + } + + } + if(levels!=NULL) + { + MEM_free(levels); + levels=NULL; + } + if(parents!=NULL) + { + MEM_free(parents); + parents=NULL; + } + return 0; +} +static void get_release_time(char *date_time) +{ + time_t the_time; + struct tm *time_ptr; + char *time_format = "%Y-%m-%d %H:%M "; + + the_time = time((time_t *)0); + time_ptr = localtime (&the_time); + strftime(date_time, 128, time_format, time_ptr); +} +int getBomVector(tag_t top_bom_line_tag,vector &vector) +{ + int ifail=0; + //ö + char * topID=NULL; + char * topRev=NULL; + char * topNAME=NULL; + char * dateReleased=NULL; + AOM_ask_value_string(top_bom_line_tag,"bl_item_item_id",&topID); + AOM_ask_value_string(top_bom_line_tag,"bl_rev_item_revision_id",&topRev); + AOM_ask_value_string(top_bom_line_tag,"bl_item_object_name",&topNAME); + AOM_ask_value_string(top_bom_line_tag,"bl_rev_date_released",&dateReleased); + BOM_STRUCT one_elem; + one_elem.ITEMID=topID; + one_elem.ITEM_NAME=topNAME; + one_elem.ITEM_REV=topRev; + string releaseDateString=dateReleased; + one_elem.DATE_RELEASED=releaseDateString; + /*if(releaseDateString.size()==0) + { + WriteLog_jk("%s %sûз",topID,topRev); + char current_date_time_str[128 + 1] = {"\0"}; + get_release_time(current_date_time_str); + WriteLog_jk("%sõǰ\n",current_date_time_str); + one_elem.DATE_RELEASED=current_date_time_str; + }else if(releaseDateString.size()>0) + { + one_elem.DATE_RELEASED=dateReleased; + }*/ + + vector.push_back(one_elem); + + int child_count = 0; + tag_t * child_tags = NULLTAG; + ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag,&child_count,&child_tags)); + for(int i=0;i vector,tag_t target_Rev,tag_t excelTag) +{ + int ifail=0; + + // ITK__convert_uid_to_tag("E8bxyzeUYvbLjA",&excelTag);//ȶһݼ + libxl::Book* book = nullptr; + book = xlCreateBook();//xlsļxlCreateBook() 򿪣xlsxļxmlṹԵxlCreateXMLBook() 򿪡 + book->setKey(L"Halil Kural", L"windows-2723210a07c4e90162b26966a8jcdboe");//˸ÿ⣬Ӧkeyûй + int n_refs = 0; + tag_t* refs = NULL; + + ifail = AE_ask_all_dataset_named_refs(excelTag, "excel", &n_refs, &refs); + if (ifail != ITK_ok) { /* your error logic here */ } + + char current_date_time_str[128 + 1] = {"\0"}; + get_current_time(current_date_time_str); + char * itemID=NULL; + char * itemRevId=NULL; + AOM_ask_value_string(target_Rev,"item_id",&itemID); + AOM_ask_value_string(target_Rev,"item_revision_id",&itemRevId); + + string time_now=current_date_time_str; + time_now.append("-").append(itemID).append("-").append(itemRevId); + string datasetName=time_now; + datasetName=datasetName.append(".xls"); + time_now="E:\\TEMP\\"+time_now+".xls"; + // cout<<"ļ·----------"<load(excel_path.str().c_str())) + { + sheet = book->getSheet(0);//õ1sheetҳ + + } + //д + TCHAR *array1; + TCHAR array2[100]; + TCHAR array3[100]; + for (int i=0;iwriteStr(i+1, 0, array1); + array1 = Char2Tchar(vector[i].ITEM_REV.c_str(),200); + sheet->writeStr(i+1, 1, array1); + MultiByteToWideChar(CP_ACP, 0, vector[i].ITEM_NAME.c_str(), -1, array2, 100); + sheet->writeStr(i+1, 2,array2 ); + MultiByteToWideChar(CP_ACP, 0, vector[i].DATE_RELEASED.c_str(), -1, array3, 100); + sheet->writeStr(i+1, 3,array3 ); + } + if (book->save(excel_path.str().c_str()))//浽example.xls + { + //..... + } + else + { + std::cout << book->errorMessage() << std::endl; + } + book->release();//ͷŶ󣡣 + //ݼҵ汾Ĺ淶ϵ + + create_dataset("MSExcel",datasetName.c_str(),target_Rev);//ݼ(object_type)ݼƣ汾 + return 0; +} +int jk_exportExcel(EPM_action_message_t msg) +{ + //20200113 + POM_AM__set_application_bypass(true); + /*char tc_log_file_name[512]; + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + + //sprintf(startDate,"%04d-%d-%02d 00:00", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "D:\\LOG\\jk_bom_log_[%d-%d-%d-%d-%02d].txt",1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name);*/ + + tag_t excelTag; + //TODO ѡ + vector pref_vec; + getPrefStrings("JK_exportbom_uid",TC_preference_site, pref_vec); + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&excelTag);//ȶһݼ + if(excelTag == NULLTAG){ + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + // WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + } + + } + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok, arg_cnt = 0, i = 0, att_cnt = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL; + char * object_TYPE_1 = NULL; + char * object_string1=NULL; + string value_type = ""; + string value_property=""; + char * ref_type=NULL; + int actualNum=0; + tag_t *actualtags=NULL; + string errorMessage=""; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + int reference_count=0;tag_t * reference_attachment=NULLTAG; + ifail = EPM_ask_attachments(rootTask_tag, EPM_reference_attachment, &reference_count, &reference_attachment); + map rev_map; + vector vector; +// vector.clear();//Ԫ + //ѭĿ + for (i = 0; i < att_cnt; i++) + { + tag_t targetTag=attachments[i]; + //ǰ汾͵ľͲϲ + char * object_type=NULL; + ITKCALL(ifail=AOM_ask_value_string(targetTag,"object_type",&object_type)); + if(strstr(object_type,"JK8MaterialRevision")!=NULL) + { + getTopLevel(targetTag,rev_map); + } + if(object_type!=NULL) + { + MEM_free(object_type); + object_type=NULL; + } + } + // cout<<"ж---------"<::iterator rev_it; + for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) + { + //ÿ汾BOM洢excelҵ汾 + tag_t target_Rev=NULL; + target_Rev=rev_it->first; + char * item_id=NULL; + char *item_revision_id=NULL; + AOM_ask_value_string(target_Rev,"item_id",&item_id); + AOM_ask_value_string(target_Rev,"item_revision_id",&item_revision_id); + // cout<0) + { + map::iterator rev_it2; + for( rev_it2 = rev_map.begin(); rev_it2 != rev_map.end(); rev_it2++ ) + { + /*index++; + if(index>20) + { + break; + }*/ + vector.clear(); + //ÿ汾BOM洢excelҵ汾 + tag_t target_Rev=NULL; + target_Rev=rev_it2->first; + int bom_num=0; + int ifail=0; + tag_t * bom_tags=NULLTAG; + AOM_ask_value_tags(target_Rev,"structure_revisions",&bom_num,&bom_tags); + if(bom_num>0) + { + tag_t only_bom=bom_tags[0]; + tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; + + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,only_bom,&top_bom_line_tag)); + getBomVector(top_bom_line_tag,vector);//ȡһ汾ͼеvector + + + + ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ棬޸Ժbomͼᱣ + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + } + + if(bom_tags!=NULL) + { + MEM_free(bom_tags); + bom_tags=NULL; + + } + //д뵽excelУݼҵϵ + writeToExcel( vector,target_Rev,excelTag); + + + } + } + // CloseLog_jk(); + POM_AM__set_application_bypass(false); + return 0; +} \ No newline at end of file diff --git a/jf_itk/jk_remove_allStatus.cpp b/jf_itk/jk_remove_allStatus.cpp new file mode 100644 index 0000000..ee6688e --- /dev/null +++ b/jf_itk/jk_remove_allStatus.cpp @@ -0,0 +1,356 @@ +#include "epm_handler_common.h" +#include "jk_custom_erp.h" +#include "jk_custom.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +#include "libxl.h" +extern "C" int POM_AM__set_application_bypass(logical bypass); +using namespace std; + +int searchItemRev(string item_id,string item_rev,vector &vector) +{ + cout<<"汾----"<tm_sec ; + + for(int n=0;n errMap; + vector type_vec;//еҪȥķ״̬ + vector itemRev;//еҪȥ״̬İ汾 + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + // + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + + + for(i = 0 ;i < att_cnt;i++){ + + tag_t excelTag = attachments[i]; + //ȡ PSBOMViewRevision + ITKCALL( WSOM_ask_object_type(excelTag, type_class)); + ECHO("%s\n",type_class); + if(strcmp(type_class,"MSExcel")==0) + { +// ITK__convert_uid_to_tag("T1exiQYYYvbLjA",&excelTag); + libxl::Book* book = nullptr; + book = xlCreateBook();//xlsļxlCreateBook() 򿪣xlsxļxmlṹԵxlCreateXMLBook() 򿪡 + book->setKey(L"Halil Kural", L"windows-2723210a07c4e90162b26966a8jcdboe");//˸ÿ⣬Ӧkeyûй + int n_refs = 0; + tag_t* refs = NULL; + + ifail = AE_ask_all_dataset_named_refs(excelTag, "excel", &n_refs, &refs); + if (ifail != ITK_ok) { /* your error logic here */ } + + char current_date_time_str[128 + 1] = {"\0"}; + get_current_date_and_time(current_date_time_str); + string time_now=current_date_time_str; + time_now="E:\\TEMP\\"+time_now+".xls"; + cout<<"ļ·----------"<load(excel_path.str().c_str())) + { + cout<<"88888888"<getSheet(0);//õ1sheetҳ + int lastRow=sheet->lastRow(); + cout<<""<cellType(i, 0))&&IsCellEmpty(sheet->cellType(i, 1))){ + string value0=ws2s(sheet->readStr(i, 0));//id + string value1=ws2s(sheet->readStr(i, 1));//ͺ + cout<1&&value1.length()>1 ) + { + searchItemRev(value0,value1,itemRev); + } + }else + { + continue; + } + } + } + if (book->save(excel_path.str().c_str()))//浽example.xls + { + //..... + } + else + { + std::cout << book->errorMessage() << std::endl; + } + book->release();//ͷŶ󣡣 + } + + } + + //еİ汾ȥ״̬ + //ɾϺͰ汾״̬ + cout<<"mark1"< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int jk_test_ask_icoAttribute(EPM_action_message_t msg) +{ + int ifail = ITK_ok, arg_cnt = 0, i = 0, att_cnt = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL; + + string errorMessage=""; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + //ѭĿ + for (i = 0; i < att_cnt; i++) { + // ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1);// + logical isClassified ; + ITKCALL(ICS_is_wsobject_classified(attachments[i],&isClassified));//жǷѾ + if(isClassified) + { + tag_t classObj,attribute_tag; + ICS_ask_classification_object(attachments[i],&classObj); + tag_t ics_tag; + char * class_id = NULL; + int theAttributeCount; + ICS_view_attribute_descriptor_p_t attributes; + ICS_view_descriptor_p_t theViewDescriptor =NULL; + ITKCALL( ICS_ico_ask_class_tag(classObj,&ics_tag)); + ITKCALL(ICS_ico_ask_class(classObj,&class_id)); + + ITKCALL(ICS_view_describe(class_id,"","",FALSE,&theViewDescriptor)); + theAttributeCount = theViewDescriptor->attributeCount; + attributes = theViewDescriptor->attributes; + for(int i = 0; i < theAttributeCount;i++){ + //WriteLog("ICO attr id = %d \n",attributes[i].id); + //WriteLog("ICO attr name = %s \n",attributes[i].name); + //WriteLog("ICO attr format = %d \n",attributes[i].format); + string attr_name; + cout<<"id--------------"<"<"<"<"< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +extern "C" int POM_AM__set_application_bypass(logical bypass); +using namespace std; +double stringToNum( string str) +{ + istringstream iss(str); + double num; + iss >> num; + return num; +} + +char * mem_char(char *x) +{ + if(x!=NULL) + { + MEM_free(x); + x=NULL; + } + return x; +} + +tag_t * mem_tag(tag_t *x) +{ + if(x!=NULL) + { + MEM_free(x); + x=NULL; + } + return x; +} +void insertMap(tag_t targetRev,map&targetmap) +{ + targetmap.clear(); + int ifail=0; + int bom_num=0; + tag_t * bom_tags=NULLTAG; + ITKCALL(ifail=AOM_ask_value_tags(targetRev,"structure_revisions",&bom_num,&bom_tags)); + if(bom_num>0) + { + tag_t only_bom=bom_tags[0]; + tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,only_bom,&top_bom_line_tag)); + int child_count=0;tag_t *child_tags=NULLTAG; + ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag,&child_count,&child_tags)); + for(int n=0;n(map_rev,bl_sequence_no)); + item_id=mem_char(item_id); + bl_sequence_no=mem_char(bl_sequence_no); + item_rev_id=mem_char(item_rev_id); + } + child_tags=mem_tag(child_tags); + ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ棬޸Ժbomͼᱣ + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + } + + bom_tags=mem_tag(bom_tags); +} + +void setBomlineProperty(tag_t old_line,tag_t new_line,string attribute_name) +{ + int ifail=0; + try + { + cout<<"ʼ------------"<"<"< map1;//һEBOM汾һBOMLineͲұ + map map2;//·MBOM汾һBOMLineͲұ + map map3;//һEBOM汾һBOMLine·MBOM汾һBOMLine + map map4;//EBOM汾һBOMLineͶӦid + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + //ѭĿ + for (i = 0; i < att_cnt; i++) { + ITKCALL(ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1));// + + cout << object_TYPE_1<(map2_rev,bl_sequence_no)); + + map::iterator rev_it; + for( rev_it = map1.begin(); rev_it != map1.end(); rev_it++ ) + { + + char *object_string=NULL; + tag_t tag1=rev_it->first; + string map1_sequence_no=rev_it->second; + tag_t tag2=map2_rev; + AOM_ask_value_string(tag1,"object_string",&object_string); + cout<<"map2"<(rev_it->first,map2_rev));//һ汾ebomlineӦİ汾mbomϵµmbomlineӦİ汾 + break; + } + + + } + + + + item_id=mem_char(item_id); + item_rev_id=mem_char(item_rev_id); + bl_sequence_no=mem_char(bl_sequence_no); + } + ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ棬޸Ժbomͼᱣ + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + + + //ITEM_rev_delete_bvr() + tag_t newRev=NULLTAG; + ITKCALL(ifail =ITEM_copy_rev(latest_rev,NULL,&newRev));// + + //TODO ȡMBOMв㼶Ϣ洢 + + //TODO ɾMBOMµBOMͼȽEBOMMBOM´ + // BOM_line_cut(); + + tag_t win,top_line; + BOM_create_window(&win); + BOM_set_window_pack_all(win,false); + BOM_set_window_top_line(win, NULL, latest_rev, NULL, &top_line); + + //TODO ɾbomͼ + /* int cnt=0; + tag_t *tags=NULLTAG; + AOM_ask_value_tags(newRev, "structure_revisions", &cnt, &tags); + + ITEM_rev_delete_bvr(newRev,tags[0]);*/ + tag_t win_new,top_line_new; + BOM_create_window(&win_new); + BOM_set_window_pack_all(win_new,false); + BOM_set_window_top_line(win_new, NULL, newRev, NULL, &top_line_new); + int top_line_new_count=0; + tag_t *top_line_new_child_tags=NULLTAG; + BOM_line_ask_all_child_lines(top_line_new,&top_line_new_count,&top_line_new_child_tags); + for (int e=0;e"<::iterator rev_map4; + for( rev_map4 = map4.begin(); rev_map4 != map4.end(); rev_map4++ ) + { + tag_t rev=rev_map4->first; + char * newEBOM_id=NULL; + if(rev!=NULL) + { + ITKCALL(ifail = AOM_ask_value_string(rev,"object_string",&newEBOM_id)); + cout<<"newEBOM_id-------->"<::iterator rev_map3; + int map3_size=0; + for( rev_map3 = map3.begin(); rev_map3 != map3.end(); rev_map3++ ) + { + map3_size++; + tag_t ebom_rev=rev_map3->first; + char * ebom_id=NULL; + char * mbom_id=NULL; + tag_t mbom_rev=rev_map3->second; + ITKCALL(ifail = AOM_ask_value_string(ebom_rev,"item_id",&ebom_id));//TODO bomlineϵ + ITKCALL(ifail = AOM_ask_value_string(mbom_rev,"item_id",&mbom_id)); + cout<<"map3_size------------>"<"<"<"<0) + { + tag_t only_bom_new=bom_tags[0]; + tag_t bom_window_tag_new = NULLTAG,top_bom_line_tag_new =NULLTAG; +// rev_tag = NULLTAG,item_tag =NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag_new)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag_new,only_bom_new,&top_bom_line_tag_new)); + int child_count_new=0;tag_t *child_tags_new=NULLTAG; + ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag_new,&child_count_new,&child_tags_new)); + for(int n1=0;n1rev, NULL, &line); + + } + + BOM_save_window(win); + BOM_save_window(win_new); + cout<<""< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +extern "C" int POM_AM__set_application_bypass(logical bypass); +using namespace std; +double stringToNum( string str) +{ + istringstream iss(str); + double num; + iss >> num; + return num; +} + +char * mem_char(char *x) +{ + if(x!=NULL) + { + MEM_free(x); + x=NULL; + } + return x; +} + +tag_t * mem_tag(tag_t *x) +{ + if(x!=NULL) + { + MEM_free(x); + x=NULL; + } + return x; +} +void insertMap(tag_t targetRev,map&targetmap) +{ + targetmap.clear(); + int ifail=0; + int bom_num=0; + tag_t * bom_tags=NULLTAG; + ITKCALL(ifail=AOM_ask_value_tags(targetRev,"structure_revisions",&bom_num,&bom_tags)); + if(bom_num>0) + { + tag_t only_bom=bom_tags[0]; + tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,only_bom,&top_bom_line_tag)); + int child_count=0;tag_t *child_tags=NULLTAG; + ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag,&child_count,&child_tags)); + for(int n=0;n(map_rev,bl_sequence_no)); + item_id=mem_char(item_id); + bl_sequence_no=mem_char(bl_sequence_no); + item_rev_id=mem_char(item_rev_id); + } + child_tags=mem_tag(child_tags); + ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ棬޸Ժbomͼᱣ + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + } + + bom_tags=mem_tag(bom_tags); +} + +void setBomlineProperty(tag_t old_line,tag_t new_line,string attribute_name) +{ + try + { + char* value=NULL; + AOM_ask_value_string(old_line,attribute_name.c_str(),&value); + cout<<"ֵ"<"<"< map1;//һEBOM汾һBOMLineͲұ + map map2;//·MBOM汾һBOMLineͲұ + map map3;//һEBOM汾һBOMLine·MBOM汾һBOMLine + map map4;//EBOM汾һBOMLineͶӦid + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + //ѭĿ + for (i = 0; i < att_cnt; i++) { + ITKCALL(ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1));// + + cout << object_TYPE_1<(map2_rev,bl_sequence_no)); + + map::iterator rev_it; + for( rev_it = map1.begin(); rev_it != map1.end(); rev_it++ ) + { + + char *object_string=NULL; + tag_t tag1=rev_it->first; + string map1_sequence_no=rev_it->second; + tag_t tag2=map2_rev; + AOM_ask_value_string(tag1,"object_string",&object_string); + cout<<"map2"<(rev_it->first,map2_rev));//һ汾ebomlineӦİ汾mbomϵµmbomlineӦİ汾 + break; + } + + + } + + + + item_id=mem_char(item_id); + item_rev_id=mem_char(item_rev_id); + bl_sequence_no=mem_char(bl_sequence_no); + } + ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ棬޸Ժbomͼᱣ + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + + + //ITEM_rev_delete_bvr() + tag_t newRev=NULLTAG; + ITKCALL(ifail =ITEM_copy_rev(actualtags[j],NULL,&newRev));// + + //TODO ȡMBOMв㼶Ϣ洢 + + //TODO ɾMBOMµBOMͼȽEBOMMBOM´ + // BOM_line_cut(); + + tag_t win,top_line; + BOM_create_window(&win); + BOM_set_window_pack_all(win,false); + BOM_set_window_top_line(win, NULL, actualtags[j], NULL, &top_line); + + //TODO ɾbomͼ + /* int cnt=0; + tag_t *tags=NULLTAG; + AOM_ask_value_tags(newRev, "structure_revisions", &cnt, &tags); + + ITEM_rev_delete_bvr(newRev,tags[0]);#1# + tag_t win_new,top_line_new; + BOM_create_window(&win_new); + BOM_set_window_pack_all(win_new,false); + BOM_set_window_top_line(win_new, NULL, newRev, NULL, &top_line_new); + int top_line_new_count=0; + tag_t *top_line_new_child_tags=NULLTAG; + BOM_line_ask_all_child_lines(top_line_new,&top_line_new_count,&top_line_new_child_tags); + for (int e=0;e"<::iterator rev_map4; + for( rev_map4 = map4.begin(); rev_map4 != map4.end(); rev_map4++ ) + { + tag_t rev=rev_map4->first; + char * newEBOM_id=NULL; + if(rev!=NULL) + { + ITKCALL(ifail = AOM_ask_value_string(rev,"object_string",&newEBOM_id)); + cout<<"newEBOM_id-------->"<::iterator rev_map3; + int map3_size=0; + for( rev_map3 = map3.begin(); rev_map3 != map3.end(); rev_map3++ ) + { + map3_size++; + tag_t ebom_rev=rev_map3->first; + char * ebom_id=NULL; + char * mbom_id=NULL; + tag_t mbom_rev=rev_map3->second; + ITKCALL(ifail = AOM_ask_value_string(ebom_rev,"item_id",&ebom_id));//TODO bomlineϵ + ITKCALL(ifail = AOM_ask_value_string(mbom_rev,"item_id",&mbom_id)); + cout<<"map3_size------------>"<"<"<"<rev, NULL, &line); + + } + + BOM_save_window(win); + BOM_save_window(win_new); + cout<<""< +#include "hx_custom.h" + + +typedef struct{ + string jk8ProductType;//Ʒ + string jk8ProjectNO;// Ŀ + string jk8ProjectName;// Ŀ + string jk8ProductModNO;// Ʒͺ + string jk8ProductIdentifyNO;// ʶ + string jk8ProductName;//Ʒ + string jk8BMManufactor;// + string jk8BMMaterial;// + string jk8ContrlCompType;// + string jk8Note;//ע + string jk8Applicant;// + string jk8RecordDate;//Ǽ + string jk8Status;//״̬ + string jk8ProductTypePMN;//Ʒ + string jk8PipeDSpec;//ܾ + // string jk8CommunicateMode; ͨŷʽ + string jk8Feature;// + string jk8Texture;// + string jk8Structure;//ṹ + string jk8Description;// +}JK_WATER_SUMMARY_STRUCT; +/** +* ûܱ +*/ +void JK_set_water_summary_form_prop(tag_t form_tag,vector bean_vec){ + WriteLog_jk("ʼûܱ\n"); + int i = 0,j=0 ; + int prop_count = 18; + char ** values[18]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_WATER_SUMMARY_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8ProductTypePMN.c_str());//Ʒ + strcpy(values[1][i],bean.jk8ProjectNO.c_str());// Ŀ + strcpy(values[2][i],bean.jk8ProjectName.c_str());// Ŀ + strcpy(values[3][i],bean.jk8ProductModNO.c_str());// Ʒͺ + strcpy(values[4][i],bean.jk8ProductIdentifyNO.c_str());// ʶ 5 + + strcpy(values[5][i],bean.jk8ProductName.c_str());// Ʒ + strcpy(values[6][i],bean.jk8BMManufactor.c_str());// + strcpy(values[7][i],bean.jk8BMMaterial.c_str());// + strcpy(values[8][i],bean.jk8ContrlCompType.c_str());;// + strcpy(values[9][i],bean.jk8Note.c_str());// ע 10 + + strcpy(values[10][i],bean.jk8Applicant.c_str());// + strcpy(values[11][i],bean.jk8RecordDate.c_str());// Ǽ + strcpy(values[12][i],bean.jk8Status.c_str());// ״̬ + //strcpy(values[13][i],bean.jk8ProductTypePMN.c_str());// Ʒ + strcpy(values[13][i],bean.jk8PipeDSpec.c_str());// ܾ + + //strcpy(values[14][i],bean.jk8CommunicateMode.c_str());// ͨŷʽ + strcpy(values[14][i],bean.jk8Feature.c_str());// + strcpy(values[15][i],bean.jk8Texture.c_str());// + strcpy(values[16][i],bean.jk8Structure.c_str());// ṹ + strcpy(values[17][i],bean.jk8Description.c_str());// + + } + } + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[0]));//Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[1]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[2]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[3]));// Ʒͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[4]));// ʶ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[5]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManufactor",bean_vec.size(),values[6]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMMaterial",bean_vec.size(),values[7]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8ContrlCompType",bean_vec.size(),values[8]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Note",bean_vec.size(),values[9]));// ע + + ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[10]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[11]));// Ǽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[12]));// ״̬ + //ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[13]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8PipeDSpec",bean_vec.size(),values[13]));// ܾ + + //ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[14]));// ͨŷʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Feature",bean_vec.size(),values[14]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Texture",bean_vec.size(),values[15]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Structure",bean_vec.size(),values[16]));// ṹ + ITKCALL(AOM_set_value_strings(form_tag,"jk8FunctionOverview",bean_vec.size(),values[17]));// + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_refresh(form_tag,false)); + ITKCALL(AOM_unlock(form_tag,0)); + WriteLog_jk("ݻܱ,\n"); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + /*for(i = 0 ;i &bean_vec,int * isOk){ + int prop_count = 18; + int count[18],sum_count =0; + char ** form_value[18]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[0],&form_value[0]));//Ʒ + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[1],&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[2],&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[3],&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[4],&form_value[4]));// ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[5],&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManufactor",&count[6],&form_value[6]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMMaterial",&count[7],&form_value[7]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ContrlCompType",&count[8],&form_value[8]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Note",&count[9],&form_value[9]));// ע + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[10],&form_value[10]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[11],&form_value[11]));// Ǽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[12],&form_value[12]));// ״̬ + //ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[13],&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PipeDSpec",&count[13],&form_value[13]));// ܾ + // ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[14],&form_value[14]));ͨŷʽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Feature",&count[14],&form_value[14]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Texture",&count[15],&form_value[15]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Structure",&count[16],&form_value[16]));// ṹ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8FunctionOverview",&count[17],&form_value[17]));// + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + //ȡıԵֵ + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + if(form_value[i][j]!=NULL){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + } + if(form_value[i]!=NULL){ + MEM_free(form_value[i]); + form_value[i] = NULL; + } + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} +/** +* ȡչ +* +*/ +void JK_get_water_form_prop(tag_t form_tag,JK_WATER_SUMMARY_STRUCT &bean,char *form_type){ + char * form_value[16]; + int prop_count = 16; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"< &list_bean ,char *form_type){ + char * form_value[18]; + int prop_count = 18; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"< vec_gjgg; + vector vec_xh; + vector vec_sbh; + Split(form_value[13], ",", vec_gjgg); + Split(form_value[3], ",", vec_xh); + Split(form_value[4], ",", vec_sbh); + if(vec_gjgg.size() == vec_xh.size() && vec_gjgg.size() == vec_sbh.size()){ + for(int i = 0 ;i < vec_gjgg.size();i++){ + bean.jk8ProductModNO.assign(vec_xh[i]); + bean.jk8PipeDSpec.assign(vec_gjgg[i]); + bean.jk8ProductIdentifyNO.assign(vec_sbh[i]); + list_bean.push_back(bean); + } + } + // printf("vec_gjgg.size()=====%d",vec_gjgg.size()); + // printf("first.list_bean.size()=====%d",list_bean.size()); + + //splitܾ񣬴bean + /* vector vec_split; + Split(form_value[13], ",", vec_split); + for(int i = 0 ;i < vec_split.size();i++){ + bean.jk8PipeDSpec.assign(vec_split[i]); + list_bean.push_back(bean); + } */ + }else if(strcmp(form_type , "JK8NWPIdenNOAppForm")==0)//²Ʒʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + cout<<"2-----------"< vec_gjgg; + vector vec_xh; + Split(form_value[13], ",", vec_gjgg); + Split(form_value[3], ",", vec_xh); + if(vec_gjgg.size() == vec_xh.size()){ + for(int i = 0 ;i < vec_gjgg.size();i++){ + bean.jk8ProductModNO.assign(vec_xh[i]); + bean.jk8PipeDSpec.assign(vec_gjgg[i]); + list_bean.push_back(bean); + } + } */ + list_bean.push_back(bean); + + }else if(strcmp(form_type , "JK8WSpecPINOAppForm")==0)//Ҫʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePIN",&form_value[0]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectNO",&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectName",&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductModNO",&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductIdentifyNO",&form_value[4]));// ʶ + + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductName",&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMManufactor",&form_value[6]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMMaterial",&form_value[7]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8ContrlCompType",&form_value[8]));// + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Note",&form_value[9]));// ע(޴) +// ITKCALL(AOM_ask_value_string(form_tag,"jk8Applicant",&form_value[10]));// +// ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[11]));// Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Status",&form_value[12]));// ״̬(޴) + //ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePMN",&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8PipeDSpec",&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_string(form_tag,"jk8CommunicateMode",&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_string(form_tag,"jk8Structure",&form_value[15]));// ṹ + + + form_value[9] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[9],"");// ״̬ ĬΪ + form_value[12] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[12],"");// ״̬ ĬΪ + + bean.jk8ProductTypePMN.assign(form_value[0]); + bean.jk8ProjectNO.assign(form_value[1]); + bean.jk8ProjectName.assign(form_value[2]); + bean.jk8ProductModNO.assign(form_value[3]); + bean.jk8ProductIdentifyNO.assign(form_value[4]); + + bean.jk8ProductName.assign(form_value[5]); + bean.jk8BMManufactor.assign(form_value[6]); + bean.jk8BMMaterial.assign(form_value[7]); + bean.jk8ContrlCompType.assign(form_value[8]); + bean.jk8Note.assign(form_value[9]); + + bean.jk8Applicant.assign(form_value[10]); + bean.jk8RecordDate.assign(form_value[11]); + bean.jk8Status.assign(form_value[12]); + bean.jk8PipeDSpec.assign(form_value[13]); + // bean.jk8CommunicateMode.assign(form_value[14]); + bean.jk8Feature.assign(form_value[14]); + bean.jk8Texture.assign(form_value[15]); + bean.jk8Structure.assign(form_value[16]); + bean.jk8Description.assign(form_value[17]); + + list_bean.push_back(bean); + + }else if(strcmp(form_type , "JK8DWPIdenNOAppForm")==0)//Ʒʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductType",&form_value[0]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectNO",&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectName",&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductModNO",&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductIdentifyNO",&form_value[4]));// ʶ + + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductName",&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMManufactor",&form_value[6]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMMaterial",&form_value[7]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8ContrlCompType",&form_value[8]));// + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Note",&form_value[9]));// ע(޴) +// ITKCALL(AOM_ask_value_string(form_tag,"jk8Applicant",&form_value[10]));// +// ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[11]));// Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Status",&form_value[12]));// ״̬(޴) + //ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePMN",&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8PipeDSpec",&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_string(form_tag,"jk8CommunicateMode",&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_string(form_tag,"jk8Structure",&form_value[15]));// ṹ + + + form_value[9] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[9],"");// ״̬ ĬΪ + form_value[12] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[12],"");// ״̬ ĬΪ + + bean.jk8ProductTypePMN.assign(form_value[0]); + bean.jk8ProjectNO.assign(form_value[1]); + bean.jk8ProjectName.assign(form_value[2]); + bean.jk8ProductModNO.assign(form_value[3]); + bean.jk8ProductIdentifyNO.assign(form_value[4]); + + bean.jk8ProductName.assign(form_value[5]); + bean.jk8BMManufactor.assign(form_value[6]); + bean.jk8BMMaterial.assign(form_value[7]); + bean.jk8ContrlCompType.assign(form_value[8]); + bean.jk8Note.assign(form_value[9]); + + bean.jk8Applicant.assign(form_value[10]); + bean.jk8RecordDate.assign(form_value[11]); + bean.jk8Status.assign(form_value[12]); + bean.jk8PipeDSpec.assign(form_value[13]); + // bean.jk8CommunicateMode.assign(form_value[14]); + bean.jk8Feature.assign(form_value[14]); + bean.jk8Texture.assign(form_value[15]); + bean.jk8Structure.assign(form_value[16]); + bean.jk8Description.assign(form_value[17]); + + list_bean.push_back(bean); + + } + + + //ͷԴ + for(int i = 0 ;i tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "%s\\jk_water_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name); + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_WATER_SQB_FORM_PUID",TC_preference_site, pref_vec);//w6UxvPI4YvbLjA + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + logical is_reserved; + POM_AM__set_application_bypass(true); + ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); + if (is_reserved) + { + WriteLog_jk("ܱǩ,ʼǩ\n"); + ITKCALL(RES_checkin(summary_form_tag)); + } + ITKCALL(AOM_lock(summary_form_tag)); + ITKCALL(AOM_refresh(summary_form_tag,false)); + POM_AM__set_application_bypass(false); + JK_get_water_summary_form_prop(summary_form_tag,bean_vec,&isOk); //ܱװ + if(isOk == 0){ + ITKCALL(AOM_unlock(summary_form_tag)); + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + WriteLog_jk("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + printf("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + WriteLog_jk("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + CloseLog_jk(); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8DerPIdenNOAppForm + * ͣJK8SpecPINOAppForm + * ͣJK8NewPIdenNOAppForm + * ͣJK8NPModINOAppForm + * ͣJK8ExtPIdenNOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + WriteLog_jk("ͣ%s \n",type_class); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8DWPIdenNOAppForm") ==0 //Ʒʶ + ||strcmp(type_class,"JK8WSpecPINOAppForm") ==0 //ҪƷʶ + ||strcmp(type_class,"JK8NWPIdenNOAppForm") ==0 //²Ʒʶ + ||strcmp(type_class,"JK8WaterPModAppForm") ==0//²Ʒͺʶ + ) + { + WriteLog_jk("ͷ,ʼִд \n"); + char *name_fo; + ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); + WriteLog_jk("ƣ%s \n",name_fo); + + char *sbhstr,*cpxhstr; + if(strcmp(type_class,"JK8WaterPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// ʶ + + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ʶΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + + } + + /** JK_WATER_SUMMARY_STRUCT bean ; + //ȡű + JK_get_water_form_prop(attachments[i],bean,type_class); + cout<<"5-----------"< list_bean; + JK_get_water_form_propSplit(attachments[i],list_bean,type_class); + // printf("third.list_bean.size===%d\n",list_bean.size()); + cout<<"5-----------"< +#include "hx_custom.h" + + +typedef struct{ + string jk8ProductType;//Ʒ + string jk8ProjectNO;// Ŀ + string jk8ProjectName;// Ŀ + string jk8ProductModNO;// Ʒͺ + string jk8ProductIdentifyNO;// ʶ + string jk8ProductName;//Ʒ + string jk8BMManufactor;// + string jk8BMMaterial;// + string jk8ContrlCompType;// + string jk8Note;//ע + string jk8Applicant;// + string jk8RecordDate;//Ǽ + string jk8Status;//״̬ + string jk8ProductTypePMN;//Ʒ + string jk8PipeDSpec;//ܾ + string jk8CommunicateMode;//ͨŷʽ + string jk8Structure;//ṹ +}JK_WATER_SUMMARY_STRUCT; +/** +* ûܱ +*/ +void JK_set_water_summary_form_prop(tag_t form_tag,vector bean_vec){ + WriteLog_jk("ʼûܱ\n"); + int i = 0,j=0 ; + int prop_count = 16; + char ** values[16]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_WATER_SUMMARY_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8ProductTypePMN.c_str());//Ʒ + strcpy(values[1][i],bean.jk8ProjectNO.c_str());// Ŀ + strcpy(values[2][i],bean.jk8ProjectName.c_str());// Ŀ + strcpy(values[3][i],bean.jk8ProductModNO.c_str());// Ʒͺ + strcpy(values[4][i],bean.jk8ProductIdentifyNO.c_str());// ʶ 5 + + strcpy(values[5][i],bean.jk8ProductName.c_str());// Ʒ + strcpy(values[6][i],bean.jk8BMManufactor.c_str());// + strcpy(values[7][i],bean.jk8BMMaterial.c_str());// + strcpy(values[8][i],bean.jk8ContrlCompType.c_str());;// + strcpy(values[9][i],bean.jk8Note.c_str());// ע 10 + + strcpy(values[10][i],bean.jk8Applicant.c_str());// + strcpy(values[11][i],bean.jk8RecordDate.c_str());// Ǽ + strcpy(values[12][i],bean.jk8Status.c_str());// ״̬ + //strcpy(values[13][i],bean.jk8ProductTypePMN.c_str());// Ʒ + strcpy(values[13][i],bean.jk8PipeDSpec.c_str());// ܾ + + strcpy(values[14][i],bean.jk8CommunicateMode.c_str());// ͨŷʽ + strcpy(values[15][i],bean.jk8Structure.c_str());// ṹ + + + } + } + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[0]));//Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[1]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[2]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[3]));// Ʒͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[4]));// ʶ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[5]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManufactor",bean_vec.size(),values[6]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMMaterial",bean_vec.size(),values[7]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8ContrlCompType",bean_vec.size(),values[8]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Note",bean_vec.size(),values[9]));// ע + + ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[10]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[11]));// Ǽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[12]));// ״̬ + //ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[13]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8PipeDSpec",bean_vec.size(),values[13]));// ܾ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[14]));// ͨŷʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Structure",bean_vec.size(),values[15]));// ṹ + + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_refresh(form_tag,false)); + ITKCALL(AOM_unlock(form_tag,0)); + WriteLog_jk("ݻܱ,\n"); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + /*for(i = 0 ;i &bean_vec,int * isOk){ + int prop_count = 16; + int count[16],sum_count =0; + char ** form_value[16]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[0],&form_value[0]));//Ʒ + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[1],&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[2],&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[3],&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[4],&form_value[4]));// ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[5],&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManufactor",&count[6],&form_value[6]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMMaterial",&count[7],&form_value[7]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ContrlCompType",&count[8],&form_value[8]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Note",&count[9],&form_value[9]));// ע + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[10],&form_value[10]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[11],&form_value[11]));// Ǽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[12],&form_value[12]));// ״̬ + //ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[13],&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PipeDSpec",&count[13],&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[14],&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Structure",&count[15],&form_value[15]));// ṹ + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + if(form_value[i][j]!=NULL){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + } + if(form_value[i]!=NULL){ + MEM_free(form_value[i]); + form_value[i] = NULL; + } + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} +/** +* ȡչ +* +*/ +void JK_get_water_form_prop(tag_t form_tag,JK_WATER_SUMMARY_STRUCT &bean,char *form_type){ + char * form_value[16]; + int prop_count = 16; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"<tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "%s\\jk_water_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name); + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_WATER_SQB_FORM_PUID",TC_preference_site, pref_vec);//w6UxvPI4YvbLjA + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + logical is_reserved; + POM_AM__set_application_bypass(true); + ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); + if (is_reserved) + { + WriteLog_jk("ܱǩ,ʼǩ\n"); + ITKCALL(RES_checkin(summary_form_tag)); + } + ITKCALL(AOM_lock(summary_form_tag)); + ITKCALL(AOM_refresh(summary_form_tag,false)); + POM_AM__set_application_bypass(false); + JK_get_water_summary_form_prop(summary_form_tag,bean_vec,&isOk); + if(isOk == 0){ + ITKCALL(AOM_unlock(summary_form_tag)); + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + WriteLog_jk("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + printf("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + WriteLog_jk("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + CloseLog_jk(); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8DerPIdenNOAppForm + * ͣJK8SpecPINOAppForm + * ͣJK8NewPIdenNOAppForm + * ͣJK8NPModINOAppForm + * ͣJK8ExtPIdenNOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + WriteLog_jk("ͣ%s \n",type_class); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8DWPIdenNOAppForm") ==0 //Ʒʶ + ||strcmp(type_class,"JK8WSpecPINOAppForm") ==0 //ҪƷʶ + ||strcmp(type_class,"JK8NWPIdenNOAppForm") ==0 //²Ʒʶ + ||strcmp(type_class,"JK8WaterPModAppForm") ==0//²Ʒͺʶ + ) + { + WriteLog_jk("ͷ,ʼִд \n"); + char *name_fo; + ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); + WriteLog_jk("ƣ%s \n",name_fo); + + char *sbhstr,*cpxhstr; + if(strcmp(type_class,"JK8WaterPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// ʶ + + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ʶΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + + JK_WATER_SUMMARY_STRUCT bean ; + //ȡű + JK_get_water_form_prop(attachments[i],bean,type_class); + cout<<"5-----------"< +#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 + * ˺й淶дdllƼ"_"ͷ + */ + DLLAPI int JK_itk_register_callbacks() + { + int ifail = ITK_ok; + TC_write_syslog("*******************************************************************************\n"); + TC_write_syslog("* JK_itk register_callbacks is starting *\n"); + TC_write_syslog("*******************************************************************************\n"); + + + ITKCALL( ifail = CUSTOM_register_exit( "JK_itk", "USERSERVICE_register_methods", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods) ); + fprintf( stdout, "\n JK_itk registering USERSERVICE_custom_register_methods completed!\n" ); + + + ITKCALL(ifail = CUSTOM_register_exit( "JK_itk", "USER_init_module", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_runtime_methods) ); + + Register_revise_msg(); + //Run_Time_register_properties(); + ITKCALL( ifail = CUSTOM_register_exit("JK_itk","USER_gs_shell_init_module", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_handlers) ); + fprintf( stdout, "\n JK_itk registering USERSERVICE_custom_register_handlers completed!\n" ); + + + return ifail; + } + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/jf_itk/ocilib.cxx b/jf_itk/ocilib.cxx new file mode 100644 index 0000000..779bd05 --- /dev/null +++ b/jf_itk/ocilib.cxx @@ -0,0 +1,442 @@ +/*===================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +======================================================================================================================= +File description: + + Filename: ocilib.cxx + Module : OCI + + This file describes OCI library Package. + +======================================================================================================================= +Date Name Description of Change +1-Feb-2015 Ray li Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#include "ocilib.h" +#include + +#define NUM 100 +#define USERNAME "infodba" +#define PASSWORD "infodba" +#define DBNAME "tc" + + +// ṹ +typedef struct{ + OCIEnv *p_env; //OCI environment handle + OCIError *p_err; //OCI error handle + OCISvcCtx *p_svc; //OCI service context handel ľ + OCIServer *p_ser; //OCI server handle + OCISession *p_usr; //OCI user session handle ûỰ + OCIStmt *p_sql; //OCI statement handle + OCIDefine *p_dfn; //OCI define handle + OCIBind *p_bnd; //OCI bind handle 󶨾 +}OCIHandleInfo; + + +// ṹ +typedef struct{ + OCIEnv *p_env; + OCIError *p_err; + OCISvcCtx *p_svc; + OCIStmt *p_sql; + OCIDefine *p_dfn; + OCIBind *p_bnd; +}OCIDATA; + + +// ִʱ +typedef struct{ + char value[NUM][NUM]; + char type[NUM][NUM]; +}SqlField; + + +// ѯʱ, +typedef struct{ + int naIntValue[NUM]; + int nIntNum; + char caCharValue[500][500]; + int nCharNum; +}SqlSelField; + +OCIHandleInfo *ociHandle = NULL; +OCIHandleInfo ociHand; + +int InitHandle(); +int _ExeSQL(char *SQL,char ** inputValue,int inputValueCount); +int _QuerySQL(char *SQL, SqlSelField *pOutField, SqlSelField *pSelField); +int GetDataFromQuery(int *pRc, SqlSelField *pOutField); +void QuitFreeHandle(); + + + + +/**************************************************************************************************************************************** +ƣ +ܣ +ڲ +ڲ + ע +*****************************************************************************************************************************************/ + + +// ʼHandler +int InitHandle() +{ + int swResult; + + ociHandle = &ociHand; + + + /*create OCI environment*/ + if(swResult = OCIEnvCreate(&ociHandle->p_env,OCI_DEFAULT,NULL,NULL,NULL,NULL,0,NULL)) // + { + printf("environment create error!\n\n"); + return -1; + } + else + { + printf("environment create success!\n\n"); + //return 0; + } + + /*init handle*/ + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_ser,OCI_HTYPE_SERVER,0,NULL)) // + { + printf("init server handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_err,OCI_HTYPE_ERROR,0,NULL)) // + { + printf("init error handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_usr,OCI_HTYPE_SESSION,0,NULL)) // + { + printf("init session handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_svc,OCI_HTYPE_SVCCTX,0,NULL)) //ľ + { + printf("init service context handle error!\n\n"); + return -1; + } + + + if(swResult = OCIHandleAlloc(ociHandle->p_env,(dvoid **)&ociHandle->p_sql,OCI_HTYPE_STMT,0,NULL)) //SQL + { + printf("init statement handle error!\n\n"); + return -1; + } + + printf("init handle success!\n\n"); + + return 0; +} + + + +// ݿ +int ConnServer(char *username,char *password,char *dbname) +{ + int swResult; + char errbuf[100]={0}; + int errcode; + + if(InitHandle() == -1)//ʼ + return -1; + + if(swResult = OCILogon(ociHandle->p_env,ociHandle->p_err,&ociHandle->p_svc,(text *)username,strlen(username),(text *)password,strlen(password),(text *)dbname,strlen(dbname))) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Error - %.*s/n", 512, errbuf); + return -1; + } + else + printf("ݿӳɹ!\n\n"); + return 0; +} + + + +// SQLij(ִSQL) +int _ExeSQL(char *SQL,char ** inputValue,int inputValueCount) +{ + int swResult,i; + int errcode; + + //ð󶨱 + OCIBind *p_bndp[100]; + + //׼SQL + if(swResult = OCIStmtPrepare(ociHandle->p_sql,ociHandle->p_err,(text *)SQL,strlen(SQL),OCI_NTV_SYNTAX,OCI_DEFAULT)) + { + printf("prepare SQL statements error!\n\n"); + } + else + { + printf("prepare SQL statements success!\n\n"); + } + + + // + for(i=0;ip_sql,&p_bndp[i],ociHandle->p_err,i+1,(dvoid *)inputValue[i],(sb4)strlen(inputValue[i])+1,SQLT_STR, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Bind Error - %.*s/n", 512, errbuf); + return -1; + } + } + + //ִSQL statements + if(swResult = OCIStmtExecute(ociHandle->p_svc,ociHandle->p_sql,ociHandle->p_err,1,0,NULL,NULL,OCI_DEFAULT)) + { + char errbuf[100]={0}; + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("execute SQL statement Error - %.*s\n", 512, errbuf); + return -1; + } + else + { + printf("execute SQL statement success!\n\n"); + } + return 0; +} + + + + +// ѯSQL +int _QuerySQL(char *SQL, SqlSelField *pOutField, SqlSelField *pSelField ) +{ + sword status; + int rc= 0,ret=0; + char errbuf[100]={0}; + int maxNum = 2048; + char chTag[8]; + int iIndex = 0; + int outputColumn = 0; + int errcode=0; + char nullValue = '\0'; // + sb2 sb2aInd[30] = {'\0'}; + + // ׼SQL + status = OCIStmtPrepare(ociHandle->p_sql, ociHandle->p_err, (text *)SQL,(ub4)strlen(SQL), (ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT); + + if (status != OCI_SUCCESS) + { + printf("SQL Preparing failed/n"); + return -1; + } + + + // int͵, SQLʱ :1,:2, + for (iIndex=0; iIndexnIntNum; iIndex++) + { + memset(chTag, 0, 8); + sprintf(chTag, ":%d", iIndex+1); + if(rc = OCIBindByName(ociHandle->p_sql, (OCIBind **)&ociHandle->p_dfn, ociHandle->p_err, (text *)chTag,(sb4)strlen((char *)chTag),(dvoid *) &pSelField->naIntValue[iIndex], sizeof(int), SQLT_INT,(dvoid *) 0,(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("BindByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + // char *͵, SQLʱ :3,:4, + for (iIndex=0; iIndexnCharNum; iIndex++) + { + int n=0; + memset(chTag, 0, 8); + n = pSelField->nIntNum + iIndex +1; + sprintf(chTag, ":%d", n); + if(rc = OCIBindByName(ociHandle->p_sql, (OCIBind **)&ociHandle->p_dfn, ociHandle->p_err, (text *)chTag,(sb4)strlen((char *)chTag),(dvoid *) &pSelField->caCharValue[iIndex], NUM, SQLT_STR,(dvoid *) 0,(ub2 *) 0, (ub2 *) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("BindByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + + // ִSQL + if (rc = OCIStmtExecute(ociHandle->p_svc, ociHandle->p_sql, ociHandle->p_err, (ub4) 0, (ub4) 0,(CONST OCISnapshot *) NULL, (OCISnapshot *) NULL, OCI_STMT_SCROLLABLE_READONLY)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("execute SQL Error - %.*s\n", 512, errbuf); + return -1; + } + else + { + printf("execute SQL success!\n\n"); + } + + + if (ret = OCIAttrGet (ociHandle->p_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) &outputColumn, (ub4 *) 0, (ub4)OCI_ATTR_PARAM_COUNT, ociHandle->p_err)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("Get OCIAttr Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + + + // int͵, SQLʱ :1,:2, + for (iIndex=0; iIndexnIntNum; iIndex++) + { + if(rc = OCIDefineByPos(ociHandle->p_sql, &ociHandle->p_dfn, ociHandle->p_err, iIndex+1, (dvoid *)&pOutField->naIntValue[iIndex], sizeof(int), SQLT_INT, (dvoid *) 0, (ub2 *)0,(ub2 *)0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("DefineByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + + // char *͵, SQLʱ :1,:2, + for (iIndex=0; iIndexp_sql, &ociHandle->p_dfn, ociHandle->p_err, n, (dvoid *)&pOutField->caCharValue[iIndex], 1000*sizeof(char), SQLT_STR, (dvoid *) 0, (ub2 *)0,(ub2 *)0, OCI_DEFAULT)) + { + OCIErrorGet((dvoid *)ociHandle->p_err, (ub4) 1, (text *) NULL, &errcode, (ub1 *)errbuf, (ub4) sizeof(errbuf), OCI_HTYPE_ERROR); + printf("DefineByPos Error of ociHandle->p_sql - %.*s\n", 512, errbuf); + return -1; + } + } + + return 0; + +} + + + +// ͷHandler +void QuitFreeHandle() +{ + // ˳ + OCILogoff(ociHandle->p_svc,ociHandle->p_err); + printf("Quit success!\n"); + + // ͷž + OCIHandleFree(ociHandle->p_ser,OCI_HTYPE_SERVER); //ͷŷ + OCIHandleFree(ociHandle->p_err,OCI_HTYPE_ERROR); //ͷŴ + OCIHandleFree(ociHandle->p_usr,OCI_HTYPE_SESSION); //ͷ + OCIHandleFree(ociHandle->p_svc,OCI_HTYPE_SVCCTX); //ͷľ + OCIHandleFree(ociHandle->p_sql,OCI_HTYPE_STMT); //ͷSQL +} + + +// ִ +int ExecuteSQL(char *SQL,int valueCount,char **value) +{ + int i=0; + + if(i=_ExeSQL(SQL,value,valueCount)) + { + printf("1\n"); + QuitFreeHandle(); + return -1; + } + printf("2\n"); + return 0; +} + + +// IJѯ +int QuerySQL(char *SQL, int inputValueCount, char ** inputValue, int * outputColumn, int * outputValueCount, char **** outputValue) +{ + int i = 0, j=0 ,ret =0; + + int times = 0, temp=0; + + SqlSelField infield; + SqlSelField outField; + + // ʼṹ + infield.nCharNum = inputValueCount; + infield.nIntNum = 0; + outField.nCharNum = 0; + outField.nIntNum = 0; + + * outputColumn = 0; + * outputValueCount = 0; + + for(i=0;ip_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) outputColumn, (ub4 *) 0, (ub4)OCI_ATTR_PARAM_COUNT, ociHandle->p_err); + + // ȡһ,ȥ + ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_LAST,0, OCI_DEFAULT); + // ȡ + ret= OCIAttrGet (ociHandle->p_sql, (ub4)OCI_HTYPE_STMT, (dvoid *) outputValueCount, (ub4 *) 0, (ub4)OCI_ATTR_ROW_COUNT, ociHandle->p_err); + + if(*outputValueCount == 0) + return 0; + + + // ʼڴ沢Ҵ洢 + ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_FIRST,0, OCI_DEFAULT); + *outputValue = (char ***) calloc ((*outputValueCount)+1,sizeof(char**)); + do + { + (*outputValue)[i] = (char **) calloc ((*outputColumn)+1,sizeof(char *)); + for(j=0;j<(*outputColumn);j++) + { + (*outputValue)[i][j] = (char *) calloc (1000,sizeof(char)); + strcpy((*outputValue)[i][j],outField.caCharValue[j]); + //printf("outValue[%d][%d] = %s , ַ=%d, ַָ= %d\n ",i,j,(*outputValue)[i][j],&(*outputValue)[i][j],(*outputValue)[i][j]); + } + i++; + } + while((ret = OCIStmtFetch2(ociHandle->p_sql, ociHandle->p_err,1, OCI_FETCH_NEXT, 1, OCI_DEFAULT)!= OCI_NO_DATA)); + + return 0; +} + + +// IJѯ +int QuerySQLNoInputParam(char *SQL, int * outputColumn, int * outputValueCount, char **** outputValue) +{ + return QuerySQL(SQL,0,NULL,outputColumn,outputValueCount,outputValue); +} + +// ޲ +int ExecuteSQLNoInputParam(char *SQL) +{ + printf("ʼ\n"); + return ExecuteSQL(SQL,0,NULL); +} + +// Ͽ +void DisConnServer() +{ + if(ociHandle != NULL) + QuitFreeHandle(); +} + diff --git a/jf_itk/ocilib.h b/jf_itk/ocilib.h new file mode 100644 index 0000000..0a4e752 --- /dev/null +++ b/jf_itk/ocilib.h @@ -0,0 +1,98 @@ +/*===================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +======================================================================================================================= +File description: + + Filename: ocilib.h + Module : OCI + + This Header file of OCI library Package. + +======================================================================================================================= +Date Name Description of Change +1-Feb-2015 Ray Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#include +#include +#include +#include +#include +//#include + +#define OCI_FAIL 1 +#define OCI_OK 0 + +#ifdef __cplusplus +extern "C" +{ +#endif + /** + * ݿ. + * @param username - û + * @param password - + * @param dbname - ݿSID + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ConnServer(char *username,char *password,char *dbname); + + + /** + * ִSQL. + * @param SQL - SQL + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ExecuteSQLNoInputParam(char *SQL); + + /** + * ִSQL. + * @param SQL - SQL + * @param inputValueCount - + * @param inputValue - ֵ + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int ExecuteSQL(char *SQL,int inputValueCount,char **inputValue); + + /** + * IJѯSQL. + * @param SQL - SQL + * @param outputColumn - е + * @param outputValueCount - е + * @param outputValue - + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int QuerySQLNoInputParam(char *SQL, int * outputColumn, int * outputValueCount, char **** outputValue); + + /** + * IJѯSQL. + * @param SQL - SQL + * @param inputValueCount - + * @param inputValue - ֵ + * @param outputColumn - е + * @param outputValueCount - е + * @param outputValue - + * @return - OCI_OK or error code + * + * ORACLE ݿװ + */ + extern int QuerySQL(char *SQL, int inputValueCount, char ** inputValue, int * outputColumn, int * outputValueCount, char **** outputValue); + + /** + * Ͽݿ. + * + * ORACLE ݿװ + */ + extern void DisConnServer(); + +#ifdef __cplusplus +} +#endif diff --git a/jf_itk/removeBaseLine.cpp b/jf_itk/removeBaseLine.cpp new file mode 100644 index 0000000..e87aace --- /dev/null +++ b/jf_itk/removeBaseLine.cpp @@ -0,0 +1,192 @@ +#include "epm_handler_common.h" +#include "jk_custom_erp.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +extern "C" int POM_AM__set_application_bypass(logical bypass); +using namespace std; +void removeReleaseStatusByName(string statusName,tag_t rootTask,vector revVec); +void removeRevFromTask(tag_t rootTask,vector revVec); + +int removeBaseLine(EPM_action_message_t msg) +{ + int ifail=ITK_ok; + + EPM_decision_t decision = EPM_go; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULLTAG,*revision_list=NULLTAG; + int arg_cnt = 0, i = 0, att_cnt = 0,revtion_nums=0; + int release_nums=0; + tag_t *release_list=NULLTAG; + char* object_type; + tag_t release_stat = NULLTAG; +// string dateType="ena"; + vector attatchments; + vector target_vec; + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + cout<<"--qq----->"<%d\n",ifail); + return 0; +} + +void removeReleaseStatusByName(string statusName,tag_t rootTask,vector revVec){ + tag_t release_status =NULLTAG; + tag_t * attachments = NULL; + int *att_types=NULL; + int ifail = 0; + att_types = (int*) MEM_alloc (sizeof(int) * ( revVec.size() )); + attachments = (tag_t*) MEM_alloc (sizeof(tag_t) * ( revVec.size() )); + //ƶĿ꣬ת + for ( int indx = 0; indx < revVec.size(); indx++ ) + { + att_types[indx] = EPM_target_attachment;//EPM_reference_attachment; + attachments[indx] = revVec[indx]; + } + //еİ汾ӵ + printf("1ifail=>%d\n",ifail); + ITKCALL(ifail=EPM_add_attachments(rootTask,revVec.size(),attachments,att_types)); + printf("2ifail=>%d\n",ifail); + ITKCALL(ifail =CR_create_release_status(statusName.c_str(),&release_status)); + printf("4ifail=>%d\n",ifail); + if(release_status!=NULLTAG){ + POM_AM__set_application_bypass(true); + ITKCALL(ifail =EPM_remove_status_from_targets(release_status,rootTask)); + printf("6ifail=>%d\n",ifail); + POM_AM__set_application_bypass(false); + } + if(att_types) + { + MEM_free(att_types); + att_types = NULL; + } + if(attachments) + { + MEM_free(attachments); + attachments = NULL; + } + +} + +void removeRevFromTask(tag_t rootTask,vector revVec){ + cout<<"enter removeRevFromTask "< +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +extern "C" int POM_AM__set_application_bypass(logical bypass); +using namespace std; + + +int removeDisabled(EPM_action_message_t msg) +{ + int ifail=ITK_ok; + + EPM_decision_t decision = EPM_go; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULLTAG,*revision_list=NULLTAG; + int arg_cnt = 0, i = 0, att_cnt = 0,revtion_nums=0; + int release_nums=0; + tag_t *release_list=NULLTAG; + char* object_type; + tag_t release_stat = NULLTAG; + string dateType="ena"; + vector attatchments; + vector target_vec; + +// ITKCALL(ifail=RELSTAT_create_release_status("jk8Disabled", &release_stat)); + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + cout<<"--qq----->"<%d\n",ifail); + return 0; +} + +void removeReleaseStatusByName(string statusName,tag_t rootTask,vector revVec){ + tag_t release_status =NULLTAG; + tag_t * attachments = NULL; + int *att_types=NULL; + int ifail = 0; + att_types = (int*) MEM_alloc (sizeof(int) * ( revVec.size() )); + attachments = (tag_t*) MEM_alloc (sizeof(tag_t) * ( revVec.size() )); + //ƶĿ꣬ת + for ( int indx = 0; indx < revVec.size(); indx++ ) + { + att_types[indx] = EPM_target_attachment;//EPM_reference_attachment; + attachments[indx] = revVec[indx]; + } + //еİ汾ӵ + //POM_AM__set_application_bypass(true); + //ITKCALL(ifail = AOM_refresh(rootTask,0)); + printf("1ifail=>%d\n",ifail); + //AOM_load(rootTask); + //AOM_lock(rootTask); + ITKCALL(ifail=EPM_add_attachments(rootTask,revVec.size(),attachments,att_types)); + printf("2ifail=>%d\n",ifail); + //AOM_unlock(rootTask); + //ITKCALL(ifail =AOM_refresh(rootTask,0)); + //printf("3ifail=>%d\n",ifail); + //POM_AM__set_application_bypass(false); + ITKCALL(ifail =CR_create_release_status(statusName.c_str(),&release_status)); + printf("4ifail=>%d\n",ifail); + if(release_status!=NULLTAG){ + POM_AM__set_application_bypass(true); + //ITKCALL(ifail =AOM_refresh(rootTask,0)); + //printf("5ifail=>%d\n",ifail); + //AOM_lock(rootTask); + ITKCALL(ifail =EPM_remove_status_from_targets(release_status,rootTask)); + printf("6ifail=>%d\n",ifail); + //AOM_unlock(rootTask); + //ITKCALL(ifail =AOM_refresh(rootTask,0)); + //printf("7ifail=>%d\n",ifail); + POM_AM__set_application_bypass(false); + } + //AOM_unlock(rootTask); + if(att_types) + { + MEM_free(att_types); + att_types = NULL; + } + if(attachments) + { + MEM_free(attachments); + attachments = NULL; + } + +} + +void removeRevFromTask(tag_t rootTask,vector revVec){ + cout<<"enter removeRevFromTask "< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +/** +* @headerfile user's header files +*/ + +#include "epm_handler_common.h" +#include "error_handling.h" +#include "common_itk_util.h" +#include "string_helper.h" + + +#define SAFECALL(x) \ +{ \ + err_function = #x; err_line = __LINE__; \ + if((rcode = (x)) != ITK_ok) \ + { \ + goto CLEANUP; \ + } \ +} +void va_copy( va_list *dest , va_list * src ){ + *dest = *src ; +} +static int SMP_ask_bomline_value( METHOD_message_t * m, va_list args ) +{ + int rcode = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + tag_t objTag = NULLTAG; + const char * prop_name; + char** value = NULL; + char *bom_rev_status = NULL; + char sQty[] = ""; + char sUnRead[] = "UNREADABLE"; + va_list largs; + tag_t bom_line_item = NULLTAG; + tag_t bom_line_rev = NULLTAG; + tag_t last_rev = NULLTAG; + tag_t iman_type_tag = NULLTAG ; + char obj_class_name[TCTYPE_class_name_size_c+1]; + char obj_type_name[TCTYPE_name_size_c+1]; + int attr_bom_item = 0; + int attr_bom_rev = 0; + int attr_bom_rev_status = 0; + char item_rev_id[ITEM_id_size_c+1]="",item_id[ITEM_id_size_c+1]="",rev_id[ITEM_id_size_c+1]="", + strRow[BUFSIZ]="",txtfile[BUFSIZ]="", obj_type[WSO_object_type_size_c+1]=""; + tag_t master_form_rel_type = NULLTAG; + int form_count = 0, attr_qty_id = 0; + tag_t *form_list=NULL, master_form = NULLTAG; + char *d_value=NULL, *qty_value = NULL; + + METHOD_PROP_MESSAGE_OBJECT(m, objTag) /* objTag is the tag of the property's owning object */ + METHOD_PROP_MESSAGE_PROP_NAME(m, prop_name) /* prop_name is the name of the current property */ + printf("\n name : %s\n",prop_name); + + va_copy( &largs, &args ); + va_arg( largs, tag_t ); /* ignore the first tag_t arg */ + value = va_arg( largs, char**); + va_end( largs ); + //ȡĿ + ITKCALL( TCTYPE_ask_object_type( objTag,&iman_type_tag ) ); + ITKCALL( TCTYPE_ask_class_name(iman_type_tag,obj_class_name));//get ClassName of attachment + ITKCALL( TCTYPE_ask_name(iman_type_tag,obj_type_name) ); + printf("\n Type name : %s\n",obj_type_name); + TC_write_syslog("\n Type name : %s\n",obj_type_name); + //if ( strcmp( obj_type_name , "Mfg0BvrPart" ) == 0 ) + //{ + // + //} + if ( strcmp( obj_type_name , "Mfg0BvrPart" ) == 0 ) + //if ( strcmp( obj_type_name , "BOMLine" ) == 0 ) + { + printf("\n is Mfg0BvrPart\n"); + SAFECALL( BOM_line_look_up_attribute( bomAttr_lineItemTag , & attr_bom_item ) ); + SAFECALL( BOM_line_look_up_attribute( bomAttr_lineItemRevTag , & attr_bom_rev ) ); + SAFECALL( BOM_line_look_up_attribute( bomAttr_occQty , & attr_qty_id ) ); + SAFECALL( BOM_line_ask_attribute_tag( objTag, attr_bom_item , &bom_line_item )); + SAFECALL( BOM_line_ask_attribute_tag( objTag, attr_bom_rev , &bom_line_rev )); + SAFECALL( BOM_line_ask_attribute_string( objTag, attr_qty_id, &qty_value )); + SAFECALL( WSOM_ask_object_type(bom_line_item, obj_type )); + printf("\n obj_type=%s",obj_type); + TC_write_syslog("\n obj_type=%s",obj_type); + //if( strcmp(obj_type, "Mfg0BvrPart") == 0) + if( strcmp(obj_type, "C7Part") == 0) + { + SAFECALL( GRM_find_relation_type( TC_master_form_rtype, &master_form_rel_type ) ); + SAFECALL( GRM_list_secondary_objects_only(bom_line_rev, master_form_rel_type, &form_count, &form_list )); + master_form = form_list[0]; + if( master_form != NULLTAG ) + { + SAFECALL(AOM_UIF_ask_value(master_form, "c7GeneralClfion", &d_value)); + printf("\n d_value=%s\n",d_value); + TC_write_syslog("\n d_value=%s\n",d_value); + //޸ӱʶ + if( strcmp(d_value, "C") == 0 + || strcmp(d_value, "F") == 0 + || strcmp(d_value, "F1") == 0 + || strcmp(d_value, "F2") == 0 + || strcmp(d_value, "F3") == 0 ) + { + strcpy(sQty,""); + } + else + { + if( strcmp(qty_value,"") == 0) + { + strcpy(sQty,"1"); + } + else + strcpy(sQty,qty_value); + } + MEM_free(d_value); + } + MEM_free(form_list); + } + + } +CLEANUP : + + if( rcode != ITK_ok) + { + if ( 515001 == rcode || err_line == 80 ){ + if ( *value != NULL ) MEM_free( *value ); + *value = NULL; + *value = (char*)MEM_alloc ( 10 + 1 ); + strcpy ( *value, "1" ); + EMH_clear_errors( ); + rcode = ITK_ok; + }else + { + EMH_ask_error_text (rcode, &err_string); + printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); + printf ("Function: %s FILE: %s LINE: %d\n", err_function, __FILE__, err_line); + MEM_free (err_string); + } + TC_write_syslog("\n rcode != ITK_ok"); + }else{ + if ( *value != NULL ) MEM_free( *value ); + *value = NULL ; + *value = (char*)MEM_alloc ( strlen ( sQty ) + 1 ); + strcpy ( *value, sQty ); + TC_write_syslog("\n else sQty=%s",sQty); + } + + return rcode; +} + +int SMP_init_user_bomline_props(METHOD_message_t* m, va_list args) +{ + int rcode = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + tag_t type_tag; + tag_t pd_tag = NULLTAG; + METHOD_id_t method; + char typename_cpp[TCTYPE_name_size_c+1]; + tag_t lov_tag; + tag_t tmp_lov_tag; + + + va_list largs; + va_copy( &largs, &args ); + type_tag = va_arg( largs, tag_t ); + va_end( largs ); + + ITKCALL( TCTYPE_ask_name( type_tag, typename_cpp ) ); + + /* ====== add properties for Bomline class types ====== */ + /* ---- add superseded runtime property ---- */ + ITKCALL( TCTYPE_add_runtime_property( type_tag, "JK8SupplyType",PROP_string,1,&pd_tag ) ); + + /* --- set display name...can also be done in user_property_names.uil --- */ + ITKCALL( PROPDESC_set_display_name(pd_tag,"JK8SupplyType") ); + + /* --- register method to ask value --- */ + ITKCALL( METHOD_register_prop_method( (const char*)typename_cpp, "JK8SupplyType", PROP_ask_value_string_msg, SMP_ask_bomline_value , 0 , &method ) ); + printf("\n METHOD_register_prop_method"); + /* --- register method to set value --- */ + //SAFECALL( PROPDESC_set_protection( pd_tag, PROP_write ) ); + //SAFECALL( METHOD_register_prop_method( (const char*)typename, "superseded", PROP_set_value_string_msg, SMP_set_bomline_superseded , 0 , &method ) ); + +CLEANUP: + + if( rcode != ITK_ok) + { + EMH_ask_error_text (rcode, &err_string); + printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); + printf ("Function: %s FILE: %s LINE: %d\n", err_function, __FILE__, err_line); + MEM_free (err_string); + } + + return( ITK_ok ); + +} + + +extern int Run_Time_register_properties( void ) +{ + int rcode = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + + USER_prop_init_entry_t user_types_methods[]= { { "BOMLine" , SMP_init_user_bomline_props , NULL } }; + + int n_types = sizeof(user_types_methods)/sizeof(USER_prop_init_entry_t); + + SAFECALL( TCTYPE_register_properties(user_types_methods, n_types )); + printf("\n TCTYPE_register_properties\n"); + TC_write_syslog("\n TCTYPE_register_properties\n"); +CLEANUP: + + if( rcode != ITK_ok) + { + EMH_ask_error_text (rcode, &err_string); + printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); + printf ("Function: FILE: %s LINE: %d\n", __FILE__, err_line); + MEM_free (err_string); + } + + return rcode; +} diff --git a/jf_itk/sendMaterialInfomationAddDisabled.cpp b/jf_itk/sendMaterialInfomationAddDisabled.cpp new file mode 100644 index 0000000..7370edc --- /dev/null +++ b/jf_itk/sendMaterialInfomationAddDisabled.cpp @@ -0,0 +1,931 @@ +//# include "jk_custom_erp.h" +//# include "jk_custom_erp_struct.h" +//#include +//#include "jk_custom_erp_struct1.h" +//#include +//# include "common_itk_util.h" +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +// +///************************************************ +//* +//* Ϣݵݿ +//* +//*************************************************/ +// +//void JK_upadte_material_table1(vector sm_bean_vec) +//{ +// int ifail = 0; +// date_t current_date; +// char create_date_str[32] = "\0"; +// current_time(¤t_date); +// sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); +// +// if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1) +// { +// ECHO("ʾ:мݱʧ\n"); +// +// EMH_store_error_s1( EMH_severity_information, +// ERROR_ERP_LOGIN_FAIL, +// "мݱʧ" ); +// ifail = ERROR_ERP_LOGIN_FAIL; +// return; +// } +// +// char updateSQL[3000] = "\0"; +// +// for(int i = 0;i < sm_bean_vec.size();i++){ +// sprintf(updateSQL,"UPDATE %s SET JK_STATUS='4',JK_OPERATE_TIME='%s' WHERE JK_ITEM_ID='%s' AND JK_STATUS='0'", +// JK_MATERIAL_TABLE,create_date_str,sm_bean_vec[i].JK_ITEM_ID); +// if(ExecuteSQLNoInputParam(updateSQL)==-1) +// { +// ECHO("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); +// ifail = ERROR_OCI_FAIL; +// EMH_store_error(EMH_severity_error, ifail); +// //goto end_handler; +// } +// sprintf(updateSQL,"UPDATE %s SET JK_STATUS='3',JK_OPERATE_TIME='%s' WHERE JK_ITEM_ID='%s' AND JK_STATUS='2'", +// JK_MATERIAL_TABLE,create_date_str,sm_bean_vec[i].JK_ITEM_ID); +// if(ExecuteSQLNoInputParam(updateSQL)==-1) +// { +// ECHO("ʾ:BOM_TABLE ʧ, %s \n",updateSQL); +// ifail = ERROR_OCI_FAIL; +// EMH_store_error(EMH_severity_error, ifail); +// //goto end_handler; +// } +// } +// +// ExecuteSQLNoInputParam("commit"); +// DisConnServer(); +// +//} +//// +//void JK_write_material_to_DB1(vector sm_bean_vec, +// vector &faild_m_vec) +//{ +// JK_upadte_material_table1(sm_bean_vec); +// int i = 0, +// ifail = 0; +// char fields_material[4096]="", +// insert_values_material[4096]="", +// sql_value[10280] = "\0"; +// for( i = 0; i < 45; i++ ) +// { +// strcat(fields_material, jk_material_fields[i]); +// if( i != 44 ) +// strcat(fields_material,","); +// } +// +// if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL)== -1) +// { +// ECHO("ʾ:мݱʧ\n"); +// +// EMH_store_error_s1( EMH_severity_information, +// ERROR_ERP_LOGIN_FAIL, +// "мݱʧ" ); +// ifail = ERROR_ERP_LOGIN_FAIL; +// return; +// } +// +// for(i = 0; i < sm_bean_vec.size(); i++ ) +// { +// strcpy(insert_values_material,"'"); +// strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_ID.c_str()); +// strcat(insert_values_material,"','");// ϱ +// strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_NAME.c_str()); +// strcat(insert_values_material,"','"); // +// strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_SPEC_MODEL.c_str()); +// strcat(insert_values_material,"','"); // ͺ +// strcat(insert_values_material,sm_bean_vec[i].JK_CLASS_CODE.c_str()); +// strcat(insert_values_material,"','"); // +// strcat(insert_values_material,sm_bean_vec[i].JK_PROD_CODE.c_str()); +// strcat(insert_values_material,"','"); // Ʒʶ //5 +// strcat(insert_values_material,sm_bean_vec[i].JK_UOM.c_str()); +// strcat(insert_values_material,"','"); // λ +// strcat(insert_values_material,sm_bean_vec[i].JK_CREATION_DATE.c_str()); +// strcat(insert_values_material,"','"); // +// strcat(insert_values_material,sm_bean_vec[i].JK_SCRAP_DATE.c_str()); +// strcat(insert_values_material,"','"); // ͣ +// strcat(insert_values_material,sm_bean_vec[i].JK_DESIGN_CODE.c_str()); +// strcat(insert_values_material,"','"); // ͼϢ +// strcat(insert_values_material,sm_bean_vec[i].JK_IS_SCRAP.c_str()); +// strcat(insert_values_material,"','"); // ǷʧЧ //10 +// strcat(insert_values_material,sm_bean_vec[i].JK_FROM.c_str()); +// strcat(insert_values_material,"','"); // +// strcat(insert_values_material,sm_bean_vec[i].JK_TRANS_TIME.c_str()); +// strcat(insert_values_material,"','"); // ʱ +// strcat(insert_values_material,sm_bean_vec[i].JK_STATUS.c_str()); +// strcat(insert_values_material,"','"); // ״̬ +// strcat(insert_values_material,sm_bean_vec[i].JK_ERROR_MSG.c_str()); +// strcat(insert_values_material,"','"); // Ϣ +// strcat(insert_values_material,sm_bean_vec[i].JK_OPERATE_TIME.c_str()); +// strcat(insert_values_material,"','"); // ʱ //15 +// strcat(insert_values_material,sm_bean_vec[i].JK_PUID.c_str()); +// strcat(insert_values_material,"','"); // Ψһ +// strcat(insert_values_material,sm_bean_vec[i].JK_FROM_SYS.c_str()); +// strcat(insert_values_material,"','"); // ݷ +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_1.c_str()); +// strcat(insert_values_material,"','"); // չֶ1 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_2.c_str()); +// strcat(insert_values_material,"','"); // չֶ2 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_3.c_str()); +// strcat(insert_values_material,"','"); // չֶ3 //20 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_4.c_str()); +// strcat(insert_values_material,"','"); // չֶ4 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_5.c_str()); +// strcat(insert_values_material,"','"); // չֶ5 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_6.c_str()); +// strcat(insert_values_material,"','"); // չֶ6 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_7.c_str()); +// strcat(insert_values_material,"','"); // չֶ7 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_8.c_str()); +// strcat(insert_values_material,"','"); // չֶ8 //25 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_9.c_str()); +// strcat(insert_values_material,"','"); // չֶ9 +// strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_10.c_str());// չֶ10 //27 +// strcat(insert_values_material,"','"); +// strcat(insert_values_material,sm_bean_vec[i].JK_UNIT_WEIGHT.c_str()); +// strcat(insert_values_material,"','"); // λ +// strcat(insert_values_material,sm_bean_vec[i].JK_UNIT_VOLUME.c_str()); +// strcat(insert_values_material,"','"); // λ +// strcat(insert_values_material,sm_bean_vec[i].JK_DOMSC_MARKET.c_str()); +// strcat(insert_values_material,"','"); // Ƿ //30 +// strcat(insert_values_material,sm_bean_vec[i].JK_CONSUM.c_str()); +// strcat(insert_values_material,"','"); // Ƿ +// strcat(insert_values_material,sm_bean_vec[i].JK_IS_BUY.c_str()); +// strcat(insert_values_material,"','"); // Ƿɹ +// strcat(insert_values_material,sm_bean_vec[i].JK_IS_MAKE.c_str()); +// strcat(insert_values_material,"','"); // Ƿ +// strcat(insert_values_material,sm_bean_vec[i].JK_OUT_SOURCE.c_str()); +// strcat(insert_values_material,"','"); // Ƿί +// strcat(insert_values_material,sm_bean_vec[i].JK_ACCOUNT_SET.c_str()); +// strcat(insert_values_material,"','"); // Ĭ //35 +// strcat(insert_values_material,sm_bean_vec[i].JK_BUSINESS_TYPE.c_str()); +// strcat(insert_values_material,"','"); // ҵ +// strcat(insert_values_material,sm_bean_vec[i].JK_BUYER.c_str()); +// strcat(insert_values_material,"','"); // ɹԱ +// strcat(insert_values_material,sm_bean_vec[i].JK_PURLEAD_TIME.c_str()); +// strcat(insert_values_material,"','"); // ̶ǰ +// strcat(insert_values_material,sm_bean_vec[i].JK_SAFE_STOCK.c_str()); +// strcat(insert_values_material,"','"); // ȫ +// strcat(insert_values_material,sm_bean_vec[i].JK_SUPPLY_TYPE1.c_str()); +// strcat(insert_values_material,"','"); // Ӧ //40 +// strcat(insert_values_material,sm_bean_vec[i].JK_WARE_HOUSE1.c_str()); +// strcat(insert_values_material,"','"); // Ĭϲֿ +// strcat(insert_values_material,sm_bean_vec[i].JK_INNTRANS_COE.c_str()); +// strcat(insert_values_material,"','"); // ڲ׼۸ϵ +// strcat(insert_values_material,sm_bean_vec[i].JK_HOUSE_KEEPER.c_str()); +// strcat(insert_values_material,"','"); // Ա +// strcat(insert_values_material,sm_bean_vec[i].JK_IS_INNTRANS.c_str()); +// strcat(insert_values_material,"','"); // Ƿڲ +// strcat(insert_values_material,sm_bean_vec[i].JK_PLAN_METHOD.c_str());//ƻʽ +// strcat(insert_values_material," '"); +// +// printf("ͺ====%s\n",sm_bean_vec[i].JK_PROD_CODE.c_str()); +// printf("insert_values_material====%s\n",insert_values_material); +// +// /*strcpy(sql_value,"insert into "); +// strcat(sql_value,JK_MATERIAL_TABLE); +// strcat(sql_value," ("); +// strcat(sql_value,fields_material); +// strcat(sql_value," ) values ("); +// strcat(sql_value,insert_values_material); +// strcat(sql_value, ")");*/ +// +// sprintf(sql_value,"insert into %s (%s ) values (%s )", +// JK_MATERIAL_TABLE, +// fields_material, +// insert_values_material); +// printf("SQL =>%s\n",sql_value); +// +// if(ExecuteSQLNoInputParam(sql_value)==-1) +// { +// printf("ʾ:TABLE ʧ, %s \n",sql_value); +// ifail = ERROR_OCI_FAIL; +// EMH_store_error(EMH_severity_error, ifail); +// faild_m_vec.push_back(sm_bean_vec[i]); +// //goto end_handler; +// }else{ +// printf("ʾ:TABLE ɹ, %s \n",sql_value); +// } +// } +// if(ifail == 0) +// { +// ExecuteSQLNoInputParam("commit"); +// }else{ +// EMH_store_error_s1(EMH_severity_user_error,ifail,"[ϴU8ʧ,ϵԱ!!]");//󵯴 +// } +// +//end_handler: +// +// DisConnServer(); +// +//} +//// +//// +//// +//// +//// +//// +//// +///******************************************************* +//* +//* ȡϵ +//* +//********************************************************/ +//void JK_get_material_props1(tag_t obj_tag , +// vector & sm_bean_vec, +// vector bigCodeVec, +// vector qrBigCodeVec, +// map uomMapping) +//{ +// int ifail = 0 , +// status_count = 0, +// design_count = 0, +// master_count = 0, +// i = 0; +// tag_t item_tag =NULLTAG, +// *status_tags = NULL, +// *desin_tags =NULL, +// * master_tags = NULL, +// master_tag = NULLTAG, +// uom_tag =NULLTAG, +// current_user_tag = NULLTAG, +// current_group_mem_tag = NULLTAG, +// person_tag = NULLTAG, +// classification_object = NULLTAG, +// parentTag = NULLTAG, +// status_tag = NULLTAG; +// +// double dbjk8UnitWeight = 0,//λ +// dbjk8UnitVolume = 0,//λ +// dbjk8PurLeadTime=0,//̶ǰ +// dbjk8SafeStock=0,//ȫ +// dbjk8InnTransCoe=0;//ڲ׼۸ϵ +// +// +// +// char item_id[ITEM_id_size_c + 1] = "\0", +// *object_name = NULL, +// *jk8SpecModel = NULL, +// //*jk8StockBigTypeNo = NULL, +// *jk8TechModel = NULL, +// *represented_by =NULL, +// *jk8UnitWeight1 =NULL,//0 +// *jk8UnitVolume1 =NULL,//0 +// jk8UnitWeight[32 + 1]="\0", //λ" +// jk8UnitVolume[32 + 1]="\0",//λ" +// *jk8IsDomesticMarket =NULL,//Ƿ +// *jk8Isconsumables =NULL,//Ƿ" +// *jk8IsBuy =NULL,//Ƿɹ" +// *jk8IsMake =NULL,//Ƿ" +// *jk8IsOutsource =NULL,//Ƿί" +// *jk8AccountSet =NULL,//Ĭ" +// *jk8BusinessType =NULL,//ҵ" +// *jk8Buyer =NULL,//ɹԱ" +// *jk8PurLeadTime1 =NULL,//0 +// *jk8SafeStock1 =NULL,//0 +// jk8PurLeadTime[32 + 1]="\0",//̶ǰ" +// jk8SafeStock[32 + 1]="\0",//ȫ" +// *jk8SupplyType1 =NULL,//Ӧ" +// jk8SupplyType2[40]="\0", +// *jk8Warehouse1 =NULL,//Ĭϲֿ" +// jk8Warehouse2[40]="\0", +// *jk8InnTransCoe1 =NULL,//0 +// jk8InnTransCoe[32 + 1]="\0",//ڲ׼۸ϵ" +// *jk8WarehouseKeeper =NULL,//Ա" +// *jk8IsInnTrans =NULL,//Ƿڲ" +// *jk8PlanMethod =NULL,//ƻʽ" +// create_date_str[32] = "\0", +// person_name[SA_person_name_size_c + 1] = "\0", +// * icsID = NULL, +// *uom_str = NULL; +// date_t status_date ; +// string is_scrap,scrap_date; +// date_t current_date; +// logical isclassed = false; +// logical isFilter = false; +// //ϴĹ +// +// //ȡ +// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ +// if(isclassed){ +// //char * icOid = NULL; +// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); +// +// ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); +// +// // +// vector::iterator it; +// it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID); +// if(it != qrBigCodeVec.end()) +// { +// printf("\n[ %s ]Ƕ\n",icsID); +// if(icsID !=NULL) +// { +// MEM_free(icsID); +// icsID =NULL; +// } +// return; +// } +// +// it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID); +// +// if(it != bigCodeVec.end()){ +// printf("\n[ %s ]Ҫȡͷλ\n",icsID); +// isFilter = true; +// }else{ +// printf("\n[ %s ]Ҫȡͷ5λ\n",icsID); +// isFilter = false; +// } +// +// }else{ +// printf("\n ûз͵ \n"); +// return ; +// } +// +// +// //ȡǰʱ +// current_time(¤t_date); +// sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day); +// +// ITKCALL(SA_ask_current_groupmember(¤t_group_mem_tag)); +// ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,¤t_user_tag)); +// ITKCALL(SA_ask_user_person(current_user_tag,&person_tag)); +// ITKCALL(SA_ask_person_name(person_tag , person_name)); +// printf("person_name=> %s\n",person_name); +// +// ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags)); +// if(master_count > 0) +// { +// master_tag = master_tags[0]; +// } +// +// //ȡ +//// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//жǷѾ +//// if(isclassed){ +//// //char * icOid = NULL; +//// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object)); +//// +//// ITKCALL(ICS_ico_ask_class(classification_object,&icsID)); +//// +//// } +//// +// +// ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//ͨ汾ȡitem +// +// +// ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//ϱ +// +// ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));// +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//ͺ +// printf("ͺ=%s,\n",jk8SpecModel); +// +// //ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));// +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//Ʒʶ +// printf("Ʒʶ=%s,\n",jk8TechModel); +// +// ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1)); +// +// ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//λ +// sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight); +// +// ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1)); +// ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//λ +// sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume); +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//Ƿ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//Ƿ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//Ƿɹ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//Ƿ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//Ƿί +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//Ĭ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//ҵ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//ɹԱ +// +// ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1)); +// ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//̶ǰ +// sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime); +// +// ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1)); +// ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//ȫ +// sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock); +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//Ӧ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//Ĭϲֿ +// +// ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1)); +// ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//ڲ׼۸ϵ +// sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe); +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//Ա +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//Ƿڲ +// +// ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//ƻʽ +// +// ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//Ϣ +// +// //date_released name +// ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//λ +// //ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//λ +// tag_t my_uom_tag = NULLTAG; +// //ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag)); +// //ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str)); +// +// ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//ǷʧЧ +// +// if(status_count > 0) +// { +// status_tag = status_tags[0]; +// AOM_ask_value_date(status_tag,"date_released",&status_date); +// +// } +// +// for(i = 1;i < status_count;i++) +// { +// date_t date_t_i ; +// +// AOM_ask_value_date(status_tags[i],"date_released",&date_t_i); +// int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day); +// int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day); +// if(day_count1 < day_count2) +// { +// status_tag = status_tags[i]; +// status_date = date_t_i; +// } +// } +// +// is_scrap.assign("0"); +// if(status_tag !=NULLTAG) +// { +// char * status_name = NULL; +// ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name)); +// if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){ +// is_scrap.assign("1"); +// char scrp_date_str[32] = "\0"; +// sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day); +// scrap_date.assign(scrp_date_str); +// +// }else{ +// //scrap_date.assign("2099-12-31"); +// scrap_date.assign("\0"); +// } +// +// if(status_name !=NULL){ +// MEM_free(status_name); +// status_name = NULL; +// } +// }else{ +// //scrap_date.assign("2099-12-31"); +// scrap_date.assign("\0"); +// } +// +// //printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by); +// +// JK_MATERIAL_STRUCT1 m_bean; +// +// /*****************д*****************/ +// m_bean.JK_ITEM_ID.assign(item_id); +// m_bean.JK_ITEM_NAME.assign(object_name); +// m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel); +// char BIG_CODE[32] = "\0"; +// char T_BIG_CODE[6] = "\0"; +// sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]); +// if(isFilter){ +// if(strcmp(T_BIG_CODE,"E-")==0){ +// sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]); +// }else{ +// sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]); +// } +// +// }else{ +// if(strcmp(T_BIG_CODE,"E-")==0){ +// sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]); +// }else{ +// sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]); +// } +// } +// m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo +// +// m_bean.JK_PROD_CODE.assign(jk8TechModel); +// +// +// map::iterator mapit; +// //printf("uom_str = %s \n",uom_str); +// mapit = uomMapping.find(uom_str); +// if(mapit != uomMapping.end()){ +// //printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str()); +// m_bean.JK_UOM.assign(mapit->second.c_str());// +// }else{ +// m_bean.JK_UOM.assign("01");// +// } +// m_bean.JK_CREATION_DATE.assign(create_date_str); +// m_bean.JK_SCRAP_DATE.assign(scrap_date); +// m_bean.JK_DESIGN_CODE.assign(represented_by); +// m_bean.JK_IS_SCRAP.assign(is_scrap); +// +// m_bean.JK_FROM.assign(person_name); +// m_bean.JK_TRANS_TIME.assign(create_date_str); +// m_bean.JK_STATUS.assign("0"); +// m_bean.JK_FROM_SYS.assign("TC"); +// /******************************************/ +// //if(strcmp(jk8UnitWeight1,"")!=0){ +// m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight); +// //}else{ +// //m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1); +// //} +//// if(strcmp(jk8UnitVolume1,"")!=0){ +// m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume); +// //}else{ +// //m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1); +// //} +// m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket); +// m_bean.JK_CONSUM.assign(jk8Isconsumables); +// m_bean.JK_IS_BUY.assign(jk8IsBuy); +// m_bean.JK_IS_MAKE.assign(jk8IsMake); +// m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource); +// m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet); +// m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType); +// m_bean.JK_BUYER.assign(jk8Buyer); +// //if(strcmp(jk8PurLeadTime1,"")!=0){ +// m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime); +// //}else{ +// // m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1); +// //} +// printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1); +// //if(strcmp(jk8SafeStock1,"")!=0){ +// m_bean.JK_SAFE_STOCK.assign(jk8SafeStock); +// //}else{ +// // m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1); +// //} +// printf("jk8SafeStock1=%s\n",jk8SafeStock1); +// if(strcmp(jk8SupplyType1,"")!=0){ +// strncpy(jk8SupplyType2,jk8SupplyType1, 1);//ȡһ +// printf("jk8SafeStock2=%s\n",jk8SupplyType2); +// m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2); +// }else{ +// m_bean.JK_SUPPLY_TYPE1.assign("3"); +// } +// +// printf("jk8Warehouse1=%s\n",jk8SafeStock1); +// +// if(strcmp(jk8Warehouse1,"")!=0){ +// strncpy(jk8Warehouse2,jk8Warehouse1, 2);//ȡһ +// +// m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2); +// }else{ +// m_bean.JK_WARE_HOUSE1.assign("01"); +// } +// +// //if(strcmp(jk8InnTransCoe1,"")!=0){ +// m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe); +// //}else{ +// // m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1); +// //} +// m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper); +// m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans); +// m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod); +// +// +// sm_bean_vec.push_back(m_bean); +// +// //ͷԴ +// if(master_tags !=NULL) +// { +// MEM_free(master_tags); +// master_tags = NULL; +// } +// +// if(jk8SpecModel !=NULL) +// { +// MEM_free(jk8SpecModel); +// jk8SpecModel =NULL; +// } +// +// +// +// if(jk8TechModel !=NULL) +// { +// MEM_free(jk8TechModel); +// jk8TechModel =NULL; +// } +// +// if(status_tags !=NULL) +// { +// MEM_free(status_tags); +// status_tags =NULL; +// } +// +// if(desin_tags !=NULL){ +// MEM_free(desin_tags); +// desin_tags = NULL; +// } +// +// if(uom_str != NULL) +// { +// MEM_free(uom_str); +// uom_str =NULL; +// } +// +// if(object_name != NULL) +// { +// MEM_free(object_name); +// object_name = NULL; +// +// } +// if(represented_by !=NULL){ +// MEM_free(represented_by); +// represented_by = NULL; +// } +// +// if(icsID !=NULL) +// { +// MEM_free(icsID); +// icsID =NULL; +// } +// +// +// if(jk8IsDomesticMarket !=NULL) +// { +// MEM_free(jk8IsDomesticMarket); +// jk8IsDomesticMarket =NULL; +// } +// if(jk8Isconsumables !=NULL) +// { +// MEM_free(jk8Isconsumables); +// jk8Isconsumables =NULL; +// } +// if(jk8IsBuy !=NULL) +// { +// MEM_free(jk8IsBuy); +// jk8IsBuy =NULL; +// } +// if(jk8IsMake !=NULL) +// { +// MEM_free(jk8IsMake); +// jk8IsMake =NULL; +// } +// if(jk8IsOutsource !=NULL) +// { +// MEM_free(jk8IsOutsource); +// jk8IsOutsource =NULL; +// } +// if(jk8AccountSet !=NULL) +// { +// MEM_free(jk8AccountSet); +// jk8AccountSet =NULL; +// } +// if(jk8BusinessType !=NULL) +// { +// MEM_free(jk8BusinessType); +// jk8BusinessType =NULL; +// } +// if(jk8Buyer !=NULL) +// { +// MEM_free(jk8Buyer); +// jk8Buyer =NULL; +// } +// if(jk8SupplyType1 !=NULL) +// { +// MEM_free(jk8SupplyType1); +// jk8SupplyType1 =NULL; +// } +// if(jk8Warehouse1 !=NULL) +// { +// MEM_free(jk8Warehouse1); +// jk8Warehouse1 =NULL; +// } +// if(jk8WarehouseKeeper !=NULL) +// { +// MEM_free(jk8WarehouseKeeper); +// jk8WarehouseKeeper =NULL; +// } +// +// if(jk8IsInnTrans !=NULL) +// { +// MEM_free(jk8IsInnTrans); +// jk8IsInnTrans =NULL; +// } +// +// if(jk8PlanMethod !=NULL) +// { +// MEM_free(jk8PlanMethod); +// jk8PlanMethod =NULL; +// } +// +// if(jk8UnitWeight1 !=NULL) +// { +// MEM_free(jk8UnitWeight1); +// jk8UnitWeight1 =NULL; +// } +// if(jk8UnitVolume1 !=NULL) +// { +// MEM_free(jk8UnitVolume1); +// jk8UnitVolume1 =NULL; +// } +// if(jk8PurLeadTime1 !=NULL) +// { +// MEM_free(jk8PurLeadTime1); +// jk8PurLeadTime1 =NULL; +// } +// if(jk8SafeStock1 !=NULL) +// { +// MEM_free(jk8SafeStock1); +// jk8SafeStock1 =NULL; +// } +// if(jk8InnTransCoe1 !=NULL) +// { +// MEM_free(jk8InnTransCoe1); +// jk8InnTransCoe1 =NULL; +// } +// +//} +// +// +// +// +///******************************************************* +//* +//* Ϸ͵ERP +//* handler +//* include_type ҪЩ /ֿegItemRevision/JK8MaterialRevision/JK8LSMaterialRevision +//* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +//* +//*******************************************************/ +//int sendMaterialInfomationAddDisabled(EPM_action_message_t msg) +//{ +// ECHO("\n********************************"); +// ECHO("\n********Ͽʼ************"); +// ECHO("\n********************************\n"); +// // +// int ifail = EPM_go , +// arg_cnt = 0 , +// i = 0 , +// att_cnt = 0; +// +// tag_t task_tag = NULLTAG , +// root_task_tag =NULLTAG , +// *attachments = NULL; +// +// char * argflag = NULL , +// *argvalue =NULL , +// *arg = NULL , +// arg_value[1024] = "\0", +// type_class[WSO_object_type_size_c+1] ="\0"; +// +// logical is_debug = false; +// +// //¼Ϣ +// map errMap; +// +// vector type_vec; +// +// vector material_vec; +// +// vector bigCodeVec;//vector bigCodeVec,vector qrBigCodeVec +// vector qrBigCodeVec; +// vector uomVec; +// map uomMapping; +// //ȡҪȡΪķ +// getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec); +// //ȡݵķ +// getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec); +// //ȡλ +// getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec); +// for(i = 0 ; i < uomVec.size() ; i++){ +// string uom_u8 = uomVec[i]; +// vector uV; +// Split(uom_u8,"=",uV); +// //printf("%s%d \n",uom_u8.c_str(),uV.size()); +// if(uV.size() == 2){ +// printf("%s %s \n",uV[1],uV[0]); +// uomMapping.insert(pair(uV[1],uV[0])); +// } +// } +// //ȡhandlerĸ +// arg_cnt = TC_number_of_arguments(msg.arguments); +// ECHO("Ϊ%d\n",arg_cnt); +// if (arg_cnt > 0) +// { +// for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); +// } +// } +// //ǷҪ¼log־ +// else if(stricmp(argflag, "debug") == 0) +// { +// if(argvalue != NULL) +// { +// if(strcmp(argvalue,"true")==0) +// { +// is_debug = true; +// } +// else +// { +// is_debug = false; +// } +// } +// else +// { +// +// string key_id; +// key_id.assign("ȱsecondary_type"); +// errMap.insert(pair(key_id,HANDLER_ARGUMENT_ERROR)); +// } +// } +// } +// MEM_free(argflag); +// MEM_free(argvalue); +// } +// +// //ȡĿ +// task_tag = msg.task; +// if(task_tag == NULLTAG) +// { +// +// return EPM_nogo; +// } +// EPM_ask_root_task(task_tag, &root_task_tag); +// EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); +// for(i = 0 ;i < att_cnt;i++){ +// tag_t target_tag = attachments[i]; +// //ȡ +// ITKCALL( WSOM_ask_object_type(target_tag, type_class)); +// ECHO("%s\n",type_class); +// string type_str ; +// type_str.assign(type_class); +// vector::iterator it; +// it = find(type_vec.begin(),type_vec.end(),type_str); +// if(it == type_vec.end()){ +// ECHO("Ͳinclude_type\n"); +// continue; +// } +// char * item_id_temp = NULL; +// ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp)); +// if(strcmp(item_id_temp,"E-") == 1 ){ +// ECHO("E-ͷϲҪ\n"); +// if(item_id_temp !=NULL){ +// MEM_free(item_id_temp); +// item_id_temp = NULL; +// } +// continue; +// } +// if(item_id_temp !=NULL){ +// MEM_free(item_id_temp); +// item_id_temp = NULL; +// } +// //TODO ȡϵ°汾 +// int revision_num=0; +// tag_t *revision_list=NULLTAG; +// AOM_ask_value_tags(target_tag,"revision_list",&revision_num,&revision_list); +// tag_t obj_tag=revision_list[revision_num-1]; +// JK_get_material_props1(obj_tag , material_vec,bigCodeVec,qrBigCodeVec,uomMapping); +// } +// if(attachments!=NULL){ +// MEM_free(attachments); +// attachments =NULL; +// } +// vector faild_vec ; +// JK_write_material_to_DB1(material_vec,faild_vec); +// material_vec.clear(); +// +// ECHO("\n********************************"); +// ECHO("\n********Ͻ************"); +// ECHO("\n********************************\n"); +// return 0; +//} +// +// diff --git a/jf_itk/string_helper.cpp b/jf_itk/string_helper.cpp new file mode 100644 index 0000000..553e6f3 --- /dev/null +++ b/jf_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/jf_itk/string_helper.h b/jf_itk/string_helper.h new file mode 100644 index 0000000..b4f7532 --- /dev/null +++ b/jf_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/jf_itk/string_utils.cxx b/jf_itk/string_utils.cxx new file mode 100644 index 0000000..9f6b79a --- /dev/null +++ b/jf_itk/string_utils.cxx @@ -0,0 +1,253 @@ +/*================================================================================================================== + Copyright(c) 2012 ORIGIN. + Unpublished - All rights reserved +==================================================================================================================== +File description: + Filename: string_utils.c + Module : Common module. + + This file includes some operations of the string. + +==================================================================================================================== +Date Name Description of Change +3-Feb-2015 Ray li Initialize creation +$HISTORY$ +===================================================================================================================*/ +#ifndef _cplusplus +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#endif + +#include +#include +#include +#include +#include +#include + +#include "string_utils.h" + +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; + } + } +} +char* GSTR_clone( char **dst, const char *src ) +{ + char *retVal = NULL; + int srcLen = 0; + + *dst = NULL; + if (src == NULL) + return NULL; + + srcLen = (int)tc_strlen( src ) + 1; + *dst = (char*)MEM_alloc( srcLen * sizeof(char) ); + retVal = tc_strncpy( *dst, src, srcLen ); + (*dst)[srcLen - 1] = '\0'; + + return retVal; +} + +char* GSTR_copy( char *dst, const char *src, int dstSize ) +{ + char *retVal = tc_strncpy( dst, src, dstSize ); + dst[dstSize - 1] = '\0'; + return retVal; +} + +char* GSTR_int_to_string( char **dst, int value ) +{ + char strVal[128 + 1]; + + *dst = NULL; + memset( strVal, 0, sizeof(strVal)/sizeof(char) ); + sprintf( strVal, "%d", value ); + + return GSTR_clone( dst, strVal ); +} + +void GSTR_format_int_to_string( char *dst, int digitNum, int value ) +{ + char sNum[WSO_desc_size_c + 1]; + sprintf( sNum, "%%0%dd", digitNum ); + sprintf( dst, sNum, value ); +} + +void GSTR_format_string( const char *dst, int m, const char *fill_char, char **out ) +{ + char sNum[WSO_name_size_c + 1] = {0}; + char sNew[WSO_name_size_c + 1] = {0}; + sprintf( sNum, "%%%d.%ds", m, m ); + sprintf( sNew, sNum, dst ); + STRNG_replace_str( sNew, " ", fill_char, out ); +} + + +char* GSTR_string_append( const char *s1, const char *s2 ) +{ + char *s = NULL; + if (s1 == NULL || s2 == NULL) + { + GSTR_clone(&s, s1 == NULL ? (s2 == NULL ? "" : s2) : s1 ); + } + else + { + int size = (int)tc_strlen(s1) + (int)tc_strlen(s2) + 1; + s = (char *)MEM_alloc( size ); + tc_strcpy( s, s1 ); + tc_strcat( s, s2 ); + s[size - 1] = '\0'; + } + return s; +} + +logical GSTR_is_float(const char *str) +{ + logical isfloat = true; + char *pStr = (char *)str; + logical hasPositive = false; + logical hasMinus = false; + logical hasDot = false; + + if (str == NULL) + return false; + + while (*pStr != '\0' && isfloat == true) + { + if ( (*pStr >= '0' && *pStr <= '9')) + { + //continue; + } + else if ( *pStr == '+' ) + { + isfloat = (hasPositive ? false : (hasPositive = true)); + } + else if ( *pStr == '-' ) + { + isfloat = (hasMinus ? false : (hasMinus = true)); + } + else if ( *pStr == '.' ) + { + isfloat = (hasDot ? false : (hasDot = true)); + } + else + isfloat = false; + + pStr ++; + } + return isfloat; +} + +logical GSTR_is_number(const char *str) +{ + logical is_number = true; + char *pStr = (char *)str; + if (str == NULL) + return false; + + while (*pStr != '\0') + { + if ( !( (*pStr >= '0' && *pStr <= '9') || *pStr == '-' ) ) + { + is_number = false; + break; + } + pStr ++; + } + return is_number; +} + +logical GSTR_is_ascii(char ch) +{ + return ((unsigned int)ch) < 128; +} + +int GSTR_trim_l( char *str, char s ) +{ + int count = 0; + char *pointer = str, *poffset = NULL; + if (str == NULL || str[0] == '\0') + return 0; + + while ( *pointer != '\0' ) + { + if ( *pointer != s ) + { + break; + } + count++; + pointer++; + } + if (count == 0) + return 0; + + poffset = str + count; + pointer = str; + while ( *poffset != '\0' ) + { + *pointer = *poffset; + pointer ++; + poffset ++; + } + *pointer = '\0'; + + return count; +} + +int GSTR_trim_r( char *str, char s ) +{ + int count = 0; + char *pointer = NULL; + if (str == NULL || str[0] == '\0') + return 0; + + pointer = str + ((int) strlen(str) - 1); + + while ( pointer != str ) + { + if ( *pointer != s ) + { + break; + } + + *pointer = '\0'; + + count++; + pointer--; + } + + return count; +} + +void GSTR_trim_float( char *floatValue ) +{ + if ( !IS_EMPTY(floatValue) && tc_strstr(floatValue, ".") != NULL ) + { + int len = 0; + GSTR_trim_r(floatValue, '0'); + len = (int)tc_strlen(floatValue); + if (floatValue[ len - 1 ] == '.') + floatValue[ len - 1 ] = '\0'; + } +} + diff --git a/jf_itk/string_utils.h b/jf_itk/string_utils.h new file mode 100644 index 0000000..4b379cc --- /dev/null +++ b/jf_itk/string_utils.h @@ -0,0 +1,125 @@ +/*===================================================================================================================== + Copyright(c) 2005 ORIGIN PLM Software Corp. All rights reserved. + Unpublished - All rights reserved +======================================================================================================================= +File description: + Filename: string_utils.h + Module : Common module. + + This file includes some operations of the string. + +======================================================================================================================= +Date Name Description of Change +14-Jul-2009 Ray Li Initialize creation +$HISTORY$ +=====================================================================================================================*/ +#ifndef STRING_UTILS_H +#define STRING_UTILS_H +#include +#include +#include +using namespace std; +#ifdef __cplusplus + extern "C" + { +#endif + +// @{{ String assister +#define IS_NULL(S) ((S)==NULL) +#define IS_EMPTY(S) (((S)==NULL) || !(*(S))) +// @}} + void Split( string strArg, string spliter, vector &ans ); + /** + * Clones the string. + * @param dst - the output string. + * @param src - the string to be cloned. + * @return - the destinatin string pointer. + */ + extern char* GSTR_clone( char **dst, const char *src ); + + /** + * Copy safely the string with null end. + * @param dst - the output string. + * @param src - the string to be cloned. + * @param dstSize - the size of output string. + * @return - the destinatin string pointer. + */ + extern char *GSTR_copy( char *dst, const char *src, int dstSize ); + + /** + * Converts int to string. + * @param dst - the output string. + * @param value - the int to be cloned. + * @return - the destinatin string pointer. + */ + extern char* GSTR_int_to_string( char **dst, int value ); + + /** + * Formats the int/string value as string. + * @param dst - the destination string. + * @param digitNum - the digit number of the value. + * @param value - the value to be converted. + * @return - N/A. + */ + extern void GSTR_format_int_to_string( char *dst, int digitNum, int value ); + extern void GSTR_format_string( const char *dst, int m, const char *fill_char, char **out ); + + /** + * Appends the strings( never null returned ) + * @param s1 - string 1 + * @param s2 - string 2 + * @return - new string + */ + extern char* GSTR_string_append( const char *s1, const char *s2 ); + + /** + * Whether the string is float type + * @param str - The string + * + * NOTE: it's only check whether each word is in "+-.0123456789", not care the float with "E" or the float rule, + * like "00-1.+01", it will return true. + * @return - return true if it is one. + */ + extern logical GSTR_is_float(const char *str); + + /** + * Whether all char of the string are number + * @param str - The string + * + * NOTE: it's only check whether each word is in "0123456789" + * @return - return true if it is one. + */ + extern logical GSTR_is_number(const char *str); + + /** + * Is ascii char + * @param ch - ascii char + * @return - return true if it is. + */ + extern logical GSTR_is_ascii(char ch); + + /** + * Trims the string's prefix. + * @param str - The string + * @param s - The char + * + * @return - count. + */ + extern int GSTR_trim_l( char *str, char s ); + extern int GSTR_trim_r( char *str, char s ); + + /** + * Remove the zero. + * For Example: + * floatValue="50.00" -> = "50" + * floatValue="50.0100" -> = "50.01" + * @return - count. + */ + extern void GSTR_trim_float( char *floatValue ); + +#ifdef __cplusplus + } +#endif + + +#endif //STRING_UTILS_H diff --git a/jf_itk/tc_log.cxx b/jf_itk/tc_log.cxx new file mode 100644 index 0000000..9376242 --- /dev/null +++ b/jf_itk/tc_log.cxx @@ -0,0 +1,103 @@ +/** +* @file common_itk_util.cpp +* @brief itk warpper utility function +* @author James +* @history +* =================================================================================== +* Date Name Description of Change +* 18-July-2008 Ray +*/ +#include +#include +#include + +#include +#include +#include +#include +// +#ifdef WIN32 +#include +#include +#else +#include +#endif +// +#include "tc_log.h" + +#define ARGS_LENGTH 200 +#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 + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} + + +FILE* logFile = NULL; + +void CreateLogFile_jk(char* logFileName) +{ + int i=0; + + logFile = NULL; + + + //get logFileName + sprintf(logFileName, "%s", logFileName); + printf("log file name: %s\n", logFileName); + + + //create log file + if((logFile = fopen(logFileName, "w"))==NULL) + { + printf("log file create failed\n"); + } + +} + +void WriteLog_jk(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_jk(void) +{ + if(logFile) + { + fclose(logFile); + logFile = NULL; + } +} diff --git a/jf_itk/tc_log.h b/jf_itk/tc_log.h new file mode 100644 index 0000000..30fbc52 --- /dev/null +++ b/jf_itk/tc_log.h @@ -0,0 +1,30 @@ +/** +* @file common_itk_util.h +* @brief itk warpper utility function +* @author Ray +* @history +* =================================================================================== +* Date Name Description of Change +* 09-July-2008 Ray +*/ + +#ifndef TC_LOG_H +#define TC_LOG_H + +#ifdef __cplusplus +extern "C" { +#endif + +void CreateLogFile_jk(char* logFileName); +void WriteLog_jk(const char* format, ...); +void CloseLog_jk(void); +//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/jf_itk/tx_addDisabled.cpp b/jf_itk/tx_addDisabled.cpp new file mode 100644 index 0000000..7227b18 --- /dev/null +++ b/jf_itk/tx_addDisabled.cpp @@ -0,0 +1,125 @@ +#include "epm_handler_common.h" +#include "jk_custom_erp.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +# include "common_itk_util.h" +#include "tx_erp_bom.h" +using namespace std; +extern "C" int POM_AM__set_application_bypass(logical bypass); +int tx_addDisabled(EPM_action_message_t msg) +{ + int ifail=ITK_ok; + + EPM_decision_t decision = EPM_go; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULLTAG,*revision_list=NULLTAG; + int arg_cnt = 0, i = 0, att_cnt = 0,revtion_nums=0; + int release_nums=0; + tag_t *release_list=NULLTAG; + char* object_type; + tag_t release_stat = NULLTAG; + vector attatcgments; + string dateType="dis"; + ITKCALL(ifail=RELSTAT_create_release_status("tx2Disabled", &release_stat));//TCM Released jk8Disabled + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + cout<<"------->"< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define MAX_PATH_LENGTH 2000 +/****************************************************** +* @headerfile standard c & cpp header files +********************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "epm_handler_common.h" +#include "error_handling.h" +#include "common_itk_util.h" +#include "string_helper.h" +#include "ocilib.h" +#include "erp_utils.h" +using namespace std; + +FILE* txlogFile = NULL; + +void tx_CreateLogFile(char* FunctionName) +{ + 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); + + txlogFile = 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("TC_USER_LOG_DIR")); + 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("TEMP")); + 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); + + //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 + txlogFile = fopen(logFileName, "w"); + +CLEANUP: + //DOFREE(date_string); + DOFREE(session_uid); +} +int tx_AutoSign_Handler(EPM_action_message_t msg){ + int ifail = ITK_ok,arg_cnt=0,i=0; + tag_t root_task =NULLTAG; + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]=""; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + char *rootTaskUid = NULL; + char sql[4000] ="\0"; + char ** sqlArgs =NULL ; +// char tc_log_file_name[128]="\0"; //־ļ· + int sqlArgsCount = 9; + + vector pref_vec ; + + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); +// sprintf(tc_log_file_name, "%s\\tx_AutoSign_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); +// printf("tc_log_file_name=%s\n",tc_log_file_name); +// tx_CreateLogFile(tc_log_file_name); + + //TODO ѡ + getPrefStrings("tx_AutoSign_DB_Configer",TC_preference_site, pref_vec); + if(pref_vec.size() < 3){ +// WriteLog("ERROR:ûлȡѡ[AutoSign_DB_Configer]\n"); +// CloseLog(); + return ifail; + } + if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1){ +// WriteLog("ERROR:ORACLEݿ¼ʧ\n"); +// CloseLog(); + return ifail; + } + cout<<"1-------------------------"< 0) + { + cout<<"3-------------------------"< +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +//#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include "string_utils.h" +#include +#include "tc_log.h" +#include +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "epm/epm.h" + +//#include "libxl.h" +#include +#include +using namespace std; +typedef struct +{ + string ITEM_ID;//id +}TX_PRO_STRUCT; +int tx_checkMaterialDisabled(EPM_rule_message_t msg) +{ + cout<<"żܷ"<"< item_vec; + for (i = 0; i < att_cnt; i++) + { + //øа汾汾revision_listжϰ汾ûʧЧ״̬жûʧЧ״̬ + ifail=AOM_ask_value_string(attachments[i],"object_type",&object_type); + if(strcmp("TX2RawMaterial",object_type)==0||strcmp("TX2SemiProduct",object_type)==0||strcmp("TX2Component",object_type)==0||strcmp("TX2FinalProduct",object_type)==0) + { + tag_t rev=attachments[i]; + + + ifail=AOM_ask_value_tags(rev,"release_status_list",&release_nums,&release_list); + if(release_nums==0) + { + TX_PRO_STRUCT elements ; + ifail=AOM_ask_value_string(attachments[i],"item_id",&object_type); + elements.ITEM_ID.assign(object_type); + item_vec.push_back(elements); + } + for (int k=0;k0) + { + string error_string="\n"; + for (int i=0;i +#include "epm_handler_common.h" + +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h"; +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include "libxl.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int tx_checkMaterialReleased(EPM_rule_message_t msg) +{ + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok, arg_cnt = 0, i = 0, att_cnt = 0; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL; + char * object_TYPE_1 = NULL; + string value_type = ""; + string value_property=""; + char * ref_type=NULL; + int actualNum=0; + string errorMessage="ϰ汾δͣò!\n"; + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ifail = EPM_ask_root_task(task_tag, &rootTask_tag); + //ȡĿö + ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments); + int reference_count=0;tag_t * reference_attachment=NULLTAG; + ifail = EPM_ask_attachments(rootTask_tag, EPM_reference_attachment, &reference_count, &reference_attachment); + boolean warn=false; + //ѭĿ + for (i = 0; i < att_cnt; i++) { + ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1);// + cout << object_TYPE_1; + cout << endl; + if(strcmp("TX2RawMaterial",object_TYPE_1)==0||strcmp("TX2SemiProduct",object_TYPE_1)==0||strcmp("TX2Component",object_TYPE_1)==0||strcmp("TX2FinalProduct",object_TYPE_1)==0)//汾ͣͼµʵϵĹϵûʵ϶󣬲Ҷзİ汾 + { + int tagNum=0; + tag_t *revTags=NULLTAG; + AOM_ask_value_tags(attachments[i],"revision_list",&tagNum,&revTags); + for (int j=0;j +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tx_erp_bom.h" +#include "erp_send_item.h" + +using namespace std; + +struct obj +{ + tag_t item; + tag_t rev; + tag_t form; + tag_t bom; +}; + +class db +{ +private: + vector key, val; +public: + SACommand *command; + SADateTime sql_time; + logical kong; + void add(string a, string b) + { + key.push_back(a); + val.push_back(b); + } + logical search(char * table) + { + if (key.size() != val.size()) + return false; + + stringstream ss; + ss << "select * from " << table << " where "; + for (auto i = 0; i < key.size(); i++) + { + + + ss << key[i]; + ss << "='"; + ss << val[i]; + + if (i != key.size()-1) + { + ss << "' and "; + }else + { + ss << "' "; + } + } + + + + + + cout<<"---------"<setCommandText("select sys_guid() from dual"); + command->Execute(); + if (command->FetchNext()) + { + result = command->Field(1).asString(); + } + } + catch (SAException e) + { + printf("error:%s\n", e.ErrMessage().GetMultiByteChars()); + } + return result; + } + void put(string db_key, string prop, char c, obj & o) + { + tag_t tag = NULLTAG; + switch (c) + { + case 'I':tag = o.item; + break; + case 'B':tag = o.bom; + break; + case 'R':tag = o.rev; + break; + case 'F':tag = o.form; + break; + default: + break; + } + if (tag == NULLTAG) + return; + //2020.03.01 DzڵԣҪ + char *val=NULL; + AOM_UIF_ask_value(tag, prop.c_str(), &val); + + + + + + + //2019.12.31 ֶTX_BOM_LIST_NOҪ⴦ + if(strcmp(db_key.c_str(),"TX_BOM_LIST_NO")==0) + { + tag = o.form; + char *val_id=NULL; + vector idVec; + AOM_UIF_ask_value(tag, "object_name", &val_id);// + string idString=val_id; + Split(idString,"/",idVec); + string newlongcode=idVec[0]; + char *val_long=NULL; + AOM_UIF_ask_value(tag, "tx2MaterialLongCode", &val_long);// + idString=val_long; + Split(idString,"\.",idVec); + string index=""; + for(int i=0;i idVec; + AOM_UIF_ask_value(tag, "object_name", &val_id);// + string idString=val_id; + Split(idString,"/",idVec); + string newlongcode=idVec[0]; + char *val_long=NULL; + AOM_UIF_ask_value(tag, "tx2MaterialLongCode", &val_long);// + idString=val_long; + Split(idString,"\.",idVec); + string index=""; + for(int i=0;i attatcgments2) +{ + tag_t root_task, *atts, relation_type, *rels; + int pref_cnt, n_cnt, rel_cnt; + char **pref_values; + db db; + time_t t = time(0); + tm* local = localtime(&t); + db.sql_time = *local; + SAConnection conn; + SACommand command; + PREF_ask_char_values("tx_AutoSign_DB_Configer", &pref_cnt, &pref_values); + stringstream ss; + ss << pref_values[0] << ':' << pref_values[1] << '/' << pref_values[3]; + conn.Connect(pref_values[3], pref_values[0], pref_values[1], + SA_Oracle_Client); + conn.setAutoCommit(SA_AutoCommitOff); + command.setConnection(&conn); + db.command = &command; + EPM_ask_root_task(task, &root_task); + EPM_ask_attachments(root_task, EPM_target_attachment, &n_cnt, &atts); + GRM_find_relation_type(IMAN_master_form_rtype, &relation_type); + rapidjson::Document doc; + PREF_ask_char_values("TX_ERP_TC_PROPERTY", &pref_cnt, &pref_values); + // cout<0) + { + db.put(doc[j]["ERP"].GetString(), doc[j]["TC"].GetString(), doc[j]["TYPE"].GetString()[0], o,wrongType); + }else + { + db.put(doc[j]["ERP"].GetString(), doc[j]["TC"].GetString(), doc[j]["TYPE"].GetString()[0], o); + } + + } + db.add("creation_date", "now:"); + db.add("process_status", "1"); + + db.insert("TX_PART_INFO_TABLE"); + } + + + } + for (int i = 0; i < n_cnt; i++) + { + if (isTypeOf(atts[i], "ItemRevision")) + { + tag_t item; + tag_t form; + ITEM_ask_item_of_rev(atts[i], &item); + GRM_list_secondary_objects_only(atts[i], relation_type, &rel_cnt, &rels); + form = rels[0]; + obj o; + o.item = item; + o.rev = atts[i]; + o.form = form; + for (rapidjson::SizeType j = 0; j < doc.Size(); j++) + { + //жǷڰУǣ + string wrongType=""; + try + { + wrongType=doc[j]["EXP"].GetString(); + } + catch (...) + { + } + if(wrongType.length()>0) + { + db.put(doc[j]["ERP"].GetString(), doc[j]["TC"].GetString(), doc[j]["TYPE"].GetString()[0], o,wrongType); + }else + { + db.put(doc[j]["ERP"].GetString(), doc[j]["TC"].GetString(), doc[j]["TYPE"].GetString()[0], o); + } + } + db.add("creation_date", "now:"); + db.add("process_status", "1"); + + db.insert("TX_PART_INFO_TABLE"); + } + } + + + try + { + conn.Commit(); + } + catch (SAException e) + { + try + { + conn.Rollback(); + } + catch (SAException) + { + } + printf("error:%s\n", e.ErrMessage().GetMultiByteChars()); + } + conn.Disconnect(); + return 0; +} + +int tx_erp(EPM_action_message_t msg) +{ + vector vector; + erp(msg.task,vector); + return 0; +} + +void bom_loop(tag_t win,tag_t relation_type,tag_t top_line,char** pref_values,db db) +{ + rapidjson::Document doc,doc2; + doc.Parse(pref_values[1]);//TX_BOM_TABLE + doc2.Parse(pref_values[2]);//TX_BOM_LINE + tag_t *rels; + + int line_cnt,rel_cnt; + tag_t *lines=NULLTAG; + BOM_line_ask_child_lines(top_line, &line_cnt, &lines); + if(line_cnt>0) + { + string puid = db.guid();//ݿһuid + tag_t p_rev, p_item,c_rev,c_item; + obj p_obj; + + AOM_ask_value_tag(top_line, "bl_line_object", &p_rev); + ITEM_ask_item_of_rev(p_rev, &p_item); + GRM_list_secondary_objects_only(p_rev, relation_type, &rel_cnt, &rels); + p_obj.form = rels[0]; + p_obj.item = p_item; + p_obj.rev = p_rev; + p_obj.bom = top_line; + for (rapidjson::SizeType j = 0; j < doc.Size(); j++) + { + + db.put(doc[j]["ERP"].GetString(), doc[j]["TC"].GetString(), doc[j]["TYPE"].GetString()[0], p_obj); + } + //ȲѯTX_BOM_TABLEݣеĻkeyvalue + logical hasData=db.search("TX_BOM_TABLE"); + if(hasData==false) + { + if(lines!=NULL) + { + MEM_free(lines); + lines=NULL; + } + if(rels!=NULL) + { + MEM_free(rels); + rels=NULL; + } + return; + } + db.add("TX_PID", puid); + db.add("TX_BOM_CREATION_DATE", "now:"); + db.add("TX_BOM_PROCESS_STATUS", "1"); + db.insert("TX_BOM_TABLE"); + + + + for(int j=0;j0) + { + bom_loop( win, relation_type,lines[j], pref_values,db); + } + if(lines2!=NULL) + { + MEM_free(lines2); + lines2=NULL; + } + if(rels!=NULL) + { + MEM_free(rels); + rels=NULL; + } + } + } + + if(lines!=NULL) + { + MEM_free(lines); + lines=NULL; + } + + + + +} + +void erp_bom(tag_t task) +{ + tag_t root_task, *atts=NULLTAG, relation_type, *rels=NULLTAG,win,top_line; + + int pref_cnt=0, n_cnt, rel_cnt; + char **pref_values=NULL; + db db; + time_t t = time(0); + tm* local = localtime(&t); + db.sql_time = *local; + SAConnection conn; + SACommand command; + PREF_ask_char_values("tx_AutoSign_DB_Configer", &pref_cnt, &pref_values); + + stringstream ss; + ss << pref_values[0] << ':' << pref_values[1] << '/' << pref_values[3]; + conn.Connect(pref_values[3], pref_values[0], pref_values[1], + SA_Oracle_Client); + conn.setAutoCommit(SA_AutoCommitOff); + command.setConnection(&conn); + db.command = &command; + EPM_ask_root_task(task, &root_task); + EPM_ask_attachments(root_task, EPM_target_attachment, &n_cnt, &atts); + GRM_find_relation_type(IMAN_master_form_rtype, &relation_type); + + rapidjson::Document doc,doc2; + PREF_ask_char_values("TX_ERP_TC_PROPERTY", &pref_cnt, &pref_values);//TODO ȡѡ + doc.Parse(pref_values[1]);//TX_BOM_TABLE + doc2.Parse(pref_values[2]);//TX_BOM_LINE + BOM_create_window(&win); + + + //2020.01.01 в㼶 + for(int i=0;i +using namespace std; +void erp_bom(tag_t task); +int erp(tag_t task,vector attatcgments2); \ No newline at end of file diff --git a/jf_itk/tx_removeDisabled.cpp b/jf_itk/tx_removeDisabled.cpp new file mode 100644 index 0000000..5e432b6 --- /dev/null +++ b/jf_itk/tx_removeDisabled.cpp @@ -0,0 +1,245 @@ +#include "epm_handler_common.h" +#include "jk_custom_erp.h" +#include "jk_custom.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "ps/ps.h" +#include "ps/vrule.h" +#include "sstream" +#include +#include "epm/epm.h" +#include "sa/sa.h" +#include +#include "epm/signoff.h" +#include +#include +#include +#include +#include "ae/dataset.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 +#include +#include +#include "tx_erp_bom.h" +extern "C" int POM_AM__set_application_bypass(logical bypass); +using namespace std; + + +int tx_removeDisabled(EPM_action_message_t msg) +{ + int ifail=ITK_ok; + + EPM_decision_t decision = EPM_go; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULLTAG,*revision_list=NULLTAG; + int arg_cnt = 0, i = 0, att_cnt = 0,revtion_nums=0; + int release_nums=0; + tag_t *release_list=NULLTAG; + char* object_type; + tag_t release_stat = NULLTAG; + string dateType="ena"; + vector attatchments; + vector target_vec; + +// ITKCALL(ifail=RELSTAT_create_release_status("jk8Disabled", &release_stat)); + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + cout<<"--qq----->"<%d\n",ifail); + return 0; +} + +void tx_removeReleaseStatusByName(string statusName,tag_t rootTask,vector revVec){ + tag_t release_status =NULLTAG; + tag_t * attachments = NULL; + int *att_types=NULL; + int ifail = 0; + att_types = (int*) MEM_alloc (sizeof(int) * ( revVec.size() )); + attachments = (tag_t*) MEM_alloc (sizeof(tag_t) * ( revVec.size() )); + //ƶĿ꣬ת + for ( int indx = 0; indx < revVec.size(); indx++ ) + { + att_types[indx] = EPM_target_attachment;//EPM_reference_attachment; + attachments[indx] = revVec[indx]; + } + //еİ汾ӵ + //POM_AM__set_application_bypass(true); + //ITKCALL(ifail = AOM_refresh(rootTask,0)); + printf("1ifail=>%d\n",ifail); + //AOM_load(rootTask); + //AOM_lock(rootTask); + ITKCALL(ifail=EPM_add_attachments(rootTask,revVec.size(),attachments,att_types)); + printf("2ifail=>%d\n",ifail); + //AOM_unlock(rootTask); + //ITKCALL(ifail =AOM_refresh(rootTask,0)); + //printf("3ifail=>%d\n",ifail); + //POM_AM__set_application_bypass(false); + ITKCALL(ifail =CR_create_release_status(statusName.c_str(),&release_status)); + printf("4ifail=>%d\n",ifail); + if(release_status!=NULLTAG){ + POM_AM__set_application_bypass(true); + //ITKCALL(ifail =AOM_refresh(rootTask,0)); + //printf("5ifail=>%d\n",ifail); + //AOM_lock(rootTask); + ITKCALL(ifail =EPM_remove_status_from_targets(release_status,rootTask)); + printf("6ifail=>%d\n",ifail); + //AOM_unlock(rootTask); + //ITKCALL(ifail =AOM_refresh(rootTask,0)); + //printf("7ifail=>%d\n",ifail); + POM_AM__set_application_bypass(false); + } + //AOM_unlock(rootTask); + if(att_types) + { + MEM_free(att_types); + att_types = NULL; + } + if(attachments) + { + MEM_free(attachments); + attachments = NULL; + } + +} + +void tx_removeRevFromTask(tag_t rootTask,vector revVec){ + cout<<"enter removeRevFromTask "< + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +using namespace std; +#include "epm_sign_rev.h" +#include "error_handling.h" +#include "common_itk_util.h" +#include "hx_custom.h" +#include "epm_handler_common.h" + +//̽ڵϢ +struct TXFLOWNODEINFOS +{ + char taskname[128]; + char username[128]; + char timeinfo[128]; + //2019.12.2עͣעֻУû + char commentsinfo[256]; + char group[128]; +}flownode_s[64]; + +//ԱϢ +struct TXUSERINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}userinfo_s[64]; +//ѾϢ +struct TXCOMMENTSINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}commentsinfo_s[64]; +//Ϣ +struct TXTIMEINFOS +{ + char taskname[128]; + char propertyname[128]; + char group[128]; +}timeinfo_s[64]; + + + +int txnodecount = 0; +int txuserinfoscount = 0; +int txtimeinfoscount = 0; +int txcommentsinfoscount = 0; + +typedef struct{ + string TaskUserName; + string TaskTimeName; + string UserName; + string TimeStr; + string GroupName; + string PropUserName; + string PropTimeName; +}TXNOTICE_NODE; +void txSplitUserInfo(char *userinfo) +{ + char* token = NULL, *ptr = NULL, temp[512] = ""; + + token = strtok( userinfo, ";"); + while( token != NULL ) + { + /* While there are tokens in "string" */ + strcpy(temp,token); + ECHO( "token=%s\n", token ); + ptr = strstr(temp, "="); + if (ptr != NULL) + { + strcpy(userinfo_s[txuserinfoscount].propertyname, ptr +1); + strcpy(ptr,"\0"); + strcpy(userinfo_s[txuserinfoscount].taskname ,temp); + ECHO("\nuserinfo_s[userinfoscount].taskname=%s,userinfo_s[userinfoscount].propertyname=%s\n", + userinfo_s[txuserinfoscount].taskname,userinfo_s[txuserinfoscount].propertyname); + } + txuserinfoscount ++; + /* Get next token: */ + token = strtok( NULL, ";"); + } +} +void txSplitCommentsInfo(char *commentsInfo) +{ + char* token = NULL, *ptr = NULL, temp[512] = ""; + + token = strtok( commentsInfo, ";"); + while( token != NULL ) + { + /* While there are tokens in "string" */ + strcpy(temp,token); + ECHO( "token=%s\n", token ); + ptr = strstr(temp, "="); + if (ptr != NULL) + { + strcpy(commentsinfo_s[txcommentsinfoscount].propertyname, ptr +1); + strcpy(ptr,"\0"); + strcpy(commentsinfo_s[txcommentsinfoscount].taskname ,temp); + ECHO("\ncommentsinfo_s[userinfoscount].taskname=%s,commentsinfo_s[userinfoscount].propertyname=%s\n", + commentsinfo_s[txcommentsinfoscount].taskname,commentsinfo_s[txcommentsinfoscount].propertyname); + } + txcommentsinfoscount ++; + /* Get next token: */ + token = strtok( NULL, ";"); + } +} +void txSplitTimeInfo(char *userinfo) +{ + char* token = NULL, *ptr = NULL, temp[512] = ""; + + token = strtok( userinfo, ";"); + while( token != NULL ) + { + /* While there are tokens in "string" */ + strcpy(temp,token); + ECHO( "token=%s\n", token ); + ptr = strstr(temp, "="); + if (ptr != NULL) + { + strcpy(timeinfo_s[txtimeinfoscount].propertyname, ptr +1); + strcpy(ptr,"\0"); + strcpy(timeinfo_s[txtimeinfoscount].taskname ,temp); + ECHO("\ntimeinfo_s[txtimeinfoscount].taskname=%s,timeinfo_s[txtimeinfoscount].propertyname=%s\n",timeinfo_s[txtimeinfoscount].taskname,timeinfo_s[txtimeinfoscount].propertyname); + + } + txtimeinfoscount ++; + /* Get next token: */ + token = strtok( NULL, ";"); + } +} +int tx_ORIGIN_ask_sign_info(tag_t task_node, char *output_str,char *task_name,char *arg3value,char *arg4value) +{ + int ifail = ITK_ok; + tag_t cur_perform_task = NULLTAG,tempTask = NULLTAG; + char cur_task_name[WSO_name_size_c+1]="",buf[128] = ""; + //жϱ + int s = 0; + EPM_decision_t decision = EPM_nogo; + char* userName; + char *timeinfo1 = "",person_name[SA_name_size_c+1]="",*prop_name = "last_mod_date"; + tag_t aUserTag = NULLTAG,responsibleParty = NULLTAG; + date_t decision_date; + //ڵ + int perform_count = 0; + int *attach_type; + tag_t *perform_attaches = NULLTAG; + tag_t memberTag = NULLTAG; + SIGNOFF_TYPE_t memberType; + CR_signoff_decision_t signoff_decision; + EPM_signoff_decision_t dec; + char *timeinfo="",*group_full_name = NULL; + tag_t user_tag=NULLTAG, group_tag = NULLTAG; + //ѭжϱ + int i=0; + + EPM_ask_name( task_node, cur_task_name ) ; + ECHO("cur_task_name = %s\n",cur_task_name); + if ( stricmp( cur_task_name, "perform-signoffs" ) == 0 ) + { + cur_perform_task = task_node; + //õڵ + EPM_ask_parent_task( cur_perform_task, &tempTask ); + EPM_ask_name( tempTask, cur_task_name ); + } + else if( strcmp( cur_task_name, "" ) == 0 || strcmp( cur_task_name, "" ) == 0) + { + cur_perform_task = task_node; + } + else + { + EPM_ask_sub_task(task_node, "perform-signoffs", &cur_perform_task) ; + if ( cur_perform_task != NULLTAG ) + { + EPM_ask_name( task_node, cur_task_name ); + + ECHO( "---------> cur_task_name = %s\n" , cur_task_name ); + + } + } + + if(cur_perform_task != NULLTAG ) + { + char type[WSO_name_size_c+1] = ""; + WSOM_ask_object_type(cur_perform_task,type); + ECHO("current task type = %s\n", type); + cout<<"type--------"< ans; + //if( d_value != NULL ) + //{ + // Split(d_value, ' ', ans); + // if(ans.size() > 1) + // strcat(output_str,ans[0].c_str()); + //} + strcat(output_str,d_value); + //DOFREE(timeinfo); + strcat(output_str, "|"); + strcpy(flownode_s[txnodecount].taskname,""); + strcpy(flownode_s[txnodecount].username,person_name); + //if(ans.size() > 1) + strcpy(flownode_s[txnodecount].timeinfo,d_value); + txnodecount = txnodecount + 1;*/ + ECHO("output_str=%s",output_str); + EPM_ask_all_attachments(cur_perform_task,&perform_count,&perform_attaches,&attach_type); + ECHO("EPM_signoff_attachment Counts = %d", perform_count); + + for(i=0;i 0) + { + for (i=0;i"<true"<false"< type_vec; + + //Split(exclude_type,";",type_vec); + + ECHO("1%d\n",txuserinfoscount); + cout< +#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 +using namespace std; +#ifdef __cplusplus +extern "C" { +#endif + + + int delete_msword(tag_t dataset,char *ext,char *newRevType) +{ + tag_t spec_dataset_rev = NULLTAG , ref_object = NULLTAG; + AE_reference_type_t reference_type; + printf("\n111111111111\n"); + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "Fnd0word"; + //printf("\n22222222222\n"); + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + printf("\n3333333333333\n"); + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + printf("\n44444444444444\n"); + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + printf("\n555555555555\n"); + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + printf("\n66666666666666\n"); + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + //user_lib_env = getenv("TC_USER_LIB"); + //strcpy(local_path, user_lib_env); + + //iCnt = strlen(user_lib_env); + //while( user_lib_env[iCnt] != '\\' ) + //{ + // iCnt--; + //} + + //strcpy(pTempStr,""); + //strcpy(pTempStr,&user_lib_env[iCnt+1]); + + //if( strcmp(pTempStr,"SubstMacros-MSWord.wsf") != 0 ) + //{ + // strcat( user_lib_env, "\\SubstMacros-MSWord.wsf" ); + //} + + //strcpy( cmd, user_lib_env ); + if(strcmp(newRevType,"")) + { + strcpy( cmd, "TXDeleteMacros-MSWord.wsf" ); + + }else + { + // strcpy( cmd, "JKDeleteMacros-MSWord.wsf" ); + strcpy( cmd, "DeleteMacros-MSWord.wsf" ); + + } + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + printf("\n777777777777\n"); + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + return ITK_ok; +} + + + + +int delete_msexcel(tag_t dataset, char *ext,char *newREV_type) +{ + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + + AE_reference_type_t reference_type; + + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "excel"; + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + char cmd[256] = ""; + /*user_lib_env = getenv("TC_USER_LIB"); + strcpy(local_path, user_lib_env); + + iCnt = strlen(user_lib_env); + while( user_lib_env[iCnt] != '\\' ) + { + iCnt--; + } + strcpy(pTempStr,""); + strcpy(pTempStr,&user_lib_env[iCnt+1]); + + if( strcmp(pTempStr,"SubstMacros-MSExcel.wsf") != 0 ) + { + strcat( user_lib_env, "\\SubstMacros-MSExcel.wsf" ); + }*/ + //strcpy( cmd, user_lib_env ); + if(strcmp(newREV_type,"")) + { + strcpy( cmd, "TXDeleteMacros-MSExcel.wsf" ); + + }else + { + // strcpy( cmd, "JKDeleteMacros-MSExcel.wsf" ); + strcpy( cmd, "DeleteMacros-MSExcel.wsf" ); + + } + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + //CALL(AOM_load (dataset)); + //CALL(AOM_load(spec_dataset_rev)); + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + + return ITK_ok; +} + + + + + + + int W2_Revise_clear_form( METHOD_message_t* msg, va_list args ) + { + int ifail = ITK_ok, i = 0, j = 0; + + char rev_type[ITEM_type_size_c + 1], + *optionname= "W2_Revise_clear_form";\ + map prop_map; + //int msgid = va_arg(args,int ); + tag_t new_rev = va_arg(args,tag_t ); + char* operation = va_arg(args,char* ); + + + /*tag_t parent_rev = va_arg(args,tag_t ); + int copyCount = va_arg(args,int ); + tag_t **obj_tags = va_arg(args,tag_t** );*/ + + printf("*******************************************************\n"); + printf("* W2_Revise_clear_form is comming *\n"); + printf("*******************************************************\n"); + + //printf("msgid==============================%d \n",msgid); + printf("new_rev==============================%d\n",new_rev); + printf("operation==============================%s\n",operation); + //printf("parent_rev==============================%u\n",parent_rev); + //printf("copyCount==============================%d\n",copyCount); + + //-------------ȡѡ(origin+rev_type+_str),itemrevFormϵForm͡ + int option_value_count; + char **option_values; + char *PREF_W2_Revise_clear_form="JK_Revise_ItemRev";//ѡ + if(strcmp(operation,"Revise")!=0 && strcmp(operation,"SaveAs")!=0){ + return ifail; + } + ITKCALL(PREF_ask_char_values(PREF_W2_Revise_clear_form,&option_value_count,&option_values)); + printf("=====option_value_count======%d\n",option_value_count); + if(option_value_count == 0) + { + printf("optionѡ%s\n",PREF_W2_Revise_clear_form); + return ifail; + } + ////------------------ + //for (j = 1; j 0) + // { + // for(index = 0; index < paramCount; index++) + // { + // tc_strcpy(DataSetType, input_args[index].arg_val.str_value); + // printf("DataSetType=========%s\n",DataSetType); + + // option_name = (char*)MEM_alloc(sizeof(char)*(tc_strlen(origin)+tc_strlen(DataSetType)+tc_strlen(_str)+1)); + // tc_strcpy(option_name,origin); + // tc_strcat(option_name,DataSetType); + // tc_strcat(option_name,_str); + // //-------------ȡѡ(origin+rev_type+_str),itemrevFormϵForm͡ + // int option_value_count; + // char **option_values; + // ITKCALL(PREF_ask_char_values(option_name,&option_value_count,&option_values)); + // printf("=====option_value_count======%d\n",option_value_count); + // if(option_value_count == 0) + // { + // printf("optionѡ%s\n",option_name); + // MEM_free(option_name); + // break; + // } + // MEM_free(option_name); + + // //-----------ҹϵ + // tag_t relationTag = NULLTAG; + // ITKCALL (GRM_find_relation_type(option_values[0],&relationTag)); + // if(relationTag == NULLTAG) + // { + // printf("=====뽨%sϵͣ======\n",option_values[0]); + // break; + // } + + // //-----------ͨϵָ͵Form + // int rfCount = 0; + // tag_t *rfTags = NULL; + // char form_object_type[WSO_name_size_c+1]; + // ITKCALL (GRM_list_secondary_objects_only(new_rev,relationTag,&rfCount,&rfTags));// + // printf("=====rfCount======%d\n",rfCount); + + // for(i = 0; i < rfCount; i++) + // { + // ITKCALL(WSOM_ask_object_type(rfTags[i],form_object_type)); + // printf("=====form_object_type======%s\n",form_object_type); + // if(tc_strcmp(form_object_type,option_values[1]) == 0) + // { + // ITKCALL( AOM_lock( rfTags[i] ) ); + // for(j = 2;j < option_value_count; j++) + // { + // ITKCALL(AOM_set_value_string(rfTags[i],option_values[j],"")); + // ITKCALL( AOM_save( rfTags[i] ) ); + // } + // ITKCALL( AOM_unlock( rfTags[i] ) ); + // ITKCALL( AOM_refresh( rfTags[i],true ) ); + // break; + // } + + // } + // MEM_free(option_values); + // MEM_free(rfTags); + // } + // MEM_free(input_args); + // } + + // /**/ + // printf("*******************************************************\n"); + // printf("* D5DFHM_Clear_Form_PropValue is end *\n"); + // printf("*******************************************************\n"); + + // return ifail; + //} + + + + /**/ + //iman_save(itemrevision) + /*int Origin_Clear_Form_PropValue( METHOD_message_t* msg, va_list args ) + { + int ifail = ITK_ok, i = 0, j = 0; + + char rev_type[ITEM_type_size_c + 1], + *origin = "origin_", *_str = "_Clear_QzInfo", + *option_name = "Origin_ACADDWG_Clear_QzInfo"; + + tag_t item_rev = va_arg(args,tag_t ); + + printf("*******************************************************\n"); + printf("* Origin_Clear_Form_PropValue is comming *\n"); + printf("*******************************************************\n"); + + ITKCALL(ITEM_ask_rev_type(item_rev,rev_type)); + char rev_id[ITEM_id_size_c + 1]; + ITKCALL(ITEM_ask_rev_id(item_rev,rev_id)); + printf("rev_type==============================%s\n",rev_type); + printf("rev_id==============================%s\n",rev_id); + //option_name = (char*)MEM_alloc(sizeof(char)*(tc_strlen(origin)+tc_strlen(rev_type)+tc_strlen(_str)+1)); + //tc_strcpy(option_name,origin); + //tc_strcat(option_name,rev_type); + //tc_strcat(option_name,_str); + + //-------------ȡѡ(origin+rev_type+_str),itemrevFormϵForm͡ + int option_value_count; + char **option_values; + ITKCALL(PREF_ask_char_values(option_name,&option_value_count,&option_values)); + printf("=====option_value_count======%d\n",option_value_count); + if(option_value_count == 0) + { + printf("optionѡ%s\n",option_name); + return ITK_ok; + } + + //-----------ҹϵ + tag_t relationTag = NULLTAG; + ITKCALL (GRM_find_relation_type(option_values[0],&relationTag)); + if(relationTag == NULLTAG) + { + printf("=====뽨%sϵͣ======\n",option_values[0]); + return ITK_ok; + } + + //-----------ͨϵָ͵Form + int rfCount = 0; + tag_t *rfTags = NULL; + char form_object_type[WSO_name_size_c+1]; + ITKCALL (GRM_list_secondary_objects_only(item_rev,relationTag,&rfCount,&rfTags));// + printf("=====rfCount======%d\n",rfCount); + + GRM_relation_t* secondary_list ; + ITKCALL (GRM_list_secondary_objects(item_rev,relationTag,&rfCount,&secondary_list));// + printf("=====rfCount111111======%d\n",rfCount); + + ITEM_attached_object_t* objects; + ITKCALL (ITEM_list_all_rev_attachments(item_rev,&rfCount,&objects));// + printf("=====rfCount2222222======%d\n",rfCount); + + int t = 0; + tag_t *tg = NULLTAG; + ITKCALL(AOM_ask_value_tags(item_rev,option_values[0],&t,&tg)); + printf("=====tttttttt======%d\n",t); + + for(i = 0; i < rfCount; i++) + { + ITKCALL(WSOM_ask_object_type(objects[i].attachment,form_object_type)); + printf("=====form_object_type======%s\n",form_object_type); + if(tc_strcmp(form_object_type,option_values[1]) == 0) + { + ITKCALL( AOM_lock( rfTags[i] ) ); + for(j = 2;j < option_value_count; j++) + { + ITKCALL(AOM_set_value_string(rfTags[i],option_values[j]," ")); + ITKCALL( AOM_save( rfTags[i] ) ); + } + ITKCALL( AOM_unlock( rfTags[i] ) ); + break; + } + } + + //MEM_free(option_name); + MEM_free(option_values); + MEM_free(rfTags); + printf("*******************************************************\n"); + printf("* Origin_Clear_Form_PropValue is end *\n"); + printf("*******************************************************\n"); + + return ifail; + }*/ + int Create_item_test( METHOD_message_t* msg, va_list args ) + { + int ifail = ITK_ok, i = 0, j = 0, form_count=0; + tag_t item_tag = NULLTAG, rev = NULLTAG,master_form_rel_type = NULLTAG, + master_form = NULLTAG, *form_list=NULL; + char item_type[WSO_name_size_c+1]="", *value=NULL; + item_tag = msg->object; + CALL( WSOM_ask_object_type( item_tag, item_type ) ); + printf("=============type is %s\n",item_type); + if (strcmp(item_type,"Item")==0) + { + CALL(ITEM_ask_latest_rev(item_tag, &rev)); + CALL( GRM_find_relation_type( TC_master_form_rtype, &master_form_rel_type ) ); + CALL(GRM_list_secondary_objects_only(rev, master_form_rel_type, &form_count, &form_list )); + master_form = form_list[0]; + CALL(AOM_lock(master_form)); + CALL( AOM_set_value_string( master_form, "user_data_1", "δʼ") ); + CALL( AOM_save( master_form ) ); + CALL( AOM_unlock( master_form ) ); + printf("set property success!\n"); + } + + //tag_t form_tag = NULLTAG; + //tag_t object_type_tag = NULLTAG; + //tag_t form_type_tag = NULLTAG; + //logical is_form_type = false; + //form_tag = msg->object; + //char form_type[WSO_name_size_c+1]="", *value=NULL; + // + //CALL( WSOM_ask_object_type( form_tag, form_type ) ); + // + //CALL( TCTYPE_ask_object_type (form_tag, &object_type_tag)); + + //CALL( TCTYPE_find_type ("Form",NULL,&form_type_tag)); + + //CALL( AOM_is_type_of(form_tag,form_type_tag,&is_form_type)); + // printf("=============type is %s\n",item_type); + //if (strstr(form_type, "ItemRevision Master") != NULL) + //{ + // CALL(AOM_lock(form_tag)); + // CALL(AOM_ask_value_string(form_tag, "user_data_1", &value)); + // printf("=============value is %s\n",value); + // //if(strcmp(value,"")!=0) + // { + // //EMH_store_error_s1(EMH_severity_user_error, ERROR_NO_WRITE_PRIVILEGE, "Form"); + // //ifail = ERROR_NO_WRITE_PRIVILEGE; + // //goto end_handler; + // //CALL(AOM_set_value_string(form_tag, "user_data_1",value)); + // ifail = AM_insufficient_privilege; + // return ifail; + // } + + //} + return ITK_ok; + } + +extern int Register_revise_msg( void ) +{ + int status = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + printf("W2_Revise_clear_form\n"); + +METHOD_id_t mth_tag; + ITKCALL(status = METHOD_find_method("ItemRevision", ITEM_deep_copy_msg ,&mth_tag)); + if (mth_tag.id != 0){ + ITKCALL( METHOD_add_action(mth_tag, METHOD_post_action_type, W2_Revise_clear_form, NULL)); + printf("עW2_Revise_clear_formɹ\n"); + } +/* ITKCALL(status = METHOD_find_method("Item", ITEM_create_msg ,&mth_tag)); + if (mth_tag.id != 0){ + ITKCALL( METHOD_add_action(mth_tag, METHOD_post_action_type, Create_item_test, NULL)); + printf("עCreate_item_testɹ\n"); + }*/ + return status; +} + + +#define SAFECALL(x) \ +{ \ + err_function = #x; err_line = __LINE__; \ + if((rcode = (x)) != ITK_ok) \ + { \ + goto CLEANUP; \ + } \ +} +void va_copy( va_list *dest , va_list * src ){ + *dest = *src ; +} +static int SMP_ask_bomline_value( METHOD_message_t * m, va_list args ) +{ + + int rcode = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + tag_t objTag = NULLTAG; + const char * prop_name; + char** value = NULL; + char *bom_rev_status = NULL; + char sQty[] = ""; + char sUnRead[] = "UNREADABLE"; + va_list largs; + tag_t bom_line_item = NULLTAG; + tag_t bom_line_rev = NULLTAG; + tag_t last_rev = NULLTAG; + tag_t iman_type_tag = NULLTAG ; + char obj_class_name[TCTYPE_class_name_size_c+1]; + char obj_type_name[TCTYPE_name_size_c+1]; + int attr_bom_item = 0; + int attr_bom_rev = 0; + int attr_bom_rev_status = 0; + char item_rev_id[ITEM_id_size_c+1]="",item_id[ITEM_id_size_c+1]="",rev_id[ITEM_id_size_c+1]="", + strRow[BUFSIZ]="",txtfile[BUFSIZ]="", obj_type[WSO_object_type_size_c+1]=""; + tag_t master_form_rel_type = NULLTAG; + int form_count = 0, attr_qty_id = 0; + tag_t *form_list=NULL, master_form = NULLTAG; + char *d_value=NULL, *qty_value = NULL; + + METHOD_PROP_MESSAGE_OBJECT(m, objTag) /* objTag is the tag of the property's owning object */ + METHOD_PROP_MESSAGE_PROP_NAME(m, prop_name) /* prop_name is the name of the current property */ + printf("\n name : %s\n",prop_name); + + va_copy( &largs, &args ); + va_arg( largs, tag_t ); /* ignore the first tag_t arg */ + value = va_arg( largs, char**); + va_end( largs ); + //ȡĿ + ITKCALL( TCTYPE_ask_object_type( objTag,&iman_type_tag ) ); + ITKCALL( TCTYPE_ask_class_name(iman_type_tag,obj_class_name));//get ClassName of attachment + ITKCALL( TCTYPE_ask_name(iman_type_tag,obj_type_name) ); + printf("\n Type name : %s\n",obj_type_name); + //if ( strcmp( obj_type_name , "Mfg0BvrPart" ) == 0 ) + //{ + // + //} + //if ( strcmp( obj_type_name , "Mfg0BvrPart" ) == 0 ) + if ( strcmp( obj_type_name , "BOMLine" ) == 0 ) + { + printf("\n is BOMLine\n"); + SAFECALL( BOM_line_look_up_attribute( bomAttr_lineItemTag , & attr_bom_item ) ); + SAFECALL( BOM_line_look_up_attribute( bomAttr_lineItemRevTag , & attr_bom_rev ) ); + SAFECALL( BOM_line_look_up_attribute( bomAttr_occQty , & attr_qty_id ) ); + SAFECALL( BOM_line_ask_attribute_tag( objTag, attr_bom_item , &bom_line_item )); + SAFECALL( BOM_line_ask_attribute_tag( objTag, attr_bom_rev , &bom_line_rev )); + SAFECALL( BOM_line_ask_attribute_string( objTag, attr_qty_id, &qty_value )); + SAFECALL( WSOM_ask_object_type(bom_line_item, obj_type )); + printf("\n obj_type=%s",obj_type); + //if( strcmp(obj_type, "Mfg0BvrPart") == 0) + if( strcmp(obj_type, "C7Part") == 0) + { + SAFECALL( GRM_find_relation_type( TC_master_form_rtype, &master_form_rel_type ) ); + SAFECALL( GRM_list_secondary_objects_only(bom_line_rev, master_form_rel_type, &form_count, &form_list )); + master_form = form_list[0]; + if( master_form != NULLTAG ) + { + SAFECALL(AOM_UIF_ask_value(master_form, "c7GeneralClfion", &d_value)); + printf("\n d_value=%s\n",d_value); + TC_write_syslog("\n d_value=%s\n",d_value); + //޸ӱʶ + if( strcmp(d_value, "C") == 0 + || strcmp(d_value, "F") == 0 + || strcmp(d_value, "F1") == 0 + || strcmp(d_value, "F2") == 0 + || strcmp(d_value, "F3") == 0 ) + { + strcpy(sQty,""); + } + else + { + if( strcmp(qty_value,"") == 0) + { + strcpy(sQty,"1"); + } + else + strcpy(sQty,qty_value); + } + MEM_free(d_value); + } + MEM_free(form_list); + } + + } +CLEANUP : + + if( rcode != ITK_ok) + { + if ( 515001 == rcode || err_line == 80 ){ + if ( *value != NULL ) MEM_free( *value ); + *value = NULL; + *value = (char*)MEM_alloc ( 10 + 1 ); + strcpy ( *value, "1" ); + EMH_clear_errors( ); + rcode = ITK_ok; + }else + { + EMH_ask_error_text (rcode, &err_string); + printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); + printf ("Function: %s FILE: %s LINE: %d\n", err_function, __FILE__, err_line); + MEM_free (err_string); + } + TC_write_syslog("\n rcode != ITK_ok"); + }else{ + if ( *value != NULL ) MEM_free( *value ); + *value = NULL ; + *value = (char*)MEM_alloc ( strlen ( sQty ) + 1 ); + strcpy ( *value, sQty ); + TC_write_syslog("\n else sQty=%s",sQty); + } + + return rcode; +} + +int SMP_init_user_bomline_props(METHOD_message_t* m, va_list args) +{ + int rcode = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + tag_t type_tag; + tag_t pd_tag = NULLTAG; + METHOD_id_t method; + char typename_cpp[TCTYPE_name_size_c+1]; + tag_t lov_tag; + tag_t tmp_lov_tag; + + + va_list largs; + va_copy( &largs, &args ); + type_tag = va_arg( largs, tag_t ); + va_end( largs ); + + ITKCALL( TCTYPE_ask_name( type_tag, typename_cpp ) ); + printf("=%s \n",typename_cpp); + + /* ====== add properties for Bomline class types ====== */ + /* ---- add superseded runtime property ---- */ + ITKCALL( TCTYPE_add_runtime_property( type_tag, "jk8ckckckc",PROP_string,1,&pd_tag ) ); + // + ///* --- set display name...can also be done in user_property_names.uil --- */ + ITKCALL( PROPDESC_set_display_name(pd_tag,"jk8ckckckc") ); + + /* --- register method to ask value --- */ + ITKCALL( METHOD_register_prop_method( (const char*)typename_cpp, "jk8ckckckc", PROP_ask_value_string_msg, SMP_ask_bomline_value , 0 , &method ) ); + printf("\n \n"); + /* --- register method to set value --- */ + //SAFECALL( PROPDESC_set_protection( pd_tag, PROP_write ) ); + //SAFECALL( METHOD_register_prop_method( (const char*)typename, "superseded", PROP_set_value_string_msg, SMP_set_bomline_superseded , 0 , &method ) ); + +CLEANUP: + + if( rcode != ITK_ok) + { + EMH_ask_error_text (rcode, &err_string); + printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); + printf ("Function: FILE: %s LINE: %d\n", __FILE__, err_line); + MEM_free (err_string); + } + + return( ITK_ok ); + +} + + +extern int Run_Time_register_properties( void ) +{ + int rcode = ITK_ok; + char *err_string,*err_function; + int err_line = -1; + + USER_prop_init_entry_t user_types_methods[]= { { "BOMLine" , SMP_init_user_bomline_props , NULL } }; + + int n_types = sizeof(user_types_methods)/sizeof(USER_prop_init_entry_t); + printf("n_types=%d \n",n_types); + + SAFECALL( TCTYPE_register_properties(user_types_methods, n_types )); + printf("\n TCTYPE_register_properties\n"); +CLEANUP: + + if( rcode != ITK_ok) + { + EMH_ask_error_text (rcode, &err_string); + printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); + printf ("Function: FILE: %s LINE: %d\n", __FILE__, err_line); + MEM_free (err_string); + } + + return rcode; +} + + + +#ifdef __cplusplus +} +#endif + + + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/** +* @headerfile standard c & cpp header files +*/ +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +/** +* @headerfile user's header files +*/ + + + diff --git a/jf_itk/w2_Clear_Form_PropValue.h b/jf_itk/w2_Clear_Form_PropValue.h new file mode 100644 index 0000000..ec00d9c --- /dev/null +++ b/jf_itk/w2_Clear_Form_PropValue.h @@ -0,0 +1,33 @@ + +#ifndef W2_CLEAR_FORM_PROPVALUE +#define W2_CLEAR_FORM_PROPVALUE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + extern USER_EXT_DLL_API int W2_Revise_clear_form( METHOD_message_t* msg, va_list args ); + + + +#ifdef __cplusplus +} +#endif +#include +#endif \ No newline at end of file diff --git a/jf_itk/x64/Release/CL.read.1.tlog b/jf_itk/x64/Release/CL.read.1.tlog new file mode 100644 index 0000000..7476fd7 Binary files /dev/null and b/jf_itk/x64/Release/CL.read.1.tlog differ diff --git a/jf_itk/x64/Release/CL.write.1.tlog b/jf_itk/x64/Release/CL.write.1.tlog new file mode 100644 index 0000000..9c1a1a4 Binary files /dev/null and b/jf_itk/x64/Release/CL.write.1.tlog differ diff --git a/jf_itk/x64/Release/JK_itk.lastbuildstate b/jf_itk/x64/Release/JK_itk.lastbuildstate new file mode 100644 index 0000000..c6fe5c9 --- /dev/null +++ b/jf_itk/x64/Release/JK_itk.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v110:false +Release|x64|D:\DProjects\金卡\JK_ITK2018.11.29\JK_ITK\| diff --git a/jf_itk/x64/Release/JK_itk.write.1.tlog b/jf_itk/x64/Release/JK_itk.write.1.tlog new file mode 100644 index 0000000..046c872 --- /dev/null +++ b/jf_itk/x64/Release/JK_itk.write.1.tlog @@ -0,0 +1,235 @@ +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +C:\Users\hezhenquan\Documents\Visual Studio 2012\Projects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +^D:\DProjects\金卡\JK_ITK2018.11.29\JK_ITK\jf_itk\jf_itk.vcxproj +D:\DProjects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +D:\DProjects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.lib +D:\DProjects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp +D:\DProjects\金卡\JK_ITK2018.11.29\JK_ITK\x64\Release\JK_itk.exp diff --git a/jf_itk/x64/Release/cl.command.1.tlog b/jf_itk/x64/Release/cl.command.1.tlog new file mode 100644 index 0000000..83127b9 Binary files /dev/null and b/jf_itk/x64/Release/cl.command.1.tlog differ diff --git a/jf_itk/x64/Release/hz_itk.lastbuildstate b/jf_itk/x64/Release/hz_itk.lastbuildstate new file mode 100644 index 0000000..4633199 --- /dev/null +++ b/jf_itk/x64/Release/hz_itk.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v110:false +Release|x64|F:\Connor(项目管理)\宏协\BYPASS\项目ITK\HZ_ITK\| diff --git a/jf_itk/x64/Release/jf_itk.lastbuildstate b/jf_itk/x64/Release/jf_itk.lastbuildstate new file mode 100644 index 0000000..8997680 --- /dev/null +++ b/jf_itk/x64/Release/jf_itk.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Release|x64|F:\Connor(项目管理)\继峰项目\签名\jf_itk\| diff --git a/jf_itk/x64/Release/link-cvtres.read.1.tlog b/jf_itk/x64/Release/link-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link-cvtres.read.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link-cvtres.write.1.tlog b/jf_itk/x64/Release/link-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link-cvtres.write.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link-mt.read.1.tlog b/jf_itk/x64/Release/link-mt.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link-mt.read.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link-mt.write.1.tlog b/jf_itk/x64/Release/link-mt.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link-mt.write.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link-rc.read.1.tlog b/jf_itk/x64/Release/link-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link-rc.read.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link-rc.write.1.tlog b/jf_itk/x64/Release/link-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link-rc.write.1.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link.command.1.tlog b/jf_itk/x64/Release/link.command.1.tlog new file mode 100644 index 0000000..1972765 Binary files /dev/null and b/jf_itk/x64/Release/link.command.1.tlog differ diff --git a/jf_itk/x64/Release/link.read.1.tlog b/jf_itk/x64/Release/link.read.1.tlog new file mode 100644 index 0000000..fd0c3bd Binary files /dev/null and b/jf_itk/x64/Release/link.read.1.tlog differ diff --git a/jf_itk/x64/Release/link.read.2.tlog b/jf_itk/x64/Release/link.read.2.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link.read.2.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link.read.3.tlog b/jf_itk/x64/Release/link.read.3.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link.read.3.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link.read.4.tlog b/jf_itk/x64/Release/link.read.4.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link.read.4.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link.read.5.tlog b/jf_itk/x64/Release/link.read.5.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/jf_itk/x64/Release/link.read.5.tlog @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jf_itk/x64/Release/link.write.1.tlog b/jf_itk/x64/Release/link.write.1.tlog new file mode 100644 index 0000000..5bb093a Binary files /dev/null and b/jf_itk/x64/Release/link.write.1.tlog differ diff --git a/jf_itk/x64/Release/tmom_itk.lastbuildstate b/jf_itk/x64/Release/tmom_itk.lastbuildstate new file mode 100644 index 0000000..0fe1292 --- /dev/null +++ b/jf_itk/x64/Release/tmom_itk.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v100 +Release|x64|F:\Connor(项目管理)\东睦项目\项目ITK\jf_itk\| diff --git a/x64/Release/A4-JFY-210x297.pdf b/x64/Release/A4-JFY-210x297.pdf new file mode 100644 index 0000000..1fa147d Binary files /dev/null and b/x64/Release/A4-JFY-210x297.pdf differ diff --git a/x64/Release/JK_itk.exp b/x64/Release/JK_itk.exp new file mode 100644 index 0000000..4923482 Binary files /dev/null and b/x64/Release/JK_itk.exp differ diff --git a/x64/Release/PDF.zip b/x64/Release/PDF.zip new file mode 100644 index 0000000..6f9076b Binary files /dev/null and b/x64/Release/PDF.zip differ diff --git a/x64/Release/PDF_INSERT.zip b/x64/Release/PDF_INSERT.zip new file mode 100644 index 0000000..93ca73a Binary files /dev/null and b/x64/Release/PDF_INSERT.zip differ diff --git a/x64/Release/hz_itk.exp b/x64/Release/hz_itk.exp new file mode 100644 index 0000000..3b12ef3 Binary files /dev/null and b/x64/Release/hz_itk.exp differ diff --git a/x64/Release/hz_itk.zip b/x64/Release/hz_itk.zip new file mode 100644 index 0000000..25e0b90 Binary files /dev/null and b/x64/Release/hz_itk.zip differ diff --git a/x64/Release/insert_pdf.jar b/x64/Release/insert_pdf.jar new file mode 100644 index 0000000..e140a95 Binary files /dev/null and b/x64/Release/insert_pdf.jar differ diff --git a/x64/Release/jf_erp_check_project.dll.manifest b/x64/Release/jf_erp_check_project.dll.manifest new file mode 100644 index 0000000..11bb704 --- /dev/null +++ b/x64/Release/jf_erp_check_project.dll.manifest @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/x64/Release/jf_itk.exp b/x64/Release/jf_itk.exp new file mode 100644 index 0000000..6135e78 Binary files /dev/null and b/x64/Release/jf_itk.exp differ diff --git a/x64/Release/jfom_img.tif b/x64/Release/jfom_img.tif new file mode 100644 index 0000000..8a60e10 Binary files /dev/null and b/x64/Release/jfom_img.tif differ diff --git a/x64/Release/libjf.zip b/x64/Release/libjf.zip new file mode 100644 index 0000000..09d409b Binary files /dev/null and b/x64/Release/libjf.zip differ diff --git a/x64/Release/test.dvb b/x64/Release/test.dvb new file mode 100644 index 0000000..f64bdff Binary files /dev/null and b/x64/Release/test.dvb differ diff --git a/x64/Release/tmom_itk.exp b/x64/Release/tmom_itk.exp new file mode 100644 index 0000000..12f73b0 Binary files /dev/null and b/x64/Release/tmom_itk.exp differ diff --git a/x64/Release/tmom_itk.zip b/x64/Release/tmom_itk.zip new file mode 100644 index 0000000..8cb1890 Binary files /dev/null and b/x64/Release/tmom_itk.zip differ diff --git a/x64/Release/新建文本文档.txt b/x64/Release/新建文本文档.txt new file mode 100644 index 0000000..e69de29 diff --git a/x64/Release/配置说明.txt b/x64/Release/配置说明.txt new file mode 100644 index 0000000..c36de5f --- /dev/null +++ b/x64/Release/配置说明.txt @@ -0,0 +1,2 @@ + +̵ɽڵjf_insert_img_pdf \ No newline at end of file diff --git a/x64/Release/金卡U8集成handler说明.txt b/x64/Release/金卡U8集成handler说明.txt new file mode 100644 index 0000000..a6034eb --- /dev/null +++ b/x64/Release/金卡U8集成handler说明.txt @@ -0,0 +1,70 @@ +handlerƣJK_send_material +/******************************************************* +* +* Ϸ͵ERP +* handler +* include_type ҪЩ /ֿegItemRevision/JK8MaterialRevision/JK8LSMaterialRevision +* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +* +*******************************************************/ + +Ϸ͵U8ƥ䵥λѡ +/****************************************************** +*:JK_UOM_PLM_U8 +*:Ϸ͵U8ƥ䵥λѡ +*ãվ㣬stringֵ +*ֵ:ȺΪU8λڲֵұΪPLMϵͳеλֵ +* eg01=pcs +* 02=sheet +* 07=roll +*******************************************************/ + + +Ϸ͵U8ǶķID +/****************************************************** +*:JK_U8_QR_BIG_CODE +*:Ϸ͵U8ǶķID +*ãվ㣬stringֵ +*ֵ:prt50051 +* prt50052 +* prt50053 +*******************************************************/ + +Ϸ͵U8Ƕλѡ +/****************************************************** +*:JK_U8_BIG_CODE_TOW +*:Ϸ͵U8Ƕλѡ +*ãվ㣬stringֵ +*ֵ:prt81 +* prt85 +* prt86 +* prt87 +* prt88 +*******************************************************/ + + +BOMṹhandlerƣJK_send_bom +/******************************************************* +* +* BOM͵ERP +* handler +* include_type ҪЩBOM /ֿegBOMView Revision +* debug ǷҪ¼log־Ĭfalse trueҪ/falseҪ egtrue +* +********************************************************/ + + +ʼhandlerƣJK_send_email + +/****************************************************** +* ѡ:JK_SendEmailName_Option +* Ҫ͵ʼĵַ +* ãֵվ㡢string +* ֵ,жַ;:hub@connor.net.cn;duanhj@connor.net.cn;492476861@qq.com +* +* +* JK_SendEmail.jarļŵtcbinĿ¼档 +* +* +* +*******************************************************/ \ No newline at end of file diff --git a/备份/20200401备份/jk_water_summary.cpp b/备份/20200401备份/jk_water_summary.cpp new file mode 100644 index 0000000..15b17de --- /dev/null +++ b/备份/20200401备份/jk_water_summary.cpp @@ -0,0 +1,861 @@ +#include "jk_custom.h" +#include "tc_log.h" +#include +#include "hx_custom.h" + + +typedef struct{ + string jk8ProductType;//Ʒ + string jk8ProjectNO;// Ŀ + string jk8ProjectName;// Ŀ + string jk8ProductModNO;// Ʒͺ + string jk8ProductIdentifyNO;// ʶ + string jk8ProductName;//Ʒ + string jk8BMManufactor;// + string jk8BMMaterial;// + string jk8ContrlCompType;// + string jk8Note;//ע + string jk8Applicant;// + string jk8RecordDate;//Ǽ + string jk8Status;//״̬ + string jk8ProductTypePMN;//Ʒ + string jk8PipeDSpec;//ܾ + string jk8CommunicateMode;//ͨŷʽ + string jk8Structure;//ṹ + string jk8Description;// +}JK_WATER_SUMMARY_STRUCT; +/** +* ûܱ +*/ +void JK_set_water_summary_form_prop(tag_t form_tag,vector bean_vec){ + WriteLog_jk("ʼûܱ\n"); + int i = 0,j=0 ; + int prop_count = 17; + char ** values[17]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_WATER_SUMMARY_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8ProductTypePMN.c_str());//Ʒ + strcpy(values[1][i],bean.jk8ProjectNO.c_str());// Ŀ + strcpy(values[2][i],bean.jk8ProjectName.c_str());// Ŀ + strcpy(values[3][i],bean.jk8ProductModNO.c_str());// Ʒͺ + strcpy(values[4][i],bean.jk8ProductIdentifyNO.c_str());// ʶ 5 + + strcpy(values[5][i],bean.jk8ProductName.c_str());// Ʒ + strcpy(values[6][i],bean.jk8BMManufactor.c_str());// + strcpy(values[7][i],bean.jk8BMMaterial.c_str());// + strcpy(values[8][i],bean.jk8ContrlCompType.c_str());;// + strcpy(values[9][i],bean.jk8Note.c_str());// ע 10 + + strcpy(values[10][i],bean.jk8Applicant.c_str());// + strcpy(values[11][i],bean.jk8RecordDate.c_str());// Ǽ + strcpy(values[12][i],bean.jk8Status.c_str());// ״̬ + //strcpy(values[13][i],bean.jk8ProductTypePMN.c_str());// Ʒ + strcpy(values[13][i],bean.jk8PipeDSpec.c_str());// ܾ + + strcpy(values[14][i],bean.jk8CommunicateMode.c_str());// ͨŷʽ + strcpy(values[15][i],bean.jk8Structure.c_str());// ṹ + strcpy(values[16][i],bean.jk8Description.c_str());// + + } + } + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[0]));//Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[1]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[2]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[3]));// Ʒͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[4]));// ʶ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[5]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManufactor",bean_vec.size(),values[6]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMMaterial",bean_vec.size(),values[7]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8ContrlCompType",bean_vec.size(),values[8]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Note",bean_vec.size(),values[9]));// ע + + ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[10]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[11]));// Ǽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[12]));// ״̬ + //ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[13]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8PipeDSpec",bean_vec.size(),values[13]));// ܾ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[14]));// ͨŷʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Structure",bean_vec.size(),values[15]));// ṹ + ITKCALL(AOM_set_value_strings(form_tag,"jk8FunctionOverview",bean_vec.size(),values[16]));// + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_refresh(form_tag,false)); + ITKCALL(AOM_unlock(form_tag,0)); + WriteLog_jk("ݻܱ,\n"); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + /*for(i = 0 ;i &bean_vec,int * isOk){ + int prop_count = 17; + int count[17],sum_count =0; + char ** form_value[17]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[0],&form_value[0]));//Ʒ + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[1],&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[2],&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[3],&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[4],&form_value[4]));// ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[5],&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManufactor",&count[6],&form_value[6]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMMaterial",&count[7],&form_value[7]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ContrlCompType",&count[8],&form_value[8]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Note",&count[9],&form_value[9]));// ע + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[10],&form_value[10]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[11],&form_value[11]));// Ǽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[12],&form_value[12]));// ״̬ + //ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[13],&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PipeDSpec",&count[13],&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[14],&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Structure",&count[15],&form_value[15]));// ṹ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8FunctionOverview",&count[16],&form_value[16]));// + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + //ȡıԵֵ + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + if(form_value[i][j]!=NULL){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + } + if(form_value[i]!=NULL){ + MEM_free(form_value[i]); + form_value[i] = NULL; + } + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} +/** +* ȡչ +* +*/ +void JK_get_water_form_prop(tag_t form_tag,JK_WATER_SUMMARY_STRUCT &bean,char *form_type){ + char * form_value[16]; + int prop_count = 16; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"< &list_bean ,char *form_type){ + char * form_value[17]; + int prop_count = 17; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"< vec_gjgg; + vector vec_xh; + vector vec_sbh; + Split(form_value[13], ",", vec_gjgg); + Split(form_value[3], ",", vec_xh); + Split(form_value[4], ",", vec_sbh); + if(vec_gjgg.size() == vec_xh.size() && vec_gjgg.size() == vec_sbh.size()){ + for(int i = 0 ;i < vec_gjgg.size();i++){ + bean.jk8ProductModNO.assign(vec_xh[i]); + bean.jk8PipeDSpec.assign(vec_gjgg[i]); + bean.jk8ProductIdentifyNO.assign(vec_sbh[i]); + list_bean.push_back(bean); + } + } + // printf("vec_gjgg.size()=====%d",vec_gjgg.size()); + // printf("first.list_bean.size()=====%d",list_bean.size()); + + //splitܾ񣬴bean + /* vector vec_split; + Split(form_value[13], ",", vec_split); + for(int i = 0 ;i < vec_split.size();i++){ + bean.jk8PipeDSpec.assign(vec_split[i]); + list_bean.push_back(bean); + } */ + }else if(strcmp(form_type , "JK8NWPIdenNOAppForm")==0)//²Ʒʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + cout<<"2-----------"< vec_gjgg; + vector vec_xh; + Split(form_value[13], ",", vec_gjgg); + Split(form_value[3], ",", vec_xh); + if(vec_gjgg.size() == vec_xh.size()){ + for(int i = 0 ;i < vec_gjgg.size();i++){ + bean.jk8ProductModNO.assign(vec_xh[i]); + bean.jk8PipeDSpec.assign(vec_gjgg[i]); + list_bean.push_back(bean); + } + } */ + list_bean.push_back(bean); + + }else if(strcmp(form_type , "JK8WSpecPINOAppForm")==0)//Ҫʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePIN",&form_value[0]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectNO",&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectName",&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductModNO",&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductIdentifyNO",&form_value[4]));// ʶ + + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductName",&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMManufactor",&form_value[6]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMMaterial",&form_value[7]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8ContrlCompType",&form_value[8]));// + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Note",&form_value[9]));// ע(޴) +// ITKCALL(AOM_ask_value_string(form_tag,"jk8Applicant",&form_value[10]));// +// ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[11]));// Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Status",&form_value[12]));// ״̬(޴) + //ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePMN",&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8PipeDSpec",&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_string(form_tag,"jk8CommunicateMode",&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_string(form_tag,"jk8Structure",&form_value[15]));// ṹ + + + form_value[9] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[9],"");// ״̬ ĬΪ + form_value[12] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[12],"");// ״̬ ĬΪ + + bean.jk8ProductTypePMN.assign(form_value[0]); + bean.jk8ProjectNO.assign(form_value[1]); + bean.jk8ProjectName.assign(form_value[2]); + bean.jk8ProductModNO.assign(form_value[3]); + bean.jk8ProductIdentifyNO.assign(form_value[4]); + + bean.jk8ProductName.assign(form_value[5]); + bean.jk8BMManufactor.assign(form_value[6]); + bean.jk8BMMaterial.assign(form_value[7]); + bean.jk8ContrlCompType.assign(form_value[8]); + bean.jk8Note.assign(form_value[9]); + + bean.jk8Applicant.assign(form_value[10]); + bean.jk8RecordDate.assign(form_value[11]); + bean.jk8Status.assign(form_value[12]); + bean.jk8PipeDSpec.assign(form_value[13]); + bean.jk8CommunicateMode.assign(form_value[14]); + + bean.jk8Structure.assign(form_value[15]); + + list_bean.push_back(bean); + + }else if(strcmp(form_type , "JK8DWPIdenNOAppForm")==0)//Ʒʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductType",&form_value[0]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectNO",&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectName",&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductModNO",&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductIdentifyNO",&form_value[4]));// ʶ + + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductName",&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMManufactor",&form_value[6]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMMaterial",&form_value[7]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8ContrlCompType",&form_value[8]));// + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Note",&form_value[9]));// ע(޴) +// ITKCALL(AOM_ask_value_string(form_tag,"jk8Applicant",&form_value[10]));// +// ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[11]));// Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Status",&form_value[12]));// ״̬(޴) + //ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePMN",&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8PipeDSpec",&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_string(form_tag,"jk8CommunicateMode",&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_string(form_tag,"jk8Structure",&form_value[15]));// ṹ + + + form_value[9] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[9],"");// ״̬ ĬΪ + form_value[12] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[12],"");// ״̬ ĬΪ + + bean.jk8ProductTypePMN.assign(form_value[0]); + bean.jk8ProjectNO.assign(form_value[1]); + bean.jk8ProjectName.assign(form_value[2]); + bean.jk8ProductModNO.assign(form_value[3]); + bean.jk8ProductIdentifyNO.assign(form_value[4]); + + bean.jk8ProductName.assign(form_value[5]); + bean.jk8BMManufactor.assign(form_value[6]); + bean.jk8BMMaterial.assign(form_value[7]); + bean.jk8ContrlCompType.assign(form_value[8]); + bean.jk8Note.assign(form_value[9]); + + bean.jk8Applicant.assign(form_value[10]); + bean.jk8RecordDate.assign(form_value[11]); + bean.jk8Status.assign(form_value[12]); + bean.jk8PipeDSpec.assign(form_value[13]); + bean.jk8CommunicateMode.assign(form_value[14]); + + bean.jk8Structure.assign(form_value[15]); + + list_bean.push_back(bean); + + } + + + //ͷԴ + for(int i = 0 ;i tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "%s\\jk_water_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name); + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_WATER_SQB_FORM_PUID",TC_preference_site, pref_vec);//w6UxvPI4YvbLjA + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + logical is_reserved; + POM_AM__set_application_bypass(true); + ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); + if (is_reserved) + { + WriteLog_jk("ܱǩ,ʼǩ\n"); + ITKCALL(RES_checkin(summary_form_tag)); + } + ITKCALL(AOM_lock(summary_form_tag)); + ITKCALL(AOM_refresh(summary_form_tag,false)); + POM_AM__set_application_bypass(false); + JK_get_water_summary_form_prop(summary_form_tag,bean_vec,&isOk); //ܱװ + if(isOk == 0){ + ITKCALL(AOM_unlock(summary_form_tag)); + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + WriteLog_jk("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + printf("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + WriteLog_jk("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + CloseLog_jk(); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8DerPIdenNOAppForm + * ͣJK8SpecPINOAppForm + * ͣJK8NewPIdenNOAppForm + * ͣJK8NPModINOAppForm + * ͣJK8ExtPIdenNOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + WriteLog_jk("ͣ%s \n",type_class); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8DWPIdenNOAppForm") ==0 //Ʒʶ + ||strcmp(type_class,"JK8WSpecPINOAppForm") ==0 //ҪƷʶ + ||strcmp(type_class,"JK8NWPIdenNOAppForm") ==0 //²Ʒʶ + ||strcmp(type_class,"JK8WaterPModAppForm") ==0//²Ʒͺʶ + ) + { + WriteLog_jk("ͷ,ʼִд \n"); + char *name_fo; + ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); + WriteLog_jk("ƣ%s \n",name_fo); + + char *sbhstr,*cpxhstr; + if(strcmp(type_class,"JK8WaterPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// ʶ + + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ʶΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + + } + + /** JK_WATER_SUMMARY_STRUCT bean ; + //ȡű + JK_get_water_form_prop(attachments[i],bean,type_class); + cout<<"5-----------"< list_bean; + JK_get_water_form_propSplit(attachments[i],list_bean,type_class); + // printf("third.list_bean.size===%d\n",list_bean.size()); + cout<<"5-----------"< + +typedef struct{ + string jk8ProductType;//Ʒ + string jk8ProductModNO;// Ʒͺ + string jk8ProductIdentifyNO;// ʶ + string jk8ProductName;// Ʒ + string jk8BaseMeterManufactor;// 5 + string jk8ICCardType;// ICͺ + string jk8CircBoardModNO;// ·ͺ + string jk8ProgramFeatures;// + string jk8InsteadType;// ͺ + string jk8FunctionOverview;// ܸ 10 + string jk8CustSpecRequirements;// ͻҪ + //string jk8U8NO;// U8 ȥ + string jk8Valve;// + string jk8EncryptType;// + string jk8Applicant;// + string jk8RecordDate;// Ǽ + string jk8ApplyMarket;// г + string jk8BMManfMatched;// ׻ + + string jk8ProjectName;//Ŀ + string jk8ProjectNO;//Ŀ 19 + + string jk8Status;// ״̬ //2018.6.4¼4 + string jk8ValveType;// + string jk8CommunicateMode;// ͨŷʽ + string jk8PowerSupplyMode;// 23 + + //2019.07.31 + string jk8GasType;// + string jk8AlaDectRelation;//ⲿֵĹϵ + string jk8UsePlace;//ʹó + string jk8OutputSignal;//ź + string jk8ProFeatNum;//Ʒ + +}JK_SUMMARY_STRUCT; + + +typedef struct{ + string jk8Companylogo;//˾ʶ + string jk8MeasureType;// ʽ + string jk8CommunicateMode;// ͨѶʽ + string jk8Application;// Ӧ÷Χ + string jk8PCBNO;// pcb 5 + string jk8Projectname;//Ŀ +}JK_SUMMARY_PCB_STRUCT; + + +extern "C" int POM_AM__set_application_bypass(logical bypass); +/** +* ȡչ +* +*/ +void JK_get_form_prop(tag_t form_tag,JK_SUMMARY_STRUCT &bean,char *form_type){ + char * form_value[28]; + int prop_count = 28; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[13])) + }else{ + form_value[13] = (char *)MEM_alloc(sizeof(char)*128);// + } + form_value[14] = (char *)MEM_alloc(sizeof(char)*128);//Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[14], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + if(strcmp(form_type , "JK8CotlerPModAppForm")==0){//(Ʒͺ) + + for (int i = 0; i < prop_count; i++) + { + if((i!=4)&&(i!=9)&&1 &bean_vec,int * isOk){ + int prop_count = 28; + int count[28],sum_count =0; + char ** form_value[28]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + WriteLog_jk("ȡܱ%d\n",form_tag); + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductType",&count[0],&form_value[0]));//Ʒ + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[1],&form_value[1]));// Ʒͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[2],&form_value[2]));// ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[3],&form_value[3]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BaseMeterManufactor",&count[4],&form_value[4]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ICCardType",&count[5],&form_value[5]));// ICͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CircBoardModNO",&count[6],&form_value[6]));// ·ͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProgramFeatures",&count[7],&form_value[7]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8InsteadType",&count[8],&form_value[8]));// ͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8FunctionOverview",&count[9],&form_value[9]));// ܸ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CustSpecRequirements",&count[10],&form_value[10]));// ͻҪ + //ITKCALL(AOM_ask_value_string(attachments[i],"jk8U8NO",&form_value));// U8 ȥ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Valve",&count[11],&form_value[11]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8EncryptType",&count[12],&form_value[12]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[13],&form_value[13]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[14],&form_value[14]));// Ǽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ApplyMarket",&count[15],&form_value[15]));// г + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManfMatched",&count[16],&form_value[16]));// ׻ + + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[17],&form_value[17]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[18],&form_value[18]));// Ŀ + + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[19],&form_value[19]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ValveType",&count[20],&form_value[20]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[21],&form_value[21]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PowerSupplyMode",&count[22],&form_value[22]));// Ŀ + //2019.07.31 + ITKCALL(AOM_ask_value_strings(form_tag,"jk8GasType",&count[23],&form_value[23]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8AlaDectRelation",&count[24],&form_value[24]));// ⲿֵĹϵ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8UsePlace",&count[25],&form_value[25]));// ʹó + ITKCALL(AOM_ask_value_strings(form_tag,"jk8OutputSignal",&count[26],&form_value[26]));// ź + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProFeatNum",&count[27],&form_value[27]));// Ʒ + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + WriteLog_jk("ܱԲȷ=>\n"); + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + MEM_free(form_value[i]); + form_value[i] = NULL; + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} + +/** +* ûܱ +*/ +void JK_set_summary_form_prop(tag_t form_tag,vector bean_vec){ + WriteLog_jk("ʼûܱ\n"); + int i = 0,j=0 ; + int prop_count = 28; + char ** values[28]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_SUMMARY_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8ProductType.c_str()); + strcpy(values[1][i],bean.jk8ProductModNO.c_str());// Ʒͺ + strcpy(values[2][i],bean.jk8ProductIdentifyNO.c_str());// ʶ + strcpy(values[3][i],bean.jk8ProductName.c_str());// Ʒ + strcpy(values[4][i],bean.jk8BaseMeterManufactor.c_str());// 5 + strcpy(values[5][i],bean.jk8ICCardType.c_str());// ICͺ + strcpy(values[6][i],bean.jk8CircBoardModNO.c_str());// ·ͺ + strcpy(values[7][i],bean.jk8ProgramFeatures.c_str());// + strcpy(values[8][i],bean.jk8InsteadType.c_str());;// ͺ + strcpy(values[9][i],bean.jk8FunctionOverview.c_str());// ܸ 10 + strcpy(values[10][i],bean.jk8CustSpecRequirements.c_str());// ͻҪ + //bean.jk8U8NO.c_str());// U8 ȥ + strcpy(values[11][i],bean.jk8Valve.c_str());// + strcpy(values[12][i],bean.jk8EncryptType.c_str());// + strcpy(values[13][i],bean.jk8Applicant.c_str());// + strcpy(values[14][i],bean.jk8RecordDate.c_str());// Ǽ + strcpy(values[15][i],bean.jk8ApplyMarket.c_str());// г + strcpy(values[16][i],bean.jk8BMManfMatched.c_str());// ׻ + + strcpy(values[17][i],bean.jk8ProjectName.c_str());// Ŀ + strcpy(values[18][i],bean.jk8ProjectNO.c_str());// Ŀ + + strcpy(values[19][i],bean.jk8Status.c_str());// ״̬ + strcpy(values[20][i],bean.jk8ValveType.c_str());// + strcpy(values[21][i],bean.jk8CommunicateMode.c_str());// ͨŷʽ + strcpy(values[22][i],bean.jk8PowerSupplyMode.c_str());// + + strcpy(values[23][i],bean.jk8GasType.c_str());// + strcpy(values[24][i],bean.jk8UsePlace.c_str());// ʹó + strcpy(values[25][i],bean.jk8AlaDectRelation.c_str());// + strcpy(values[26][i],bean.jk8OutputSignal.c_str());// ź + strcpy(values[27][i],bean.jk8ProFeatNum.c_str());// Ʒ + } + } + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductType",bean_vec.size(),values[0]));//Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[1]));// Ʒͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[2]));// ʶ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[3]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8BaseMeterManufactor",bean_vec.size(),values[4]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8ICCardType",bean_vec.size(),values[5]));// ICͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8CircBoardModNO",bean_vec.size(),values[6]));// ·ͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProgramFeatures",bean_vec.size(),values[7]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8InsteadType",bean_vec.size(),values[8]));// ͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8FunctionOverview",bean_vec.size(),values[9]));// ܸ + ITKCALL(AOM_set_value_strings(form_tag,"jk8CustSpecRequirements",bean_vec.size(),values[10]));// ͻҪ + //ITKCALL(AOM_ask_value_string(attachments[i],"jk8U8NO",&form_value));// U8 ȥ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Valve",bean_vec.size(),values[11]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8EncryptType",bean_vec.size(),values[12]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[13]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[14]));// Ǽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ApplyMarket",bean_vec.size(),values[15]));// г + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManfMatched",bean_vec.size(),values[16]));// ׻ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[17]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[18]));// Ŀ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[19]));// ״̬ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ValveType",bean_vec.size(),values[20]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[21]));// ͨŷʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8PowerSupplyMode",bean_vec.size(),values[22]));// + + //2019.07.31 + ITKCALL(AOM_set_value_strings(form_tag,"jk8GasType",bean_vec.size(),values[23]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8UsePlace",bean_vec.size(),values[24]));// ʹó + ITKCALL(AOM_set_value_strings(form_tag,"jk8AlaDectRelation",bean_vec.size(),values[25]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8OutputSignal",bean_vec.size(),values[26]));// ź + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProFeatNum",bean_vec.size(),values[27]));// Ʒ + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_refresh(form_tag,false)); + ITKCALL(AOM_unlock(form_tag,0)); + WriteLog_jk("ݻܱ,\n"); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + /*for(i = 0 ;i tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "%s\\jk_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name); + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_SQB_FORM_PUID",TC_preference_site, pref_vec); + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + logical is_reserved; + POM_AM__set_application_bypass(true); + ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); + if (is_reserved) + { + WriteLog_jk("ܱǩ,ʼǩ\n"); + ITKCALL(RES_checkin(summary_form_tag)); + } + ITKCALL(AOM_lock(summary_form_tag)); + ITKCALL(AOM_refresh(summary_form_tag,false)); + POM_AM__set_application_bypass(false); + JK_get_summary_form_prop(summary_form_tag,bean_vec,&isOk); + if(isOk == 0){ + ITKCALL(AOM_unlock(summary_form_tag)); + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + WriteLog_jk("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + printf("ѡ[connor_custSummaryFormPUID]\n"); + WriteLog_jk("ѡ[connor_custSummaryFormPUID]\n"); + CloseLog_jk(); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8DerPIdenNOAppForm + * ͣJK8SpecPINOAppForm + * ͣJK8NewPIdenNOAppForm + * ͣJK8NPModINOAppForm + * ͣJK8ExtPIdenNOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + WriteLog_jk("ͣ%s \n",type_class); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8DerPIdenNOAppForm") ==0 //Ʒʶ + ||strcmp(type_class,"JK8SpecPINOAppForm") ==0 //ҪƷʶ + ||strcmp(type_class,"JK8NewPIdenNOAppForm") ==0 //²Ʒʶ + ||strcmp(type_class,"JK8ExtPIdenNOAppForm") ==0 //չƷʶ //2017.12.4 + ||strcmp(type_class,"JK8NPModINOAppForm") ==0//²Ʒͺʶ + ||strcmp(type_class,"JK8CotlerPModAppForm") ==0//Ʒͺ//2018.1.20 + ||strcmp(type_class,"JK8ColPIdenNOAppForm") ==0//ʶ//2018.6.4 + ||strcmp(type_class,"JK8ALPModAppForm") ==0//2019.07.31 Ʒͺ + ) + { + WriteLog_jk("ͷ,ʼִд \n"); + char *name_fo; + ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); + WriteLog_jk("ƣ%s \n",name_fo); + + char *sbhstr,*cpxhstr; + if(strcmp(type_class,"JK8CotlerPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + else if(strcmp(type_class,"JK8ALPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + + else{ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// ʶ + + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ʶΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + } + + JK_SUMMARY_STRUCT bean ; + //ȡű + JK_get_form_prop(attachments[i],bean,type_class); + bean_vec.push_back(bean); + } + + } + + POM_AM__set_application_bypass(true); + JK_set_summary_form_prop(summary_form_tag,bean_vec); + printf("------------ݻܱ2222-----------------"); + POM_AM__set_application_bypass(false); + + if(attachments!=NULL) + { + MEM_free(attachments); + attachments = NULL; + } + WriteLog_jk("------------ݻܱ-----------------"); + CloseLog_jk(); + printf("------------ݻܱ-----------------"); + return decision; +} + + + + + + +/** +* ûܱpcb +*/ +void JK_set_summary_pcb_form_prop(tag_t form_tag,vector bean_vec){ + int i = 0,j=0 ; + int prop_count = 6; + char ** values[6]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_SUMMARY_PCB_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8PCBNO.c_str());//pcb + strcpy(values[1][i],bean.jk8Companylogo.c_str());// ˾ʶ + strcpy(values[2][i],bean.jk8MeasureType.c_str());// ԭ + strcpy(values[3][i],bean.jk8CommunicateMode.c_str());// ͨѶʽ + strcpy(values[4][i],bean.jk8Application.c_str());// Ӧ÷Χ 5 + strcpy(values[5][i],bean.jk8Projectname.c_str()); + } + } + ITKCALL(AOM_lock(form_tag)); + ITKCALL(AOM_set_value_strings(form_tag,"jk8PCBNO",bean_vec.size(),values[0]));//pcb + ITKCALL(AOM_set_value_strings(form_tag,"jk8Companylogo",bean_vec.size(),values[1]));//˾ʶ + ITKCALL(AOM_set_value_strings(form_tag,"jk8MeasureType",bean_vec.size(),values[2]));// ԭ + ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[3]));// ͨѶʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Application",bean_vec.size(),values[4]));// Ӧ÷Χ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Projectname",bean_vec.size(),values[5]));// Ӧ÷Χ + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_unlock(form_tag,0)); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + for(i = 0 ;i &bean_vec,int * isOk){ + int prop_count = 6; + int count[6],sum_count =0; + char ** form_value[6]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PCBNO",&count[0],&form_value[0]));//PCB + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Companylogo",&count[1],&form_value[1]));// ˾ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8MeasureType",&count[2],&form_value[2]));// ԭ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[3],&form_value[3]));// ͨѶʽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Application",&count[4],&form_value[4]));// Ӧ÷Χ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Projectname",&count[5],&form_value[5]));// Ŀ + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + if(form_value[i][j]!=NULL){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + } + if(form_value[i]!=NULL){ + MEM_free(form_value[i]); + form_value[i] = NULL; + } + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} + + +/** +* pcbܱ +*/ +int JK_summary_pcb_form(EPM_rule_message_t msg) +{ + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_PCBReg_uid",TC_preference_site, pref_vec); + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + JK_get_summary_pcb_form_prop(summary_form_tag,bean_vec,&isOk); + if(isOk == 0){ + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + }else{ + printf("ѡ[JK_PCBReg_uid]\n"); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8PCBNOAppForm + * ͣJK8SpecPINOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8PCBNOAppForm") ==0 //PCB + ||strcmp(type_class,"JK8DerPCBNOAppForm") ==0 )//PCB + { + char *sbhstr; + ITKCALL(AOM_ask_value_string(attachments[i],"jk8PCBNO",&sbhstr));// ʶ + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + return EPM_nogo; + } + JK_SUMMARY_PCB_STRUCT bean ; + //ȡű + JK_get_pcb_form_prop(attachments[i],bean,type_class); + bean_vec.push_back(bean); + } + + } + + POM_AM__set_application_bypass(true); + JK_set_summary_pcb_form_prop(summary_form_tag,bean_vec); + printf("------------ݻܱ2222-----------------"); + POM_AM__set_application_bypass(false); + + if(attachments!=NULL) + { + MEM_free(attachments); + attachments = NULL; + } + printf("------------ݻܱ-----------------"); + return decision; +} + + + + + + + + + + + + +/** +* +* ʼ +* +*/ +int JK_send_email(EPM_action_message_t msg){ + int ifail = 0, att_cnt = 0 ,i =0,compare=0; + tag_t task_tag =NULLTAG , rootTask_tag =NULLTAG , *attachments =NULL; + char wuliao[10240] = "\0", * itemName = NULL, * itemID = NULL ,* itemUser = NULL,*jk8SpecModel=NULL,*jk8TechModel=NULL; + //vector emailNameVec ; + printf( "\n ----------俪ʼ---------\n"); + //ȡõķ͵ + //getPrefStrings("JK_SendEmailName_Option",TC_preference_site,emailNameVec); + + //ò-SignName 1;2 + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="", + signcounter_info[1024] = "", *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + char emailName[1024] = ""; + char title[256] = ""; + + + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + POM_AM__set_application_bypass(true); + if (arg_cnt > 0) + { + for (i=0;i0){ + form_tag = formTagS[0]; + printf("--------------------------------------\n"); + } + + } + if(stricmp(title, "") != 0){ + if(item_tag != NULLTAG){ + tag_t owning_user = NULLTAG; + AOM_ask_value_string(item_tag,"item_id",&itemID);//ȡitem_id + AOM_ask_value_string(item_tag,"object_name",&itemName);//ȡ + AOM_ask_value_tag(item_tag,"owning_user",&owning_user);//ȡ + ITKCALL(AOM_ask_value_string(owning_user,"user_name",&itemUser)) + strcat(wuliao,"[:"); + strcat(wuliao,itemID); + strcat(wuliao," :"); + strcat(wuliao,itemName); + strcat(wuliao," :"); + strcat(wuliao,itemUser); + strcat(wuliao,"]"); + //strcat(itemNames,itemName); + if(itemID !=NULL){ + MEM_free(itemID); + itemID =NULL; + } + + if(itemName !=NULL){ + MEM_free(itemName); + itemName =NULL; + } + if(itemUser !=NULL){ + MEM_free(itemUser); + itemUser =NULL; + } + + } + + + + }else{ + if(item_tag != NULLTAG&&form_tag!=NULLTAG){ + tag_t owning_user = NULLTAG; + AOM_ask_value_string(item_tag,"item_id",&itemID);//ȡitem_id + AOM_ask_value_string(item_tag,"object_name",&itemName);//ȡ + AOM_ask_value_tag(item_tag,"owning_user",&owning_user);//ȡ + ITKCALL(AOM_ask_value_string(owning_user,"user_name",&itemUser)) + AOM_ask_value_string(form_tag,"jk8SpecModel",&jk8SpecModel);//ȡĹͺ + AOM_ask_value_string(form_tag,"jk8TechModel",&jk8TechModel);//ȡļͺ + + + //TODO ͨжE-U8ϵǷԡE-8ͷǷʼ + compare=strncmp(itemID,"E-8",3); + if(compare == 0){ + ECHO("ΪE-U8ϲʼ"); + if(itemID !=NULL){ + MEM_free(itemID); + itemID =NULL; + } + + if(itemName !=NULL){ + MEM_free(itemName); + itemName =NULL; + } + if(itemUser !=NULL){ + MEM_free(itemUser); + itemUser =NULL; + } + if(jk8SpecModel !=NULL){ + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + if(jk8TechModel !=NULL){ + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + + continue; + //return 0; + + } + + + strcat(wuliao,"[:"); + strcat(wuliao,itemID); + strcat(wuliao," :"); + strcat(wuliao,itemName); + strcat(wuliao," ͺ:"); + strcat(wuliao,jk8SpecModel); + strcat(wuliao," ͺţ:"); + strcat(wuliao,jk8TechModel); + strcat(wuliao," :"); + strcat(wuliao,itemUser); + strcat(wuliao,"]"); + //strcat(itemNames,itemName); + if(itemID !=NULL){ + MEM_free(itemID); + itemID =NULL; + } + + if(itemName !=NULL){ + MEM_free(itemName); + itemName =NULL; + } + if(itemUser !=NULL){ + MEM_free(itemUser); + itemUser =NULL; + } + if(jk8SpecModel !=NULL){ + MEM_free(jk8SpecModel); + jk8SpecModel =NULL; + } + if(jk8TechModel !=NULL){ + MEM_free(jk8TechModel); + jk8TechModel =NULL; + } + } + } + + + } + strcat(wuliao,"}"); + + + + + + char cmd[20560] = "\0"; + char * tc_root_dir = getenv("tc_root"); + char jar_file[2560] = "\0"; + if(stricmp(title, "") != 0){ + strcpy(jar_file, tc_root_dir); + strcat(jar_file, "\\bin\\"); + strcat(jar_file, "JK_Email.jar"); + + strcpy( cmd, "java -jar " ); + strcat(cmd , " \""); + strcat(cmd ,jar_file); + strcat( cmd, "\" \"" ); + strcat( cmd, title ); + //strcat( cmd, "\" \"" ); + //strcat( cmd, itemNames ); + /*if(emailNameVec.size() > 0){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailNameVec[0].c_str()); + }*/ + //printf( "\n ѡ %s\n",emailNameVec[0].c_str() ); + if(emailName!=NULL){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailName); + } + strcat( cmd, "\" \"" ); + strcat( cmd, wuliao ); + strcat( cmd,"\""); + printf( "\n%s\n",cmd ); + }else{ + strcpy(jar_file, tc_root_dir); + strcat(jar_file, "\\bin\\"); + strcat(jar_file, "JK_SendEmail.jar"); + + strcpy( cmd, "java -jar " ); + strcat(cmd , " \""); + strcat(cmd ,jar_file); + strcat( cmd, "\" \"" ); + strcat( cmd, wuliao ); + //strcat( cmd, "\" \"" ); + //strcat( cmd, itemNames ); + /*if(emailNameVec.size() > 0){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailNameVec[0].c_str()); + }*/ + //printf( "\n ѡ %s\n",emailNameVec[0].c_str() ); + if(emailName!=NULL){ + strcat( cmd, "\" \"" ); + strcat( cmd , emailName); + } + strcat( cmd,"\""); + } + printf( "\n%s\n",cmd ); + system( cmd ); + + + + + if(attachments !=NULL){ + MEM_free(attachments); + attachments = NULL; + } + + return 0; +} + +/** +* +* ʼ +* +*/ +int JK_send_email_2(EPM_action_message_t msg){ + int ifail = 0, att_cnt = 0 ,i =0,compare=0; + tag_t task_tag =NULLTAG , rootTask_tag =NULLTAG ; + char wuliao[10240] = "\0";// * itemName = NULL, * itemID = NULL ,* itemUser = NULL,*jk8SpecModel=NULL,*jk8TechModel=NULL; + //vector emailNameVec ; + printf( "\n ----------俪ʼ---------\n"); + //ȡõķ͵ + //getPrefStrings("JK_SendEmailName_Option",TC_preference_site,emailNameVec); + + //ò-SignName 1;2 + char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="", + signcounter_info[1024] = "", *value = NULL; + char *argflag =NULL,*argvalue=NULL ,*arg = NULL; + BOOL bypass = FALSE; + int arg_cnt = 0; + char emailName[1024] = ""; + char title[256] = ""; + char *my_job_name =NULL,*my_task_name=NULL,*template_name = NULL; + tag_t temp_task_tag =NULLTAG; + + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + POM_AM__set_application_bypass(true); + if (arg_cnt > 0) + { + for (i=0;i revVec,int num){ + tag_t release_status =NULLTAG; + tag_t * attachments = NULL; + int *att_types=NULL; + int ifail = 0; + att_types = (int*) MEM_alloc (sizeof(int) * ( revVec.size() )); + attachments = (tag_t*) MEM_alloc (sizeof(tag_t) * ( revVec.size() )); + //ƶĿ꣬ת + for ( int indx = 0; indx < revVec.size(); indx++ ) + { + att_types[indx] = EPM_target_attachment;//EPM_reference_attachment; + attachments[indx] = revVec[indx]; + } + //еİ汾ӵ + printf("1ifail=>%d\n",ifail); + ITKCALL(ifail=EPM_add_attachments(rootTask,revVec.size(),attachments,att_types)); + printf("2ifail=>%d\n",ifail); + ITKCALL(ifail =CR_create_release_status(statusName.c_str(),&release_status)); + printf("4ifail=>%d\n",ifail); + if(release_status!=NULLTAG){ + POM_AM__set_application_bypass(true); + //жλߵҪɾеĻ״̬ + for(int n=0;n%d\n",ifail); + POM_AM__set_application_bypass(false); + } + if(att_types) + { + MEM_free(att_types); + att_types = NULL; + } + if(attachments) + { + MEM_free(attachments); + attachments = NULL; + } + +} + +void removeRevFromTask1(tag_t rootTask,vector revVec){ + cout<<"enter removeRevFromTask "< target_vec; +// *specification_tags = NULL, +// *attach_tags =NULL; + POM_AM__set_application_bypass(true); + task_tag = msg.task; + ITKCALL(ifail = EPM_ask_root_task(task_tag, &root_task_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments)); + ITKCALL(ifail = AOM_ask_value_tag(root_task_tag,"owning_user",&owning_user)); + ITKCALL(ifail = AOM_ask_value_tag(root_task_tag,"owning_group",&owning_group)); + //ѭĿ + for(i = 0 ;i < att_cnt ;i ++) + { + if(checkIsTypeOrSubtype(attachments[i],"ItemRevision")){ + + + tag_t *xgwj_tags = NULL; + tag_t *release_status = NULL; + + //tag_t xgwj_tag = NULLTAG; + int xgwj_count = 0; + //TODO Ȼȡattachments[i]ͣͣжĸ + char *object_type=NULL; + AOM_ask_value_string(attachments[i],"object_type",&object_type); + cout<<"object_type-------------"<tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec); + } + else + { + sprintf_s(local_path, "%s\\%s-%d-%d-%d-%d-%d-%d.dat", temp_dir,item_id, + 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec); + } + + if((filePtr = fopen(local_path, "wt")) == NULL) + { + printf("Can not create the temp dat file!\n"); + return -1; + } + *file_name = (char *)MEM_alloc(sizeof(char)*512); + strcpy((*file_name), local_path); + + fwrite(file_content, sizeof(char), strlen(file_content), filePtr); + fclose(filePtr); + + return ITK_ok; +} + + +int summary_free_msexcel(tag_t dataset, char *dat_file, char *ext) +{ + tag_t spec_dataset_rev = NULLTAG, + ref_object = NULLTAG; + + AE_reference_type_t reference_type; + + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + + char ref_name[WSO_name_size_c + 1] = "excel"; + AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); + if(reference_type == AE_PART_OF) + { + char pathname[SS_MAXPATHLEN] = ""; + IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); + char origin_file_name[IMF_filename_size_c + 1] = ""; + IMF_ask_original_file_name(ref_object, origin_file_name); + + char new_ds_name[WSO_name_size_c + 1] = ""; + char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char *temp_dir = getenv("temp"); + temp_dir="E:\\TEMP"; + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + + IMF_export_file(ref_object, temp_file); + + + int iCnt; + char *user_lib_env,pTempStr[500]; + char local_path[MAX_PATH] = ""; + /*char cmd[256] = ""; + + strcpy( cmd, "SubstMacros-MSExcel.wsf" ); + strcat( cmd, " \"" ); + strcat( cmd, temp_file ); + strcat( cmd, "\" \"" ); + strcat( cmd, dat_file ); + strcat( cmd, "\"" ); + printf( "\n%s\n",cmd ); + system( cmd ); + */ + summary_fee(temp_file,dat_file); + + //strcpy(user_lib_env, local_path); + + + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); + IMF_set_original_file_name(new_file_tag, origin_file_name); + IMF_close_file(file_descriptor); + AOM_save(new_file_tag); + AOM_unlock(new_file_tag); + + AOM_lock(spec_dataset_rev); + //CALL(AOM_load (dataset)); + //CALL(AOM_load(spec_dataset_rev)); + AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); + AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); + AOM_save(spec_dataset_rev); + AOM_unlock(spec_dataset_rev); + } + return ITK_ok; +} + + +/** +* Ϣ +* +* +* +*/ +int JK_matereial_summary_fee(EPM_action_message_t msg){ + int ifail =0, + att_cnt = 0, + excelCnt = 0; + tag_t task_tag = NULLTAG, + root_task_tag = NULLTAG, + * attachments =NULL, + * excelTags =NULL; + char *dataset_type = NULL; + task_tag = msg.task; + POM_AM__set_application_bypass(true); + ITKCALL(ifail = EPM_ask_root_task(task_tag, &root_task_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments)); + + for(int i = 0;i < att_cnt;i++){ + tag_t taskTag = attachments[i]; + if(checkIsTypeOrSubtype(taskTag,"JK8BOMCostEstmRevision")){ + ITKCALL(ifail = AOM_ask_value_tags(taskTag,"IMAN_specification",&excelCnt,&excelTags)); + + for(int j = 0 ;j < excelCnt;j++){ + AOM_ask_value_string(excelTags[j],"object_type",&dataset_type); + char *data_file = NULL; + create_summary_fee_file("","û־", &data_file); + if( data_file == NULL ) + { + continue; + } + ECHO("\n ıļ%s",data_file); + + + if(strcmp(dataset_type, "MSExcel") ==0 ) + { + summary_free_msexcel(excelTags[j],data_file,"xls"); + } + else if(strcmp(dataset_type, "MSExcelX") ==0) + { + summary_free_msexcel(excelTags[j],data_file,"xlsx"); + } + + if(dataset_type!=NULL){ + MEM_free(dataset_type); + dataset_type = NULL; + } + } + + if(excelTags!=NULL) + { + MEM_free(excelTags); + excelTags =NULL; + } + } + + } + if(attachments!= NULL){ + MEM_free(attachments); + attachments = NULL; + } + + POM_AM__set_application_bypass(false); + return 0; +} + + + +/******************************************************* +* +* ȡTOP BomlineԵ +* +********************************************************/ +void JK_get_bomline_props(tag_t top_line_tag,char errs[10240]) +{ + int ifail = 0 , + i = 0, + status_count = 0 , + c_line_count = 0 , + rev_form_cnt = 0 , + isra_cou=0, + isra_cou_form=0; + tag_t rev_tag =NULLTAG, + item_tag = NULLTAG, + bom_window_tag = NULLTAG, + *c_line_tags = NULL, + *rev_form_tags = NULL, + *isra_tags = NULL, + *isra_tags_form = NULL; + + char item_id[ITEM_id_size_c + 1] = "\0", + rev_id[ITEM_id_size_c + 1] = "\0", + *user_name = NULL, + *jk8_mjshl = NULL, + create_date_str[32] = "\0", + person_name[SA_person_name_size_c + 1] = "\0"; + + //ΪȨ޿ƵԵʣҪڴ˴· + POM_AM__set_application_bypass(true); + + printf("1111"); + ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//ȡBOMLINEİ汾 + ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag)); + ITKCALL(ITEM_ask_id(item_tag,item_id));//ϱ + + printf("жǷ񷢲%s\n",item_id); + ITKCALL(AOM_ask_value_tags(rev_tag,"release_status_list",&isra_cou,&isra_tags));//жǷ񷢲 + if(isra_cou==0){ + printf("%sδ\n",item_id); + strcat(errs,"["); + strcat(errs,item_id); + strcat(errs,"]"); + }else{ + ITKCALL(ITEM_ask_rev_id(rev_tag,rev_id));//ȡ汾 + + //ITKCALL(AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&rev_form_cnt,&rev_form_tags)); //жϱ + //if(rev_form_cnt>0){ + // ITKCALL(AOM_ask_value_tags(rev_form_tags[0],"release_status_list",&isra_cou_form,&isra_tags_form));//жϱǷ񷢲 + // if(isra_cou_form==0){ + // printf("%sδ\n",item_id); + // strcat(errs,"["); + // strcat(errs,item_id); + // strcat(errs,"]"); + // } + // if(isra_tags_form!=NULL){ + // MEM_free(isra_tags_form); + // isra_tags_form =NULL; + // } + //} + //if(rev_form_tags!=NULL){ + // MEM_free(rev_form_tags); + // rev_form_tags =NULL; + //} + } + ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + if(c_line_count == 0){ + printf("ûBOMṹ"); + POM_AM__set_application_bypass(false); + return; + } + + for (int i = 0; i < c_line_count; i++) + { + cout<<"2----"< errMap; + + vector type_vec; + + + //ȡhandlerĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + ECHO("Ϊ%d\n",arg_cnt); + if (arg_cnt > 0) + { + for (i=0;i(key_id,HANDLER_ARGUMENT_ERROR)); + } + } + } + MEM_free(argflag); + MEM_free(argvalue); + } + + //ȡĿ + task_tag = msg.task; + if(task_tag == NULLTAG) + { + + return EPM_nogo; + } + EPM_ask_root_task(task_tag, &root_task_tag); + EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments); + for(i = 0 ;i < att_cnt;i++){ + char errs[1024]="\0"; + tag_t target_tag = attachments[i]; + //ȡ PSBOMViewRevision + ITKCALL( WSOM_ask_object_type(target_tag, type_class)); + ECHO("%s\n",type_class); + string type_str ; + type_str.assign(type_class); + vector::iterator it; + it = find(type_vec.begin(),type_vec.end(),type_str); + if(it == type_vec.end()){ + ECHO("Ͳinclude_type \n"); + continue; + } + POM_AM__set_application_bypass(true); + ITKCALL(BOM_create_window(&bom_window_tag));//windowͼ + ITKCALL(BOM_set_window_top_line_bvr(bom_window_tag,target_tag,&top_line_tag));//ȡbomline + ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags)); + ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//ȡBOMLINEİ汾 + ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag)); + ITKCALL(ITEM_ask_id(item_tag,item_id));//ϱ + if(c_line_count == 0){ + printf("ûBOMṹ\n"); + }else{ + printf("BOMṹ %d\n",c_line_count); + for (int t = 0; t < c_line_count; t++) + { + printf("ʼ%s\n",item_id); + POM_AM__set_application_bypass(true); + cout<<"1----"< +#include "hx_custom.h" + + +typedef struct{ + string jk8ProductType;//Ʒ + string jk8ProjectNO;// Ŀ + string jk8ProjectName;// Ŀ + string jk8ProductModNO;// Ʒͺ + string jk8ProductIdentifyNO;// ʶ + string jk8ProductName;//Ʒ + string jk8BMManufactor;// + string jk8BMMaterial;// + string jk8ContrlCompType;// + string jk8Note;//ע + string jk8Applicant;// + string jk8RecordDate;//Ǽ + string jk8Status;//״̬ + string jk8ProductTypePMN;//Ʒ + string jk8PipeDSpec;//ܾ + // string jk8CommunicateMode; ͨŷʽ + string jk8Feature;// + string jk8Texture;// + string jk8Structure;//ṹ + string jk8Description;// +}JK_WATER_SUMMARY_STRUCT; +/** +* ûܱ +*/ +void JK_set_water_summary_form_prop(tag_t form_tag,vector bean_vec){ + WriteLog_jk("ʼûܱ\n"); + int i = 0,j=0 ; + int prop_count = 18; + char ** values[18]; + if(bean_vec.size() > 0){ + for(i = 0 ;i < prop_count;i++){ + values[i] =(char**) MEM_alloc(sizeof(char*)*bean_vec.size()); + for(j =0;j < bean_vec.size();j++){ + values[i][j] = (char *) MEM_alloc(sizeof(char)*256); + } + } + for(i = 0 ;i < bean_vec.size();i++){ + JK_WATER_SUMMARY_STRUCT bean = bean_vec[i]; + strcpy(values[0][i],bean.jk8ProductTypePMN.c_str());//Ʒ + strcpy(values[1][i],bean.jk8ProjectNO.c_str());// Ŀ + strcpy(values[2][i],bean.jk8ProjectName.c_str());// Ŀ + strcpy(values[3][i],bean.jk8ProductModNO.c_str());// Ʒͺ + strcpy(values[4][i],bean.jk8ProductIdentifyNO.c_str());// ʶ 5 + + strcpy(values[5][i],bean.jk8ProductName.c_str());// Ʒ + strcpy(values[6][i],bean.jk8BMManufactor.c_str());// + strcpy(values[7][i],bean.jk8BMMaterial.c_str());// + strcpy(values[8][i],bean.jk8ContrlCompType.c_str());;// + strcpy(values[9][i],bean.jk8Note.c_str());// ע 10 + + strcpy(values[10][i],bean.jk8Applicant.c_str());// + strcpy(values[11][i],bean.jk8RecordDate.c_str());// Ǽ + strcpy(values[12][i],bean.jk8Status.c_str());// ״̬ + //strcpy(values[13][i],bean.jk8ProductTypePMN.c_str());// Ʒ + strcpy(values[13][i],bean.jk8PipeDSpec.c_str());// ܾ + + //strcpy(values[14][i],bean.jk8CommunicateMode.c_str());// ͨŷʽ + strcpy(values[14][i],bean.jk8Feature.c_str());// + strcpy(values[15][i],bean.jk8Texture.c_str());// + strcpy(values[16][i],bean.jk8Structure.c_str());// ṹ + strcpy(values[17][i],bean.jk8Description.c_str());// + + } + } + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[0]));//Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectNO",bean_vec.size(),values[1]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProjectName",bean_vec.size(),values[2]));// Ŀ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductModNO",bean_vec.size(),values[3]));// Ʒͺ + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductIdentifyNO",bean_vec.size(),values[4]));// ʶ + + ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductName",bean_vec.size(),values[5]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMManufactor",bean_vec.size(),values[6]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8BMMaterial",bean_vec.size(),values[7]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8ContrlCompType",bean_vec.size(),values[8]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Note",bean_vec.size(),values[9]));// ע + + ITKCALL(AOM_set_value_strings(form_tag,"jk8Applicant",bean_vec.size(),values[10]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8RecordDate",bean_vec.size(),values[11]));// Ǽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Status",bean_vec.size(),values[12]));// ״̬ + //ITKCALL(AOM_set_value_strings(form_tag,"jk8ProductTypePMN",bean_vec.size(),values[13]));// Ʒ + ITKCALL(AOM_set_value_strings(form_tag,"jk8PipeDSpec",bean_vec.size(),values[13]));// ܾ + + //ITKCALL(AOM_set_value_strings(form_tag,"jk8CommunicateMode",bean_vec.size(),values[14]));// ͨŷʽ + ITKCALL(AOM_set_value_strings(form_tag,"jk8Feature",bean_vec.size(),values[14]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Texture",bean_vec.size(),values[15]));// + ITKCALL(AOM_set_value_strings(form_tag,"jk8Structure",bean_vec.size(),values[16]));// ṹ + ITKCALL(AOM_set_value_strings(form_tag,"jk8FunctionOverview",bean_vec.size(),values[17]));// + + ITKCALL(AOM_save(form_tag)); + ITKCALL(AOM_refresh(form_tag,false)); + ITKCALL(AOM_unlock(form_tag,0)); + WriteLog_jk("ݻܱ,\n"); + printf("------------ݻܱ0000-----------------"); + + //ͷԴ + /*for(i = 0 ;i &bean_vec,int * isOk){ + int prop_count = 18; + int count[18],sum_count =0; + char ** form_value[18]; + //POM_AM__set_application_bypass(true); + *isOk = 1; + printf("ȡܱ%d\n",form_tag); + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[0],&form_value[0]));//Ʒ + sum_count = count[0]; + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectNO",&count[1],&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProjectName",&count[2],&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductModNO",&count[3],&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductIdentifyNO",&count[4],&form_value[4]));// ʶ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductName",&count[5],&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMManufactor",&count[6],&form_value[6]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8BMMaterial",&count[7],&form_value[7]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8ContrlCompType",&count[8],&form_value[8]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Note",&count[9],&form_value[9]));// ע + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Applicant",&count[10],&form_value[10]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8RecordDate",&count[11],&form_value[11]));// Ǽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Status",&count[12],&form_value[12]));// ״̬ + //ITKCALL(AOM_ask_value_strings(form_tag,"jk8ProductTypePMN",&count[13],&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8PipeDSpec",&count[13],&form_value[13]));// ܾ + // ITKCALL(AOM_ask_value_strings(form_tag,"jk8CommunicateMode",&count[14],&form_value[14]));ͨŷʽ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Feature",&count[14],&form_value[14]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Texture",&count[14],&form_value[15]));// + ITKCALL(AOM_ask_value_strings(form_tag,"jk8Structure",&count[15],&form_value[16]));// ṹ + ITKCALL(AOM_ask_value_strings(form_tag,"jk8FunctionOverview",&count[16],&form_value[17]));// + for(int i = 0 ;i < (prop_count-1);i++){ + if(count[i] !=count[i+1]){ + *isOk = 0; + printf("Բȷ=>\n"); + } + } + printf("222222222222222222=>\n"); + if( *isOk ==1){ + printf("3333333333333333=>\n"); + for(int i = 0 ;i \n"); + //ȡıԵֵ + for(int i = 0 ;i < prop_count; i++){ + for(int j = 0;j < count[i];j++){ + if(form_value[i][j]!=NULL){ + MEM_free(form_value[i][j]); + form_value[i][j] =NULL; + } + } + if(form_value[i]!=NULL){ + MEM_free(form_value[i]); + form_value[i] = NULL; + } + } + //POM_AM__set_application_bypass(false); + printf("555555555555=>\n"); + +} +/** +* ȡչ +* +*/ +void JK_get_water_form_prop(tag_t form_tag,JK_WATER_SUMMARY_STRUCT &bean,char *form_type){ + char * form_value[16]; + int prop_count = 16; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"< &list_bean ,char *form_type){ + char * form_value[18]; + int prop_count = 18; + WriteLog_jk("ʼȡű \n"); + tag_t user_tag =NULLTAG; + ITKCALL(AOM_ask_value_tag(form_tag,"owning_user",&user_tag)); + if(user_tag!=NULLTAG) + { + ITKCALL(AOM_ask_value_string(user_tag,"user_name",&form_value[10]))//TODO + }else{ + form_value[10] = (char *)MEM_alloc(sizeof(char)*128); + } + form_value[11] = (char *)MEM_alloc(sizeof(char)*128);//TODO Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[14]));// Ǽ + time_t now; + struct tm *p; + time(&now); + p = localtime(&now); + sprintf(form_value[11], "%d%d%d", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ); + cout<<"1-----------"< vec_gjgg; + vector vec_xh; + vector vec_sbh; + Split(form_value[13], ",", vec_gjgg); + Split(form_value[3], ",", vec_xh); + Split(form_value[4], ",", vec_sbh); + if(vec_gjgg.size() == vec_xh.size() && vec_gjgg.size() == vec_sbh.size()){ + for(int i = 0 ;i < vec_gjgg.size();i++){ + bean.jk8ProductModNO.assign(vec_xh[i]); + bean.jk8PipeDSpec.assign(vec_gjgg[i]); + bean.jk8ProductIdentifyNO.assign(vec_sbh[i]); + list_bean.push_back(bean); + } + } + // printf("vec_gjgg.size()=====%d",vec_gjgg.size()); + // printf("first.list_bean.size()=====%d",list_bean.size()); + + //splitܾ񣬴bean + /* vector vec_split; + Split(form_value[13], ",", vec_split); + for(int i = 0 ;i < vec_split.size();i++){ + bean.jk8PipeDSpec.assign(vec_split[i]); + list_bean.push_back(bean); + } */ + }else if(strcmp(form_type , "JK8NWPIdenNOAppForm")==0)//²Ʒʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + cout<<"2-----------"< vec_gjgg; + vector vec_xh; + Split(form_value[13], ",", vec_gjgg); + Split(form_value[3], ",", vec_xh); + if(vec_gjgg.size() == vec_xh.size()){ + for(int i = 0 ;i < vec_gjgg.size();i++){ + bean.jk8ProductModNO.assign(vec_xh[i]); + bean.jk8PipeDSpec.assign(vec_gjgg[i]); + list_bean.push_back(bean); + } + } */ + list_bean.push_back(bean); + + }else if(strcmp(form_type , "JK8WSpecPINOAppForm")==0)//Ҫʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePIN",&form_value[0]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectNO",&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectName",&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductModNO",&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductIdentifyNO",&form_value[4]));// ʶ + + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductName",&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMManufactor",&form_value[6]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMMaterial",&form_value[7]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8ContrlCompType",&form_value[8]));// + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Note",&form_value[9]));// ע(޴) +// ITKCALL(AOM_ask_value_string(form_tag,"jk8Applicant",&form_value[10]));// +// ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[11]));// Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Status",&form_value[12]));// ״̬(޴) + //ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePMN",&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8PipeDSpec",&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_string(form_tag,"jk8CommunicateMode",&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_string(form_tag,"jk8Structure",&form_value[15]));// ṹ + + + form_value[9] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[9],"");// ״̬ ĬΪ + form_value[12] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[12],"");// ״̬ ĬΪ + + bean.jk8ProductTypePMN.assign(form_value[0]); + bean.jk8ProjectNO.assign(form_value[1]); + bean.jk8ProjectName.assign(form_value[2]); + bean.jk8ProductModNO.assign(form_value[3]); + bean.jk8ProductIdentifyNO.assign(form_value[4]); + + bean.jk8ProductName.assign(form_value[5]); + bean.jk8BMManufactor.assign(form_value[6]); + bean.jk8BMMaterial.assign(form_value[7]); + bean.jk8ContrlCompType.assign(form_value[8]); + bean.jk8Note.assign(form_value[9]); + + bean.jk8Applicant.assign(form_value[10]); + bean.jk8RecordDate.assign(form_value[11]); + bean.jk8Status.assign(form_value[12]); + bean.jk8PipeDSpec.assign(form_value[13]); + // bean.jk8CommunicateMode.assign(form_value[14]); + bean.jk8Feature.assign(form_value[14]); + bean.jk8Texture.assign(form_value[15]); + bean.jk8Structure.assign(form_value[16]); + bean.jk8Description.assign(form_value[17]); + + list_bean.push_back(bean); + + }else if(strcmp(form_type , "JK8DWPIdenNOAppForm")==0)//Ʒʶ + { + //ʼbean + JK_WATER_SUMMARY_STRUCT bean ; + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductType",&form_value[0]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectNO",&form_value[1]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProjectName",&form_value[2]));// Ŀ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductModNO",&form_value[3]));// Ʒͺ + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductIdentifyNO",&form_value[4]));// ʶ + + ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductName",&form_value[5]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMManufactor",&form_value[6]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8BMMaterial",&form_value[7]));// + ITKCALL(AOM_ask_value_string(form_tag,"jk8ContrlCompType",&form_value[8]));// + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Note",&form_value[9]));// ע(޴) +// ITKCALL(AOM_ask_value_string(form_tag,"jk8Applicant",&form_value[10]));// +// ITKCALL(AOM_ask_value_string(form_tag,"jk8RecordDate",&form_value[11]));// Ǽ + //ITKCALL(AOM_ask_value_string(form_tag,"jk8Status",&form_value[12]));// ״̬(޴) + //ITKCALL(AOM_ask_value_string(form_tag,"jk8ProductTypePMN",&form_value[13]));// Ʒ + ITKCALL(AOM_ask_value_string(form_tag,"jk8PipeDSpec",&form_value[13]));// ܾ + ITKCALL(AOM_ask_value_string(form_tag,"jk8CommunicateMode",&form_value[14]));// ͨŷʽ + ITKCALL(AOM_ask_value_string(form_tag,"jk8Structure",&form_value[15]));// ṹ + + + form_value[9] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[9],"");// ״̬ ĬΪ + form_value[12] = (char *)MEM_alloc(sizeof(char)*128); + strcpy(form_value[12],"");// ״̬ ĬΪ + + bean.jk8ProductTypePMN.assign(form_value[0]); + bean.jk8ProjectNO.assign(form_value[1]); + bean.jk8ProjectName.assign(form_value[2]); + bean.jk8ProductModNO.assign(form_value[3]); + bean.jk8ProductIdentifyNO.assign(form_value[4]); + + bean.jk8ProductName.assign(form_value[5]); + bean.jk8BMManufactor.assign(form_value[6]); + bean.jk8BMMaterial.assign(form_value[7]); + bean.jk8ContrlCompType.assign(form_value[8]); + bean.jk8Note.assign(form_value[9]); + + bean.jk8Applicant.assign(form_value[10]); + bean.jk8RecordDate.assign(form_value[11]); + bean.jk8Status.assign(form_value[12]); + bean.jk8PipeDSpec.assign(form_value[13]); + // bean.jk8CommunicateMode.assign(form_value[14]); + bean.jk8Feature.assign(form_value[14]); + bean.jk8Texture.assign(form_value[15]); + bean.jk8Structure.assign(form_value[16]); + bean.jk8Description.assign(form_value[17]); + + list_bean.push_back(bean); + + } + + + //ͷԴ + for(int i = 0 ;i tm_year,p->tm_mon+1 ,p->tm_mday); + //sprintf(endDate,"%04d-%d-%02d 23:59", 1900+p->tm_year,p->tm_mon+1 ,p->tm_mday); + sprintf(tc_log_file_name, "%s\\jk_water_hzb_log_[%d-%d-%d-%d-%02d].txt",getenv("TEMP"),1900+p->tm_year,p->tm_mon+1 ,p->tm_mday,p->tm_hour,p->tm_min ); + printf("tc_log_file_name=%s\n",tc_log_file_name); + CreateLogFile_jk(tc_log_file_name); + + EPM_decision_t decision = EPM_go; + int ifail = ITK_ok,arg_cnt = 0,i = 0,att_cnt = 0; + tag_t task_tag = NULLTAG ,rootTask_tag = NULLTAG, *attachments =NULL,summary_form_tag = NULLTAG; + char *arg = NULL,*argflag = NULL, *argvalue = NULL,type_class[WSO_object_type_size_c+1] ="\0",*form_value = NULL; + vector bean_vec; + //ȡܱPUID + vector pref_vec; + getPrefStrings("JK_WATER_SQB_FORM_PUID",TC_preference_site, pref_vec);//w6UxvPI4YvbLjA + if(pref_vec.size() > 0){ + ITK__convert_uid_to_tag(pref_vec[0].c_str(),&summary_form_tag); + if(summary_form_tag == NULLTAG){ + WriteLog_jk("PUID[%s]תɶ\n",pref_vec[0].c_str()); + CloseLog_jk(); + printf("PUID[%s]תɶ\n",pref_vec[0].c_str()); + return EPM_nogo; + } + printf("ҵ˻ܱ\n"); + int isOk = 1; + logical is_reserved; + POM_AM__set_application_bypass(true); + ITKCALL(RES_is_checked_out(summary_form_tag,&is_reserved)); + if (is_reserved) + { + WriteLog_jk("ܱǩ,ʼǩ\n"); + ITKCALL(RES_checkin(summary_form_tag)); + } + ITKCALL(AOM_lock(summary_form_tag)); + ITKCALL(AOM_refresh(summary_form_tag,false)); + POM_AM__set_application_bypass(false); + JK_get_water_summary_form_prop(summary_form_tag,bean_vec,&isOk); //ܱװ + if(isOk == 0){ + ITKCALL(AOM_unlock(summary_form_tag)); + printf("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + WriteLog_jk("PUID[%s]Բȷ\n",pref_vec[0].c_str()); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + printf("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + WriteLog_jk("ѡ[JK_WATER_SQB_FORM_PUID]\n"); + CloseLog_jk(); + return EPM_nogo; + } + + //ȡǰ + task_tag = msg.task; + //ȡ̽ڵ + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + //ȡĿö + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + //ѭĿ + for(i = 0;i < att_cnt ; i++){ + //ȡ + /********************************************** + * ͣJK8DerPIdenNOAppForm + * ͣJK8SpecPINOAppForm + * ͣJK8NewPIdenNOAppForm + * ͣJK8NPModINOAppForm + * ͣJK8ExtPIdenNOAppForm + **********************************************/ + ITKCALL( WSOM_ask_object_type(attachments[i], type_class)); + WriteLog_jk("ͣ%s \n",type_class); + printf("ͣ%s \n",type_class); + if(strcmp(type_class,"JK8DWPIdenNOAppForm") ==0 //Ʒʶ + ||strcmp(type_class,"JK8WSpecPINOAppForm") ==0 //ҪƷʶ + ||strcmp(type_class,"JK8NWPIdenNOAppForm") ==0 //²Ʒʶ + ||strcmp(type_class,"JK8WaterPModAppForm") ==0//²Ʒͺʶ + ) + { + WriteLog_jk("ͷ,ʼִд \n"); + char *name_fo; + ITKCALL(AOM_ask_value_string(attachments[i],"object_name",&name_fo)); + WriteLog_jk("ƣ%s \n",name_fo); + + char *sbhstr,*cpxhstr; + if(strcmp(type_class,"JK8WaterPModAppForm") ==0){ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductModNO",&cpxhstr));// Ʒͺ + if(strcmp(cpxhstr,"") ==0){ + printf("ƷͺΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ƷͺΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + }else{ + ITKCALL(AOM_ask_value_string(attachments[i],"jk8ProductIdentifyNO",&sbhstr));// ʶ + + if(strcmp(sbhstr,"") ==0){ + printf("ʶΪ,޷\n"); + ITKCALL(AOM_unlock(summary_form_tag)); + WriteLog_jk("ʶΪ,޷\n"); + CloseLog_jk(); + return EPM_nogo; + } + + } + + /** JK_WATER_SUMMARY_STRUCT bean ; + //ȡű + JK_get_water_form_prop(attachments[i],bean,type_class); + cout<<"5-----------"< list_bean; + JK_get_water_form_propSplit(attachments[i],list_bean,type_class); + // printf("third.list_bean.size===%d\n",list_bean.size()); + cout<<"5-----------"<