|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
|
#include "epm_handler_common.h"
|
|
|
|
|
|
#include <tc\preferences.h>
|
|
|
#include <epm\epm.h>
|
|
|
|
|
|
#include <tccore\aom.h>
|
|
|
|
|
|
#include <tccore\aom_prop.h>
|
|
|
#include <tccore\item.h>
|
|
|
|
|
|
#include <map>
|
|
|
#include <vector>
|
|
|
#include<iostream>
|
|
|
#include<stdlib.h>
|
|
|
#pragma warning(disable : 4996)
|
|
|
#include <string>
|
|
|
#include <bom/bom.h>
|
|
|
#include <stdio.h>
|
|
|
#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<<data_file<<endl;
|
|
|
strcat(cmd, data_file);
|
|
|
//用来传递本流程的流程名称(@分割)
|
|
|
WriteLog("》》》拼接cmd指令:用来传递本流程的流程名称(@分割)\n");
|
|
|
strcat(cmd,"@");
|
|
|
strcat(cmd,handler_name);
|
|
|
printf("路径:\n%s\n", cmd);
|
|
|
char buf[8000] = { 0 };
|
|
|
FILE *pf = NULL;
|
|
|
WriteLog("》》》执行cmd\n");
|
|
|
if ((pf = _popen(cmd, "r")) == NULL) {
|
|
|
printf("接口返回:\n%s", "1");
|
|
|
}
|
|
|
|
|
|
while (fgets(buf, sizeof buf, pf)) {
|
|
|
strResult += buf;
|
|
|
}
|
|
|
_pclose(pf);
|
|
|
|
|
|
|
|
|
//char *revbuf[512] = { 0 }; //存放分割后的子字符串
|
|
|
//int num = 0;//分割后子字符串的个数
|
|
|
//char parameters3[80000] = "";
|
|
|
//strcat(parameters3,parameters);
|
|
|
//split(parameters, "@@", revbuf, &num);
|
|
|
//printf("分割的字符串长度为:%d\n",num);
|
|
|
//if(num/25>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<<parameters2<<endl;
|
|
|
// strcat(cmd, parameters2);
|
|
|
// printf("路径:\n%s\n", cmd);
|
|
|
// char buf[8000] = { 0 };
|
|
|
// FILE *pf = NULL;
|
|
|
// if ((pf = _popen(cmd, "r")) == NULL) {
|
|
|
// printf("接口返回:\n%s", "1");
|
|
|
// }
|
|
|
//
|
|
|
// while (fgets(buf, sizeof buf, pf)) {
|
|
|
// strResult += buf;
|
|
|
// }
|
|
|
// _pclose(pf);
|
|
|
// printf("一次调用结束\n");
|
|
|
// }
|
|
|
//
|
|
|
//}
|
|
|
//else{
|
|
|
// //cmd指令
|
|
|
// char cmd[8000] = "";
|
|
|
// 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<<parameters3<<endl;
|
|
|
// strcat(cmd, parameters3);
|
|
|
// printf("路径:\n%s\n", cmd);
|
|
|
// char buf[8000] = { 0 };
|
|
|
// FILE *pf = NULL;
|
|
|
// if ((pf = _popen(cmd, "r")) == NULL) {
|
|
|
// printf("接口返回:\n%s", "1");
|
|
|
// }
|
|
|
//
|
|
|
// while (fgets(buf, sizeof buf, pf)) {
|
|
|
// strResult += buf;
|
|
|
// }
|
|
|
// _pclose(pf);
|
|
|
//}
|
|
|
if(strlen(parameters) == 0){
|
|
|
WriteLog("》》》下发SAP信息失败!没有需要下发的零件\n");
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
//获取流程作业
|
|
|
tag_t job = NULLTAG;
|
|
|
EPM_ask_job(rootTask,&job);
|
|
|
//设置描述属性值
|
|
|
//先lock
|
|
|
AOM_lock(job);
|
|
|
//再set
|
|
|
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);
|
|
|
}
|
|
|
WriteLog("》》》返回值strResult:%s\n", strResult.c_str());
|
|
|
cout << strResult <<endl;
|
|
|
unsigned int iSize = strResult.size();
|
|
|
if (iSize > 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<<data_file<<endl;
|
|
|
strcat(cmd, data_file);
|
|
|
//printf("路径:\n%s\n", cmd);
|
|
|
system(cmd);
|
|
|
|
|
|
//char cmd[100000] = "";
|
|
|
//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
|
|
|
|
|
|
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) {
|
|
|
|
|
|
//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);
|
|
|
|
|
|
strcat(parameters, "deleteBomMasterDataPropertys}}");
|
|
|
strcat(parameters, puid);
|
|
|
strcat(parameters, "}}");
|
|
|
strcat(parameters, itemId);
|
|
|
|
|
|
|
|
|
strcat(parameters, "@@");
|
|
|
//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;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//把数据用写入文件
|
|
|
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<<data_file<<endl;
|
|
|
strcat(cmd, data_file);
|
|
|
//用来传递本流程的流程名称(@分割)
|
|
|
strcat(cmd,"@");
|
|
|
strcat(cmd,handler_name);
|
|
|
printf("路径:\n%s\n", cmd);
|
|
|
char buf[8000] = { 0 };
|
|
|
FILE *pf = NULL;
|
|
|
if ((pf = _popen(cmd, "r")) == NULL) {
|
|
|
printf("接口返回:\n%s", "1");
|
|
|
}
|
|
|
|
|
|
while (fgets(buf, sizeof buf, pf)) {
|
|
|
strResult += buf;
|
|
|
}
|
|
|
_pclose(pf);
|
|
|
|
|
|
////cmd指令
|
|
|
//char cmd[100000] = "";
|
|
|
//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(strlen(parameters) == 0){
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
//获取流程作业
|
|
|
tag_t job = NULLTAG;
|
|
|
EPM_ask_job(rootTask,&job);
|
|
|
//设置描述属性值
|
|
|
//先lock
|
|
|
AOM_lock(job);
|
|
|
//再set
|
|
|
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);
|
|
|
}
|
|
|
if (iSize > 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<<data_file<<endl;
|
|
|
strcat(cmd, data_file);
|
|
|
//用来传递本流程的流程名称(@分割)
|
|
|
strcat(cmd,"@");
|
|
|
strcat(cmd,handler_name);
|
|
|
printf("路径:\n%s\n", cmd);
|
|
|
char buf[8000] = { 0 };
|
|
|
FILE *pf = NULL;
|
|
|
if ((pf = _popen(cmd, "r")) == NULL) {
|
|
|
printf("接口返回:\n%s", "1");
|
|
|
}
|
|
|
|
|
|
while (fgets(buf, sizeof buf, pf)) {
|
|
|
strResult += buf;
|
|
|
}
|
|
|
_pclose(pf);
|
|
|
|
|
|
////cmd指令
|
|
|
//char cmd[100000] = "";
|
|
|
//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(strlen(parameters) == 0){
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
//获取流程作业
|
|
|
tag_t job = NULLTAG;
|
|
|
EPM_ask_job(rootTask,&job);
|
|
|
//设置描述属性值
|
|
|
//先lock
|
|
|
AOM_lock(job);
|
|
|
//再set
|
|
|
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);
|
|
|
}
|
|
|
if (iSize > 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;
|
|
|
//}
|
|
|
|
|
|
|
|
|
|