#define _CRT_SECURE_NO_WARNINGS #include "epm_handler_common.h" #include #include #include #include #include #include #include #include #include #pragma warning(disable : 4996) #include #include #include #include "common_itk_util.h" extern "C" int POM_AM__set_application_bypass(logical bypass); using namespace std; //char *bl_indented_title, *bl_formatted_parent_name, *bl_quantity, *bl_uom, *Gd6_gc, *Gd6_bomyt, *Gd6_kxbom, *Gd6_xsdh, *Gd6_ddxmhh, *Gd6_ddsl, *Gd6_bomxmh, *Gd6_xmlb, *Gd6_psgw, *Gd6_scgw; //函数 void getBomMasterDataPropertys(EPM_action_message_t msg, int valueNum, char **server_address, int bl_item_id_num); void getBomLineItemPropertys(tag_t top_line,int bl_item_id_num); int JLCS_05_BOMSendOutSap_MasterData(EPM_action_message_t msg) { char* log_file = NULL; char log_path[128] = "C:\\Temp\\JLCS_05_BOMSendOutSap_MasterData_LOG.txt"; CreateLogFile(log_path, &log_file); printf("开始执行上传物料主数据到SAP\n"); WriteLog("开始执行上传物料主数据到SAP\n"); //POM_AM__set_application_bypass(true); int ifail = ITK_ok; int valueNum; char **server_address; //printf("开始获取首选项\n"); int attachments_num=0; int bvr_count; tag_t rootTask, *attachments, *bvr_list = NULLTAG; tag_t bom_window_tag = NULLTAG; char *object_type; int count; tag_t item_rev; char *item_rev_value = NULL; char *tc_root_file = getenv("tc_root"); //C:\Siemens\Teamcenter11 char jar_file[SS_MAXPATHLEN] = ""; WriteLog("提示:开始获取流程下的根任务\n"); //获取任务对象 EPM_ask_root_task(msg.task, &rootTask); //获取任务目标对象 WriteLog("提示:开始获取流程目标下的对象 \n"); EPM_ask_attachments(rootTask, EPM_target_attachment, &attachments_num, &attachments); //char *temp_dir = getenv("temp"); //C:\Windows\temp char parameters[100000] = ""; char *handler_name; AOM_ask_value_string(rootTask,"job_name",&handler_name); WriteLog("当前流程名称handler_name=%s\n", handler_name); WriteLog("提示:开始获取流程目标下的对象 \n"); for (int i = 0; i < attachments_num; i++) { //获取topline AOM_ask_value_string(attachments[i], "object_type", &object_type); //printf("object_type=%s \n", object_type); WriteLog("》》》获取%s流程下的对象类型object_type=%s \n", handler_name,object_type); if (strcmp("Gd6_PartsRevision", object_type) == 0 || strcmp("Gd6_VehicleRevision", object_type) == 0 || strcmp("Gd6_XZMKCRevision", object_type) == 0 || strcmp("Gd6_BZJRevision", object_type) == 0 || strcmp("Gd6_PTJRevision", object_type) == 0) { WriteLog("提示:当前流程目标下的对象类型 in [Gd6_PartsRevision,Gd6_VehicleRevision,Gd6_XZMKCRevision,Gd6_BZJRevision,Gd6_PTJRevision] \n"); //ITEM_rev_list_bom_view_revs(attachments[i], &bvr_count, &bvr_list); //printf("视图数量=%d \n", bvr_count); //if (bvr_count == 0) { // continue; //} //获取BOM topline //BOM_create_window(&bom_window_tag); //BOM_set_window_top_line_bvr(bom_window_tag, bvr_list[bvr_count - 1], &top_line); //BOM_ask_window_top_line(bom_window_tag, &top_line); //printf("开始获取版本\n"); char * puid = NULL; //获取PUID ITK__convert_tag_to_uid(attachments[i], &puid); WriteLog("获取PUID==%s", puid); int item_mast_rev_count = 0; tag_t *item_mast_rev NULLTAG; //获取版本表单 ITKCALL(AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &item_mast_rev_count, &item_mast_rev )); WriteLog("》》》获取版本表单数量=%d", item_mast_rev_count); strcat(parameters, "getBomMasterDataPropertys}}"); strcat(parameters, puid); strcat(parameters, "}}"); //判断是否已导入 //char * isSend = NULL; //AOM_ask_value_string(item_mast_rev[0],"gd6_sfyxf", &isSend); //printf("是否已导入:%s\n", isSend); //if (strcmp("是", isSend) == 0) //{ // PREF_ask_char_values("JL_BOMUpdateMasterData", &valueNum, &server_address);//获得首选项 // strcpy(parameters,"updateBomMasterDataPropertys}}"); // strcat(parameters, puid); // strcat(parameters, "}}"); //} //else //{ WriteLog("开始获取首选项:JL_BOMSendSapMasterData信息\n"); PREF_ask_char_values("JL_BOMSendSapMasterData", &valueNum, &server_address);//获得首选项 //} //BOM_line_ask_attribute_tag(top_line, bl_item_id_num, &item_rev);//获得版本 //printf("开始遍历首选项\n"); WriteLog("》》》开始遍历首选项:按照要求分割字符串···\n"); char *revbuf[8] = { 0 }; //存放分割后的子字符串 int num = 0;//分割后子字符串的个数 for (int ii = 0; ii < valueNum; ii++) { //revbuf[8] = { 0 }; //存放分割后的子字符串 num = 0;//分割后子字符串的个数 split(server_address[ii], "/", revbuf, &num); strcat(parameters, revbuf[0] == NULL || strlen(revbuf[0]) == 0 ? "": revbuf[0]); strcat(parameters, "="); WriteLog("》》》分割server_address[%d]=%s后,拼接parameters=%s\n", ii, server_address[ii], parameters); if(strstr(revbuf[1],"item_id") != NULL || strstr(revbuf[1],"object_name") != NULL) { WriteLog("》》》%s的值中包含‘item_id’或‘object_name’\n", revbuf[1]); AOM_ask_value_string(attachments[i], revbuf[1], &item_rev_value); } else { WriteLog("》》》%s的值中不包含‘item_id’或‘object_name’\n", revbuf[1]); AOM_ask_value_string(item_mast_rev[0], revbuf[1], &item_rev_value); } strcat(parameters, item_rev_value); strcat(parameters, "¥"); } strcat(parameters, "@@"); WriteLog("》》》拼接parameters=%s\n", parameters); //printf("parameters=====%s\n", parameters); //printf("接口返回值:%s\n", strResult.c_str()); //system(cmd); //getBomLineItemPropertys(top_line, bl_item_id_num); MEM_free(bvr_list); bvr_list = NULL; MEM_free(object_type); object_type = NULL; //MEM_free(isSend); //isSend = NULL; MEM_free(puid); puid = NULL; } } strcpy(jar_file, tc_root_file); strcat(jar_file, "\\portal\\plugins\\"); strcat(jar_file, "JLCS_05.jar"); //把数据用写入文件 WriteLog("》》》拼接的jar_file=%s,开始把数据写入文件\n",jar_file); char data_file[SS_MAXPATHLEN] = ""; strcat(data_file,tc_root_file); strcat(data_file,"\\data.txt"); WriteLog("》》》拼接data_file=%s\n", data_file); FILE* fptr; fptr = fopen(data_file, "w"); fprintf(fptr, "%s", parameters); fclose(fptr); WriteLog("》》》数据写入文件完成\n"); string strResult; //cmd指令 WriteLog("》》》开始组织cmd指令\n"); char cmd[256] = ""; strcpy(cmd, "java -jar \""); //strcat(cmd, jar_file); strcat(cmd,tc_root_file); strcat(cmd,"\\portal\\plugins\\"); strcat(cmd,"JLCS_05.jar"); strcat(cmd, "\" "); //传参 cout<0){ // printf("开始分割\n"); // for(int i=0;i<=num/25;i++){ // printf("一次分割开始\n"); // char parameters2[8000] = ""; // if(i==num/25){ // for(int j = 25*i ; j < 25*i+num%25;j++){ // strcat(parameters2,revbuf[j]); // strcat(parameters2,"@@"); // } // } // else{ // for(int j=25*i;j <= 25*i+24;j++){ // strcat(parameters2,revbuf[j]); // strcat(parameters2,"@@"); // } // } // //cmd指令 // char cmd[8000] = ""; // strcpy(cmd, "java -jar \""); // //strcpy(jar_file, tc_root_file); // //strcat(jar_file, "\\portal\\plugins\\"); // //strcat(jar_file, "JLCS_05.jar"); // //strcat(cmd, jar_file); // strcat(cmd,tc_root_file); // strcat(cmd,"\\portal\\plugins\\"); // strcat(cmd,"JLCS_05.jar"); // strcat(cmd, "\" "); // //传参 // cout< 0 && strResult[iSize - 1] == '\n' && strlen(parameters) > 0 ) { WriteLog("》》》下发SAP信息失败!\n返回消息strResult:%s\n目标的数量attachments_num:%d\n", strResult.c_str(), attachments_num); WriteLog("》》》拼接参数parameters:%s\n", parameters); strResult = strResult.substr(0, iSize - 1); printf("下发失败\n"); printf("返回消息:%s\n",strResult.c_str()); printf("目标的数量:%d\n",attachments_num); for (int i = 0; i < attachments_num; i++) { //获取object_type AOM_ask_value_string(attachments[i], "object_type", &object_type); printf("object_type=%s \n", object_type); WriteLog("》》》当前目标对象的object_type=%s \n", object_type); if (strcmp("Gd6_PartsRevision", object_type) == 0 || strcmp("Gd6_VehicleRevision", object_type) == 0 || strcmp("Gd6_XZMKCRevision", object_type) == 0 || strcmp("Gd6_BZJRevision", object_type) == 0 || strcmp("Gd6_PTJRevision", object_type) == 0) { //printf("111111111"); WriteLog("》》》object_type=%s in [Gd6_PartsRevision,Gd6_VehicleRevision,Gd6_XZMKCRevision,Gd6_BZJRevision,Gd6_PTJRevision]\n", object_type); char * item_id_value = NULL; //获取PUID AOM_ask_value_string(attachments[i], "item_id", &item_id_value); WriteLog("》》》通过“item_id”属性获取item_id_value=%s\n", item_id_value); //printf("222\n"); strcat(item_id_value, ":"); //printf("%s",item_id_value); if(strstr(strResult.c_str(),item_id_value) == NULL) { WriteLog("》》》strResult中不包含=item_id_value时\n"); //printf("44"); int item_mast_rev_count = 0; tag_t *item_mast_rev = NULLTAG; //获取版本表单 ITKCALL(AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &item_mast_rev_count, &item_mast_rev )); WriteLog("》》》开始更改版本表单中是否以下发为“是”\n"); //更改版本表单中是否以下发为“是” POM_AM__set_application_bypass(true); //先lock AOM_lock(item_mast_rev[0]); //再set AOM_set_value_string(item_mast_rev[0],"gd6_sfyxf","是"); //再save AOM_save( item_mast_rev[0] ) ; //最后unlock AOM_unlock( item_mast_rev[0] ) ; AOM_refresh( item_mast_rev[0],FALSE ); POM_AM__set_application_bypass(false); MEM_free(item_mast_rev); item_mast_rev = NULL; } //MEM_free(object_type); //object_type = NULL; //MEM_free(item_id_value); //item_id_value = NULL; } } printf("开始更新流程描述,设置描述属性值\n"); WriteLog("》》》开始更新流程描述,设置描述属性值\n"); POM_AM__set_application_bypass(true); //获取流程作业 tag_t job = NULLTAG; EPM_ask_job(rootTask,&job); //设置描述属性值 //先lock AOM_lock(job); //再set ITKCALL(ifail = AOM_set_value_string(job,"object_desc","更新SAP信息失败!具体失败原因请查看更新日志!")); //再save AOM_save( job ) ; //最后unlock AOM_unlock( job ) ; AOM_refresh( job,FALSE ); //AOM_refresh( rootTask,FALSE ); POM_AM__set_application_bypass(false); //EMH_store_error_s1( EMH_severity_user_error, EMH_USER_error_base,strResult.c_str()); //ifail = 1; } else { printf("成功下发sap"); WriteLog("》》》下发sap成功\n"); for (int i = 0; i < attachments_num; i++) { //获取object_type ITKCALL(ifail = AOM_ask_value_string(attachments[i], "object_type", &object_type)); printf("object_type=%s \n", object_type); WriteLog("提示:流程目标下当前对象的类型=object_type=%s \n", object_type); if (strcmp("Gd6_PartsRevision", object_type) == 0 || strcmp("Gd6_VehicleRevision", object_type) == 0 || strcmp("Gd6_XZMKCRevision", object_type) == 0 || strcmp("Gd6_BZJRevision", object_type) == 0 || strcmp("Gd6_PTJRevision", object_type) == 0) { WriteLog("》》》object_type=%s in [Gd6_PartsRevision,Gd6_VehicleRevision,Gd6_XZMKCRevision,Gd6_BZJRevision,Gd6_PTJRevision]\n", object_type); int item_mast_rev_count = 0; tag_t *item_mast_rev NULLTAG; //获取版本表单 ITKCALL(AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &item_mast_rev_count, &item_mast_rev )); WriteLog("》》》开始更改版本表单中是否已下发为“是”\n"); //更改版本表单中是否以下发为“是” POM_AM__set_application_bypass(true); //先lock AOM_lock(item_mast_rev[0]); //再set AOM_set_value_string(item_mast_rev[0],"gd6_sfyxf","是"); //再save AOM_save( item_mast_rev[0] ) ; //最后unlock AOM_unlock( item_mast_rev[0] ) ; AOM_refresh( item_mast_rev[0],FALSE ); POM_AM__set_application_bypass(false); MEM_free(item_mast_rev); item_mast_rev = NULL; MEM_free(object_type); object_type = NULL; } } POM_AM__set_application_bypass(true); //获取流程作业 tag_t job = NULLTAG; EPM_ask_job(rootTask,&job); WriteLog("》》》开始设置描述属性值\n"); //设置描述属性值 //先lock AOM_lock(job); //再set AOM_set_value_string(job,"object_desc","成功下发!!"); //再save AOM_save( job ) ; //最后unlock AOM_unlock( job ) ; AOM_refresh( job,FALSE ); //AOM_refresh( rootTask,FALSE ); POM_AM__set_application_bypass(false); } //else //{ // //if (strcmp("是", isSend) != 0) // //{ // //更改版本表单中是否以下发为“是” // POM_AM__set_application_bypass(true); // //设置描述属性值 // //先lock // AOM_lock(item_mast_rev[0]); // //再set // AOM_set_value_string(item_mast_rev[0],"gd6_sfyxf","是"); // //再save // AOM_save( item_mast_rev[0] ) ; // //最后unlock // AOM_unlock( item_mast_rev[0] ) ; // AOM_refresh( item_mast_rev[0],FALSE ); // POM_AM__set_application_bypass(false); // //} //} //POM_AM__set_application_bypass(true); //AOM_refresh( rootTask,FALSE ); //POM_AM__set_application_bypass(false); printf("上传物料主数据到SAP执行结束1\n"); WriteLog("》》》上传物料主数据到SAP执行结束,开始释放对象\n"); MEM_free(attachments); attachments = NULL; tc_root_file = NULL; MEM_free(item_rev_value); item_rev_value = NULL; server_address = NULL; MEM_free(handler_name); handler_name = NULL; printf("上传物料主数据到SAP执行结束2\n"); WriteLog("》》》上传物料主数据到SAP释放空间结束,handler执行完成!\n"); CloseLog(); return ifail; } void getBomLineItemPropertys(tag_t top_line, int bl_item_id_num) { //printf("开始执行getBomLineItemPropertys\n"); int count; tag_t *children_line; char parameter[100000] = "getBomMasterDataPropertys,"; tag_t item_rev; char *item_rev_value; int valueNum; char **server_address; char *tc_root_file = getenv("tc_root"); //C:\Siemens\Teamcenter11 char jar_file[SS_MAXPATHLEN] = ""; strcpy(jar_file, tc_root_file); strcat(jar_file, "\\portal\\plugins\\"); strcat(jar_file, "JLCS_05.jar"); PREF_ask_char_values("JL_BOMSendSapMasterData", &valueNum, &server_address);//获得首选项 BOM_line_ask_all_child_lines(top_line, &count, &children_line); //printf("子行=%d \n", count); for (int ii = 0; ii < count; ii++) { BOM_line_look_up_attribute("bl_line_object", &bl_item_id_num); BOM_line_ask_attribute_tag(children_line[ii], bl_item_id_num, &item_rev);//获得版本 //printf("开始遍历首选项valueNum=%d\n", valueNum); char *revbuf[8] = { 0 }; //存放分割后的子字符串 int num = 0;//分割后子字符串的个数 for (int ij = 0; ij < valueNum; ij++) { //revbuf[8] = { 0 }; num = 0; split(server_address[ij], "/", revbuf, &num); strcat(parameter, revbuf[0] == NULL || strlen(revbuf[0]) == 0 ? "" : revbuf[0]); strcat(parameter, "="); AOM_UIF_ask_value(item_rev, revbuf[1], &item_rev_value); strcat(parameter, item_rev_value); strcat(parameter, "¥"); } //printf("parameter======:\n%s\n", parameter); //把数据用写入文件 char data_file[SS_MAXPATHLEN] = ""; strcat(data_file,tc_root_file); strcat(data_file,"\\data.txt"); FILE* fptr; fptr = fopen(data_file, "w"); fprintf(fptr, "%s", parameter); fclose(fptr); //cmd指令 char cmd[256] = ""; strcpy(cmd, "java -jar \""); strcat(cmd,tc_root_file); strcat(cmd,"\\portal\\plugins\\"); strcat(cmd,"JLCS_05.jar"); strcat(cmd, "\" "); //传参 cout< 0 && strResult[iSize - 1] == '\n' && strlen(parameters) > 0) { strResult = strResult.substr(0, iSize - 1); //获取流程作业 tag_t job = NULLTAG; EPM_ask_job(rootTask,&job); POM_AM__set_application_bypass(true); //设置描述属性值 //先lock AOM_lock(job); //再set AOM_set_value_string(job,"object_desc",strResult.c_str()); //再save AOM_save( job ) ; //最后unlock AOM_unlock( job ) ; AOM_refresh( job,FALSE ); POM_AM__set_application_bypass(false); //EMH_store_error_s1( EMH_severity_user_error, EMH_USER_error_base,strResult.c_str()); //ifail = 1; } MEM_free(attachments); attachments = NULL; tc_root_file = NULL; MEM_free(handler_name); handler_name = NULL; printf("执行结束\n"); return ifail; } int JLCS_05_BOMUpdateSap_MasterData(EPM_action_message_t msg) { printf("开始执行上传物料主数据到SAP\n"); int ifail = ITK_ok; int valueNum; char **server_address; //printf("开始获取首选项\n"); int attachments_num; int bvr_count; tag_t rootTask, *attachments, *bvr_list = NULLTAG; tag_t bom_window_tag = NULLTAG; char *object_type; int count; tag_t item_rev; char *item_rev_value = NULL; char *tc_root_file = getenv("tc_root"); //C:\Siemens\Teamcenter11 char jar_file[SS_MAXPATHLEN] = ""; //获取任务对象 EPM_ask_root_task(msg.task, &rootTask); //获取任务目标对象 EPM_ask_attachments(rootTask, EPM_target_attachment, &attachments_num, &attachments); //char *temp_dir = getenv("temp"); //C:\Windows\temp char *handler_name; AOM_ask_value_string(rootTask,"job_name",&handler_name); char parameters[100000] = ""; for (int i = 0; i < attachments_num; i++) { //获取topline AOM_ask_value_string(attachments[i], "object_type", &object_type); printf("object_type=%s \n", object_type); if (strcmp("Gd6_PartsRevision", object_type) == 0 || strcmp("Gd6_VehicleRevision", object_type) == 0 || strcmp("Gd6_XZMKCRevision", object_type) == 0 || strcmp("Gd6_BZJRevision", object_type) == 0 || strcmp("Gd6_PTJRevision", object_type) == 0) { //ITEM_rev_list_bom_view_revs(attachments[i], &bvr_count, &bvr_list); //printf("视图数量=%d \n", bvr_count); //if (bvr_count == 0) { // continue; //} //获取BOM topline //BOM_create_window(&bom_window_tag); //BOM_set_window_top_line_bvr(bom_window_tag, bvr_list[bvr_count - 1], &top_line); //BOM_ask_window_top_line(bom_window_tag, &top_line); //printf("开始获取版本\n"); char * puid = NULL; //获取PUID ITK__convert_tag_to_uid(attachments[i], &puid); int item_mast_rev_count = 0; tag_t *item_mast_rev NULLTAG; //获取版本表单 ITKCALL(AOM_ask_value_tags(attachments[i], "IMAN_master_form_rev", &item_mast_rev_count, &item_mast_rev )); //判断是否已导入 //char * isSend = NULL; //AOM_ask_value_string(item_mast_rev[0],"gd6_sfyxf", &isSend); //printf("是否已导入:%s\n", isSend); //strcat(parameters, puid); //strcat(parameters, "}}"); //if (strcmp("是", isSend) == 0) //{ PREF_ask_char_values("JL_BOMUpdateMasterData", &valueNum, &server_address);//获得首选项 strcpy(parameters,"updateBomMasterDataPropertys}}"); strcat(parameters, puid); strcat(parameters, "}}"); //} //else //{ // PREF_ask_char_values("JL_BOMSendSapMasterData", &valueNum, &server_address);//获得首选项 //} //BOM_line_ask_attribute_tag(top_line, bl_item_id_num, &item_rev);//获得版本 //printf("开始遍历首选项\n"); char *revbuf[8] = { 0 }; //存放分割后的子字符串 int num = 0;//分割后子字符串的个数 for (int ii = 0; ii < valueNum; ii++) { //revbuf[8] = { 0 }; //存放分割后的子字符串 num = 0;//分割后子字符串的个数 split(server_address[ii], "/", revbuf, &num); strcat(parameters, revbuf[0] == NULL || strlen(revbuf[0]) == 0 ? "": revbuf[0]); strcat(parameters, "="); if(strstr(revbuf[1],"item_id") != NULL || strstr(revbuf[1],"object_name") != NULL) { AOM_ask_value_string(attachments[i], revbuf[1], &item_rev_value); } else { AOM_ask_value_string(item_mast_rev[0], revbuf[1], &item_rev_value); } strcat(parameters, item_rev_value); strcat(parameters, "¥"); } //printf("parameters=====%s\n", parameters); strcat(parameters, "@@"); //printf("接口返回值:%s\n", strResult.c_str()); //system(cmd); //getBomLineItemPropertys(top_line, bl_item_id_num); MEM_free(bvr_list); bvr_list = NULL; MEM_free(object_type); object_type = NULL; //MEM_free(isSend); //isSend = NULL; MEM_free(puid); puid = NULL; } } strcpy(jar_file, tc_root_file); strcat(jar_file, "\\portal\\plugins\\"); strcat(jar_file, "JLCS_05.jar"); //把数据用写入文件 char data_file[SS_MAXPATHLEN] = ""; strcat(data_file,tc_root_file); strcat(data_file,"\\data.txt"); FILE* fptr; fptr = fopen(data_file, "w"); fprintf(fptr, "%s", parameters); fclose(fptr); string strResult; //cmd指令 char cmd[256] = ""; strcpy(cmd, "java -jar \""); //strcat(cmd, jar_file); strcat(cmd,tc_root_file); strcat(cmd,"\\portal\\plugins\\"); strcat(cmd,"JLCS_05.jar"); strcat(cmd, "\" "); //传参 cout< 0 && strResult[iSize - 1] == '\n' && strlen(parameters) > 0) { strResult = strResult.substr(0, iSize - 1); //获取流程作业 tag_t job = NULLTAG; EPM_ask_job(rootTask,&job); POM_AM__set_application_bypass(true); //设置描述属性值 //先lock AOM_lock(job); //再set AOM_set_value_string(job,"object_desc",strResult.c_str()); //再save AOM_save( job ) ; //最后unlock AOM_unlock( job ) ; AOM_refresh( job,FALSE ); POM_AM__set_application_bypass(false); //EMH_store_error_s1( EMH_severity_user_error, EMH_USER_error_base,strResult.c_str()); //ifail = 1; } MEM_free(attachments); attachments = NULL; tc_root_file = NULL; MEM_free(item_rev_value); item_rev_value = NULL; server_address = NULL; MEM_free(handler_name); handler_name = NULL; printf("上传物料主数据到SAP执行结束\n"); return ifail; } //void getBomLineItemPropertys(tag_t top_line, int bl_item_id_num) { // //printf("开始执行getBomLineItemPropertys\n"); // // int count; // tag_t *children_line; // char parameter[5120] = "getBomMasterDataPropertys,"; // // tag_t item_rev; // char *item_rev_value; // int valueNum; // char **server_address; // // char *tc_root_file = getenv("tc_root"); //C:\Siemens\Teamcenter11 // char jar_file[SS_MAXPATHLEN] = ""; // strcpy(jar_file, tc_root_file); // strcat(jar_file, "\\portal\\plugins\\"); // strcat(jar_file, "JLCS_05.jar"); // // PREF_ask_char_values("JL_BOMSendSapMasterData", &valueNum, &server_address);//获得首选项 // // // BOM_line_ask_all_child_lines(top_line, &count, &children_line); // //printf("子行=%d \n", count); // for (int ii = 0; ii < count; ii++) // { // BOM_line_look_up_attribute("bl_line_object", &bl_item_id_num); // BOM_line_ask_attribute_tag(children_line[ii], bl_item_id_num, &item_rev);//获得版本 // // //printf("开始遍历首选项valueNum=%d\n", valueNum); // char *revbuf[8] = { 0 }; //存放分割后的子字符串 // int num = 0;//分割后子字符串的个数 // for (int ij = 0; ij < valueNum; ij++) { // //revbuf[8] = { 0 }; // num = 0; // split(server_address[ij], "/", revbuf, &num); // strcat(parameter, revbuf[0] == NULL || strlen(revbuf[0]) == 0 ? "" : revbuf[0]); // strcat(parameter, "="); // // AOM_UIF_ask_value(item_rev, revbuf[1], &item_rev_value); // // strcat(parameter, item_rev_value); // strcat(parameter, ","); // } // //printf("parameter======:\n%s\n", parameter); // // char cmd[256] = ""; // strcpy(cmd, "java -jar \""); // strcat(cmd, jar_file); // strcat(cmd, "\" "); // //传参 // strcat(cmd, parameter); // //printf("路径:\n%s\n", cmd); // system(cmd); // // getBomLineItemPropertys(children_line[ii], bl_item_id_num); // } // printf("执行结束 \n"); // //} //int JLCS_05_BOMDeleteSap_MasterData(EPM_action_message_t msg) //{ // printf("开始执行\n"); // // int ifail = ITK_ok; // //printf("开始获取首选项\n"); // // int attachments_num; // tag_t rootTask, *attachments; // char *object_type; // // char *tc_root_file = getenv("tc_root"); //C:\Siemens\Teamcenter11 // char jar_file[SS_MAXPATHLEN] = ""; // strcpy(jar_file, tc_root_file); // strcat(jar_file, "\\portal\\plugins\\"); // strcat(jar_file, "JLCS_05.jar"); // // // // //获取任务对象 // EPM_ask_root_task(msg.task, &rootTask); // //获取任务目标对象 // EPM_ask_attachments(rootTask, EPM_target_attachment, &attachments_num, &attachments); // //char *temp_dir = getenv("temp"); //C:\Windows\temp // // // for (int i = 0; i < attachments_num; i++) // { // // //获取topline // AOM_ask_value_string(attachments[i], "object_type", &object_type); // //printf("object_type=%s \n", object_type); // // if (strcmp("Gd6_PartsRevision", object_type) == 0) { // // //printf("开始获取版本\n"); // char * puid = NULL; // char * itemId = NULL; // //获取PUID // ITK__convert_tag_to_uid(attachments[i], &puid); // //获取ITEM_ID // AOM_ask_value_string(attachments[i], "item_id", &itemId); // // char parameters[5120] = "deleteBomMasterDataPropertys}}"; // // strcat(parameters, puid); // strcat(parameters, "}}"); // strcat(parameters, itemId); // // //cmd指令 // char cmd[256] = ""; // strcpy(cmd, "java -jar \""); // strcat(cmd, jar_file); // strcat(cmd, "\" "); // //传参 // strcat(cmd, parameters); // printf("路径:\n%s\n", cmd); // char buf[10240] = { 0 }; // FILE *pf = NULL; // if ((pf = _popen(cmd, "r")) == NULL) { // printf("接口返回:\n%s", "1"); // } // string strResult; // while (fgets(buf, sizeof buf, pf)) { // strResult += buf; // } // _pclose(pf); // unsigned int iSize = strResult.size(); // if (iSize > 0 && strResult[iSize - 1] == '\n') // { // strResult = strResult.substr(0, iSize - 1); // // //获取流程作业 // tag_t job = NULLTAG; // // EPM_ask_job(rootTask,&job); // // //设置描述属性值 // //先lock // AOM_lock(job); // //再set // AOM_set_value_string(job,"object_desc",strResult.c_str()); // //再save // AOM_save( job ) ; // //最后unlock // AOM_unlock( job ) ; // AOM_refresh( job,FALSE ); // // //EMH_store_error_s1( EMH_severity_user_error, EMH_USER_error_base,strResult.c_str()); // //ifail = 1; // } // //printf("接口返回值:%s\n", strResult.c_str()); // //system(cmd); // //getBomLineItemPropertys(top_line, bl_item_id_num); // MEM_free(object_type); // object_type = NULL; // MEM_free(puid); // puid = NULL; // } // } // // MEM_free(attachments); // attachments = NULL; // tc_root_file = NULL; // printf("执行结束\n"); // // return ifail; //}