@ -1,4 +1,4 @@
# include "epm_handler_common.h "
# include " epm_handler_common.h "
# include <tc\tc_macros.h>
# include <tc\tc_macros.h>
# include <tc\emh.h>
# include <tc\emh.h>
# include <tc\preferences.h>
# include <tc\preferences.h>
@ -49,47 +49,200 @@
# include <form/form.h>
# include <form/form.h>
# include "ctime"
# include "ctime"
# include "tchar.h"
# include "tchar.h"
# include "jni.h"
# ifdef WIN32
# include <io.h>
# include <direct.h>
# else
# include <unistd.h>
# include <sys/stat.h>
# endif
# include <stdint.h>
# include <string>
# define MAX_PATH_LEN 256
# ifdef WIN32
# define ACCESS(fileName,accessMode) _access(fileName,accessMode)
# define MKDIR(path) _mkdir(path)
# else
# define ACCESS(fileName,accessMode) access(fileName,accessMode)
# define MKDIR(path) mkdir(path,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
# endif
using namespace std ;
using namespace std ;
extern " C " int POM_AM__set_application_bypass ( logical bypass ) ;
extern " C " int POM_AM__set_application_bypass ( logical bypass ) ;
//吉德表单签名
int32_t createDirectory ( const std : : string & directoryPath ) {
uint32_t dirPathLen = directoryPath . length ( ) ;
if ( dirPathLen > MAX_PATH_LEN ) {
return - 1 ;
}
char tmpDirPath [ MAX_PATH_LEN ] = { 0 } ;
for ( uint32_t i = 0 ; i < dirPathLen ; + + i ) {
tmpDirPath [ i ] = directoryPath [ i ] ;
if ( tmpDirPath [ i ] = = ' \\ ' | | tmpDirPath [ i ] = = ' / ' ) {
if ( ACCESS ( tmpDirPath , 0 ) ! = 0 ) {
int32_t ret = MKDIR ( tmpDirPath ) ;
if ( ret ! = 0 ) {
return ret ;
}
}
}
}
return 0 ;
}
static void replace_dataset_named_reference ( tag_t dataset_tag , tag_t old_file ,
const char * new_file_path , char * ref_name ) {
IMF_file_data_p_t file_data ;
int index = 0 ;
char * name ;
IMF_get_file_access ( old_file , 0 , & file_data ) ;
tag_t new_file_tag = NULLTAG ;
AOM_lock ( old_file ) ;
IMF_ask_original_file_name2 ( old_file , & name ) ;
IMF_replace_file_and_get_new_tag ( old_file , new_file_path ,
FALSE , & new_file_tag ) ;
AOM_lock ( dataset_tag ) ;
AE_replace_dataset_named_ref2 ( dataset_tag , old_file , ref_name ,
AE_PART_OF , new_file_tag ) ;
AE_save_myself ( dataset_tag ) ;
IMF_set_original_file_name2 ( new_file_tag , name ) ;
AOM_unlock ( dataset_tag ) ;
IMF_release_file_access ( & file_data ) ;
}
bool isTypeOf ( tag_t objtag , const char * type_name ) {
tag_t type = NULLTAG ;
TCTYPE_ask_object_type ( objtag , & type ) ;
tag_t item_type = NULLTAG ;
TCTYPE_find_type ( type_name , " " , & item_type ) ;
bool is_type = false ;
if ( item_type ! = NULLTAG ) {
logical isok = FALSE ;
TCTYPE_is_type_of ( type , item_type , & isok ) ;
if ( isok ) {
is_type = true ;
}
}
return is_type ;
}
string GBKToUTF8 ( const char * strGBK )
{
int len = MultiByteToWideChar ( CP_ACP , 0 , strGBK , - 1 , NULL , 0 ) ;
wchar_t * wstr = new wchar_t [ len + 1 ] ;
memset ( wstr , 0 , len + 1 ) ;
MultiByteToWideChar ( CP_ACP , 0 , strGBK , - 1 , wstr , len ) ;
len = WideCharToMultiByte ( CP_UTF8 , 0 , wstr , - 1 , NULL , 0 , NULL , NULL ) ;
char * str = new char [ len + 1 ] ;
memset ( str , 0 , len + 1 ) ;
WideCharToMultiByte ( CP_UTF8 , 0 , wstr , - 1 , str , len , NULL , NULL ) ;
string strTemp = str ;
if ( wstr ) delete [ ] wstr ;
if ( str ) delete [ ] str ;
return strTemp ;
}
/*
映 射
- path 路 径
- name 用 户 名
- step 流 程 阶 段 : 编 制 : 49 , 校 对 : 50 , 审 核 : 51 , 会 签 : 52 , 批 准 : 53
*/
static int sign ( JNIEnv * env , jclass class_Test , const char * path , char * name , int step ) {
printf ( " signin \n " ) ;
jmethodID methodId_main = env - > GetStaticMethodID ( class_Test , " sign " , " (Ljava/lang/String;Ljava/lang/String;I)I " ) ;
if ( methodId_main = = NULL ) {
printf ( " error \n " ) ;
return 0 ;
}
string path1 = GBKToUTF8 ( path ) ;
string name1 = GBKToUTF8 ( name ) ;
jstring jpath = env - > NewStringUTF ( path1 . c_str ( ) ) ;
jstring jname = env - > NewStringUTF ( name1 . c_str ( ) ) ;
jint jstep = ( jint ) step ;
printf ( " path:%s,name%s,step%d \n " , path1 . c_str ( ) , name1 . c_str ( ) , step ) ;
jint result = 0 ;
result = env - > CallStaticIntMethod ( class_Test , methodId_main , jpath , jname , jstep ) ;
int res = result ;
printf ( " result:%d \n " , res ) ;
printf ( " signout \n " ) ;
return res ;
}
void add_path ( JNIEnv * env , const std : : string & path )
{
const std : : string urlPath = " file:/ " + path ;
jclass classLoaderCls = env - > FindClass ( " java/lang/ClassLoader " ) ;
printf ( " 111 \n " ) ;
jmethodID getSystemClassLoaderMethod = env - > GetStaticMethodID ( classLoaderCls , " getSystemClassLoader " , " ()Ljava/lang/ClassLoader; " ) ;
jobject classLoaderInstance = env - > CallStaticObjectMethod ( classLoaderCls , getSystemClassLoaderMethod ) ;
jclass urlClassLoaderCls = env - > FindClass ( " java/net/URLClassLoader " ) ;
jmethodID addUrlMethod = env - > GetMethodID ( urlClassLoaderCls , " addURL " , " (Ljava/net/URL;)V " ) ;
jclass urlCls = env - > FindClass ( " java/net/URL " ) ;
jmethodID urlConstructor = env - > GetMethodID ( urlCls , " <init> " , " (Ljava/lang/String;)V " ) ;
jobject urlInstance = env - > NewObject ( urlCls , urlConstructor , env - > NewStringUTF ( urlPath . c_str ( ) ) ) ;
env - > CallVoidMethod ( classLoaderInstance , addUrlMethod , urlInstance ) ;
std : : cout < < " Added " < < urlPath < < " to the classpath. " < < std : : endl ;
}
//吉德表单签名
int jd_signoff ( EPM_action_message_t msg ) {
int jd_signoff ( EPM_action_message_t msg ) {
/*
const char bz = ' 1 ' , jd = ' 2 ' , sh = ' 3 ' , hq = ' 4 ' , pz = ' 5 ' , bz_back = ' 0 ' ;
- status :
编 制 : 1 , 校 对 : 2 , 审 核 : 3 , 会 签 : 4 , 批 准 : 5
int ifail = ITK_ok , att_count , objects_count , step ;
*/
tag_t rootTask , * attachments , user_tag , * objects ;
const char bz = ' 1 ' , jd = ' 2 ' , sh = ' 3 ' , hq = ' 4 ' , pz = ' 5 ' ;
char * user_name ;
int ifail = ITK_ok , att_count , objects_count ;
tag_t rootTask , * attachments , user_tag ;
char * user_name , step ;
ITEM_attached_object_t * objects ;
logical verdict ;
logical verdict ;
//获取时间
//获取时间
time_t t ;
time_t t ;
time ( & t ) ;
time ( & t ) ;
tm * time = localtime ( & t ) ;
tm * time = localtime ( & t ) ;
stringstream date ;
stringstream date ;
date < < time - > tm_year + 1900 < < " - " ;
date < < time - > tm_year + 1900 < < " - " ;
date < < time - > tm_mon + 1 < < " - " ;
date < < time - > tm_mon + 1 < < " - " ;
date < < time - > tm_mday ;
date < < time - > tm_mday < < " - " ;
date < < time - > tm_hour < < " - " ;
date < < time - > tm_min < < " - " ;
date < < time - > tm_sec ;
//获取数据集
char * temp_path , * attach_type ;
int n_attachs ;
tag_t ref_obj , excelx_tag , excel_tag , wordx_tag , word_tag , type_tag , word_ref , excel_ref , * dataset ;
ITEM_attached_object_t * rev_attachments ;
AE_reference_type_t ae_ref ;
TCTYPE_find_type ( " MSExcelX " , " Dataset " , & excelx_tag ) ;
TCTYPE_find_type ( " MSExcel " , " Dataset " , & excel_tag ) ;
TCTYPE_find_type ( " MSWord " , " Dataset " , & word_tag ) ;
TCTYPE_find_type ( " MSWordX " , " Dataset " , & wordx_tag ) ;
temp_path = getenv ( " temp " ) ;
POM_AM__set_application_bypass ( true ) ;
POM_AM__set_application_bypass ( true ) ;
//获取当前用户
//获取当前用户
POM_get_user ( & user_name , & user_tag ) ;
POM_get_user ( & user_name , & user_tag ) ;
//获取选中的目标对象
//获取选中的目标对象
TC_argument_list_t * arguments = msg . arguments ;
TC_argument_list_t * arguments = msg . arguments ;
int arg_cnt = TC_number_of_arguments ( arguments ) , status = 0 ;
int arg_cnt = TC_number_of_arguments ( arguments ) , status = 0 ;
EPM_ask_root_task ( msg . task , & rootTask ) ;
EPM_ask_root_task ( msg . task , & rootTask ) ;
EPM_ask_attachments ( rootTask , EPM_target_attachment , & att_count , & attachments ) ;
EPM_ask_attachments ( rootTask , EPM_target_attachment , & att_count , & attachments ) ;
//获取流程中配置的handler属性
//获取流程中配置的handler属性
map < string , string > paras ;
map < string , string > paras ;
for ( auto i = 0 ; i < arg_cnt ; i + + ) {
for ( auto i = 0 ; i < arg_cnt ; i + + ) {
char * temp_key , * temp_val ;
char * temp_key , * temp_val ;
@ -98,48 +251,251 @@ int jd_signoff(EPM_action_message_t msg) {
}
}
step = paras [ " step " ] . c_str ( ) [ 0 ] ;
step = paras [ " step " ] . c_str ( ) [ 0 ] ;
printf ( " %d \n " , step ) ;
//创建tc_export目录
printf ( " %s \n " , user_name ) ;
stringstream dir ;
printf ( " %s \n " , date . str ( ) . c_str ( ) ) ;
dir < < temp_path ;
dir < < " \\ tc_export \\ " ;
createDirectory ( dir . str ( ) ) ;
LPVOID lpMsgBuf ;
FormatMessage (
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS ,
NULL ,
GetLastError ( ) ,
MAKELANGID ( LANG_NEUTRAL , SUBLANG_DEFAULT ) , // Default language
( LPTSTR ) & lpMsgBuf ,
0 ,
NULL
) ;
//申请虚拟机
//wstringstream wss;
//wss << getenv("JRE_HOME") << "\\bin\\server\\jvm.dll";
//JavaVMInitArgs vmArgs;
//vmArgs.version = JNI_VERSION_1_8;
//const int OPTION_COUNT = 2;
//vmArgs.nOptions = OPTION_COUNT;
//JavaVMOption options[OPTION_COUNT] = { 0 };
//options[0].optionString = "-Djava.class.path=D:\\Siemens\\Teamcenter11\\bin\\tc_extra_jar\\sign2fileRunnable.jar";
//options[1].optionString = "-Xmx1024m";
//vmArgs.options = options;
//vmArgs.ignoreUnrecognized = JNI_TRUE;
//printf("before load dll\n");
//HMODULE hModule = LoadLibrary(wss.str().c_str());
//if (hModule == NULL) {
// printf("error load dll");
// return -1;
//}
//printf("after load dll\n");
//typedef jint(JNICALL *CreateJavaVMFuncPtr)(JavaVM **pvm, void **penv, void *args);
//CreateJavaVMFuncPtr CreateJavaVM = (CreateJavaVMFuncPtr)GetProcAddress(hModule, "JNI_CreateJavaVM");
//JavaVM *jvm = nullptr;
//JNIEnv *env = nullptr;
//jint res = (*CreateJavaVM)(&jvm, (void**)&env, &vmArgs);
//if (res < 0) {
// printf("error load jvm");
// return -1;
//}
//printf("after load jvm\n");
for ( auto ii = 0 ; ii < att_count ; ii + + ) {
wstringstream wss ;
ITEM_list_rev_attachs_of_type ( attachments [ ii ] , ITEM_item_master_atth , & objects_count , & objects ) ;
wss < < getenv ( " JRE_HOME " ) < < " \\ bin \\ server \\ jvm.dll " ;
for ( auto iii = 0 ; iii < objects_count ; iii + + ) {
POM_modifiable ( objects [ iii ] . attachment , & verdict ) ;
JavaVMInitArgs vmArgs ;
if ( ! verdict ) {
const int OPTION_COUNT = 1 ;
AOM_refresh ( objects [ iii ] . attachment , TRUE ) ;
vmArgs . nOptions = OPTION_COUNT ;
JavaVMOption options [ OPTION_COUNT ] = { 0 } ;
options [ 0 ] . optionString = " -Xmx1024m " ;
vmArgs . options = options ;
vmArgs . version = JNI_VERSION_1_8 ;
vmArgs . ignoreUnrecognized = JNI_TRUE ;
printf ( " before load dll \n " ) ;
HMODULE hModule = LoadLibrary ( wss . str ( ) . c_str ( ) ) ;
if ( hModule = = NULL ) {
printf ( " error load dll " ) ;
return - 1 ;
}
printf ( " after load dll \n " ) ;
typedef jint ( JNICALL * CreateJavaVMFuncPtr ) ( JavaVM * * pvm , void * * penv , void * args ) ;
CreateJavaVMFuncPtr CreateJavaVM = ( CreateJavaVMFuncPtr ) GetProcAddress ( hModule , " JNI_CreateJavaVM " ) ;
typedef jint ( JNICALL * GetCreatedJavaVMs ) ( JavaVM * * , jsize , jsize * ) ;
GetCreatedJavaVMs jni_GetCreatedJavaVMs ;
jni_GetCreatedJavaVMs = ( GetCreatedJavaVMs ) GetProcAddress ( GetModuleHandle (
TEXT ( " jvm.dll " ) ) , " JNI_GetCreatedJavaVMs " ) ;
JavaVM * jvm = nullptr , * jvms ;
JNIEnv * env = nullptr ;
jsize size = 0 ;
jni_GetCreatedJavaVMs ( & jvms , 0 , & size ) ;
printf ( " before load jvm \n " ) ;
if ( size ) {
JavaVM * * buffer = new JavaVM * [ size ] ;
jni_GetCreatedJavaVMs ( buffer , size , & size ) ;
buffer [ 0 ] - > GetEnv ( ( void * * ) & env , JNI_VERSION_1_8 ) ;
jint result = buffer [ 0 ] - > AttachCurrentThread ( ( void * * ) & env , NULL ) ;
} else {
jint res = ( * CreateJavaVM ) ( & jvm , ( void * * ) & env , & vmArgs ) ;
if ( res < 0 ) {
printf ( " error load jvm " ) ;
return - 1 ;
}
}
printf ( " after load jvm \n " ) ;
add_path ( env , " D: \\ Siemens \\ Teamcenter11 \\ bin \\ tc_extra_jar \\ sign2fileRunnable.jar " ) ;
//add_path(env, "D:\\app\\Siemens\\Teamcenter12\\bin\\tc_extra_jar\\sign2fileRunnable.jar");
printf ( " add path \n " ) ;
jclass class_Test ;
int file_type = - 1 ;
printf ( " step:%d \n " , step ) ;
printf ( " user_name:%s \n " , user_name ) ;
printf ( " date:%s \n " , date . str ( ) . c_str ( ) ) ;
for ( auto ii = 0 ; ii < att_count ; ii + + ) {
if ( isTypeOf ( attachments [ ii ] , " ItemRevision " ) ) {
ITKCALL ( AOM_ask_value_tags ( attachments [ ii ] , " IMAN_master_form_rev " , & objects_count , & objects ) ) ;
//表单签名
for ( auto iii = 0 ; iii < objects_count ; iii + + ) {
printf ( " step:%c \n " , step ) ;
AOM_lock ( objects [ iii ] ) ;
switch ( step ) {
switch ( step ) {
case bz :
case bz :
FORM_set_value ( objects [ iii ] . attachment , " jd2_bz " , user_name ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_bz " , user_name ) ;
FORM_set_value ( objects [ iii ] . attachment , " jd2_bzrq " , date . str ( ) . c_str ( ) ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_bzrq " , date . str ( ) . c_str ( ) ) ;
break ;
break ;
case jd :
case jd :
FORM_set_value ( objects [ iii ] . attachment , " jd2_jd " , user_name ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_jd " , user_name ) ;
FORM_set_value ( objects [ iii ] . attachment , " jd2_jdrq " , date . str ( ) . c_str ( ) ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_jdrq " , date . str ( ) . c_str ( ) ) ;
break ;
break ;
case sh :
case sh :
FORM_set_value ( objects [ iii ] . attachment , " jd2_sh " , user_name ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_sh " , user_name ) ;
FORM_set_value ( objects [ iii ] . attachment , " jd2_shrq " , date . str ( ) . c_str ( ) ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_shrq " , date . str ( ) . c_str ( ) ) ;
break ;
break ;
case hq :
case hq :
FORM_set_value ( objects [ iii ] . attachment , " jd2_hq " , user_name ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_hq " , user_name ) ;
FORM_set_value ( objects [ iii ] . attachment , " jd2_hqrq " , date . str ( ) . c_str ( ) ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_hqrq " , date . str ( ) . c_str ( ) ) ;
break ;
break ;
case pz :
case pz :
FORM_set_value ( objects [ iii ] . attachment , " jd2_pz " , user_name ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_pz " , user_name ) ;
FORM_set_value ( objects [ iii ] . attachment , " jd2_pzrq " , date . str ( ) . c_str ( ) ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_pzrq " , date . str ( ) . c_str ( ) ) ;
break ;
case bz_back :
AOM_set_value_string ( objects [ iii ] , " jd2_jd " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_jdrq " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_sh " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_shrq " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_hq " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_hqrq " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_pz " , " " ) ;
AOM_set_value_string ( objects [ iii ] , " jd2_pzrq " , " " ) ;
break ;
break ;
default :
printf ( " %s \n " , " error " ) ;
}
}
AOM_save ( objects [ iii ] . attachment ) ;
ITKCALL ( AOM_save ( objects [ iii ] ) ) ;
AOM_unlock ( objects [ iii ] . attachment ) ;
AOM_unlock ( objects [ iii ] ) ;
AOM_unload ( objects [ iii ] . attachment ) ;
}
MEM_free ( objects ) ;
printf ( " startSign \n " ) ;
ITKCALL ( AOM_ask_value_tags ( attachments [ ii ] , " IMAN_specification " , & n_attachs , & dataset ) ) ;
for ( int i = 0 ; i < n_attachs ; i + + ) {
stringstream ss ;
ss < < dir . str ( ) . c_str ( ) ;
printf ( ss . str ( ) . c_str ( ) ) ;
ITKCALL ( TCTYPE_ask_object_type ( dataset [ i ] , & type_tag ) ) ;
if ( type_tag = = wordx_tag | | type_tag = = word_tag ) {
ITKCALL ( AE_ask_dataset_named_ref2 ( dataset [ i ] , " word " , & ae_ref , & word_ref ) ) ;
char * file_name ;
ITKCALL ( AOM_UIF_ask_value ( word_ref , " file_name " , & file_name ) ) ;
ss < < date . str ( ) . c_str ( ) ;
ss < < " _ " ;
ss < < file_name ;
printf ( " path:%s \n " , ss . str ( ) . c_str ( ) ) ;
ITKCALL ( AE_export_named_ref ( dataset [ i ] , " word " , ss . str ( ) . c_str ( ) ) ) ;
file_type = 0 ;
} else if ( type_tag = = excel_tag | | type_tag = = excelx_tag ) {
ITKCALL ( AE_ask_dataset_named_ref2 ( dataset [ i ] , " excel " , & ae_ref , & excel_ref ) ) ;
char * file_name ;
ITKCALL ( AOM_UIF_ask_value ( excel_ref , " file_name " , & file_name ) ) ;
ss < < date . str ( ) . c_str ( ) ;
ss < < " _ " ;
ss < < file_name ;
printf ( " path:%s \n " , ss . str ( ) . c_str ( ) ) ;
ITKCALL ( AE_export_named_ref ( dataset [ i ] , " excel " , ss . str ( ) . c_str ( ) ) ) ;
file_type = 1 ;
}
printf ( " file_type:%d \n " , file_type ) ;
if ( file_type = = 0 ) {
class_Test = env - > FindClass ( " sign2file/SignToWord " ) ;
int res = sign ( env , class_Test , ss . str ( ) . c_str ( ) , user_name , step ) ;
if ( res ) {
replace_dataset_named_reference ( dataset [ i ] , word_ref , ss . str ( ) . c_str ( ) , " word " ) ;
}
} else if ( file_type = = 1 ) {
class_Test = env - > FindClass ( " sign2file/SignToExcel " ) ;
int res = sign ( env , class_Test , ss . str ( ) . c_str ( ) , user_name , step ) ;
if ( res ) {
replace_dataset_named_reference ( dataset [ i ] , excel_ref , ss . str ( ) . c_str ( ) , " excel " ) ;
}
}
file_type = - 1 ;
}
MEM_free ( dataset ) ;
AOM_ask_value_tags ( attachments [ ii ] , " TC_Attaches " , & n_attachs , & dataset ) ;
for ( int i = 0 ; i < n_attachs ; i + + ) {
stringstream ss ;
ss < < dir . str ( ) . c_str ( ) ;
ITKCALL ( TCTYPE_ask_object_type ( dataset [ i ] , & type_tag ) ) ;
if ( type_tag = = wordx_tag | | type_tag = = word_tag ) {
ITKCALL ( AE_ask_dataset_named_ref2 ( dataset [ i ] , " word " , & ae_ref , & word_ref ) ) ;
char * file_name ;
ITKCALL ( AOM_UIF_ask_value ( word_ref , " file_name " , & file_name ) ) ;
ss < < date . str ( ) . c_str ( ) ;
ss < < " _ " ;
ss < < file_name ;
printf ( " path:%s \n " , ss . str ( ) . c_str ( ) ) ;
ITKCALL ( AE_export_named_ref ( dataset [ i ] , " word " , ss . str ( ) . c_str ( ) ) ) ;
file_type = 0 ;
} else if ( type_tag = = excel_tag | | type_tag = = excelx_tag ) {
ITKCALL ( AE_ask_dataset_named_ref2 ( dataset [ i ] , " excel " , & ae_ref , & excel_ref ) ) ;
char * file_name ;
ITKCALL ( AOM_UIF_ask_value ( excel_ref , " file_name " , & file_name ) ) ;
ss < < date . str ( ) . c_str ( ) ;
ss < < " _ " ;
ss < < file_name ;
printf ( " path:%s \n " , ss . str ( ) . c_str ( ) ) ;
ITKCALL ( AE_export_named_ref ( dataset [ i ] , " excel " , ss . str ( ) . c_str ( ) ) ) ;
file_type = 1 ;
}
printf ( " file_type:%d \n " , file_type ) ;
if ( file_type = = 0 ) {
class_Test = env - > FindClass ( " sign2file/SignToWord " ) ;
int res = sign ( env , class_Test , ss . str ( ) . c_str ( ) , user_name , step ) ;
if ( res ) {
replace_dataset_named_reference ( dataset [ i ] , word_ref , ss . str ( ) . c_str ( ) , " word " ) ;
}
} else if ( file_type = = 1 ) {
class_Test = env - > FindClass ( " sign2file/SignToExcel " ) ;
int res = sign ( env , class_Test , ss . str ( ) . c_str ( ) , user_name , step ) ;
if ( res ) {
replace_dataset_named_reference ( dataset [ i ] , excel_ref , ss . str ( ) . c_str ( ) , " excel " ) ;
}
}
file_type = - 1 ;
}
}
MEM_free ( dataset ) ;
printf ( " endSign \n " ) ;
}
}
}
}
FreeLibrary ( hModule ) ;
POM_AM__set_application_bypass ( false ) ;
POM_AM__set_application_bypass ( false ) ;
return 0 ;
return 0 ;
}
}