parent
eebeccd241
commit
854559113f
@ -0,0 +1,11 @@
|
|||||||
|
// HEZON_ITK.cpp : 定义控制台应用程序的入口点。
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
|
||||||
|
int _tmain(int argc, _TCHAR* argv[])
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="源文件">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="头文件">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="资源文件">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="common">
|
||||||
|
<UniqueIdentifier>{d25e0aa0-8791-4277-b392-abc3943f925c}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="epm-handler">
|
||||||
|
<UniqueIdentifier>{f8d4fa90-4363-4e0f-8f44-a2e02a224ad9}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="userservice">
|
||||||
|
<UniqueIdentifier>{5f8496b0-ad7e-4c6c-b832-59575601b9f1}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="bmf">
|
||||||
|
<UniqueIdentifier>{aa5fbb6b-b5ee-4f80-8b16-de99d912a542}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="ReadMe.txt" />
|
||||||
|
<None Include="..\..\..\..\..\..\Program Files\Common Files\System\ado\msado15.dll" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="epm_register_handler.cxx">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="bs_custom_main.cxx">
|
||||||
|
<Filter>common</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="bs_bypass.cpp">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="kl_erp_bom.cpp">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="kl_erp_save.cpp">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="kl_erp_update.cpp">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="util.cpp">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="test.cpp">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="epm_register_handler.h">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="epm_handler_common.h">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="util.h">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="test.h">
|
||||||
|
<Filter>epm-handler</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
@ -0,0 +1,44 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2003-2005 UGS Corporation
|
||||||
|
Unpublished - All Rights Reserved
|
||||||
|
|
||||||
|
File :qtmc_by_pass.cpp
|
||||||
|
Module : user_exits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
============================================================================================================
|
||||||
|
DATE Name Description of Change
|
||||||
|
30_OTC_2014 mengyawei creation
|
||||||
|
$HISTORY$
|
||||||
|
|
||||||
|
============================================================================================================*/
|
||||||
|
|
||||||
|
#include <tc/tc.h>
|
||||||
|
#include "epm_handler_common.h"
|
||||||
|
|
||||||
|
#include <ict/ict_userservice.h>
|
||||||
|
#include <tccore/custom.h>
|
||||||
|
#include <epm/epm_toolkit_tc_utils.h>
|
||||||
|
#include <tccore/aom.h>
|
||||||
|
#include <tccore/aom_prop.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
extern "C" int POM_AM__set_application_bypass(logical bypass);
|
||||||
|
|
||||||
|
int bs_bypass(void *retValType)
|
||||||
|
{
|
||||||
|
int ifail = ITK_ok;
|
||||||
|
|
||||||
|
logical bypass=true;
|
||||||
|
USERARG_get_logical_argument(&bypass);
|
||||||
|
POM_AM__set_application_bypass( bypass );
|
||||||
|
|
||||||
|
return ifail;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,68 @@
|
|||||||
|
/**
|
||||||
|
* @defgroup common 公用函数
|
||||||
|
* @defgroup workflow 流程函数
|
||||||
|
* @defgroup bmf 业务扩展
|
||||||
|
* @defgroup service 服务函数
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup common
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @brief 注册主函数
|
||||||
|
* @date 2014/4/21
|
||||||
|
* @author mengyawei
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma warning (disable: 4819)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @headerfile tcua 头文件
|
||||||
|
*/
|
||||||
|
#include <tc/tc.h>
|
||||||
|
#include <tccore/custom.h>
|
||||||
|
#include <server_exits/user_server_exits.h>
|
||||||
|
#include "epm_register_handler.h"
|
||||||
|
#include "epm_handler_common.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn extern "C" DLLAPI int liborigin_register_callbacks
|
||||||
|
* @return usually return ITK_ok
|
||||||
|
* @brief liborigin customization entry
|
||||||
|
*/
|
||||||
|
DLLAPI int bs_register_callbacks()
|
||||||
|
{
|
||||||
|
int ifail = ITK_ok;
|
||||||
|
ifail = CUSTOM_register_exit(
|
||||||
|
"bs",
|
||||||
|
"USERSERVICE_register_methods",
|
||||||
|
(CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods) ;
|
||||||
|
|
||||||
|
|
||||||
|
ifail = CUSTOM_register_exit(
|
||||||
|
"bs",
|
||||||
|
"USER_gs_shell_init_module",
|
||||||
|
(CUSTOM_EXIT_ftn_t)CUST_init_module);
|
||||||
|
|
||||||
|
return ifail;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
@ -0,0 +1,273 @@
|
|||||||
|
/**
|
||||||
|
* @file common_itk_util.cpp
|
||||||
|
* @brief itk warpper utility function
|
||||||
|
* @author James
|
||||||
|
* @history
|
||||||
|
* ===================================================================================
|
||||||
|
* Date Name Description of Change
|
||||||
|
* 18-July-2008 James
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma warning (disable: 4996)
|
||||||
|
#pragma warning (disable: 4819)
|
||||||
|
|
||||||
|
#include <epm/epm.h>
|
||||||
|
#include <epm/epm_toolkit_tc_utils.h>
|
||||||
|
#include <ict/ict_userservice.h>
|
||||||
|
#include <tccore/item.h>
|
||||||
|
#include <ae/ae.h>
|
||||||
|
#include <tc/folder.h>
|
||||||
|
#include <tccore/aom.h>
|
||||||
|
#include <sa/sa.h>
|
||||||
|
#include <tccore/aom_prop.h>
|
||||||
|
#include <property/prop_errors.h>
|
||||||
|
#include <tccore/workspaceobject.h>
|
||||||
|
#include <tc/preferences.h>
|
||||||
|
#include <tccore/imantype.h>
|
||||||
|
#include <tccore//grm.h>
|
||||||
|
#include <tccore/grmtype.h>
|
||||||
|
#include <sa/am.h>
|
||||||
|
#include <cfm/cfm.h>
|
||||||
|
#include <bom/bom.h>
|
||||||
|
#include <tccore/uom.h>
|
||||||
|
#include <ps/ps.h>
|
||||||
|
#include <epm/signoff.h>
|
||||||
|
#include <fclasses/tc_date.h>
|
||||||
|
//#include <tccore/imantype.h>
|
||||||
|
//#include <textsrv/textserver.h>
|
||||||
|
//#include <user_exits/epm_toolkit_utils.h>
|
||||||
|
//#include <ss/ss_errors.h>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
//#include <io.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
//#include <direct.h>
|
||||||
|
//#include <unistd.h>
|
||||||
|
#include "error_handling.h"
|
||||||
|
#include "common_itk_util.h"
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <io.h>
|
||||||
|
#include <direct.h>
|
||||||
|
#else
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define ARGS_LENGTH 200
|
||||||
|
#define ARGS_NAME_DEBUG "-debug"
|
||||||
|
#define DEBUG "-debug="
|
||||||
|
#define MAX_PRINTLINE_LENGTH 2000
|
||||||
|
#define MAX_PATH_LENGTH 2000
|
||||||
|
#define MAX_ARGUMENT_LENGTH 400
|
||||||
|
#define MAX_PARAMNAME_LENGTH 50
|
||||||
|
#define MAX_FILE_EXT_LENGTH 10
|
||||||
|
#define TRUE_FLAG 1
|
||||||
|
#define FALSE_FLAG 0
|
||||||
|
#define DETAILLOG 1
|
||||||
|
|
||||||
|
|
||||||
|
FILE* logFile = NULL;
|
||||||
|
|
||||||
|
void set_bypass(logical bypass)
|
||||||
|
{
|
||||||
|
AM__set_application_bypass(bypass);
|
||||||
|
}
|
||||||
|
/*=============================================================================*
|
||||||
|
* FUNCTION: current_time
|
||||||
|
* PURPOSE : get the current datetime
|
||||||
|
* INPUT:
|
||||||
|
* date_t* date_tag // current date time tag
|
||||||
|
*
|
||||||
|
* RETURN:
|
||||||
|
* void
|
||||||
|
*============================================================================*/
|
||||||
|
void current_time( date_t * date_tag )
|
||||||
|
{
|
||||||
|
time_t ltime;
|
||||||
|
struct tm *today ;
|
||||||
|
|
||||||
|
// Set time zone from TZ environment variable. If TZ is not set,
|
||||||
|
// the operating system is queried to obtain the default value
|
||||||
|
// for the variable.
|
||||||
|
//
|
||||||
|
//_tzset();
|
||||||
|
|
||||||
|
// Get UNIX-style time and display as number and string.
|
||||||
|
time( <ime );
|
||||||
|
|
||||||
|
today = localtime( <ime );
|
||||||
|
date_tag->year = today->tm_year + 1900 ;
|
||||||
|
date_tag->month = today->tm_mon ;
|
||||||
|
date_tag->day = today->tm_mday ;
|
||||||
|
date_tag->hour = today->tm_hour ;
|
||||||
|
date_tag->minute = today->tm_min ;
|
||||||
|
date_tag->second = today->tm_sec ;
|
||||||
|
}
|
||||||
|
/*=============================================================================*
|
||||||
|
* FUNCTION: CreateLogFile
|
||||||
|
* PURPOSE : create log file
|
||||||
|
* INPUT:
|
||||||
|
* char* FunctionName // the funtion which need to create log file
|
||||||
|
* FILE** logFile // out: the log file pointer
|
||||||
|
*
|
||||||
|
* RETURN:
|
||||||
|
* void
|
||||||
|
*============================================================================*/
|
||||||
|
void CreateLogFile(char* FunctionName, char **fullname)
|
||||||
|
{
|
||||||
|
int i=0, ifail = ITK_ok;
|
||||||
|
//date_t status_now;
|
||||||
|
//char* date_string = NULL;
|
||||||
|
char date_string[MAX_PATH_LENGTH];
|
||||||
|
char logFileDir[MAX_PATH_LENGTH];
|
||||||
|
char logFileName[MAX_PATH_LENGTH];
|
||||||
|
|
||||||
|
char* session_uid = NULL;
|
||||||
|
tag_t session_tag = NULLTAG;
|
||||||
|
time_t now;
|
||||||
|
struct tm *p;
|
||||||
|
|
||||||
|
time(&now);
|
||||||
|
|
||||||
|
logFile = NULL;
|
||||||
|
//current_time(&status_now);
|
||||||
|
p=localtime(&now);
|
||||||
|
|
||||||
|
memset(date_string, 0, sizeof(date_string));
|
||||||
|
sprintf(date_string,"%4d%02d%02d%02d%02d%02d",1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ,p->tm_hour,p->tm_min ,p->tm_sec );
|
||||||
|
//if( DATE_date_to_string( status_now, "%Y%m%d%H%M%S", &date_string) != ITK_ok )
|
||||||
|
//ifail = ITK_date_to_string (status_now, &date_string );
|
||||||
|
//if (ifail)
|
||||||
|
//{
|
||||||
|
// printf("!*ERROR*!: Failed to get current date time\n");
|
||||||
|
// goto CLEANUP;
|
||||||
|
//}
|
||||||
|
|
||||||
|
memset(logFileDir, 0, sizeof(logFileDir));
|
||||||
|
memset(logFileName, 0, sizeof(logFileName));
|
||||||
|
//get log dir
|
||||||
|
sprintf(logFileDir, "%s", getenv("TEMP"));
|
||||||
|
printf("\n log file dir: %s\n", logFileDir);
|
||||||
|
//try to change dir to TC_USER_LOG_DIR
|
||||||
|
if(chdir(logFileDir)!=ITK_ok)
|
||||||
|
{
|
||||||
|
//not set TC_USER_LOG_DIR
|
||||||
|
//log in to default TC_LOG
|
||||||
|
memset(logFileDir, 0, sizeof(logFileDir));
|
||||||
|
sprintf(logFileDir, "%s", getenv("TC_LOG"));
|
||||||
|
printf("\n TC_USER_LOG_DIR invalide, log file dir: %s\n", logFileDir);
|
||||||
|
if(chdir(logFileDir)!=ITK_ok)
|
||||||
|
{
|
||||||
|
//still can not change to log dir
|
||||||
|
printf("!*ERROR*!: Failed to change dir to TC_USER_LOG_DIR\n");
|
||||||
|
goto CLEANUP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//get session_uid to make sure the log file name unique
|
||||||
|
POM_ask_session(&session_tag);
|
||||||
|
ITK__convert_tag_to_uid(session_tag, &session_uid);
|
||||||
|
|
||||||
|
|
||||||
|
//get logFileName
|
||||||
|
sprintf(logFileName, "%s_%s_%s.log", FunctionName, session_uid, date_string);
|
||||||
|
printf("log file name: %s\n", logFileName);
|
||||||
|
|
||||||
|
*fullname = (char *)MEM_alloc(sizeof(char)*512);
|
||||||
|
sprintf(*fullname,"%s\\%s",logFileDir,logFileName);
|
||||||
|
|
||||||
|
//for(i = 0; _access((char *)logFileName, 4) == 0; i++)
|
||||||
|
/*{
|
||||||
|
memset(logFileName, 0, sizeof(logFileName));
|
||||||
|
sprintf(logFileName, "%s_%s_%s_%d.log", FunctionName, session_uid, date_string, i);
|
||||||
|
}
|
||||||
|
printf("final log file name: %s\n", logFileName);*/
|
||||||
|
|
||||||
|
//create log file
|
||||||
|
logFile = fopen(logFileName, "w");
|
||||||
|
|
||||||
|
CLEANUP:
|
||||||
|
//DOFREE(date_string);
|
||||||
|
DOFREE(session_uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*=============================================================================*
|
||||||
|
* FUNCTION: WriteLog
|
||||||
|
* PURPOSE : write log, if debug log File not null, write log message to log File
|
||||||
|
* INPUT:
|
||||||
|
* const char* format // debug message string
|
||||||
|
*
|
||||||
|
* RETURN:
|
||||||
|
* void
|
||||||
|
*============================================================================*/
|
||||||
|
void WriteLog(const char* format, ...)
|
||||||
|
{
|
||||||
|
va_list arg;
|
||||||
|
char tmp[MAX_PRINTLINE_LENGTH];
|
||||||
|
|
||||||
|
if(logFile)
|
||||||
|
{
|
||||||
|
//get the message
|
||||||
|
memset(tmp, 0, sizeof(tmp));
|
||||||
|
va_start(arg, format);
|
||||||
|
vsprintf(tmp, format, arg);
|
||||||
|
va_end(arg);
|
||||||
|
|
||||||
|
//----------print to command window for trace--------//
|
||||||
|
printf("%s\n", tmp);
|
||||||
|
|
||||||
|
//print message to log file
|
||||||
|
fprintf(logFile, "%s\n", tmp);
|
||||||
|
fflush(logFile);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("*!Error!*: Log File Not Exist\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CloseLog(void)
|
||||||
|
{
|
||||||
|
if(logFile)
|
||||||
|
{
|
||||||
|
fclose(logFile);
|
||||||
|
logFile = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//void getTypeinfo(char *type)
|
||||||
|
//{
|
||||||
|
// int ulen = 0,i=0,tempcount=0,asd=0;
|
||||||
|
//
|
||||||
|
// char temp[128]="";
|
||||||
|
// ulen = strlen(type);
|
||||||
|
// asd = ulen-1;
|
||||||
|
// for(i=0;i < ulen;i++)
|
||||||
|
// {
|
||||||
|
// if(type[i] == ';')
|
||||||
|
// {
|
||||||
|
// temp[tempcount] = '\0';
|
||||||
|
// strcpy(excludetypes[typecount].type,temp);
|
||||||
|
// strcpy(temp,"");
|
||||||
|
// tempcount = 0;
|
||||||
|
// typecount = typecount + 1;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
//
|
||||||
|
// temp[tempcount] = type[i];
|
||||||
|
// tempcount = tempcount + 1;
|
||||||
|
// if(i==asd)
|
||||||
|
// {
|
||||||
|
// temp[tempcount] = '\0';
|
||||||
|
// strcpy(excludetypes[typecount].type,temp);
|
||||||
|
// typecount = typecount + 1;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//}
|
@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* @file common_itk_util.h
|
||||||
|
* @brief itk warpper utility function
|
||||||
|
* @author James
|
||||||
|
* @history
|
||||||
|
* ===================================================================================
|
||||||
|
* Date Name Description of Change
|
||||||
|
* 09-July-2008 James
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef COMMON_ITK_UTIL
|
||||||
|
#define COMMON_ITK_UTIL
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void CreateLogFile(char* FunctionName, char **fullname);
|
||||||
|
void WriteLog(const char* format, ...);
|
||||||
|
void CloseLog(void);
|
||||||
|
void set_bypass(logical bypass);
|
||||||
|
//int FindDatasetReferenceExt( tag_t datasettype, const char *datasettype_ref, char ext[10] );
|
||||||
|
//int CompareDate( date_t date1, date_t date2 );
|
||||||
|
//int GetRandomTempFile( char tempFile[256] );
|
||||||
|
//logical IsItemRevisionType( char object_type[WSO_name_size_c + 1] );
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
* @addtogroup handler
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file epm_handler_common.h
|
||||||
|
* @brief handler functions declation
|
||||||
|
* @date 2011/4/12
|
||||||
|
* @author Ray
|
||||||
|
* @history
|
||||||
|
* ===================================================================================
|
||||||
|
* Date Name Description
|
||||||
|
* 12-Apr-2011 Ray created
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef EPM_HANDLER_COMMON
|
||||||
|
#define EPM_HANDLER_COMMON
|
||||||
|
|
||||||
|
#include <epm/epm.h>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
#define TC_specification "IMAN_specification"
|
||||||
|
//#define NX_3W_DATASET_TYPE "UGMASTER"
|
||||||
|
//#define NX_2W_DATASET_TYPE "UGPART"
|
||||||
|
//#define DATASET_REF_TYPE "UGPART"
|
||||||
|
|
||||||
|
|
||||||
|
////将流程信息签入版本属性上去
|
||||||
|
//int qtmc_sign_ir(EPM_action_message_t msg);
|
||||||
|
|
||||||
|
int kl_erp_save(EPM_action_message_t msg);
|
||||||
|
int kl_erp_update(EPM_action_message_t msg);
|
||||||
|
int kl_erp_bom(EPM_action_message_t msg);
|
||||||
|
int sap(EPM_action_message_t msg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//user service end
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
@ -0,0 +1,36 @@
|
|||||||
|
|
||||||
|
/*=================================================================================
|
||||||
|
* @file epm_register_handler.h
|
||||||
|
* @brief itk user exits function declation, to register custom handlers
|
||||||
|
* @date 2009/2/13
|
||||||
|
* @author Ray Li
|
||||||
|
* @history
|
||||||
|
* ===================================================================================
|
||||||
|
* Date Name Description
|
||||||
|
* 13-Feb-2009 Ray created
|
||||||
|
*===================================================================================*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef EPM_REGISTER_HANDLER_CUSTOM
|
||||||
|
#define EPM_REGISTER_HANDLER_CUSTOM
|
||||||
|
|
||||||
|
#include <epm/epm.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern DLLAPI int CUST_init_module(int *, va_list);
|
||||||
|
extern DLLAPI int USERSERVICE_custom_register_methods();
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
@ -0,0 +1,46 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2003-2005 UGS Corporation
|
||||||
|
Unpublished - All Rights Reserved
|
||||||
|
|
||||||
|
File :qtmc_by_pass.cpp
|
||||||
|
Module : user_exits
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
============================================================================================================
|
||||||
|
DATE Name Description of Change
|
||||||
|
30_OTC_2014 mengyawei creation
|
||||||
|
$HISTORY$
|
||||||
|
|
||||||
|
============================================================================================================*/
|
||||||
|
|
||||||
|
#include <tc/tc.h>
|
||||||
|
#include "epm_handler_common.h"
|
||||||
|
|
||||||
|
#include <ict/ict_userservice.h>
|
||||||
|
#include <tccore/custom.h>
|
||||||
|
#include <epm/epm_toolkit_tc_utils.h>
|
||||||
|
#include <tccore/aom.h>
|
||||||
|
#include <tccore/aom_prop.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
extern "C" int POM_AM__set_application_bypass(logical bypass);
|
||||||
|
|
||||||
|
int qtmc_by_pass(void *retValType)
|
||||||
|
{
|
||||||
|
int ifail = ITK_ok;
|
||||||
|
|
||||||
|
logical bypass = FALSE;
|
||||||
|
|
||||||
|
USERARG_get_logical_argument( &bypass );
|
||||||
|
|
||||||
|
POM_AM__set_application_bypass( bypass );
|
||||||
|
|
||||||
|
return ifail;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
@ -0,0 +1,468 @@
|
|||||||
|
#include "util.h"
|
||||||
|
string getTime2()
|
||||||
|
{
|
||||||
|
stringstream ss;
|
||||||
|
time_t t = time(0);
|
||||||
|
tm* local = localtime(&t);
|
||||||
|
ss << local->tm_year + 1900 << '/';
|
||||||
|
ss << local->tm_mon + 1 << '/';
|
||||||
|
ss << local->tm_mday << ' ';
|
||||||
|
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* newGUID()
|
||||||
|
{
|
||||||
|
static char buf[64] = { 0 };
|
||||||
|
GUID guid;
|
||||||
|
if (S_OK == ::CoCreateGuid(&guid))
|
||||||
|
{
|
||||||
|
_snprintf(buf, sizeof(buf)
|
||||||
|
, "%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X"
|
||||||
|
, guid.Data1
|
||||||
|
, guid.Data2
|
||||||
|
, guid.Data3
|
||||||
|
, guid.Data4[0], guid.Data4[1]
|
||||||
|
, guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5]
|
||||||
|
, guid.Data4[6], guid.Data4[7]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return (const char*)buf;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int send_erp(tag_t top_line,int type,string &now,char **pref_vals, Testclass ^class1, System::String ^save_url, System::String ^check_url, vector<map<string,string>> &configs,map<string,map<string,map<string,string>>> &zl_map, System::String ^key,string creation_date)
|
||||||
|
{
|
||||||
|
printf("send_erp\n");
|
||||||
|
int line_cnt,rel_cnt;
|
||||||
|
tag_t rev, *lines,form,relation_type,*rels;
|
||||||
|
|
||||||
|
AOM_ask_value_tag(top_line, "bl_line_object", &rev);
|
||||||
|
GRM_find_relation_type(IMAN_master_form_rtype, &relation_type);
|
||||||
|
GRM_list_secondary_objects_only(rev, relation_type, &rel_cnt, &rels);
|
||||||
|
form = rels[0];
|
||||||
|
|
||||||
|
BOM_line_ask_child_lines(top_line, &line_cnt, &lines);
|
||||||
|
string item_id = get_val(top_line, "bl_item_item_id");
|
||||||
|
string rev_id = get_val(top_line, "bl_rev_item_revision_id");
|
||||||
|
string tc = get_val(top_line, "KL3_tc");
|
||||||
|
Document doc;
|
||||||
|
Document doc2;
|
||||||
|
doc2.SetObject();
|
||||||
|
doc.SetObject();
|
||||||
|
Document::AllocatorType &al = doc.GetAllocator();
|
||||||
|
Document::AllocatorType &al2 = doc2.GetAllocator();
|
||||||
|
|
||||||
|
Value data(kObjectType);
|
||||||
|
Value data2(kObjectType);
|
||||||
|
Value data_page1(kArrayType);
|
||||||
|
Value page1(kObjectType);
|
||||||
|
Value data_page2(kArrayType);
|
||||||
|
Value parent_val(kObjectType);
|
||||||
|
Value empty(kObjectType);
|
||||||
|
empty.AddMember("FNumber", "", al);
|
||||||
|
empty.AddMember("FName", "", al);
|
||||||
|
parent_val.AddMember("FNumber", "KL", al);
|
||||||
|
parent_val.AddMember("FName", "BOM", al);
|
||||||
|
string bill_no=item_id + rev_id;
|
||||||
|
page1.AddMember("FParentID", parent_val, al);
|
||||||
|
data2.AddMember("FBillNo", Value().SetString(bill_no.c_str(), al2), al2);
|
||||||
|
page1.AddMember("FBOMNumber", Value().SetString(bill_no.c_str(), al), al);
|
||||||
|
page1.AddMember("FVersion", Value().SetString(rev_id.c_str(), al), al);
|
||||||
|
page1.AddMember("FPercentErpClsID", Value().SetString(get_val(form, "kl3_item_wlsx"), al), al);
|
||||||
|
page1.AddMember("FAudDate", Value().SetString(now.c_str(), al), al);
|
||||||
|
page1.AddMember("FCheckDate", Value().SetString(creation_date.c_str(), al), al);
|
||||||
|
page1.AddMember("FEntertime", Value().SetString(now.c_str(), al), al);
|
||||||
|
Value manager(kObjectType);
|
||||||
|
manager.AddMember("FName", Value().SetString(pref_vals[4], al), al);
|
||||||
|
manager.AddMember("FNumber", Value().SetString(pref_vals[5], al), al);
|
||||||
|
page1.AddMember("FCheckerID", manager, al);
|
||||||
|
Value manager2(kObjectType);
|
||||||
|
manager2.AddMember("FName", Value().SetString(pref_vals[6], al), al);
|
||||||
|
manager2.AddMember("FNumber", Value().SetString(pref_vals[7], al), al);
|
||||||
|
page1.AddMember("FCheckID", manager2, al);
|
||||||
|
|
||||||
|
page1.AddMember("FStatus", 1, al);
|
||||||
|
Value status_val(kObjectType);
|
||||||
|
status_val.AddMember("FNumber", "ZT02", al);
|
||||||
|
status_val.AddMember("FName", "未使用", al);
|
||||||
|
|
||||||
|
page1.AddMember("FBOMUseStatus", status_val, al);
|
||||||
|
Value percent_id_val(kObjectType);
|
||||||
|
percent_id_val.AddMember("FNumber", Value().SetString(item_id.c_str(), al), al);
|
||||||
|
percent_id_val.AddMember("FName", Value().SetString(get_val(top_line, "bl_item_object_name"), al), al);
|
||||||
|
page1.AddMember("FPercentItemID", percent_id_val, al);
|
||||||
|
page1.AddMember("FNote",Value().SetString(get_val(form,"kl3_item_ylxx"),al),al);
|
||||||
|
|
||||||
|
page1.AddMember("FPercentItemName", Value().SetString(get_val(top_line, "bl_item_object_name"), al), al);
|
||||||
|
string jldwz = get_val(form, "kl3_jldwz");
|
||||||
|
int jldw_index = jldwz.find('/');
|
||||||
|
jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz;
|
||||||
|
|
||||||
|
if (zl_map.find(jldwz)!=zl_map.end())
|
||||||
|
{
|
||||||
|
Value jldw_val(kObjectType);
|
||||||
|
string temp_val = get_val(form, "kl3_item_scjldw");
|
||||||
|
jldw_val.AddMember("FName", Value().SetString(temp_val.c_str(), al), al);
|
||||||
|
jldw_val.AddMember("FNumber", Value().SetString(zl_map[jldwz][temp_val]["id"].c_str(), al), al);
|
||||||
|
page1.AddMember("FPercentUnitID", jldw_val, al);
|
||||||
|
|
||||||
|
//page1.AddMember("FPercentUnitID", get_jldw(get_val(form, "kl3_item_scjldw"), al, jldw_val), al);
|
||||||
|
}
|
||||||
|
page1.AddMember("FPercentItemModel", Value().SetString(get_val(form, "kl3_item_ggxh"), al), al);
|
||||||
|
string gylx = get_val(top_line, "bl_ItemRevision Master_kl3_item_gylxmc");
|
||||||
|
page1.AddMember("FRoutingName", Value().SetString(gylx.c_str(), al), al);
|
||||||
|
Value routing_val(kObjectType);
|
||||||
|
routing_val.AddMember("FName", Value().SetString(gylx.c_str(), al), al);
|
||||||
|
routing_val.AddMember("FNumber", Value().SetString(configs[2][gylx].c_str(), al), al);
|
||||||
|
|
||||||
|
//routing_val.AddMember("FNumber", (*configs[6])[gylx.c_str()].IsNull()?Value().SetString("",al): (*configs[6])[gylx.c_str()], al);
|
||||||
|
page1.AddMember("FRoutingID", routing_val, al);
|
||||||
|
|
||||||
|
Value skip_val(kObjectType);
|
||||||
|
if(item_id[0] == 'B' || item_id[0] == 'C')
|
||||||
|
{
|
||||||
|
skip_val.AddMember("FNumber", "N", al);
|
||||||
|
skip_val.AddMember("FName", "否", al);
|
||||||
|
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
skip_val.AddMember("FNumber", "Y", al);
|
||||||
|
skip_val.AddMember("FName", "是", al);
|
||||||
|
}
|
||||||
|
page1.AddMember("FBOMSkip", skip_val, al);
|
||||||
|
page1.AddMember("FPercentQty", "1", al);
|
||||||
|
page1.AddMember("FAuxQty", "1", al);
|
||||||
|
page1.AddMember("FPercentAuxPropID", empty, al);
|
||||||
|
page1.AddMember("FNote", "", al);
|
||||||
|
page1.AddMember("FYield", 100, al);
|
||||||
|
page1.AddMember("FIsCharSourceItem", "否", al);
|
||||||
|
page1.AddMember("FTranType", 50, al);
|
||||||
|
page1.AddMember("FInterID", 6297, al);
|
||||||
|
page1.AddMember("FMultiCheckStatus", 2, al);
|
||||||
|
|
||||||
|
|
||||||
|
data_page1.PushBack(page1,al);
|
||||||
|
printf("end page1\n");
|
||||||
|
for (auto j = 0; j<line_cnt; j++)
|
||||||
|
{
|
||||||
|
|
||||||
|
Value page2(kObjectType);
|
||||||
|
|
||||||
|
page2.AddMember("FEntryID", j + 1, al);
|
||||||
|
AOM_ask_value_tag(lines[j], "bl_line_object", &rev);
|
||||||
|
GRM_list_secondary_objects_only(rev, relation_type, &rel_cnt, &rels);
|
||||||
|
form = rels[0];
|
||||||
|
string item_id2 = get_val(lines[j], "bl_item_item_id");
|
||||||
|
Value item_id_val(kObjectType);
|
||||||
|
item_id_val.AddMember("FNumber", Value().SetString(item_id2.c_str(), al), al);
|
||||||
|
item_id_val.AddMember("FName", Value().SetString(get_val(lines[j], "bl_item_object_name"), al), al);
|
||||||
|
page2.AddMember("FItemID", item_id_val, al);
|
||||||
|
page2.AddMember("FItemName", Value().SetString(get_val(lines[j], "bl_item_object_name"), al), al);
|
||||||
|
Value material_val(kObjectType);
|
||||||
|
material_val.AddMember("FNumber", "COM", al);
|
||||||
|
material_val.AddMember("FName", "普通件", al);
|
||||||
|
page2.AddMember("FMaterielType", material_val, al);
|
||||||
|
|
||||||
|
string gx = get_val(lines[j], "KL3_gx");
|
||||||
|
|
||||||
|
Value oper_val(kObjectType);
|
||||||
|
// oper_val.AddMember("FNumber", "ZJ", al);
|
||||||
|
// oper_val.AddMember("FName", "注塑制造部终检工序", al);
|
||||||
|
oper_val.AddMember("FNumber", Value().SetString(configs[3][gx].c_str(), al), al);
|
||||||
|
|
||||||
|
// oper_val.AddMember("FNumber", (*configs[7])[gx.c_str()], al);
|
||||||
|
oper_val.AddMember("FName", Value().SetString(gx.c_str(), al), al);
|
||||||
|
|
||||||
|
page2.AddMember("FOperID", oper_val, al);
|
||||||
|
page2.AddMember("FOperSN", 10, al);
|
||||||
|
|
||||||
|
page2.AddMember("FAuxQtyScrap", Value().SetString(get_val(lines[j], "KL3_yl"), al), al);
|
||||||
|
Value stock_val(kObjectType);
|
||||||
|
string stock = get_val(lines[j], "KL3_flck");
|
||||||
|
printf("stock:%s\n", stock.c_str());
|
||||||
|
|
||||||
|
if(stock=="注塑车间现场仓"||stock=="zscjxcc")
|
||||||
|
{
|
||||||
|
stock_val.AddMember("FNumber", "38", al);
|
||||||
|
stock_val.AddMember("FName", "注塑车间现场仓", al);
|
||||||
|
}else if (stock == "胶条车间现场仓" || stock == "jtcjxcc")
|
||||||
|
{
|
||||||
|
stock_val.AddMember("FNumber", "39", al);
|
||||||
|
stock_val.AddMember("FName", "胶条车间现场仓", al);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
stock_val.AddMember("FNumber", "", al);
|
||||||
|
stock_val.AddMember("FName", "", al);
|
||||||
|
|
||||||
|
}
|
||||||
|
// stock_val.AddMember("FNumber", (*configs[1])[stock.c_str()], al);
|
||||||
|
// stock_val.AddMember("FName", Value().SetString(stock.c_str(), al), al);
|
||||||
|
|
||||||
|
page2.AddMember("FStockID", stock_val, al);
|
||||||
|
|
||||||
|
page2.AddMember("FUseStatus", "使用", al);
|
||||||
|
page2.AddMember("FBeginDay", "1900-1-1", al);
|
||||||
|
page2.AddMember("FEndDay", "2100-1-1", al);
|
||||||
|
page2.AddMember("FItemModel", Value().SetString(get_val(lines[j], "kl3_item_ggxh"), al), al);
|
||||||
|
page2.AddMember("FErpClsID", Value().SetString(get_val(form, "kl3_item_wlsx"), al), al);
|
||||||
|
|
||||||
|
//page2.AddMember("FErpClsID", get_wlsx(get_val(rev, "kl3_item_wlsx"), al,* configs[5]), al);
|
||||||
|
jldwz = get_val(form, "kl3_jldwz");
|
||||||
|
jldw_index = jldwz.find('/');
|
||||||
|
jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz;
|
||||||
|
printf("jldw:%s\n", jldwz.c_str());
|
||||||
|
if (zl_map.find(jldwz)!=zl_map.end())
|
||||||
|
{
|
||||||
|
printf("find\n");
|
||||||
|
string sc_val = get_val(form, "kl3_item_scjldw");
|
||||||
|
string jb_val= get_val(form, "kl3_jbjldw");
|
||||||
|
page2.AddMember("FBaseUnit", Value().SetString(jb_val.c_str(),al), al);
|
||||||
|
Value jldw_val(kObjectType);
|
||||||
|
jldw_val.AddMember("FName", Value().SetString(sc_val.c_str(), al), al);
|
||||||
|
jldw_val.AddMember("FNumber", Value().SetString(zl_map[jldwz][sc_val]["id"].c_str(), al), al);
|
||||||
|
printf("end 111\n");
|
||||||
|
page2.AddMember("FUnitID", jldw_val, al);
|
||||||
|
double co = 1;
|
||||||
|
double yl = atof(get_val(lines[j], "KL3_yl"));
|
||||||
|
|
||||||
|
if(sc_val!=jb_val)
|
||||||
|
{
|
||||||
|
double jb_co = atof(zl_map[jldwz][jb_val]["coefficient"].c_str());
|
||||||
|
double sc_co = atof(zl_map[jldwz][sc_val]["coefficient"].c_str());
|
||||||
|
printf("yl:%f jb_co:%f sc_co:%f\n", yl,jb_co,sc_co);
|
||||||
|
|
||||||
|
co = sc_co / jb_co;
|
||||||
|
}
|
||||||
|
yl *= co;
|
||||||
|
page2.AddMember("FQty", yl, al);
|
||||||
|
}
|
||||||
|
printf("end jldw\n");
|
||||||
|
page2.AddMember("FIsPrimary", "否", al);
|
||||||
|
page2.AddMember("FForbitUse", "否", al);
|
||||||
|
page2.AddMember("FSubItemType", 1, al);
|
||||||
|
page2.AddMember("FOffSetDay", 0, al);
|
||||||
|
page2.AddMember("FPercent", 100, al);
|
||||||
|
page2.AddMember("FHasChar", 0, al);
|
||||||
|
page2.AddMember("FCostPercentage", 0, al);
|
||||||
|
page2.AddMember("FScrap", 0, al);
|
||||||
|
page2.AddMember("FEntryKey", 69777, al);
|
||||||
|
|
||||||
|
page2.AddMember("FMachinePos", "", al);
|
||||||
|
page2.AddMember("FPositionNo", "", al);
|
||||||
|
page2.AddMember("FNote0", "", al);
|
||||||
|
page2.AddMember("FNote1", "", al);
|
||||||
|
page2.AddMember("FNote2", "", al);
|
||||||
|
page2.AddMember("FNote3", "", al);
|
||||||
|
page2.AddMember("FItemSize", "", al);
|
||||||
|
page2.AddMember("FItemSuite", "", al);
|
||||||
|
page2.AddMember("FAuxClassID", "", al);
|
||||||
|
page2.AddMember("FPDMImportDate", Value().SetNull(), al);
|
||||||
|
|
||||||
|
page2.AddMember("FDetailID", Value().SetString(newGUID(),al), al);
|
||||||
|
Value empty2(kObjectType);
|
||||||
|
empty2.AddMember("FNumber", "", al);
|
||||||
|
empty2.AddMember("FName", "", al);
|
||||||
|
page2.AddMember("FAuxPropID", empty2, al);
|
||||||
|
Value empty3(kObjectType);
|
||||||
|
empty3.AddMember("FNumber", "", al);
|
||||||
|
empty3.AddMember("FName", "", al);
|
||||||
|
page2.AddMember("FSPID", empty3, al);
|
||||||
|
string back = get_val(lines[j], "KL3_sfdc");
|
||||||
|
Value back_val(kObjectType);
|
||||||
|
if(back=="否")
|
||||||
|
{
|
||||||
|
back_val.AddMember("FNumber", "N", al);
|
||||||
|
back_val.AddMember("FName", "否", al);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
back_val.AddMember("FNumber", "Y", al);
|
||||||
|
back_val.AddMember("FName", "是", al);
|
||||||
|
}
|
||||||
|
|
||||||
|
page2.AddMember("FBackFlush", back_val, al);
|
||||||
|
Value ty_val(kObjectType);
|
||||||
|
ty_val.AddMember("FNumber", "COM", al);
|
||||||
|
ty_val.AddMember("FName", "通用", al);
|
||||||
|
page2.AddMember("FMarshalType", ty_val, al);
|
||||||
|
|
||||||
|
|
||||||
|
data_page2.PushBack(page2, al);
|
||||||
|
|
||||||
|
printf("end page2");
|
||||||
|
// if (type)
|
||||||
|
// continue;
|
||||||
|
// if (item_id2[0] == 'B'|| item_id2[0] == 'X')
|
||||||
|
// {
|
||||||
|
// send_erp(lines[j], 1, now, pref_vals, class1, save_url,check_url,configs,zl_map,key,creation_date);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
data.AddMember("Page1", data_page1, al);
|
||||||
|
data.AddMember("Page2", data_page2, al);
|
||||||
|
doc.AddMember("Data", data, al);
|
||||||
|
|
||||||
|
StringBuffer sb;
|
||||||
|
Writer<StringBuffer> writer(sb);
|
||||||
|
doc.Accept(writer);
|
||||||
|
printf("data:%s\n", sb.GetString());
|
||||||
|
string result = ConvertToString(class1->Send(save_url, convert_to_cstring(sb.GetString()),key));
|
||||||
|
printf("result:%s\n", result.c_str());
|
||||||
|
if(result[0]=='s')
|
||||||
|
{
|
||||||
|
LOG(INFO) << result;
|
||||||
|
data2.AddMember("FUserName", "administrator", al2);
|
||||||
|
data2.AddMember("FUseDirection", "1", al2);
|
||||||
|
doc2.AddMember("Data", data2, al2);
|
||||||
|
StringBuffer sb2;
|
||||||
|
Writer<StringBuffer> writer2(sb2);
|
||||||
|
doc2.Accept(writer2);
|
||||||
|
printf("data2:%s\n", sb2.GetString());
|
||||||
|
result = ConvertToString(class1->Send(check_url, convert_to_cstring(sb2.GetString()),key));
|
||||||
|
printf("result2:%s\n", result.c_str());
|
||||||
|
|
||||||
|
if(result[0]=='s')
|
||||||
|
{
|
||||||
|
LOG(INFO) << result;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
LOG(ERROR) << result;
|
||||||
|
EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
LOG(ERROR) << result;
|
||||||
|
|
||||||
|
EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
int erp_bom(tag_t task, string key_str, string pref1, string pref2)
|
||||||
|
{
|
||||||
|
printf("erp_bom start\n");
|
||||||
|
tag_t root_task, *atts, win;
|
||||||
|
int att_cnt;
|
||||||
|
EPM_ask_root_task(task, &root_task);
|
||||||
|
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &atts);
|
||||||
|
int pref_cnt, pref_cnt2;
|
||||||
|
char **pref_vals, **pref_vals2;
|
||||||
|
PREF_ask_char_values(pref1.c_str(), &pref_cnt, &pref_vals);
|
||||||
|
PREF_ask_char_values(pref2.c_str(), &pref_cnt2, &pref_vals2);
|
||||||
|
vector<map<string,string>> configs;
|
||||||
|
Document doc;
|
||||||
|
doc.SetObject();
|
||||||
|
Document::AllocatorType &al = doc.GetAllocator();
|
||||||
|
map<string, map<string, map<string,string>>> zl_map;
|
||||||
|
string creation_date = getTime2();
|
||||||
|
for (auto i = 0; i<pref_cnt2; i++)
|
||||||
|
{
|
||||||
|
if(i==4)
|
||||||
|
{
|
||||||
|
Document temp_doc;
|
||||||
|
temp_doc.Parse(pref_vals2[i]);
|
||||||
|
for(auto j=temp_doc.MemberBegin();j!=temp_doc.MemberEnd();j++)
|
||||||
|
{
|
||||||
|
map<string, map<string,string>> temp_map;
|
||||||
|
for(auto k=j->value.MemberBegin();k!=j->value.MemberEnd();k++)
|
||||||
|
{
|
||||||
|
string name = k->name.GetString();
|
||||||
|
map<string, string> temp_map2;
|
||||||
|
if(name=="id")
|
||||||
|
{
|
||||||
|
temp_map2["id"] = k->value.GetString();
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
for(auto l=k->value.MemberBegin();l!=k->value.MemberEnd();l++)
|
||||||
|
{
|
||||||
|
temp_map2[l->name.GetString()] = l->value.GetString();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp_map[name] = temp_map2;
|
||||||
|
|
||||||
|
}
|
||||||
|
zl_map[j->name.GetString()] = temp_map;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i==1||i>4)
|
||||||
|
{
|
||||||
|
Document temp_doc;
|
||||||
|
temp_doc.Parse(pref_vals2[i]);
|
||||||
|
map<string, string> temp_map;
|
||||||
|
for(auto j=temp_doc.MemberBegin();j!=temp_doc.MemberEnd();j++)
|
||||||
|
{
|
||||||
|
temp_map[j->name.GetString()] = j->value.GetString();
|
||||||
|
}
|
||||||
|
configs.push_back(temp_map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("pref_cnt:%d\n", pref_cnt);
|
||||||
|
string ip = pref_vals[0];
|
||||||
|
string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1];
|
||||||
|
Testclass ^class1 = gcnew Testclass();
|
||||||
|
System::String ^key = convert_to_cstring(key_str.c_str());
|
||||||
|
|
||||||
|
string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key));
|
||||||
|
printf("token:%s\n", token.c_str());
|
||||||
|
string s_url = ip + "/K3API/BOM/Save?token=" + token;
|
||||||
|
string c_url = ip + "/K3API/BOM/CheckUse?token=" + token;
|
||||||
|
System::String ^save_url = convert_to_cstring(s_url.c_str());
|
||||||
|
System::String ^check_url = convert_to_cstring(c_url.c_str());
|
||||||
|
|
||||||
|
BOM_create_window(&win);
|
||||||
|
string now = getTime();
|
||||||
|
for (auto i = 0; i<att_cnt; i++)
|
||||||
|
{
|
||||||
|
if (isTypeOf(atts[i], "PSBOMViewRevision"))
|
||||||
|
{
|
||||||
|
int rel_cnt, line_cnt;
|
||||||
|
tag_t *rels, top_line, *lines, rev;
|
||||||
|
char *id;
|
||||||
|
AOM_ask_value_tags(atts[i], "release_status_list", &rel_cnt, &rels);
|
||||||
|
if (rel_cnt)
|
||||||
|
continue;
|
||||||
|
BOM_set_window_top_line_bvr(win, atts[i], &top_line);
|
||||||
|
AOM_ask_value_string(top_line, "bl_item_item_id", &id);
|
||||||
|
// if (id[0] != 'C')
|
||||||
|
// continue;
|
||||||
|
|
||||||
|
int result=send_erp(top_line, 0, now, pref_vals, class1, save_url, check_url,configs,zl_map,key,creation_date);
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BOM_close_window(win);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int kl_erp_bom(EPM_action_message_t msg)
|
||||||
|
{
|
||||||
|
int arg_cnt = TC_number_of_arguments(msg.arguments);
|
||||||
|
string key, pref1, pref2;
|
||||||
|
for (auto i = 0; i<arg_cnt; i++)
|
||||||
|
{
|
||||||
|
char *temp_key, *temp_val;
|
||||||
|
ITK_ask_argument_named_value(TC_next_argument(msg.arguments), &temp_key, &temp_val);
|
||||||
|
if (tc_strcmp(temp_key, "key")==0)
|
||||||
|
{
|
||||||
|
key = temp_val;
|
||||||
|
}
|
||||||
|
else if (tc_strcmp(temp_key, "pref1")==0)
|
||||||
|
{
|
||||||
|
pref1 = temp_val;
|
||||||
|
}
|
||||||
|
else if (tc_strcmp(temp_key, "pref2")==0)
|
||||||
|
{
|
||||||
|
pref2 = temp_val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("key:%s\n", key.c_str());
|
||||||
|
printf("pref1:%s\n", pref1.c_str());
|
||||||
|
printf("pref2:%s\n", pref2.c_str());
|
||||||
|
return erp_bom(msg.task, key, pref1, pref2);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,599 @@
|
|||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int erp_save(tag_t task,string key_str,string pref1,string pref2)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf("start kl_erp_save\n");
|
||||||
|
tag_t *atts, root_task;
|
||||||
|
int att_cnt;
|
||||||
|
EPM_ask_root_task(task, &root_task);
|
||||||
|
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &atts);
|
||||||
|
int pref_cnt, pref_cnt2;
|
||||||
|
char **pref_vals, **pref_vals2;
|
||||||
|
|
||||||
|
PREF_ask_char_values(pref1.c_str(), &pref_cnt, &pref_vals);
|
||||||
|
PREF_ask_char_values(pref2.c_str(), &pref_cnt2, &pref_vals2);
|
||||||
|
vector<Value*> configs;
|
||||||
|
Document doc0, doc1, doc2, doc3, doc4, doc5,doc6,doc7;
|
||||||
|
vector<Document*> vec;
|
||||||
|
vec.push_back(&doc0);
|
||||||
|
vec.push_back(&doc1);
|
||||||
|
vec.push_back(&doc2);
|
||||||
|
vec.push_back(&doc3);
|
||||||
|
vec.push_back(&doc4);
|
||||||
|
vec.push_back(&doc5);
|
||||||
|
vec.push_back(&doc6);
|
||||||
|
vec.push_back(&doc7);
|
||||||
|
|
||||||
|
for (auto i = 0; i<pref_cnt2; i++)
|
||||||
|
{
|
||||||
|
vec[i]->Parse(pref_vals2[i]);
|
||||||
|
configs.push_back(vec[i]);
|
||||||
|
}
|
||||||
|
string ip = pref_vals[0];
|
||||||
|
string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1];
|
||||||
|
|
||||||
|
Testclass ^class1 = gcnew Testclass();
|
||||||
|
System::String ^key = convert_to_cstring(key_str.c_str());
|
||||||
|
|
||||||
|
string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key));
|
||||||
|
printf("token:%s\n", token.c_str());
|
||||||
|
string s_url = ip + "/K3API/Material/Save?token=" + token;
|
||||||
|
string c_url = ip + "/K3API/Material/GetDetail?token=" + token;
|
||||||
|
System::String ^save_url = convert_to_cstring(s_url.c_str());
|
||||||
|
System::String ^check_url = convert_to_cstring(c_url.c_str());
|
||||||
|
string u_url = ip + "/K3API/Material/Update?token=" + token;
|
||||||
|
System::String ^update_url = convert_to_cstring(u_url.c_str());
|
||||||
|
|
||||||
|
POM_AM__set_application_bypass(true);
|
||||||
|
printf("att_cnt:%d\n", att_cnt);
|
||||||
|
for (auto i = 0; i<att_cnt; i++)
|
||||||
|
{
|
||||||
|
int type = -1;
|
||||||
|
if (isTypeOf(atts[i], "KL3_MaterialRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 0;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_SemiProductRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 1;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_ProductRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 2;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_MouldRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 3;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_MMaterialRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 4;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_GJLRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 5;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_VirtualRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 6;
|
||||||
|
}
|
||||||
|
printf("type:%d\n", type);
|
||||||
|
if (type == -1)
|
||||||
|
continue;
|
||||||
|
int ref_cnt, *levels;
|
||||||
|
tag_t *refs, rev = NULLTAG;
|
||||||
|
char **relations;
|
||||||
|
WSOM_where_referenced(atts[i], 1, &ref_cnt, &levels, &refs, &relations);
|
||||||
|
for (auto j = 0; j<ref_cnt; j++)
|
||||||
|
{
|
||||||
|
if (isTypeOf(refs[j], "ItemRevision"))
|
||||||
|
{
|
||||||
|
rev = refs[j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Document doc,check_doc;
|
||||||
|
check_doc.SetObject();
|
||||||
|
Document::AllocatorType &check_al = check_doc.GetAllocator();
|
||||||
|
|
||||||
|
Value check_data(kObjectType);
|
||||||
|
check_data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), check_al), check_al);
|
||||||
|
check_doc.AddMember("Data", check_data, check_al);
|
||||||
|
check_doc.AddMember("GetProperty", false, check_al);
|
||||||
|
StringBuffer check_sb;
|
||||||
|
Writer<StringBuffer> check_writer(check_sb);
|
||||||
|
bool is_update = true;
|
||||||
|
|
||||||
|
check_doc.Accept(check_writer);
|
||||||
|
string check_result = ConvertToString(class1->Send(check_url, convert_to_cstring(check_sb.GetString()), key));
|
||||||
|
printf("check_result:%s\n", check_result.c_str());
|
||||||
|
if(check_result[0]!='s')
|
||||||
|
{
|
||||||
|
LERROR << "check error:" << check_result;
|
||||||
|
printf("check error\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(check_result.find("不存在或是没有访问权限")!=-1)
|
||||||
|
{
|
||||||
|
is_update = false;
|
||||||
|
}
|
||||||
|
doc.SetObject();
|
||||||
|
Document::AllocatorType &al = doc.GetAllocator();
|
||||||
|
Value data(kObjectType);
|
||||||
|
printf("is_update:%d\n", is_update);
|
||||||
|
if(is_update)
|
||||||
|
{
|
||||||
|
string syzt = get_val(atts[i], "kl3_syzt");
|
||||||
|
if (syzt == "禁用")
|
||||||
|
continue;
|
||||||
|
if (type != 1 && type != 2 && type != 6)
|
||||||
|
{
|
||||||
|
data.AddMember("Fmaund", 0, al);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Value maund(kObjectType);
|
||||||
|
string zldw = get_val(atts[i], "kl3_zldw");
|
||||||
|
maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al);
|
||||||
|
maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al);
|
||||||
|
data.AddMember("Fmaund", maund, al);
|
||||||
|
}
|
||||||
|
printf("111\n");
|
||||||
|
|
||||||
|
Value manager(kObjectType);
|
||||||
|
manager.AddMember("FName", Value().SetString(pref_vals[2], al), al);
|
||||||
|
manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al);
|
||||||
|
data.AddMember("FDSManagerID", manager, al);
|
||||||
|
|
||||||
|
data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al);
|
||||||
|
data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
||||||
|
data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al);
|
||||||
|
// if(type<3||type>5)
|
||||||
|
// {
|
||||||
|
// data.AddMember("FKFPeriod", Value().SetString(get_val(atts[i], "kl3_bzqt"), al), al);
|
||||||
|
// }
|
||||||
|
// data.AddMember("FISKFPeriod", true, al);
|
||||||
|
|
||||||
|
data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al);
|
||||||
|
data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al);
|
||||||
|
|
||||||
|
|
||||||
|
data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al);
|
||||||
|
|
||||||
|
string jldwz = get_val(atts[i], "kl3_jldwz");
|
||||||
|
int jldw_index = jldwz.find('/');
|
||||||
|
jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz;
|
||||||
|
Value &jldw_val = (*configs[4])[jldwz.c_str()];
|
||||||
|
if (!jldw_val.IsNull())
|
||||||
|
{
|
||||||
|
Value jldw(kObjectType);
|
||||||
|
jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al);
|
||||||
|
jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al);
|
||||||
|
data.AddMember("FUnitGroupID", jldw, al);
|
||||||
|
data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al);
|
||||||
|
}
|
||||||
|
printf("222\n");
|
||||||
|
if(type!=2){
|
||||||
|
data.AddMember("FLength", 0, al);
|
||||||
|
data.AddMember("FWidth", 0, al);
|
||||||
|
data.AddMember("FHeight", 0, al);
|
||||||
|
data.AddMember("FSize", 0, al);
|
||||||
|
}else{
|
||||||
|
int int_val;
|
||||||
|
double db_val;
|
||||||
|
char *ch_val;
|
||||||
|
AOM_ask_value_int(atts[i],"kl3_chang",&int_val);
|
||||||
|
db_val=(double)int_val/1000;
|
||||||
|
data.AddMember("FLength", db_val, al);
|
||||||
|
AOM_ask_value_int(atts[i],"kl3_kuan",&int_val);
|
||||||
|
db_val=(double)int_val/1000;
|
||||||
|
data.AddMember("FWidth", db_val, al);
|
||||||
|
AOM_ask_value_int(atts[i],"kl3_gao",&int_val);
|
||||||
|
db_val=(double)int_val/1000;
|
||||||
|
data.AddMember("FHeight", db_val, al);
|
||||||
|
AOM_ask_value_string(atts[i],"kl3_dxtj",&ch_val);
|
||||||
|
db_val=atof(ch_val);
|
||||||
|
data.AddMember("FSize", db_val, al);
|
||||||
|
}
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
// data.AddMember("FDefaultLoc", 651, al);
|
||||||
|
// break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
case 5:
|
||||||
|
data.AddMember("FDefaultLoc", 666, al);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
data.AddMember("FDefaultLoc", 667, al);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al);
|
||||||
|
data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al);
|
||||||
|
data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al);
|
||||||
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
||||||
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
||||||
|
data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
string inspect = get_val(atts[i], "kl3_cgjyfs");
|
||||||
|
int inspect_val = 353;
|
||||||
|
if (inspect == "全检")
|
||||||
|
{
|
||||||
|
inspect_val = 351;
|
||||||
|
}
|
||||||
|
else if (inspect == "免检")
|
||||||
|
{
|
||||||
|
inspect_val = 352;
|
||||||
|
}else if (inspect == "抽检")
|
||||||
|
{
|
||||||
|
inspect_val = 353;
|
||||||
|
}
|
||||||
|
data.AddMember("FInspectionLevel", inspect_val, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
if(type==1||type==2||type==6)
|
||||||
|
{
|
||||||
|
string ly_val = get_val(atts[i], "kl3_ly");
|
||||||
|
Value source_val(kObjectType);
|
||||||
|
|
||||||
|
if(ly_val=="注塑制造部")
|
||||||
|
{
|
||||||
|
source_val.AddMember("FName", "注塑制造部", al);
|
||||||
|
source_val.AddMember("FNumber", "13", al);
|
||||||
|
}else if(ly_val=="胶条制造部")
|
||||||
|
{
|
||||||
|
source_val.AddMember("FName", "胶条制造部", al);
|
||||||
|
source_val.AddMember("FNumber", "14", al);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
source_val.AddMember("FName", "", al);
|
||||||
|
source_val.AddMember("FNumber", "", al);
|
||||||
|
}
|
||||||
|
data.AddMember("FSource", source_val, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (type == 2)
|
||||||
|
{
|
||||||
|
Value type_id(kObjectType);
|
||||||
|
string wlfl = get_val(atts[i], "kl3_wlfl");
|
||||||
|
type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al);
|
||||||
|
type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al);
|
||||||
|
data.AddMember("FTypeID", type_id, al);
|
||||||
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
||||||
|
data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al);
|
||||||
|
data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al);
|
||||||
|
data.AddMember("F_113", Value().SetString(get_val(atts[i], "kl3_cx"), al), al);
|
||||||
|
data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al);
|
||||||
|
data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al);
|
||||||
|
data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al);
|
||||||
|
data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al);
|
||||||
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
||||||
|
data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al);
|
||||||
|
data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al);
|
||||||
|
data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al);
|
||||||
|
string s = "是";
|
||||||
|
data.AddMember("F_136", s== get_val(atts[i], "kl3_sfyz")?1:0, al);
|
||||||
|
data.AddMember("F_138", s == get_val(atts[i], "kl3_sfsbz") ? 1 : 0, al);
|
||||||
|
data.AddMember("F_139", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al);
|
||||||
|
data.AddMember("F_142", Value().SetString(get_val(atts[i], "kl3_MOQ"), al), al);
|
||||||
|
data.AddMember("F_143", Value().SetString(get_val(atts[i], "kl3_ydcgzq"), al), al);
|
||||||
|
}
|
||||||
|
if (type == 4)
|
||||||
|
{
|
||||||
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al);
|
||||||
|
data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al);
|
||||||
|
data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al);
|
||||||
|
}
|
||||||
|
Value data2(kObjectType);
|
||||||
|
data2.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
||||||
|
data2.AddMember("Data", data, al);
|
||||||
|
doc.AddMember("Data", data2, al);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
|
||||||
|
data.AddMember("Fdeleted", 0, al);
|
||||||
|
data.AddMember("FTrack", 76, al);
|
||||||
|
data.AddMember("FDefaultReadyLoc", 664, al);
|
||||||
|
data.AddMember("FCostProject", 57, al);
|
||||||
|
data.AddMember("FPlanMode", 14036, al);
|
||||||
|
data.AddMember("FOrderTrategy", 331, al);
|
||||||
|
data.AddMember("FCtrlType", 14039, al);
|
||||||
|
data.AddMember("FBeforeExpire", 0, al);
|
||||||
|
data.AddMember("FSOChkMde", 352, al);
|
||||||
|
data.AddMember("FWthDrwChkMde", 352, al);
|
||||||
|
data.AddMember("FOtherChkMde", 352, al);
|
||||||
|
data.AddMember("FQtyDecimal", 8, al);
|
||||||
|
data.AddMember("FUseState", 341, al);
|
||||||
|
data.AddMember("FGrossWeight", 0, al);
|
||||||
|
data.AddMember("FNetWeight", 0, al);
|
||||||
|
|
||||||
|
if(type==1)
|
||||||
|
{
|
||||||
|
data.AddMember("FPriceDecimal", 10, al);
|
||||||
|
}else if(type==2)
|
||||||
|
{
|
||||||
|
data.AddMember("FPriceDecimal", 6, al);
|
||||||
|
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
data.AddMember("FPriceDecimal", 4, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(type==1||type==2||type==6)
|
||||||
|
{
|
||||||
|
string ly_val = get_val(atts[i], "kl3_ly");
|
||||||
|
Value source_val(kObjectType);
|
||||||
|
|
||||||
|
if(ly_val=="注塑制造部")
|
||||||
|
{
|
||||||
|
source_val.AddMember("FName", "注塑制造部", al);
|
||||||
|
source_val.AddMember("FNumber", "13", al);
|
||||||
|
}else if(ly_val=="胶条制造部")
|
||||||
|
{
|
||||||
|
source_val.AddMember("FName", "胶条制造部", al);
|
||||||
|
source_val.AddMember("FNumber", "14", al);
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
source_val.AddMember("FName", "", al);
|
||||||
|
source_val.AddMember("FNumber", "", al);
|
||||||
|
}
|
||||||
|
data.AddMember("FSource", source_val, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
printf("111\n");
|
||||||
|
if (type != 1 && type != 2 && type != 6)
|
||||||
|
{
|
||||||
|
data.AddMember("Fmaund", 0, al);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Value maund(kObjectType);
|
||||||
|
string zldw = get_val(atts[i], "kl3_zldw");
|
||||||
|
maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al);
|
||||||
|
maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al);
|
||||||
|
data.AddMember("Fmaund", maund, al);
|
||||||
|
}
|
||||||
|
if(type!=2){
|
||||||
|
data.AddMember("FLength", 0, al);
|
||||||
|
data.AddMember("FWidth", 0, al);
|
||||||
|
data.AddMember("FHeight", 0, al);
|
||||||
|
data.AddMember("FSize", 0, al);
|
||||||
|
}else{
|
||||||
|
int int_val;
|
||||||
|
double db_val;
|
||||||
|
char *ch_val;
|
||||||
|
AOM_ask_value_int(atts[i],"kl3_chang",&int_val);
|
||||||
|
db_val=(double)int_val/1000;
|
||||||
|
data.AddMember("FLength", db_val, al);
|
||||||
|
AOM_ask_value_int(atts[i],"kl3_kuan",&int_val);
|
||||||
|
db_val=(double)int_val/1000;
|
||||||
|
data.AddMember("FWidth", db_val, al);
|
||||||
|
AOM_ask_value_int(atts[i],"kl3_gao",&int_val);
|
||||||
|
db_val=(double)int_val/1000;
|
||||||
|
data.AddMember("FHeight", db_val, al);
|
||||||
|
AOM_ask_value_string(atts[i],"kl3_dxtj",&ch_val);
|
||||||
|
db_val=atof(ch_val);
|
||||||
|
data.AddMember("FSize", db_val, al);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.AddMember("FLenDecimal", 0, al);
|
||||||
|
data.AddMember("FCubageDecimal", 0, al);
|
||||||
|
data.AddMember("FWeightDecimal", 0, al);
|
||||||
|
Value manager(kObjectType);
|
||||||
|
manager.AddMember("FName", Value().SetString(pref_vals[2], al), al);
|
||||||
|
manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al);
|
||||||
|
data.AddMember("FDSManagerID", manager, al);
|
||||||
|
|
||||||
|
data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al);
|
||||||
|
data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
||||||
|
data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al);
|
||||||
|
|
||||||
|
data.AddMember("FPlanTrategy", type<3 ? 321 : 324, al);
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
string inspect = get_val(atts[i], "kl3_cgjyfs");
|
||||||
|
int inspect_val = 353;
|
||||||
|
if (inspect == "全检")
|
||||||
|
{
|
||||||
|
inspect_val = 351;
|
||||||
|
}
|
||||||
|
else if (inspect == "免检")
|
||||||
|
{
|
||||||
|
inspect_val = 352;
|
||||||
|
}else if (inspect == "抽检")
|
||||||
|
{
|
||||||
|
inspect_val = 353;
|
||||||
|
}
|
||||||
|
data.AddMember("FInspectionLevel", inspect_val, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data.AddMember("FInspectionLevel", type<2 ? 353 : 352, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
data.AddMember("FProChkMde", type<1 ? 353 : 352, al);
|
||||||
|
|
||||||
|
data.AddMember("FWWChkMde", type<1 ? 353 : 352, al);
|
||||||
|
|
||||||
|
data.AddMember("FStkChkMde", type<5 ? 353 : 352, al);
|
||||||
|
data.AddMember("FBatchManager", type<3 ? 1 : 0, al);
|
||||||
|
|
||||||
|
data.AddMember("FISKFPeriod", (type<3 || type>5) ? 1 : 0, al);
|
||||||
|
|
||||||
|
data.AddMember("FKFPeriod", (type<3 || type>5) ? (Value().SetString(get_val(atts[i], "kl3_bzqt"), al)) : Value().SetString("", al), al);
|
||||||
|
data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al);
|
||||||
|
data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al);
|
||||||
|
|
||||||
|
data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al);
|
||||||
|
printf("222\n");
|
||||||
|
|
||||||
|
string jldwz = get_val(atts[i], "kl3_jldwz");
|
||||||
|
int jldw_index = jldwz.find('/');
|
||||||
|
jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz;
|
||||||
|
Value &jldw_val = (*configs[4])[jldwz.c_str()];
|
||||||
|
if (!jldw_val.IsNull())
|
||||||
|
{
|
||||||
|
|
||||||
|
Value jldw(kObjectType);
|
||||||
|
jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al);
|
||||||
|
jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al);
|
||||||
|
data.AddMember("FUnitGroupID", jldw, al);
|
||||||
|
data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al);
|
||||||
|
}
|
||||||
|
|
||||||
|
string item_id = get_val(rev, "item_id");
|
||||||
|
item_id = item_id.substr(0, 3);
|
||||||
|
|
||||||
|
data.AddMember("FAcctID", get_acct(item_id, al, 0, *configs[2]), al);
|
||||||
|
data.AddMember("FSaleAcctID", get_acct(item_id, al, 1, *configs[2]), al);
|
||||||
|
data.AddMember("FCostAcctID", get_acct(item_id, al, 2, *configs[2]), al);
|
||||||
|
|
||||||
|
printf("333\n");
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
// data.AddMember("FDefaultLoc", 651, al);
|
||||||
|
// break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
case 5:
|
||||||
|
data.AddMember("FDefaultLoc", 666, al);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
data.AddMember("FDefaultLoc", 667, al);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al);
|
||||||
|
data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al);
|
||||||
|
data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al);
|
||||||
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
||||||
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
||||||
|
data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al);
|
||||||
|
data.AddMember("FStockTime", 1, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (type == 2)
|
||||||
|
{
|
||||||
|
Value type_id(kObjectType);
|
||||||
|
string wlfl = get_val(atts[i], "kl3_wlfl");
|
||||||
|
type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al);
|
||||||
|
type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al);
|
||||||
|
|
||||||
|
data.AddMember("FTypeID", type_id, al);
|
||||||
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
||||||
|
data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al);
|
||||||
|
data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al);
|
||||||
|
data.AddMember("F_113", Value().SetString(get_val(atts[i], "kl3_cx"), al), al);
|
||||||
|
data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al);
|
||||||
|
data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al);
|
||||||
|
data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al);
|
||||||
|
data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al);
|
||||||
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
||||||
|
data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al);
|
||||||
|
data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al);
|
||||||
|
data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al);
|
||||||
|
string s="是";
|
||||||
|
data.AddMember("F_136", s== get_val(atts[i], "kl3_sfyz")?1:0, al);
|
||||||
|
data.AddMember("F_138", s == get_val(atts[i], "kl3_sfsbz") ? 1 : 0, al);
|
||||||
|
//data.AddMember("F_136", 0, al);
|
||||||
|
//data.AddMember("F_138", 0, al);
|
||||||
|
data.AddMember("F_139", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al);
|
||||||
|
data.AddMember("F_142", Value().SetString(get_val(atts[i], "kl3_MOQ"), al), al);
|
||||||
|
data.AddMember("F_143", Value().SetString(get_val(atts[i], "kl3_ydcgzq"), al), al);
|
||||||
|
}
|
||||||
|
if (type == 4)
|
||||||
|
{
|
||||||
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al);
|
||||||
|
data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al);
|
||||||
|
data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al);
|
||||||
|
}
|
||||||
|
doc.AddMember("Data", data, al);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuffer sb;
|
||||||
|
Writer<StringBuffer> writer(sb);
|
||||||
|
doc.Accept(writer);
|
||||||
|
printf("data:%s\n", sb.GetString());
|
||||||
|
string result = ConvertToString(class1->Send(is_update?update_url:save_url, convert_to_cstring(sb.GetString()),key));
|
||||||
|
if(result[0]=='s')
|
||||||
|
{
|
||||||
|
LOG(INFO) << result;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
POM_AM__set_application_bypass(false);
|
||||||
|
|
||||||
|
LOG(ERROR) << result;
|
||||||
|
EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str());
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
printf("result:%s\n", result.c_str());
|
||||||
|
}
|
||||||
|
POM_AM__set_application_bypass(false);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int kl_erp_save(EPM_action_message_t msg)
|
||||||
|
{
|
||||||
|
|
||||||
|
int arg_cnt = TC_number_of_arguments(msg.arguments);
|
||||||
|
string key, pref1, pref2;
|
||||||
|
for(auto i=0;i<arg_cnt;i++)
|
||||||
|
{
|
||||||
|
char *temp_key, *temp_val;
|
||||||
|
ITK_ask_argument_named_value(TC_next_argument(msg.arguments), &temp_key, &temp_val);
|
||||||
|
printf("temp_key:%s\n", temp_key);
|
||||||
|
if(tc_strcmp(temp_key,"key")==0)
|
||||||
|
{
|
||||||
|
key = temp_val;
|
||||||
|
}else if(tc_strcmp(temp_key,"pref1")==0)
|
||||||
|
{
|
||||||
|
pref1 = temp_val;
|
||||||
|
}else if (tc_strcmp(temp_key, "pref2")==0)
|
||||||
|
{
|
||||||
|
pref2 = temp_val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("key:%s\n", key.c_str());
|
||||||
|
printf("pref1:%s\n", pref1.c_str());
|
||||||
|
printf("pref2:%s\n", pref2.c_str());
|
||||||
|
|
||||||
|
return erp_save(msg.task,key,pref1,pref2);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,256 @@
|
|||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
int erp_update(tag_t task, string key_str, string pref1, string pref2)
|
||||||
|
{
|
||||||
|
printf("start kl_erp_update\n");
|
||||||
|
tag_t *atts, root_task;
|
||||||
|
int att_cnt;
|
||||||
|
EPM_ask_root_task(task, &root_task);
|
||||||
|
EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &atts);
|
||||||
|
int pref_cnt, pref_cnt2;
|
||||||
|
char **pref_vals, **pref_vals2;
|
||||||
|
PREF_ask_char_values(pref1.c_str(), &pref_cnt, &pref_vals);
|
||||||
|
PREF_ask_char_values(pref2.c_str(), &pref_cnt2, &pref_vals2);
|
||||||
|
vector<Value*> configs;
|
||||||
|
Document doc0, doc1, doc2, doc3, doc4, doc5, doc6, doc7;
|
||||||
|
vector<Document*> vec;
|
||||||
|
vec.push_back(&doc0);
|
||||||
|
vec.push_back(&doc1);
|
||||||
|
vec.push_back(&doc2);
|
||||||
|
vec.push_back(&doc3);
|
||||||
|
vec.push_back(&doc4);
|
||||||
|
vec.push_back(&doc5);
|
||||||
|
vec.push_back(&doc6);
|
||||||
|
vec.push_back(&doc7);
|
||||||
|
|
||||||
|
for (auto i = 0; i<pref_cnt2; i++)
|
||||||
|
{
|
||||||
|
vec[i]->Parse(pref_vals2[i]);
|
||||||
|
configs.push_back(vec[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
string ip = pref_vals[0];
|
||||||
|
string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1];
|
||||||
|
POM_AM__set_application_bypass(true);
|
||||||
|
System::String ^key = convert_to_cstring(key_str.c_str());
|
||||||
|
Testclass ^class1 = gcnew Testclass();
|
||||||
|
string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key));
|
||||||
|
printf("token:%s\n", token.c_str());
|
||||||
|
string s_url = ip + "/K3API/Material/Update?token=" + token;
|
||||||
|
System::String ^save_url = convert_to_cstring(s_url.c_str());
|
||||||
|
|
||||||
|
for (auto i = 0; i<att_cnt; i++)
|
||||||
|
{
|
||||||
|
int type = -1;
|
||||||
|
if (isTypeOf(atts[i], "KL3_MaterialRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 0;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_SemiProductRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 1;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_ProductRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 2;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_MouldRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 3;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_MMaterialRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 4;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_GJLRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 5;
|
||||||
|
}
|
||||||
|
else if (isTypeOf(atts[i], "KL3_VirtualRevisionMaster"))
|
||||||
|
{
|
||||||
|
type = 6;
|
||||||
|
}
|
||||||
|
printf("type:%d\n", type);
|
||||||
|
if (type == -1)
|
||||||
|
continue;
|
||||||
|
string syzt = get_val(atts[i], "kl3_syzt");
|
||||||
|
if (syzt == "½ûÓÃ")
|
||||||
|
continue;
|
||||||
|
int ref_cnt, *levels;
|
||||||
|
tag_t *refs, rev = NULLTAG;
|
||||||
|
char **relations;
|
||||||
|
WSOM_where_referenced(atts[i], 1, &ref_cnt, &levels, &refs, &relations);
|
||||||
|
for (auto j = 0; j<ref_cnt; j++)
|
||||||
|
{
|
||||||
|
if (isTypeOf(refs[j], "ItemRevision"))
|
||||||
|
{
|
||||||
|
rev = refs[j];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("handle:%s\n", get_val(rev, "object_name"));
|
||||||
|
|
||||||
|
Document doc;
|
||||||
|
doc.SetObject();
|
||||||
|
Document::AllocatorType &al = doc.GetAllocator();
|
||||||
|
Value data(kObjectType);
|
||||||
|
|
||||||
|
if (type != 1 && type != 2 && type != 6)
|
||||||
|
{
|
||||||
|
data.AddMember("Fmaund", 0, al);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Value maund(kObjectType);
|
||||||
|
string zldw = get_val(atts[i], "kl3_zldw");
|
||||||
|
maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al);
|
||||||
|
maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al);
|
||||||
|
data.AddMember("Fmaund", maund, al);
|
||||||
|
}
|
||||||
|
printf("111\n");
|
||||||
|
|
||||||
|
Value manager(kObjectType);
|
||||||
|
manager.AddMember("FName", Value().SetString(pref_vals[2], al), al);
|
||||||
|
manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al);
|
||||||
|
data.AddMember("FDSManagerID", manager, al);
|
||||||
|
|
||||||
|
data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al);
|
||||||
|
data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
||||||
|
data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al);
|
||||||
|
|
||||||
|
data.AddMember("FKFPeriod", (type<3 || type>5) ? (Value().SetString(get_val(atts[i], "kl3_bzqt"), al)) : Value().SetString("", al), al);
|
||||||
|
data.AddMember("FISKFPeriod", true, al);
|
||||||
|
|
||||||
|
data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al);
|
||||||
|
data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al);
|
||||||
|
|
||||||
|
|
||||||
|
data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al);
|
||||||
|
|
||||||
|
string jldwz = get_val(atts[i], "kl3_jldwz");
|
||||||
|
int jldw_index = jldwz.find('/');
|
||||||
|
jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz;
|
||||||
|
Value &jldw_val = (*configs[4])[jldwz.c_str()];
|
||||||
|
if (!jldw_val.IsNull())
|
||||||
|
{
|
||||||
|
// Value jldw(kObjectType);
|
||||||
|
// jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al);
|
||||||
|
// jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al);
|
||||||
|
// data.AddMember("FUnitGroupID", jldw, al);
|
||||||
|
data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al);
|
||||||
|
data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al);
|
||||||
|
}
|
||||||
|
printf("222\n");
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
data.AddMember("FDefaultLoc", 651, al);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
case 5:
|
||||||
|
data.AddMember("FDefaultLoc", 666, al);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
data.AddMember("FDefaultLoc", 667, al);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al);
|
||||||
|
data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al);
|
||||||
|
data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al);
|
||||||
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
||||||
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
||||||
|
data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (type == 2)
|
||||||
|
{
|
||||||
|
Value type_id(kObjectType);
|
||||||
|
string wlfl = get_val(atts[i], "kl3_wlfl");
|
||||||
|
type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al);
|
||||||
|
type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al);
|
||||||
|
data.AddMember("FTypeID", type_id, al);
|
||||||
|
data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al);
|
||||||
|
data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al);
|
||||||
|
data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al);
|
||||||
|
data.AddMember("F_124", Value().SetString(get_val(atts[i], "kl3_cx"), al), al);
|
||||||
|
data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al);
|
||||||
|
data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al);
|
||||||
|
data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al);
|
||||||
|
data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al);
|
||||||
|
data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al);
|
||||||
|
data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al);
|
||||||
|
data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al);
|
||||||
|
data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al);
|
||||||
|
data.AddMember("F_136", 0, al);
|
||||||
|
data.AddMember("F_138", 0, al);
|
||||||
|
data.AddMember("F_137", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al);
|
||||||
|
}
|
||||||
|
if (type == 4)
|
||||||
|
{
|
||||||
|
data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al);
|
||||||
|
data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al);
|
||||||
|
data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al);
|
||||||
|
}
|
||||||
|
Value data2(kObjectType);
|
||||||
|
data2.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al);
|
||||||
|
data2.AddMember("Data", data, al);
|
||||||
|
doc.AddMember("Data", data2, al);
|
||||||
|
StringBuffer sb;
|
||||||
|
Writer<StringBuffer> writer(sb);
|
||||||
|
doc.Accept(writer);
|
||||||
|
printf("data:%s\n", sb.GetString());
|
||||||
|
string result = ConvertToString(class1->Send(save_url, convert_to_cstring(sb.GetString()),key));
|
||||||
|
printf("result:%s\n", result.c_str());
|
||||||
|
if(result[0]=='s')
|
||||||
|
{
|
||||||
|
LOG(INFO) << result;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
LOG(ERROR) << result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
POM_AM__set_application_bypass(false);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int kl_erp_update(EPM_action_message_t msg)
|
||||||
|
{
|
||||||
|
int arg_cnt = TC_number_of_arguments(msg.arguments);
|
||||||
|
string key, pref1, pref2;
|
||||||
|
for (auto i = 0; i<arg_cnt; i++)
|
||||||
|
{
|
||||||
|
char *temp_key, *temp_val;
|
||||||
|
ITK_ask_argument_named_value(TC_next_argument(msg.arguments), &temp_key, &temp_val);
|
||||||
|
if (tc_strcmp(temp_key, "key")==0)
|
||||||
|
{
|
||||||
|
key = temp_val;
|
||||||
|
}
|
||||||
|
else if (tc_strcmp(temp_key, "pref1")==0)
|
||||||
|
{
|
||||||
|
pref1 = temp_val;
|
||||||
|
}
|
||||||
|
else if (tc_strcmp(temp_key, "pref2")==0)
|
||||||
|
{
|
||||||
|
pref2 = temp_val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("key:%s\n", key.c_str());
|
||||||
|
printf("pref1:%s\n", pref1.c_str());
|
||||||
|
printf("pref2:%s\n", pref2.c_str());
|
||||||
|
return erp_update(msg.task,key,pref1,pref2);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
/**
|
||||||
|
* @defgroup common 公用函数
|
||||||
|
* @defgroup workflow 流程函数
|
||||||
|
* @defgroup bmf 业务扩展
|
||||||
|
* @defgroup service 服务函数
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup common
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @brief 注册主函数
|
||||||
|
* @date 2014/4/21
|
||||||
|
* @author mengyawei
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma warning (disable: 4819)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @headerfile tcua 头文件
|
||||||
|
*/
|
||||||
|
#include <tc/tc.h>
|
||||||
|
#include <tccore/custom.h>
|
||||||
|
#include <server_exits/user_server_exits.h>
|
||||||
|
#include "error_handling.h"
|
||||||
|
#include "epm_register_handler.h"
|
||||||
|
#include "epm_handler_common.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn extern "C" DLLAPI int liborigin_register_callbacks
|
||||||
|
* @return usually return ITK_ok
|
||||||
|
* @brief liborigin customization entry
|
||||||
|
*/
|
||||||
|
DLLAPI int libqtmc_register_callbacks()
|
||||||
|
{
|
||||||
|
int ifail = ITK_ok;
|
||||||
|
|
||||||
|
CALL( ifail = CUSTOM_register_exit(
|
||||||
|
"libqtmc",
|
||||||
|
"USERSERVICE_register_methods",
|
||||||
|
(CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods) );
|
||||||
|
fprintf( stdout, "\n libqtmc registering USERSERVICE_register_methods completed!\n" );
|
||||||
|
|
||||||
|
CALL( ifail = CUSTOM_register_exit(
|
||||||
|
"libqtmc",
|
||||||
|
"USER_gs_shell_init_module",
|
||||||
|
(CUSTOM_EXIT_ftn_t)CUST_init_module));
|
||||||
|
fprintf( stdout, "\n libqtmc registering USER_gs_shell_init_module completed!\n" );
|
||||||
|
|
||||||
|
return ifail;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
@ -0,0 +1,8 @@
|
|||||||
|
// stdafx.cpp : 只包括标准包含文件的源文件
|
||||||
|
// HEZON_ITK.pch 将作为预编译头
|
||||||
|
// stdafx.obj 将包含预编译类型信息
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
// TODO: 在 STDAFX.H 中
|
||||||
|
// 引用任何所需的附加头文件,而不是在此文件中引用
|
@ -0,0 +1,15 @@
|
|||||||
|
// stdafx.h : 标准系统包含文件的包含文件,
|
||||||
|
// 或是经常使用但不常更改的
|
||||||
|
// 特定于项目的包含文件
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "targetver.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <tchar.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: 在此处引用程序需要的其他头文件
|
@ -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 <stdio.h>
|
||||||
|
//#include <iostream>
|
||||||
|
//#include <windows.h>
|
||||||
|
#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<string> &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<string> &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());}
|
||||||
|
|
@ -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 <string>
|
||||||
|
#include <vector>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
string TrimString( string strArg );
|
||||||
|
void Split( string strArg, char spliter, vector<string> &ans );
|
||||||
|
void Split( string strArg, string spliter, vector<string> &ans );
|
||||||
|
void RemoveLiner( string &in, string &out );
|
||||||
|
//string ws2s(wstring& inputws);
|
||||||
|
//wstring s2ws(const string& s);
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
#include "epm_handler_common.h"
|
||||||
|
|
||||||
|
#include <tc\tc_macros.h>
|
||||||
|
#include <tc\emh.h>
|
||||||
|
#include <tc\preferences.h>
|
||||||
|
#include <property\propdesc.h>
|
||||||
|
#include <epm\epm.h>
|
||||||
|
#include <epm\epm_toolkit_tc_utils.h>
|
||||||
|
#include <tccore\item.h>
|
||||||
|
#include <tccore\grmtype.h>
|
||||||
|
#include <tccore\grm.h>
|
||||||
|
#include <tccore\imantype.h>
|
||||||
|
#include <sa\am.h>
|
||||||
|
#include <sa\sa.h>
|
||||||
|
#include <tccore\aom.h>
|
||||||
|
#include <tccore\aom_prop.h>
|
||||||
|
#include <property\prop_errors.h>
|
||||||
|
#include <tccore\workspaceobject.h>
|
||||||
|
#include <qry\qry.h>
|
||||||
|
#include <bom\bom_attr.h>
|
||||||
|
#include <bom\bom.h>
|
||||||
|
#include <epm\signoff.h>
|
||||||
|
#include <pom\pom\pom.h>
|
||||||
|
#include <pom\pom\pom_errors.h>
|
||||||
|
#include <fclasses\tc_date.h>
|
||||||
|
#include <epm\cr.h>
|
||||||
|
#include <cfm\cfm.h>
|
||||||
|
#include <sa\am.h>
|
||||||
|
#include "tc/envelope.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ae/dataset.h"
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include "ce/ce.h"
|
||||||
|
#include <time.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <sql.h>
|
||||||
|
#include <sqlext.h>
|
||||||
|
#include "string"
|
||||||
|
#include "sstream"
|
||||||
|
#include <sa/tcfile.h>
|
||||||
|
#include <tccore/aom.h>
|
||||||
|
#include <sa/tcfile_cache.h>
|
||||||
|
#include "ctime"
|
||||||
|
#include "tchar.h"
|
||||||
|
#include "rapidjson/document.h" // rapidjson's DOM-style API
|
||||||
|
#include "rapidjson/writer.h"
|
||||||
|
#include "rapidjson/stringbuffer.h"
|
||||||
|
#include "rapidjson/prettywriter.h"
|
||||||
|
#include "easylogging++.h"
|
@ -0,0 +1,108 @@
|
|||||||
|
#include "util.h"
|
||||||
|
bool isTypeOf(tag_t objtag, const char * type_name) {
|
||||||
|
tag_t type = NULLTAG;
|
||||||
|
TCTYPE_ask_object_type(objtag, &type);
|
||||||
|
tag_t item_type = NULLTAG;
|
||||||
|
TCTYPE_find_type(type_name, "", &item_type);
|
||||||
|
bool is_type = false;
|
||||||
|
if (item_type != NULLTAG) {
|
||||||
|
logical isok = FALSE;
|
||||||
|
TCTYPE_is_type_of(type, item_type, &isok);
|
||||||
|
if (isok) {
|
||||||
|
is_type = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return is_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
string ConvertToString(System::String^ str)
|
||||||
|
{
|
||||||
|
char* p = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
System::String ^ convert_to_cstring(const char *p)
|
||||||
|
{
|
||||||
|
return System::Runtime::InteropServices::Marshal::PtrToStringAnsi((System::IntPtr)(char *)p);
|
||||||
|
}
|
||||||
|
|
||||||
|
char * get_val(tag_t tag, char *name)
|
||||||
|
{
|
||||||
|
char *val;
|
||||||
|
AOM_UIF_ask_value(tag, name, &val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
char * get_real_val(tag_t tag, char *name)
|
||||||
|
{
|
||||||
|
char *val;
|
||||||
|
AOM_ask_value_string(tag, name, &val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Value get_jldw(const char *str, Document::AllocatorType &al,Value &config)
|
||||||
|
{
|
||||||
|
Value val(kObjectType);
|
||||||
|
if(config.HasMember(str))
|
||||||
|
{
|
||||||
|
val.AddMember("FName", Value().SetString(str,al), al);
|
||||||
|
val.AddMember("FNumber",Value().SetString(config[str]["id"].GetString(),al), al);
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value get_wlsx(string str, Document::AllocatorType &al,Value &config)
|
||||||
|
{
|
||||||
|
Value val(kObjectType);
|
||||||
|
char *name = "", *id = "";
|
||||||
|
if(config.HasMember(str.c_str()))
|
||||||
|
{
|
||||||
|
val.AddMember("FID", Value().SetString(config[str.c_str()].GetString(), al), al);
|
||||||
|
val.AddMember("FName", Value().SetString(str.c_str(), al), al);
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
Value get_acct(string str, Document::AllocatorType &al,int type,Value &config)
|
||||||
|
{
|
||||||
|
Value val(kObjectType);
|
||||||
|
|
||||||
|
if(config.HasMember(str.c_str()))
|
||||||
|
{
|
||||||
|
val.AddMember("FName",Value().SetString(config[str.c_str()]["name"].GetString(),al), al);
|
||||||
|
if (type == 0)
|
||||||
|
{
|
||||||
|
val.AddMember("FNumber", Value().SetString(config[str.c_str()]["acct"].GetString(), al), al);
|
||||||
|
}
|
||||||
|
else if (type == 1)
|
||||||
|
{
|
||||||
|
val.AddMember("FNumber", Value().SetString(config[str.c_str()]["sale"].GetString(), al), al);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val.AddMember("FNumber", Value().SetString(config[str.c_str()]["cost"].GetString(), al), al);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
string getTime()
|
||||||
|
{
|
||||||
|
stringstream ss;
|
||||||
|
time_t t = time(0);
|
||||||
|
tm* local = localtime(&t);
|
||||||
|
ss << local->tm_year + 1900 << '-';
|
||||||
|
|
||||||
|
ss << local->tm_mon + 1 << '-';
|
||||||
|
|
||||||
|
ss << local->tm_mday << ' ';
|
||||||
|
|
||||||
|
ss << local->tm_hour << ':';
|
||||||
|
|
||||||
|
ss << local->tm_min << ':';
|
||||||
|
|
||||||
|
ss << local->tm_sec;
|
||||||
|
return ss.str();
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
#pragma once
|
||||||
|
#using "D:/test/declib.dll"
|
||||||
|
|
||||||
|
#include "epm_handler_common.h"
|
||||||
|
|
||||||
|
#include <tc\tc_macros.h>
|
||||||
|
#include <tc\emh.h>
|
||||||
|
#include <tc\preferences.h>
|
||||||
|
#include <property\propdesc.h>
|
||||||
|
#include <epm\epm.h>
|
||||||
|
#include <epm\epm_toolkit_tc_utils.h>
|
||||||
|
#include <tccore\item.h>
|
||||||
|
#include <tccore\grmtype.h>
|
||||||
|
#include <tccore\grm.h>
|
||||||
|
#include <tccore\imantype.h>
|
||||||
|
#include <sa\am.h>
|
||||||
|
#include <sa\sa.h>
|
||||||
|
#include <tccore\aom.h>
|
||||||
|
#include <tccore\aom_prop.h>
|
||||||
|
#include <property\prop_errors.h>
|
||||||
|
#include <tccore\workspaceobject.h>
|
||||||
|
#include <qry\qry.h>
|
||||||
|
#include <bom\bom_attr.h>
|
||||||
|
#include <bom\bom.h>
|
||||||
|
#include <epm\signoff.h>
|
||||||
|
#include <pom\pom\pom.h>
|
||||||
|
#include <pom\pom\pom_errors.h>
|
||||||
|
#include <fclasses\tc_date.h>
|
||||||
|
#include <epm\cr.h>
|
||||||
|
#include <cfm\cfm.h>
|
||||||
|
#include <sa\am.h>
|
||||||
|
#include "tc/envelope.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ae/dataset.h"
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include <iterator>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include "ce/ce.h"
|
||||||
|
#include <time.h>
|
||||||
|
#include <iostream>
|
||||||
|
#include <sql.h>
|
||||||
|
#include <sqlext.h>
|
||||||
|
#include "string"
|
||||||
|
#include "sstream"
|
||||||
|
#include <sa/tcfile.h>
|
||||||
|
#include <tccore/aom.h>
|
||||||
|
#include <sa/tcfile_cache.h>
|
||||||
|
#include "ctime"
|
||||||
|
#include "tchar.h"
|
||||||
|
#include "rapidjson/document.h" // rapidjson's DOM-style API
|
||||||
|
#include "rapidjson/writer.h"
|
||||||
|
#include "rapidjson/stringbuffer.h"
|
||||||
|
#include "rapidjson/prettywriter.h"
|
||||||
|
#include "easylogging++.h"
|
||||||
|
#ifndef easylog
|
||||||
|
#define easylog
|
||||||
|
|
||||||
|
_INITIALIZE_EASYLOGGINGPP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using namespace easyloggingpp;
|
||||||
|
using namespace rapidjson;
|
||||||
|
|
||||||
|
using namespace Testdll;
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
extern "C" int POM_AM__set_application_bypass(logical bypass);
|
||||||
|
string ConvertToString(System::String^ str);
|
||||||
|
char * get_val(tag_t tag, char *name);
|
||||||
|
char * get_real_val(tag_t tag, char *name);
|
||||||
|
|
||||||
|
bool isTypeOf(tag_t objtag, const char * type_name);
|
||||||
|
Value get_jldw(const char *str, Document::AllocatorType &al,Value &val);
|
||||||
|
Value get_wlsx(string str, Document::AllocatorType &al,Value &val);
|
||||||
|
System::String ^ convert_to_cstring(const char *p);
|
||||||
|
Value get_acct(string str, Document::AllocatorType &al, int type,Value &val);
|
||||||
|
string getTime();
|
Loading…
Reference in new issue