|
|
#pragma warning (disable: 4996)
|
|
|
#pragma warning (disable: 4819)
|
|
|
#pragma warning (disable: 4995)
|
|
|
|
|
|
#include <tc/tc.h>
|
|
|
#include "epm_handler_common.h"
|
|
|
|
|
|
#include <ict/ict_userservice.h>
|
|
|
#include <tccore/custom.h>
|
|
|
#include <epm/epm_toolkit_tc_utils.h>
|
|
|
#include <tccore/aom.h>
|
|
|
#include <tccore/aom_prop.h>
|
|
|
#include <tccore/item.h>
|
|
|
#include <bom/bom.h>
|
|
|
#include "ps/ps.h";
|
|
|
#include "ps/vrule.h"
|
|
|
#include "sstream"
|
|
|
#include <tccore/grm.h>
|
|
|
#include "epm/epm.h"
|
|
|
#include "sa/sa.h"
|
|
|
#include "libxl.h"
|
|
|
#include <map>
|
|
|
#include "epm/signoff.h"
|
|
|
#include <ctime>
|
|
|
#include <vector>
|
|
|
#include <locale>
|
|
|
#include <codecvt>
|
|
|
#include "ae/dataset.h"
|
|
|
#include <iostream>
|
|
|
#include <stdlib.h>
|
|
|
#include <tccore/aom.h>
|
|
|
#include <tc/emh.h>
|
|
|
#include <ict/ict_userservice.h>
|
|
|
#include <tc/tc.h>
|
|
|
#include <tccore/tctype.h>
|
|
|
#include <sa/tcfile.h>
|
|
|
#include <ss/ss_errors.h>
|
|
|
extern "C" int POM_AM__set_application_bypass(logical bypass);
|
|
|
using namespace std;
|
|
|
double stringToNum( string str)
|
|
|
{
|
|
|
istringstream iss(str);
|
|
|
double num;
|
|
|
iss >> num;
|
|
|
return num;
|
|
|
}
|
|
|
|
|
|
char * mem_char(char *x)
|
|
|
{
|
|
|
if(x!=NULL)
|
|
|
{
|
|
|
MEM_free(x);
|
|
|
x=NULL;
|
|
|
}
|
|
|
return x;
|
|
|
}
|
|
|
|
|
|
tag_t * mem_tag(tag_t *x)
|
|
|
{
|
|
|
if(x!=NULL)
|
|
|
{
|
|
|
MEM_free(x);
|
|
|
x=NULL;
|
|
|
}
|
|
|
return x;
|
|
|
}
|
|
|
void insertMap(tag_t targetRev,map<tag_t, string>&targetmap)
|
|
|
{
|
|
|
targetmap.clear();
|
|
|
int ifail=0;
|
|
|
int bom_num=0;
|
|
|
tag_t * bom_tags=NULLTAG;
|
|
|
ITKCALL(ifail=AOM_ask_value_tags(targetRev,"structure_revisions",&bom_num,&bom_tags));
|
|
|
if(bom_num>0)
|
|
|
{
|
|
|
tag_t only_bom=bom_tags[0];
|
|
|
tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG;
|
|
|
ITKCALL(ifail = BOM_create_window(&bom_window_tag));
|
|
|
ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,only_bom,&top_bom_line_tag));
|
|
|
int child_count=0;tag_t *child_tags=NULLTAG;
|
|
|
ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag,&child_count,&child_tags));
|
|
|
for(int n=0;n<child_count;n++)
|
|
|
{
|
|
|
|
|
|
char * item_id=NULL;
|
|
|
char *item_rev_id=NULL;
|
|
|
char *bl_sequence_no=NULL;
|
|
|
tag_t map_rev=NULL;
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags[n],"bl_item_item_id",&item_id));
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags[n],"bl_rev_item_revision_id",&item_rev_id));
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags[n],"bl_sequence_no",&bl_sequence_no));
|
|
|
ITKCALL(ifail = ITEM_find_rev(item_id,item_rev_id,&map_rev));
|
|
|
targetmap.insert(pair<tag_t,string>(map_rev,bl_sequence_no));
|
|
|
item_id=mem_char(item_id);
|
|
|
bl_sequence_no=mem_char(bl_sequence_no);
|
|
|
item_rev_id=mem_char(item_rev_id);
|
|
|
}
|
|
|
child_tags=mem_tag(child_tags);
|
|
|
ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ<><D2AA><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>Ժ<EFBFBD>bom<6F><6D>ͼ<EFBFBD><CDBC><EFBFBD>ᱣ<EFBFBD><E1B1A3>
|
|
|
ITKCALL(ifail = BOM_close_window(bom_window_tag));//<2F>п<EFBFBD><D0BF><EFBFBD><EFBFBD>й<EFBFBD>
|
|
|
}
|
|
|
|
|
|
bom_tags=mem_tag(bom_tags);
|
|
|
}
|
|
|
|
|
|
void setBomlineProperty(tag_t old_line,tag_t new_line,string attribute_name)
|
|
|
{
|
|
|
int ifail=0;
|
|
|
try
|
|
|
{
|
|
|
cout<<"<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>------------"<<attribute_name<<endl;
|
|
|
int attribute,attr_mode;
|
|
|
BOM_line_look_up_attribute(attribute_name.c_str(),&attribute);
|
|
|
cout<<attribute_name<<"--------attribute-------->"<<attribute<<endl;
|
|
|
BOM_line_ask_attribute_mode(attribute,&attr_mode);
|
|
|
cout<<attribute_name<<"-----attr_mode-------->"<<attr_mode<<endl;
|
|
|
char* value=NULL;
|
|
|
tag_t bluom=NULL;
|
|
|
AOM_ask_value_string(old_line,"bl_item_item_id",&value);
|
|
|
cout<<"id------------"<<value<<endl;
|
|
|
if(attr_mode==4)
|
|
|
{
|
|
|
AOM_ask_value_tag(old_line,attribute_name.c_str(),&bluom);
|
|
|
}else
|
|
|
{
|
|
|
ITKCALL(ifail=AOM_ask_value_string(old_line,attribute_name.c_str(),&value));
|
|
|
|
|
|
cout<<"ֵ"<<value<<endl;
|
|
|
}
|
|
|
|
|
|
|
|
|
string valueString=value;
|
|
|
switch (attr_mode)
|
|
|
{
|
|
|
case BOM_attribute_mode_double:
|
|
|
BOM_line_set_attribute_double(new_line,attribute,stringToNum(valueString));
|
|
|
break;
|
|
|
case BOM_attribute_mode_int:
|
|
|
BOM_line_set_attribute_int(new_line,attribute,stringToNum(valueString));
|
|
|
break;
|
|
|
case BOM_attribute_mode_logical:
|
|
|
if(valueString=="true")
|
|
|
{
|
|
|
BOM_line_set_attribute_logical(new_line,attribute,true);
|
|
|
}else
|
|
|
{
|
|
|
BOM_line_set_attribute_logical(new_line,attribute,true);
|
|
|
}
|
|
|
break;
|
|
|
case BOM_attribute_mode_string:
|
|
|
|
|
|
|
|
|
|
|
|
if(strcmp(attribute_name.c_str(),"bl_part_source")==0)
|
|
|
{
|
|
|
if(strcmp(valueString.c_str(),"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")==0)
|
|
|
{
|
|
|
ITKCALL(ifail=BOM_line_set_attribute_string(new_line,attribute,"Make"));
|
|
|
}else if(strcmp(valueString.c_str(),"<EFBFBD>")==0)
|
|
|
{
|
|
|
ITKCALL(ifail=BOM_line_set_attribute_string(new_line,attribute,"Buy"));
|
|
|
}
|
|
|
|
|
|
|
|
|
}else
|
|
|
{
|
|
|
ITKCALL(ifail=BOM_line_set_attribute_string(new_line,attribute,valueString.c_str()));
|
|
|
}
|
|
|
break;
|
|
|
case BOM_attribute_mode_tag:
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
|
|
|
|
|
ITKCALL(ifail=BOM_line_set_attribute_tag(new_line,attribute,bluom));
|
|
|
break;
|
|
|
}}
|
|
|
catch (exception e)
|
|
|
{
|
|
|
cout<<attribute_name<<"<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
int jk_upgrade_version(EPM_action_message_t msg)
|
|
|
{
|
|
|
cout<<"<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------"<<endl;
|
|
|
int ifail = ITK_ok, i = 0, att_cnt = 0;
|
|
|
tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL;
|
|
|
char * object_TYPE_1 = NULL;
|
|
|
map<tag_t,string> map1;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EBOM<4F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>BOMLine<6E>Ͳ<EFBFBD><CDB2>ұ<EFBFBD><D2B1><EFBFBD>
|
|
|
map<tag_t,string> map2;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>MBOM<4F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>BOMLine<6E>Ͳ<EFBFBD><CDB2>ұ<EFBFBD><D2B1><EFBFBD>
|
|
|
map<tag_t,tag_t> map3;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EBOM<4F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>BOMLine<6E><65><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>MBOM<4F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>BOMLine
|
|
|
map<tag_t,string> map4;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EBOM<4F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>BOMLine<6E>Ͷ<EFBFBD>Ӧ<EFBFBD><D3A6>id
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
task_tag = msg.task;
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>̽ڵ<CCBD>
|
|
|
ifail = EPM_ask_root_task(task_tag, &rootTask_tag);
|
|
|
//<2F><>ȡĿ<C8A1><C4BF><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>
|
|
|
ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments);
|
|
|
//ѭ<><D1AD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
for (i = 0; i < att_cnt; i++) {
|
|
|
ITKCALL(ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
cout << object_TYPE_1<<endl;
|
|
|
if(strcmp("JK8MaterialRevision",object_TYPE_1)==0||strcmp("<EFBFBD><EFBFBD><EFBFBD>ϰ汾",object_TYPE_1)==0)
|
|
|
{
|
|
|
//<2F><>ȡ<EFBFBD><C8A1>ǰEBOM<4F><4D><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>汾
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
|
|
tag_t item;
|
|
|
ITKCALL(ifail=ITEM_ask_item_of_rev(attachments[i],&item));
|
|
|
int rev_num=0;
|
|
|
tag_t *revsTag=NULLTAG;
|
|
|
|
|
|
AOM_ask_value_tags(item,"revision_list",&rev_num,&revsTag);
|
|
|
tag_t targetRev=revsTag[rev_num-2];//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾
|
|
|
|
|
|
|
|
|
insertMap(targetRev,map1);
|
|
|
|
|
|
|
|
|
insertMap(attachments[i],map4);
|
|
|
|
|
|
|
|
|
int actualNum=0;
|
|
|
tag_t *actualtags=NULLTAG;
|
|
|
int mbom_num=0;
|
|
|
//<2F><>ȡEBOM<4F><4D>MBOM<4F><4D>ϵ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>MBOM<4F>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>20190411MBOM<4F><4D>ϵ<EFBFBD>¹ҵ<C2B9><D2B5>Ƕ<EFBFBD><C7B6><EFBFBD>
|
|
|
ITKCALL(ifail=AOM_ask_value_tags(targetRev,"JK8MBOMRelation",&actualNum,&actualtags));
|
|
|
for (int j=0;j<actualNum;j++)
|
|
|
{
|
|
|
map2.clear();
|
|
|
map3.clear();
|
|
|
tag_t * mbom_tag=NULLTAG;
|
|
|
tag_t latest_rev;
|
|
|
ITEM_ask_latest_rev(actualtags[j],&latest_rev);
|
|
|
ITKCALL(ifail = AOM_ask_value_tags(latest_rev,"structure_revisions",&mbom_num,&mbom_tag));
|
|
|
tag_t only_bom=mbom_tag[0];
|
|
|
tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG;
|
|
|
ITKCALL(ifail = BOM_create_window(&bom_window_tag));
|
|
|
ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,only_bom,&top_bom_line_tag));
|
|
|
int child_count=0;tag_t *child_tags=NULLTAG;
|
|
|
ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag,&child_count,&child_tags));
|
|
|
for(int n=0;n<child_count;n++)
|
|
|
{
|
|
|
char * item_id=NULL;
|
|
|
char *item_rev_id=NULL;
|
|
|
char *bl_sequence_no=NULL;
|
|
|
tag_t map2_rev=NULL;
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags[n],"bl_item_item_id",&item_id));
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags[n],"bl_rev_item_revision_id",&item_rev_id));
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags[n],"bl_sequence_no",&bl_sequence_no));
|
|
|
ITKCALL(ifail = ITEM_find_rev(item_id,item_rev_id,&map2_rev));
|
|
|
|
|
|
map2.insert(pair<tag_t,string>(map2_rev,bl_sequence_no));
|
|
|
|
|
|
map<tag_t,string>::iterator rev_it;
|
|
|
for( rev_it = map1.begin(); rev_it != map1.end(); rev_it++ )
|
|
|
{
|
|
|
|
|
|
char *object_string=NULL;
|
|
|
tag_t tag1=rev_it->first;
|
|
|
string map1_sequence_no=rev_it->second;
|
|
|
tag_t tag2=map2_rev;
|
|
|
AOM_ask_value_string(tag1,"object_string",&object_string);
|
|
|
cout<<"map2<EFBFBD><EFBFBD>"<<object_string<<endl;
|
|
|
AOM_ask_value_string(tag2,"object_string",&object_string);
|
|
|
cout<<"map2ֵ"<<object_string<<endl;
|
|
|
if(strcmp(map1_sequence_no.c_str(),bl_sequence_no)==0)
|
|
|
{
|
|
|
map3.insert(pair<tag_t,tag_t>(rev_it->first,map2_rev));//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>汾<EFBFBD><E6B1BE>ebomline<6E><65>Ӧ<EFBFBD>İ汾<C4B0><E6B1BE>mbom<6F><6D>ϵ<EFBFBD>µ<EFBFBD>mbomline<6E><65>Ӧ<EFBFBD>İ汾
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
item_id=mem_char(item_id);
|
|
|
item_rev_id=mem_char(item_rev_id);
|
|
|
bl_sequence_no=mem_char(bl_sequence_no);
|
|
|
}
|
|
|
ITKCALL(ifail = BOM_save_window(bom_window_tag));//Ҫ<><D2AA><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>Ժ<EFBFBD>bom<6F><6D>ͼ<EFBFBD><CDBC><EFBFBD>ᱣ<EFBFBD><E1B1A3>
|
|
|
ITKCALL(ifail = BOM_close_window(bom_window_tag));//<2F>п<EFBFBD><D0BF><EFBFBD><EFBFBD>й<EFBFBD>
|
|
|
|
|
|
|
|
|
//ITEM_rev_delete_bvr()
|
|
|
tag_t newRev=NULLTAG;
|
|
|
ITKCALL(ifail =ITEM_copy_rev(latest_rev,NULL,&newRev));//<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
//TODO <20><>ȡMBOM<4F><4D><EFBFBD><EFBFBD><EFBFBD>в㼶<D0B2><E3BCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>
|
|
|
|
|
|
//TODO ɾ<><C9BE>MBOM<4F>µ<EFBFBD>BOM<4F><4D>ͼ<EFBFBD><CDBC><EFBFBD>Ƚ<EFBFBD>EBOM<4F><4D>MBOM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
// BOM_line_cut();
|
|
|
|
|
|
tag_t win,top_line;
|
|
|
BOM_create_window(&win);
|
|
|
BOM_set_window_pack_all(win,false);
|
|
|
BOM_set_window_top_line(win, NULL, latest_rev, NULL, &top_line);
|
|
|
|
|
|
//TODO ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bom<6F><6D>ͼ
|
|
|
/* int cnt=0;
|
|
|
tag_t *tags=NULLTAG;
|
|
|
AOM_ask_value_tags(newRev, "structure_revisions", &cnt, &tags);
|
|
|
|
|
|
ITEM_rev_delete_bvr(newRev,tags[0]);*/
|
|
|
tag_t win_new,top_line_new;
|
|
|
BOM_create_window(&win_new);
|
|
|
BOM_set_window_pack_all(win_new,false);
|
|
|
BOM_set_window_top_line(win_new, NULL, newRev, NULL, &top_line_new);
|
|
|
int top_line_new_count=0;
|
|
|
tag_t *top_line_new_child_tags=NULLTAG;
|
|
|
BOM_line_ask_all_child_lines(top_line_new,&top_line_new_count,&top_line_new_child_tags);
|
|
|
for (int e=0;e<top_line_new_count;e++)
|
|
|
{
|
|
|
// POM_AM__set_application_bypass(true);
|
|
|
ITKCALL(ifail=BOM_line_cut(top_line_new_child_tags[e]));
|
|
|
BOM_save_window(win_new);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(top_line==NULLTAG)
|
|
|
{
|
|
|
cout<<"cant find structure";
|
|
|
}
|
|
|
// tag_t view_type;
|
|
|
// ITKCALL(ifail=PS_ask_bom_view_type(only_bom,&view_type));
|
|
|
cout<<"map4.size()--------->"<<map4.size()<<endl;
|
|
|
// if(true)
|
|
|
// {
|
|
|
// return 0;
|
|
|
// }
|
|
|
map<tag_t,string>::iterator rev_map4;
|
|
|
for( rev_map4 = map4.begin(); rev_map4 != map4.end(); rev_map4++ )
|
|
|
{
|
|
|
tag_t rev=rev_map4->first;
|
|
|
char * newEBOM_id=NULL;
|
|
|
if(rev!=NULL)
|
|
|
{
|
|
|
ITKCALL(ifail = AOM_ask_value_string(rev,"object_string",&newEBOM_id));
|
|
|
cout<<"newEBOM_id-------->"<<newEBOM_id<<endl;
|
|
|
ITKCALL(ifail = AOM_ask_value_string(rev,"item_id",&newEBOM_id));
|
|
|
}else
|
|
|
{
|
|
|
cout<<"wrong"<<endl;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
map<tag_t,tag_t>::iterator rev_map3;
|
|
|
int map3_size=0;
|
|
|
for( rev_map3 = map3.begin(); rev_map3 != map3.end(); rev_map3++ )
|
|
|
{
|
|
|
map3_size++;
|
|
|
tag_t ebom_rev=rev_map3->first;
|
|
|
char * ebom_id=NULL;
|
|
|
char * mbom_id=NULL;
|
|
|
tag_t mbom_rev=rev_map3->second;
|
|
|
ITKCALL(ifail = AOM_ask_value_string(ebom_rev,"item_id",&ebom_id));//TODO bomline<6E>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
ITKCALL(ifail = AOM_ask_value_string(mbom_rev,"item_id",&mbom_id));
|
|
|
cout<<"map3_size------------>"<<map3_size<<endl;
|
|
|
cout<<"<EFBFBD>Ƚ<EFBFBD>newEBOM_id---------->"<<newEBOM_id<<endl;
|
|
|
cout<<"<EFBFBD>Ƚ<EFBFBD>ebom_id---------->"<<ebom_id<<endl;
|
|
|
cout<<"<EFBFBD>Ƚ<EFBFBD>mbom_id---------->"<<mbom_id<<endl;
|
|
|
if(strcmp(newEBOM_id,ebom_id)==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bomline<6E><65>id<69><64>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8>ƻ<EFBFBD><C6BB>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
{
|
|
|
int mbom_child_count=0;tag_t *mbom_child_tags=NULLTAG;
|
|
|
ITKCALL(ifail = BOM_line_ask_all_child_lines(top_line,&mbom_child_count,&mbom_child_tags));
|
|
|
if(strcmp(ebom_id,mbom_id)==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD>ebomline
|
|
|
{
|
|
|
for (int n=0;n<mbom_child_count;n++)
|
|
|
{
|
|
|
tag_t mbom_child=mbom_child_tags[n];
|
|
|
char *mbomline_item_id=NULL;
|
|
|
|
|
|
AOM_ask_value_string(mbom_child,"bl_item_item_id",&mbomline_item_id);
|
|
|
if(strcmp(mbomline_item_id,mbom_id)==0)
|
|
|
{
|
|
|
cout<<"mbom<EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD>ebomline<EFBFBD><EFBFBD>ֻ<EFBFBD>踴<EFBFBD><EFBFBD>------"<<endl;
|
|
|
//TODO <20><><EFBFBD><EFBFBD>EBOMLINE<4E><45>MBOM<4F><4D>
|
|
|
tag_t win1,top_line1;
|
|
|
BOM_create_window(&win1);
|
|
|
BOM_set_window_pack_all(win1,false);
|
|
|
BOM_set_window_top_line(win1, NULL, attachments[i], NULL, &top_line1);
|
|
|
int top_line1_child_count=0;
|
|
|
tag_t *top_line1_child_tags=NULLTAG;
|
|
|
BOM_line_ask_all_child_lines(top_line1,&top_line1_child_count,&top_line1_child_tags);
|
|
|
// ITKCALL(ifail=BOM_line_cut(mbom_child));
|
|
|
// BOM_save_window(win);
|
|
|
for(int m=0;m<top_line1_child_count;m++)
|
|
|
{
|
|
|
tag_t top_line1_child_tag=top_line1_child_tags[m];
|
|
|
char *top_line1_child_tag_id=NULL;
|
|
|
AOM_ask_value_string(top_line1,"bl_item_item_id",&top_line1_child_tag_id);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>id----<2D><>"<<top_line1_child_tag_id<<endl;
|
|
|
AOM_ask_value_string(top_line1,"bl_rev_item_revision_id",&top_line1_child_tag_id);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾----<2D><>"<<top_line1_child_tag_id<<endl;
|
|
|
AOM_ask_value_string(top_line1_child_tag,"bl_quantity",&top_line1_child_tag_id);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----<2D><>"<<top_line1_child_tag_id<<endl;
|
|
|
AOM_ask_value_string(top_line1_child_tag,"bl_item_item_id",&top_line1_child_tag_id);
|
|
|
|
|
|
if(strcmp(top_line1_child_tag_id,mbomline_item_id)==0)
|
|
|
{
|
|
|
cout<<"<EFBFBD><EFBFBD>ebomline<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>mbomline"<<endl;
|
|
|
tag_t new_line;
|
|
|
// ITKCALL(ifail=BOM_line_copy(top_line_new,top_line1_child_tag,view_type,&new_line));
|
|
|
ITKCALL(ifail=BOM_line_copy(top_line_new,top_line1_child_tag,NULL,&new_line));
|
|
|
// setBomlineProperty(top_line1_child_tag,new_line,"bl_quantity");
|
|
|
BOM_save_window(win_new);
|
|
|
setBomlineProperty(top_line1_child_tag,new_line,"bl_sequence_no");
|
|
|
setBomlineProperty(top_line1_child_tag,new_line,"bl_part_source");
|
|
|
|
|
|
|
|
|
BOM_save_window(win_new);
|
|
|
BOM_save_window(win);
|
|
|
BOM_save_window(win1);
|
|
|
top_line1_child_tag_id=mem_char(top_line1_child_tag_id);
|
|
|
|
|
|
break;
|
|
|
}
|
|
|
top_line1_child_tag_id=mem_char(top_line1_child_tag_id);
|
|
|
}
|
|
|
top_line1_child_tags=mem_tag(top_line1_child_tags);
|
|
|
BOM_save_window(win1);
|
|
|
BOM_close_window(win1);
|
|
|
BOM_save_window(win_new);
|
|
|
mbomline_item_id=mem_char(mbomline_item_id);
|
|
|
break;
|
|
|
}
|
|
|
mbomline_item_id=mem_char(mbomline_item_id);
|
|
|
}
|
|
|
|
|
|
|
|
|
}else//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ķ<EFBFBD><C4B6>㣬<EFBFBD>Ͱ<EFBFBD>mbom<6F><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bomline<6E>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD>
|
|
|
{
|
|
|
cout<<"ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>轫<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><EFBFBD>mbomline<EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ebomline<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
|
|
for (int n=0;n<mbom_child_count;n++)
|
|
|
{
|
|
|
tag_t mbom_child=mbom_child_tags[n];
|
|
|
char *mbomline_item_id=NULL;
|
|
|
AOM_ask_value_string(mbom_child,"bl_item_item_id",&mbomline_item_id);
|
|
|
if(strcmp(mbomline_item_id,mbom_id)==0)
|
|
|
{
|
|
|
tag_t new_line;
|
|
|
|
|
|
|
|
|
ITKCALL(ifail=BOM_line_copy(top_line_new,mbom_child,NULL,&new_line));
|
|
|
// setBomlineProperty(mbom_child,new_line,"bl_quantity");
|
|
|
BOM_save_window(win_new);
|
|
|
setBomlineProperty(mbom_child,new_line,"bl_sequence_no");
|
|
|
setBomlineProperty(mbom_child,new_line,"bl_part_source");
|
|
|
BOM_save_window(win_new);
|
|
|
// ITKCALL(ifail=BOM_line_cut(mbom_child));
|
|
|
// BOM_save_window(win);
|
|
|
//TODO <20><><EFBFBD><EFBFBD>ebomline<6E><65><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>mbom<6F><6D>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><D2B1>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λbl_uom<6F><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><EFBFBD><E2B9BA><EFBFBD>ֿ<EFBFBD>jk8Warehouse1<65><31><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>jk8SupplyType1)
|
|
|
//TODO <20><><EFBFBD><EFBFBD>EBOM<4F><4D>ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bomline<6E><65>id<69><64>map3<70>ļ<EFBFBD><C4BC><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ͱ<EFBFBD><CDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8>ƹ<EFBFBD><C6B9><EFBFBD>
|
|
|
int bom_num=0;
|
|
|
tag_t * bom_tags=NULLTAG;
|
|
|
ITKCALL(ifail=AOM_ask_value_tags(attachments[i],"structure_revisions",&bom_num,&bom_tags));
|
|
|
if(bom_num>0)
|
|
|
{
|
|
|
tag_t only_bom_new=bom_tags[0];
|
|
|
tag_t bom_window_tag_new = NULLTAG,top_bom_line_tag_new =NULLTAG;
|
|
|
// rev_tag = NULLTAG,item_tag =NULLTAG;
|
|
|
ITKCALL(ifail = BOM_create_window(&bom_window_tag_new));
|
|
|
ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag_new,only_bom_new,&top_bom_line_tag_new));
|
|
|
int child_count_new=0;tag_t *child_tags_new=NULLTAG;
|
|
|
ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag_new,&child_count_new,&child_tags_new));
|
|
|
for(int n1=0;n1<child_count_new;n1++)
|
|
|
{
|
|
|
|
|
|
char * item_id=NULL;
|
|
|
char *item_rev_id=NULL;
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags_new[n1],"bl_item_item_id",&item_id));
|
|
|
ITKCALL(ifail = AOM_ask_value_string(child_tags_new[n1],"bl_rev_item_revision_id",&item_rev_id));
|
|
|
if(strcmp(newEBOM_id,item_id)==0)
|
|
|
{
|
|
|
tag_t ebomlineTag=child_tags_new[n1];
|
|
|
|
|
|
setBomlineProperty(ebomlineTag,new_line,"bl_sequence_no");
|
|
|
setBomlineProperty(ebomlineTag,new_line,"bl_quantity");
|
|
|
setBomlineProperty(ebomlineTag,new_line,"jk8Warehouse1");
|
|
|
setBomlineProperty(ebomlineTag,new_line,"jk8SupplyType1");
|
|
|
setBomlineProperty(ebomlineTag,new_line,"bl_uom");
|
|
|
setBomlineProperty(ebomlineTag,new_line,"bl_part_source");
|
|
|
|
|
|
BOM_save_window(win_new);
|
|
|
|
|
|
|
|
|
item_id=mem_char(item_id);
|
|
|
item_rev_id=mem_char(item_rev_id);
|
|
|
break;
|
|
|
}
|
|
|
item_id=mem_char(item_id);
|
|
|
item_rev_id=mem_char(item_rev_id);
|
|
|
}
|
|
|
child_tags_new=mem_tag(child_tags_new);
|
|
|
ITKCALL(ifail = BOM_save_window(bom_window_tag_new));//Ҫ<><D2AA><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD>Ժ<EFBFBD>bom<6F><6D>ͼ<EFBFBD><CDBC><EFBFBD>ᱣ<EFBFBD><E1B1A3>
|
|
|
ITKCALL(ifail = BOM_close_window(bom_window_tag_new));//<2F>п<EFBFBD><D0BF><EFBFBD><EFBFBD>й<EFBFBD>
|
|
|
}
|
|
|
|
|
|
bom_tags=mem_tag(bom_tags);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* setBomlineProperty(mbom_child,new_line,"bl_quantity");
|
|
|
setBomlineProperty(mbom_child,new_line,"bl_sequence_no");
|
|
|
setBomlineProperty(mbom_child,new_line,"bl_part_source");
|
|
|
setBomlineProperty(mbom_child,new_line,"bl_uom");*/
|
|
|
BOM_save_window(win_new);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// BOM_line_set_attribute_double
|
|
|
mbomline_item_id=mem_char(mbomline_item_id);
|
|
|
break;
|
|
|
}
|
|
|
mbomline_item_id=mem_char(mbomline_item_id);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
}else//<2F><><EFBFBD><EFBFBD>ebomline<6E>ϵ<EFBFBD>bomline<6E><65>mbom<6F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>ھ<EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><D3B8>Ƹ<EFBFBD><C6B8>ƹ<EFBFBD><C6B9><EFBFBD>
|
|
|
{
|
|
|
cout<<"mbomline<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>line"<<endl;
|
|
|
if(map3_size==map3.size())
|
|
|
{
|
|
|
tag_t win2,top_line2;
|
|
|
BOM_create_window(&win2);
|
|
|
BOM_set_window_pack_all(win2,false);
|
|
|
BOM_set_window_top_line(win2, NULL, attachments[i], NULL, &top_line2);
|
|
|
int top_line2_child_count=0;
|
|
|
tag_t * top_line2_child_tags=NULLTAG;
|
|
|
BOM_line_ask_all_child_lines(top_line2,&top_line2_child_count,&top_line2_child_tags);
|
|
|
for(int d=0;d<top_line2_child_count;d++)
|
|
|
{
|
|
|
tag_t top_line2_child_tag=top_line2_child_tags[d];
|
|
|
char *top_line2_child_tag_id=NULL;
|
|
|
AOM_ask_value_string(top_line2_child_tag,"bl_item_item_id",&top_line2_child_tag_id);
|
|
|
if(strcmp(top_line2_child_tag_id,newEBOM_id)==0)
|
|
|
{
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bomline"<<endl;
|
|
|
tag_t new_line;
|
|
|
ITKCALL(ifail=BOM_line_copy(top_line_new,top_line2_child_tag,NULL,&new_line));
|
|
|
// setBomlineProperty(top_line2_child_tag,new_line,"bl_quantity");
|
|
|
BOM_save_window(win_new);
|
|
|
setBomlineProperty(top_line2_child_tag,new_line,"bl_sequence_no");
|
|
|
setBomlineProperty(top_line2_child_tag,new_line,"bl_part_source");
|
|
|
BOM_save_window(win_new);
|
|
|
top_line2_child_tag_id=mem_char(top_line2_child_tag_id);
|
|
|
break;
|
|
|
}
|
|
|
top_line2_child_tag_id=mem_char(top_line2_child_tag_id);
|
|
|
}
|
|
|
top_line2_child_tags=mem_tag(top_line2_child_tags);
|
|
|
BOM_save_window(win2);
|
|
|
BOM_close_window(win2);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
// BOM_line_add(top_line, NULL, l->rev, NULL, &line);
|
|
|
|
|
|
}
|
|
|
|
|
|
BOM_save_window(win);
|
|
|
BOM_save_window(win_new);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
|
|
BOM_close_window(win);
|
|
|
BOM_close_window(win_new);
|
|
|
cout<<"<EFBFBD>ر<EFBFBD>"<<endl;
|
|
|
mbom_tag=mem_tag(mbom_tag);
|
|
|
}
|
|
|
revsTag=mem_tag(revsTag);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ"<<endl;
|
|
|
actualtags=mem_tag(actualtags);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<<endl;
|
|
|
}else
|
|
|
{
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ汾"<<endl;
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>object_TYPE_1"<<endl;
|
|
|
object_TYPE_1=mem_char(object_TYPE_1);
|
|
|
cout<<"<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD><EFBFBD>reference_attachment"<<endl;
|
|
|
attachments=mem_tag(attachments);
|
|
|
cout<<"ִ<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>--------"<<endl;
|
|
|
return 0;
|
|
|
}
|