#include "SendSap.h" tag_t getJGKETProcess(char* groupName) { tag_t query_tag = NULLTAG; ITKCALL(QRY_find2("chint_query_item", &query_tag)); char *qkey[1] = { "ID" }, *qvalue[1] = { "3000042679" }; int num_found = 0; tag_t *qresult = NULL; ITKCALL(QRY_execute(query_tag, 1, qkey, qvalue, &num_found, &qresult)); if (num_found > 0) { tag_t meopRev = NULLTAG; ITKCALL(ITEM_ask_latest_rev(qresult[0], &meopRev)); tag_t meops = getProcessTag(meopRev, groupName); return meops; } return NULLTAG; } void addLastRevisions2(map> map_item_schemes, vector& cParts) { map>::iterator it; for (it = map_item_schemes.begin(); it != map_item_schemes.end(); it++) { tag_t item = it->first; vector revs = map_item_schemes[item]; if (revs.size() == 1) { cParts.push_back(revs[0]); continue; } } } //SAPDYCCDialogController.sendToSap() void SAPDYCC(vector ccpVector, char* projectNo, char* groupName, char* wbs) { log("************** SAPDYCC **************"); tag_t kt_process = getJGKETProcess(groupName); int pref_cnt = 0; char **urls = NULL; ITKCALL(PREF_ask_char_values("CHINT_BomUrl_YB", &pref_cnt, &urls)); vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM> list_Factorys; map ccp_factory_type; map> cPart_schemes; //SAPDYCCDialogController.sendSap2YH() for (int len = 0; len < ccpVector.size(); len++) { tag_t cPart = ccpVector[len], *ps_children = NULLTAG; int num = 0; ITKCALL(AOM_ask_value_tags(cPart, "ps_children", &num, &ps_children)); if (num > 0) { ccp_factory_type[cPart] = ""; continue; } num = 0; tag_t *factoryNos = NULLTAG; ITKCALL(AOM_ask_value_tags(cPart, "ZT2_FactoryNumber", &num, &factoryNos)); if (num == 0) { ccp_factory_type[cPart] = ""; continue; } for (int i = 0; i < num; i++) { char *item_id = NULL; ITKCALL(AOM_ask_value_string(factoryNos[i], "item_id", &item_id)); if (tc_strstr(item_id, "DX1") != NULL) { ccp_factory_type[cPart] = "DX1"; break; } if (tc_strstr(item_id, "DX3") != NULL) { ccp_factory_type[cPart] = "DX3"; break; } } /* 读取出厂编号传递信息 */ map> map_item_schemes; getFactoryNoList(projectNo, groupName, wbs, factoryNos, num, cPart, list_Factorys); char* partUid = NULL; ITK__convert_tag_to_uid(cPart, &partUid); for (int i = 0; i < num; i++) { char* uid = NULL; ITK__convert_tag_to_uid(factoryNos[i], &uid); string sqlRef2 = "select P.puid as supItemUID,V.puid as supRevUID,P.pitem_id as supItemID,"; sqlRef2.append("ITRO.Pobject_Name as supItemName,V.Pitem_Revision_Id as supRevID,cP.pitem_id as subItemID,") .append("V.PZT2_SAPSTATE as status,cV.puid as subRevUID,RT.partifactname as 版本与版本关系,g.PNAME ") .append("from PWORKSPACEOBJECT ITRO,PIMANRELATION R,PIMANTYPE RT,PITEMREVISION V,PITEM P,") .append("PITEMREVISION cV,PITEM cP,PWORKSPACEOBJECT cITRO,PPOM_APPLICATION_OBJECT g0,ppom_group g ") .append("where V.Puid = R.Rprimary_Objectu AND v.puid=g0.puid AND g0.ROWNING_GROUPU =g.puid ") .append("and r.rrelation_typeu = RT.puid and P.Puid = V.Ritems_Tagu and ITRO.Puid = V.Puid ") .append("and R.Rsecondary_Objectu = cP.Puid and cP.Puid = cV.Ritems_Tagu and cV.Puid = cITRO.Puid ") .append("and ITRO.Pactive_Seq <> 0 and cITRO.Pactive_Seq <> 0 and RT.partifactname = 'ZT2_FactoryNumber' ") .append("and cP.PUID ='").append(uid).append("'"); int outputColumn1 = 0, outputValueCount1 = 0; char*** outputValue1 = NULL; log("sqlRef2==>\n%s", sqlRef2.c_str()); QuerySQLNoInputParam((char*)sqlRef2.c_str(), &outputColumn1, &outputValueCount1, &outputValue1); for (int j = 0; j < outputValueCount1; j++) { if (tc_strcmp(outputValue1[j][1], partUid) != 0 && tc_strcmp(outputValue1[j][6], "") != 0 && tc_strcmp(outputValue1[j][9], groupName) == 0) { if (tc_strcmp(outputValue1[j][6], "2") == 0 || tc_strcmp(outputValue1[j][6], "3") == 0) { tag_t rev = NULLTAG, item = NULLTAG; ITK__convert_uid_to_tag(outputValue1[j][1], &rev);//supRevUID ITKCALL(ITEM_ask_item_of_rev(rev, &item)); if (map_item_schemes.count(item) > 0) { map_item_schemes[item].push_back(rev); } else { vector revs2; revs2.push_back(rev); map_item_schemes[item] = revs2; } } } } vector schemes; addLastRevisions2(map_item_schemes, schemes); cPart_schemes[cPart] = schemes; } } log("出厂编号数量:%zd", list_Factorys.size()); logCcbh(list_Factorys); sendFactoryNo(list_Factorys, urls[0]); }