|
|
#pragma warning (disable: 4996)
|
|
|
#pragma warning (disable: 4819)
|
|
|
/**
|
|
|
* @headerfile tcua Í·Îļþ
|
|
|
*/
|
|
|
|
|
|
#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 <ics/ics.h>
|
|
|
#include <ics/ics2.h>
|
|
|
#include "common_itk_util.h"
|
|
|
|
|
|
/**
|
|
|
* @headerfile standard c & cpp header files
|
|
|
*/
|
|
|
#include <stdio.h>
|
|
|
#include <ctype.h>
|
|
|
#include <string.h>
|
|
|
//#include <time.h>
|
|
|
//#include <math.h>
|
|
|
#include <string>
|
|
|
#include <vector>
|
|
|
#include <map>
|
|
|
#include <fstream>
|
|
|
#include <iostream>
|
|
|
#include <algorithm>
|
|
|
#include <time.h>
|
|
|
|
|
|
/**
|
|
|
* @headerfile user's header files
|
|
|
*/
|
|
|
#include "epm_handler_common.h"
|
|
|
#include "error_handling.h"
|
|
|
#include "common_itk_util.h"
|
|
|
#include "string_helper.h"
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
typedef struct
|
|
|
{
|
|
|
string name;
|
|
|
string value;
|
|
|
}CAD_ATTR_STRUCT;
|
|
|
extern "C" int POM_AM__set_application_bypass(logical bypass);
|
|
|
|
|
|
|
|
|
|
|
|
int USERSEVICE_TEST(void * returnValue){
|
|
|
int ifail = ITK_ok;
|
|
|
tag_t item;
|
|
|
|
|
|
USERARG_get_tag_argument(&item);
|
|
|
|
|
|
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
int connor_set_release_status(void * returnValue){
|
|
|
int ifail = ITK_ok;
|
|
|
tag_t item = NULL_TAG,release_status =NULL_TAG;
|
|
|
char * release_name = NULL;
|
|
|
tag_t * release_objs = NULL;
|
|
|
|
|
|
USERARG_get_tag_argument(&item);
|
|
|
USERARG_get_string_argument(&release_name);
|
|
|
|
|
|
int temp_count = 1;
|
|
|
release_objs = (tag_t *)MEM_alloc(temp_count*sizeof(tag_t));
|
|
|
release_objs[0] = item;
|
|
|
|
|
|
ITKCALL(ifail = CR_create_release_status(release_name,&release_status));
|
|
|
ITKCALL(ifail = EPM_add_release_status(release_status,temp_count,release_objs,TRUE));
|
|
|
|
|
|
if(release_name !=NULL){
|
|
|
MEM_free(release_name);
|
|
|
}
|
|
|
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
|
|
|
int ORIGIN_set_bypass(void *returnValue)
|
|
|
{
|
|
|
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
int remove_class(void *returnValue)
|
|
|
{
|
|
|
char * icouid = NULL;
|
|
|
tag_t icotag = NULLTAG;
|
|
|
USERARG_get_string_argument(&icouid);
|
|
|
ITK__convert_uid_to_tag(icouid,&icotag);
|
|
|
if(icotag!=NULLTAG){
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
ITKCALL(ICS_ico_remove(icotag));
|
|
|
POM_AM__set_application_bypass(false);
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int ORIGIN_close_bypass(void *returnValue)
|
|
|
{
|
|
|
POM_AM__set_application_bypass(false);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
int getDbMsg(void *returnValue)
|
|
|
{
|
|
|
char * tc_root_dir = getenv("tc_root");
|
|
|
|
|
|
char name[32] = "-u=admin";
|
|
|
char pwd[32] = "-p=admin";
|
|
|
char output_file[SS_MAXPATHLEN] = "";
|
|
|
char jar_file[SS_MAXPATHLEN] = "";
|
|
|
|
|
|
//-----------------------------
|
|
|
strcpy(jar_file, tc_root_dir);
|
|
|
strcat(jar_file, "\\bin\\");
|
|
|
strcat(jar_file, "HX_ProjectDashboard.exe");
|
|
|
|
|
|
|
|
|
//ITKCALL(IMF_export_file(ref_object, temp_file2));
|
|
|
int iCnt;
|
|
|
char *user_lib_env,pTempStr[500];
|
|
|
char local_path[MAX_PATH] = "";
|
|
|
char cmd[256] = "";
|
|
|
//strcpy( cmd, user_lib_env );
|
|
|
strcpy( cmd, "\"" );
|
|
|
strcat( cmd, jar_file );
|
|
|
strcat( cmd, "\" \"" );
|
|
|
|
|
|
strcat( cmd, name );
|
|
|
strcat( cmd, "\" \"" );
|
|
|
strcat( cmd, pwd );
|
|
|
|
|
|
strcat( cmd, "\"" );
|
|
|
printf( "\n%s\n",cmd );
|
|
|
//system( cmd );
|
|
|
WinExec(cmd,SW_HIDE);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
//µ¼³öÊý¾Ý¼¯Îļþ
|
|
|
static int export_dataset_file(tag_t dataset,char *ref_name, char *ext, char **filename, char **original_name)
|
|
|
{
|
|
|
int ifail = ITK_ok;
|
|
|
tag_t ref_object = NULLTAG,
|
|
|
datasettype = NULLTAG,
|
|
|
new_ds = NULLTAG,
|
|
|
tool = NULLTAG,
|
|
|
folder_tag = NULLTAG,
|
|
|
spec_dataset_rev = NULLTAG;
|
|
|
AE_reference_type_t reference_type;
|
|
|
tag_t new_file_tag = NULLTAG;
|
|
|
IMF_file_t file_descriptor;
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *new_file_name;
|
|
|
|
|
|
*filename = (char *)MEM_alloc(sizeof(char)*512);
|
|
|
*original_name = (char *)MEM_alloc(sizeof(char)*512);
|
|
|
strcpy(*filename, "");
|
|
|
AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev);
|
|
|
AE_ask_dataset_named_ref(dataset, ref_name, &reference_type, &ref_object);
|
|
|
if(ref_object==NULLTAG)
|
|
|
{
|
|
|
ECHO("ref_object is NULLTAG\n");
|
|
|
return 1;
|
|
|
}
|
|
|
//WriteLog("\reference_type=%d\n",reference_type);
|
|
|
if(reference_type == AE_PART_OF)
|
|
|
{
|
|
|
char pathname[SS_MAXPATHLEN] = "";
|
|
|
IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname);
|
|
|
char origin_file_name[IMF_filename_size_c + 1] = "";
|
|
|
IMF_ask_original_file_name(ref_object, origin_file_name);
|
|
|
strcpy(*original_name, origin_file_name);
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0);
|
|
|
char *temp_dir = getenv("TEMP");
|
|
|
char temp_file[SS_MAXPATHLEN] = "";
|
|
|
strcpy(temp_file, temp_dir);
|
|
|
strcat(temp_file, "\\");
|
|
|
strcat(temp_file, new_file_name);
|
|
|
ECHO("temp_file=%s\n",temp_file);
|
|
|
|
|
|
IMF_export_file(ref_object, temp_file);
|
|
|
strcpy(*filename, temp_file);
|
|
|
}
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
//µ¼ÈëÊý¾Ý¼¯
|
|
|
static int import_dataset_file(tag_t dataset, char *ref_name, char *ext, char *fullfilename, char *original_name)
|
|
|
{
|
|
|
int ifail = ITK_ok;
|
|
|
tag_t new_file_tag = NULLTAG;
|
|
|
IMF_file_t file_descriptor = NULL;
|
|
|
AOM_refresh( dataset, FALSE );
|
|
|
char *new_file_name = NULL;
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *filename = NULL;
|
|
|
new_file_name = USER_new_file_name( new_ds_name, ref_name, ext, 0 );
|
|
|
|
|
|
|
|
|
filename = strrchr(fullfilename,'\\') + 1;
|
|
|
if (filename == NULL)
|
|
|
return ITK_ok;
|
|
|
ECHO("IMF_import_file\n");
|
|
|
set_bypass(true);
|
|
|
IMF_import_file(fullfilename, new_file_name, SS_BINARY,&new_file_tag, &file_descriptor);
|
|
|
ECHO("IMF_set_original_file_name\n");
|
|
|
IMF_set_original_file_name(new_file_tag, original_name);
|
|
|
|
|
|
IMF_close_file( file_descriptor );
|
|
|
AOM_save( new_file_tag );
|
|
|
AOM_unlock( new_file_tag ) ;
|
|
|
AOM_refresh( new_file_tag, FALSE ) ;
|
|
|
|
|
|
//Ìí¼ÓÖÁÃüÃûÒýÓÃ
|
|
|
set_bypass(true);
|
|
|
ITKCALL( AOM_lock( dataset ) );
|
|
|
ECHO("AE_remove_dataset_named_ref\n");
|
|
|
AE_remove_dataset_named_ref(dataset,ref_name);
|
|
|
AOM_save(dataset);
|
|
|
|
|
|
ECHO("AE_add_dataset_named_ref\n");
|
|
|
set_bypass(true);
|
|
|
AE_add_dataset_named_ref( dataset, ref_name, AE_PART_OF, new_file_tag );
|
|
|
|
|
|
AOM_save( dataset ) ;
|
|
|
AOM_unlock( dataset ) ;
|
|
|
//ITKCALL( AOM_refresh( dataset, FALSE ) );
|
|
|
return ifail;
|
|
|
}
|
|
|
int create_signinfo_file(char *file_content,char *item_id, char **file_name)
|
|
|
{
|
|
|
time_t now;
|
|
|
struct tm *p;
|
|
|
FILE *filePtr = NULL;
|
|
|
|
|
|
char *temp_dir = getenv("TEMP");
|
|
|
char local_path[MAX_PATH] = "";
|
|
|
|
|
|
time(&now);
|
|
|
p = localtime(&now);
|
|
|
if(temp_dir[strlen(temp_dir) - 1] == '\\')
|
|
|
{
|
|
|
sprintf_s(local_path, "%s%s-%d-%d-%d-%d-%d-%d.dat", temp_dir,item_id,
|
|
|
1900+p->tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
sprintf_s(local_path, "%s\\%s-%d-%d-%d-%d-%d-%d.dat", temp_dir,item_id,
|
|
|
1900+p->tm_year,p->tm_mon+1 ,p->tm_mday+1 ,p->tm_hour,p->tm_min ,p->tm_sec);
|
|
|
}
|
|
|
|
|
|
if((filePtr = fopen(local_path, "wt")) == NULL)
|
|
|
{
|
|
|
printf("Can not create the temp dat file!\n");
|
|
|
return -1;
|
|
|
}
|
|
|
*file_name = (char *)MEM_alloc(sizeof(char)*512);
|
|
|
strcpy((*file_name), local_path);
|
|
|
|
|
|
fwrite(file_content, sizeof(char), strlen(file_content), filePtr);
|
|
|
fclose(filePtr);
|
|
|
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
int signoff_acad(tag_t dataset, char *dat_file)
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
tag_t spec_dataset_rev = NULLTAG,
|
|
|
ref_object = NULLTAG;
|
|
|
|
|
|
AE_reference_type_t reference_type;
|
|
|
|
|
|
AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev);
|
|
|
|
|
|
char ref_name[WSO_name_size_c + 1] = "JK8_dwg";
|
|
|
|
|
|
AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object);
|
|
|
if(ref_object==NULLTAG)
|
|
|
{
|
|
|
printf("\nref_object is NULLTAG\n");
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
printf("\reference_type=%d\n",reference_type);
|
|
|
if(reference_type == AE_PART_OF)
|
|
|
{
|
|
|
char pathname[SS_MAXPATHLEN] = "";
|
|
|
printf("\n3333333\n");
|
|
|
IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname);
|
|
|
char origin_file_name[IMF_filename_size_c + 1] = "";
|
|
|
IMF_ask_original_file_name(ref_object, origin_file_name);
|
|
|
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *new_file_name = USER_new_file_name(new_ds_name, ref_name, "dwg", 0);
|
|
|
char *temp_dir = getenv("TEMP");
|
|
|
char temp_file[SS_MAXPATHLEN] = "";
|
|
|
strcpy(temp_file, temp_dir);
|
|
|
strcat(temp_file, "\\");
|
|
|
strcat(temp_file, new_file_name);
|
|
|
printf("\ntemp_file=%s\n",temp_file);
|
|
|
|
|
|
IMF_export_file(ref_object, temp_file);
|
|
|
printf("\n555555555\n");
|
|
|
|
|
|
int iCnt;
|
|
|
char *user_lib_env,pTempStr[500];
|
|
|
char local_path[MAX_PATH] = "";
|
|
|
char cmd[256] = "";
|
|
|
//user_lib_env = getenv("TC_USER_LIB");
|
|
|
//strcpy(local_path, user_lib_env);
|
|
|
|
|
|
//iCnt = strlen(user_lib_env);
|
|
|
//while( user_lib_env[iCnt] != '\\' )
|
|
|
//{
|
|
|
// iCnt--;
|
|
|
//}
|
|
|
|
|
|
//strcpy(pTempStr,"");
|
|
|
//strcpy(pTempStr,&user_lib_env[iCnt+1]);
|
|
|
|
|
|
//if( strcmp(pTempStr,"acad_signoff.exe") != 0 )
|
|
|
//{
|
|
|
// strcat( user_lib_env, "\\acad_signoff.exe" );
|
|
|
//}
|
|
|
|
|
|
//strcpy( cmd, user_lib_env );
|
|
|
//strcat( user_lib_env, "\\acad_signoff.exe" );
|
|
|
strcpy( cmd, "acad_signoff.exe" );
|
|
|
strcat( cmd, " \"" );
|
|
|
strcat( cmd, temp_file );
|
|
|
strcat( cmd, "\" \"" );
|
|
|
strcat( cmd, dat_file );
|
|
|
strcat( cmd, "\"" );
|
|
|
printf( "\n%s\n",cmd );
|
|
|
system( cmd );
|
|
|
|
|
|
//strcpy(user_lib_env, local_path);
|
|
|
|
|
|
|
|
|
tag_t new_file_tag = NULLTAG;
|
|
|
IMF_file_t file_descriptor;
|
|
|
IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor);
|
|
|
IMF_set_original_file_name(new_file_tag, origin_file_name);
|
|
|
IMF_close_file(file_descriptor);
|
|
|
AOM_save(new_file_tag);
|
|
|
AOM_unlock(new_file_tag);
|
|
|
|
|
|
AOM_lock(spec_dataset_rev);
|
|
|
//CALL(AOM_load (spec_dataset_rev));
|
|
|
AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object);
|
|
|
AE_insert_dataset_named_ref2(spec_dataset_rev,0, ref_name, AE_PART_OF, new_file_tag);//µÚÒ»¸öλÖòåÈëÐÂÃüÃûÒýÓÃ
|
|
|
//AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag);
|
|
|
AOM_save(spec_dataset_rev);
|
|
|
AOM_unlock(spec_dataset_rev);
|
|
|
}
|
|
|
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
int signoff_msword(tag_t dataset, char *dat_file,char *ext)
|
|
|
{
|
|
|
tag_t spec_dataset_rev = NULLTAG , ref_object = NULLTAG;
|
|
|
AE_reference_type_t reference_type;
|
|
|
//printf("\n111111111111\n");
|
|
|
AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev);
|
|
|
|
|
|
char ref_name[WSO_name_size_c + 1] = "Fnd0word";
|
|
|
//printf("\n22222222222\n");
|
|
|
AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object);
|
|
|
if(reference_type == AE_PART_OF)
|
|
|
{
|
|
|
//printf("\n3333333333333\n");
|
|
|
char pathname[SS_MAXPATHLEN] = "";
|
|
|
IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname);
|
|
|
char origin_file_name[IMF_filename_size_c + 1] = "";
|
|
|
IMF_ask_original_file_name(ref_object, origin_file_name);
|
|
|
//printf("\n44444444444444\n");
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0);
|
|
|
char *temp_dir = getenv("temp");
|
|
|
temp_dir="E:\\TEMP";
|
|
|
//printf("\n555555555555\n");
|
|
|
char temp_file[SS_MAXPATHLEN] = "";
|
|
|
strcpy(temp_file, temp_dir);
|
|
|
strcat(temp_file, "\\");
|
|
|
strcat(temp_file, new_file_name);
|
|
|
|
|
|
IMF_export_file(ref_object, temp_file);
|
|
|
//printf("\n66666666666666\n");
|
|
|
|
|
|
int iCnt;
|
|
|
char *user_lib_env,pTempStr[500];
|
|
|
char local_path[MAX_PATH] = "";
|
|
|
char cmd[256] = "";
|
|
|
//user_lib_env = getenv("TC_USER_LIB");
|
|
|
//strcpy(local_path, user_lib_env);
|
|
|
|
|
|
//iCnt = strlen(user_lib_env);
|
|
|
//while( user_lib_env[iCnt] != '\\' )
|
|
|
//{
|
|
|
// iCnt--;
|
|
|
//}
|
|
|
|
|
|
//strcpy(pTempStr,"");
|
|
|
//strcpy(pTempStr,&user_lib_env[iCnt+1]);
|
|
|
|
|
|
//if( strcmp(pTempStr,"SubstMacros-MSWord.wsf") != 0 )
|
|
|
//{
|
|
|
// strcat( user_lib_env, "\\SubstMacros-MSWord.wsf" );
|
|
|
//}
|
|
|
|
|
|
//strcpy( cmd, user_lib_env );
|
|
|
strcpy( cmd, "SubstMacros-MSWord.wsf" );
|
|
|
strcat( cmd, " \"" );
|
|
|
strcat( cmd, temp_file );
|
|
|
strcat( cmd, "\" \"" );
|
|
|
strcat( cmd, dat_file );
|
|
|
strcat( cmd, "\"" );
|
|
|
printf( "\n%s\n",cmd );
|
|
|
system( cmd );
|
|
|
//printf("\n777777777777\n");
|
|
|
//strcpy(user_lib_env, local_path);
|
|
|
|
|
|
|
|
|
tag_t new_file_tag = NULLTAG;
|
|
|
IMF_file_t file_descriptor;
|
|
|
IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor);
|
|
|
IMF_set_original_file_name(new_file_tag, origin_file_name);
|
|
|
IMF_close_file(file_descriptor);
|
|
|
AOM_save(new_file_tag);
|
|
|
AOM_unlock(new_file_tag);
|
|
|
|
|
|
AOM_lock(spec_dataset_rev);
|
|
|
|
|
|
AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object);
|
|
|
|
|
|
AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag);
|
|
|
AOM_save(spec_dataset_rev);
|
|
|
AOM_unlock(spec_dataset_rev);
|
|
|
}
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
int signoff_pdf(tag_t dataset, char *dat_file,char *ext)
|
|
|
{
|
|
|
tag_t spec_dataset_rev = NULLTAG,
|
|
|
ref_object = NULLTAG;
|
|
|
|
|
|
AE_reference_type_t reference_type;
|
|
|
printf("\n111111111111\n");
|
|
|
AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev);
|
|
|
|
|
|
char ref_name[WSO_name_size_c + 1] = "PDF_Reference";
|
|
|
printf("\n22222222222\n");
|
|
|
AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object);
|
|
|
if(reference_type == AE_PART_OF)
|
|
|
{
|
|
|
printf("\n3333333333333\n");
|
|
|
char pathname[SS_MAXPATHLEN] = "";
|
|
|
IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname);
|
|
|
char origin_file_name[IMF_filename_size_c + 1] = "";
|
|
|
IMF_ask_original_file_name(ref_object, origin_file_name);
|
|
|
printf("\n44444444444444\n");
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0);
|
|
|
char *temp_dir = getenv("temp");
|
|
|
temp_dir="E:\\TEMP";
|
|
|
printf("\n555555555555\n");
|
|
|
char temp_file[SS_MAXPATHLEN] = "";
|
|
|
char temp_file2[SS_MAXPATHLEN] = "";
|
|
|
strcpy(temp_file, temp_dir);
|
|
|
strcat(temp_file, "\\");
|
|
|
strcat(temp_file, new_file_name);
|
|
|
|
|
|
IMF_export_file(ref_object, temp_file);
|
|
|
sprintf(temp_file2,"%s.pdf",temp_file);
|
|
|
//printf("\n66666666666666\n");
|
|
|
|
|
|
int iCnt;
|
|
|
char *user_lib_env,pTempStr[500];
|
|
|
char local_path[MAX_PATH] = "";
|
|
|
char cmd[256] = "";
|
|
|
char * tc_root_dir = getenv("tc_root");
|
|
|
//user_lib_env = getenv("TC_USER_LIB");
|
|
|
//strcpy(local_path, user_lib_env);
|
|
|
|
|
|
//iCnt = strlen(user_lib_env);
|
|
|
//while( user_lib_env[iCnt] != '\\' )
|
|
|
//{
|
|
|
// iCnt--;
|
|
|
//}
|
|
|
|
|
|
//strcpy(pTempStr,"");
|
|
|
//strcpy(pTempStr,&user_lib_env[iCnt+1]);
|
|
|
|
|
|
//if( strcmp(pTempStr,"SubstMacros-MSWord.wsf") != 0 )
|
|
|
//{
|
|
|
// strcat( user_lib_env, "\\SubstMacros-MSWord.wsf" );
|
|
|
//}
|
|
|
strcpy( cmd, "java -jar " );
|
|
|
strcat( cmd, tc_root_dir );
|
|
|
strcat( cmd, "\\bin\\JK_PDFSignoff.jar" );
|
|
|
strcat( cmd, " \"" );
|
|
|
strcat( cmd, dat_file);
|
|
|
strcat( cmd, "\" \"" );
|
|
|
strcat( cmd, temp_file);
|
|
|
strcat( cmd, "\" \"" );
|
|
|
strcat( cmd, temp_file2);
|
|
|
strcat( cmd, "\"" );
|
|
|
printf( "\n%s\n",cmd );
|
|
|
system( cmd );
|
|
|
//printf("\n777777777777\n");
|
|
|
//strcpy(user_lib_env, local_path);
|
|
|
|
|
|
|
|
|
tag_t new_file_tag = NULLTAG;
|
|
|
IMF_file_t file_descriptor;
|
|
|
IMF_import_file(temp_file2, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor);
|
|
|
IMF_set_original_file_name(new_file_tag, origin_file_name);
|
|
|
IMF_close_file(file_descriptor);
|
|
|
AOM_save(new_file_tag);
|
|
|
AOM_unlock(new_file_tag);
|
|
|
|
|
|
AOM_lock(spec_dataset_rev);
|
|
|
|
|
|
AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object);
|
|
|
|
|
|
AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag);
|
|
|
AOM_save(spec_dataset_rev);
|
|
|
AOM_unlock(spec_dataset_rev);
|
|
|
}
|
|
|
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
|
|
|
|
|
|
int signoff_msexcel(tag_t dataset, char *dat_file, char *ext)
|
|
|
{
|
|
|
tag_t spec_dataset_rev = NULLTAG,
|
|
|
ref_object = NULLTAG;
|
|
|
|
|
|
AE_reference_type_t reference_type;
|
|
|
|
|
|
AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev);
|
|
|
|
|
|
char ref_name[WSO_name_size_c + 1] = "excel";
|
|
|
AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object);
|
|
|
if(reference_type == AE_PART_OF)
|
|
|
{
|
|
|
char pathname[SS_MAXPATHLEN] = "";
|
|
|
IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname);
|
|
|
char origin_file_name[IMF_filename_size_c + 1] = "";
|
|
|
IMF_ask_original_file_name(ref_object, origin_file_name);
|
|
|
|
|
|
char new_ds_name[WSO_name_size_c + 1] = "";
|
|
|
char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0);
|
|
|
char *temp_dir = getenv("temp");
|
|
|
temp_dir="E:\\TEMP";
|
|
|
char temp_file[SS_MAXPATHLEN] = "";
|
|
|
strcpy(temp_file, temp_dir);
|
|
|
strcat(temp_file, "\\");
|
|
|
strcat(temp_file, new_file_name);
|
|
|
|
|
|
IMF_export_file(ref_object, temp_file);
|
|
|
|
|
|
|
|
|
int iCnt;
|
|
|
char *user_lib_env,pTempStr[500];
|
|
|
char local_path[MAX_PATH] = "";
|
|
|
char cmd[256] = "";
|
|
|
/*user_lib_env = getenv("TC_USER_LIB");
|
|
|
strcpy(local_path, user_lib_env);
|
|
|
|
|
|
iCnt = strlen(user_lib_env);
|
|
|
while( user_lib_env[iCnt] != '\\' )
|
|
|
{
|
|
|
iCnt--;
|
|
|
}
|
|
|
strcpy(pTempStr,"");
|
|
|
strcpy(pTempStr,&user_lib_env[iCnt+1]);
|
|
|
|
|
|
if( strcmp(pTempStr,"SubstMacros-MSExcel.wsf") != 0 )
|
|
|
{
|
|
|
strcat( user_lib_env, "\\SubstMacros-MSExcel.wsf" );
|
|
|
}*/
|
|
|
//strcpy( cmd, user_lib_env );
|
|
|
strcpy( cmd, "SubstMacros-MSExcel.wsf" );
|
|
|
strcat( cmd, " \"" );
|
|
|
strcat( cmd, temp_file );
|
|
|
strcat( cmd, "\" \"" );
|
|
|
strcat( cmd, dat_file );
|
|
|
strcat( cmd, "\"" );
|
|
|
printf( "\n%s\n",cmd );
|
|
|
system( cmd );
|
|
|
|
|
|
//strcpy(user_lib_env, local_path);
|
|
|
|
|
|
|
|
|
tag_t new_file_tag = NULLTAG;
|
|
|
IMF_file_t file_descriptor;
|
|
|
IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor);
|
|
|
IMF_set_original_file_name(new_file_tag, origin_file_name);
|
|
|
IMF_close_file(file_descriptor);
|
|
|
AOM_save(new_file_tag);
|
|
|
AOM_unlock(new_file_tag);
|
|
|
|
|
|
AOM_lock(spec_dataset_rev);
|
|
|
//CALL(AOM_load (dataset));
|
|
|
//CALL(AOM_load(spec_dataset_rev));
|
|
|
AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object);
|
|
|
AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag);
|
|
|
AOM_save(spec_dataset_rev);
|
|
|
AOM_unlock(spec_dataset_rev);
|
|
|
}
|
|
|
|
|
|
return ITK_ok;
|
|
|
}
|
|
|
/*************************************************************************************************
|
|
|
* jf_signoff_dataset()
|
|
|
*
|
|
|
* Description:
|
|
|
* This handler will set signoff infomation to properties of form
|
|
|
*
|
|
|
* Syntax:
|
|
|
* jf-signoff-dataset
|
|
|
* [-debug=true|false]
|
|
|
*
|
|
|
* -SignName: jf3bianzhi=Éè¼Æ;jf3drawing=»æÍ¼;jf3review=ÉóºË;jf3reviewdate=ÉóºËÈÕÆÚ
|
|
|
*
|
|
|
*
|
|
|
* -bypass
|
|
|
* Placement:
|
|
|
* no request
|
|
|
*
|
|
|
**************************************************************************************************/
|
|
|
int jf_signoff_dataset( EPM_action_message_t msg )
|
|
|
{
|
|
|
int ifail = ITK_ok, rcode = 0;
|
|
|
//²ÎÊýÏà¹Ø
|
|
|
char arg1value[1024] = "",arg2value[1024] = "",arg3value[1024]="",arg4value[1024]="",
|
|
|
signcounter_info[1024] = "", *value = NULL;
|
|
|
char *argflag =NULL,*argvalue=NULL ,*arg = NULL;
|
|
|
BOOL bypass = FALSE;
|
|
|
int arg_cnt = 0;
|
|
|
//Á÷³Ì½ÚµãÏà¹Ø
|
|
|
tag_t root_task = NULLTAG,*sub_tasks = NULL,current_task = NULLTAG,type_tag = NULLTAG;
|
|
|
int sub_task_count = 0;
|
|
|
char root_task_name[128]="",task_name[128] = "";
|
|
|
int occur_of_counts = 0;
|
|
|
tag_t *taskAttches = NULLTAG;
|
|
|
char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]="";
|
|
|
////Ñ»·ÄÚ²¿±äÁ¿
|
|
|
tag_t cur_task = NULLTAG;
|
|
|
char task_type[WSO_name_size_c+1] = "";
|
|
|
//Ñ»·±äÁ¿
|
|
|
int i=0, j=0, k=0, count = 0, n = 0;
|
|
|
//½ÚµãÐÅÏ¢±äÁ¿
|
|
|
char sign_info[2048]="";
|
|
|
//½ÚµãÑ»·´¦Àí±äÁ¿
|
|
|
tag_t itemrevision = NULLTAG,master_form_rel_type = NULLTAG;
|
|
|
char rev_id[ITEM_id_size_c+1]="";
|
|
|
char item_id[ITEM_id_size_c+1]="";
|
|
|
int form_count = 0;
|
|
|
tag_t *form_list = NULL,master_form = NULLTAG;
|
|
|
char local_path[128]="";
|
|
|
//±àÖÆ½Úµã
|
|
|
int s=0;
|
|
|
char *timeinfo2="";
|
|
|
EPM_decision_t decision = EPM_nogo;
|
|
|
tag_t aUserTag,responsibleParty;
|
|
|
char *userName;
|
|
|
date_t decision_date;
|
|
|
char person_name[SA_name_size_c + 1] = "";
|
|
|
char *prop_name="last_mod_date";
|
|
|
//»áÇ©Ïà¹Ø
|
|
|
int n_prop=0, q = 0;
|
|
|
char **prop_names=NULL, hq_name[128] = "", hq_time_name[128] = "", *hq_value=NULL;
|
|
|
char exclude_type[256]="", item_type[ITEM_type_size_c+ 1]= "";
|
|
|
tag_t item = NULLTAG;
|
|
|
logical is_sign = false;
|
|
|
|
|
|
map<string,CAD_ATTR_STRUCT> sign_map;
|
|
|
vector<string> prop_vec;
|
|
|
current_task = msg.task;
|
|
|
//CreateLogFile("PLA8_signoff",&txtfile);
|
|
|
ECHO("=========================================================\n");
|
|
|
ECHO("jf_signoff_dataset ¿ªÊ¼Ö´ÐÐ\n");
|
|
|
ECHO("=========================================================\n");
|
|
|
|
|
|
arg_cnt = TC_number_of_arguments(msg.arguments);
|
|
|
ECHO("²ÎÊý¸öÊýΪ£º%d\n",arg_cnt);
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
if (arg_cnt > 0)
|
|
|
{
|
|
|
for (i=0;i<arg_cnt;i++)
|
|
|
{
|
|
|
arg = TC_next_argument(msg.arguments);
|
|
|
ifail = ITK_ask_argument_named_value((const char*)arg, &argflag, &argvalue);
|
|
|
if (stricmp(argflag, "SignName") == 0)
|
|
|
{
|
|
|
if(argvalue != NULL)
|
|
|
{
|
|
|
//strcpy(arg1value,argvalue);
|
|
|
vector<string> ans,ans1;
|
|
|
Split(argvalue,";",ans);
|
|
|
for( j = 0; j <ans.size(); j++ )
|
|
|
{
|
|
|
CAD_ATTR_STRUCT one_elem;
|
|
|
Split(ans[j],"=",ans1);
|
|
|
if( ans1.size() > 1 )
|
|
|
{
|
|
|
one_elem.name = ans1[1];
|
|
|
sign_map.insert(pair<string,CAD_ATTR_STRUCT>(ans1[0],one_elem));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else if(stricmp(argflag,"bypass") == 0)
|
|
|
{
|
|
|
bypass = TRUE;
|
|
|
}
|
|
|
//else if(stricmp(argflag,"exclude_type") == 0)
|
|
|
//{
|
|
|
// if(argvalue != NULL)
|
|
|
// {
|
|
|
// strcpy(exclude_type,argvalue);
|
|
|
// }
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
MEM_free(argflag);
|
|
|
MEM_free(argvalue);
|
|
|
}
|
|
|
|
|
|
//»ñÈ¡ÊôÐÔ
|
|
|
EPM_ask_root_task( msg.task, &root_task );
|
|
|
EPM_ask_sub_tasks( root_task, &sub_task_count, &sub_tasks);
|
|
|
EPM_ask_attachments(root_task, EPM_target_attachment, &occur_of_counts, &taskAttches);
|
|
|
ECHO("%d target attachment found",occur_of_counts);
|
|
|
|
|
|
for( count=0; count<occur_of_counts; count++ )
|
|
|
{
|
|
|
ECHO("the %dth work",count);
|
|
|
TCTYPE_ask_object_type(taskAttches[count], &type_tag);
|
|
|
ifail = TCTYPE_ask_class_name(type_tag, type_class);
|
|
|
ECHO("type_class : %s",type_class);
|
|
|
|
|
|
//¹ýÂ˵ô·Ç°æ±¾¶ÔÏó
|
|
|
if (((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL))
|
|
|
&&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL)
|
|
|
&& (strstr(type_class,"BOM") ==NULL) && (strstr(type_class,"bom") ==NULL) && (strstr(type_class,"Bom") == NULL))
|
|
|
{
|
|
|
itemrevision = taskAttches[count];
|
|
|
ITEM_ask_rev_id(itemrevision,rev_id);
|
|
|
ITEM_ask_item_of_rev( itemrevision, &item);
|
|
|
ITEM_ask_id(item, item_id);
|
|
|
GRM_find_relation_type( TC_master_form_rtype, &master_form_rel_type );
|
|
|
GRM_list_secondary_objects_only(itemrevision, master_form_rel_type, &form_count, &form_list );
|
|
|
if( form_count ==0 )
|
|
|
{
|
|
|
ECHO("δÕÒµ½Ç©Ãûform,¼ÌÐø...");
|
|
|
continue;
|
|
|
}
|
|
|
master_form = itemrevision;// form_list[0];
|
|
|
map<string,CAD_ATTR_STRUCT>::iterator it;
|
|
|
for( it = sign_map.begin(); it != sign_map.end(); it ++ )
|
|
|
{
|
|
|
CAD_ATTR_STRUCT one_elem;
|
|
|
AOM_ask_value_string( master_form, it->first.c_str(), &value);
|
|
|
one_elem.name = it->second.name;
|
|
|
one_elem.value.assign(value);
|
|
|
it->second = one_elem;
|
|
|
}
|
|
|
DOFREE(form_list);
|
|
|
//½«formÊôÐÔдÈëÎı¾Îļþ
|
|
|
string info;
|
|
|
map<string,CAD_ATTR_STRUCT>::iterator buf_it;
|
|
|
for( it = sign_map.begin(); it != sign_map.end(); it ++ )
|
|
|
{
|
|
|
info.append(it->second.name);
|
|
|
info.append("=");
|
|
|
info.append(it->second.value);
|
|
|
info.append("|");
|
|
|
}
|
|
|
ECHO("\n info: %s",info.c_str());
|
|
|
char *data_file = NULL;
|
|
|
create_signinfo_file((char*)info.c_str(),item_id, &data_file);
|
|
|
if( data_file == NULL )
|
|
|
{
|
|
|
|
|
|
continue;
|
|
|
}
|
|
|
ECHO("\n ´´½¨Îı¾Îļþ%s\n",data_file);
|
|
|
//»ñµÃÊý¾Ý¼¯
|
|
|
tag_t relation_type=NULLTAG;
|
|
|
//tag_t attach_relation_type = NULLTAG;
|
|
|
GRM_find_relation_type(TC_specification_rtype, &relation_type);
|
|
|
tag_t *secondary_objects=NULLTAG;
|
|
|
int ds_count = 0;
|
|
|
char *dataset_type = NULL, *desc_value=NULL,*file_path = NULL,*desc_path;
|
|
|
|
|
|
GRM_list_secondary_objects_only(itemrevision, relation_type, &ds_count, &secondary_objects);
|
|
|
for (int j = 0; j < ds_count; j++)
|
|
|
{
|
|
|
printf("½ø1\n");
|
|
|
AOM_ask_value_string(secondary_objects[j], "object_type", &dataset_type);
|
|
|
int des_count=0;
|
|
|
tag_t *dess=NULL;
|
|
|
char *name;
|
|
|
if(!(strcmp(dataset_type, "JK8_AutoCAD") == 0||
|
|
|
strcmp(dataset_type, "MSWord") ==0||
|
|
|
strcmp(dataset_type, "MSWordX") ==0||
|
|
|
strcmp(dataset_type, "MSExcel") ==0||
|
|
|
strcmp(dataset_type, "MSExcelX") ==0||
|
|
|
strcmp(dataset_type, "PDF") ==0)){
|
|
|
if(dataset_type!=NULL){
|
|
|
MEM_free(dataset_type);
|
|
|
dataset_type =NULL;
|
|
|
}
|
|
|
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AOM_ask_value_tags(secondary_objects[j], "ref_list", &des_count,&dess);
|
|
|
if(des_count<1){
|
|
|
printf("¸ÃÊý¾Ý¼¯ÒýÓÃÊýÁ¿´íÎó\n");
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
printf("¿ªÊ¼ÅжÏÀàÐÍ\n");
|
|
|
if(strcmp(dataset_type, "JK8_AutoCAD") == 0)
|
|
|
{
|
|
|
printf("cadÀàÐÍ\n");
|
|
|
// ECHO("µ¼³ödwg...\n");
|
|
|
// POM_AM__set_application_bypass(true);
|
|
|
// ifail = export_dataset_file(dataset_list[j], "PDF_Reference", "dwg", &filename,&original_name);
|
|
|
if( data_file != NULL )
|
|
|
signoff_acad(secondary_objects[j],data_file);
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSWord") ==0 )
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msword(secondary_objects[j],data_file,"doc");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSWordX") ==0)
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msword(secondary_objects[j],data_file,"docm");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSExcel") ==0 )
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msexcel(secondary_objects[j],data_file,"xls");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSExcelX") ==0)
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msexcel(secondary_objects[j],data_file,"xlsm");
|
|
|
}else if(strcmp(dataset_type, "PDF") ==0){
|
|
|
signoff_pdf(secondary_objects[j],data_file,"pdf");
|
|
|
}
|
|
|
MEM_free(dataset_type);
|
|
|
|
|
|
}
|
|
|
DOFREE(secondary_objects);
|
|
|
|
|
|
GRM_find_relation_type(TC_attaches_rtype, &relation_type);
|
|
|
|
|
|
GRM_list_secondary_objects_only(itemrevision, relation_type, &ds_count, &secondary_objects);
|
|
|
for (int j = 0; j < ds_count; j++)
|
|
|
{
|
|
|
printf("½ø2\n");
|
|
|
AOM_ask_value_string(secondary_objects[j], "object_type", &dataset_type);
|
|
|
int des_count=0;
|
|
|
tag_t *dess=NULL;
|
|
|
char *name;
|
|
|
|
|
|
if(!(strcmp(dataset_type, "JK8_AutoCAD") == 0||
|
|
|
strcmp(dataset_type, "MSWord") ==0||
|
|
|
strcmp(dataset_type, "MSWordX") ==0||
|
|
|
strcmp(dataset_type, "MSExcel") ==0||
|
|
|
strcmp(dataset_type, "MSExcelX") ==0||
|
|
|
strcmp(dataset_type, "PDF") ==0)){
|
|
|
if(dataset_type!=NULL){
|
|
|
MEM_free(dataset_type);
|
|
|
dataset_type =NULL;
|
|
|
}
|
|
|
|
|
|
continue;
|
|
|
}
|
|
|
AOM_ask_value_tags(secondary_objects[j], "ref_list", &des_count,&dess);
|
|
|
if(des_count<1){
|
|
|
printf("¸ÃÊý¾Ý¼¯ÒýÓÃÊýÁ¿´íÎó\n");
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
if(strcmp(dataset_type, "JK8_AutoCAD") == 0)
|
|
|
{
|
|
|
// ECHO("µ¼³ödwg...\n");
|
|
|
// POM_AM__set_application_bypass(true);
|
|
|
// ifail = export_dataset_file(dataset_list[j], "PDF_Reference", "dwg", &filename,&original_name);
|
|
|
if( data_file != NULL )
|
|
|
signoff_acad(secondary_objects[j],data_file);
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSWord") ==0 )
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msword(secondary_objects[j],data_file,"doc");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSWordX") ==0)
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msword(secondary_objects[j],data_file,"docx");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSExcel") ==0 )
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msexcel(secondary_objects[j],data_file,"xls");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSExcelX") ==0)
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msexcel(secondary_objects[j],data_file,"xlsx");
|
|
|
}else if(strcmp(dataset_type, "PDF") ==0){
|
|
|
signoff_pdf(secondary_objects[j],data_file,"pdf");
|
|
|
}
|
|
|
MEM_free(dataset_type);
|
|
|
}
|
|
|
|
|
|
DOFREE(secondary_objects);
|
|
|
|
|
|
GRM_find_relation_type("IMAN_Rendering", &relation_type);
|
|
|
|
|
|
GRM_list_secondary_objects_only(itemrevision, relation_type, &ds_count, &secondary_objects);
|
|
|
for (int j = 0; j < ds_count; j++)
|
|
|
{
|
|
|
printf("½ø3\n");
|
|
|
AOM_ask_value_string(secondary_objects[j], "object_type", &dataset_type);
|
|
|
int des_count=0;
|
|
|
tag_t *dess=NULL;
|
|
|
char *name;
|
|
|
|
|
|
if(!(strcmp(dataset_type, "JK8_AutoCAD") == 0||
|
|
|
strcmp(dataset_type, "MSWord") ==0||
|
|
|
strcmp(dataset_type, "MSWordX") ==0||
|
|
|
strcmp(dataset_type, "MSExcel") ==0||
|
|
|
strcmp(dataset_type, "MSExcelX") ==0||
|
|
|
strcmp(dataset_type, "PDF") ==0)){
|
|
|
if(dataset_type!=NULL){
|
|
|
MEM_free(dataset_type);
|
|
|
dataset_type =NULL;
|
|
|
}
|
|
|
|
|
|
continue;
|
|
|
}
|
|
|
AOM_ask_value_tags(secondary_objects[j], "ref_list", &des_count,&dess);
|
|
|
if(des_count<1){
|
|
|
printf("¸ÃÊý¾Ý¼¯ÒýÓÃÊýÁ¿´íÎó\n");
|
|
|
continue;
|
|
|
}
|
|
|
if(strcmp(dataset_type, "JK8_AutoCAD") == 0)
|
|
|
{
|
|
|
// ECHO("µ¼³ödwg...\n");
|
|
|
// POM_AM__set_application_bypass(true);
|
|
|
// ifail = export_dataset_file(dataset_list[j], "PDF_Reference", "dwg", &filename,&original_name);
|
|
|
if( data_file != NULL )
|
|
|
signoff_acad(secondary_objects[j],data_file);
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSWord") ==0 )
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msword(secondary_objects[j],data_file,"doc");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSWordX") ==0)
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msword(secondary_objects[j],data_file,"docx");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSExcel") ==0 )
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msexcel(secondary_objects[j],data_file,"xls");
|
|
|
}
|
|
|
else if(strcmp(dataset_type, "MSExcelX") ==0)
|
|
|
{
|
|
|
AOM_ask_value_string(dess[0], "original_file_name", &name);
|
|
|
printf("name=%s\n",name);
|
|
|
if ((strstr(name,"docx") != NULL)||(strstr(name,"xlsx") != NULL)){
|
|
|
printf("ºó׺Ϊdocx»òxlsxÍ˳ö\n");
|
|
|
continue;
|
|
|
}
|
|
|
signoff_msexcel(secondary_objects[j],data_file,"xlsx");
|
|
|
}else if(strcmp(dataset_type, "PDF") ==0){
|
|
|
signoff_pdf(secondary_objects[j],data_file,"pdf");
|
|
|
}
|
|
|
MEM_free(dataset_type);
|
|
|
}
|
|
|
DOFREE(secondary_objects);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
POM_AM__set_application_bypass(false);
|
|
|
DOFREE(taskAttches);
|
|
|
ECHO("=========================================================\n");
|
|
|
ECHO("jf_signoff_dataset Ö´ÐнáÊø\n");
|
|
|
ECHO("=========================================================\n");
|
|
|
return rcode;
|
|
|
}
|
|
|
|
|
|
|
|
|
int JK_bypass(EPM_action_message_t msg){
|
|
|
ECHO("==================bypass START =======================\n");
|
|
|
int ifail = ITK_ok, arg_cnt;
|
|
|
char *argflag =NULL,*argvalue=NULL ,*arg = NULL;
|
|
|
int i=0, j=0;
|
|
|
BOOL bypass = FALSE;
|
|
|
arg_cnt = TC_number_of_arguments(msg.arguments);
|
|
|
ECHO("²ÎÊý¸öÊýΪ£º%d\n",arg_cnt);
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
if (arg_cnt > 0)
|
|
|
{
|
|
|
for (i=0;i<arg_cnt;i++)
|
|
|
{
|
|
|
arg = TC_next_argument(msg.arguments);
|
|
|
ifail = ITK_ask_argument_named_value((const char*)arg, &argflag, &argvalue);
|
|
|
if(stricmp(argflag,"bypass") == 0)
|
|
|
{
|
|
|
if(stricmp(argvalue,"true") == 0){
|
|
|
bypass=TRUE;
|
|
|
}else if(stricmp(argvalue,"false") == 0){
|
|
|
bypass = FALSE;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if(argflag!=NULL){
|
|
|
MEM_free(argflag);
|
|
|
argflag=NULL;
|
|
|
}
|
|
|
if(argvalue!=NULL){
|
|
|
MEM_free(argvalue);
|
|
|
argvalue=NULL;
|
|
|
}
|
|
|
}
|
|
|
printf("bypass=%d /n",bypass);
|
|
|
POM_AM__set_application_bypass(bypass);
|
|
|
|
|
|
ECHO("==================bypass END =======================\n");
|
|
|
return ifail;
|
|
|
}
|
|
|
|
|
|
int check_target_null( EPM_rule_message_t msg ){
|
|
|
ECHO("==================¼ì²éÁ÷³ÌÄ¿±êÖеÄÎļþ¼ÐÖмäÊÇ·ñÓжÔÏó START =======================\n");
|
|
|
int ifail = EPM_go,count = 0,i = 0;
|
|
|
tag_t root_task = NULL_TAG;
|
|
|
tag_t * attachments = NULL;
|
|
|
ITKCALL(EPM_ask_root_task(msg.task,&root_task));
|
|
|
ITKCALL(EPM_ask_attachments(root_task,EPM_target_attachment,&count,&attachments));
|
|
|
for(i = 0 ;i < count;i++){
|
|
|
tag_t type_tag = NULL_TAG;
|
|
|
ITKCALL(TCTYPE_ask_object_type(attachments[i],&type_tag));
|
|
|
tag_t folder_type = NULLTAG;
|
|
|
ITKCALL(TCTYPE_find_type("Folder","",&folder_type));
|
|
|
if(folder_type != NULLTAG){
|
|
|
//printf(" find Folder type ok !!!! \n");
|
|
|
logical isok = FALSE;
|
|
|
ITKCALL(TCTYPE_is_type_of(type_tag,folder_type,&isok));
|
|
|
if(isok){
|
|
|
int contents_count = 0;
|
|
|
tag_t * contents_tags = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(attachments[i],"contents",&contents_count,&contents_tags));
|
|
|
if(contents_count == 0){
|
|
|
ifail = EPM_nogo;
|
|
|
//break;
|
|
|
}
|
|
|
// else
|
|
|
// {
|
|
|
// for(int j = 0 ; j < contents_count;j++){
|
|
|
// int release_count = 0;
|
|
|
// tag_t * release_tags = NULL;
|
|
|
// ITKCALL(AOM_ask_value_tags(contents_tags[j],"release_status_list",&release_count,&release_tags));
|
|
|
// if(release_count == 0){
|
|
|
// ifail = EPM_nogo;
|
|
|
// //break;
|
|
|
// }else{
|
|
|
// ifail = EPM_go;
|
|
|
// }
|
|
|
// if(release_tags!=NULL){
|
|
|
// MEM_free(release_tags);
|
|
|
// release_tags = NULL;
|
|
|
// }
|
|
|
// if(ifail == EPM_nogo){
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// }
|
|
|
if(contents_tags!=NULL){
|
|
|
MEM_free(contents_tags);
|
|
|
contents_tags = NULL;
|
|
|
}
|
|
|
if(ifail == EPM_nogo){
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(attachments!=NULL){
|
|
|
MEM_free(attachments);
|
|
|
attachments = NULL;
|
|
|
}
|
|
|
ECHO("==================¼ì²éÁ÷³ÌÄ¿±êÖеÄÎļþ¼ÐÖмäÊÇ·ñÓжÔÏó END =======================\n");
|
|
|
return ifail;
|
|
|
}
|
|
|
|
|
|
|
|
|
int JK_class_null( EPM_rule_message_t msg ){
|
|
|
ECHO("==================¼ì²éÁ÷³ÌÄ¿±êÖеÄÎïÁÏÊÇ·ñ·¢ËÍ·ÖÀà START =======================\n");
|
|
|
int ifail = EPM_go ,
|
|
|
arg_cnt = 0 ,
|
|
|
i = 0 ,
|
|
|
att_cnt = 0;
|
|
|
|
|
|
tag_t task_tag = NULLTAG ,
|
|
|
root_task_tag =NULLTAG ,
|
|
|
*attachments = NULL;
|
|
|
|
|
|
|
|
|
char * argflag = NULL ,
|
|
|
*argvalue =NULL ,
|
|
|
*arg = NULL ,
|
|
|
arg_value[1024] = "\0",
|
|
|
type_class[WSO_object_type_size_c+1] ="\0",
|
|
|
errs[1024] = "\0";
|
|
|
vector<string> type_vec;
|
|
|
|
|
|
//»ñÈ¡handler²ÎÊýµÄ¸öÊý
|
|
|
arg_cnt = TC_number_of_arguments(msg.arguments);
|
|
|
ECHO("²ÎÊý¸öÊýΪ£º%d\n",arg_cnt);
|
|
|
if (arg_cnt > 0)
|
|
|
{
|
|
|
for (i=0;i<arg_cnt;i++)
|
|
|
{
|
|
|
//»ñÈ¡ÏÂÒ»¸ö²ÎÊý£¨´Ó0¿ªÊ¼£©
|
|
|
arg = TC_next_argument(msg.arguments);
|
|
|
//»ñÈ¡²ÎÊýµÄÃû³ÆºÍÖµ
|
|
|
ITK_ask_argument_named_value((const char*)arg, &argflag, &argvalue);
|
|
|
//ÐèÒª¼ì²éÄÄЩ¶ÔÏóµÄÀàÐÍ
|
|
|
if (stricmp(argflag, "include_type") == 0)
|
|
|
{
|
|
|
if(argvalue != NULL)
|
|
|
{
|
|
|
strcpy(arg_value,argvalue);
|
|
|
Split(arg_value,",",type_vec);
|
|
|
}else{
|
|
|
string key_id;
|
|
|
key_id.assign("ȱÉÙinclude_type²ÎÊý");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
MEM_free(argflag);
|
|
|
MEM_free(argvalue);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
task_tag = msg.task;
|
|
|
if(task_tag == NULLTAG)
|
|
|
{
|
|
|
|
|
|
return EPM_nogo;
|
|
|
}
|
|
|
EPM_ask_root_task(task_tag, &root_task_tag);
|
|
|
EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments);
|
|
|
for(i = 0 ;i < att_cnt;i++){
|
|
|
tag_t target_tag = attachments[i];
|
|
|
//»ñÈ¡¶ÔÏóµÄÀàÐÍ
|
|
|
ITKCALL( WSOM_ask_object_type(target_tag, type_class));
|
|
|
ECHO("¶ÔÏóÀàÐÍ%s\n",type_class);
|
|
|
string type_str ;
|
|
|
type_str.assign(type_class);
|
|
|
vector<string>::iterator it;
|
|
|
it = find(type_vec.begin(),type_vec.end(),type_str);
|
|
|
if(it == type_vec.end()){
|
|
|
ECHO("´ËÀàÐͲ»°üº¬ÔÚinclude_typeÖÐ\n");
|
|
|
//strcpy(errs,"´æÔÚÀàÐͲ»·ûµÄ¶ÔÏó!!!");
|
|
|
//ifail=EPM_nogo ;
|
|
|
break;
|
|
|
}
|
|
|
/*char * item_id_temp = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp));
|
|
|
if(strstr(item_id_temp,"E-") !=NULL ){
|
|
|
ECHO("E-¿ªÍ·µÄÎïÁϲ»ÐèÒª´«µÝ\n");
|
|
|
strcpy(errs,"E-¿ªÍ·µÄÎïÁϲ»ÐèÒª´«µÝ!!!");
|
|
|
if(item_id_temp !=NULL){
|
|
|
MEM_free(item_id_temp);
|
|
|
item_id_temp = NULL;
|
|
|
}
|
|
|
ifail=EPM_nogo ;
|
|
|
break;
|
|
|
}*/
|
|
|
logical isclassed = false;
|
|
|
logical isFilter = false;
|
|
|
tag_t classification_object = NULLTAG;
|
|
|
|
|
|
ITKCALL(ICS_is_wsobject_classified(target_tag,&isclassed));//ÅжÏÊÇ·ñÒѾ·ÖÀà
|
|
|
|
|
|
if(isclassed){
|
|
|
//char * icOid = NULL;
|
|
|
//ITKCALL(ICS_ask_classification_object(target_tag,&classification_object));
|
|
|
|
|
|
//ITKCALL(ICS_ico_ask_class(classification_object,&icsID));
|
|
|
printf("\n ÒÑ·¢Ë͵½·ÖÀà \n");
|
|
|
}else{
|
|
|
strcpy(errs,"ÎïÁÏûÓз¢ËÍÖÁ·ÖÀà¿â£¬ÇëÁªÏµÏµÍ³¹ÜÀíÔ±£¡!!");
|
|
|
printf("\n ûÓз¢Ë͵½·ÖÀà \n");
|
|
|
ifail=EPM_nogo ;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
/*if(item_id_temp !=NULL){
|
|
|
MEM_free(item_id_temp);
|
|
|
item_id_temp = NULL;
|
|
|
}*/
|
|
|
}
|
|
|
|
|
|
|
|
|
if(ifail==EPM_nogo){
|
|
|
//PROP_unable_to_set_cp_value ERROR_ERRORSTORE_NOERRORS//
|
|
|
EMH_store_error_s1(EMH_severity_user_error,919002,errs);//´íÎ󵯴°
|
|
|
}
|
|
|
|
|
|
|
|
|
ECHO("==================¼ì²éÁ÷³ÌÄ¿±êÖеÄÎïÁÏÊÇ·ñ·¢ËÍ·ÖÀà END =======================\n");
|
|
|
return ifail;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Ç©Ãû֪ͨ½Úµã
|
|
|
*/
|
|
|
int tm_sign_tongzhi2( EPM_rule_message_t msg ){
|
|
|
ECHO("==================¼ì²éÁ÷³ÌÄ¿±êÖеÄÎļþ¼ÐÖмäÊÇ·ñÓжÔÏó START =======================\n");
|
|
|
int ifail = EPM_nogo,count = 0,i = 0;
|
|
|
tag_t root_task = NULL_TAG;
|
|
|
tag_t * attachments = NULL;
|
|
|
ITKCALL(EPM_ask_root_task(msg.task,&root_task));
|
|
|
ITKCALL(EPM_ask_attachments(root_task,EPM_target_attachment,&count,&attachments));
|
|
|
for(i = 0 ;i < count;i++){
|
|
|
tag_t type_tag = NULL_TAG;
|
|
|
ITKCALL(TCTYPE_ask_object_type(attachments[i],&type_tag));
|
|
|
tag_t folder_type = NULLTAG;
|
|
|
ITKCALL(TCTYPE_find_type("Folder","",&folder_type));
|
|
|
if(folder_type != NULLTAG){
|
|
|
//printf(" find Folder type ok !!!! \n");
|
|
|
logical isok = FALSE;
|
|
|
ITKCALL(TCTYPE_is_type_of(type_tag,folder_type,&isok));
|
|
|
if(isok){
|
|
|
int contents_count = 0;
|
|
|
tag_t * contents_tags = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(attachments[i],"contents",&contents_count,&contents_tags));
|
|
|
if(contents_count == 0){
|
|
|
ifail = EPM_nogo;
|
|
|
//break;
|
|
|
}
|
|
|
// else{
|
|
|
// for(int j = 0 ; j < contents_count;j++){
|
|
|
// int release_count = 0;
|
|
|
// tag_t * release_tags = NULL;
|
|
|
// ITKCALL(AOM_ask_value_tags(contents_tags[j],"release_status_list",&release_count,&release_tags));
|
|
|
// //if(release_count == 0){
|
|
|
// // ifail = EPM_nogo;
|
|
|
// // //break;
|
|
|
// //}else{
|
|
|
// // ifail = EPM_go;
|
|
|
// //}
|
|
|
// if(release_tags!=NULL){
|
|
|
// MEM_free(release_tags);
|
|
|
// release_tags = NULL;
|
|
|
// }
|
|
|
// if(ifail == EPM_nogo){
|
|
|
// break;
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
// }
|
|
|
if(contents_tags!=NULL){
|
|
|
MEM_free(contents_tags);
|
|
|
contents_tags = NULL;
|
|
|
}
|
|
|
if(ifail == EPM_nogo){
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(attachments!=NULL){
|
|
|
MEM_free(attachments);
|
|
|
attachments = NULL;
|
|
|
}
|
|
|
ECHO("==================¼ì²éÁ÷³ÌÄ¿±êÖеÄÎļþ¼ÐÖмäÊÇ·ñÓжÔÏó END =======================\n");
|
|
|
return ifail;
|
|
|
}
|