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.

124 lines
4.5 KiB

#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<tag_t, vector<tag_t>> map_item_schemes, vector<tag_t>& cParts) {
map<tag_t, vector<tag_t>>::iterator it;
for (it = map_item_schemes.begin(); it != map_item_schemes.end(); it++) {
tag_t item = it->first;
vector<tag_t> revs = map_item_schemes[item];
if (revs.size() == 1) {
cParts.push_back(revs[0]);
continue;
}
}
}
//SAPDYCCDialogController.sendToSap()
void SAPDYCC(vector<tag_t> 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<tag_t, string> ccp_factory_type;
map<tag_t, vector<tag_t>> 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;
}
}
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>Ϣ */
map<tag_t, vector<tag_t>> 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 <20><EFBFBD><E6B1BE><EFBFBD><EFBFBD><E6B1BE>ϵ,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<tag_t> revs2;
revs2.push_back(rev);
map_item_schemes[item] = revs2;
}
}
}
}
vector<tag_t> schemes;
addLastRevisions2(map_item_schemes, schemes);
cPart_schemes[cPart] = schemes;
}
}
log("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%zd", list_Factorys.size());
logCcbh(list_Factorys);
sendFactoryNo(list_Factorys, urls[0]);
}