|
|
|
|
|
#include "SendSap.h"
|
|
|
#include <mfg/mfg.h>
|
|
|
#include "CRUL_server_call_httpserver.h"
|
|
|
|
|
|
|
|
|
vector<string> lists2;
|
|
|
|
|
|
// ×Ô¶¨ÒåµÄдÈë»Øµ÷º¯Êý
|
|
|
size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) {
|
|
|
((std::ostream*)userp)->write((const char*)contents, size * nmemb);
|
|
|
return size * nmemb;
|
|
|
}
|
|
|
string sendSap(const char* url, const char* data) {
|
|
|
log("sendSap Url==>%s", url);
|
|
|
CURL *curl;
|
|
|
CURLcode res;
|
|
|
curl = curl_easy_init();
|
|
|
string result = "";
|
|
|
if (curl) {
|
|
|
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
|
|
|
curl_easy_setopt(curl, CURLOPT_URL, url);
|
|
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
|
|
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
|
|
|
struct curl_slist *headers = NULL;
|
|
|
headers = curl_slist_append(headers, "Content-Type: application/xml");
|
|
|
if (tc_strstr(url, "192.168.0.184") != NULL || tc_strstr(url, "gfpot01") != NULL) {
|
|
|
headers = curl_slist_append(headers, "Authorization: Basic cG9fcmZjOjFxYXohUUFa");//"po_rfc", "1qaz!QAZ"
|
|
|
}
|
|
|
else {
|
|
|
headers = curl_slist_append(headers, "Authorization: Basic c2hwbG06c2FwQDIwMTk=");//"shplm", "sap@2019"
|
|
|
}
|
|
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
|
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, G2U(data));
|
|
|
|
|
|
ostringstream oss;
|
|
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
|
|
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &oss);
|
|
|
|
|
|
res = curl_easy_perform(curl);
|
|
|
char ress[4];
|
|
|
sprintf(ress, "%d", res);
|
|
|
result.append(ress).append("@@").append(oss.str());
|
|
|
}
|
|
|
curl_easy_cleanup(curl);
|
|
|
curl = NULL;
|
|
|
string logmsg = "SAP result==>";
|
|
|
log2(logmsg.append(result));
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
//sendJsonHttpPost
|
|
|
string sendMom(const char* url, const char* data) {
|
|
|
log("sendMom Url==>%s", url);
|
|
|
if (tc_strstr(url, "http") == NULL) {
|
|
|
return "";
|
|
|
}
|
|
|
CURL *curl;
|
|
|
CURLcode res;
|
|
|
curl = curl_easy_init();
|
|
|
string result = "";
|
|
|
if (curl) {
|
|
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
|
|
|
curl_easy_setopt(curl, CURLOPT_URL, url);
|
|
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
|
|
curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
|
|
|
struct curl_slist *headers = NULL;
|
|
|
headers = curl_slist_append(headers, "Content-Type: application/xml");
|
|
|
if (tc_strstr(url, "10.128.11.12") != NULL) {//
|
|
|
headers = curl_slist_append(headers, "Authorization: Basic MTQyODI0Mjg2NDU2ODMwNzcxNDpkREF3TWpveE1EQXg=");//"po_rfc", "1qaz!QAZ"
|
|
|
}
|
|
|
else {
|
|
|
headers = curl_slist_append(headers, "Authorization: Basic MTcxNDkwNTkyNTc2MjUzNTQyNjpkREF3TWpveE1EQXg=");//"shplm", "sap@2019"
|
|
|
}
|
|
|
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
|
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, G2U(data));
|
|
|
|
|
|
ostringstream oss;
|
|
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
|
|
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &oss);
|
|
|
|
|
|
res = curl_easy_perform(curl);
|
|
|
char ress[4];
|
|
|
sprintf(ress, "%d", res);
|
|
|
result.append(ress).append("@@").append(U2G(oss.str().c_str()));
|
|
|
}
|
|
|
curl_easy_cleanup(curl);
|
|
|
curl = NULL;
|
|
|
string logmsg = "MOM result==>";
|
|
|
log2(logmsg.append(result));
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
string SendToSap(const char* data) {
|
|
|
int pref_cnt = 0;
|
|
|
char **prefs = NULL;
|
|
|
ITKCALL(PREF_ask_char_values("CHINT_WhBomUrl_YB", &pref_cnt, &prefs));
|
|
|
string sapUrl = "", momUrl = "";
|
|
|
for (int i = 0; i < pref_cnt; i++) {
|
|
|
string pref = prefs[i];
|
|
|
string prefix = pref.substr(0, 6);
|
|
|
if (tc_strcmp(prefix.c_str(), "SAP:1=") == 0) {
|
|
|
sapUrl.append(pref.substr(6, pref.size() - 6));
|
|
|
}
|
|
|
else if (tc_strcmp(prefix.c_str(), "MOM:1=") == 0) {
|
|
|
momUrl.append(pref.substr(6, pref.size() - 6));
|
|
|
}
|
|
|
}
|
|
|
string errBuff = "";
|
|
|
vector<string> sapVec;
|
|
|
Split(sendSap(sapUrl.c_str(), data), "@@", sapVec);
|
|
|
if (tc_strcmp(sapVec[0].c_str(), "0") != 0) {
|
|
|
errBuff.append("ÍÆËÍSAPÒì³£:").append(sapVec[1]).append("\\n");
|
|
|
}
|
|
|
|
|
|
vector<string> momVec;
|
|
|
Split(sendMom(momUrl.c_str(), data), "@@", momVec);
|
|
|
if (tc_strcmp(momVec[0].c_str(), "0") != 0) {
|
|
|
errBuff.append("ÍÆËÍMOMÒì³£:").append(momVec[1]).append("\\n");
|
|
|
}
|
|
|
return errBuff;
|
|
|
}
|
|
|
|
|
|
TiXmlElement* addElement(TiXmlElement *PARENT, const char* name, const char* val) {
|
|
|
TiXmlElement *CHILD = new TiXmlElement(name);
|
|
|
PARENT->LinkEndChild(CHILD);
|
|
|
if (tc_strlen(val) > 0) {
|
|
|
TiXmlText *materialText = new TiXmlText(val);
|
|
|
CHILD->LinkEndChild(materialText);
|
|
|
}
|
|
|
|
|
|
return CHILD;
|
|
|
}
|
|
|
|
|
|
void print(FlowBean bean) {
|
|
|
char *split = NULL, *combine = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(bean.flow_split, "object_string", &split));
|
|
|
ITKCALL(AOM_ask_value_string(bean.flow_combine, "object_string", &combine));
|
|
|
log(">> ·ÖÀëµã£º<%s> »ãºÏµã£º<%s> ", split, combine);
|
|
|
for (int i = 0; i < bean.flowList.size(); i++) {
|
|
|
char *os = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(bean.flowList[i], "object_string", &os));
|
|
|
log("Á÷³Ì£º ->%s", os);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void readGXFlow(tag_t gxLine, vector<FlowBean>& flowBeans, FlowBean& currentFlow) {
|
|
|
int sucCnt = 0, preCnt = 0;
|
|
|
tag_t *sucs = NULL, *pres = NULL;
|
|
|
char *os = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(gxLine, "object_string", &os));
|
|
|
ITKCALL(AOM_ask_value_tags(gxLine, "Mfg0successors", &sucCnt, &sucs));
|
|
|
ITKCALL(AOM_ask_value_tags(gxLine, "Mfg0predecessors", &preCnt, &pres));
|
|
|
log("readGXFlow£º%s=%d=%d", os, preCnt, sucCnt);
|
|
|
currentFlow.flowList.push_back(gxLine);
|
|
|
if (preCnt > 1) {
|
|
|
currentFlow.flow_combine_list.push_back(gxLine);
|
|
|
if (currentFlow.flow_combine == NULLTAG) {
|
|
|
currentFlow.flow_combine = gxLine;
|
|
|
}
|
|
|
}
|
|
|
if (sucCnt == 0) {
|
|
|
return;
|
|
|
}
|
|
|
for (int i = 1; i < sucCnt; i++) {
|
|
|
FlowBean newFlow = getClone(currentFlow);
|
|
|
newFlow.flow_split = gxLine;
|
|
|
newFlow.isMain = false;
|
|
|
readGXFlow(sucs[i], flowBeans, newFlow);
|
|
|
log("newFlow£º");
|
|
|
print(newFlow);
|
|
|
flowBeans.push_back(newFlow);
|
|
|
}
|
|
|
readGXFlow(sucs[0], flowBeans, currentFlow);
|
|
|
}
|
|
|
|
|
|
//SAPUtil.getFlowStarts
|
|
|
vector<tag_t> getFlowStarts(int c_line_count, tag_t *c_line_tags) {
|
|
|
vector<tag_t> startLines;
|
|
|
for (int i = 0; i < c_line_count; i++) {
|
|
|
int sucCnt = 0, preCnt = 0;
|
|
|
//tag_t *sucs = NULL, *pres = NULL;
|
|
|
char *os = NULL, *sucs = NULL, *pres = NULL, *prop1 = NULL, *prop2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(c_line_tags[i], "object_string", &os));
|
|
|
//ITKCALL(AOM_ask_value_tags(c_line_tags[i], "Mfg0successors", &sucCnt, &sucs));
|
|
|
//ITKCALL(AOM_ask_value_tags(c_line_tags[i], "Mfg0predecessors", &preCnt, &pres));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "Mfg0successors", &sucs));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "Mfg0predecessors", &pres));
|
|
|
//ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "Mfg0container", &prop1));
|
|
|
//ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "bl_rev_ps_children", &prop2));
|
|
|
log("getFlowStarts£º%s=%s=%s", os, pres, sucs);
|
|
|
//if (preCnt == 0 && sucCnt > 0) {
|
|
|
if ((!pres || tc_strlen(pres) == 0) && (sucs && tc_strlen(sucs) > 0)) {
|
|
|
startLines.push_back(c_line_tags[i]);
|
|
|
}
|
|
|
}
|
|
|
return startLines;
|
|
|
}
|
|
|
// ¶ÁÈ¡ÖÊÁ¿¼ìÑéÏî
|
|
|
void getZljyxInfo2(TiXmlElement* OPCHECKCONTENTS, tag_t gxRev) {
|
|
|
int count = 0;
|
|
|
tag_t *checks = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "ZT2_QualityCheckRelation", &count, &checks));
|
|
|
if (count > 0) {
|
|
|
char *item_id = NULL, *item_revision_id = NULL, *object_name = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &item_id));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "item_revision_id", &item_revision_id));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "object_name", &object_name));
|
|
|
string kjjdId = "";
|
|
|
kjjdId.append(item_id).append("/").append(item_revision_id);
|
|
|
addElement(OPCHECKCONTENTS, "PARENTTCID", kjjdId.c_str());
|
|
|
addElement(OPCHECKCONTENTS, "PARENTNAME", object_name);
|
|
|
addElement(OPCHECKCONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(OPCHECKCONTENTS, "OTHER2", "OTHER2");
|
|
|
|
|
|
TiXmlElement *OPCHECKSONLIST = addElement(OPCHECKCONTENTS, "OPCHECKSONLIST", "");
|
|
|
tag_t quantityRev = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_latest_rev(checks[0], &quantityRev));
|
|
|
count = 0;
|
|
|
tag_t *zt2_QChecks = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(quantityRev, "zt2_QCHECKS", &count, &zt2_QChecks));
|
|
|
vector<char*> props;
|
|
|
props.push_back("zt2_code");
|
|
|
props.push_back("zt2_jjxbh");
|
|
|
props.push_back("zt2_jyxmc");
|
|
|
props.push_back("zt2_jyxsjjg");
|
|
|
props.push_back("zt2_bzgcsxbh");
|
|
|
props.push_back("zt2_bzgcsx");
|
|
|
props.push_back("zt2_bzgcxxbh");
|
|
|
props.push_back("zt2_bzgczxx");
|
|
|
vector<string> beans;
|
|
|
map<string, vector<string>> map;
|
|
|
for (int d = 0; d < count; d++) {
|
|
|
vector<string> values;
|
|
|
for (int i = 0; i < props.size(); i++) {
|
|
|
char *val = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(zt2_QChecks[d], props[i], &val));
|
|
|
values.push_back(val);
|
|
|
}
|
|
|
beans.push_back(values[0]);
|
|
|
map[values[0]] = values;
|
|
|
}
|
|
|
sort(beans.begin(), beans.end());
|
|
|
|
|
|
for (int d = 0; d < beans.size(); d++) {
|
|
|
TiXmlElement *OPCHECKSONCONTENTS = addElement(OPCHECKSONLIST, "OPCHECKSONCONTENTS", "");
|
|
|
addElement(OPCHECKSONCONTENTS, "SEQID", map[beans[d]][0].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "TCID", map[beans[d]][1].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "OPCHECKNR1", map[beans[d]][2].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "OPCHECKVALUE1", map[beans[d]][3].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "OPCHECKNR2", map[beans[d]][4].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "OPCHECKVALUE2", map[beans[d]][5].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "OPCHECKNR3", map[beans[d]][6].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "OPCHECKVALUE3", map[beans[d]][7].c_str());
|
|
|
addElement(OPCHECKSONCONTENTS, "REMARK", "");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// ¶ÁÈ¡¶þ¼¶¹¤Ðò ²¢Ðй¤ÐòÎÞºóÐø
|
|
|
void getGXInfo2Comb(FlowBean bean, int index, tag_t partRev, char* p_uom, char* now,
|
|
|
TiXmlElement* OPLIST, TiXmlElement* SONLIST, int valueOf, tag_t gxLine) {
|
|
|
|
|
|
char plnfl[16];
|
|
|
sprintf(plnfl, "%06d", index);
|
|
|
string bezfl = "";
|
|
|
string flagt = "";
|
|
|
string vornr1 = "";
|
|
|
string vornr2 = "";
|
|
|
if (!bean.isMain) {// ²¢ÐÐ
|
|
|
bezfl = (bean.BEZFL);
|
|
|
flagt = "1";// ˳ÐòÀà±ð
|
|
|
if (bean.flow_split != NULLTAG)
|
|
|
vornr1 = getGXNR(bean.flow_split);// ǰÇý
|
|
|
if (bean.isOther)
|
|
|
bean.flow_split = NULLTAG;
|
|
|
if (bean.flow_combine != NULLTAG)
|
|
|
vornr2 = getGXNR(bean.flow_combine);// ºóÖÃ
|
|
|
}
|
|
|
else {// ·Ç²¢ÐÐ
|
|
|
flagt = "0";// ˳ÐòÀà±ð
|
|
|
}
|
|
|
TiXmlElement *OPHEAD = addElement(OPLIST, "OPHEAD", "");
|
|
|
addElement(OPHEAD, "PLNAL", "1");
|
|
|
addElement(OPHEAD, "PLNFL", plnfl);
|
|
|
addElement(OPHEAD, "DATUV", now);
|
|
|
addElement(OPHEAD, "FLGAT", flagt.c_str());
|
|
|
addElement(OPHEAD, "LTXA1", "");
|
|
|
addElement(OPHEAD, "BEZFL", bezfl.c_str());
|
|
|
addElement(OPHEAD, "VORNR1", vornr1.c_str());
|
|
|
addElement(OPHEAD, "VORNR2", vornr2.c_str());
|
|
|
|
|
|
tag_t gxRev = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tag(gxLine, "bl_line_object", &gxRev));
|
|
|
char *item_id = NULL, *item_revision_id = NULL, *zt2_WorkCenter = NULL, *object_name = NULL, *zt2_ClassificationCode = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &item_id));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "item_revision_id", &item_revision_id));
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "zt2_WorkCenter", &zt2_WorkCenter));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "object_name", &object_name));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "zt2_ClassificationCode", &zt2_ClassificationCode));
|
|
|
char *bl_ZT2_FirstOPRevision_zt2_ControlCode = NULL, *bl_ZT2_FirstOPRevision_zt2_ArtificialTime = NULL,
|
|
|
*bl_ZT2_FirstOPRevision_zt2_MachineTime = NULL, *bl_ZT2_FirstOPRevision_zt2_ReadinessTime = NULL, *bl_ZT2_FirstOPRevision_zt2_ProCycle = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ControlCode", &bl_ZT2_FirstOPRevision_zt2_ControlCode));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ArtificialTime", &bl_ZT2_FirstOPRevision_zt2_ArtificialTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_MachineTime", &bl_ZT2_FirstOPRevision_zt2_MachineTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ReadinessTime", &bl_ZT2_FirstOPRevision_zt2_ReadinessTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ProCycle", &bl_ZT2_FirstOPRevision_zt2_ProCycle));
|
|
|
string kjjdId = "";
|
|
|
kjjdId.append(item_id).append("/").append(item_revision_id);
|
|
|
|
|
|
TiXmlElement *OPCONTENTS = addElement(OPHEAD, "OPCONTENTS", "");
|
|
|
addElement(OPCONTENTS, "OPTCID", kjjdId.c_str());
|
|
|
addElement(OPCONTENTS, "OPNAME", object_name);
|
|
|
addElement(OPCONTENTS, "OPTYPE", "");
|
|
|
addElement(OPCONTENTS, "VORNR", getGXNR(gxLine));
|
|
|
addElement(OPCONTENTS, "ARBPL", zt2_WorkCenter);
|
|
|
addElement(OPCONTENTS, "STEUS", bl_ZT2_FirstOPRevision_zt2_ControlCode);
|
|
|
addElement(OPCONTENTS, "LTXA1", object_name);
|
|
|
addElement(OPCONTENTS, "USR00", zt2_ClassificationCode);
|
|
|
addElement(OPCONTENTS, "BMSCH", "1");
|
|
|
addElement(OPCONTENTS, "PLNME", p_uom);
|
|
|
addElement(OPCONTENTS, "VGW01", bl_ZT2_FirstOPRevision_zt2_ArtificialTime);
|
|
|
addElement(OPCONTENTS, "VGE01", "MIN");
|
|
|
addElement(OPCONTENTS, "VGW02", bl_ZT2_FirstOPRevision_zt2_MachineTime);
|
|
|
addElement(OPCONTENTS, "VGE02", "MIN");
|
|
|
addElement(OPCONTENTS, "VGW05", bl_ZT2_FirstOPRevision_zt2_ReadinessTime);
|
|
|
addElement(OPCONTENTS, "VGE05", "MIN");
|
|
|
addElement(OPCONTENTS, "PROCYCLE", bl_ZT2_FirstOPRevision_zt2_ProCycle);
|
|
|
addElement(OPCONTENTS, "PROCYCLEUNIT", "MIN");
|
|
|
addElement(OPCONTENTS, "OTHER1", "");
|
|
|
addElement(OPCONTENTS, "OTHER2", "");
|
|
|
|
|
|
TiXmlElement *OPMATERCONTENTS = addElement(OPCONTENTS, "OPMATERCONTENTS", "");
|
|
|
tag_t *c_line_tags = NULL;
|
|
|
int c_line_count = 0;
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(gxLine, &c_line_count, &c_line_tags));
|
|
|
for (int i = 0; i < c_line_count; i++) {
|
|
|
tag_t subRev = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[i], "bl_line_object", &subRev));
|
|
|
char *zt2_MaterialNo = NULL, *bl_quantity = NULL, *remark = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(subRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "bl_quantity", &bl_quantity));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "bl_occ_type", &remark));
|
|
|
|
|
|
TiXmlElement *OPMATER = addElement(OPMATERCONTENTS, "OPMATER", "");
|
|
|
addElement(OPMATER, "WLBM", zt2_MaterialNo);
|
|
|
addElement(OPMATER, "QUE", bl_quantity);
|
|
|
|
|
|
if (tc_strcmp(remark, "ZT2_FuLiao") == 0 || tc_strcmp(remark, "¸¨ÁÏ") == 0) {
|
|
|
addElement(OPMATER, "OPTPYE", "2");
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL, *zt2_unit = NULL, *ZT2_Remark = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(subRev, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(subRev, "item_revision_id", &item_revision_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "ZT2_Remark", &ZT2_Remark));
|
|
|
string tcId = "", errMsg = "";
|
|
|
tcId.append(item_id2).append("/").append(item_revision_id2);
|
|
|
tag_t item = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(subRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
|
|
|
char* uom = getUnti(zt2_unit);
|
|
|
char *zysapmenge = NULL;
|
|
|
zysapmenge = (char*)MEM_alloc((16 + 1) * sizeof(char));
|
|
|
tc_strcpy(zysapmenge, getZYSAPMENGE(subRev, NULLTAG, c_line_tags[i], false, "1", errMsg));
|
|
|
char valof[16];
|
|
|
sprintf(valof, "%d", valueOf);
|
|
|
|
|
|
TiXmlElement *SONCONTENTS = addElement(SONLIST, "SONCONTENTS", "");
|
|
|
addElement(SONCONTENTS, "TCID", tcId.c_str());
|
|
|
addElement(SONCONTENTS, "WLBM", zt2_MaterialNo);
|
|
|
addElement(SONCONTENTS, "DATUV", now);
|
|
|
addElement(SONCONTENTS, "QUE", zysapmenge);
|
|
|
addElement(SONCONTENTS, "QUIT", uom);
|
|
|
addElement(SONCONTENTS, "SORTF", "");
|
|
|
addElement(SONCONTENTS, "SEQID", valof);
|
|
|
addElement(SONCONTENTS, "POSTP", "L");
|
|
|
addElement(SONCONTENTS, "REMARK", ZT2_Remark);
|
|
|
addElement(SONCONTENTS, "OTHER1", "");
|
|
|
addElement(SONCONTENTS, "OTHER2", "");
|
|
|
}
|
|
|
else {
|
|
|
addElement(OPMATER, "OPTPYE", "1");
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPFILELIST = addElement(OPCONTENTS, "OPFILELIST", "");
|
|
|
int datasetCnt = 0;
|
|
|
tag_t *datasets = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "IMAN_specification", &datasetCnt, &datasets));
|
|
|
for (int d = 0; d < datasetCnt; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets[d], &fileUid);
|
|
|
TiXmlElement *FILECONTENTS = addElement(OPFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", item_id);
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
addElement(FILECONTENTS, "FILETYPE", "Îļþ");
|
|
|
addElement(FILECONTENTS, "FILECODE", item_id);
|
|
|
addElement(FILECONTENTS, "FILEUID", fileUid);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPGYSZFILELIST = addElement(OPCONTENTS, "OPGYSZFILELIST", "");
|
|
|
int ruleCnt = 0;
|
|
|
tag_t *rules = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "ZT2_ProcessRuleRelation", &ruleCnt, &rules));
|
|
|
if (ruleCnt > 0) {
|
|
|
tag_t processRuleRevision = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_latest_rev(rules[0], &processRuleRevision));
|
|
|
int datasetCnt2 = 0;
|
|
|
tag_t *datasets2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(processRuleRevision, "IMAN_specification", &datasetCnt2, &datasets2));
|
|
|
for (int d = 0; d < datasetCnt2; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets2[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets2[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets2[d], &fileUid);
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(processRuleRevision, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(processRuleRevision, "item_revision_id", &item_revision_id2));
|
|
|
string tcId = "";
|
|
|
tcId.append(item_id2).append("/").append(item_revision_id2);
|
|
|
|
|
|
TiXmlElement *FILECONTENTS = addElement(OPGYSZFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", tcId.c_str());
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
if (tc_strstr(type, "PDF") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "pdf");
|
|
|
}
|
|
|
else if (tc_strstr(type, "Word") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "docx");
|
|
|
}
|
|
|
else {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "xlsx");
|
|
|
}
|
|
|
addElement(FILECONTENTS, "FILEUID", fileUid);
|
|
|
addElement(FILECONTENTS, "FILECODE", item_id);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPGXZYZDSFILELIST = addElement(OPCONTENTS, "OPGXZYZDSFILELIST", "");
|
|
|
ruleCnt = 0;
|
|
|
tag_t *books = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "ZT2_ProcGuidBookRelation", &ruleCnt, &books));
|
|
|
if (ruleCnt > 0) {
|
|
|
tag_t procGuidBookRevision = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_latest_rev(books[0], &procGuidBookRevision));
|
|
|
int datasetCnt2 = 0;
|
|
|
tag_t *datasets2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(procGuidBookRevision, "IMAN_specification", &datasetCnt2, &datasets2));
|
|
|
for (int d = 0; d < datasetCnt2; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets2[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets2[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets2[d], &fileUid);
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(procGuidBookRevision, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(procGuidBookRevision, "item_revision_id", &item_revision_id2));
|
|
|
string tcId = "";
|
|
|
tcId.append(item_id2).append("/").append(item_revision_id2);
|
|
|
|
|
|
TiXmlElement *FILECONTENTS = addElement(OPGXZYZDSFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", tcId.c_str());
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
if (tc_strstr(type, "PDF") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "pdf");
|
|
|
}
|
|
|
else if (tc_strstr(type, "Word") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "docx");
|
|
|
}
|
|
|
else {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "xlsx");
|
|
|
}
|
|
|
addElement(FILECONTENTS, "FILEUID", fileUid);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPCHECKCONTENTS = addElement(OPCONTENTS, "OPCHECKCONTENTS", "");
|
|
|
getZljyxInfo2(OPCHECKCONTENTS, gxRev);
|
|
|
}
|
|
|
|
|
|
// ¶ÁÈ¡¶þ¼¶¹¤Ðò
|
|
|
void getGXInfo2(FlowBean bean, int index, tag_t partRev, char* p_uom, char* now,
|
|
|
TiXmlElement* OPLIST, TiXmlElement* SONLIST, int valueOf) {
|
|
|
|
|
|
char plnfl[16];
|
|
|
sprintf(plnfl, "%06d", index);
|
|
|
string bezfl = "";
|
|
|
string flagt = "";
|
|
|
string vornr1 = "";
|
|
|
string vornr2 = "";
|
|
|
boolean bx = false;
|
|
|
if (!bean.isMain) {// ²¢ÐÐ
|
|
|
bx = true;
|
|
|
bezfl = (bean.BEZFL);
|
|
|
flagt = "1";// ˳ÐòÀà±ð
|
|
|
if (bean.flow_split != NULLTAG)
|
|
|
vornr1 = getGXNR(bean.flow_split);// ǰÇý
|
|
|
if (bean.isOther)
|
|
|
bean.flow_split = NULLTAG;
|
|
|
if (bean.flow_combine != NULLTAG)
|
|
|
vornr2 = getGXNR(bean.flow_combine);// ºóÖÃ
|
|
|
}
|
|
|
else {// ·Ç²¢ÐÐ
|
|
|
flagt = "0";// ˳ÐòÀà±ð
|
|
|
}
|
|
|
TiXmlElement *OPHEAD = addElement(OPLIST, "OPHEAD", "");
|
|
|
addElement(OPHEAD, "PLNAL", "1");
|
|
|
addElement(OPHEAD, "PLNFL", plnfl);
|
|
|
addElement(OPHEAD, "DATUV", now);
|
|
|
addElement(OPHEAD, "FLGAT", flagt.c_str());
|
|
|
addElement(OPHEAD, "LTXA1", "");
|
|
|
addElement(OPHEAD, "BEZFL", bezfl.c_str());
|
|
|
addElement(OPHEAD, "VORNR1", vornr1.c_str());
|
|
|
addElement(OPHEAD, "VORNR2", vornr2.c_str());
|
|
|
boolean inBx = (bean.flow_split == NULLTAG);
|
|
|
char *flow_combine = NULL;
|
|
|
ITK__convert_tag_to_uid(bean.flow_combine, &flow_combine);
|
|
|
int cnt = bean.flowList.size();
|
|
|
for (int i = 0; i < cnt; i++) {
|
|
|
tag_t gxLine = bean.flowList[i];
|
|
|
char *uid = NULL;
|
|
|
ITK__convert_tag_to_uid(gxLine, &uid);
|
|
|
if (bx) {
|
|
|
if (tc_strcmp(uid, flow_combine) == 0) {
|
|
|
break;
|
|
|
}
|
|
|
if (inBx) {
|
|
|
if (gxLine == NULLTAG) {
|
|
|
inBx = true;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
char *flow_split = NULL;
|
|
|
ITK__convert_tag_to_uid(bean.flow_split, &flow_split);
|
|
|
if (tc_strcmp(uid, flow_split) == 0) {
|
|
|
inBx = true;
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
tag_t gxRev = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tag(gxLine, "bl_line_object", &gxRev));
|
|
|
char *item_id = NULL, *item_revision_id = NULL, *zt2_WorkCenter = NULL, *object_name = NULL, *zt2_ClassificationCode = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &item_id));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "item_revision_id", &item_revision_id));
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "zt2_WorkCenter", &zt2_WorkCenter));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "object_name", &object_name));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "zt2_ClassificationCode", &zt2_ClassificationCode));
|
|
|
char *bl_ZT2_FirstOPRevision_zt2_ControlCode = NULL, *bl_ZT2_FirstOPRevision_zt2_ArtificialTime = NULL,
|
|
|
*bl_ZT2_FirstOPRevision_zt2_MachineTime = NULL, *bl_ZT2_FirstOPRevision_zt2_ReadinessTime = NULL, *bl_ZT2_FirstOPRevision_zt2_ProCycle = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ControlCode", &bl_ZT2_FirstOPRevision_zt2_ControlCode));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ArtificialTime", &bl_ZT2_FirstOPRevision_zt2_ArtificialTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_MachineTime", &bl_ZT2_FirstOPRevision_zt2_MachineTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ReadinessTime", &bl_ZT2_FirstOPRevision_zt2_ReadinessTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ProCycle", &bl_ZT2_FirstOPRevision_zt2_ProCycle));
|
|
|
string kjjdId = "";
|
|
|
kjjdId.append(item_id).append("/").append(item_revision_id);
|
|
|
|
|
|
TiXmlElement *OPCONTENTS = addElement(OPHEAD, "OPCONTENTS", "");
|
|
|
addElement(OPCONTENTS, "OPTCID", kjjdId.c_str());
|
|
|
addElement(OPCONTENTS, "OPNAME", object_name);
|
|
|
addElement(OPCONTENTS, "OPTYPE", "");
|
|
|
addElement(OPCONTENTS, "VORNR", getGXNR(gxLine));
|
|
|
addElement(OPCONTENTS, "ARBPL", zt2_WorkCenter);
|
|
|
addElement(OPCONTENTS, "STEUS", bl_ZT2_FirstOPRevision_zt2_ControlCode);
|
|
|
addElement(OPCONTENTS, "LTXA1", object_name);
|
|
|
addElement(OPCONTENTS, "USR00", zt2_ClassificationCode);
|
|
|
addElement(OPCONTENTS, "BMSCH", "1");
|
|
|
addElement(OPCONTENTS, "PLNME", p_uom);
|
|
|
addElement(OPCONTENTS, "VGW01", bl_ZT2_FirstOPRevision_zt2_ArtificialTime);
|
|
|
addElement(OPCONTENTS, "VGE01", "MIN");
|
|
|
addElement(OPCONTENTS, "VGW02", bl_ZT2_FirstOPRevision_zt2_MachineTime);
|
|
|
addElement(OPCONTENTS, "VGE02", "MIN");
|
|
|
addElement(OPCONTENTS, "VGW05", bl_ZT2_FirstOPRevision_zt2_ReadinessTime);
|
|
|
addElement(OPCONTENTS, "VGE05", "MIN");
|
|
|
addElement(OPCONTENTS, "PROCYCLE", bl_ZT2_FirstOPRevision_zt2_ProCycle);
|
|
|
addElement(OPCONTENTS, "PROCYCLEUNIT", "MIN");
|
|
|
addElement(OPCONTENTS, "OTHER1", "");
|
|
|
addElement(OPCONTENTS, "OTHER2", "");
|
|
|
|
|
|
TiXmlElement *OPMATERCONTENTS = addElement(OPCONTENTS, "OPMATERCONTENTS", "");
|
|
|
tag_t *c_line_tags = NULL;
|
|
|
int c_line_count = 0;
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(gxLine, &c_line_count, &c_line_tags));
|
|
|
for (int i = 0; i < c_line_count; i++) {
|
|
|
tag_t subRev = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[i], "bl_line_object", &subRev));
|
|
|
char *zt2_MaterialNo = NULL, *bl_quantity = NULL, *remark = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(subRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "bl_quantity", &bl_quantity));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "bl_occ_type", &remark));
|
|
|
|
|
|
TiXmlElement *OPMATER = addElement(OPMATERCONTENTS, "OPMATER", "");
|
|
|
addElement(OPMATER, "WLBM", zt2_MaterialNo);
|
|
|
addElement(OPMATER, "QUE", bl_quantity);
|
|
|
|
|
|
if (tc_strcmp(remark, "ZT2_FuLiao") == 0 || tc_strcmp(remark, "¸¨ÁÏ") == 0) {
|
|
|
addElement(OPMATER, "OPTPYE", "2");
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL, *zt2_unit = NULL, *ZT2_Remark = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(subRev, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(subRev, "item_revision_id", &item_revision_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "ZT2_Remark", &ZT2_Remark));
|
|
|
string tcId = "", errMsg = "";
|
|
|
tcId.append(item_id2).append("/").append(item_revision_id2);
|
|
|
tag_t item = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(subRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
|
|
|
char* uom = getUnti(zt2_unit);
|
|
|
char *zysapmenge = NULL;
|
|
|
zysapmenge = (char*)MEM_alloc((16 + 1) * sizeof(char));
|
|
|
tc_strcpy(zysapmenge, getZYSAPMENGE(subRev, NULLTAG, c_line_tags[i], false, "1", errMsg));
|
|
|
char valof[16];
|
|
|
sprintf(valof, "%d", valueOf);
|
|
|
|
|
|
TiXmlElement *SONCONTENTS = addElement(SONLIST, "SONCONTENTS", "");
|
|
|
addElement(SONCONTENTS, "TCID", tcId.c_str());
|
|
|
addElement(SONCONTENTS, "WLBM", zt2_MaterialNo);
|
|
|
addElement(SONCONTENTS, "DATUV", now);
|
|
|
addElement(SONCONTENTS, "QUE", zysapmenge);
|
|
|
addElement(SONCONTENTS, "QUIT", uom);
|
|
|
addElement(SONCONTENTS, "SORTF", "");
|
|
|
addElement(SONCONTENTS, "SEQID", valof);
|
|
|
addElement(SONCONTENTS, "POSTP", "L");
|
|
|
addElement(SONCONTENTS, "REMARK", ZT2_Remark);
|
|
|
addElement(SONCONTENTS, "OTHER1", "");
|
|
|
addElement(SONCONTENTS, "OTHER2", "");
|
|
|
}
|
|
|
else {
|
|
|
addElement(OPMATER, "OPTPYE", "1");
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPFILELIST = addElement(OPCONTENTS, "OPFILELIST", "");
|
|
|
int datasetCnt = 0;
|
|
|
tag_t *datasets = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "IMAN_specification", &datasetCnt, &datasets));
|
|
|
for (int d = 0; d < datasetCnt; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets[d], &fileUid);
|
|
|
TiXmlElement *FILECONTENTS = addElement(OPFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", item_id);
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
addElement(FILECONTENTS, "FILETYPE", "Îļþ");
|
|
|
addElement(FILECONTENTS, "FILECODE", item_id);
|
|
|
addElement(FILECONTENTS, "FILEUID", fileUid);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPGYSZFILELIST = addElement(OPCONTENTS, "OPGYSZFILELIST", "");
|
|
|
int ruleCnt = 0;
|
|
|
tag_t *rules = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "ZT2_ProcessRuleRelation", &ruleCnt, &rules));
|
|
|
if (ruleCnt > 0) {
|
|
|
tag_t processRuleRevision = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_latest_rev(rules[0], &processRuleRevision));
|
|
|
int datasetCnt2 = 0;
|
|
|
tag_t *datasets2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(processRuleRevision, "IMAN_specification", &datasetCnt2, &datasets2));
|
|
|
for (int d = 0; d < datasetCnt2; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets2[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets2[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets2[d], &fileUid);
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(processRuleRevision, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(processRuleRevision, "item_revision_id", &item_revision_id2));
|
|
|
string tcId = "";
|
|
|
tcId.append(item_id2).append("/").append(item_revision_id2);
|
|
|
|
|
|
TiXmlElement *FILECONTENTS = addElement(OPGYSZFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", tcId.c_str());
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
if (tc_strstr(type, "PDF") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "pdf");
|
|
|
}
|
|
|
else if (tc_strstr(type, "Word") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "docx");
|
|
|
}
|
|
|
else {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "xlsx");
|
|
|
}
|
|
|
addElement(FILECONTENTS, "FILEUID", fileUid);
|
|
|
addElement(FILECONTENTS, "FILECODE", item_id);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPGXZYZDSFILELIST = addElement(OPCONTENTS, "OPGXZYZDSFILELIST", "");
|
|
|
ruleCnt = 0;
|
|
|
tag_t *books = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "ZT2_ProcGuidBookRelation", &ruleCnt, &books));
|
|
|
if (ruleCnt > 0) {
|
|
|
tag_t procGuidBookRevision = NULLTAG;
|
|
|
ITKCALL(ITEM_ask_latest_rev(books[0], &procGuidBookRevision));
|
|
|
int datasetCnt2 = 0;
|
|
|
tag_t *datasets2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(procGuidBookRevision, "IMAN_specification", &datasetCnt2, &datasets2));
|
|
|
for (int d = 0; d < datasetCnt2; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets2[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets2[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets2[d], &fileUid);
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(procGuidBookRevision, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_UIF_ask_value(procGuidBookRevision, "item_revision_id", &item_revision_id2));
|
|
|
string tcId = "";
|
|
|
tcId.append(item_id2).append("/").append(item_revision_id2);
|
|
|
|
|
|
TiXmlElement *FILECONTENTS = addElement(OPGXZYZDSFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", tcId.c_str());
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
if (tc_strstr(type, "PDF") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "pdf");
|
|
|
}
|
|
|
else if (tc_strstr(type, "Word") != NULL) {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "docx");
|
|
|
}
|
|
|
else {
|
|
|
addElement(FILECONTENTS, "FILETYPE", "xlsx");
|
|
|
}
|
|
|
addElement(FILECONTENTS, "FILEUID", fileUid);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPCHECKCONTENTS = addElement(OPCONTENTS, "OPCHECKCONTENTS", "");
|
|
|
getZljyxInfo2(OPCHECKCONTENTS, gxRev);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void readTowGx(tag_t line, tag_t partRev, char* now, TiXmlElement* OPLIST, TiXmlElement* SONLIST, int valueOf) {
|
|
|
tag_t item = NULLTAG, *c_line_tags = NULL;
|
|
|
int c_line_count = 0;
|
|
|
ITKCALL(BOM_line_ask_all_child_lines(line, &c_line_count, &c_line_tags));
|
|
|
vector<tag_t> startLines = getFlowStarts(c_line_count, c_line_tags);
|
|
|
if (startLines.size() > 0) {
|
|
|
log("ÕÒµ½¹¤ÐòÁ÷Æðʼµã2£º%d", startLines.size());
|
|
|
}
|
|
|
char *zt2_unit = NULL;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(partRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
|
|
|
char* p_uom = getUnti(zt2_unit);
|
|
|
vector<FlowBean> flowBeans;
|
|
|
for (int i = 0; i < startLines.size(); i++) {
|
|
|
FlowBean currentFlow;
|
|
|
currentFlow.isMain = (i == 0);
|
|
|
readGXFlow(startLines[i], flowBeans, currentFlow);
|
|
|
flowBeans.push_back(currentFlow);
|
|
|
}
|
|
|
boolean flagBx = false;
|
|
|
// ´òÓ¡Á÷ÐÅÏ¢
|
|
|
if (flowBeans.size() > 0) {
|
|
|
log("---ÒѼÓÔØPERTÊý¾Ý2---");
|
|
|
for (FlowBean b : flowBeans) {
|
|
|
print(b);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
// ÎÞPERTÊý¾Ý
|
|
|
log("ÎÞPERTÊý¾Ý2");
|
|
|
FlowBean bean;
|
|
|
bean.isMain = true;
|
|
|
flagBx = true;
|
|
|
for (int j = 0; j < c_line_count; j++) {
|
|
|
bean.flowList.push_back(c_line_tags[j]);
|
|
|
}
|
|
|
//bean.print();
|
|
|
flowBeans.push_back(bean);
|
|
|
}
|
|
|
// ÅÅÐò
|
|
|
getSort(flowBeans);
|
|
|
|
|
|
int ind = 0;
|
|
|
for (int i = 0; i < flowBeans.size(); i++) {
|
|
|
FlowBean bean = flowBeans[i];
|
|
|
if (bean.flow_combine == NULLTAG && flagBx) {
|
|
|
for (int t = 0; t < bean.flowList.size(); t++) {
|
|
|
getGXInfo2Comb(bean, ind, partRev, p_uom, now, OPLIST, SONLIST, valueOf, bean.flowList[t]);
|
|
|
ind ++;
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
getGXInfo2(bean, ind, partRev, p_uom, now, OPLIST, SONLIST, valueOf);
|
|
|
ind++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// ¶Áȡһ¼¶¹¤Ðò
|
|
|
void getGXInfo(FlowBean bean, int index, tag_t partRev, char* p_uom, char* now,
|
|
|
tag_t line, TiXmlElement* KJJDLIST, TiXmlElement* SONLIST, int valueOf) {
|
|
|
string vornr1 = "";
|
|
|
string vornr2 = "";
|
|
|
boolean bx = false;
|
|
|
string flagt = "";
|
|
|
string bezfl = "";// ²Î¿¼Ë³Ðò
|
|
|
if (!bean.isMain) {// ²¢ÐÐ
|
|
|
bezfl = (bean.BEZFL);
|
|
|
bx = true;
|
|
|
flagt = "1";// ˳ÐòÀà±ð
|
|
|
if (bean.flow_split != NULLTAG) {
|
|
|
vornr1 = getGXNR(bean.flow_split);// ǰÇý
|
|
|
}
|
|
|
if (bean.isOther)
|
|
|
bean.flow_split = NULLTAG;
|
|
|
if (bean.flow_combine != NULLTAG) {
|
|
|
vornr2 = getGXNR(bean.flow_combine);// ºóÖÃ
|
|
|
}
|
|
|
}
|
|
|
else {// ·Ç²¢ÐÐ
|
|
|
flagt = "0";// ˳ÐòÀà±ð
|
|
|
}
|
|
|
char plnfl[16];
|
|
|
sprintf(plnfl, "%06d", index);
|
|
|
TiXmlElement *KJJDHEAD = addElement(KJJDLIST, "KJJDHEAD", "");
|
|
|
addElement(KJJDHEAD, "PLNAL", "1");
|
|
|
addElement(KJJDHEAD, "PLNFL", plnfl);
|
|
|
addElement(KJJDHEAD, "DATUV", now);
|
|
|
addElement(KJJDHEAD, "FLGAT", flagt.c_str());
|
|
|
addElement(KJJDHEAD, "LTXA1", "");
|
|
|
addElement(KJJDHEAD, "BEZFL", bezfl.c_str());
|
|
|
addElement(KJJDHEAD, "VORNR1", vornr1.c_str());
|
|
|
addElement(KJJDHEAD, "VORNR2", vornr2.c_str());
|
|
|
boolean inBx = (bean.flow_split == NULLTAG);
|
|
|
char *flow_combine = NULL;
|
|
|
ITK__convert_tag_to_uid(bean.flow_combine, &flow_combine);
|
|
|
int cnt = bean.flowList.size();
|
|
|
for (int i = 0; i < cnt; i++) {
|
|
|
tag_t gxLine = bean.flowList[i];
|
|
|
char *uid = NULL;
|
|
|
ITK__convert_tag_to_uid(gxLine, &uid);
|
|
|
if (bx) {
|
|
|
if (tc_strcmp(uid, flow_combine) == 0) {
|
|
|
break;
|
|
|
}
|
|
|
if (inBx) {
|
|
|
if (gxLine == NULLTAG) {
|
|
|
inBx = true;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
char *flow_split = NULL;
|
|
|
ITK__convert_tag_to_uid(bean.flow_split, &flow_split);
|
|
|
if (tc_strcmp(uid, flow_split) == 0) {
|
|
|
inBx = true;
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
tag_t gxRev = NULLTAG;
|
|
|
ITKCALL(AOM_ask_value_tag(gxLine, "bl_line_object", &gxRev));
|
|
|
char *item_id = NULL, *item_revision_id = NULL, *zt2_WorkCenter = NULL, *object_name = NULL, *zt2_ClassificationCode = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &item_id));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "item_revision_id", &item_revision_id));
|
|
|
ITKCALL(AOM_ask_value_string(gxRev, "zt2_WorkCenter", &zt2_WorkCenter));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "object_name", &object_name));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxRev, "zt2_ClassificationCode", &zt2_ClassificationCode));
|
|
|
char *bl_ZT2_FirstOPRevision_zt2_ControlCode = NULL, *bl_ZT2_FirstOPRevision_zt2_ArtificialTime = NULL,
|
|
|
*bl_ZT2_FirstOPRevision_zt2_MachineTime = NULL, *bl_ZT2_FirstOPRevision_zt2_ReadinessTime = NULL, *bl_ZT2_FirstOPRevision_zt2_ProCycle = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ControlCode", &bl_ZT2_FirstOPRevision_zt2_ControlCode));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ArtificialTime", &bl_ZT2_FirstOPRevision_zt2_ArtificialTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_MachineTime", &bl_ZT2_FirstOPRevision_zt2_MachineTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ReadinessTime", &bl_ZT2_FirstOPRevision_zt2_ReadinessTime));
|
|
|
ITKCALL(AOM_UIF_ask_value(gxLine, "bl_ZT2_FirstOPRevision_zt2_ProCycle", &bl_ZT2_FirstOPRevision_zt2_ProCycle));
|
|
|
string kjjdId = "";
|
|
|
kjjdId.append(item_id).append("/").append(item_revision_id);
|
|
|
|
|
|
TiXmlElement *KJJDCONTENTS = addElement(KJJDHEAD, "KJJDCONTENTS", "");
|
|
|
addElement(KJJDCONTENTS, "KJJDID", kjjdId.c_str());
|
|
|
addElement(KJJDCONTENTS, "KJJDTYPE", "1");
|
|
|
addElement(KJJDCONTENTS, "VORNR", getGXNR(gxLine));
|
|
|
addElement(KJJDCONTENTS, "ARBPL", zt2_WorkCenter);
|
|
|
addElement(KJJDCONTENTS, "STEUS", bl_ZT2_FirstOPRevision_zt2_ControlCode);
|
|
|
addElement(KJJDCONTENTS, "LTXA1", object_name);
|
|
|
addElement(KJJDCONTENTS, "USR00", zt2_ClassificationCode);
|
|
|
addElement(KJJDCONTENTS, "BMSCH", "1");
|
|
|
addElement(KJJDCONTENTS, "PLNME", p_uom);
|
|
|
addElement(KJJDCONTENTS, "VGW01", bl_ZT2_FirstOPRevision_zt2_ArtificialTime);
|
|
|
addElement(KJJDCONTENTS, "VGE01", "MIN");
|
|
|
addElement(KJJDCONTENTS, "VGW02", bl_ZT2_FirstOPRevision_zt2_MachineTime);
|
|
|
addElement(KJJDCONTENTS, "VGE02", "MIN");
|
|
|
addElement(KJJDCONTENTS, "VGW05", bl_ZT2_FirstOPRevision_zt2_ReadinessTime);
|
|
|
addElement(KJJDCONTENTS, "VGE05", "MIN");
|
|
|
addElement(KJJDCONTENTS, "PROCYCLE", bl_ZT2_FirstOPRevision_zt2_ProCycle);
|
|
|
addElement(KJJDCONTENTS, "PROCYCLEUNIT", "MIN");
|
|
|
addElement(KJJDCONTENTS, "OTHER1", "MIN");
|
|
|
addElement(KJJDCONTENTS, "OTHER2", "MIN");
|
|
|
TiXmlElement *KJJDFILELIST = addElement(KJJDCONTENTS, "KJJDFILELIST", "");
|
|
|
int datasetCnt = 0;
|
|
|
tag_t *datasets = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(gxRev, "IMAN_specification", &datasetCnt, &datasets));
|
|
|
for (int d = 0; d < datasetCnt; d++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets[d], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *fileName = NULL, *fileUid = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(datasets[d], "object_name", &fileName));
|
|
|
ITK__convert_tag_to_uid(datasets[d], &fileUid);
|
|
|
TiXmlElement *FILECONTENTS = addElement(KJJDFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", item_id);
|
|
|
addElement(FILECONTENTS, "FILENAME", fileName);
|
|
|
addElement(FILECONTENTS, "FILETYPE", "Îļþ");
|
|
|
addElement(FILECONTENTS, "FIILUID", fileUid);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
TiXmlElement *OPLIST = addElement(KJJDCONTENTS, "OPLIST", "");
|
|
|
readTowGx(gxLine, gxRev, now, OPLIST, SONLIST, valueOf);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void readOneGx(tag_t line, tag_t partRev, char* now, TiXmlElement* KJJDLIST, TiXmlElement *SONLIST, int valueOf) {
|
|
|
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));
|
|
|
vector<FlowBean> flowBeans;
|
|
|
vector<tag_t> startLines = getFlowStarts(c_line_count, c_line_tags);
|
|
|
tag_t item = NULLTAG;
|
|
|
char *zt2_unit = NULL;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(partRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
|
|
|
char* p_uom = getUnti(zt2_unit);
|
|
|
for (int i = 0; i < startLines.size(); i++) {
|
|
|
FlowBean currentFlow;
|
|
|
currentFlow.isMain = (i == 0);
|
|
|
readGXFlow(startLines[i], flowBeans, currentFlow);
|
|
|
log("currentFlow£º");
|
|
|
print(currentFlow);
|
|
|
flowBeans.push_back(currentFlow);
|
|
|
}
|
|
|
// ´òÓ¡Á÷ÐÅÏ¢
|
|
|
if (flowBeans.size() > 0) {
|
|
|
log("---ÒѼÓÔØPERTÊý¾Ý1---");
|
|
|
//for (FlowBean b : flowBeans) {
|
|
|
for (int i = 0; i < flowBeans.size(); i++) {
|
|
|
print(flowBeans[i]);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
// ÎÞPERTÊý¾Ý
|
|
|
log("ÎÞPERTÊý¾Ý1");
|
|
|
FlowBean bean;
|
|
|
bean.isMain = true;
|
|
|
for (int j = 0; j < c_line_count; j++) {
|
|
|
bean.flowList.push_back(c_line_tags[j]);
|
|
|
}
|
|
|
//bean.print();
|
|
|
flowBeans.push_back(bean);
|
|
|
}
|
|
|
// ÅÅÐò
|
|
|
getSort(flowBeans);
|
|
|
// int ind=0;
|
|
|
for (int i = 0; i < flowBeans.size(); i++) {
|
|
|
getGXInfo(flowBeans[i], i, partRev, p_uom, now, line, KJJDLIST, SONLIST, valueOf);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void getProcess(tag_t rev, tag_t partRev, char* now, char* groupName, map<string, tag_t> gy_meops, TiXmlElement * BOPLIST, TiXmlElement * SONLIST, int valueOf) {
|
|
|
if (isTcm2(rev)) {
|
|
|
return;
|
|
|
}
|
|
|
char *zt2_MaterialNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
if (gy_meops.count(zt2_MaterialNo)) {
|
|
|
return;
|
|
|
}
|
|
|
gy_meops[zt2_MaterialNo] = rev;
|
|
|
|
|
|
tag_t ebom_window = NULLTAG, line = NULLTAG;
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, rev, NULLTAG, &line));
|
|
|
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 *item_id = NULL, *item_revision_id = NULL, *object_name = NULL, *zt2_unit = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(rev, "item_id", &item_id));
|
|
|
ITKCALL(AOM_ask_value_string(rev, "item_revision_id", &item_revision_id));
|
|
|
ITKCALL(AOM_ask_value_string(rev, "object_name", &object_name));
|
|
|
string tcid = "";
|
|
|
tcid.append(item_id).append("/").append(item_revision_id);
|
|
|
TiXmlElement *BOPCONTENTS = addElement(BOPLIST, "BOPCONTENTS", "");
|
|
|
addElement(BOPCONTENTS, "BOPTCID", tcid.c_str());
|
|
|
addElement(BOPCONTENTS, "BOPNAME", object_name);
|
|
|
addElement(BOPCONTENTS, "BOPTYPE", "S1");
|
|
|
addElement(BOPCONTENTS, "WLBM", zt2_MaterialNo);
|
|
|
addElement(BOPCONTENTS, "PLANT", groupName);
|
|
|
addElement(BOPCONTENTS, "VERWE", "1");
|
|
|
addElement(BOPCONTENTS, "STATU", "4");
|
|
|
addElement(BOPCONTENTS, "DATUV", now);
|
|
|
addElement(BOPCONTENTS, "PLNAL", "1");
|
|
|
addElement(BOPCONTENTS, "VERWE", tcid.c_str());
|
|
|
addElement(BOPCONTENTS, "OTHER1", "");
|
|
|
addElement(BOPCONTENTS, "OTHER2", "");
|
|
|
TiXmlElement *BOPFILELIST = addElement(BOPCONTENTS, "BOPFILELIST", "");
|
|
|
int dataset_count = 0;
|
|
|
tag_t *datasets = NULL;
|
|
|
ITKCALL(AOM_ask_value_tags(rev, "IMAN_specification", &dataset_count, &datasets));
|
|
|
for (int i = 0; i < dataset_count; i++) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(datasets[i], &type));
|
|
|
if (find(lists2.begin(), lists2.end(), type) != lists2.end()) {
|
|
|
char *name = NULL, *uid = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(datasets[i], "object_name", &name));
|
|
|
ITK__convert_tag_to_uid(datasets[i], &uid);
|
|
|
TiXmlElement *FILECONTENTS = addElement(BOPFILELIST, "FILECONTENTS", "");
|
|
|
addElement(FILECONTENTS, "FILEID", item_id);
|
|
|
addElement(FILECONTENTS, "FILENAME", name);
|
|
|
addElement(FILECONTENTS, "FILETYPE", "Îļþ");
|
|
|
addElement(FILECONTENTS, "FIILUID", uid);
|
|
|
addElement(FILECONTENTS, "OTHER1", "OTHER1");
|
|
|
addElement(FILECONTENTS, "OTHER2", "OTHER2");
|
|
|
}
|
|
|
}
|
|
|
//tag_t window = NULLTAG, line2 = NULLTAG;
|
|
|
//ITKCALL(BOM_create_window(&window));
|
|
|
//ITKCALL(BOM_set_window_top_line(window, NULL, rev, NULLTAG, &line2));
|
|
|
int count = 0;
|
|
|
tag_t* openedContexts = NULLTAG, *structuerContexts = NULLTAG, cc = NULLTAG, *c_lines = NULLTAG;
|
|
|
ITKCALL(MFG_open_context(rev, false, false, &count, &openedContexts, &structuerContexts, &cc));
|
|
|
TiXmlElement *KJJDLIST = addElement(BOPCONTENTS, "KJJDLIST", "");
|
|
|
|
|
|
readOneGx(openedContexts[0], partRev, now, KJJDLIST, SONLIST, valueOf);
|
|
|
|
|
|
ITKCALL(BOM_close_window(ebom_window));//BOM_close_window
|
|
|
}
|
|
|
|
|
|
tag_t getPRevision(tag_t rev) {
|
|
|
char *type = NULL;
|
|
|
ITKCALL(WSOM_ask_object_type2(rev, &type));
|
|
|
if (tc_strcmp(type, "Part Revision") == 0) {
|
|
|
char *zt2_ifpbom = NULL;
|
|
|
ITKCALL(AOM_UIF_ask_value(rev, "zt2_ifpbom", &zt2_ifpbom));
|
|
|
if (tc_strcmp(zt2_ifpbom, "P") == 0) {
|
|
|
return rev;
|
|
|
}
|
|
|
tag_t* designs = NULL;
|
|
|
int num = 0;
|
|
|
ITKCALL(AOM_ask_value_tags(rev, "TC_Is_Represented_By", &num, &designs));
|
|
|
if (num > 0) {
|
|
|
char *zt2_MaterialNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
tag_t* matnrs = NULL;
|
|
|
num = 0;
|
|
|
ITKCALL(AOM_ask_value_tags(designs[0], "representation_for", &num, &matnrs));
|
|
|
for (int i = 0; i < num; i++) {
|
|
|
char *zt2_MaterialNo2 = NULL, *zt2_ifpbom2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(matnrs[i], "zt2_MaterialNo", &zt2_MaterialNo2));
|
|
|
ITKCALL(AOM_UIF_ask_value(matnrs[i], "zt2_ifpbom", &zt2_ifpbom2));
|
|
|
if (tc_strcmp(zt2_ifpbom2, "P") == 0 && tc_strcmp(zt2_MaterialNo2, zt2_MaterialNo) == 0) {
|
|
|
tag_t item = NULLTAG, *revisions = NULL;
|
|
|
int count = 0;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(matnrs[i], &item));
|
|
|
ITKCALL(AOM_ask_value_tags(item, "revision_list", &count, &revisions));
|
|
|
for (int j = count - 1; j >= 0; j--) {
|
|
|
if (isTcm2(revisions[j])) {
|
|
|
return revisions[j];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return rev;
|
|
|
}
|
|
|
|
|
|
void getWbsMsg(tag_t pRev, char* groupName, vector<string>& wbsList, TiXmlElement *WBSLIST) {
|
|
|
char *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "zt2_WBSNo", &zt2_WBSNo));
|
|
|
if (!zt2_WBSNo || tc_strlen(zt2_WBSNo) == 0 || find(wbsList.begin(), wbsList.end(), zt2_WBSNo) != wbsList.end()) {
|
|
|
return;
|
|
|
}
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
TiXmlElement *WBSCONTENTS = addElement(WBSLIST, "WBSCONTENTS", "");
|
|
|
addElement(WBSCONTENTS, "WBS", zt2_WBSNo);
|
|
|
addElement(WBSCONTENTS, "PLANT", groupName);
|
|
|
addElement(WBSCONTENTS, "MATERIALNO", zt2_MaterialNo);
|
|
|
|
|
|
wbsList.push_back(zt2_WBSNo);
|
|
|
}
|
|
|
|
|
|
void checkMatnr(string& errMessage, tag_t matnrRev) {
|
|
|
char *os = NULL, *zt2_State = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(matnrRev, "object_string", &os));
|
|
|
ITKCALL(AOM_ask_value_string(matnrRev, "zt2_State", &zt2_State));
|
|
|
if (tc_strcmp(zt2_State, "·â´æ") == 0 || tc_strcmp(zt2_State, "D1") == 0) {
|
|
|
errMessage.append("ÎïÁÏ:").append(os).append("ÒÑ·â´æ,ÎÞ·¨´«µÝSAP\\n");
|
|
|
}
|
|
|
char **zt2_SZFactory = NULL, **zt2_SZProcuretype = NULL, **zt2_SZSealedornot = NULL;
|
|
|
int num1 = 0, num2 = 0, num3 = 0;
|
|
|
ITKCALL(AOM_ask_value_strings(matnrRev, "zt2_SZFactory", &num1, &zt2_SZFactory));
|
|
|
ITKCALL(AOM_ask_value_strings(matnrRev, "zt2_SZProcuretype", &num2, &zt2_SZProcuretype));
|
|
|
ITKCALL(AOM_ask_value_strings(matnrRev, "zt2_SZSealedornot", &num3, &zt2_SZSealedornot));
|
|
|
boolean flag = false;
|
|
|
for (int i = 0; i < num1; i++) {
|
|
|
if (tc_strcmp(zt2_SZFactory[i], "M060") == 0) {
|
|
|
flag = true;
|
|
|
if (num2 > i && tc_strcmp(zt2_SZProcuretype[i], "/") == 0) {
|
|
|
errMessage.append("ÎïÁÏ:").append(os).append(" ²»¿ÉÓÃ,ÎÞ·¨´«µÝSAP\\n");
|
|
|
}
|
|
|
if (num3 > i && tc_strcmp(zt2_SZSealedornot[i], "Y") == 0) {
|
|
|
errMessage.append("ÎïÁÏ:").append(os).append(" ÒÑ·â´æ,ÎÞ·¨´«µÝSAP\\n");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (!flag) {
|
|
|
errMessage.append("ÎïÁÏ:").append(os).append(" ûÓÐά»¤ÎïÁÏÊÓͼ,ÎÞ·¨´«µÝSAP\\n");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void expandAllBomPart(tag_t pRev, tag_t line, TiXmlElement *INTERGRATIONLIST, char* groupName, char* now,
|
|
|
vector<string> wbsList, string& errMsg, map<string, tag_t> gy_meops, const char* batchNum) {
|
|
|
TiXmlElement *WBSLIST = INTERGRATIONLIST->FirstChildElement("WBSLIST");
|
|
|
if (WBSLIST == NULL) {
|
|
|
WBSLIST = addElement(INTERGRATIONLIST, "WBSLIST", "");
|
|
|
}
|
|
|
getWbsMsg(pRev, groupName, wbsList, WBSLIST);
|
|
|
tag_t* tzs = NULL;
|
|
|
int num = 0;
|
|
|
ITKCALL(AOM_ask_value_tags(pRev, "TC_Is_Represented_By", &num, &tzs));
|
|
|
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));
|
|
|
if (c_line_count == 0) {
|
|
|
return;
|
|
|
}
|
|
|
TiXmlElement *WLLIST = INTERGRATIONLIST->FirstChildElement("WLLIST");
|
|
|
if (WLLIST == NULL) {
|
|
|
WLLIST = addElement(INTERGRATIONLIST, "WLLIST", "");
|
|
|
}
|
|
|
TiXmlElement *WLCONTENTS = addElement(WLLIST, "WLCONTENTS", "");
|
|
|
//
|
|
|
char *item_id = NULL, *item_revision_id = NULL, *zt2_MaterialNo = NULL, *zt2_unit = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "item_id", &item_id));
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "item_revision_id", &item_revision_id));
|
|
|
string tcid = "";
|
|
|
tcid.append(item_id).append("/").append(item_revision_id);
|
|
|
addElement(WLCONTENTS, "TCID", tcid.c_str());
|
|
|
//
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
addElement(WLCONTENTS, "WLBM", zt2_MaterialNo);
|
|
|
//
|
|
|
TiXmlElement *BOMCONTENTS = addElement(WLCONTENTS, "BOMCONTENTS", "");
|
|
|
addElement(WLCONTENTS, "WLFILELIST", "");
|
|
|
TiXmlElement *BOPLIST = addElement(WLCONTENTS, "BOPLIST", "");
|
|
|
|
|
|
//if (c_line_count > 0)
|
|
|
addElement(BOMCONTENTS, "PARENTTCID", tcid.c_str());
|
|
|
addElement(BOMCONTENTS, "PARENTWLBM", zt2_MaterialNo);
|
|
|
addElement(BOMCONTENTS, "PLANT", groupName);
|
|
|
addElement(BOMCONTENTS, "DATUV", now);
|
|
|
addElement(BOMCONTENTS, "STLAN", "1");
|
|
|
addElement(BOMCONTENTS, "STLAL", "1");
|
|
|
char *zt2_Quantity = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "zt2_Quantity", &zt2_Quantity));
|
|
|
addElement(BOMCONTENTS, "QUANTITY", zt2_Quantity);
|
|
|
tag_t item;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(pRev, &item));
|
|
|
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
|
|
|
char* unit = getUnti(zt2_unit);
|
|
|
log("str = [%s] \n", unit);
|
|
|
addElement(BOMCONTENTS, "QUIT", zt2_unit);
|
|
|
char* revUid;
|
|
|
ITK__convert_tag_to_uid(pRev, &revUid);
|
|
|
addElement(BOMCONTENTS, "UID", revUid);
|
|
|
addElement(BOMCONTENTS, "BATCHNUMBER", batchNum);
|
|
|
|
|
|
//string maxSeq = "10";
|
|
|
int maxSeq = 0;
|
|
|
TiXmlElement *SONLIST = addElement(BOMCONTENTS, "SONLIST", "");
|
|
|
for (int i = 0; i < c_line_count; i++) {
|
|
|
tag_t c_line_tag = NULLTAG, designRev = NULLTAG;
|
|
|
char* c_line_os = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(c_line_tags[i], "object_string", &c_line_os));
|
|
|
log("c_line_os = [%s]", c_line_os);
|
|
|
//lidy20250217´«µÝ²¿¼þµÄ°æ±¾ÊÇ×îÐÂÒÑ·¢²¼µÄ°æ±¾£¬Èç¹û×îа汾δ·¢²¼µÄ¾Í´«Éϸö·¢²¼µÄ°æ±¾£¬
|
|
|
//Èç¹û×îа汾ÊÇA°æ±¾ÇÒδ·¢²¼£¬¾ÍÖ»´«ËûµÄ×Ô¼º±¾Éí
|
|
|
bool release = true;
|
|
|
tag_t bomRev = NULLTAG, ebom_window = NULLTAG, rev2 = NULLTAG;
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tags[i], "bl_line_object", &bomRev));
|
|
|
if (!isTcm2(bomRev)) {
|
|
|
tag_t bomItem = NULLTAG, *revs = NULLTAG;
|
|
|
int c = 0;
|
|
|
ITKCALL(ITEM_ask_item_of_rev(bomRev, &bomItem));
|
|
|
ITKCALL(ITEM_list_all_revs(bomItem, &c, &revs));
|
|
|
for (int i = c - 1; i >= 0; i--) {
|
|
|
if (isTcm2(revs[i])) {
|
|
|
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, revs[i], NULLTAG, &c_line_tag));
|
|
|
rev2 = revs[i];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (c_line_tag == NULLTAG) {
|
|
|
log("δ·¢²¼");
|
|
|
release = false;
|
|
|
}
|
|
|
}
|
|
|
if (c_line_tag == NULLTAG)
|
|
|
c_line_tag = c_line_tags[i];
|
|
|
|
|
|
char *type2 = NULL;
|
|
|
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &designRev));
|
|
|
ITKCALL(WSOM_ask_object_type2(designRev, &type2));
|
|
|
if (tc_strcmp(type2, "ZT2_XNZJBRevision") == 0) {
|
|
|
|
|
|
}
|
|
|
TiXmlElement *SONCONTENTS = addElement(SONLIST, "SONCONTENTS", "");
|
|
|
tag_t item2 = NULLTAG;
|
|
|
if(rev2 == NULLTAG)
|
|
|
rev2 = getBOMPart(c_line_tag, groupName);
|
|
|
char *item_id2 = NULL, *item_revision_id2 = NULL, *zt2_MaterialNo2 = NULL, *zt2_unit2 = NULL, *bl_sequence_no = NULL, *ZT2_Remark = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(rev2, "item_id", &item_id2));
|
|
|
ITKCALL(AOM_ask_value_string(rev2, "item_revision_id", &item_revision_id2));
|
|
|
ITKCALL(AOM_ask_value_string(rev2, "zt2_MaterialNo", &zt2_MaterialNo2));
|
|
|
ITKCALL(ITEM_ask_item_of_rev(rev2, &item2));
|
|
|
ITKCALL(AOM_ask_value_string(item2, "zt2_unit", &zt2_unit2));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "bl_sequence_no", &bl_sequence_no));
|
|
|
ITKCALL(AOM_UIF_ask_value(c_line_tags[i], "ZT2_Remark", &ZT2_Remark));
|
|
|
checkMatnr(errMsg, rev2);
|
|
|
string tcid2 = "";
|
|
|
tcid2.append(item_id2).append("/").append(item_revision_id2);
|
|
|
addElement(SONCONTENTS, "TCID", tcid2.c_str());
|
|
|
addElement(SONCONTENTS, "WLBM", zt2_MaterialNo2);
|
|
|
addElement(SONCONTENTS, "DATUV", now);
|
|
|
char *menge = NULL;// = getZYSAPMENGE(rev2, NULLTAG, c_line_tag, false, codeRemark, errMsg);
|
|
|
menge = (char*)MEM_alloc((16 + 1) * sizeof(char));
|
|
|
tc_strcpy(menge, getZYSAPMENGE(rev2, NULLTAG, c_line_tags[i], false, "1", errMsg));
|
|
|
char* unit22 = getUnti(zt2_unit2);
|
|
|
addElement(SONCONTENTS, "QUE", menge);
|
|
|
addElement(SONCONTENTS, "QUIT", unit22);
|
|
|
addElement(SONCONTENTS, "SORTF", "");
|
|
|
addElement(SONCONTENTS, "SEQID", bl_sequence_no);
|
|
|
addElement(SONCONTENTS, "POSTP", "L");
|
|
|
addElement(SONCONTENTS, "REMARK", ZT2_Remark);
|
|
|
addElement(SONCONTENTS, "OTHER1", "");
|
|
|
addElement(SONCONTENTS, "OTHER2", "");
|
|
|
if (!bl_sequence_no || tc_strcmp(bl_sequence_no, "") == 0) {
|
|
|
maxSeq += 10;
|
|
|
}
|
|
|
else {
|
|
|
int seq = stoi(bl_sequence_no);
|
|
|
if (seq > maxSeq) {
|
|
|
maxSeq = seq;
|
|
|
}
|
|
|
}
|
|
|
/*if (i == c_line_count - 1) {
|
|
|
maxSeq = to_string(seq);
|
|
|
}*/
|
|
|
if(release)
|
|
|
expandAllBomPart(rev2, c_line_tag, INTERGRATIONLIST, groupName, now, wbsList, errMsg, gy_meops, batchNum);
|
|
|
ITKCALL(BOM_close_window(ebom_window));
|
|
|
}
|
|
|
tag_t meops = getProcessTag(pRev, groupName);
|
|
|
//int valueOf = stoi(maxSeq);
|
|
|
if (pRev != NULLTAG && meops != NULLTAG) {
|
|
|
char *os = NULL, *pos = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(pRev, "object_string", &os));
|
|
|
ITKCALL(AOM_ask_value_string(meops, "object_string", &pos));
|
|
|
log("ÎïÁÏ[%s]¹¤ÒÕÐÅÏ¢:%s", os, pos);
|
|
|
getProcess(meops, pRev, now, groupName, gy_meops, BOPLIST, SONLIST, maxSeq);
|
|
|
}
|
|
|
}
|
|
|
//дÈëBOMÍ·ÐÅÏ¢µ½DETAILS±í
|
|
|
void logXmlMsg(TiXmlElement* interGrationList, char* code, const char* productNos, const char* batchNo, char* wbsNo, char* alterstatus) {
|
|
|
TiXmlElement *WLLIST = interGrationList->FirstChildElement("WLLIST");
|
|
|
for (TiXmlElement *content = WLLIST->FirstChildElement("WLCONTENTS"); content != NULL; content = content->NextSiblingElement("WLCONTENTS")) {
|
|
|
TiXmlElement *BOMCONTENTS = content->FirstChildElement("BOMCONTENTS");
|
|
|
const char *tcId = BOMCONTENTS->FirstChildElement("PARENTTCID")->GetText();
|
|
|
vector<string> ids;
|
|
|
Split(tcId, "/", ids);
|
|
|
const char *parentMantrNo = BOMCONTENTS->FirstChildElement("PARENTWLBM")->GetText();
|
|
|
const char *uid = BOMCONTENTS->FirstChildElement("UID")->GetText();
|
|
|
|
|
|
string insertSql = "insert into CHINT_BOM_TO_SAP_DETIALS (code,batchnumber,plmsendstatus,plmsendstarttime,factory,productmaterialno,pitemid,puid,materialno,wbsno,plmstatus,plmalterstatus) VALUES ('%s','%s','PLM¿ªÊ¼´«µÝ',SYSDATE,'%s','%s','%s','%s','%s','%s','δ´¦Àí','%s') ";
|
|
|
char selectRxfs[3000];
|
|
|
sprintf(selectRxfs, insertSql.c_str(), code, batchNo, "M060", productNos, ids[0].c_str(), uid, parentMantrNo, wbsNo, alterstatus);
|
|
|
log("selectRecord2 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void BomSapWh(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
|
|
|
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName) {
|
|
|
log("************** BomSapWh **************");
|
|
|
lists2.clear();
|
|
|
lists2.push_back("PDF");
|
|
|
lists2.push_back("MS Word");
|
|
|
lists2.push_back("MS WordX");
|
|
|
lists2.push_back("MS Excel");
|
|
|
lists2.push_back("MS ExcelX");
|
|
|
|
|
|
int url_num = 0;
|
|
|
char** rule_vals = NULL;
|
|
|
char alterstatus[2] = "N";
|
|
|
//ÊÇ·ñÐèÒªÐÞ¸Ä״̬
|
|
|
ITKCALL(PREF_ask_char_values("CHINT_BOMTOSAP_STATUS_RULE", &url_num, &rule_vals));
|
|
|
for (int i = 0; i < url_num; i++) {
|
|
|
vector<string> vec;
|
|
|
Split(rule_vals[i], ":", vec);
|
|
|
if (tc_strcmp(vec[0].c_str(), "M060") == 0) {
|
|
|
tc_strcpy(alterstatus, vec[1].c_str());
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
string materialNoTmp = "";
|
|
|
//TiXmlElement *interLogElem = NULL;
|
|
|
vector<TiXmlDocument> interLogList;
|
|
|
string batchNum = code;
|
|
|
batchNum.append("-00001");
|
|
|
|
|
|
for (int len = 0; len < ccpVector.size(); len++) {
|
|
|
tag_t rev = ccpVector[len];
|
|
|
tag_t prev = getPRevision(rev);
|
|
|
char* revUid;
|
|
|
ITK__convert_tag_to_uid(prev, &revUid);
|
|
|
log("PÎïÁÏUID:%s", revUid);
|
|
|
tag_t ebom_window = NULLTAG, line = NULLTAG;
|
|
|
ITKCALL(BOM_create_window(&ebom_window));
|
|
|
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, prev, NULLTAG, &line));
|
|
|
|
|
|
TiXmlDocument XmlDocument;
|
|
|
XmlDocument.Parse("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:chintelectric.com:xi:plm\"><soapenv:Header/><soapenv:Body><urn:MT_MATERIAL_BOP_REQ></urn:MT_MATERIAL_BOP_REQ></soapenv:Body></soapenv:Envelope>");
|
|
|
TiXmlElement* XmlRoot = XmlDocument.RootElement();
|
|
|
TiXmlElement *MT_MATERIAL_BOP_REQ = XmlRoot->FirstChildElement("soapenv:Body")->FirstChildElement();
|
|
|
TiXmlElement *INTERGRATIONLIST = addElement(MT_MATERIAL_BOP_REQ, "INTERGRATIONLIST", "");
|
|
|
|
|
|
vector<string> wbsList;
|
|
|
map<string, tag_t> gy_meops;
|
|
|
string errMsg = "";
|
|
|
expandAllBomPart(prev, line, INTERGRATIONLIST, groupName, now, wbsList, errMsg, gy_meops, batchNum.c_str());
|
|
|
TiXmlPrinter printer;
|
|
|
XmlDocument.Accept(&printer);
|
|
|
string bomlog = "BOMȫdocument===>";
|
|
|
bomlog.append(printer.CStr());
|
|
|
log2(bomlog);
|
|
|
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_MaterialNo = NULL;
|
|
|
ITKCALL(AOM_ask_value_string(prev, "zt2_MaterialNo", &zt2_MaterialNo));
|
|
|
materialNoTmp.append(zt2_MaterialNo).append(";");
|
|
|
logXmlMsg(INTERGRATIONLIST, code, zt2_MaterialNo, batchNum.c_str(), wbs, alterstatus);
|
|
|
errMsg = SendToSap(printer.CStr());
|
|
|
log("SendToSap end");
|
|
|
if (errMsg.length() > 0) {
|
|
|
log("errMsg.length() > 0");
|
|
|
errMsgBuf.append("´«µÝÒì³£:\\n").append(errMsg);
|
|
|
//
|
|
|
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = '´«µÝÒì³£' ,SAPRESULT = '´«µÝÒì³£',PLMRESULT = 'ÒÑ·¢ËÍ·ÉÊé֪ͨ' where code = '%s' ";
|
|
|
char selectRxfs[800];
|
|
|
string timel;
|
|
|
sprintf(selectRxfs, updateSum.c_str(), code);
|
|
|
log("selectRecord3 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
//´íÎóÊý¾ÝÒÑ·¢ËÍ·ÉÊéÌáÐÑ
|
|
|
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
|
|
|
return;
|
|
|
}
|
|
|
//interLogElem = INTERGRATIONLIST;
|
|
|
interLogList.push_back(XmlDocument);
|
|
|
ITKCALL(BOM_close_window(ebom_window));
|
|
|
}
|
|
|
log("2");
|
|
|
//if (interLogElem != NULL) {
|
|
|
/*if (interLogList.size() > 0) {
|
|
|
for (int i = 0; i < interLogList.size(); i++) {
|
|
|
TiXmlElement* XmlRoot = interLogList[i].RootElement();
|
|
|
TiXmlElement *XmlREQ = XmlRoot->FirstChildElement("soapenv:Body")->FirstChildElement();
|
|
|
TiXmlElement *INTERGRATIONLIST = XmlREQ->FirstChildElement("INTERGRATIONLIST");
|
|
|
logXmlMsg(INTERGRATIONLIST, code, materialNoTmp.c_str(), batchNum.c_str(), wbs, alterstatus);
|
|
|
}
|
|
|
}*/
|
|
|
string time1 = getPlmTime(code);
|
|
|
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"NUMBER\" = %d ,datastatus = 'Êý¾ÝÕý³£ÍÆËÍSAP',organizationaltime = '%s',taskstauts = '×éÖ¯Íê³É',PLMFINISHTIME = SYSDATE where code = '%s' ";
|
|
|
char selectRxfs[800];
|
|
|
string timel;
|
|
|
sprintf(selectRxfs, updateSum.c_str(), 1, time1.c_str(), code);
|
|
|
log("selectRecord2 ===> %s\n", selectRxfs);
|
|
|
ExecuteSQLNoInputParam(selectRxfs);
|
|
|
ExecuteSQLNoInputParam((char*)"commit");
|
|
|
|
|
|
} |