|
|
|
|
|
#include "SendSap.h"
|
|
|
|
|
|
void recurZYGGSAP(tag_t line, tag_t rev, tag_t partRev, char* groupName, map<string, tag_t>& gy_meops,
|
|
|
vector<tag_t>& needTCM_meops, char* now, vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>& proclist,
|
|
|
vector<string>& bomISExist, vector<string> matr, char* codeRemark, map<string, tag_t>& by_materials, int icsId,
|
|
|
string& errMsg, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>& list, map<string, tag_t>& material_revs, bool isZt) {
|
|
|
|
|
|
char* os = NULL, *item_id = NULL, *object_name = NULL;
|
|
|
string buff = "";
|
|
|
ITKCALL(AOM_ask_value_string(rev, "object_string", &os));
|
|
|
tag_t designRev = getZYDesign(rev), meops = NULLTAG;
|
|
|
if (designRev != NULLTAG) {
|
|
|
meops = getProcessTag(designRev, groupName);
|
|
|
}
|
|
|
if (partRev != NULLTAG) {
|
|
|
readBopInfo1YH(meops, partRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
|
|
|
}
|
|
|
int cnt = 0;
|
|
|
bool isLj = false;
|
|
|
if (!isHaveBOMView(designRev)) {
|
|
|
isLj = true;
|
|
|
}
|
|
|
if (partRev == NULLTAG) {
|
|
|
partRev = getBOMPart(line, groupName);
|
|
|
}
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(rev, &type));
|
|
|
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0 && partRev == NULLTAG) {
|
|
|
char *zt2_Diagram = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(rev, "zt2_Diagram", &zt2_Diagram));
|
|
|
if (tc_strcmp(zt2_Diagram, "Y") == 0 || tc_strcmp(zt2_Diagram, "ÊÇ") == 0) {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
int c_line_count = 0;
|
|
|
tag_t *c_line_tags = NULL;
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(line, &c_line_count, &c_line_tags));
|
|
|
char *zt2_Source = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(rev, "zt2_Source", &zt2_Source));
|
|
|
boolean equals = (zt2_Source && (tc_strcmp(zt2_Source, "Í⹺") == 0 || tc_strcmp(zt2_Source, "S2") == 0));
|
|
|
if (partRev != NULLTAG) {
|
|
|
if (meops == NULLTAG) {
|
|
|
if (!equals && c_line_count > 0) {
|
|
|
tag_t mrProcess = getMrProcess(groupName);
|
|
|
if (mrProcess != NULLTAG) {
|
|
|
readBopInfo1YH(mrProcess, partRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
readBopInfo1YH(meops, partRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
|
|
|
}
|
|
|
}
|
|
|
if (equals) {
|
|
|
if (partRev == NULLTAG)
|
|
|
return;
|
|
|
if (isHaveBOMView(partRev)) {
|
|
|
tag_t window = NULLTAG, bomline = NULLTAG;
|
|
|
ITKCALL(BOM_create_window(&window));
|
|
|
ITKCALL(BOM_set_window_top_line(window, NULL, partRev, NULLTAG, &bomline));
|
|
|
recurZYGGSAP(bomline, partRev, partRev, groupName, gy_meops, needTCM_meops, now, proclist, bomISExist, matr, codeRemark,
|
|
|
by_materials, icsId, errMsg, list, material_revs, isZt);
|
|
|
ITKCALL(BOM_close_window(window));
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
if (partRev != NULLTAG) {
|
|
|
char *zt2_MaterialNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
if (find(bomISExist.begin(), bomISExist.end(), zt2_MaterialNo) != bomISExist.end()) {
|
|
|
log("%s ÒÑ´æÔÚ£¬¹ýÂË", zt2_MaterialNo);
|
|
|
return;
|
|
|
}
|
|
|
else {
|
|
|
bomISExist.push_back(zt2_MaterialNo);
|
|
|
}
|
|
|
}
|
|
|
if (c_line_count == 0) {
|
|
|
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0 && tc_strcmp(zt2_Source, "×ÔÖÆ") == 0
|
|
|
&& tc_strcmp(groupName, "M035") != 0) {
|
|
|
tag_t comp = NULLTAG;
|
|
|
map<string, string> materials;
|
|
|
if (matr.size() > 1 && tc_strcmp(matr[1].c_str(), "DB") == 0) {
|
|
|
comp = getClassPartDB(rev, groupName, by_materials, materials, buff);
|
|
|
}
|
|
|
else {
|
|
|
comp = getClassPart(rev, codeRemark, icsId, by_materials, buff);
|
|
|
}
|
|
|
char *sortno = NULL;
|
|
|
boolean isHaveProcess = false;
|
|
|
if (meops != NULLTAG) {
|
|
|
int e_line_count = 0;
|
|
|
tag_t window = NULLTAG, bomline = NULLTAG, *meop_line_tags = NULL;
|
|
|
ITKCALL(BOM_create_window(&window));
|
|
|
ITKCALL(BOM_set_window_top_line(window, NULL, meops, NULLTAG, &bomline));
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(bomline, &e_line_count, &meop_line_tags));
|
|
|
for (int i = 0; i < e_line_count; i++) {
|
|
|
char *bl_sequence_no = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(meop_line_tags[i], "zt2_MaterialNo", &bl_sequence_no));
|
|
|
if (tc_strcmp(bl_sequence_no, "10") == 0) {
|
|
|
tag_t rev2 = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tag(meop_line_tags[i], "bl_line_object", &rev2));
|
|
|
ITKCALL(AOM_UIF_ask_value(rev2, "zt2_ClassificationCode", &sortno));
|
|
|
break;
|
|
|
}
|
|
|
isHaveProcess = true;
|
|
|
}
|
|
|
ITKCALL(BOM_close_window(window));
|
|
|
}
|
|
|
if (!sortno || tc_strlen(sortno) == 0) {
|
|
|
ITKCALL(AOM_ask_value_string(line, "ZT2_ClassificationNo", &sortno));
|
|
|
}
|
|
|
log("¹¤Ðò±àÂë =>%s", sortno);
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_HEAD head;
|
|
|
if (partRev != NULLTAG) {
|
|
|
char *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL, *zt2_unit = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
log("zt2_MaterialNo ==>%s", zt2_MaterialNo);
|
|
|
ITKCALL(AOM_UIF_ask_value(partRev, "zt2_WBSNo", &zt2_WBSNo));
|
|
|
tag_t item = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(partRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
|
|
|
//char* unit = getUnti(zt2_unit);
|
|
|
log("str = [%s] \n", zt2_unit);
|
|
|
head.PSPNR = zt2_WBSNo;
|
|
|
head.MATNR = zt2_MaterialNo;
|
|
|
head.BMEIN = zt2_unit;
|
|
|
}
|
|
|
head.STLAN = (char*)"1";
|
|
|
head.STLAL = (char*)"1";
|
|
|
head.BMENG = (char*)"1";
|
|
|
head.WERKS = groupName;
|
|
|
head.DATUV = now;
|
|
|
char* parnetUid;
|
|
|
ITK__convert_tag_to_uid(partRev, &parnetUid);
|
|
|
head.STKTX = parnetUid;
|
|
|
//inCcpMap[parnetUid] = ccpMaterialMap;
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM* items_items =
|
|
|
new _ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM[1];
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS items;
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM items_item;
|
|
|
items_item.DATUV = now;
|
|
|
items_item.POSTP = (char*)"L";
|
|
|
items_item.POSNR = "0010";
|
|
|
if (!isLj) {
|
|
|
if (!isHaveProcess) {
|
|
|
buff.append(os).append("ȱÉÙ¹¤ÒÕ·Ïß\\n");
|
|
|
}
|
|
|
else if (!sortno || tc_strlen(sortno) == 0) {
|
|
|
char* mos = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(meops, "object_string", &mos));
|
|
|
buff.append("Çëά»¤").append(mos).append("¹¤ÒÕ·ÏߵŤÐò±àÂë\\n");
|
|
|
}
|
|
|
}
|
|
|
if (comp != NULLTAG) {
|
|
|
tag_t crev = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_latest_rev(comp, &crev));
|
|
|
ITKCALL(AOM_ask_value_string(crev, "object_string", &os));
|
|
|
log("Ô²ÄÁÏ =>%s", os);
|
|
|
//tag_t item2;
|
|
|
char *zt2_MaterialNo2 = NULL, *zt2_unit2 = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(crev, "zt2_MaterialNo", &zt2_MaterialNo2));
|
|
|
if (!zt2_MaterialNo2 || tc_strlen(zt2_MaterialNo2) == 0) {
|
|
|
buff.append(os).append("ÎïÁϺÅΪ¿Õ;");
|
|
|
}
|
|
|
//ITKCALL(ITEM_ask_item_of_rev(comp, &item2));
|
|
|
ITKCALL(AOM_ask_value_string(comp, "zt2_unit", &zt2_unit2));
|
|
|
items_item.IDNRK = zt2_MaterialNo2;
|
|
|
//char* unit22 = getUnti(zt2_unit2);
|
|
|
items_item.MEINS = zt2_unit2;
|
|
|
char *menge = NULL;
|
|
|
menge = (char*)MEM_alloc((16 + 1) * sizeof(char));
|
|
|
if (matr.size() > 1 && tc_strcmp(matr[1].c_str(), "DB") == 0) {
|
|
|
char *zt2_MaterialMark = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(rev, "zt2_MaterialMark", &zt2_MaterialMark));
|
|
|
if (materials.count(zt2_MaterialMark) > 0) {
|
|
|
tc_strcpy(menge, getZYSAPMENGE2(materials[zt2_MaterialMark], rev, line, true, errMsg));
|
|
|
}
|
|
|
else {
|
|
|
tc_strcpy(menge, getZYSAPMENGE(rev, crev, line, true, codeRemark, errMsg));
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
tc_strcpy(menge, getZYSAPMENGE(rev, crev, line, true, codeRemark, errMsg));
|
|
|
}
|
|
|
items_item.MENGE = menge;
|
|
|
//MEM_free(menge);
|
|
|
}
|
|
|
items_item.SORTF = sortno;
|
|
|
items_item.POTX1 = "";
|
|
|
|
|
|
items_items[0] = items_item;
|
|
|
items.ITEM = items_items;
|
|
|
items.__sizeITEM = 1;/**/
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST list1;
|
|
|
list1.HEAD = head;
|
|
|
//log("list1.HEAD %s ", list1.HEAD.BMEIN);
|
|
|
list1.ITEMS = items;
|
|
|
log("list %zd ", list.size());
|
|
|
list.push_back(list1);
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_HEAD head;
|
|
|
if (partRev != NULLTAG) {
|
|
|
char *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL, *zt2_unit2 = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(partRev, "zt2_WBSNo", &zt2_WBSNo));
|
|
|
tag_t item = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(partRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit2));
|
|
|
char* unit = getUnti(zt2_unit2);
|
|
|
log("unit = %s > %s", zt2_unit2, unit);
|
|
|
ITKCALL(AOM_UIF_ask_value(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
head.PSPNR = zt2_WBSNo;
|
|
|
head.MATNR = zt2_MaterialNo;
|
|
|
head.BMEIN = zt2_unit2;
|
|
|
}
|
|
|
head.STLAN = (char*)"1";
|
|
|
head.STLAL = (char*)"1";
|
|
|
head.BMENG = (char*)"1";
|
|
|
head.WERKS = groupName;
|
|
|
head.DATUV = now;
|
|
|
char* parnetUid;
|
|
|
ITK__convert_tag_to_uid(rev, &parnetUid);
|
|
|
head.STKTX = parnetUid;
|
|
|
string msg;
|
|
|
msg.append(os).append(":").append(buff);
|
|
|
log("buff ===>%s", msg.c_str());
|
|
|
if (buff.length() > 0 && tc_strstr(errMsg.c_str(), msg.c_str()) == NULL) {
|
|
|
errMsg.append("\\n").append(msg);
|
|
|
}
|
|
|
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM* items_items =
|
|
|
new _ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM[c_line_count];
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS items;
|
|
|
for (int i = 0; i < c_line_count; i++) {
|
|
|
buff = "";
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM items_item;
|
|
|
tag_t line2 = c_line_tags[i], rev2;
|
|
|
ITKCALL(AOM_ask_value_tag(line2, "bl_line_object", &rev2));
|
|
|
tag_t item2, partRev2 = getBOMPart(line2, groupName);
|
|
|
ITKCALL(ITEM_ask_item_of_rev(rev2, &item2));
|
|
|
char *type2 = NULL, *zt2_MaterialNo = NULL, *zt2_unit = NULL, *zt2_State = NULL, *bl_sequence_no = NULL,
|
|
|
*ZT2_ClassificationNo = NULL, *ZT2_Remark = NULL, *os2 = NULL, *zt2_SapState = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(rev2, &type2));
|
|
|
if (tc_strcmp(type2, "ZT2_Design3DRevision") == 0) {
|
|
|
if (partRev2 == NULLTAG) {
|
|
|
char *zt2_Diagram = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(rev2, "zt2_Diagram", &zt2_Diagram));
|
|
|
if (tc_strcmp(zt2_Diagram, "Y") == 0 || tc_strcmp(zt2_Diagram, "ÊÇ") == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (partRev2 != NULLTAG) {
|
|
|
ITKCALL(AOM_UIF_ask_value(partRev2, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
ITKCALL(AOM_ask_value_string(item2, "zt2_unit", &zt2_unit));
|
|
|
char* unit22 = getUnti(zt2_unit);
|
|
|
items_item.IDNRK = zt2_MaterialNo;
|
|
|
//char* unit = unit22;
|
|
|
items_item.MEINS = unit22;
|
|
|
ITKCALL(AOM_UIF_ask_value(partRev2, "zt2_State", &zt2_State));
|
|
|
if (tc_strcmp(zt2_State, "·â´æ") == 0 || tc_strcmp(zt2_State, "D1") == 0) {
|
|
|
buff.append("ÎïÁÏ:").append(zt2_MaterialNo).append("ÒÑ·â´æ,ÎÞ·¨´«µÝSAP");
|
|
|
}
|
|
|
}
|
|
|
ITKCALL(AOM_UIF_ask_value(line2, "bl_sequence_no", &bl_sequence_no));
|
|
|
ITKCALL(AOM_UIF_ask_value(line2, "ZT2_ClassificationNo", &ZT2_ClassificationNo));
|
|
|
ITKCALL(AOM_UIF_ask_value(line2, "ZT2_Remark", &ZT2_Remark));
|
|
|
ITKCALL(AOM_ask_value_string(rev2, "object_string", &os2));
|
|
|
ITKCALL(AOM_UIF_ask_value(rev2, "zt2_SapState", &zt2_SapState));
|
|
|
items_item.DATUV = now;
|
|
|
items_item.POSTP = (char*)"L";
|
|
|
items_item.POSNR = bl_sequence_no;
|
|
|
char* zysapmenge2 = NULL;
|
|
|
zysapmenge2 = (char*)MEM_alloc((16 + 1) * sizeof(char));
|
|
|
tc_strcpy(zysapmenge2, getZYSAPMENGE(rev2, NULLTAG, line2, false, codeRemark, buff));
|
|
|
items_item.MENGE = zysapmenge2;
|
|
|
items_item.SORTF = ZT2_ClassificationNo;
|
|
|
if (!ZT2_ClassificationNo || tc_strlen(ZT2_ClassificationNo) == 0) {
|
|
|
buff.append("BOMÐÐȱÉÙͶÁÏÐÅÏ¢;");
|
|
|
}
|
|
|
items_item.POTX1 = ZT2_Remark;
|
|
|
msg.append(os2).append("(¸¸Ïî:").append(os).append("):").append(buff);
|
|
|
log("buff ===>%s", buff.c_str());
|
|
|
if (buff.length() > 0 && tc_strstr(errMsg.c_str(), msg.c_str()) == NULL) {
|
|
|
errMsg.append("\\n").append(msg);
|
|
|
}
|
|
|
if (tc_strcmp(zt2_SapState, "ÒÑ´«") == 0 && isZt) {
|
|
|
continue;
|
|
|
}
|
|
|
if (zt2_MaterialNo && tc_strlen(zt2_MaterialNo) > 0) {
|
|
|
material_revs[zt2_MaterialNo] = partRev2;
|
|
|
}
|
|
|
recurZYGGSAP(line2, rev2, partRev2, groupName, gy_meops, needTCM_meops, now, proclist, bomISExist, matr, codeRemark,
|
|
|
by_materials, icsId, errMsg, list, material_revs, isZt);
|
|
|
}
|
|
|
items.ITEM = items_items;
|
|
|
items.__sizeITEM = c_line_count;
|
|
|
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST list1;
|
|
|
list1.HEAD = head;
|
|
|
log("list1.HEAD %s ", list1.HEAD.BMEIN);
|
|
|
list1.ITEMS = items;
|
|
|
list.push_back(list1);
|
|
|
}
|
|
|
|
|
|
void SAPZYGGOperation(tag_t target, char* groupName, char* now, char* code, char* wbs, char* userName, char* projectName) {
|
|
|
log("************** SAPZYGGOperation **************");
|
|
|
|
|
|
string errMsgBuf = "";
|
|
|
|
|
|
int pref_cnt = 0;
|
|
|
char **urls = NULL;
|
|
|
ITKCALL(PREF_ask_char_values("CHINT_BomUrl_YB", &pref_cnt, &urls));
|
|
|
if (pref_cnt < 3) {
|
|
|
errMsgBuf.append("CHINT_BomUrl_YBÊ×Ñ¡ÏîÅäÖò»ÕýÈ·\\n");
|
|
|
//
|
|
|
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = 'CHINT_BomUrl_YBÊ×Ñ¡ÏîÅäÖò»ÕýÈ·' ,SAPRESULT = 'PLM¼ì²éδͨ¹ý',PLMRESULT = 'ÒÑ·¢ËÍ·ÉÊé֪ͨ' where code = '%s' ";
|
|
|
char selectRxfs[800];
|
|
|
string timel;
|
|
|
sprintf(selectRxfs, updateSum.c_str(), code);
|
|
|
log("selectRecord2 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
|
|
|
//´íÎóÊý¾ÝÒÑ·¢ËÍ·ÉÊéÌáÐÑ
|
|
|
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
|
|
|
return;
|
|
|
}
|
|
|
pref_cnt = 0;
|
|
|
char **pref = NULL;
|
|
|
string codeRemark;
|
|
|
vector<string> matr;
|
|
|
ITKCALL(PREF_ask_char_values("CHINT_ORG_TechnologyClassification", &pref_cnt, &pref));
|
|
|
for (int i = 0; i < pref_cnt; i++) {
|
|
|
vector<string> v1, v2;
|
|
|
Split(pref[i], ":", v1);
|
|
|
if (tc_strcmp(v1[0].c_str(), groupName) != 0) {
|
|
|
continue;
|
|
|
}
|
|
|
Split(v1[1], ";", v2);
|
|
|
if (v2.size() == 4) {
|
|
|
codeRemark = v2[2];
|
|
|
Split(v2[2], "\\", matr);
|
|
|
}
|
|
|
else if (v2.size() > 2) {
|
|
|
codeRemark = v2[2];
|
|
|
}
|
|
|
}
|
|
|
int icsId = getIcsId((char*)codeRemark.c_str(), "²ÄÁϱê¼Ç"), cnt = 0;
|
|
|
tag_t* ZT2_FactoryNumber = NULLTAG, designRev = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tags(target, "ZT2_FactoryNumber", &cnt, &ZT2_FactoryNumber));
|
|
|
if (cnt > 0) {
|
|
|
int n_referencers = 0;
|
|
|
int* levels = NULL;
|
|
|
tag_t* referencers = NULLTAG;
|
|
|
char** relations = NULL;
|
|
|
ITKCALL(WSOM_where_referenced2(ZT2_FactoryNumber[0], 1, &n_referencers, &levels, &referencers, &relations));
|
|
|
for (int i = 0; i < n_referencers; i++) {
|
|
|
if (tc_strcmp(relations[i], "ZT2_FactoryNumber") == 0) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(referencers[i], &type));
|
|
|
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0) {
|
|
|
designRev = referencers[i];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (designRev == NULLTAG) {
|
|
|
designRev = target;
|
|
|
}
|
|
|
char* os = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(designRev, "object_string", &os));
|
|
|
log("designRev==>%s", os);
|
|
|
|
|
|
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList;
|
|
|
vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
|
|
|
map<string, tag_t> gy_meops; //±ÜÃâÖØ¸´¹¤ÒÕ·Ïß
|
|
|
vector<tag_t> needTCM_meops;//ûÓÃÉÏ
|
|
|
tag_t window = NULLTAG, bomline = NULLTAG;
|
|
|
ITKCALL(BOM_create_window(&window));
|
|
|
ITKCALL(BOM_set_window_top_line(window, NULL, designRev, NULLTAG, &bomline));
|
|
|
tag_t partRev = getBOMPart(bomline, groupName);
|
|
|
tag_t meops = getProcessTag(designRev, groupName);
|
|
|
if (partRev != NULLTAG && meops != NULLTAG) {
|
|
|
readBopInfo1YH(meops, partRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
|
|
|
}
|
|
|
string errMsg = "";
|
|
|
vector<string> bomISExist;
|
|
|
map<string, tag_t> by_materials;
|
|
|
vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> list;
|
|
|
map<string, tag_t> material_revs;
|
|
|
recurZYGGSAP(bomline, designRev, partRev, groupName, gy_meops, needTCM_meops, now, proclist, bomISExist, matr, (char*)codeRemark.c_str(),
|
|
|
by_materials, icsId, errMsg, list, material_revs, false);
|
|
|
|
|
|
//log("errMsg =>%s", errMsg.c_str());
|
|
|
string logmsg = "errMsg =>";
|
|
|
//log2(logmsg.append(errMsg));
|
|
|
logmsg.append(errMsg);
|
|
|
printf("%s\n", logmsg.c_str());
|
|
|
info(logmsg.c_str());
|
|
|
if (errMsg.length() > 0) {
|
|
|
errMsgBuf.append("BOMÒì³£:\\n").append(errMsg);
|
|
|
|
|
|
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = 'Êý¾Ý¼ì²éÓÐÎÊÌâ' ,SAPRESULT = 'PLM¼ì²éδͨ¹ý',PLMRESULT = 'ÒÑ·¢ËÍ·ÉÊé֪ͨ' where code = '%s' ";
|
|
|
char selectRxfs[800];
|
|
|
string timel;
|
|
|
sprintf(selectRxfs, updateSum.c_str(), code);
|
|
|
log("selectRecord2 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
|
|
|
//´íÎóÊý¾ÝÒÑ·¢ËÍ·ÉÊéÌáÐÑ
|
|
|
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
|
|
|
return;
|
|
|
}
|
|
|
char *zt2_BOMScheme = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(target, "zt2_BOMScheme", &zt2_BOMScheme));
|
|
|
if (list.size() > 0 && strcmp(zt2_BOMScheme, "»ã×Ü") == 0) {
|
|
|
char* zt2_Quantity;
|
|
|
ITKCALL(AOM_ask_value_string(target, "zt2_Quantity", &zt2_Quantity));
|
|
|
if (strstr(zt2_Quantity, "") != 0) {
|
|
|
int quantity = atoi(zt2_Quantity);
|
|
|
if (quantity == 0) {
|
|
|
quantity = 1;
|
|
|
}
|
|
|
int size = list.size();
|
|
|
char* s = new char[10];
|
|
|
_itoa(quantity, s, 10);
|
|
|
list[size - 1].HEAD.BMENG = s;
|
|
|
//head.BMENG = (char*)to_string(quantity).c_str();
|
|
|
}
|
|
|
}
|
|
|
if (list.size() > 0) {
|
|
|
//logBomMsg(list);
|
|
|
mapList[target] = list;
|
|
|
}
|
|
|
if (proclist.size() > 0) {
|
|
|
string sendMsg;
|
|
|
logProcessMsg(proclist);// vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
|
|
|
sendProcess(proclist, sendMsg, urls[1]);//proclists.push_back(proclist);//sendProcess(proclist);
|
|
|
}
|
|
|
|
|
|
ITKCALL(BOM_close_window(window));
|
|
|
if (mapList.size() > 0) {
|
|
|
//´«µÝBOM
|
|
|
//logBomMsg(list);
|
|
|
//sendBom(list, sendMsg);
|
|
|
char* revUid = NULL, *zt2_MaterialNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(target, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
ITK__convert_tag_to_uid(target, &revUid);
|
|
|
vector<string> ccpMaterialMap;
|
|
|
ccpMaterialMap.push_back(zt2_MaterialNo);
|
|
|
map<string, vector<string>> inCcpMap;//¼Ç¼µ¥Ôª¶ÔÓ¦µÄ²ú³ÉÆ·ÎïÁϱàÂë
|
|
|
inCcpMap[revUid] = ccpMaterialMap;
|
|
|
startSplitSend(groupName, mapList, code, wbs, inCcpMap, urls[2]);
|
|
|
//sendBom(list);
|
|
|
}
|
|
|
else {
|
|
|
string time1 = getPlmTime(code);
|
|
|
string updateSum = "update CHINT_BOM_TO_SAP_SUM set datastatus = 'ûÓкϷ¨BOM',organizationaltime = '%s',taskstauts = '×éÖ¯Íê³É',PLMFINISHTIME = SYSDATE where code = '%s' ";
|
|
|
char selectRxfs[800];
|
|
|
string timel;
|
|
|
sprintf(selectRxfs, updateSum.c_str(), time1.c_str(), code);
|
|
|
log("selectRecord2 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void getTopZzItem(tag_t rev, map<string, tag_t>& wbsList) {
|
|
|
int n_parents = 0;
|
|
|
int* levels;
|
|
|
tag_t* parents;
|
|
|
ITKCALL(PS_where_used_all(rev, 1, &n_parents, &levels, &parents));
|
|
|
if (n_parents == 0) {
|
|
|
char* zt2_WBSNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(rev, "zt2_WBSNo", &zt2_WBSNo));
|
|
|
if (wbsList.count(zt2_WBSNo) == 0)
|
|
|
wbsList[zt2_WBSNo] = rev;
|
|
|
}
|
|
|
else {
|
|
|
for (int i = 0; i < n_parents; i++) {
|
|
|
if(isTypeOf(parents[i], "ItemRevision"))
|
|
|
getTopZzItem(parents[i], wbsList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void SAPGYGGOperation(tag_t target, char* groupName, char* now, char* code, char* wbs, char* userName, char* projectName) {
|
|
|
log("************** SAPZYGGOperation **************");
|
|
|
|
|
|
string errMsgBuf = "";
|
|
|
|
|
|
int pref_cnt = 0;
|
|
|
char **urls = NULL;
|
|
|
ITKCALL(PREF_ask_char_values("CHINT_BomUrl_YB", &pref_cnt, &urls));
|
|
|
if (pref_cnt < 3) {
|
|
|
errMsgBuf.append("CHINT_BomUrl_YBÊ×Ñ¡ÏîÅäÖò»ÕýÈ·\\n");
|
|
|
//
|
|
|
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = 'CHINT_BomUrl_YBÊ×Ñ¡ÏîÅäÖò»ÕýÈ·' ,SAPRESULT = 'PLM¼ì²éδͨ¹ý',PLMRESULT = 'ÒÑ·¢ËÍ·ÉÊé֪ͨ' where code = '%s' ";
|
|
|
char selectRxfs[800];
|
|
|
string timel;
|
|
|
sprintf(selectRxfs, updateSum.c_str(), code);
|
|
|
log("selectRecord2 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
|
|
|
//´íÎóÊý¾ÝÒÑ·¢ËÍ·ÉÊéÌáÐÑ
|
|
|
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
|
|
|
return;
|
|
|
}
|
|
|
pref_cnt = 0;
|
|
|
char **pref = NULL;
|
|
|
string codeRemark;
|
|
|
vector<string> matr;
|
|
|
ITKCALL(PREF_ask_char_values("CHINT_ORG_TechnologyClassification", &pref_cnt, &pref));
|
|
|
for (int i = 0; i < pref_cnt; i++) {
|
|
|
vector<string> v1, v2;
|
|
|
Split(pref[i], ":", v1);
|
|
|
if (tc_strcmp(v1[0].c_str(), groupName) != 0) {
|
|
|
continue;
|
|
|
}
|
|
|
Split(v1[1], ";", v2);
|
|
|
if (v2.size() == 4) {
|
|
|
codeRemark = v2[2];
|
|
|
Split(v2[2], "\\", matr);
|
|
|
}
|
|
|
else if (v2.size() > 2) {
|
|
|
codeRemark = v2[2];
|
|
|
}
|
|
|
}
|
|
|
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList;
|
|
|
vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
|
|
|
map<string, tag_t> gy_meops; //±ÜÃâÖØ¸´¹¤ÒÕ·Ïß
|
|
|
vector<tag_t> needTCM_meops;//ûÓÃÉÏ
|
|
|
tag_t window = NULLTAG, bomline = NULLTAG;
|
|
|
ITKCALL(BOM_create_window(&window));
|
|
|
ITKCALL(BOM_set_window_top_line(window, NULL, target, NULLTAG, &bomline));
|
|
|
tag_t partRev = getBOMPart(bomline, groupName);
|
|
|
tag_t meops = getProcessTag(target, groupName);
|
|
|
if (partRev != NULLTAG && meops != NULLTAG) {
|
|
|
readBopInfo1YH(meops, partRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
|
|
|
}
|
|
|
map<string, tag_t> wbsList;
|
|
|
getTopZzItem(target, wbsList);
|
|
|
ITKCALL(BOM_close_window(window));//BOM_close_window
|
|
|
|
|
|
//ProcessMemoryTree();
|
|
|
} |