You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

552 lines
20 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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();
}