|
|
@ -655,7 +655,7 @@ void replaceBom(EBomBean& childPm, map<string, tag_t>& map, int len, tag_t dcpro
|
|
|
|
string url = "http://10.128.20.35:9002/Post/PLM_Goods";
|
|
|
|
string url = "http://10.128.20.35:9002/Post/PLM_Goods";
|
|
|
|
string jsonUf = G2U222(jsons[i].c_str());
|
|
|
|
string jsonUf = G2U222(jsons[i].c_str());
|
|
|
|
//调用接口申请物料
|
|
|
|
//调用接口申请物料
|
|
|
|
//string msg = callHttpserver(jsonUf, url);
|
|
|
|
string msg = callHttpserver(jsonUf, url);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -770,7 +770,7 @@ void recyReadEBom(tag_t pLine, EBomBean parentBean, vector<EBomBean>& beans, int
|
|
|
|
int num = 0;
|
|
|
|
int num = 0;
|
|
|
|
tag_t* mantrs;
|
|
|
|
tag_t* mantrs;
|
|
|
|
ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
|
|
|
|
ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
|
|
|
|
if (num == 1) {
|
|
|
|
if (num > 0) {
|
|
|
|
char* id;
|
|
|
|
char* id;
|
|
|
|
AOM_ask_value_string(mantrs[0], "item_id", &id);
|
|
|
|
AOM_ask_value_string(mantrs[0], "item_id", &id);
|
|
|
|
string item_id = id;
|
|
|
|
string item_id = id;
|
|
|
@ -870,8 +870,9 @@ class E2PBean //
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
string key;//wbs号+物料号组成的标识
|
|
|
|
string key;//wbs号+物料号组成的标识
|
|
|
|
tag_t pMantr=NULLTAG; // p物料 发布升版,没发布更新,取最新版本 (不带P的移除添加)
|
|
|
|
tag_t pMantr=NULLTAG; // p物料 发布升版,没发布更新,取最新版本 (不带P的移除添加)
|
|
|
|
string revId = "";
|
|
|
|
string prevId = "";
|
|
|
|
tag_t eMantr; // e物料
|
|
|
|
tag_t eMantr; // e物料
|
|
|
|
|
|
|
|
string erevId = "";
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
//定义成员函数
|
|
|
|
//定义成员函数
|
|
|
|
void isSameKey(string newKey)
|
|
|
|
void isSameKey(string newKey)
|
|
|
@ -901,9 +902,9 @@ void updatePbomCycle(tag_t eLine, string &errBuff, int len, EBomUpBean &upBean)
|
|
|
|
char* ifpBom, *matnrNo, *childQty;
|
|
|
|
char* ifpBom, *matnrNo, *childQty;
|
|
|
|
tag_t c_line_tag = c_line_tags[i], eRev;
|
|
|
|
tag_t c_line_tag = c_line_tags[i], eRev;
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
|
|
|
|
AOM_ask_value_string(c_line_tag, BL_QUANTITY, &childQty);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_line_tag, BL_QUANTITY, &childQty));
|
|
|
|
AOM_ask_value_string(eRev, "zt2_ifpbom", &ifpBom);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "zt2_ifpbom", &ifpBom));
|
|
|
|
AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo));
|
|
|
|
|
|
|
|
|
|
|
|
EBomUpBean cBean;
|
|
|
|
EBomUpBean cBean;
|
|
|
|
cBean.matnrNo = matnrNo;
|
|
|
|
cBean.matnrNo = matnrNo;
|
|
|
@ -916,30 +917,30 @@ void updatePbomCycle(tag_t eLine, string &errBuff, int len, EBomUpBean &upBean)
|
|
|
|
ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
|
|
|
|
ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
|
|
|
|
if (num == 1) {
|
|
|
|
if (num == 1) {
|
|
|
|
char* id;
|
|
|
|
char* id;
|
|
|
|
AOM_ask_value_string(mantrs[0], "item_id", &id);
|
|
|
|
ITKCALL(AOM_ask_value_string(mantrs[0], "item_id", &id));
|
|
|
|
string item_id = id;
|
|
|
|
string item_id = id;
|
|
|
|
smatch result;
|
|
|
|
smatch result;
|
|
|
|
bool ret = regex_match(item_id, result, qq_reg);
|
|
|
|
bool ret = regex_match(item_id, result, qq_reg);
|
|
|
|
if (ret) {
|
|
|
|
if (ret) {
|
|
|
|
char* zt2_ifpbom;
|
|
|
|
char* zt2_ifpbom;
|
|
|
|
AOM_ask_value_string(eRev, "zt2_ifpbom", &zt2_ifpbom);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "zt2_ifpbom", &zt2_ifpbom));
|
|
|
|
if (zt2_ifpbom != NULL && strcmp(zt2_ifpbom, "P") == 0) {
|
|
|
|
if (zt2_ifpbom != NULL && strcmp(zt2_ifpbom, "P") == 0) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
int cc_cnt;
|
|
|
|
int cc_cnt;
|
|
|
|
tag_t* cc_lines;
|
|
|
|
tag_t* cc_lines;
|
|
|
|
BOM_line_ask_all_child_lines(c_line_tag, &cc_cnt, &cc_lines);
|
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(c_line_tag, &cc_cnt, &cc_lines));
|
|
|
|
printf("cc_cnt===> %d item_id ==> %s \n", cc_cnt, id);
|
|
|
|
printf("cc_cnt===> %d item_id ==> %s \n", cc_cnt, id);
|
|
|
|
//新增逻辑
|
|
|
|
//新增逻辑
|
|
|
|
for (int tt = 0; tt < cc_cnt; tt++) {
|
|
|
|
for (int tt = 0; tt < cc_cnt; tt++) {
|
|
|
|
tag_t cc_line = cc_lines[tt], c_eRev;
|
|
|
|
tag_t cc_line = cc_lines[tt], c_eRev;
|
|
|
|
char* bl_quantity, *pId, *c_pId,*bl_line_name,*remark;
|
|
|
|
char* bl_quantity, *pId, *c_pId,*bl_line_name,*remark;
|
|
|
|
AOM_ask_value_string(eRev, "item_id", &pId);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "item_id", &pId));
|
|
|
|
AOM_ask_value_string(cc_line, "bl_quantity", &bl_quantity);
|
|
|
|
ITKCALL(AOM_ask_value_string(cc_line, "bl_quantity", &bl_quantity));
|
|
|
|
ITKCALL(AOM_ask_value_tag(cc_line, "bl_line_object", &c_eRev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(cc_line, "bl_line_object", &c_eRev));
|
|
|
|
AOM_ask_value_string(cc_line, "bl_line_name", &bl_line_name);
|
|
|
|
ITKCALL(AOM_ask_value_string(cc_line, "bl_line_name", &bl_line_name));
|
|
|
|
AOM_ask_value_string(c_eRev, "item_id", &c_pId);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_eRev, "item_id", &c_pId));
|
|
|
|
AOM_ask_value_string(cc_line, "ZT2_Remark", &remark);
|
|
|
|
ITKCALL(AOM_ask_value_string(cc_line, "ZT2_Remark", &remark));
|
|
|
|
printf("c_pId===> %s bl_quantity ==> %s len==> %d \n", c_pId, bl_quantity, len);
|
|
|
|
printf("c_pId===> %s bl_quantity ==> %s len==> %d \n", c_pId, bl_quantity, len);
|
|
|
|
if (strcmp("bl_quantity", "") == 0) {
|
|
|
|
if (strcmp("bl_quantity", "") == 0) {
|
|
|
|
errBuff.append("P类物料:").append(pId).append("下子件").append(c_pId)
|
|
|
|
errBuff.append("P类物料:").append(pId).append("下子件").append(c_pId)
|
|
|
@ -1195,7 +1196,7 @@ void createAXxq(tag_t eRev, tag_t pRev, int len, tag_t dcproxy) {
|
|
|
|
printf("jsons ===> %s \n", jsons[i].c_str());
|
|
|
|
printf("jsons ===> %s \n", jsons[i].c_str());
|
|
|
|
string url = "http://10.128.20.35:9002/Post/PLM_Goods";
|
|
|
|
string url = "http://10.128.20.35:9002/Post/PLM_Goods";
|
|
|
|
string jsonUf = G2U222(jsons[i].c_str());
|
|
|
|
string jsonUf = G2U222(jsons[i].c_str());
|
|
|
|
//string msg = callHttpserver(jsonUf, url);
|
|
|
|
string msg = callHttpserver(jsonUf, url);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1205,27 +1206,28 @@ void addToAmatnrUp(vector<EBomUpBean> vecs, int len, tag_t newPAmatnr, boolean l
|
|
|
|
tag_t mantr = newPAmatnr, ebom_window, bom_line;
|
|
|
|
tag_t mantr = newPAmatnr, ebom_window, bom_line;
|
|
|
|
tag_t* bvr_list = NULL;
|
|
|
|
tag_t* bvr_list = NULL;
|
|
|
|
int bvr_count;
|
|
|
|
int bvr_count;
|
|
|
|
|
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(mantr, &bvr_count, &bvr_list));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(mantr, &bvr_count, &bvr_list));
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
tag_t newView, newViewBvr, pitem;
|
|
|
|
tag_t newView, newViewBvr, pitem;
|
|
|
|
ITEM_ask_item_of_rev(mantr, &pitem);
|
|
|
|
ITKCALL(ITEM_ask_item_of_rev(mantr, &pitem));
|
|
|
|
ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
|
|
|
|
ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
|
|
|
|
AOM_save(newView);
|
|
|
|
ITKCALL(AOM_save(newView));
|
|
|
|
ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, mantr, &newViewBvr));
|
|
|
|
ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, mantr, &newViewBvr));
|
|
|
|
AOM_save(newViewBvr);
|
|
|
|
ITKCALL(AOM_save(newViewBvr));
|
|
|
|
AOM_save(mantr);
|
|
|
|
ITKCALL(AOM_save(mantr));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
|
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, mantr, NULLTAG, &bom_line));
|
|
|
|
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, mantr, NULLTAG, &bom_line));
|
|
|
|
char *name;
|
|
|
|
char *name;
|
|
|
|
AOM_ask_value_string(mantr, "object_name", &name);
|
|
|
|
ITKCALL(AOM_ask_value_string(mantr, "object_name", &name));
|
|
|
|
string xqType = getXqName(name); //ABCDE
|
|
|
|
string xqType = getXqName(name); //ABCDE
|
|
|
|
for (int i = 0; i < vecs.size(); i++) {
|
|
|
|
for (int i = 0; i < vecs.size(); i++) {
|
|
|
|
tag_t newChild;
|
|
|
|
tag_t newChild = NULLTAG;
|
|
|
|
tag_t cline = vecs[i].bomline;
|
|
|
|
tag_t cline = vecs[i].bomline;
|
|
|
|
|
|
|
|
|
|
|
|
char* oldQty, *seqNo, *remark,*bl_line_name;
|
|
|
|
char* oldQty, *seqNo, *remark,*bl_line_name;
|
|
|
|
AOM_ask_value_string(cline, "ZT2_Remark", &remark);
|
|
|
|
ITKCALL(AOM_ask_value_string(cline, "ZT2_Remark", &remark));
|
|
|
|
string msg = getRemarkMsg(remark, len);
|
|
|
|
string msg = getRemarkMsg(remark, len);
|
|
|
|
int xqLen = len;
|
|
|
|
int xqLen = len;
|
|
|
|
if (msg.length() > 0) {
|
|
|
|
if (msg.length() > 0) {
|
|
|
@ -1235,30 +1237,33 @@ void addToAmatnrUp(vector<EBomUpBean> vecs, int len, tag_t newPAmatnr, boolean l
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ITKCALL(BOM_line_copy(bom_line, cline, NULLTAG, &newChild));
|
|
|
|
ITKCALL(BOM_line_copy(bom_line, cline, NULLTAG, &newChild));
|
|
|
|
AOM_ask_value_string(cline, "bl_quantity", &oldQty);
|
|
|
|
if (newChild == NULLTAG) {
|
|
|
|
AOM_ask_value_string(cline, "bl_sequence_no", &seqNo);
|
|
|
|
continue;
|
|
|
|
AOM_ask_value_string(cline, "bl_line_name", &bl_line_name);
|
|
|
|
}
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_string(cline, "bl_quantity", &oldQty));
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_string(cline, "bl_sequence_no", &seqNo));
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_string(cline, "bl_line_name", &bl_line_name));
|
|
|
|
if (lastFlag && strstr(bl_line_name,"线")!=NULL) {
|
|
|
|
if (lastFlag && strstr(bl_line_name,"线")!=NULL) {
|
|
|
|
double blQty = atof(oldQty);
|
|
|
|
double blQty = atof(oldQty);
|
|
|
|
int num = blQty / xqLen;
|
|
|
|
int num = blQty / xqLen;
|
|
|
|
double fmodVal = fmod(blQty, xqLen);
|
|
|
|
double fmodVal = fmod(blQty, xqLen);
|
|
|
|
double lastVal = num + fmodVal;
|
|
|
|
double lastVal = num + fmodVal;
|
|
|
|
string numNew = to_string(lastVal);
|
|
|
|
string numNew = to_string(lastVal);
|
|
|
|
AOM_lock(newChild);
|
|
|
|
ITKCALL(AOM_lock(newChild));
|
|
|
|
AOM_set_value_string(newChild, "bl_quantity", numNew.c_str());
|
|
|
|
ITKCALL(AOM_set_value_string(newChild, "bl_quantity", numNew.c_str()));
|
|
|
|
AOM_set_value_string(newChild, "bl_sequence_no", seqNo);
|
|
|
|
ITKCALL(AOM_set_value_string(newChild, "bl_sequence_no", seqNo));
|
|
|
|
AOM_save(newChild);
|
|
|
|
ITKCALL(AOM_save(newChild));
|
|
|
|
AOM_unlock(newChild);
|
|
|
|
ITKCALL(AOM_unlock(newChild));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
int blQty = atoi(oldQty);
|
|
|
|
int blQty = atoi(oldQty);
|
|
|
|
int num = blQty / len;
|
|
|
|
int num = blQty / len;
|
|
|
|
string numNew = to_string(num);
|
|
|
|
string numNew = to_string(num);
|
|
|
|
AOM_lock(newChild);
|
|
|
|
ITKCALL(AOM_lock(newChild));
|
|
|
|
AOM_set_value_string(newChild, "bl_quantity", numNew.c_str());
|
|
|
|
ITKCALL(AOM_set_value_string(newChild, "bl_quantity", numNew.c_str()));
|
|
|
|
AOM_set_value_string(newChild, "bl_sequence_no", seqNo);
|
|
|
|
ITKCALL(AOM_set_value_string(newChild, "bl_sequence_no", seqNo));
|
|
|
|
AOM_save(newChild);
|
|
|
|
ITKCALL(AOM_save(newChild));
|
|
|
|
AOM_unlock(newChild);
|
|
|
|
ITKCALL(AOM_unlock(newChild));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1305,10 +1310,10 @@ void getPBomMsg(tag_t bom_line, map<string, double>& bomMsgMap) {
|
|
|
|
tag_t c_Rev;
|
|
|
|
tag_t c_Rev;
|
|
|
|
char *matnrNo, *cnt, *objName;
|
|
|
|
char *matnrNo, *cnt, *objName;
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[t], BL_LINE_OBJECT, &c_Rev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[t], BL_LINE_OBJECT, &c_Rev));
|
|
|
|
AOM_ask_value_string(c_Rev, MATERIALNO, &matnrNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_Rev, MATERIALNO, &matnrNo));
|
|
|
|
printf("zt2_MaterialNo===>%s\n", matnrNo);
|
|
|
|
printf("zt2_MaterialNo===>%s\n", matnrNo);
|
|
|
|
double qtyPXn = 1;
|
|
|
|
double qtyPXn = 1;
|
|
|
|
AOM_ask_value_string(c_line_tags[t], BL_QUANTITY, &cnt);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_line_tags[t], BL_QUANTITY, &cnt));
|
|
|
|
if (strcmp(cnt, "") != 0) {
|
|
|
|
if (strcmp(cnt, "") != 0) {
|
|
|
|
qtyPXn = atof(cnt);
|
|
|
|
qtyPXn = atof(cnt);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1347,11 +1352,11 @@ map<string, double> getPBomMsg(tag_t mantrRev, bool& flag, vector<tag_t>& termCo
|
|
|
|
tag_t c_Rev;
|
|
|
|
tag_t c_Rev;
|
|
|
|
char *matnrNo, *cnt, *objName;
|
|
|
|
char *matnrNo, *cnt, *objName;
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[t], "bl_line_object", &c_Rev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[t], "bl_line_object", &c_Rev));
|
|
|
|
AOM_ask_value_string(c_Rev, "zt2_MaterialNo", &matnrNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_Rev, "zt2_MaterialNo", &matnrNo));
|
|
|
|
|
|
|
|
|
|
|
|
double qtyPXn = 1;
|
|
|
|
double qtyPXn = 1;
|
|
|
|
AOM_ask_value_string(c_line_tags[t], "bl_quantity", &cnt);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_line_tags[t], "bl_quantity", &cnt));
|
|
|
|
AOM_ask_value_string(c_Rev, OBJECT_NAME, &objName);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_Rev, OBJECT_NAME, &objName));
|
|
|
|
printf("zt2_MaterialNo===>%s objName ===> %s\n", matnrNo, objName);
|
|
|
|
printf("zt2_MaterialNo===>%s objName ===> %s\n", matnrNo, objName);
|
|
|
|
if (checkName(objName)) {
|
|
|
|
if (checkName(objName)) {
|
|
|
|
termCoils.push_back(c_Rev);
|
|
|
|
termCoils.push_back(c_Rev);
|
|
|
@ -1368,7 +1373,7 @@ map<string, double> getPBomMsg(tag_t mantrRev, bool& flag, vector<tag_t>& termCo
|
|
|
|
bomMsgMap[matnrNo] = qtyPXn;
|
|
|
|
bomMsgMap[matnrNo] = qtyPXn;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
BOM_close_window(ebom_window);
|
|
|
|
ITKCALL(BOM_close_window(ebom_window));
|
|
|
|
return bomMsgMap;
|
|
|
|
return bomMsgMap;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -1448,6 +1453,8 @@ tag_t saveAsMaterial(EBomUpBean topBean, boolean isTop,
|
|
|
|
printf("=======TEST====== %d \n", termCoils.size());
|
|
|
|
printf("=======TEST====== %d \n", termCoils.size());
|
|
|
|
//升版并发布 没发布的产成品直接更新
|
|
|
|
//升版并发布 没发布的产成品直接更新
|
|
|
|
if (isTcm(pMaterial) && isBomViewTcm(pMaterial)) {
|
|
|
|
if (isTcm(pMaterial) && isBomViewTcm(pMaterial)) {
|
|
|
|
|
|
|
|
printf("ITEM_copy_rev::%s\n", oldUid);
|
|
|
|
|
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
|
ITKCALL(ITEM_copy_rev(pMaterial, NULL, &pMaterial));
|
|
|
|
ITKCALL(ITEM_copy_rev(pMaterial, NULL, &pMaterial));
|
|
|
|
TCMAndOwner(pMaterial);
|
|
|
|
TCMAndOwner(pMaterial);
|
|
|
|
if (isTop) {
|
|
|
|
if (isTop) {
|
|
|
@ -1461,6 +1468,7 @@ tag_t saveAsMaterial(EBomUpBean topBean, boolean isTop,
|
|
|
|
printf("=======itemId====== %s \n", itemId);
|
|
|
|
printf("=======itemId====== %s \n", itemId);
|
|
|
|
if (isTcm(termCoils[i]) && isBomViewTcm(termCoils[i])) {
|
|
|
|
if (isTcm(termCoils[i]) && isBomViewTcm(termCoils[i])) {
|
|
|
|
tag_t newPMantr;
|
|
|
|
tag_t newPMantr;
|
|
|
|
|
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
|
ITKCALL(ITEM_copy_rev(termCoils[i], NULL, &newPMantr));
|
|
|
|
ITKCALL(ITEM_copy_rev(termCoils[i], NULL, &newPMantr));
|
|
|
|
changeCoilOwner(newPMantr, termCoils[i]);
|
|
|
|
changeCoilOwner(newPMantr, termCoils[i]);
|
|
|
|
//TCMAndOwner(newPMantr);
|
|
|
|
//TCMAndOwner(newPMantr);
|
|
|
@ -1482,6 +1490,7 @@ tag_t saveAsMaterial(EBomUpBean topBean, boolean isTop,
|
|
|
|
void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
boolean isTop, string &hasChange, map<string, tag_t>& saveAsMap) {
|
|
|
|
boolean isTop, string &hasChange, map<string, tag_t>& saveAsMap) {
|
|
|
|
//记录的EBOM下面的子件
|
|
|
|
//记录的EBOM下面的子件
|
|
|
|
|
|
|
|
printf("startUpdate===>%s\n", upBean.matnrNo.c_str());
|
|
|
|
vector<EBomUpBean> vecs = upBean.parentBean;
|
|
|
|
vector<EBomUpBean> vecs = upBean.parentBean;
|
|
|
|
int c_line_count = 0;
|
|
|
|
int c_line_count = 0;
|
|
|
|
tag_t* c_line_tags;
|
|
|
|
tag_t* c_line_tags;
|
|
|
@ -1495,12 +1504,13 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
tag_t ebom_window2, *bvr_list2, bom_line;
|
|
|
|
tag_t ebom_window2, *bvr_list2, bom_line;
|
|
|
|
int bvr_count2 = 0;
|
|
|
|
int bvr_count2 = 0;
|
|
|
|
char* pBomUid;
|
|
|
|
char* pBomUid;
|
|
|
|
(BOM_create_window(&ebom_window2));
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window2));
|
|
|
|
ITK__convert_tag_to_uid(pBomTop, &pBomUid);
|
|
|
|
ITK__convert_tag_to_uid(pBomTop, &pBomUid);
|
|
|
|
|
|
|
|
|
|
|
|
(ITEM_rev_list_bom_view_revs(pBomTop, &bvr_count2, &bvr_list2));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(pBomTop, &bvr_count2, &bvr_list2));
|
|
|
|
|
|
|
|
printf(" pBomUid ===>%s \n", pBomUid);
|
|
|
|
if (bvr_count2 == 0) {
|
|
|
|
if (bvr_count2 == 0) {
|
|
|
|
//errBuff.append("不存在EBOM请检查\n");
|
|
|
|
printf("不存在EBOM请检查\n");
|
|
|
|
//原来没有PBOM
|
|
|
|
//原来没有PBOM
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1510,9 +1520,9 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
char* ifpBom, *matnrNo, *name;
|
|
|
|
char* ifpBom, *matnrNo, *name;
|
|
|
|
tag_t c_line_tag = c_line_tags[i], eRev;
|
|
|
|
tag_t c_line_tag = c_line_tags[i], eRev;
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
|
|
|
|
AOM_ask_value_string(eRev, "zt2_ifpbom", &ifpBom);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "zt2_ifpbom", &ifpBom));
|
|
|
|
AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo));
|
|
|
|
AOM_ask_value_string(eRev, "object_name", &name);
|
|
|
|
ITKCALL(AOM_ask_value_string(eRev, "object_name", &name));
|
|
|
|
//移除PBOM
|
|
|
|
//移除PBOM
|
|
|
|
printf("zt2_MaterialNo ===>%s ifpBom==>%s\n", matnrNo, ifpBom);
|
|
|
|
printf("zt2_MaterialNo ===>%s ifpBom==>%s\n", matnrNo, ifpBom);
|
|
|
|
if (strcmp(ifpBom, "P") == 0) {
|
|
|
|
if (strcmp(ifpBom, "P") == 0) {
|
|
|
@ -1522,7 +1532,7 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
//BOM_line_cut(c_line_tag);
|
|
|
|
//BOM_line_cut(c_line_tag);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (!checkName(name)) {
|
|
|
|
else if (!checkName(name)) {
|
|
|
|
BOM_line_cut(c_line_tag);//pBomMap[matnrNo] = c_line_tag;
|
|
|
|
ITKCALL(BOM_line_cut(c_line_tag));//pBomMap[matnrNo] = c_line_tag;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (checkName(name)) {
|
|
|
|
else if (checkName(name)) {
|
|
|
|
xqTagVec.push_back(c_line_tag);
|
|
|
|
xqTagVec.push_back(c_line_tag);
|
|
|
@ -1530,6 +1540,7 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//移除所有非P 再从EBOM复制
|
|
|
|
//移除所有非P 再从EBOM复制
|
|
|
|
printf("xqTagVec===>%d\n", xqTagVec.size());
|
|
|
|
printf("xqTagVec===>%d\n", xqTagVec.size());
|
|
|
|
|
|
|
|
POM_AM__set_application_bypass(true);
|
|
|
|
for (int i = 0; i < xqTagVec.size(); i++) {
|
|
|
|
for (int i = 0; i < xqTagVec.size(); i++) {
|
|
|
|
tag_t xqLine = xqTagVec[i],*c_xqLine_tags, newPAmatnr;
|
|
|
|
tag_t xqLine = xqTagVec[i],*c_xqLine_tags, newPAmatnr;
|
|
|
|
int c_line_countXq = 0;
|
|
|
|
int c_line_countXq = 0;
|
|
|
@ -1537,7 +1548,7 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
printf("c_line_countXq===>%d\n", c_line_countXq);
|
|
|
|
printf("c_line_countXq===>%d\n", c_line_countXq);
|
|
|
|
//移除原来的 -> 进行对比是否有修改
|
|
|
|
//移除原来的 -> 进行对比是否有修改
|
|
|
|
for (int j = 0; j < c_line_countXq; j++) {
|
|
|
|
for (int j = 0; j < c_line_countXq; j++) {
|
|
|
|
BOM_line_cut(c_xqLine_tags[j]);
|
|
|
|
ITKCALL(BOM_line_cut(c_xqLine_tags[j]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ITKCALL(AOM_ask_value_tag(xqLine, "bl_line_object", &newPAmatnr));
|
|
|
|
ITKCALL(AOM_ask_value_tag(xqLine, "bl_line_object", &newPAmatnr));
|
|
|
|
//添加线圈下的东西
|
|
|
|
//添加线圈下的东西
|
|
|
@ -1549,29 +1560,30 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (xqTagVec.size() == 0) {
|
|
|
|
if (xqTagVec.size() == 0) {
|
|
|
|
//不是线圈 移除后复制
|
|
|
|
//不是线圈 移除后复制
|
|
|
|
printf("vecs===>%d\n", vecs.size());
|
|
|
|
printf("vecs===>%zd\n", vecs.size());
|
|
|
|
for (int i = 0; i < vecs.size(); i++) {
|
|
|
|
for (int i = 0; i < vecs.size(); i++) {
|
|
|
|
|
|
|
|
printf("i===>%d\n", i);
|
|
|
|
EBomUpBean cupBean = vecs[i];
|
|
|
|
EBomUpBean cupBean = vecs[i];
|
|
|
|
//重新复制
|
|
|
|
//重新复制
|
|
|
|
if (std::find(matnrVec.begin(), matnrVec.end(), cupBean.matnrNo) != matnrVec.end()) {
|
|
|
|
if (std::find(matnrVec.begin(), matnrVec.end(), cupBean.matnrNo) != matnrVec.end()) {
|
|
|
|
|
|
|
|
printf("matnrVec ===>%s\n", cupBean.matnrNo.c_str());
|
|
|
|
tag_t c_line_tag = pBomMap[cupBean.matnrNo];
|
|
|
|
tag_t c_line_tag = pBomMap[cupBean.matnrNo];
|
|
|
|
tag_t c_Rev, bomView = NULLTAG;
|
|
|
|
tag_t c_Rev, bomView = NULLTAG;
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &c_Rev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &c_Rev));
|
|
|
|
boolean flagAs = false;
|
|
|
|
boolean flagAs = false;
|
|
|
|
|
|
|
|
|
|
|
|
tag_t childPTag;
|
|
|
|
tag_t childPTag;
|
|
|
|
printf("matnrVec ===>%s\n", cupBean.matnrNo.c_str());
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, BL_LINE_OBJECT, &childPTag));
|
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, BL_LINE_OBJECT, &childPTag));
|
|
|
|
startUpdate(cupBean, childPTag, len, dcproxy, isTop, hasChange, saveAsMap);
|
|
|
|
startUpdate(cupBean, childPTag, len, dcproxy, isTop, hasChange, saveAsMap);
|
|
|
|
if (bomView != NULLTAG && flagAs) {
|
|
|
|
if (bomView != NULLTAG && flagAs) {
|
|
|
|
BOM_save_window(bomView);
|
|
|
|
ITKCALL(BOM_save_window(bomView));
|
|
|
|
BOM_close_window(bomView);
|
|
|
|
ITKCALL(BOM_close_window(bomView));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
printf("i2===>%d\n", i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
boolean flagLc = false;
|
|
|
|
boolean flagLc = false;
|
|
|
|
char* seq;
|
|
|
|
char* seq;
|
|
|
|
printf(" pBomUid ===>%s \n", pBomUid);
|
|
|
|
|
|
|
|
printf("matnrVecNotP===>%s\n", cupBean.matnrNo.c_str());
|
|
|
|
printf("matnrVecNotP===>%s\n", cupBean.matnrNo.c_str());
|
|
|
|
tag_t cline = cupBean.bomline;
|
|
|
|
tag_t cline = cupBean.bomline;
|
|
|
|
tag_t newChild;
|
|
|
|
tag_t newChild;
|
|
|
@ -1580,11 +1592,11 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
printf(" newChild === NULLTAG 没有权限修改BOM视图 \n");
|
|
|
|
printf(" newChild === NULLTAG 没有权限修改BOM视图 \n");
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
AOM_ask_value_string(cline, "bl_sequence_no", &seq);
|
|
|
|
ITKCALL(AOM_ask_value_string(cline, "bl_sequence_no", &seq));
|
|
|
|
AOM_lock(newChild);
|
|
|
|
ITKCALL(AOM_lock(newChild));
|
|
|
|
AOM_set_value_string(newChild, "bl_sequence_no", seq);
|
|
|
|
ITKCALL(AOM_set_value_string(newChild, "bl_sequence_no", seq));
|
|
|
|
AOM_save(newChild);
|
|
|
|
ITKCALL(AOM_save(newChild));
|
|
|
|
AOM_unlock(newChild);
|
|
|
|
ITKCALL(AOM_unlock(newChild));
|
|
|
|
tag_t c_Rev;
|
|
|
|
tag_t c_Rev;
|
|
|
|
ITKCALL(AOM_ask_value_tag(cline, "bl_line_object", &c_Rev));
|
|
|
|
ITKCALL(AOM_ask_value_tag(cline, "bl_line_object", &c_Rev));
|
|
|
|
|
|
|
|
|
|
|
@ -1611,6 +1623,7 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
|
|
|
|
|
|
|
|
ITKCALL(BOM_save_window(ebom_window2));
|
|
|
|
ITKCALL(BOM_save_window(ebom_window2));
|
|
|
|
ITKCALL(BOM_close_window(ebom_window2));
|
|
|
|
ITKCALL(BOM_close_window(ebom_window2));
|
|
|
|
|
|
|
|
printf("startUpdate end===>%s\n", upBean.matnrNo.c_str());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 复制BOM信息
|
|
|
|
* 复制BOM信息
|
|
|
@ -1620,11 +1633,15 @@ void startUpdate(EBomUpBean upBean, tag_t pBomTag, int len, tag_t dcproxy,
|
|
|
|
void copyBomLine(tag_t matnrTop, tag_t otherPbom) {
|
|
|
|
void copyBomLine(tag_t matnrTop, tag_t otherPbom) {
|
|
|
|
tag_t ebom_window, ebom_window2, *bvr_list, *bvr_list2, bom_line, bom_line2, *c_line_tags, *c_line_tags2;
|
|
|
|
tag_t ebom_window, ebom_window2, *bvr_list, *bvr_list2, bom_line, bom_line2, *c_line_tags, *c_line_tags2;
|
|
|
|
int bvr_count = 0, bvr_count2 = 0, c_line_count, c_line_count2;
|
|
|
|
int bvr_count = 0, bvr_count2 = 0, c_line_count, c_line_count2;
|
|
|
|
(BOM_create_window(&ebom_window));
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
|
(ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
|
|
|
|
printf("bvr_count=%d \n", bvr_count);
|
|
|
|
printf("bvr_count=%d \n", bvr_count);
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
//errBuff.append("不存在EBOM请检查\n");
|
|
|
|
//errBuff.append("不存在EBOM请检查\n");
|
|
|
|
|
|
|
|
char* os = NULL;
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_string(matnrTop, "object_string", &os));
|
|
|
|
|
|
|
|
printf("%sBOM数量为0\n", os);
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ITKCALL(BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
|
|
|
|
ITKCALL(BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
|
|
|
|
printf("顶层bom获取\n");
|
|
|
|
printf("顶层bom获取\n");
|
|
|
@ -1632,20 +1649,20 @@ void copyBomLine(tag_t matnrTop, tag_t otherPbom) {
|
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
|
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(ITEM_rev_list_bom_view_revs(otherPbom, &bvr_count2, &bvr_list2));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(otherPbom, &bvr_count2, &bvr_list2));
|
|
|
|
if (bvr_count2 == 0) {
|
|
|
|
if (bvr_count2 == 0) {
|
|
|
|
tag_t newView, newViewBvr, pitem;
|
|
|
|
tag_t newView, newViewBvr, pitem;
|
|
|
|
ITEM_ask_item_of_rev(otherPbom, &pitem);
|
|
|
|
ITKCALL(ITEM_ask_item_of_rev(otherPbom, &pitem));
|
|
|
|
ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
|
|
|
|
ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
|
|
|
|
AOM_save(newView);
|
|
|
|
ITKCALL(AOM_save(newView));
|
|
|
|
ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, otherPbom, &newViewBvr));
|
|
|
|
ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, otherPbom, &newViewBvr));
|
|
|
|
AOM_save(newViewBvr);
|
|
|
|
ITKCALL(AOM_save(newViewBvr));
|
|
|
|
AOM_save(otherPbom);
|
|
|
|
ITKCALL(AOM_save(otherPbom));
|
|
|
|
//return;
|
|
|
|
//return;
|
|
|
|
(ITEM_rev_list_bom_view_revs(otherPbom, &bvr_count2, &bvr_list2));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(otherPbom, &bvr_count2, &bvr_list2));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(BOM_create_window(&ebom_window2));
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window2));
|
|
|
|
(BOM_set_window_top_line_bvr(ebom_window2, bvr_list2[0], &bom_line2)); //顶层bom获取
|
|
|
|
ITKCALL(BOM_set_window_top_line_bvr(ebom_window2, bvr_list2[0], &bom_line2)); //顶层bom获取
|
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(bom_line2, &c_line_count2, &c_line_tags2));
|
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(bom_line2, &c_line_count2, &c_line_tags2));
|
|
|
|
for (int i = 0; i < c_line_count2; i++) {
|
|
|
|
for (int i = 0; i < c_line_count2; i++) {
|
|
|
|
BOM_line_cut(c_line_tags2[i]);
|
|
|
|
BOM_line_cut(c_line_tags2[i]);
|
|
|
@ -1654,10 +1671,10 @@ void copyBomLine(tag_t matnrTop, tag_t otherPbom) {
|
|
|
|
tag_t newChild;
|
|
|
|
tag_t newChild;
|
|
|
|
char *bl_seqNo;
|
|
|
|
char *bl_seqNo;
|
|
|
|
ITKCALL(BOM_line_copy(bom_line2, c_line_tags[i], NULLTAG, &newChild));
|
|
|
|
ITKCALL(BOM_line_copy(bom_line2, c_line_tags[i], NULLTAG, &newChild));
|
|
|
|
AOM_ask_value_string(c_line_tags[i], "bl_sequence_no", &bl_seqNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(c_line_tags[i], "bl_sequence_no", &bl_seqNo));
|
|
|
|
AOM_lock(newChild);
|
|
|
|
ITKCALL(AOM_lock(newChild));
|
|
|
|
AOM_set_value_string(newChild, "bl_sequence_no", bl_seqNo);
|
|
|
|
ITKCALL(AOM_set_value_string(newChild, "bl_sequence_no", bl_seqNo));
|
|
|
|
AOM_save(newChild);
|
|
|
|
ITKCALL(AOM_save(newChild));
|
|
|
|
//最后unlock
|
|
|
|
//最后unlock
|
|
|
|
AOM_unlock(newChild);
|
|
|
|
AOM_unlock(newChild);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1665,8 +1682,8 @@ void copyBomLine(tag_t matnrTop, tag_t otherPbom) {
|
|
|
|
//ITKCALL(BOM_line_copy(bom_line2, c_line_tags[i], NULLTAG, &newChild));
|
|
|
|
//ITKCALL(BOM_line_copy(bom_line2, c_line_tags[i], NULLTAG, &newChild));
|
|
|
|
|
|
|
|
|
|
|
|
ITKCALL(BOM_save_window(ebom_window2));
|
|
|
|
ITKCALL(BOM_save_window(ebom_window2));
|
|
|
|
BOM_close_window(ebom_window2);
|
|
|
|
ITKCALL(BOM_close_window(ebom_window2));
|
|
|
|
BOM_close_window(ebom_window);
|
|
|
|
ITKCALL(BOM_close_window(ebom_window));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//EBOM转PBOM
|
|
|
|
//EBOM转PBOM
|
|
|
@ -1734,10 +1751,10 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
//找到图纸获取下面所有符合条件的E物料和P物料已有就更新
|
|
|
|
//找到图纸获取下面所有符合条件的E物料和P物料已有就更新
|
|
|
|
designRev = mantrs[0];
|
|
|
|
designRev = mantrs[0];
|
|
|
|
tag_t designItem;
|
|
|
|
tag_t designItem;
|
|
|
|
ITEM_ask_item_of_rev(designRev,&designItem);
|
|
|
|
ITKCALL(ITEM_ask_item_of_rev(designRev,&designItem));
|
|
|
|
ITEM_ask_latest_rev(designItem,&designRev);
|
|
|
|
ITKCALL(ITEM_ask_latest_rev(designItem,&designRev));
|
|
|
|
char* itemId;
|
|
|
|
char* itemId;
|
|
|
|
AOM_ask_value_string(designRev, "item_id", &itemId);
|
|
|
|
ITKCALL(AOM_ask_value_string(designRev, "item_id", &itemId));
|
|
|
|
vector<string> vec2;
|
|
|
|
vector<string> vec2;
|
|
|
|
Split(itemId, "-", vec2);
|
|
|
|
Split(itemId, "-", vec2);
|
|
|
|
string idTop = "1ZDB300000P";
|
|
|
|
string idTop = "1ZDB300000P";
|
|
|
@ -1745,8 +1762,8 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
idTop = idTop.append("-").append(vec2[1]);
|
|
|
|
idTop = idTop.append("-").append(vec2[1]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tag_t topItem, topDesginRev;
|
|
|
|
tag_t topItem, topDesginRev;
|
|
|
|
ITEM_find_item(idTop.c_str(), &topItem);
|
|
|
|
ITKCALL(ITEM_find_item(idTop.c_str(), &topItem));
|
|
|
|
ITEM_ask_latest_rev(topItem, &topDesginRev);
|
|
|
|
ITKCALL(ITEM_ask_latest_rev(topItem, &topDesginRev));
|
|
|
|
len = getClassVal2(topItem, errBuff);
|
|
|
|
len = getClassVal2(topItem, errBuff);
|
|
|
|
printf("len%d\n", len);
|
|
|
|
printf("len%d\n", len);
|
|
|
|
if (len > 0) {
|
|
|
|
if (len > 0) {
|
|
|
@ -1760,39 +1777,48 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
//遍历变压器图纸获取最新版本的E和P对象
|
|
|
|
//遍历变压器图纸获取最新版本的E和P对象
|
|
|
|
for (int t = 0; t < num2; t++) {
|
|
|
|
for (int t = 0; t < num2; t++) {
|
|
|
|
char* isPm, *zt2_MaterialNo, *zt2_WBSNo;
|
|
|
|
char* isPm, *zt2_MaterialNo, *zt2_WBSNo;
|
|
|
|
AOM_ask_value_string(topMatnrs[t], "zt2_WBSNo", &zt2_WBSNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(topMatnrs[t], "zt2_WBSNo", &zt2_WBSNo));
|
|
|
|
AOM_ask_value_string(topMatnrs[t], "zt2_MaterialNo", &zt2_MaterialNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(topMatnrs[t], "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
|
AOM_ask_value_string(topMatnrs[t], "zt2_ifpbom", &isPm);
|
|
|
|
ITKCALL(AOM_ask_value_string(topMatnrs[t], "zt2_ifpbom", &isPm));
|
|
|
|
string key = "";
|
|
|
|
string key = "";
|
|
|
|
key.append(zt2_WBSNo).append(zt2_MaterialNo);
|
|
|
|
key.append(zt2_WBSNo).append(zt2_MaterialNo);
|
|
|
|
|
|
|
|
printf("key===>%d\n", key.c_str());
|
|
|
|
|
|
|
|
|
|
|
|
if (wlbmMap.count(key) > 0) {
|
|
|
|
if (wlbmMap.count(key) > 0) {
|
|
|
|
E2PBean &bean = wlbmMap[key];
|
|
|
|
E2PBean &bean = wlbmMap[key];
|
|
|
|
|
|
|
|
char* revId;
|
|
|
|
|
|
|
|
//获取最新的版本
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_string(topMatnrs[t], "item_revision_id", &revId));
|
|
|
|
|
|
|
|
//if (strcmp(revId, bean.revId.c_str()) > 0) {}
|
|
|
|
if (strcmp(isPm, "P") == 0) {
|
|
|
|
if (strcmp(isPm, "P") == 0) {
|
|
|
|
char* revId;
|
|
|
|
if (strcmp(revId, bean.prevId.c_str()) > 0) {
|
|
|
|
//获取最新的版本
|
|
|
|
printf("3\n");
|
|
|
|
AOM_ask_value_string(topMatnrs[t], "item_revision_id", &revId);
|
|
|
|
|
|
|
|
if (strcmp(revId, bean.revId.c_str()) > 0) {
|
|
|
|
|
|
|
|
bean.pMantr = topMatnrs[t];
|
|
|
|
bean.pMantr = topMatnrs[t];
|
|
|
|
bean.revId = revId;
|
|
|
|
bean.prevId = revId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
bean.eMantr = topMatnrs[t];
|
|
|
|
if (strcmp(revId, bean.erevId.c_str()) > 0) {
|
|
|
|
|
|
|
|
printf("4\n");
|
|
|
|
|
|
|
|
bean.eMantr = topMatnrs[t];
|
|
|
|
|
|
|
|
bean.erevId = revId;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
E2PBean bean;
|
|
|
|
E2PBean bean;
|
|
|
|
bean.key = key;
|
|
|
|
bean.key = key;
|
|
|
|
|
|
|
|
char* revId;
|
|
|
|
|
|
|
|
ITKCALL(AOM_ask_value_string(topMatnrs[t], "item_revision_id", &revId));
|
|
|
|
if (strcmp(isPm, "P") == 0) {
|
|
|
|
if (strcmp(isPm, "P") == 0) {
|
|
|
|
char* revId;
|
|
|
|
printf("1\n");
|
|
|
|
AOM_ask_value_string(topMatnrs[t], "item_revision_id", &revId);
|
|
|
|
|
|
|
|
bean.pMantr = topMatnrs[t];
|
|
|
|
bean.pMantr = topMatnrs[t];
|
|
|
|
bean.revId = revId;
|
|
|
|
bean.prevId = revId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
printf("2\n");
|
|
|
|
printf("2\n");
|
|
|
|
bean.eMantr = topMatnrs[t];
|
|
|
|
bean.eMantr = topMatnrs[t];
|
|
|
|
|
|
|
|
bean.erevId = revId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
wlbmMap[key] = bean;
|
|
|
|
wlbmMap[key] = bean;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1823,8 +1849,8 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
ITK__convert_tag_to_uid(matnrTop, &uida);
|
|
|
|
ITK__convert_tag_to_uid(matnrTop, &uida);
|
|
|
|
printf("uida=%s \n", uida);
|
|
|
|
printf("uida=%s \n", uida);
|
|
|
|
//只有E物料新建的逻辑
|
|
|
|
//只有E物料新建的逻辑
|
|
|
|
(BOM_create_window(&ebom_window));
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
|
(ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
|
|
|
|
printf("bvr_count=%d \n", bvr_count);
|
|
|
|
printf("bvr_count=%d \n", bvr_count);
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
errBuff.append("不存在EBOM请检查\n");
|
|
|
|
errBuff.append("不存在EBOM请检查\n");
|
|
|
@ -1850,7 +1876,7 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
|
|
|
|
|
|
|
|
int url_num = 0;
|
|
|
|
int url_num = 0;
|
|
|
|
char** url_vals = NULL;
|
|
|
|
char** url_vals = NULL;
|
|
|
|
PREF_ask_char_values("database_tc", &url_num, &url_vals);
|
|
|
|
ITKCALL(PREF_ask_char_values("database_tc", &url_num, &url_vals));
|
|
|
|
string url = url_vals[0];
|
|
|
|
string url = url_vals[0];
|
|
|
|
url.append("/").append(url_vals[2]);
|
|
|
|
url.append("/").append(url_vals[2]);
|
|
|
|
printf("url ==> %s \n", url.c_str());
|
|
|
|
printf("url ==> %s \n", url.c_str());
|
|
|
@ -1873,7 +1899,7 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
char* newid = NULL;
|
|
|
|
char* newid = NULL;
|
|
|
|
logical isModified = FALSE;
|
|
|
|
logical isModified = FALSE;
|
|
|
|
tag_t item_type_tag, newRev, newItem;
|
|
|
|
tag_t item_type_tag, newRev, newItem;
|
|
|
|
TCTYPE_ask_type("Item", &item_type_tag);
|
|
|
|
ITKCALL(TCTYPE_ask_type("Item", &item_type_tag));
|
|
|
|
ITKCALL(USER_new_item_id(NULLTAG, item_type_tag, &isModified, &newid));
|
|
|
|
ITKCALL(USER_new_item_id(NULLTAG, item_type_tag, &isModified, &newid));
|
|
|
|
/*ITKCALL(NR_next_value("MEProcess", "item_id", NULLTAG, "", "", "",
|
|
|
|
/*ITKCALL(NR_next_value("MEProcess", "item_id", NULLTAG, "", "", "",
|
|
|
|
NULLTAG, "", "", &next_id));*/
|
|
|
|
NULLTAG, "", "", &next_id));*/
|
|
|
@ -1881,20 +1907,20 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
ITKCALL(ITEM_copy_item(eMantr, newid, NULL, &newItem, &newRev));
|
|
|
|
ITKCALL(ITEM_copy_item(eMantr, newid, NULL, &newItem, &newRev));
|
|
|
|
//ITKCALL(AOM_set_value_string(newRev, "zt2_PMaterial", "PBOM"));
|
|
|
|
//ITKCALL(AOM_set_value_string(newRev, "zt2_PMaterial", "PBOM"));
|
|
|
|
char* matnrNo;
|
|
|
|
char* matnrNo;
|
|
|
|
AOM_ask_value_string(eMantr, "zt2_MaterialNo", &matnrNo);
|
|
|
|
ITKCALL(AOM_ask_value_string(eMantr, "zt2_MaterialNo", &matnrNo));
|
|
|
|
AOM_lock(newRev);
|
|
|
|
ITKCALL(AOM_lock(newRev));
|
|
|
|
AOM_set_value_string(newRev, "zt2_ifpbom", "P");
|
|
|
|
ITKCALL(AOM_set_value_string(newRev, "zt2_ifpbom", "P"));
|
|
|
|
AOM_set_value_string(newRev, "zt2_MaterialNo", matnrNo);
|
|
|
|
ITKCALL(AOM_set_value_string(newRev, "zt2_MaterialNo", matnrNo));
|
|
|
|
AOM_save(newRev);
|
|
|
|
ITKCALL(AOM_save(newRev));
|
|
|
|
AOM_unlock(newRev);
|
|
|
|
ITKCALL(AOM_unlock(newRev));
|
|
|
|
tag_t *structure_revisions,* bom_view_tags, dsuser;
|
|
|
|
tag_t *structure_revisions,* bom_view_tags, dsuser;
|
|
|
|
int revNum = 0, tagNum=0;
|
|
|
|
int revNum = 0, tagNum=0;
|
|
|
|
AOM_ask_value_tags(eMantr, "TC_Is_Represented_By", &num, &mantrs);
|
|
|
|
ITKCALL(AOM_ask_value_tags(eMantr, "TC_Is_Represented_By", &num, &mantrs));
|
|
|
|
//该权限
|
|
|
|
//该权限
|
|
|
|
if (num > 0) {
|
|
|
|
if (num > 0) {
|
|
|
|
AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions);
|
|
|
|
ITKCALL(AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions));
|
|
|
|
AOM_ask_value_tags(newRev, "bom_view_tags", &tagNum, &bom_view_tags);
|
|
|
|
ITKCALL(AOM_ask_value_tags(newRev, "bom_view_tags", &tagNum, &bom_view_tags));
|
|
|
|
AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser);
|
|
|
|
ITKCALL(AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser));
|
|
|
|
tag_t defGroup;
|
|
|
|
tag_t defGroup;
|
|
|
|
ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
|
|
|
|
ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
|
|
|
|
ITKCALL(AOM_set_ownership(newItem, dsuser, defGroup));
|
|
|
|
ITKCALL(AOM_set_ownership(newItem, dsuser, defGroup));
|
|
|
@ -1928,8 +1954,8 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
//判断版本视图是否发布,如果发布了,升版
|
|
|
|
//判断版本视图是否发布,如果发布了,升版
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(BOM_create_window(&ebom_window));
|
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
|
(ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
|
|
|
|
ITKCALL(ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
|
|
|
|
printf("bvr_count=%d \n", bvr_count);
|
|
|
|
printf("bvr_count=%d \n", bvr_count);
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
if (bvr_count == 0) {
|
|
|
|
errBuff.append("不存在EBOM请检查\n");
|
|
|
|
errBuff.append("不存在EBOM请检查\n");
|
|
|
@ -1944,7 +1970,7 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
//ITKCALL(BOM_set_window_top_line_bvr(ebom_window2, bvr_list2[0], &bom_line2)); //顶层bom获取
|
|
|
|
//ITKCALL(BOM_set_window_top_line_bvr(ebom_window2, bvr_list2[0], &bom_line2)); //顶层bom获取
|
|
|
|
int url_num = 0;
|
|
|
|
int url_num = 0;
|
|
|
|
char** url_vals = NULL;
|
|
|
|
char** url_vals = NULL;
|
|
|
|
PREF_ask_char_values("database_tc", &url_num, &url_vals);
|
|
|
|
ITKCALL(PREF_ask_char_values("database_tc", &url_num, &url_vals));
|
|
|
|
string url = url_vals[0];
|
|
|
|
string url = url_vals[0];
|
|
|
|
url.append("/").append(url_vals[2]);
|
|
|
|
url.append("/").append(url_vals[2]);
|
|
|
|
printf("url ==> %s \n", url.c_str());
|
|
|
|
printf("url ==> %s \n", url.c_str());
|
|
|
@ -1974,23 +2000,23 @@ int EbomToPMethod(void* returnValue) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tag_t newRev = tagBean.pMantr;
|
|
|
|
tag_t newRev = tagBean.pMantr;
|
|
|
|
printf("newRev===>%s\n", tagBean.revId.c_str());
|
|
|
|
//printf("newRev===>%s\n", tagBean.revId.c_str());
|
|
|
|
int structs = 0, statusNum = 0;
|
|
|
|
int structs = 0, statusNum = 0;
|
|
|
|
tag_t* structure_revisions, *release_status_list;
|
|
|
|
tag_t* structure_revisions, *release_status_list;
|
|
|
|
AOM_ask_value_tags(newRev, "structure_revisions", &structs, &structure_revisions);
|
|
|
|
ITKCALL(AOM_ask_value_tags(newRev, "structure_revisions", &structs, &structure_revisions));
|
|
|
|
if (structs > 0 && hasChange.compare("true") != 0) {
|
|
|
|
if (structs > 0 && hasChange.compare("true") != 0) {
|
|
|
|
AOM_ask_value_tags(structure_revisions[0], "release_status_list", &statusNum, &release_status_list);
|
|
|
|
ITKCALL(AOM_ask_value_tags(structure_revisions[0], "release_status_list", &statusNum, &release_status_list));
|
|
|
|
if (statusNum > 0) {
|
|
|
|
if (statusNum > 0) {
|
|
|
|
int revNum = 0;
|
|
|
|
int revNum = 0;
|
|
|
|
tag_t *mantrsAs, dsuser;
|
|
|
|
tag_t *mantrsAs, dsuser;
|
|
|
|
ITKCALL(ITEM_copy_rev(newRev, NULL, &newRev));
|
|
|
|
ITKCALL(ITEM_copy_rev(newRev, NULL, &newRev));
|
|
|
|
AOM_ask_value_tags(matnrTop, "TC_Is_Represented_By", &num, &mantrsAs);
|
|
|
|
ITKCALL(AOM_ask_value_tags(matnrTop, "TC_Is_Represented_By", &num, &mantrsAs));
|
|
|
|
AOM_ask_value_tag(mantrsAs[0], "owning_user", &dsuser);
|
|
|
|
ITKCALL(AOM_ask_value_tag(mantrsAs[0], "owning_user", &dsuser));
|
|
|
|
tag_t defGroup;
|
|
|
|
tag_t defGroup;
|
|
|
|
ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
|
|
|
|
ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
|
|
|
|
ITKCALL(AOM_set_ownership(newRev, dsuser, defGroup));
|
|
|
|
ITKCALL(AOM_set_ownership(newRev, dsuser, defGroup));
|
|
|
|
if (num > 0) {
|
|
|
|
if (num > 0) {
|
|
|
|
AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions);
|
|
|
|
ITKCALL(AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions));
|
|
|
|
if (revNum > 0) {
|
|
|
|
if (revNum > 0) {
|
|
|
|
ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
|
|
|
|
ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
|
|
|
|
}
|
|
|
|
}
|
|
|
|