西北及武汉(进行中)项目BOM传递改写异步

master
李冬阳 1 year ago
parent 451f390036
commit 49d929c1c2

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -36,12 +36,18 @@
#include "ocilib.h"
#include <tc/preferences.h>
#include <regex>
#include "util.h"
#include <me/me.h>
#include "dfl_custom.h"
#include "CRUL_server_call_httpserver.h"
#include "util.h"
//#include "SendSap.h"
using namespace std;
//
char* getNotNullMsg(char* msg);
void logBomMsg(vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> lists);
void logProcessMsg(vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist);// vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
char* getUnti(char* unti);
struct FlowBean {
vector<tag_t> flowList;
tag_t flow_split = NULLTAG;
@ -53,10 +59,6 @@ struct FlowBean {
boolean isOther = false;
vector<tag_t> flow_combine_list;
};
char* getNotNullMsg(char* msg);
void logBomMsg(vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> lists);
void logProcessMsg(vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist);// vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
char* getUnti(char* unti);
FlowBean getClone(FlowBean oldBean) {
FlowBean newBean;
newBean.isMain = false;
@ -83,7 +85,7 @@ void printfMsg(ns1__DT_USCOREPROCESSROUTE_USCORES4_USCORERSP ns1Rsp, string& sen
msg = U2G(msg);
logMsg.append(returnMsg.MATNR).append("|")
.append(returnMsg.TYPE).append("|").append(msg);
if (strcmp(returnMsg.TYPE, "E") == 0) {
if (tc_strcmp(returnMsg.TYPE, "E") == 0) {
sendMsg.append("\n").append(returnMsg.MATNR).append(": ").append(msg);
}
log(logMsg.c_str());
@ -94,7 +96,7 @@ void printfMsg(ns1__DT_USCOREFACTORY_USCORENUMBER_USCORERSP ns1Rsp) {
//_ns1__DT_USCOREFACTORY_USCORENUMBER_USCORERSP_RSP_USCOREBASEINFO *info = ns1Rsp.RSP_USCOREBASEINFO;
//char* id = info[0].REQ_USCORETRACE_USCOREID;
_ns1__DT_USCOREFACTORY_USCORENUMBER_USCORERSP_ZTABLE_USCORERETURN* returnTable = ns1Rsp.ZTABLE_USCORERETURN;
log("出厂编号RETURN:{}", num);/**/
log("出厂编号RETURN:%d\n", num);/**/
for (int i = 0; i < num; i++) {
_ns1__DT_USCOREFACTORY_USCORENUMBER_USCORERSP_ZTABLE_USCORERETURN returnMsg = returnTable[i];
//System.out.println(z.getSERNR() + "|" + z.getTYPE() + "|" + z.getMESSAGE());
@ -162,8 +164,10 @@ void sendBom(vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> list, string bat
SplitStr(msg, "soap1.1\"", vecMsg);
string lastMsg = vecMsg[1].substr(11);
string str = callHttpserver2(lastMsg);
log("BOM XML MSG:{}", lastMsg);/* xml信息*/
log("return MSG :{}", str);
string logmsg = "BOM XML MSG:";
log2(logmsg.append(lastMsg));/* xml信息*/
logmsg = "return MSG :";
log2(logmsg.append(str));
soap_print_fault(&proxy, stderr);
log("xlt:[%d]", xlt);
//printfMsg(ns1Rsp, sendMsg);
@ -178,7 +182,7 @@ void isMain(FlowBean& bean, vector<tag_t>& mainLines, vector<tag_t>& endLines,
char* idmte;
tag_t gxRev;
ITKCALL(AOM_ask_value_tag(b, "bl_line_object", &gxRev));
AOM_ask_value_string(gxRev, "item_id", &idmte);
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &idmte));
log("=====flowList=====%s====\n", idmte);
}
vector<tag_t> lists2 = bean.flow_combine_list;
@ -328,14 +332,14 @@ void sendFactoryNo(vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_IT
void getFactoryNoList(char* projectNo, char* groupName, char* wbs,
tag_t* factoryNos, int num, tag_t ccp, vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM>& list) {
char* zt2_MaterialNo, *zt2_TankNo, *zt2_Site;
AOM_UIF_ask_value(ccp, "zt2_MaterialNo", &zt2_MaterialNo);
AOM_UIF_ask_value(ccp, "zt2_TankNo", &zt2_TankNo);
AOM_UIF_ask_value(ccp, "zt2_Site", &zt2_Site);
ITKCALL(AOM_UIF_ask_value(ccp, "zt2_MaterialNo", &zt2_MaterialNo));
ITKCALL(AOM_UIF_ask_value(ccp, "zt2_TankNo", &zt2_TankNo));
ITKCALL(AOM_UIF_ask_value(ccp, "zt2_Site", &zt2_Site));
//_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM
for (int i = 0, len = num; i < len; i++) {
tag_t factoryNo = factoryNos[i];
char* itemId;
AOM_ask_value_string(factoryNo, "item_id", &itemId);
ITKCALL(AOM_ask_value_string(factoryNo, "item_id", &itemId));
_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM item_factoryNo;
int index = i + 1;
char fileDate[128] = "";
@ -375,7 +379,8 @@ vector<tag_t> addLastRev(map<tag_t, vector<tag_t>> items2) {
}
return revLast;
}
tag_t getProcessTag(tag_t mantr) {
//
tag_t getProcessTag(tag_t mantr, char* groupName) {
int n_references = 0;
int* levels = 0;
tag_t* references_tag, processTag = NULLTAG;
@ -383,9 +388,20 @@ tag_t getProcessTag(tag_t mantr) {
//通过引用关系查找到变更单
ITKCALL(WSOM_where_referenced(mantr, 1, &n_references, &levels, &references_tag, &relation_type_name));
for (int n = 0; n < n_references; n++) {
log("relation_type_name [%s]\n", relation_type_name[n]);
if (strcmp(relation_type_name[n], "IMAN_METarget") == 0) {
processTag = references_tag[n];
log("relation_type_name===>%s\n", relation_type_name[n]);
if (strcmp(relation_type_name[n], "IMAN_METarget") == 0) {//IMAN_METarget
//
char *os = NULL;
ITKCALL(AOM_ask_value_string(references_tag[n], "object_string", &os));
tag_t group = NULLTAG;
char *gname = NULL;
ITKCALL(AOM_ask_value_tag(references_tag[n], "owning_group", &group));
ITKCALL(AOM_ask_value_string(group, "name", &gname));
log("gname:%s===>%s\n", os, gname);
if (tc_strcmp(gname, groupName) == 0) {
processTag = references_tag[n];
break;
}
}
}
return processTag;
@ -394,7 +410,7 @@ boolean isTcm2(tag_t mantr) {
int releaseCount = 0;
tag_t* releaseTags = NULL;
//判断子件是否发布
AOM_ask_value_tags(mantr, "release_status_list", &releaseCount, &releaseTags);
ITKCALL(AOM_ask_value_tags(mantr, "release_status_list", &releaseCount, &releaseTags));
if (releaseCount > 0) {
return true;
}
@ -409,7 +425,7 @@ vector<tag_t> getFlowStartsYH(int num, tag_t* c_line_tags) {
int sucCnt = 0, preCnt = 0;
ITKCALL(AOM_ask_value_tags(gxLine, "Mfg0successors", &sucCnt, &successors));
AOM_ask_value_tags(gxLine, "Mfg0predecessors", &preCnt, &Mfg0predecessors);
ITKCALL(AOM_ask_value_tags(gxLine, "Mfg0predecessors", &preCnt, &Mfg0predecessors));
log("sucCnt %d preCnt%d \n", sucCnt, preCnt);
if (preCnt == 0 && sucCnt > 0) {
starts.push_back(gxLine);
@ -422,8 +438,8 @@ void readGXFlow(tag_t gxLine, vector<FlowBean>& flowBeans, FlowBean& currentFlow
boolean isMainFlow, boolean top) {
tag_t* successors, *Mfg0predecessors;
int sucCnt = 0, preCnt = 0;
AOM_ask_value_tags(gxLine, "Mfg0successors", &sucCnt, &successors);
AOM_ask_value_tags(gxLine, "Mfg0predecessors", &preCnt, &Mfg0predecessors);
ITKCALL(AOM_ask_value_tags(gxLine, "Mfg0successors", &sucCnt, &successors));
ITKCALL(AOM_ask_value_tags(gxLine, "Mfg0predecessors", &preCnt, &Mfg0predecessors));
currentFlow.flowList.push_back(gxLine);
if (preCnt > 1) {
@ -495,7 +511,7 @@ char* getGXNR(tag_t gxLine) {
return (char*)"";
}
char* bl_sequence_no;
AOM_ask_value_string(gxLine, "bl_sequence_no", &bl_sequence_no);
ITKCALL(AOM_ask_value_string(gxLine, "bl_sequence_no", &bl_sequence_no));
//String seq = gxLine.getProperty("bl_sequence_no");
int seqI = 0;
if (strcmp(bl_sequence_no, "") != 0) {
@ -576,13 +592,13 @@ _ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST_ITEMS_ITEM getGXInfo(FlowBea
_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST_ITEMS_ITEM_SUBITEMS_SUBITEM sub;
char* zt2_WorkCenter, *zt2_ControlCode, *object_name, *zt2_ClassificationCode, *zt2_ArtificialTime, *zt2_MachineTime, *zt2_ReadinessTime;
AOM_ask_value_string(gxRev, "zt2_WorkCenter", &zt2_WorkCenter);
AOM_UIF_ask_value(gxLine, "zt2_ControlCode", &zt2_ControlCode);
AOM_UIF_ask_value(gxRev, "object_name", &object_name);
AOM_UIF_ask_value(gxRev, "zt2_ClassificationCode", &zt2_ClassificationCode);
AOM_UIF_ask_value(gxLine, "zt2_ArtificialTime", &zt2_ArtificialTime);
AOM_UIF_ask_value(gxLine, "zt2_MachineTime", &zt2_MachineTime);
AOM_UIF_ask_value(gxLine, "zt2_ReadinessTime", &zt2_ReadinessTime);
ITKCALL(AOM_ask_value_string(gxRev, "zt2_WorkCenter", &zt2_WorkCenter));
ITKCALL(AOM_UIF_ask_value(gxLine, "zt2_ControlCode", &zt2_ControlCode));
ITKCALL(AOM_UIF_ask_value(gxRev, "object_name", &object_name));
ITKCALL(AOM_UIF_ask_value(gxRev, "zt2_ClassificationCode", &zt2_ClassificationCode));
ITKCALL(AOM_UIF_ask_value(gxLine, "zt2_ArtificialTime", &zt2_ArtificialTime));
ITKCALL(AOM_UIF_ask_value(gxLine, "zt2_MachineTime", &zt2_MachineTime));
ITKCALL(AOM_UIF_ask_value(gxLine, "zt2_ReadinessTime", &zt2_ReadinessTime));
sub.VORNR = getGXNR(gxLine);// 工序
sub.ARBPL = zt2_WorkCenter;// (gxRev.getTCProperty("zt2_WorkCenter").getStringValue());// 工作中心
sub.STEUS = zt2_ControlCode;// (gxLine.getProperty("zt2_ControlCode"));// 控制码
@ -616,8 +632,8 @@ void readBopInfo1YH(tag_t rev, tag_t partRev, boolean flag,
char* groupName, char* now, vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>& proclist) {
//"zt2_MaterialNo", "zt2_WBSNo"
char* zt2_MaterialNo, *zt2_WBSNo;
AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo);
AOM_ask_value_string(partRev, "zt2_WBSNo", &zt2_WBSNo);
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
ITKCALL(AOM_ask_value_string(partRev, "zt2_WBSNo", &zt2_WBSNo));
if (isTcm2(rev) && flag)
return;
if (gy_meops.count(zt2_MaterialNo) > 0)
@ -653,8 +669,8 @@ void readBopInfo1YH(tag_t rev, tag_t partRev, boolean flag,
vector<tag_t> startLines = getFlowStartsYH(c_line_count, c_line_tags);
tag_t part2;
char* zt2_unit2;
ITEM_ask_item_of_rev(partRev, &part2);
AOM_ask_value_string(part2, "zt2_unit", &zt2_unit2);
ITKCALL(ITEM_ask_item_of_rev(partRev, &part2));
ITKCALL(AOM_ask_value_string(part2, "zt2_unit", &zt2_unit2));
char* unit = getUnti(zt2_unit2);
if (startLines.size() > 0) {
char* itemID;
@ -667,7 +683,7 @@ void readBopInfo1YH(tag_t rev, tag_t partRev, boolean flag,
char* idmte;
tag_t gxRev;
ITKCALL(AOM_ask_value_tag(startLines[i], "bl_line_object", &gxRev));
AOM_ask_value_string(gxRev, "item_id", &idmte);
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &idmte));
log("=====idmte=====%s====\n", idmte);
readGXFlow(startLines[i], flowBeans, firstBean, i == 0, true);
for (int i = 0; i < firstBean.flowList.size(); i++) {
@ -675,7 +691,7 @@ void readBopInfo1YH(tag_t rev, tag_t partRev, boolean flag,
char* idmte;
tag_t gxRev;
ITKCALL(AOM_ask_value_tag(b, "bl_line_object", &gxRev));
AOM_ask_value_string(gxRev, "item_id", &idmte);
ITKCALL(AOM_ask_value_string(gxRev, "item_id", &idmte));
log("=====ffirstBean.flowList=====%s====\n", idmte);
}
}// 打印流信息
@ -737,15 +753,15 @@ void recurZYZZSAPYH(tag_t line, tag_t rev, vector<string>& bomISExist,
vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>& proclist) {
char* zt2_Diagram, *item_id, *object_name, *zt2_MaterialNo, *zt2_WBSNo;
//"zt2_Diagram","item_id","object_name","zt2_MaterialNo","zt2_WBSNo"
AOM_ask_value_string(rev, "zt2_Diagram", &zt2_Diagram);
AOM_ask_value_string(rev, "item_id", &item_id);
AOM_ask_value_string(rev, "object_name", &object_name);
AOM_ask_value_string(rev, "zt2_MaterialNo", &zt2_MaterialNo);
AOM_ask_value_string(rev, "zt2_WBSNo", &zt2_WBSNo);
ITKCALL(AOM_ask_value_string(rev, "zt2_Diagram", &zt2_Diagram));
ITKCALL(AOM_ask_value_string(rev, "item_id", &item_id));
ITKCALL(AOM_ask_value_string(rev, "object_name", &object_name));
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialNo", &zt2_MaterialNo));
ITKCALL(AOM_ask_value_string(rev, "zt2_WBSNo", &zt2_WBSNo));
string x = zt2_MaterialNo;
log("item_id = [%s] \n", item_id);
if (x.rfind("99", 0) == 0) {
tag_t meops = getProcessTag(rev);
tag_t meops = getProcessTag(rev, groupName);
if (meops != NULLTAG) {
if (!isTcm2(meops)) {
set_meops.push_back(meops);
@ -772,8 +788,8 @@ void recurZYZZSAPYH(tag_t line, tag_t rev, vector<string>& bomISExist,
}
tag_t item;
char* zt2_unit;
ITEM_ask_item_of_rev(rev, &item);
AOM_ask_value_string(item, "zt2_unit", &zt2_unit);
ITKCALL(ITEM_ask_item_of_rev(rev, &item));
ITKCALL(AOM_ask_value_string(item, "zt2_unit", &zt2_unit));
char* unit = getUnti(zt2_unit);
log("str = [%s] \n", unit);
head.PSPNR = zt2_WBSNo;
@ -798,14 +814,14 @@ void recurZYZZSAPYH(tag_t line, tag_t rev, vector<string>& bomISExist,
tag_t c_line_tag = c_line_tags[i], rev2;
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &rev2));
char* prop0, *prop1, *prop2, *prop3, *prop4, *zt2_unit2;
AOM_ask_value_string(rev2, "zt2_Diagram", &prop0);
AOM_ask_value_string(rev2, "item_id", &prop1);
AOM_ask_value_string(rev2, "object_name", &prop2);
AOM_ask_value_string(rev2, "zt2_SapState", &prop3);
AOM_ask_value_string(rev2, "zt2_MaterialNo", &prop4);
ITKCALL(AOM_ask_value_string(rev2, "zt2_Diagram", &prop0));
ITKCALL(AOM_ask_value_string(rev2, "item_id", &prop1));
ITKCALL(AOM_ask_value_string(rev2, "object_name", &prop2));
ITKCALL(AOM_ask_value_string(rev2, "zt2_SapState", &prop3));
ITKCALL(AOM_ask_value_string(rev2, "zt2_MaterialNo", &prop4));
tag_t part2;
ITEM_ask_item_of_rev(rev2, &part2);
AOM_ask_value_string(part2, "zt2_unit", &zt2_unit2);
ITKCALL(ITEM_ask_item_of_rev(rev2, &part2));
ITKCALL(AOM_ask_value_string(part2, "zt2_unit", &zt2_unit2));
char* unit22 = getUnti(zt2_unit2);
items_item.IDNRK = prop4;
char* unit = unit22;
@ -814,10 +830,10 @@ void recurZYZZSAPYH(tag_t line, tag_t rev, vector<string>& bomISExist,
items_item.POSTP = (char*)"L";
char* bl_sequence_no, *bl_quantity, *ZT2_ClassificationNo, *ZT2_Remark;
//"bl_sequence_no", "bl_quantity", "ZT2_ClassificationNo", "ZT2_Remark"
AOM_ask_value_string(c_line_tag, "bl_sequence_no", &bl_sequence_no);
AOM_ask_value_string(c_line_tag, "bl_quantity", &bl_quantity);
AOM_ask_value_string(c_line_tag, "ZT2_ClassificationNo", &ZT2_ClassificationNo);
AOM_ask_value_string(c_line_tag, "ZT2_Remark", &ZT2_Remark);
ITKCALL(AOM_ask_value_string(c_line_tag, "bl_sequence_no", &bl_sequence_no));
ITKCALL(AOM_ask_value_string(c_line_tag, "bl_quantity", &bl_quantity));
ITKCALL(AOM_ask_value_string(c_line_tag, "ZT2_ClassificationNo", &ZT2_ClassificationNo));
ITKCALL(AOM_ask_value_string(c_line_tag, "ZT2_Remark", &ZT2_Remark));
items_item.POSNR = bl_sequence_no;
//string sss = bl_quantity;//line2.getProperty("bl_quantity");
log("bl_quantity ===== %s\n", bl_quantity);
@ -1086,11 +1102,11 @@ void readBomInfoYH(tag_t ccp, vector<tag_t> schemes,
ITK__convert_tag_to_uid(ccp, &parnetUid);
head.STKTX = parnetUid;
tag_t meops = getProcessTag(ccp); //c产成品工艺
tag_t meops = getProcessTag(ccp, groupName); //c产成品工艺
if (meops != NULLTAG) {
char* itemId;
AOM_ask_value_string(meops, "item_id", &itemId);
ITKCALL(AOM_ask_value_string(meops, "item_id", &itemId));
log("processId %s \n", itemId);
readBopInfo1YH(meops, ccp, true, gy_meops, needTCM_meops, groupName, now, proclist);
}
@ -1098,12 +1114,12 @@ void readBomInfoYH(tag_t ccp, vector<tag_t> schemes,
vector<string> vecc;
tag_t item, lastRev = NULLTAG;
split(zt2_MaterialNo, "-", &vecc);
ITEM_find_item(vecc[0].c_str(), &item);
ITEM_ask_latest_rev(item, &lastRev);
ITKCALL(ITEM_find_item(vecc[0].c_str(), &item));
ITKCALL(ITEM_ask_latest_rev(item, &lastRev));
//log("vecc[0].c_str()%s\n", vecc[0].c_str());
if (lastRev != NULLTAG) {
log("1");
tag_t meops2 = getProcessTag(lastRev);
tag_t meops2 = getProcessTag(lastRev, groupName);
readBopInfo1YH(meops2, ccp, false, gy_meops, needTCM_meops, groupName, now, proclist);
}
}
@ -1112,8 +1128,8 @@ void readBomInfoYH(tag_t ccp, vector<tag_t> schemes,
for (int i = 0; i < schemes.size(); i++) {
tag_t rev2 = schemes[i];
char* prop1, *propp2;
AOM_ask_value_string(rev2, "zt2_MaterialNo", &prop1);
AOM_ask_value_string(rev2, "object_name", &propp2);
ITKCALL(AOM_ask_value_string(rev2, "zt2_MaterialNo", &prop1));
ITKCALL(AOM_ask_value_string(rev2, "object_name", &propp2));
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM items_item;
char* flm = getFLMDb2(prop1, groupName, flmMap);
items_item.SORTF = flm;
@ -1131,8 +1147,8 @@ void readBomInfoYH(tag_t ccp, vector<tag_t> schemes,
}
char* zt2_unit22;
tag_t part22;
ITEM_ask_item_of_rev(rev2, &part22);
AOM_ask_value_string(part22, "zt2_unit", &zt2_unit22);
ITKCALL(ITEM_ask_item_of_rev(rev2, &part22));
ITKCALL(AOM_ask_value_string(part22, "zt2_unit", &zt2_unit22));
char* unit22 = getUnti(zt2_unit22);
items_item.MEINS = unit22;
items_items[i] = items_item;
@ -1187,7 +1203,7 @@ void logCcbh(vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM> li
msg.append("ZPSPID = ").append(getNotNullMsg(list_Factory.ZPSPID)).append(" ");
msg.append("ZZD = ").append(getNotNullMsg(list_Factory.ZZD)).append("\n");
}
log(" 出厂编号信息:\n {} \n\n", msg);
log(" 出厂编号信息:%s\n", msg.c_str());
}
/**
* 线
@ -1241,7 +1257,9 @@ void logProcessMsg(vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>
}
msg.append("]\n");
}
log(" 开始记录PROCESS信息====> \n {} \n\n", msg);
string logmsg = " 开始记录PROCESS信息====>";
//log(" 开始记录PROCESS信息====>%s", msg.c_str());
log2(logmsg.append(msg));
}
/**
* BOM
@ -1275,7 +1293,9 @@ void logBomMsg(vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> lists) {
}
msg.append("]\n");
}
log(" 开始记录BOM信息====> \n {} \n\n", msg);
string logmsg = " 开始记录BOM信息====>";
//log(" 开始记录BOM信息====>%s", msg.c_str());
log2(logmsg.append(msg));
}
/**
* DETAILS
@ -1287,13 +1307,18 @@ void logBomMsg(vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> lists) {
*/
void logBatabase(_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg,
map<string, string> &isExistTag, map<string, vector<string>> ccpTagMap,
char *code, string batchNum, char *groupId, char*wbsNo) {
char* topUid = bomMsg.HEAD.STKTX, *itemId, *topMatnrNo;
char *code, string batchNum, char *groupId, char*wbsNo, char* alterstatus) {
log("logBatabase===0");
char topUid[32] = "", *itemId = NULL, *topMatnrNo = NULL;
string materialNoTmp = "";
tc_strcpy(topUid, bomMsg.HEAD.STKTX);
log("topUid===%s", topUid);
if (ccpTagMap.count(topUid) == 0) {
log("logBatabase===1");
materialNoTmp = bomMsg.HEAD.MATNR;
}
else {
log("logBatabase===2");
vector<string> ccps = ccpTagMap[topUid];
for (int i = 0; i < ccps.size(); i++) {
if (i > 0) {
@ -1305,20 +1330,40 @@ void logBatabase(_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg,
}
}
if (isExistTag.count(topUid) == 0) {
log("logBatabase===3");
//插入详情数据表
tag_t topTag;
tag_t topTag = NULLTAG, partTag = NULLTAG;
ITK__convert_uid_to_tag(topUid, &topTag);
AOM_ask_value_string(topTag, "item_id", &itemId);
AOM_ask_value_string(topTag, "zt2_MaterialNo", &topMatnrNo);
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(topTag, &type));
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0) {
int num = 0;
tag_t *comps = NULL;
ITKCALL(AOM_ask_value_tags(topTag, "representation_for", &num, &comps));
for (int i = 0; i < num; i++) {
char *type2 = NULL;
ITKCALL(WSOM_ask_object_type2(comps[i], &type2));
if (tc_strcmp(type2, "Part Revision") == 0) {
partTag = comps[i];
break;
}
}
}
else {
ITK__convert_uid_to_tag(topUid, &partTag);
}
ITKCALL(AOM_ask_value_string(topTag, "item_id", &itemId));
ITKCALL(AOM_ask_value_string(partTag, "zt2_MaterialNo", &topMatnrNo));
isExistTag[topUid] = materialNoTmp.c_str();
string insertSql = "insert into CHINT_BOM_TO_SAP_DETIALS (code,batchnumber,plmsendstatus,plmsendstarttime,factory,productmaterialno,pitemid,puid,materialno,wbsno,plmstatus) VALUES ('%s','%s','PLM开始传递',SYSDATE,'%s','%s','%s','%s','%s','%s','未处理') ";
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, batchNum.c_str(), groupId, materialNoTmp.c_str(), itemId, topUid, topMatnrNo, wbsNo);
sprintf(selectRxfs, insertSql.c_str(), code, batchNum.c_str(), groupId, materialNoTmp.c_str(), itemId, topUid, bomMsg.HEAD.MATNR, wbsNo, alterstatus);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
}
else {
log("logBatabase===4");
string updateSql = "update CHINT_BOM_TO_SAP_DETIALS set productmaterialno = '%s' where batchnumber = '%s'";
char selectRxfs[3000];
sprintf(selectRxfs, updateSql.c_str(), materialNoTmp.c_str(), batchNum.c_str());
@ -1326,7 +1371,7 @@ void logBatabase(_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg,
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
}
log("=========");
log("logBatabase===5");
return;
}
/**
@ -1362,7 +1407,7 @@ void startSplitSend(char*groupId,
int url_num = 0;
char** url_vals = NULL;
//首选项配置组对应的拆分方法
PREF_ask_char_values("CHINT_SAPBOM_SPLIT", &url_num, &url_vals);
ITKCALL(PREF_ask_char_values("CHINT_SAPBOM_SPLIT", &url_num, &url_vals));
int cfNum = 1; // 拆分传递的数量
int type = 0; //0产成品维度 1 BOM
for (int j = 0; j < url_num; j++) {
@ -1377,7 +1422,20 @@ void startSplitSend(char*groupId,
}
}
}
log("====url_vals===={} {} \n", cfNum, mapList.size());
log("====url_vals====%d %zd\n", cfNum, mapList.size());
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(), groupId) == 0) {
tc_strcpy(alterstatus, vec[1].c_str());
break;
}
}
int batchNum = 1;
int numberCnt = 0;
map<string, string> ccpMap;
@ -1415,7 +1473,7 @@ void startSplitSend(char*groupId,
for (int i = 0; i < list.size(); i++) {
log("i.size() ===> %d \n", i);
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg = list[i];
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo);
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo, alterstatus);
}
log(" start SEND ===\n");
sendBom(list, batchMsg);
@ -1433,7 +1491,7 @@ void startSplitSend(char*groupId,
for (int i = 0; i < list.size(); i++) {
log("i.size() ===> %d \n", i);
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg = list[i];
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo);
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo, alterstatus);
//log("i.size() ===> %d \n", i);
}
log(" start SEND ===");
@ -1462,7 +1520,7 @@ void startSplitSend(char*groupId,
batchMsg.append(code).append("-").append(numMsg);
for (int i = 0; i < list.size(); i++) {
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg = list[i];
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo);
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo, alterstatus);
}
sendBom(list, batchMsg);
batchNum = batchNum + 1;
@ -1477,7 +1535,7 @@ void startSplitSend(char*groupId,
batchMsg.append(code).append("-").append(numMsg);
for (int i = 0; i < list.size(); i++) {
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST bomMsg = list[i];
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo);
logBatabase(bomMsg, ccpMap, inCcpMap, code, batchMsg, groupId, wbsNo, alterstatus);
}
sendBom(list, batchMsg);
batchNum = batchNum + 1;
@ -1565,6 +1623,7 @@ void sendNotice(char *code, string errMsg, char *wbsNo, char *userName, char* pr
*/
void getCcpAndBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName) {
log("************** getCcpAndBom **************");
//记录是否有重复的出厂编号
vector<tag_t> isCheck_FactoryNos;
//记录产成品 对应的 电气BOM集合
@ -1610,22 +1669,22 @@ void getCcpAndBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, cha
{
char* refType, *grpName, *useUid, *object_name, *zt2_SapState;
tag_t refTag = references_tag[i], group, item;
AOM_ask_value_string(refTag, "object_type", &refType);
ITKCALL(AOM_ask_value_string(refTag, "object_type", &refType));
if (strcmp(refType, "Part Revision") != 0) {
continue;
}
ITK__convert_tag_to_uid(refTag, &useUid);
//判断不是产成品 并且同一组
AOM_ask_value_tag(refTag, "owning_group", &group);
AOM_ask_value_string(group, "name", &grpName);
ITKCALL(AOM_ask_value_tag(refTag, "owning_group", &group));
ITKCALL(AOM_ask_value_string(group, "name", &grpName));
if (strcmp(grpName, groupName) != 0 || strcmp(ccpUid, useUid) == 0)
continue;
AOM_UIF_ask_value(refTag, "object_name", &object_name);
AOM_UIF_ask_value(refTag, "zt2_SapState", &zt2_SapState);
ITKCALL(AOM_UIF_ask_value(refTag, "object_name", &object_name));
ITKCALL(AOM_UIF_ask_value(refTag, "zt2_SapState", &zt2_SapState));
if (strcmp(zt2_SapState, "1") == 0 || strcmp(zt2_SapState, "未传") == 0) {
continue;
}
ITEM_ask_item_of_rev(refTag, &item);
ITKCALL(ITEM_ask_item_of_rev(refTag, &item));
char* unitUid;
ITK__convert_tag_to_uid(item, &unitUid);
if (strcmp(unitUid, ccpItemUid) == 0) {
@ -1648,7 +1707,7 @@ void getCcpAndBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, cha
}
}
//传递出厂编号的记录日志信息
log("出厂编号数量 num :{} \n\n\n", list_Factorys.size());
log("出厂编号数量 num :%zd\n", list_Factorys.size());
logCcbh(list_Factorys);
sendFactoryNo(list_Factorys);
@ -1667,10 +1726,10 @@ void getCcpAndBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, cha
for (it = cPart_schemes.begin(); it != cPart_schemes.end(); it++) {
tag_t s = it->first;
vector<tag_t> vectorRev = cPart_schemes[s];
log("vectorRev size 遍历BOM {} \n", vectorRev.size());
log("vectorRev size 遍历BOM %zd\n", vectorRev.size());
readSchemesYH(vectorRev, s, scheme_boms, bomISExist, rev_meops, groupName, now, errMess,
material_revs, gy_meops, needTCM_meops, process_boms, transfer, inCcpMap);
log("scheme_boms {} \n", scheme_boms.size());
log("scheme_boms %zd\n", scheme_boms.size());
}
if (errMess.length() > 0) {
errMsgBuf.append("BOM异常:\\n").append(errMess);
@ -1774,58 +1833,3 @@ void getCcpAndBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, cha
// set_default_logger(file_logger);
// log("begin connor_import_object");
//}
/**
* BOM
* @param ccpVector
* @param groupName
* @param projectUid UID
* @param code code
* @param userName ID
*/
int readBomMsg(vector<tag_t> ccpVector, char * groupName, char* projectUid, char*code, char *userName) {
char* revUid;
int ifail = ITK_ok, num = 0;
//startLog();
//链接TC数据库
string errorBuff;
tag_t project;
time_t now = time(0);
tm* p = localtime(&now);
char fileDate[128] = "";
sprintf_s(fileDate, "%04d%02d%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday);
string nowTime = fileDate;
tag_t ccp;
ITK__convert_uid_to_tag(projectUid, &project);
char* projectNo, *zt2_WBSNo, *objectName;
//project.getProperty("zt2_ProjectNo");
AOM_ask_value_string(project, "zt2_ProjectNo", &projectNo);
AOM_ask_value_string(project, "object_name", &objectName);
AOM_ask_value_string(project, "zt2_WBSNo", &zt2_WBSNo);
log("ccpVector%d\n", ccpVector.size());
//查询传递类型
char* transfer = (char*)"电气设计";
string sql = "select transfer from CHINT_BOM_TO_SAP_SUM where code = ";
sql.append(code);
int outputColumn1 = 0, outputValueCount1 = 0;
char*** outputValue1 = NULL;
log("search3 ===> :{}\n", sql.c_str());
QuerySQLNoInputParam((char*)sql.c_str(), &outputColumn1, &outputValueCount1, &outputValue1);
if (outputValueCount1 > 0) {
transfer = outputValue1[0][0];
}
log("transfer ===> :{}\n", transfer);
getCcpAndBom(ccpVector, projectNo, groupName, zt2_WBSNo
, fileDate, errorBuff, code, transfer, userName, objectName);
/*log("errorBuff ===>%s\n", errorBuff.c_str());
*((char**)returnValue) = (char*)MEM_alloc((strlen(errorBuff.c_str()) + 1) * sizeof(char));
tc_strcpy(*((char**)returnValue), errorBuff.c_str());*/
log("end connor_import_object");
//spdlog::drop_all();
return ITK_ok;
}

@ -0,0 +1,319 @@
#include "tinyxml/tinyxml.h"
#include "CRUL_server_call_httpserver.h"
#include "SendSap.h"
void sendSAP(char* url, char* data) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
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, data);
res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
}
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(ITEM_ask_rev_id2(rev, &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));
vector<string> lists2;
lists2.push_back("PDF");
lists2.push_back("MS Word");
lists2.push_back("MS WordX");
lists2.push_back("MS Excel");
lists2.push_back("MS ExcelX");
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));
ITKCALL(POM_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 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;
}
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 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 *XmlINTERGRATIONLIST, char* groupName, char* now, vector<string> wbsList, string& errMsg, map<string, tag_t> gy_meops) {
TiXmlElement *WBSLIST = XmlINTERGRATIONLIST->FirstChildElement("WBSLIST");
if (WBSLIST == NULL) {
WBSLIST = addElement(XmlINTERGRATIONLIST, "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 = XmlINTERGRATIONLIST->FirstChildElement("WLLIST");
if (WLLIST == NULL) {
WLLIST = addElement(XmlINTERGRATIONLIST, "WLLIST", "");
}
TiXmlElement *WLCONTENTS = addElement(WLLIST, "WLCONTENTS", "");
//
char *item_id = NULL, *item_revision_id = NULL, *zt2_MaterialNo = NULL, *zt2_unit = NULL;
ITKCALL(ITEM_ask_rev_id2(pRev, &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", "");
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);
string maxSeq = "10";
TiXmlElement *SONLIST = addElement(BOMCONTENTS, "SONLIST", "");
for (int i = 0; i < c_line_count; i++) {
tag_t c_line_tag = c_line_tags[i], designRev = NULLTAG;
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 rev2 = getBOMPart(c_line_tag, groupName), item2;
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_tag, "bl_sequence_no", &bl_sequence_no));
ITKCALL(AOM_UIF_ask_value(c_line_tag, "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_tag, 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 (i == c_line_count - 1) {
maxSeq = bl_sequence_no;
}
expandAllBomPart(rev2, c_line_tag, XmlINTERGRATIONLIST, groupName, now, wbsList, errMsg, gy_meops);
}
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);
TiXmlElement *BOPLIST = addElement(WLCONTENTS, "BOPLIST", "");
getProcess(meops, pRev, now, groupName, gy_meops, BOPLIST, SONLIST, valueOf);
}
}
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 **************");
for (int len = 0; len < ccpVector.size(); len++) {
tag_t rev = ccpVector[len];
tag_t prev = getPRevision(rev);
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 *XmlREQ = XmlRoot->FirstChildElement("Body")->FirstChildElement();
TiXmlElement *XmlINTERGRATIONLIST = new TiXmlElement("XmlINTERGRATIONLIST");
XmlREQ->LinkEndChild(XmlINTERGRATIONLIST);
vector<string> wbsList;
map<string, tag_t> gy_meops;
string errMsg = "";
expandAllBomPart(prev, line, XmlINTERGRATIONLIST, groupName, now, wbsList, errMsg, gy_meops);
}
}

@ -167,6 +167,7 @@
<ItemGroup>
<ClCompile Include="ado.cxx" />
<ClCompile Include="AutoFeeding.cpp" />
<ClCompile Include="BomSapWh.cxx" />
<ClCompile Include="BOMSendSap.cpp" />
<ClCompile Include="createProcessTmp.cpp" />
<ClCompile Include="CRUL_server_call_httpserver.cpp" />
@ -174,11 +175,17 @@
<ClCompile Include="GetBOMProp.cpp" />
<ClCompile Include="ocilib.cpp" />
<ClCompile Include="readBomMsg.cpp" />
<ClCompile Include="SAPZYGG2.cxx" />
<ClCompile Include="SAPZZNewOp.cxx" />
<ClCompile Include="soapC.cpp" />
<ClCompile Include="soapSIO_USCOREBOM_USCOREPLM_USCOREASYNBindingProxy.cpp" />
<ClCompile Include="soapSI_USCOREFACTORY_USCORENUMBER_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.cpp" />
<ClCompile Include="soapSI_USCOREPROCESSROUTE_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.cpp" />
<ClCompile Include="stdsoap2.cpp" />
<ClCompile Include="tinyxml\tinystr.cpp" />
<ClCompile Include="tinyxml\tinyxml.cpp" />
<ClCompile Include="tinyxml\tinyxmlerror.cpp" />
<ClCompile Include="tinyxml\tinyxmlparser.cpp" />
<ClCompile Include="util.cpp" />
</ItemGroup>
<ItemGroup>
@ -224,12 +231,15 @@
<ClInclude Include="rapidjson\stringbuffer.h" />
<ClInclude Include="rapidjson\uri.h" />
<ClInclude Include="rapidjson\writer.h" />
<ClInclude Include="SendSap.h" />
<ClInclude Include="soapH.h" />
<ClInclude Include="soapSIO_USCOREBOM_USCOREPLM_USCOREASYNBindingProxy.h" />
<ClInclude Include="soapSI_USCOREFACTORY_USCORENUMBER_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.h" />
<ClInclude Include="soapSI_USCOREPROCESSROUTE_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.h" />
<ClInclude Include="soapStub.h" />
<ClInclude Include="stdsoap2.h" />
<ClInclude Include="tinyxml\tinystr.h" />
<ClInclude Include="tinyxml\tinyxml.h" />
<ClInclude Include="util.h" />
</ItemGroup>
<ItemGroup>

@ -16,6 +16,9 @@
<Filter Include="webservice">
<UniqueIdentifier>{9e65382d-9aa6-4ad3-838e-793ff9f1a7a4}</UniqueIdentifier>
</Filter>
<Filter Include="tinyxml">
<UniqueIdentifier>{45cfac24-b5fa-4037-af01-39a7548bcf71}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="GetBOMProp.cpp">
@ -63,6 +66,27 @@
<ClCompile Include="stdsoap2.cpp">
<Filter>webservice</Filter>
</ClCompile>
<ClCompile Include="SAPZYGG2.cxx">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="SAPZZNewOp.cxx">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="BomSapWh.cxx">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="tinyxml\tinystr.cpp">
<Filter>tinyxml</Filter>
</ClCompile>
<ClCompile Include="tinyxml\tinyxml.cpp">
<Filter>tinyxml</Filter>
</ClCompile>
<ClCompile Include="tinyxml\tinyxmlerror.cpp">
<Filter>tinyxml</Filter>
</ClCompile>
<ClCompile Include="tinyxml\tinyxmlparser.cpp">
<Filter>tinyxml</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="dfl_custom.h">
@ -212,6 +236,15 @@
<ClInclude Include="stdsoap2.h">
<Filter>webservice</Filter>
</ClInclude>
<ClInclude Include="SendSap.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="tinyxml\tinystr.h">
<Filter>tinyxml</Filter>
</ClInclude>
<ClInclude Include="tinyxml\tinyxml.h">
<Filter>tinyxml</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="SIO_USCOREBOM_USCOREPLM_USCOREASYNBinding.nsmap">

@ -21,7 +21,9 @@
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "ocilib.h"
#include "SAPZYGG2.h"
#include "util.h"
//#include "SendSap.h"
using namespace spdlog;
#define PREF_ML_DB "Meling_dbinfo"
using namespace std;
@ -71,6 +73,101 @@ string uploadMinio(string jarName, string logPath) {
//return;
}
/**
* BOM
* @param ccpVector
* @param groupName
* @param projectUid UID
* @param code code
* @param userName ID
*/
int readBomMsg(vector<tag_t> ccpVector, char * groupName, char* projectUid, char*code, char *userName) {
char* revUid;
int ifail = ITK_ok, num = 0;
//startLog();
//链接TC数据库
string errorBuff;
tag_t project;
time_t now = time(0);
tm* p = localtime(&now);
char fileDate[128] = "";
sprintf_s(fileDate, "%04d%02d%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday);
string nowTime = fileDate;
tag_t ccp;
ITK__convert_uid_to_tag(projectUid, &project);
char* projectNo, *zt2_WBSNo, *objectName;
//project.getProperty("zt2_ProjectNo");
ITKCALL(AOM_ask_value_string(project, "zt2_ProjectNo", &projectNo));
ITKCALL(AOM_ask_value_string(project, "object_name", &objectName));
ITKCALL(AOM_ask_value_string(project, "zt2_WBSNo", &zt2_WBSNo));
log("ccpVector%d\n", ccpVector.size());
//查询传递类型
char* transfer = (char*)"电气设计";
string sql = "select transfer from CHINT_BOM_TO_SAP_SUM where code = ";
sql.append(code);
int outputColumn1 = 0, outputValueCount1 = 0;
char*** outputValue1 = NULL;
log("search3 ===> :%s\n", sql.c_str());
QuerySQLNoInputParam((char*)sql.c_str(), &outputColumn1, &outputValueCount1, &outputValue1);
if (outputValueCount1 > 0) {
transfer = outputValue1[0][0];
}
log("transfer ===> :%s\n", transfer);
int pref_cnt = 0;
char **pref = NULL;
ITKCALL(PREF_ask_char_values("CHINT_TYBOMTOSAP", &pref_cnt, &pref));
string fa = "";
for (int i = 0; i < pref_cnt; i++) {
vector<string> v1, v2;
Split(pref[i], ":", v1);
Split(v1[1], ";", v2);
for (int j = 0; j < v2.size(); j++) {
if (tc_strcmp(v2[j].c_str(), groupName) == 0) {
fa = v1[0];
break;
}
}
if (fa.size() > 0)
break;
}
log("fa ===>%s\n", fa.c_str());
if (tc_strcmp(fa.c_str(), "C") == 0) {
SAPZZNewOp(ccpVector, projectNo, groupName, zt2_WBSNo,
fileDate, errorBuff, code, transfer, userName, (char*)fa.c_str());
}
else if (tc_strcmp(transfer, "壳体方案传递") == 0) {
getKTBom(ccpVector, projectNo, groupName, zt2_WBSNo,
fileDate, errorBuff, code, transfer, userName, objectName);
}
else if (tc_strcmp(transfer, "产成品BOM传递") == 0 && tc_strcmp(fa.c_str(), "D") == 0) {
SAPZYGG2(ccpVector, projectNo, groupName, zt2_WBSNo,
fileDate, errorBuff, code, transfer, userName, objectName);
}
else if (tc_strcmp(transfer, "产成品BOM传递") == 0 && tc_strcmp(fa.c_str(), "B") == 0) {
SAPZYGG2(ccpVector, projectNo, groupName, zt2_WBSNo,
fileDate, errorBuff, code, transfer, userName, objectName);
}
else if (tc_strcmp(transfer, "产成品BOM传递") == 0 && tc_strcmp(fa.c_str(), "E") == 0) {
SAPZZNewOp(ccpVector, projectNo, groupName, zt2_WBSNo,
fileDate, errorBuff, code, transfer, userName, (char*)fa.c_str());
}
else {
getCcpAndBom(ccpVector, projectNo, groupName, zt2_WBSNo,
fileDate, errorBuff, code, transfer, userName, objectName);
}
/*log("errorBuff ===>%s\n", errorBuff.c_str());
*((char**)returnValue) = (char*)MEM_alloc((strlen(errorBuff.c_str()) + 1) * sizeof(char));
tc_strcpy(*((char**)returnValue), errorBuff.c_str());*/
log("end connor_import_object");
//spdlog::drop_all();
return ITK_ok;
}
int ITK_user_main(int argc, char* argv[])
{
int ifail = ITK_ok;
@ -104,7 +201,7 @@ int ITK_user_main(int argc, char* argv[])
}
int url_num = 0;
char** url_vals = NULL;
PREF_ask_char_values("database_tc", &url_num, &url_vals);
ITKCALL(PREF_ask_char_values("database_tc", &url_num, &url_vals));
string url = url_vals[0];
url.append("/").append(url_vals[2]);

@ -0,0 +1,975 @@
//#include <string>
//#include <tc\tc_macros.h>
//#include <bom/bom.h>
#include "SendSap.h"
boolean vecContains(vector<string> vec, string str) {
for (int i = 0; i < vec.size(); i++) {
if (tc_strcmp(vec[i].c_str(), str.c_str()) == 0) {
return true;
}
}
return false;
}
int getIcsId(char* codeRemark, char* property) {
tag_t ico = NULLTAG, *attributeList = NULL;
int cnt = 0, *attrIDs;
ITKCALL(ICS_class_ask_attributes(codeRemark, &cnt, &attributeList, &attrIDs));
for (int i = 0; i < cnt; i++) {
char *unctName = NULL, *shortName = NULL, *unctUnit = NULL;
int unctFormat = 0;
ITKCALL(ICS_describe_unct(attrIDs[i], &unctName, &shortName, &unctUnit, &unctFormat));
if (tc_strcmp(unctName, property) == 0) {
return attrIDs[i];
}
}
return -1;
}
/*
*
* SAPUtil.getICSComp(String codeRemark, int icsId, String value, TCSession session)
*/
tag_t getICSComp(char* codeRemark, int unct, char* query) {
if (unct == -1) {
return NULLTAG;
}
tag_t ico = NULLTAG, *results = NULL;
string qstr = "=";
qstr.append(query);
char* queries = (char*)qstr.c_str();
int cnt = 0;
ITKCALL(ICS_find_class(codeRemark, &ico));
ITKCALL(ICS_search_instances(ico, NULLTAG, 1, &unct, &queries, &cnt, &results));
printf("ICS_search_instances:%d\n", cnt);
if (cnt > 0) {
tag_t wso = NULLTAG;
ITKCALL(ICS_ask_classified_wsobject(results[0], &wso));
return wso;
}
return NULLTAG;
}
/*
*
* SAPUtil.getClassPart
*/
tag_t getClassPart(tag_t rev, char* codeRemark, int unct, map<string, tag_t>& by_materials) {
char* zt2_MaterialMark = NULL;
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialMark", &zt2_MaterialMark));
if (!zt2_MaterialMark || tc_strlen(zt2_MaterialMark) == 0) {
return NULLTAG;
}
if (by_materials.count(zt2_MaterialMark) > 0) {
tag_t comp = by_materials[zt2_MaterialMark];
if (comp == NULLTAG) {
tag_t *contexts2 = NULL;
int num = 0;
ITKCALL(AOM_ask_value_tags(rev, "ZT2_Material", &num, &contexts2));
if (num > 0)
return contexts2[0];
log("查询不到[材料标记]为[%s]的原材料\n", zt2_MaterialMark);
return NULLTAG;
}
return by_materials[zt2_MaterialMark];
}
else {
tag_t comp = getICSComp(codeRemark, unct, zt2_MaterialMark);
if (comp == NULLTAG) {
tag_t *contexts2 = NULL;
int num = 0;
ITKCALL(AOM_ask_value_tags(rev, "ZT2_Material", &num, &contexts2));
if (num > 0)
return contexts2[0];
log("查询不到[材料标记]为[%s]的原材料\n", zt2_MaterialMark);
return NULLTAG;
}
else {
by_materials[zt2_MaterialMark] = comp;
return comp;
}
}
return NULLTAG;
}
tag_t getClassPartDB(tag_t rev, char* groupName, map<string, tag_t>& by_materials, map<string, string>& materials, string& errMsg) {
char* zt2_MaterialMark = NULL;
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialMark", &zt2_MaterialMark));
if (!zt2_MaterialMark || tc_strlen(zt2_MaterialMark) == 0) {
return NULLTAG;
}
string sql = "select materialno,materialutilization,materialunit FROM \"CHINT_";
if (tc_strcmp(groupName, "M046") == 0) {
sql.append("M043");
}
else {
sql.append(groupName);
}
sql.append("_MATERIAL\" where materialmark='").append(zt2_MaterialMark).append("'");
int outputColumn1 = 0, outputValueCount1 = 0;
char*** outputValue1 = NULL;
log("search3 ===> %s\n", sql.c_str());
QuerySQLNoInputParam((char*)sql.c_str(), &outputColumn1, &outputValueCount1, &outputValue1);
if (outputValueCount1 == 0) {
log("查询不到[材料标记]为[%s]的原材料\n", zt2_MaterialMark);
errMsg.append("查询不到[材料标记]为[").append(zt2_MaterialMark).append("]的原材料\n");
return NULLTAG;
}
materials[zt2_MaterialMark] = outputValue1[0][1];
tag_t find = NULLTAG;
ITKCALL(ITEM_find_item(outputValue1[0][0], &find));
if (find == NULLTAG) {
log("tc中查询不到[ID]为[%s]的原材料\n", zt2_MaterialMark);
errMsg.append("tc中查询不到[ID]为[").append(zt2_MaterialMark).append("]的原材料\n");
return NULLTAG;
}
by_materials[zt2_MaterialMark] = find;
return find;
}
//物料信息排序zt2_MaterialNo为3开头的在前
void getSort(vector<char*>& materials) {
if (materials.size() < 2)
return;
vector<int> flowInt;
map<int, vector<char*>> flows;
for (char* b : materials) {
int size = 1;
if (b && tc_strlen(b) > 0 && b[0] == '3') {
size = 0;
}
if (flows.count(size) > 0) {
flows[size].push_back(b);
}
else {
vector<char*> flow;
flow.push_back(b);
flowInt.push_back(size);
flows[size] = flow;
}
}
materials.clear();
sort(flowInt.rbegin(), flowInt.rend());
for (vector<int>::iterator it = flowInt.begin(); it != flowInt.end(); it++) {
cout << *it << " ";
if (flows.count(*it) > 0) {
vector<char*> beans = flows[*it];
for (int x = 0; x < beans.size(); x++) {
materials.push_back(beans[x]);
}
}
}
}
/*
* Part Revision
* SAPUtil.getSAPPart(TCComponentBOMLine line, TCSession session, String groupName,
StringBuffer buff)
*/
tag_t getSAPPart(tag_t rev, char* groupName) {
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(rev, &type));
if (tc_strcmp(type, "Part Revision") == 0) {
return rev;
}
int num = 0;
tag_t *comps = NULL;
vector<tag_t> parts;
ITKCALL(AOM_ask_value_tags(rev, "representation_for", &num, &comps));
for (int i = 0; i < num; i++) {
char *type2 = NULL;
ITKCALL(WSOM_ask_object_type2(comps[i], &type2));
if (tc_strcmp(type, "Part Revision") == 0 && isTcm2(comps[i])) {
parts.push_back(comps[i]);
}
}
if (parts.size() == 1) {
return parts[0];
}
else if (parts.size() > 1 && tc_strcmp(groupName, "M034") == 0) {
return NULLTAG;
}
char* spec = NULL;
ITKCALL(AOM_ask_value_string(rev, "zt2_Specifications", &spec));
for (int i = 0; i < parts.size(); i++) {
char* zt2_Specifications = NULL;
ITKCALL(AOM_ask_value_string(parts[i], "zt2_Specifications", &zt2_Specifications));
if (tc_strcmp(zt2_Specifications, spec) == 0) {
return parts[i];
}
}
return NULLTAG;
}
/*
* Part Revision
* SAPUtil.getSAPPart(TCComponentBOMLine line, TCSession session, String groupName,
StringBuffer buff)
*/
tag_t getBOMPart(tag_t line, char* groupName) {
tag_t rev = NULLTAG;
ITKCALL(AOM_ask_value_tag(line, "bl_line_object", &rev));
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(rev, &type));
//log("getBOMPart1==>%s", type);
if (tc_strcmp(type, "Part Revision") == 0) {
return rev;
}
int num = 0;
tag_t *comps = NULL;
vector<tag_t> parts;
ITKCALL(AOM_ask_value_tags(rev, "representation_for", &num, &comps));
for (int i = 0; i < num; i++) {
char *type2 = NULL;
ITKCALL(WSOM_ask_object_type2(comps[i], &type2));
//log("getBOMPart2==>%s", type2);
if (tc_strcmp(type2, "Part Revision") == 0 && isTcm2(comps[i])) {
parts.push_back(comps[i]);
}
}
//log("getBOMPart3==>%zd", parts.size());
if (parts.size() == 1) {
return parts[0];
}
else if (parts.size() > 1 && tc_strcmp(groupName, "M034") == 0) {
return NULLTAG;
}
char* spec = NULL;
ITKCALL(AOM_UIF_ask_value(rev, "zt2_Specifications", &spec));
for (int i = 0; i < parts.size(); i++) {
char* zt2_Specifications = NULL;
ITKCALL(AOM_UIF_ask_value(parts[i], "zt2_Specifications", &zt2_Specifications));
if (tc_strcmp(zt2_Specifications, spec) == 0) {
return parts[i];
}
}
char* zt2_TYJNo = NULL, *item_id = NULL;
ITKCALL(AOM_UIF_ask_value(line, "ZT2_TYSpecifications", &zt2_TYJNo));
if (zt2_TYJNo && tc_strlen(zt2_TYJNo) > 0) {
tag_t query_tag = NULLTAG;
ITKCALL(QRY_find2("chint_query_material", &query_tag));
if (query_tag == NULL) {
return NULLTAG;
}
ITKCALL(AOM_UIF_ask_value(rev, "item_id", &item_id));
char *zt2_DrawingNo = NULL;
string qs = "*";
ITKCALL(AOM_UIF_ask_value(rev, "zt2_DrawingNo", &zt2_DrawingNo));
if (zt2_DrawingNo && tc_strlen(zt2_DrawingNo) > 0 && tc_strcmp(item_id, zt2_DrawingNo) != 0) {
qs.append(zt2_DrawingNo);
}
else {
qs.append(item_id);
}
qs.append("*").append(zt2_TYJNo).append("*");
char **qkey = NULL, **qvalue = NULL, *qprop = (char*)qs.c_str();
int num_found = 0;
tag_t *qresult = NULL;
qkey = (char **)MEM_alloc(1 * sizeof(char*));
qvalue = (char **)MEM_alloc(1 * sizeof(char*));
qkey[0] = (char *)MEM_alloc((tc_strlen("描述") + 1)*sizeof(char));
qvalue[0] = (char *)MEM_alloc((tc_strlen(qprop) + 1)*sizeof(char));
tc_strcpy(qkey[0], "描述");
tc_strcpy(qvalue[0], qprop);
ITKCALL(QRY_execute(query_tag, 1, qkey, qvalue, &num_found, &qresult));
log("chint_query_material 描述:%s==>%d", qprop, num_found);
map<string, tag_t> map_revs;
vector<char*> materials;
for (int i = 0; i < num_found; i++) {
if (isTcm2(qresult[i])) {
char *zt2_MaterialNo = NULL;
ITKCALL(AOM_UIF_ask_value(qresult[i], "zt2_MaterialNo", &zt2_MaterialNo));
map_revs[zt2_MaterialNo] = qresult[i];
materials.push_back(zt2_MaterialNo);
}
}
if (materials.size() > 0) {
getSort(materials);
for (int i = 0; i < materials.size(); i++) {
string sql = "select FeatureList from CcemVW_GoodsFeature where GoodsCode = '";
sql.append(materials[i]).append("'");
int outputColumn1 = 0, outputValueCount1 = 0;
char*** outputValue1 = NULL;
QuerySQLNoInputParam((char*)sql.c_str(), &outputColumn1, &outputValueCount1, &outputValue1);
if (outputValueCount1 > 0) {
vector<string> vec;
Split(outputValue1[0][0], ",", vec);
for (int j = 0; j < vec.size(); j++) {
string s = vec[j].substr(0, 5);
if (tc_strcmp(s.c_str(), "F064:") == 0) {
string temp = s.substr(5, s.size() - 5);
if (map_revs.count(temp) > 0) {
return map_revs[temp];
}
break;
}
}
}
}
}
}
return NULLTAG;
}
/*
*
* SAPUtil.getZYDesign(TCComponentItemRevision rev)
*/
tag_t getZYDesign(tag_t rev) {
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(rev, &type));
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0) {
return rev;
}
else if (tc_strcmp(type, "Part Revision") == 0) {
int num = 0;
tag_t *comps = NULL;
ITKCALL(AOM_ask_value_tags(rev, "TC_Is_Represented_By", &num, &comps));
if (num > 0) {
return comps[0];
}
}
return NULLTAG;
}
string getICSProperty(tag_t comp, char* codeRemark, char* prop) {
tag_t ico = NULLTAG, *results = NULL;
ITKCALL(ICS_find_class(codeRemark, &ico));
ITKCALL(ICS_ask_classification_object(comp, &ico));
if (ico == NULLTAG) {
return "";
}
int n_attrs = 0;
char** attr_names = NULL, ** attr_vals = NULL;
ITKCALL(ICS_ask_attributes_of_classification_obj(ico, &n_attrs, &attr_names, &attr_vals));
for (int i = 0; i < n_attrs; i++) {
if (tc_strcmp(attr_names[i], prop) == 0) {
return attr_vals[i];
}
}
return "";
}
char* getZYMENGE(double dw, tag_t material, char* codeMark) {
//double dw = stod(zt2_zt2_DesignWeight);
double lyl = -1, res = 0;
string lylStr = getICSProperty(material, codeMark, "材料利用率");
if (lylStr.size() == 0) {
lyl = 0.85;
}
else {
lyl = stod(lylStr);
}
if (lyl > 0) {
res = dw / lyl;
}
char buffer[16];
sprintf(buffer, "%.3f", res);
log("MENGE1:%f==%s", res, buffer);
return buffer;
}
char* getZYSAPMENGE(tag_t design, tag_t part, tag_t line, boolean isBottom, char* codeMark, string& errMsg) {
//log("getZYSAPMENGE");
char *os = NULL;
ITKCALL(AOM_UIF_ask_value(line, "object_string", &os));
if (isBottom) {
char* ZT2_TYSpecifications = NULL, *ZT2_TYWeight = NULL;
ITKCALL(AOM_UIF_ask_value(line, "ZT2_TYSpecifications", &ZT2_TYSpecifications));
if (ZT2_TYSpecifications && tc_strlen(ZT2_TYSpecifications) > 0) {
ITKCALL(AOM_UIF_ask_value(line, "ZT2_TYWeight", &ZT2_TYWeight));
if (!ZT2_TYWeight || tc_strlen(ZT2_TYWeight) == 0) {
//log("getZYSAPMENGE1");
errMsg.append(os).append("未填写通用件重量;");
return "0";
}
else {
//log("getZYSAPMENGE2");
return getZYMENGE(stod(ZT2_TYWeight), part, codeMark);
}
}
else {// 非通用件
double zt2_DesignWeight = 0;
ITKCALL(AOM_ask_value_double(design, "zt2_DesignWeight", &zt2_DesignWeight));
char* ss = getZYMENGE(zt2_DesignWeight, part, codeMark);
if (tc_strlen(ss) == 0) {
//log("getZYSAPMENGE3");
errMsg.append(os).append("未填写重量(zt2_DesignWeight);");
return "0";
}
//log("getZYSAPMENGE4");
return ss;
}
}
else {
char* bl_quantity = NULL;
ITKCALL(AOM_UIF_ask_value(line, "bl_quantity", &bl_quantity));
if (!bl_quantity || tc_strlen(bl_quantity) == 0) {
//log("getZYSAPMENGE5");
errMsg.append(os).append("数量未填写(bl_quantity)");
return "0";
}
//log("getZYSAPMENGE6");
double dw = stod(bl_quantity);
char buffer[16];
sprintf(buffer, "%.3f", dw);
log("MENGE2:%f==%s", dw, buffer);
return buffer;
}
}
char* getZYSAPMENGE2(string lylStr, tag_t design, tag_t line, boolean isBottom, string& errMsg) {
log("lylStr:%s", lylStr.c_str());
double lyl = -1;
if (lylStr.size() > 0) {
lyl = stod(lylStr.c_str());
}
else {
lyl = 0.85;
}
if (isBottom) {
char* ZT2_TYSpecifications = NULL, *ZT2_TYWeight = NULL;
ITKCALL(AOM_UIF_ask_value(line, "ZT2_TYSpecifications", &ZT2_TYSpecifications));
if (ZT2_TYSpecifications && tc_strlen(ZT2_TYSpecifications) > 0) {
ITKCALL(AOM_UIF_ask_value(line, "ZT2_TYWeight", &ZT2_TYWeight));
if (!ZT2_TYWeight || tc_strlen(ZT2_TYWeight) == 0) {
return "0";
}
}
else {// 非通用件
ITKCALL(AOM_UIF_ask_value(design, "zt2_DesignWeight", &ZT2_TYWeight));
if (!ZT2_TYWeight || tc_strlen(ZT2_TYWeight) == 0) {
char *os = NULL;
ITKCALL(AOM_ask_value_string(design, "object_string", &os));
errMsg.append(os).append("设计重量为空\n");
return "0";
}
}
double dw = stod(ZT2_TYWeight) / lyl;
char buffer[16];
sprintf(buffer, "%.3f", dw);
log("MENGE3:%f==%s", dw, buffer);
return buffer;
}
else {
char* bl_quantity = NULL;
ITKCALL(AOM_UIF_ask_value(line, "bl_quantity", &bl_quantity));
if (!bl_quantity || tc_strlen(bl_quantity) == 0) {
return "0";
}
double dw = stod(bl_quantity);
char buffer[16];
sprintf(buffer, "%.3f", dw);
log("MENGE4:%f==%s", dw, buffer);
return buffer;
}
}
/*
* BOMSAP
* SAPUtil.recurZYGGSAPNoProc
*/
void recurZYGGSAPNoProc(tag_t rev, tag_t partRev, char *groupName, tag_t line, 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<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>& list, char* codeRemark, int unct, map<string, tag_t>& by_materials,
boolean isZT, string& errMsg, map<string, vector<string>>& inCcpMap, vector<string> ccpMaterialMap, vector<string> matr) {
char *line_os = NULL;
ITKCALL(AOM_ask_value_string(line, "object_string", &line_os));
log("recurZYGGSAPNoProc line:%s\n", line_os);
tag_t designRev = getZYDesign(rev);
tag_t meops = NULLTAG;
if (designRev != NULLTAG) {
meops = getProcessTag(designRev, groupName);
}
//log("1");
int bvr_count = 0;
tag_t *bvr_list = NULL;
ITKCALL(ITEM_rev_list_bom_view_revs(designRev, &bvr_count, &bvr_list));//designRev
boolean isLj = false; //判断是否零件
if (bvr_count == 0) {
isLj = true;
}
//tag_t partRev = getBOMPart(line, groupName);
if (partRev == NULLTAG) {
//rev = getSAPPart(designRev, groupName);
partRev = getBOMPart(line, groupName);
}
// 如果图纸下没有物料判断此图纸版本上的属性zt2_Diagram属性如果此属性为是
//LOV值真实值为Y),则不传递此图纸,物料检查也不要报错,跳过此图纸以及子件
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));
log("zt2_Source =>%s", zt2_Source);
boolean equals = (zt2_Source && (tc_strcmp(zt2_Source, "外购") == 0 || tc_strcmp(zt2_Source, "S2") == 0));
if (partRev != NULL) {
if (meops == NULL) {
if (!equals && c_line_count > 0) {
log("自制获取工艺路线");
//java中getMrProcess方法已注释只返回null因此该逻辑已无实际意义
/*TCComponentMEProcessRevision mrProcess = getMrProcess(groupID, session);
TXTUtil.writeTXT(txtPath, "图纸[" + rev + "]工艺信息:" + mrProcess);
if (mrProcess != null) {
SAPUtil.readBopInfo1(mrProcess, partRev, session, now,
txtPath, proclist, groupName, gy_meops, needTCM_meops, false);
}*/
}
}
else {
readBopInfo1YH(meops, partRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
}
}
if (equals) {
if (partRev == NULLTAG) {
return;
}
bvr_count = 0;
tag_t *part_bvr = NULL;
ITKCALL(ITEM_rev_list_bom_view_revs(partRev, &bvr_count, &part_bvr));
if (bvr_count > 0) {
tag_t part_window = NULLTAG, part_line = NULLTAG;
ITKCALL(BOM_create_window(&part_window));
ITKCALL(BOM_set_window_top_line(part_window, NULL, partRev, NULLTAG, &part_line));
int part_line_count = 0;
tag_t *part_line_tags = NULL;
ITKCALL(BOM_line_ask_all_child_lines(part_line, &part_line_count, &part_line_tags));
recurZYGGSAPNoProc(partRev, partRev, groupName, part_line, gy_meops, needTCM_meops, now, proclist, bomIsExist,
list, codeRemark, unct, by_materials, isZT, errMsg, inCcpMap, ccpMaterialMap, matr);
ITKCALL(BOM_close_window(part_window));
}
return;
}
if (partRev != NULLTAG) {
char *zt2_MaterialNo = NULL;
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
if (vecContains(bomIsExist, zt2_MaterialNo)) {
log("%s已存在过滤\n", zt2_MaterialNo);
return;
}
bomIsExist.push_back(zt2_MaterialNo);
}
if (c_line_count == 0) {
//char* zt2_Source = NULL;
//ITKCALL(AOM_UIF_ask_value(rev, "zt2_Source", &zt2_Source));
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0 && (tc_strcmp(zt2_Source, "自制") == 0 || tc_strcmp(zt2_Source, "S1") == 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, errMsg);
}
else {
comp = getClassPart(rev, codeRemark, unct, by_materials);
}
char* os = NULL, *sortno = NULL;
boolean isHaveProcess = false;
if (meops != NULL) {
tag_t meop_window = NULLTAG, meop_line = NULLTAG;
ITKCALL(BOM_create_window(&meop_window));
ITKCALL(BOM_set_window_top_line(meop_window, NULL, meops, NULLTAG, &meop_line));
int meop_line_count = 0;
tag_t *meop_line_tags = NULL;
ITKCALL(BOM_line_ask_all_child_lines(meop_line, &meop_line_count, &meop_line_tags));
for (int i = 0; i < meop_line_count; i++) {
char *bl_sequence_no = NULL;
ITKCALL(AOM_UIF_ask_value(meop_line_tags[i], "bl_sequence_no", &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;
}
}
ITKCALL(BOM_close_window(meop_window));
isHaveProcess = true;
}
if (!sortno || tc_strlen(sortno) == 0) {
ITKCALL(AOM_ask_value_string(line, "ZT2_ClassificationNo", &sortno));
}
log("工序编码 =>%s", sortno);
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));
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_HEAD head;
_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;
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;
items_item.DATUV = now;
items_item.POSTP = (char*)"L";
items_item.POSNR = "0010";
if (!isLj) {
if (!isHaveProcess) {
errMsg.append(line_os).append("缺少工艺路线\n");
}
else if (!sortno || tc_strlen(sortno) == 0) {
char* mos = NULL;
ITKCALL(AOM_ask_value_string(meops, "object_string", &mos));
errMsg.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));
//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);
}
else {
char* mos = NULL;
ITKCALL(AOM_ask_value_string(rev, "object_string", &mos));
errMsg.append(mos).append("未能匹配到对应的原材料\n");
items_item.IDNRK = "";
items_item.MEINS = "";
items_item.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;
}
if (partRev == NULLTAG) {
ITKCALL(AOM_ask_value_tag(line, "bl_line_object", &partRev));
}
char *os = NULL, *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL, *zt2_unit = NULL;
ITKCALL(AOM_ask_value_string(partRev, "object_string", &os));
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));
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_HEAD head;
tag_t item;
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", unit);
head.PSPNR = zt2_WBSNo;
head.MATNR = zt2_MaterialNo;
head.BMEIN = unit;
head.STLAN = (char*)"1";
head.STLAL = (char*)"1";
head.BMENG = (char*)"1";
head.WERKS = groupName;
head.DATUV = now;
//log("head.MENGE ===>%s", head.MENGE);
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[c_line_count];
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS items;
for (int i = 0; i < c_line_count; i++) {
string buff;
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM items_item;
tag_t c_line_tag = c_line_tags[i], rev2;
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &rev2));
tag_t item2, part2 = getBOMPart(c_line_tag, groupName);
char *zt2_MaterialNo2 = NULL, *zt2_unit2 = NULL, *bl_sequence_no = NULL, *sortno = NULL, *ZT2_Remark = NULL, *zt2_SapState = NULL, *type2 = NULL;
// 如果图纸下没有物料判断此图纸版本上的属性zt2_Diagram属性如果此属性为是
//LOV值真实值为Y),则不传递此图纸,物料检查也不要报错,跳过此图纸以及子件
ITKCALL(WSOM_ask_object_type2(rev2, &type2));
if (tc_strcmp(type2, "ZT2_Design3DRevision") == 0) {
}
ITKCALL(AOM_UIF_ask_value(part2, "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_tag, "bl_sequence_no", &bl_sequence_no));
ITKCALL(AOM_UIF_ask_value(c_line_tag, "ZT2_ClassificationNo", &sortno));
ITKCALL(AOM_UIF_ask_value(c_line_tag, "ZT2_Remark", &ZT2_Remark));
ITKCALL(AOM_UIF_ask_value(rev2, "zt2_SapState", &zt2_SapState));
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_tag, false, codeRemark, buff));
log("menge ===>%s", menge);
char* unit22 = getUnti(zt2_unit2);
items_item.IDNRK = zt2_MaterialNo2;
//char* unit = unit22;
items_item.MEINS = unit22;
items_item.DATUV = now;
items_item.POSTP = (char*)"L";
items_item.POSNR = bl_sequence_no;
items_item.MENGE = menge;
items_item.SORTF = sortno;
items_item.POTX1 = ZT2_Remark;
log("items_item.MENGE ===>%s", items_item.MENGE);
//MEM_free(menge);
items_items[i] = items_item;
char* os2 = NULL;
ITKCALL(AOM_ask_value_string(rev2, "object_string", &os2));
string msg;
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 || tc_strcmp(zt2_SapState, "2") == 0) && !isZT) {
continue;
}
recurZYGGSAPNoProc(rev2, part2, groupName, c_line_tag, gy_meops, needTCM_meops, now, proclist, bomIsExist,
list, codeRemark, unct, by_materials, isZT, errMsg, inCcpMap, ccpMaterialMap, matr);
}
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);
}
/*
* BOM
* SAPZYGG2Operation
*/
void SAPZYGG2(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName) {
log("************** SAPZYGG2 **************");
int pref_cnt = 0;
char **pref = NULL;
string codeRemark = "ICM0801";
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];
}
}
//记录是否有重复的出厂编号
vector<tag_t> isCheck_FactoryNos;
//记录产成品 对应的 电气BOM集合
map<tag_t, vector<tag_t>> cPart_schemes;
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList;
map<string, vector<string>> inCcpMap;//记录单元对应的产成品物料编码
string sendMsg;
for (int len = 0; len < ccpVector.size(); len++) {
vector<tag_t> elcBoms;
tag_t rev = ccpVector[len], *factoryNos;
char* revUid;
ITK__convert_tag_to_uid(rev, &revUid);
log("产成品UID:%s", revUid);
ITKCALL(AOM_refresh(rev, FALSE));
int num = 0;
ITKCALL(AOM_ask_value_tags(rev, "ZT2_FactoryNumber", &num, &factoryNos));
log("出厂编号数量 num :%d\n", num);
char *zt2_MaterialNo = NULL;
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialNo", &zt2_MaterialNo));
vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM> list_Factorys;
getFactoryNoList(projectNo, groupName, wbs, factoryNos, num, rev, list_Factorys);
//传递出厂编号的记录日志信息
log("出厂编号数量:%zd", list_Factorys.size());
logCcbh(list_Factorys);
sendFactoryNo(list_Factorys);
tag_t designRev = NULLTAG;
if (num > 0) {
int n_references = 0;
int* levels = 0;
tag_t* references_tag;
char** relation_type_name = NULL;
//通过出厂编号查找到图纸
ITKCALL(WSOM_where_referenced(factoryNos[0], 1, &n_references, &levels, &references_tag, &relation_type_name));
for (int i = 0; i < n_references; i++) {
if (tc_strcmp(relation_type_name[i], "ZT2_FactoryNumber") == 0) {
char *type2 = NULL;
ITKCALL(WSOM_ask_object_type2(references_tag[i], &type2));
if (tc_strcmp(type2, "ZT2_Design3DRevision") == 0) {
designRev = references_tag[i];
break;
}
}
}
}
tag_t ebom_window = NULLTAG, line = NULLTAG;
ITKCALL(BOM_create_window(&ebom_window));
if (designRev == NULLTAG) {
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, rev, NULLTAG, &line));
}
else {
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, designRev, NULLTAG, &line));
}
vector <_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> list;
vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
map<string, tag_t> gy_meops; //避免重复工艺路线
vector<tag_t> needTCM_meops;//没用上
vector<string> bomIsExist;
map<string, tag_t> by_materials;
int unct = getIcsId((char*)codeRemark.c_str(), "材料标记");
//tag_t partRev = getBOMPart(line, groupName);
char *ccpMaterialNo = NULL;
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialNo", &ccpMaterialNo));
tag_t meops = getProcessTag(rev, groupName);
if (meops != NULLTAG) {
readBopInfo1YH(meops, rev, true, gy_meops, needTCM_meops, groupName, now, proclist);
}
else if (meops == NULLTAG && tc_strcmp(groupName, "M040") == 0) {
vector<string> split;
tag_t find = NULLTAG;
Split(zt2_MaterialNo, "-", split);
ITKCALL(ITEM_find_item(split[0].c_str(), &find));
if (find != NULLTAG) {
meops = getProcessTag(find, groupName);
if (meops != NULLTAG) {
readBopInfo1YH(meops, rev, true, gy_meops, needTCM_meops, groupName, now, proclist);
}
}
}
if (inCcpMap.count(revUid) > 0) {
log("folderName =>%s", zt2_MaterialNo);
inCcpMap[revUid].push_back(ccpMaterialNo);
continue;
}
vector<string> ccpMaterialMap;
ccpMaterialMap.push_back(ccpMaterialNo);
inCcpMap[revUid] = ccpMaterialMap;
string errMsg = "";
recurZYGGSAPNoProc(designRev, rev, groupName, line, gy_meops, needTCM_meops, now, proclist, bomIsExist,
list, (char*)codeRemark.c_str(), unct, by_materials, false, errMsg, inCcpMap, ccpMaterialMap, matr);
//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, userName, projectName);
return;
}
char *zt2_BOMScheme = NULL;
ITKCALL(AOM_UIF_ask_value(rev, "zt2_BOMScheme", &zt2_BOMScheme));
if (list.size() > 0 && strcmp(zt2_BOMScheme, "汇总") == 0) {
char* zt2_Quantity;
ITKCALL(AOM_ask_value_string(rev, "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[rev] = list;
}
if (proclist.size() > 0) {
logProcessMsg(proclist);// vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
sendProcess(proclist, sendMsg);//proclists.push_back(proclist);//sendProcess(proclist);
}
ITKCALL(BOM_close_window(ebom_window));
}
if (mapList.size() > 0) {
//传递BOM
//logBomMsg(list);
//sendBom(list, sendMsg);
startSplitSend(groupName, mapList, code, wbs, inCcpMap);
//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");
}
}

@ -0,0 +1,9 @@
#pragma once
//#include "util.h"
#include <vector>
#include <string>
//#include <vector>
void SAPZYGG2(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName);

@ -0,0 +1,655 @@
#include "SendSap.h"
tag_t getZZDesign(tag_t part, char* groupName) {
int num = 0;
tag_t *comps = NULL;
ITKCALL(AOM_ask_value_tags(part, "ZT2_FactoryNumber", &num, &comps));
for (int i = 0; i < num; i++) {
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(comps[i], &type));
if (tc_strcmp(type, "ZT2_FactoryNo") == 0 && tc_strcmp(groupName, "M040") != 0) {
int n_references = 0;
int* levels = 0;
tag_t* references_tag, processTag = NULLTAG;
char** relation_type_name = NULL;
ITKCALL(WSOM_where_referenced(comps[i], 1, &n_references, &levels, &references_tag, &relation_type_name));
for (int j = 0; j < n_references; j++) {
if (tc_strcmp(relation_type_name[j], "ZT2_FactoryNumber") != 0) {
continue;
}
char *type2 = NULL;
ITKCALL(WSOM_ask_object_type2(references_tag[j], &type2));
if (tc_strcmp(type2, "ZT2_Design3DRevision") != 0) {
continue;
}
tag_t item = NULLTAG, rev = NULLTAG;
ITKCALL(ITEM_ask_item_of_rev(references_tag[j], &item));
ITKCALL(ITEM_ask_latest_rev(item, &rev));
return rev;
}
}
}
}
void recurBYZZSAP(tag_t line, tag_t zzRev, tag_t partRev, char* groupName, map<string, tag_t>& gy_meops,
vector<tag_t>& needTCM_meops, vector<string> bomIsExist, vector<tag_t> set_meops, char* transfer, char* fa,
vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>& list,
char* now, vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>& proclist, int level, string& errMsg) {
int line_count = 0;
tag_t *line_tags = NULL;
ITKCALL(BOM_line_ask_all_child_lines(line, &line_count, &line_tags));
tag_t meop = getProcessTag(zzRev, groupName);
if (meop != NULLTAG && !isTcm2(meop) && find(set_meops.begin(), set_meops.end(), meop) == set_meops.end()) {
set_meops.push_back(meop);
}
// 如果图纸下没有物料判断此图纸版本上的属性zt2_Diagram属性
//如果此属性为是LOV值真实值为Y),则不传递此图纸,物料检查也不要报错,跳过此图纸以及子件
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(zzRev, &type));
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0 && partRev == NULLTAG) {
char *zt2_Diagram = NULL;
ITKCALL(AOM_ask_value_string(zzRev, "zt2_Diagram", &zt2_Diagram));
if (tc_strcmp(zt2_Diagram, "Y") == 0 || tc_strcmp(zt2_Diagram, "") == 0) {
return;
}
}
char *zt2_Source = NULL;
ITKCALL(AOM_UIF_ask_value(zzRev, "zt2_Source", &zt2_Source));
boolean equals = tc_strcmp(zt2_Source, "外购") == 0;
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 (partRev != NULLTAG) {
if (meop == NULLTAG) {
if (!equals && (tc_strcmp(transfer, "C") == 0 || tc_strcmp(transfer, "E") == 0 && c_line_count > 0)) {
//java中getMrProcess方法已注释只返回null因此该逻辑已无实际意义
}
}
else {
if (level == 1) {
readBopInfo1YH(meop, zzRev, false, gy_meops, needTCM_meops, groupName, now, proclist);
}
else {
readBopInfo1YH(meop, zzRev, true, gy_meops, needTCM_meops, groupName, now, proclist);
}
}
}
if (equals) {
if (partRev == NULLTAG)
return;
int bvr_count = 0;
tag_t *part_bvr = NULL;
ITKCALL(ITEM_rev_list_bom_view_revs(partRev, &bvr_count, &part_bvr));
if (bvr_count > 0) {
tag_t part_window = NULLTAG, part_line = NULLTAG;
ITKCALL(BOM_create_window(&part_window));
ITKCALL(BOM_set_window_top_line(part_window, NULL, partRev, NULLTAG, &part_line));
int part_line_count = 0;
tag_t *part_line_tags = NULL;
ITKCALL(BOM_line_ask_all_child_lines(part_line, &part_line_count, &part_line_tags));
recurBYZZSAP(part_line, zzRev, partRev, groupName, gy_meops, needTCM_meops, bomIsExist, set_meops, transfer, fa,
list, now, proclist, level, errMsg);
ITKCALL(BOM_close_window(part_window));
}
return;
}
if (partRev != NULLTAG) {
char *zt2_MaterialNo = NULL;
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
if (vecContains(bomIsExist, zt2_MaterialNo)) {
log("%s已存在过滤\n", zt2_MaterialNo);
return;
}
bomIsExist.push_back(zt2_MaterialNo);
}
if (c_line_count == 0) {
return;
}
char *os = NULL;
ITKCALL(AOM_ask_value_string(partRev, "object_string", &os));
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_HEAD head;
if (partRev != NULLTAG) {
char *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL, *zt2_unit = NULL;
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
ITKCALL(AOM_ask_value_string(partRev, "zt2_WBSNo", &zt2_WBSNo));
tag_t item;
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", unit);
head.PSPNR = zt2_WBSNo;
head.MATNR = zt2_MaterialNo;
head.BMEIN = unit;
char* parnetUid;
ITK__convert_tag_to_uid(partRev, &parnetUid);
head.STKTX = parnetUid;
}
head.STLAN = (char*)"1";
head.STLAL = (char*)"1";
head.BMENG = (char*)"1";
head.WERKS = groupName;
head.DATUV = now;
_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++) {
string buff;
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM items_item;
tag_t c_line_tag = c_line_tags[i], rev2;
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &rev2));
tag_t partRev2 = getBOMPart(rev2, groupName);
int c_line_count2 = 0;
tag_t *c_line_tags2 = NULL;
ITKCALL(BOM_line_ask_all_child_lines(c_line_tag, &c_line_count2, &c_line_tags2));
boolean isContinue = true;
char *type2 = 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;
}
}
int pcnt = 0;
tag_t *ps = NULL;
ITKCALL(AOM_ask_value_tags(rev2, "representation_for", &pcnt, &ps));
if (tc_strcmp(fa, "B") == 0) {
if (c_line_count2 == 0 && pcnt > 1) {
isContinue = false;
}
}
else if (c_line_count2 == 0 && pcnt >= 1) {
isContinue = false;
}
}
char *zt2_MaterialNo2 = NULL, *zt2_unit2 = NULL;
if (partRev2 != NULLTAG) {
ITKCALL(AOM_UIF_ask_value(partRev2, "zt2_MaterialNo", &zt2_MaterialNo2));
tag_t item2 = NULLTAG;
ITKCALL(ITEM_ask_item_of_rev(partRev2, &item2));
ITKCALL(AOM_ask_value_string(item2, "zt2_unit", &zt2_unit2));
char* unit22 = getUnti(zt2_unit2);
//char* unit = unit22;
items_item.IDNRK = zt2_MaterialNo2;
items_item.MEINS = unit22;
char *zt2_State = NULL;
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_MaterialNo2).append("已封存,无法传递SAP;");
}
}
char *bl_sequence_no = NULL, *sortno = NULL, *ZT2_Remark = NULL, *zt2_SapState = NULL;
ITKCALL(AOM_UIF_ask_value(c_line_tag, "bl_sequence_no", &bl_sequence_no));
ITKCALL(AOM_UIF_ask_value(c_line_tag, "ZT2_ClassificationNo", &sortno));
ITKCALL(AOM_UIF_ask_value(c_line_tag, "ZT2_Remark", &ZT2_Remark));
ITKCALL(AOM_UIF_ask_value(rev2, "zt2_SapState", &zt2_SapState));
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_tag, false, "ICM0801", errMsg));
items_item.DATUV = now;
items_item.POSTP = (char*)"L";
items_item.POSNR = bl_sequence_no;
items_item.MENGE = menge;
items_item.SORTF = sortno;
if (!sortno || tc_strlen(sortno) == 0) {
buff.append("BOM行缺少投料信息;");
}
items_item.POTX1 = ZT2_Remark;
items_items[i] = items_item;
char* os2 = NULL;
ITKCALL(AOM_ask_value_string(rev2, "object_string", &os2));
string msg;
msg.append(os2).append("(父项:").append(os).append("):").append(buff);
log("buff ===== %s\n", buff.c_str());
if (buff.length() > 0 && strstr(errMsg.c_str(), msg.c_str()) == NULL) {
errMsg.append("\n").append(msg);
}
if (tc_strcmp(zt2_SapState, "已传") == 0 && isContinue) {
continue;
}
recurBYZZSAP(c_line_tag, rev2, partRev2, groupName, gy_meops, needTCM_meops, bomIsExist, set_meops, transfer, fa,
list, now, proclist, level, errMsg);
}
items.ITEM = items_items;
items.__sizeITEM = c_line_count;
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST list1;
list1.HEAD = head;
log("list1.HEAD %s\n ", list1.HEAD.BMEIN);
list1.ITEMS = items;
list.push_back(list1);
}
char* getZYCCPSortNo(tag_t comp) {
int ref_cnt = 0;
tag_t *refs = NULLTAG;
ITKCALL(AOM_ask_value_tags(comp, "IMAN_reference", &ref_cnt, &refs));
for (int i = 0; i < ref_cnt; i++) {
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(refs[i], &type));
if (tc_strcmp(type, "MEOPRevision") == 0) {
char *zt2_ClassificationCode = NULL;
ITKCALL(AOM_UIF_ask_value(refs[i], "zt2_ClassificationCode", &zt2_ClassificationCode));
return zt2_ClassificationCode;
}
}
/*
* ZT2_Design3Drevisionzt2_DrawingNo-XXX
* MEOPRevisionzt2_ClassificationCode
*/
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(comp, &type));
if (tc_strcmp(type, "ZT2_Design3Drevision") == 0) {
char *drawingNo = NULL;
ITKCALL(AOM_ask_value_string(comp, "zt2_DrawingNo", &drawingNo));
if (!drawingNo || tc_strlen(drawingNo) == 0) {
return "";
}
tag_t query_tag = NULLTAG;
ITKCALL(QRY_find2("chint_query_TYDH", &query_tag));
if (query_tag == NULL) {
return NULLTAG;
}
char **qkey = NULL, **qvalue = NULL;// (char*)qs.c_str();
int num_found = 0;
tag_t *qresult = NULL;
qkey = (char **)MEM_alloc(1 * sizeof(char*));
qvalue = (char **)MEM_alloc(1 * sizeof(char*));
qkey[0] = (char *)MEM_alloc((tc_strlen("DrawingNo") + 1)*sizeof(char));
tc_strcpy(qkey[0], "DrawingNo");
vector<string> v1;
Split(drawingNo, "-", v1);
if (v1.size() > 1) {
//int size = tc_strlen(drawingNo) - tc_strlen(v1[v1.size() - 1].c_str() - 1);
//fields["DrawingNo"] = v1[0];
qvalue[0] = (char *)MEM_alloc((tc_strlen(v1[0].c_str()) + 1)*sizeof(char));
tc_strcpy(qvalue[0], v1[0].c_str());
}
else {
//fields["DrawingNo"] = drawingNo;
qvalue[0] = (char *)MEM_alloc((tc_strlen(drawingNo) + 1)*sizeof(char));
tc_strcpy(qvalue[0], drawingNo);
}
ITKCALL(QRY_execute(query_tag, 1, qkey, qvalue, &num_found, &qresult));
if (num_found == 1) {
int ref_cnt = 0;
tag_t *refs = NULL;
ITKCALL(AOM_ask_value_tags(qresult[0], "IMAN_reference", &ref_cnt, &refs));
for (int i = 0; i < ref_cnt; i++) {
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(refs[i], &type));
if (tc_strcmp(type, "MEOPRevision") == 0) {
char *zt2_ClassificationCode = NULL;
ITKCALL(AOM_UIF_ask_value(refs[i], "zt2_ClassificationCode", &zt2_ClassificationCode));
return zt2_ClassificationCode;
}
}
}
}
return "";
}
void SAPZZNewOp(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* type) {
log("************** SAPZZNewOp **************");
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList;
string sendMsg;
map<string, vector<string>> inCcpMap;//记录单元对应的产成品物料编码
for (int len = 0; len < ccpVector.size(); len++) {
char* revUid;
tag_t rev = ccpVector[len];
ITK__convert_tag_to_uid(rev, &revUid);
log("产成品UID:%s\n", revUid);
tag_t partRev = getSAPPart(ccpVector[len], groupName);
char *ccpMaterialNo = NULL;
ITKCALL(AOM_ask_value_string(partRev, "zt2_MaterialNo", &ccpMaterialNo));
char *os = NULL;
ITKCALL(AOM_UIF_ask_value(partRev, "object_string", &os));
tag_t zzRev = getZZDesign(partRev, groupName);
if (zzRev == NULLTAG && tc_strcmp(type, "E") != 0) {
errMsgBuf.append("总装图 ").append(os).append(" 未关联出厂编号!!变压器跳过、互感电容走中压;");
return;
}
if (tc_strcmp(type, "E") == 0) {
zzRev = getZYDesign(partRev);
}
if (zzRev == NULLTAG) {
return;
}
tag_t window = NULLTAG, line = NULLTAG;
ITKCALL(BOM_create_window(&window));
ITKCALL(BOM_set_window_top_line(window, NULL, zzRev, NULLTAG, &line));
vector <_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> list;
vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
map<string, tag_t> gy_meops; //避免重复工艺路线
vector<tag_t> needTCM_meops;//没用上
vector<string> bomIsExist;
map<string, tag_t> by_materials;
vector<tag_t> set_meops;
string errMsg = "";
if (inCcpMap.count(revUid) > 0) {
//log("folderName = {} \n", zt2_MaterialNo);
inCcpMap[revUid].push_back(ccpMaterialNo);
continue;
}
vector<string> ccpMaterialMap;
ccpMaterialMap.push_back(ccpMaterialNo);
inCcpMap[revUid] = ccpMaterialMap;
recurBYZZSAP(line, zzRev, partRev, groupName, gy_meops, needTCM_meops, bomIsExist, set_meops, transfer, type,
list, now, proclist, 1, errMsg);
//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 (list.size() > 0) {
//logBomMsg(list);
mapList[partRev] = list;
}
if (proclist.size() > 0) {
logProcessMsg(proclist);// vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
sendProcess(proclist, sendMsg);//proclists.push_back(proclist);//sendProcess(proclist);
}
ITKCALL(BOM_close_window(window));
}
if (mapList.size() > 0) {
//传递BOM
//logBomMsg(list);
//sendBom(list, sendMsg);
startSplitSend(groupName, mapList, code, wbs, inCcpMap);
//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");
}
}
/**
* SAP
* @param ccpVector
* @param projectNo
* @param groupName
* @param wbs WBS
* @param now
* @param errMsgBuf
* @param code code
* @param transfer
* @param userName
* @param projectName
*/
void getKTBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName) {
log("************** getKTBom **************");
//记录是否有重复的出厂编号
vector<tag_t> isCheck_FactoryNos;
//记录产成品 对应的 电气BOM集合
map<tag_t, vector<tag_t>> cPart_schemes;
vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM> list_Factorys;
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList;
map<string, vector<string>> inCcpMap;//记录单元对应的产成品物料编码
boolean isCheckProduct = tc_strcmp(groupName, "M035") == 0;
string sendMsg = "";
for (int len = 0; len < ccpVector.size(); len++) {
tag_t cPart = ccpVector[len], *factoryNos;
char* ccpUid;
ITK__convert_tag_to_uid(cPart, &ccpUid);
log("产成品UID:%s\n", ccpUid);
ITKCALL(AOM_refresh(cPart, FALSE));
int num = 0;
ITKCALL(AOM_ask_value_tags(cPart, "ZT2_FactoryNumber", &num, &factoryNos));
if (num > 0 && cPart_schemes.count(cPart) == 0) {
getFactoryNoList(projectNo, groupName, wbs, factoryNos, num, cPart, list_Factorys);
map<tag_t, vector<tag_t>> items2;
for (int i = 0; i < num; i++) {
tag_t factoryNo = factoryNos[i];
if (std::find(isCheck_FactoryNos.begin(), isCheck_FactoryNos.end(), factoryNo) != isCheck_FactoryNos.end())
continue;
isCheck_FactoryNos.push_back(factoryNos[i]);
int n_references = 0;
int* levels = 0;
tag_t* references_tag;
char** relation_type_name = NULL;
//通过引用关系查找到变更单
ITKCALL(WSOM_where_referenced(factoryNo, 1, &n_references, &levels, &references_tag, &relation_type_name));
tag_t ccpItem;
char* ccpItemUid;
ITEM_ask_item_of_rev(cPart, &ccpItem);
ITK__convert_tag_to_uid(ccpItem, &ccpItemUid);
for (int j = 0; j < n_references; j++) {
char* refType, *grpName, *useUid, *object_name, *zt2_SapState;
tag_t refTag = references_tag[i], group, item;
ITKCALL(AOM_ask_value_string(refTag, "object_type", &refType));
if (strcmp(refType, "Part Revision") != 0) {
continue;
}
ITK__convert_tag_to_uid(refTag, &useUid);
//判断不是产成品 并且同一组
ITKCALL(AOM_ask_value_tag(refTag, "owning_group", &group));
ITKCALL(AOM_ask_value_string(group, "name", &grpName));
if (strcmp(grpName, groupName) != 0 || strcmp(ccpUid, useUid) == 0)
continue;
ITKCALL(AOM_UIF_ask_value(refTag, "object_name", &object_name));
ITKCALL(AOM_UIF_ask_value(refTag, "zt2_SapState", &zt2_SapState));
if (strcmp(zt2_SapState, "1") == 0 || strcmp(zt2_SapState, "未传") == 0) {
continue;
}
ITKCALL(ITEM_ask_item_of_rev(refTag, &item));
char* unitUid;
ITK__convert_tag_to_uid(item, &unitUid);
if (strcmp(unitUid, ccpItemUid) == 0) {
continue;
}
log("useUid %s object_name %s \n", useUid, object_name);
if (items2.count(item) > 0) {
items2[item].push_back(refTag);
}
else {
vector<tag_t> revs2;
revs2.push_back(refTag);
items2[item] = revs2;
}
}
}
vector<tag_t> rev2 = addLastRev(items2);
cPart_schemes[cPart] = rev2;
}
if (isCheckProduct) {
}
//}
//传递出厂编号的记录日志信息
log("出厂编号数量 num :%zd\n", list_Factorys.size());
logCcbh(list_Factorys);
sendFactoryNo(list_Factorys);
vector <_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST> list;
vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
map<string, tag_t> gy_meops; //避免重复工艺路线
vector<tag_t> needTCM_meops;//没用上
//for (int len = 0; len < ccpVector.size(); len++) {
//list.clear();
//proclist.clear();
//tag_t cPart = ccpVector[len];
vector<tag_t> revs = cPart_schemes[cPart];
// 有关联
if (cPart_schemes.count(cPart) != 0 && revs.size() > 0) {
char *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL, *zt2_unit2 = NULL;
ITKCALL(AOM_UIF_ask_value(cPart, "zt2_MaterialNo", &zt2_MaterialNo));
ITKCALL(AOM_UIF_ask_value(cPart, "zt2_WBSNo", &zt2_WBSNo));
tag_t item2 = NULLTAG;
ITKCALL(ITEM_ask_item_of_rev(cPart, &item2));
ITKCALL(AOM_ask_value_string(item2, "zt2_unit", &zt2_unit2));
char* unit = getUnti(zt2_unit2);
tag_t meops = getProcessTag(cPart, groupName);
if (meops == NULLTAG) {
vector<string> v1;
Split(zt2_MaterialNo, "-", v1);
tag_t query_tag = NULLTAG;
ITKCALL(QRY_find2("chint_query_item", &query_tag));
char **qkey = NULL, **qvalue = NULL, *qprop = (char*)v1[0].c_str();
int num_found = 0;
tag_t *qresult = NULL;
qkey = (char **)MEM_alloc(1 * sizeof(char*));
qvalue = (char **)MEM_alloc(1 * sizeof(char*));
qkey[0] = (char *)MEM_alloc((tc_strlen("ID") + 1)*sizeof(char));
qvalue[0] = (char *)MEM_alloc((tc_strlen(qprop) + 1)*sizeof(char));
tc_strcpy(qkey[0], "ID");
tc_strcpy(qvalue[0], qprop);
ITKCALL(QRY_execute(query_tag, 1, qkey, qvalue, &num_found, &qresult));
log("chint_query_item ID:%s==>%d", qprop, num_found);
if (num_found > 0) {
tag_t found_rev = NULLTAG;
ITKCALL(ITEM_ask_latest_rev(qresult[0], &found_rev));
meops = getProcessTag(found_rev, groupName);
}
}
if (meops != NULLTAG) {
readBopInfo1YH(meops, cPart, true, gy_meops, needTCM_meops, groupName, now, proclist);
}
int c_line_count = 0;
tag_t *c_line_tags = NULL, ebom_window = NULLTAG, line = NULLTAG;
ITKCALL(BOM_create_window(&ebom_window));
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, meops, NULLTAG, &line));
ITKCALL(BOM_line_ask_all_child_lines(line, &c_line_count, &c_line_tags));
char *ktSortno = NULL;
if (c_line_count > 0) {
tag_t rev = NULLTAG;
ITKCALL(AOM_ask_value_tag(c_line_tags[0], "bl_revision", &rev));
ITKCALL(AOM_UIF_ask_value(rev, "zt2_ClassificationCode", &ktSortno));
}
ITKCALL(BOM_close_window(ebom_window));
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_HEAD head;
log("str = [%s] \n", unit);
head.PSPNR = zt2_WBSNo;
head.MATNR = zt2_MaterialNo;
head.BMEIN = 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(cPart, &parnetUid);
head.STKTX = parnetUid;
char *type = NULL, *zt2_BOMScheme = NULL;
ITKCALL(WSOM_ask_object_type2(cPart, &type));
ITKCALL(AOM_UIF_ask_value(cPart, "zt2_BOMScheme", &zt2_BOMScheme));
if (strcmp(type, "Part Revision") == 0 && strcmp(zt2_BOMScheme, "汇总") == 0) {
char *zt2_Quantity = NULL;
ITKCALL(AOM_UIF_ask_value(cPart, "zt2_Quantity", &zt2_Quantity));
string bmeng = zt2_Quantity;
if (tc_strcmp(groupName, "M041") != 0) {
if (!zt2_Quantity || tc_strlen(zt2_Quantity) == 0 || strcmp(zt2_Quantity, "0") == 0) {
bmeng = "1";
}
}
head.BMENG = (char*)bmeng.c_str();
}
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM* items_items =
new _ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM[revs.size()];
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS items;
for (int i = 0; i < revs.size(); i++) {
tag_t schem = revs[i];
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST_ITEMS_ITEM items_item;
tag_t item22 = NULLTAG;
char *zt2_unit22 = NULL, *zt2_MaterialNo2 = NULL, *object_name = NULL;
ITKCALL(ITEM_ask_item_of_rev(schem, &item22));
ITKCALL(AOM_ask_value_string(item22, "zt2_unit", &zt2_unit22));
ITKCALL(AOM_UIF_ask_value(schem, "zt2_MaterialNo", &zt2_MaterialNo2));
ITKCALL(AOM_UIF_ask_value(schem, "object_name", &object_name));
char* unit22 = getUnti(zt2_unit22);
items_item.MEINS = unit22;
items_item.DATUV = now;
items_item.POSTP = (char*)"L";
char posnr[5] = "";
sprintf(posnr, "%04d", (i + 1) * 10);
items_item.POSNR = posnr;
items_item.IDNRK = zt2_MaterialNo2;
items_item.MENGE = "1";
if (tc_strstr(object_name, "壳体") != NULL) {
items_item.SORTF = ktSortno;
}
else if (tc_strstr(object_name, "二次规范书") != NULL) {
tag_t meops2 = getProcessTag(schem, groupName);
if (meops2 != NULLTAG) {
int c_line_count2 = 0;
tag_t *c_line_tags2 = NULL, ebom_window2 = NULLTAG, line2 = NULLTAG;
ITKCALL(BOM_create_window(&ebom_window2));
ITKCALL(BOM_set_window_top_line(ebom_window2, NULL, meops2, NULLTAG, &line2));
ITKCALL(BOM_line_ask_all_child_lines(line2, &c_line_count2, &c_line_tags2));
char *ktSortno2 = NULL;
if (c_line_count2 > 0) {
tag_t rev = NULLTAG;
ITKCALL(AOM_ask_value_tag(c_line_tags2[0], "bl_revision", &rev));
ITKCALL(AOM_UIF_ask_value(rev, "zt2_ClassificationCode", &ktSortno2));
items_item.SORTF = ktSortno2;
}
else {
items_item.SORTF = "";
}
ITKCALL(BOM_close_window(ebom_window2));
}
else {
items_item.SORTF = "";
}
}
else {
items_item.SORTF = getZYCCPSortNo(schem);
}
items_item.POTX1 = "";
items_items[i] = items_item;
}
items.ITEM = items_items;
items.__sizeITEM = c_line_count;
_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST list1;
list1.HEAD = head;
log("list1.HEAD %s\n ", list1.HEAD.BMEIN);
list1.ITEMS = items;
list.push_back(list1);
if (list.size() > 0) {
//logBomMsg(list);
mapList[cPart] = list;
}
if (proclist.size() > 0) {
logProcessMsg(proclist);// vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist;
sendProcess(proclist, sendMsg);//proclists.push_back(proclist);//sendProcess(proclist);
}
}
}
if (mapList.size() > 0) {
//传递BOM
//logBomMsg(list);
//sendBom(list, sendMsg);
startSplitSend(groupName, mapList, code, wbs, inCcpMap);
//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");
}
}

@ -0,0 +1,40 @@
#pragma once
/*
#include "util.h"
#include "dfl_custom.h"
#include <string>
#include <vector>
#include <map>
#include <unidefs.h>
#include <oratypes.h>
#include <fclasses/tc_string.h>
#include <pom\pom\pom.h>
#include <tc\tc_macros.h>
#include <tccore\aom_prop.h>*/
#include <ics/ics.h>
#include <ics/ics2.h>
#include "soapSIO_USCOREBOM_USCOREPLM_USCOREASYNBindingProxy.h"
#include "soapSI_USCOREFACTORY_USCORENUMBER_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.h"
#include "soapSI_USCOREPROCESSROUTE_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.h"
#include "ocilib.h"
#include "dfl_custom.h"
#include "util.h"
using namespace std;
tag_t getProcessTag(tag_t mantr, char* groupName);
boolean isTcm2(tag_t mantr);
void getFactoryNoList(char* projectNo, char* groupName, char* wbs,
tag_t* factoryNos, int num, tag_t ccp, vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM>& list);
void logCcbh(vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM> list_Factorys);
void sendFactoryNo(vector<_ns1__DT_USCOREFACTORY_USCORENUMBER_USCOREREQ_ITEMS_ITEM> list_Factorys);
void readBopInfo1YH(tag_t rev, tag_t partRev, boolean flag,
map<string, tag_t>& gy_meops, vector<tag_t>& needTCM_meops,
char* groupName, char* now, vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>& proclist);
char* getUnti(char* unti);
void startSplitSend(char*groupId,
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList,
char *code, char *wbsNo, map<string, vector<string>> inCcpMap);
string getPlmTime(char *code);
void logProcessMsg(vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist);
void sendProcess(vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST> proclist, string& sendMsg);
void sendNotice(char *code, string errMsg, char *wbsNo, char *userName, char* projectName);

@ -8,6 +8,7 @@
#include <tccore/tc_msg.h>
#include <bom/bom.h>
#include <ics/ics.h>
#include <ics/ics2.h>
#include <time.h>
#define EPM_HANDLER_COMMON
@ -18,9 +19,27 @@ using namespace std;
#define ERROR_QRY_NOT_FOUND (EMH_USER_error_base + 120)
int readBomMsg(vector<tag_t> uidList,char * groupName,char* groupUid, char*code, char*userName);
//int readBomMsg(vector<tag_t> uidList,char * groupName,char* groupUid, char*code, char*userName);
void getCcpAndBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName);
void Split(string strArg, string spliter, vector<string>& ans);
tag_t getSAPPart(tag_t rev, char* groupName);
tag_t getZYDesign(tag_t rev);
boolean vecContains(vector<string> vec, string str);
char* getZYSAPMENGE(tag_t design, tag_t part, tag_t line, boolean isBottom, char* codeMark, string& errMsg);
tag_t getBOMPart(tag_t line, char* groupName);
vector<tag_t> addLastRev(map<tag_t, vector<tag_t>> items2);
void SAPZYGG2(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName);
void SAPZZNewOp(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* type);
void getKTBom(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* projectName);
typedef struct {
string ID;
}DFL_ID;

@ -0,0 +1,111 @@
/*
www.sourceforge.net/projects/tinyxml
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product documentation
would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
*/
#ifndef TIXML_USE_STL
#include "tinystr.h"
// Error value for find primitive
const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1);
// Null rep.
TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } };
void TiXmlString::reserve (size_type cap)
{
if (cap > capacity())
{
TiXmlString tmp;
tmp.init(length(), cap);
memcpy(tmp.start(), data(), length());
swap(tmp);
}
}
TiXmlString& TiXmlString::assign(const char* str, size_type len)
{
size_type cap = capacity();
if (len > cap || cap > 3*(len + 8))
{
TiXmlString tmp;
tmp.init(len);
memcpy(tmp.start(), str, len);
swap(tmp);
}
else
{
memmove(start(), str, len);
set_size(len);
}
return *this;
}
TiXmlString& TiXmlString::append(const char* str, size_type len)
{
size_type newsize = length() + len;
if (newsize > capacity())
{
reserve (newsize + capacity());
}
memmove(finish(), str, len);
set_size(newsize);
return *this;
}
TiXmlString operator + (const TiXmlString & a, const TiXmlString & b)
{
TiXmlString tmp;
tmp.reserve(a.length() + b.length());
tmp += a;
tmp += b;
return tmp;
}
TiXmlString operator + (const TiXmlString & a, const char* b)
{
TiXmlString tmp;
TiXmlString::size_type b_len = static_cast<TiXmlString::size_type>( strlen(b) );
tmp.reserve(a.length() + b_len);
tmp += a;
tmp.append(b, b_len);
return tmp;
}
TiXmlString operator + (const char* a, const TiXmlString & b)
{
TiXmlString tmp;
TiXmlString::size_type a_len = static_cast<TiXmlString::size_type>( strlen(a) );
tmp.reserve(a_len + b.length());
tmp.append(a, a_len);
tmp += b;
return tmp;
}
#endif // TIXML_USE_STL

@ -0,0 +1,305 @@
/*
www.sourceforge.net/projects/tinyxml
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product documentation
would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
*/
#ifndef TIXML_USE_STL
#ifndef TIXML_STRING_INCLUDED
#define TIXML_STRING_INCLUDED
#include <assert.h>
#include <string.h>
/* The support for explicit isn't that universal, and it isn't really
required - it is used to check that the TiXmlString class isn't incorrectly
used. Be nice to old compilers and macro it here:
*/
#if defined(_MSC_VER) && (_MSC_VER >= 1200 )
// Microsoft visual studio, version 6 and higher.
#define TIXML_EXPLICIT explicit
#elif defined(__GNUC__) && (__GNUC__ >= 3 )
// GCC version 3 and higher.s
#define TIXML_EXPLICIT explicit
#else
#define TIXML_EXPLICIT
#endif
/*
TiXmlString is an emulation of a subset of the std::string template.
Its purpose is to allow compiling TinyXML on compilers with no or poor STL support.
Only the member functions relevant to the TinyXML project have been implemented.
The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase
a string and there's no more room, we allocate a buffer twice as big as we need.
*/
class TiXmlString
{
public :
// The size type used
typedef size_t size_type;
// Error value for find primitive
static const size_type npos; // = -1;
// TiXmlString empty constructor
TiXmlString () : rep_(&nullrep_)
{
}
// TiXmlString copy constructor
TiXmlString ( const TiXmlString & copy) : rep_(0)
{
init(copy.length());
memcpy(start(), copy.data(), length());
}
// TiXmlString constructor, based on a string
TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0)
{
init( static_cast<size_type>( strlen(copy) ));
memcpy(start(), copy, length());
}
// TiXmlString constructor, based on a string
TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0)
{
init(len);
memcpy(start(), str, len);
}
// TiXmlString destructor
~TiXmlString ()
{
quit();
}
TiXmlString& operator = (const char * copy)
{
return assign( copy, (size_type)strlen(copy));
}
TiXmlString& operator = (const TiXmlString & copy)
{
return assign(copy.start(), copy.length());
}
// += operator. Maps to append
TiXmlString& operator += (const char * suffix)
{
return append(suffix, static_cast<size_type>( strlen(suffix) ));
}
// += operator. Maps to append
TiXmlString& operator += (char single)
{
return append(&single, 1);
}
// += operator. Maps to append
TiXmlString& operator += (const TiXmlString & suffix)
{
return append(suffix.data(), suffix.length());
}
// Convert a TiXmlString into a null-terminated char *
const char * c_str () const { return rep_->str; }
// Convert a TiXmlString into a char * (need not be null terminated).
const char * data () const { return rep_->str; }
// Return the length of a TiXmlString
size_type length () const { return rep_->size; }
// Alias for length()
size_type size () const { return rep_->size; }
// Checks if a TiXmlString is empty
bool empty () const { return rep_->size == 0; }
// Return capacity of string
size_type capacity () const { return rep_->capacity; }
// single char extraction
const char& at (size_type index) const
{
assert( index < length() );
return rep_->str[ index ];
}
// [] operator
char& operator [] (size_type index) const
{
assert( index < length() );
return rep_->str[ index ];
}
// find a char in a string. Return TiXmlString::npos if not found
size_type find (char lookup) const
{
return find(lookup, 0);
}
// find a char in a string from an offset. Return TiXmlString::npos if not found
size_type find (char tofind, size_type offset) const
{
if (offset >= length()) return npos;
for (const char* p = c_str() + offset; *p != '\0'; ++p)
{
if (*p == tofind) return static_cast< size_type >( p - c_str() );
}
return npos;
}
void clear ()
{
//Lee:
//The original was just too strange, though correct:
// TiXmlString().swap(*this);
//Instead use the quit & re-init:
quit();
init(0,0);
}
/* Function to reserve a big amount of data when we know we'll need it. Be aware that this
function DOES NOT clear the content of the TiXmlString if any exists.
*/
void reserve (size_type cap);
TiXmlString& assign (const char* str, size_type len);
TiXmlString& append (const char* str, size_type len);
void swap (TiXmlString& other)
{
Rep* r = rep_;
rep_ = other.rep_;
other.rep_ = r;
}
private:
void init(size_type sz) { init(sz, sz); }
void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; }
char* start() const { return rep_->str; }
char* finish() const { return rep_->str + rep_->size; }
struct Rep
{
size_type size, capacity;
char str[1];
};
void init(size_type sz, size_type cap)
{
if (cap)
{
// Lee: the original form:
// rep_ = static_cast<Rep*>(operator new(sizeof(Rep) + cap));
// doesn't work in some cases of new being overloaded. Switching
// to the normal allocation, although use an 'int' for systems
// that are overly picky about structure alignment.
const size_type bytesNeeded = sizeof(Rep) + cap;
const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int );
rep_ = reinterpret_cast<Rep*>( new int[ intsNeeded ] );
rep_->str[ rep_->size = sz ] = '\0';
rep_->capacity = cap;
}
else
{
rep_ = &nullrep_;
}
}
void quit()
{
if (rep_ != &nullrep_)
{
// The rep_ is really an array of ints. (see the allocator, above).
// Cast it back before delete, so the compiler won't incorrectly call destructors.
delete [] ( reinterpret_cast<int*>( rep_ ) );
}
}
Rep * rep_;
static Rep nullrep_;
} ;
inline bool operator == (const TiXmlString & a, const TiXmlString & b)
{
return ( a.length() == b.length() ) // optimization on some platforms
&& ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare
}
inline bool operator < (const TiXmlString & a, const TiXmlString & b)
{
return strcmp(a.c_str(), b.c_str()) < 0;
}
inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); }
inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; }
inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); }
inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); }
inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; }
inline bool operator == (const char* a, const TiXmlString & b) { return b == a; }
inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); }
inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); }
TiXmlString operator + (const TiXmlString & a, const TiXmlString & b);
TiXmlString operator + (const TiXmlString & a, const char* b);
TiXmlString operator + (const char* a, const TiXmlString & b);
/*
TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.
Only the operators that we need for TinyXML have been developped.
*/
class TiXmlOutStream : public TiXmlString
{
public :
// TiXmlOutStream << operator.
TiXmlOutStream & operator << (const TiXmlString & in)
{
*this += in;
return *this;
}
// TiXmlOutStream << operator.
TiXmlOutStream & operator << (const char * in)
{
*this += in;
return *this;
}
} ;
#endif // TIXML_STRING_INCLUDED
#endif // TIXML_USE_STL

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,52 @@
/*
www.sourceforge.net/projects/tinyxml
Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any
damages arising from the use of this software.
Permission is granted to anyone to use this software for any
purpose, including commercial applications, and to alter it and
redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product documentation
would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and
must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
*/
#include "tinyxml.h"
// The goal of the seperate error file is to make the first
// step towards localization. tinyxml (currently) only supports
// english error messages, but the could now be translated.
//
// It also cleans up the code a bit.
//
const char* TiXmlBase::errorString[ TiXmlBase::TIXML_ERROR_STRING_COUNT ] =
{
"No error",
"Error",
"Failed to open file",
"Error parsing Element.",
"Failed to read Element name",
"Error reading Element value.",
"Error reading Attributes.",
"Error: empty tag.",
"Error reading end tag.",
"Error parsing Unknown.",
"Error parsing Comment.",
"Error parsing Declaration.",
"Error document empty.",
"Error null (0) or unexpected EOF found in input stream.",
"Error parsing CDATA.",
"Error when TiXmlDocument added to document, because TiXmlDocument can only be at the root.",
};

File diff suppressed because it is too large Load Diff

@ -299,7 +299,7 @@ string get_excel_data(libxl::Book *book, libxl::Sheet *sheet, int row, int col)
void log(const char* format, ...) {
va_list arg;
char tmp[2000];
char tmp[8192];
//get the message
memset(tmp, 0, sizeof(tmp));
@ -312,4 +312,9 @@ void log(const char* format, ...) {
//print message to log file
info(tmp);
}
void log2(string msg) {
printf("%s\n", msg.c_str());
info(msg.c_str());
}

@ -68,6 +68,7 @@ string get_excel_data(libxl::Book *book, libxl::Sheet *sheet, int row, int col);
void trim(string &s);
void log(const char* format, ...);
void log2(string msg);
#define SAFECALL( argument ) \
{ \

@ -5,9 +5,9 @@ z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\soapsi_uscorepr
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\soapsi_uscorefactory_uscorenumber_uscoreplm_uscoreout_uscoresynbindingproxy.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\soapsio_uscorebom_uscoreplm_uscoreasynbindingproxy.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\soapc.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\sapzygg2.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\readbommsg.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\ocilib.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\getbomprop.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\ebomtopbom.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\crul_server_call_httpserver.obj
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\createprocesstmp.obj
@ -19,6 +19,3 @@ z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\msado15.tlh
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\bomtosapopt.tlog\cl.command.1.tlog
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\bomtosapopt.tlog\cl.read.1.tlog
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\bomtosapopt.tlog\cl.write.1.tlog
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\bomtosapopt.tlog\link.command.1.tlog
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\bomtosapopt.tlog\link.read.1.tlog
z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\bomtosapopt.tlog\link.write.1.tlog

@ -1,8 +1,8 @@
生成启动时间为 2024/3/8 16:55:29
生成启动时间为 2024/4/16 16:26:14
1>项目“Z:\TC_install\ZhengTai\c\GetBOMProp\DFL_BOM_WL_TOERP\DFL_BOM_WL_TOERP.vcxproj”在节点 2 上(Build 个目标)。
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(392,5): warning MSB8028: The intermediate directory (x64\Release\) contains files shared from another project (DFL_BOM_WL_TOERP1.vcxproj, DFL_BOM_WL_TOERP.vcxproj, GetBomMessage.vcxproj, GetBOMProp.vcxproj, GetBOMProp2.vcxproj). This can lead to incorrect clean and rebuild behavior.
1>ClCompile:
D:\VS2015\VC\bin\x86_amd64\CL.exe /c /IZ:\TC_install\ZhengTai\c\GetBOMProp\packages\sqdlog.1.0.0\build\..\lib\native\include\ /IZ:\TC_install\ZhengTai\c\sdplog\include /I"Z:\TC_install\ZhengTai\c\libcurl-vc15-x64-release-dll-ipv6-sspi-schannel\include" /IZ:\TC_install\YSR\c\clib\OCI\include /IZ:\TC_install\jingdiao\c\tclib\include /IZ:\TC_install\jingdiao\c\tclib\include_cpp /IZ:\TC_install\ZhengTai\c\libxl\include /Zi /nologo /W3 /WX- /sdl /O2 /Oi /GL /D WIN32 /D NDEBUG /D _CONSOLE /D IPLIB=none /D _UNICODE /D UNICODE /Gm- /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"x64\Release\\" /Fd"x64\Release\vc140.pdb" /Gd /TP /errorReport:prompt /D _CRT_SECURE_NO_WARNINGS BOMSendSap.cpp
D:\VS2015\VC\bin\x86_amd64\CL.exe /c /IZ:\TC_install\ZhengTai\c\GetBOMProp\packages\sqdlog.1.0.0\build\..\lib\native\include\ /IZ:\TC_install\ZhengTai\c\sdplog\include /I"Z:\TC_install\ZhengTai\c\libcurl-vc15-x64-release-dll-ipv6-sspi-schannel\include" /IZ:\TC_install\YSR\c\clib\OCI\include /IZ:\TC_install\jingdiao\c\tclib\include /IZ:\TC_install\jingdiao\c\tclib\include_cpp /IZ:\TC_install\ZhengTai\c\libxl\include /Zi /nologo /W3 /WX- /sdl /O2 /Oi /GL /D WIN32 /D NDEBUG /D _CONSOLE /D IPLIB=none /D _UNICODE /D UNICODE /Gm- /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"x64\Release\\" /Fd"x64\Release\vc140.pdb" /Gd /TP /errorReport:prompt /D _CRT_SECURE_NO_WARNINGS BOMSendSap.cpp GetBOMProp.cpp SAPZYGG2.cxx
BOMSendSap.cpp
1>D:\VS2015\VC\include\xlocale(341): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
1>Z:\TC_install\jingdiao\c\tclib\include\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
@ -41,54 +41,195 @@
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\epm/EPMTask.hxx(1086): warning C4251: “Teamcenter::EPMTask::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::EPMTask”的客户端使用
1>Z:\TC_install\ZhengTai\c\GetBOMProp\packages\sqdlog.1.0.0\lib\native\include\spdlog/fmt/bundled/core.h(327): warning C4566: 由通用字符名称“\u00B5”表示的字符不能在当前代码页(936)中表示出来
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/Item.hxx(347): warning C4251: “Teamcenter::Item::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::Item”的客户端使用
1>BOMSendSap.cpp(149): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(190): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(201): warning C4244: “初始化”: 从“__int64”转换到“int”可能丢失数据
1>BOMSendSap.cpp(233): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(282): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(316): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(331): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(151): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(194): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(205): warning C4244: “初始化”: 从“__int64”转换到“int”可能丢失数据
1>BOMSendSap.cpp(237): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(286): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(320): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(335): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(332): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(336): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(333): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(337): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(384): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
1>BOMSendSap.cpp(389): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/workspaceobject.h(887): note: 参见“WSOM_where_referenced”的声明
1>BOMSendSap.cpp(463): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(552): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(606): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(580): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(479): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(568): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(622): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(596): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(581): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(597): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(582): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(598): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(583): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(599): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(584): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(600): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(585): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(601): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(708): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(660): warning C4101: “itemID”: 未引用的局部变量
1>BOMSendSap.cpp(963): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(910): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(724): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(676): warning C4101: “itemID”: 未引用的局部变量
1>BOMSendSap.cpp(979): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(926): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(922): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
1>BOMSendSap.cpp(938): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/workspaceobject.h(887): note: 参见“WSOM_where_referenced”的声明
1>BOMSendSap.cpp(1146): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(1160): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(1059): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(1162): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(1176): warning C4267: “=”: 从“size_t”转换到“int”可能丢失数据
1>BOMSendSap.cpp(1075): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(1602): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
1>BOMSendSap.cpp(1661): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/workspaceobject.h(887): note: 参见“WSOM_where_referenced”的声明
1>BOMSendSap.cpp(1623): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(1682): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(1624): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
1>BOMSendSap.cpp(1683): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>BOMSendSap.cpp(1787): warning C4101: “revUid”: 未引用的局部变量
1>BOMSendSap.cpp(1800): warning C4101: “ccp”: 未引用的局部变量
1>D:\VS2015\VC\include\exception(361): warning C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
GetBOMProp.cpp
1>D:\VS2015\VC\include\xlocale(341): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
1>Z:\TC_install\jingdiao\c\tclib\include\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>Z:\TC_install\jingdiao\c\tclib\include\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\base_utils/IFail.hxx(114): warning C4251: “IFail::m_message”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“IFail”的客户端使用
1>Z:\TC_install\ZhengTai\c\GetBOMProp\packages\sqdlog.1.0.0\lib\native\include\spdlog/fmt/bundled/core.h(327): warning C4566: 由通用字符名称“\u00B5”表示的字符不能在当前代码页(936)中表示出来
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/RootObject.hxx(90): warning C4251: “Teamcenter::RootObject::m_typeName”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::RootObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/RootObject.hxx(95): warning C4251: “Teamcenter::RootObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::RootObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/OperationInput.hxx(414): warning C4251: “Teamcenter::OperationInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::OperationInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/BulkInput.hxx(120): warning C4251: “Teamcenter::BulkInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::BulkInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/BulkData.hxx(123): warning C4251: “Teamcenter::BulkData::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::BulkData”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/DeepCopyData.hxx(93): warning C4251: “Teamcenter::DeepCopyData::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::DeepCopyData”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/CreateInput.hxx(140): warning C4251: “Teamcenter::CreateInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::CreateInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/SaveAsInput.hxx(93): warning C4251: “Teamcenter::SaveAsInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::SaveAsInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/BusinessObject.hxx(666): warning C4251: “Teamcenter::BusinessObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::BusinessObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\extensionframework/OperationDispatcher.hxx(439): warning C4251: “Teamcenter::OperationDispatcher::m_boName”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::OperationDispatcher”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/POM_object.hxx(253): warning C4251: “Teamcenter::POM_object::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::POM_object”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore\imantype.hxx(225): warning C4251: “Teamcenter::ImanType::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::ImanType”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/FeatureKeyCheck.hxx(55): warning C4251: “Teamcenter::FeatureKeyCheck::featureKey”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::FeatureKeyCheck”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/FeatureKeyCheck.hxx(74): warning C4251: “Teamcenter::FeatureKeyCheckAND::featureKeyChecks”: class“std::vector<Teamcenter::FeatureKeyCheck *,std::allocator<_Ty>>”需要有 dll 接口由 class“Teamcenter::FeatureKeyCheckAND”的客户端使用
with
[
_Ty=Teamcenter::FeatureKeyCheck *
]
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/FeatureKeyCheck.hxx(95): warning C4251: “Teamcenter::FeatureKeyCheckOR::featureKeyChecks”: class“std::vector<Teamcenter::FeatureKeyCheck *,std::allocator<_Ty>>”需要有 dll 接口由 class“Teamcenter::FeatureKeyCheckOR”的客户端使用
with
[
_Ty=Teamcenter::FeatureKeyCheck *
]
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/ReviseInput.hxx(93): warning C4251: “Teamcenter::ReviseInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::ReviseInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/RuntimeBusinessObject.hxx(93): warning C4251: “Teamcenter::RuntimeBusinessObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::RuntimeBusinessObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tc/Fnd0BaseProvider.hxx(103): warning C4251: “Teamcenter::Fnd0BaseProvider::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::Fnd0BaseProvider”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/POM_application_object.hxx(149): warning C4251: “Teamcenter::POM_application_object::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::POM_application_object”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/WorkspaceObject.hxx(567): warning C4251: “Teamcenter::WorkspaceObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::WorkspaceObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/ItemRevision.hxx(518): warning C4251: “Teamcenter::ItemRevision::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::ItemRevision”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\epm/EPMTask.hxx(1086): warning C4251: “Teamcenter::EPMTask::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::EPMTask”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/Item.hxx(347): warning C4251: “Teamcenter::Item::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::Item”的客户端使用
1>GetBOMProp.cpp(85): warning C4101: “revUid”: 未引用的局部变量
1>GetBOMProp.cpp(98): warning C4101: “ccp”: 未引用的局部变量
1>D:\VS2015\VC\include\limits(214): warning C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
SAPZYGG2.cxx
1>Z:\TC_install\jingdiao\c\tclib\include\pom/pom/pom.h(806): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>Z:\TC_install\jingdiao\c\tclib\include\pom/pom/pom.h(5417): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>D:\VS2015\VC\include\xlocale(341): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/RootObject.hxx(90): warning C4251: “Teamcenter::RootObject::m_typeName”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::RootObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/RootObject.hxx(95): warning C4251: “Teamcenter::RootObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::RootObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/OperationInput.hxx(414): warning C4251: “Teamcenter::OperationInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::OperationInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/BulkInput.hxx(120): warning C4251: “Teamcenter::BulkInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::BulkInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/BulkData.hxx(123): warning C4251: “Teamcenter::BulkData::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::BulkData”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/DeepCopyData.hxx(93): warning C4251: “Teamcenter::DeepCopyData::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::DeepCopyData”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/CreateInput.hxx(140): warning C4251: “Teamcenter::CreateInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::CreateInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/SaveAsInput.hxx(93): warning C4251: “Teamcenter::SaveAsInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::SaveAsInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/BusinessObject.hxx(666): warning C4251: “Teamcenter::BusinessObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::BusinessObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\extensionframework/OperationDispatcher.hxx(439): warning C4251: “Teamcenter::OperationDispatcher::m_boName”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::OperationDispatcher”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/POM_object.hxx(253): warning C4251: “Teamcenter::POM_object::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::POM_object”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore\imantype.hxx(225): warning C4251: “Teamcenter::ImanType::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::ImanType”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\base_utils/IFail.hxx(114): warning C4251: “IFail::m_message”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“IFail”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/FeatureKeyCheck.hxx(55): warning C4251: “Teamcenter::FeatureKeyCheck::featureKey”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::FeatureKeyCheck”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/FeatureKeyCheck.hxx(74): warning C4251: “Teamcenter::FeatureKeyCheckAND::featureKeyChecks”: class“std::vector<Teamcenter::FeatureKeyCheck *,std::allocator<_Ty>>”需要有 dll 接口由 class“Teamcenter::FeatureKeyCheckAND”的客户端使用
with
[
_Ty=Teamcenter::FeatureKeyCheck *
]
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/FeatureKeyCheck.hxx(95): warning C4251: “Teamcenter::FeatureKeyCheckOR::featureKeyChecks”: class“std::vector<Teamcenter::FeatureKeyCheck *,std::allocator<_Ty>>”需要有 dll 接口由 class“Teamcenter::FeatureKeyCheckOR”的客户端使用
with
[
_Ty=Teamcenter::FeatureKeyCheck *
]
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/ReviseInput.hxx(93): warning C4251: “Teamcenter::ReviseInput::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::ReviseInput”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\metaframework/RuntimeBusinessObject.hxx(93): warning C4251: “Teamcenter::RuntimeBusinessObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::RuntimeBusinessObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tc/Fnd0BaseProvider.hxx(103): warning C4251: “Teamcenter::Fnd0BaseProvider::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::Fnd0BaseProvider”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/POM_application_object.hxx(149): warning C4251: “Teamcenter::POM_application_object::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::POM_application_object”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/WorkspaceObject.hxx(567): warning C4251: “Teamcenter::WorkspaceObject::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::WorkspaceObject”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/ItemRevision.hxx(518): warning C4251: “Teamcenter::ItemRevision::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::ItemRevision”的客户端使用
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\epm/EPMTask.hxx(1086): warning C4251: “Teamcenter::EPMTask::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::EPMTask”的客户端使用
1>Z:\TC_install\ZhengTai\c\GetBOMProp\packages\sqdlog.1.0.0\lib\native\include\spdlog/fmt/bundled/core.h(327): warning C4566: 由通用字符名称“\u00B5”表示的字符不能在当前代码页(936)中表示出来
1>Z:\TC_install\jingdiao\c\tclib\include_cpp\tccore/Item.hxx(347): warning C4251: “Teamcenter::Item::name”: class“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”需要有 dll 接口由 class“Teamcenter::Item”的客户端使用
1>SAPZYGG2.cxx(46): warning C4996: 'ICS_search_instances': "ICS_search_instances" deprecated in Teamcenter "11.2.2"; Use "ICS_ico_search" instead.
Z:\TC_install\jingdiao\c\tclib\include\ics/ics.h(187): note: 参见“ICS_search_instances”的声明
1>SAPZYGG2.cxx(271): warning C4267: “参数”: 从“size_t”转换到“int”可能丢失数据
1>SAPZYGG2.cxx(272): warning C4267: “参数”: 从“size_t”转换到“int”可能丢失数据
1>SAPZYGG2.cxx(239): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(242): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(248): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(255): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(258): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(282): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(377): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(380): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(382): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(408): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(434): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(436): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(442): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(458): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(513): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(586): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(590): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(602): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(604): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(648): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(658): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(701): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(703): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(740): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(743): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(744): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(745): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(746): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>SAPZYGG2.cxx(938): warning C4267: “初始化”: 从“size_t”转换到“int”可能丢失数据
1>SAPZYGG2.cxx(848): warning C4996: 'WSOM_where_referenced': "WSOM_where_referenced" deprecated in Teamcenter "11.3"; Use "WSOM_where_referenced2" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore/workspaceobject.h(887): note: 参见“WSOM_where_referenced”的声明
1>SAPZYGG2.cxx(929): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
Z:\TC_install\jingdiao\c\tclib\include\tccore\aom_prop.h(833): note: 参见“AOM_UIF_ask_value”的声明
1>D:\VS2015\VC\include\exception(361): warning C4577: 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc
Link:
D:\VS2015\VC\bin\x86_amd64\link.exe /ERRORREPORT:PROMPT /OUT:"Z:\TC_install\ZhengTai\c\GetBOMProp\x64\Release\BOMToSapOpt.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:Z:\TC_install\ZhengTai\c\sdplog\lib /LIBPATH:Z:\TC_install\jingdiao\c\tclib\lib /LIBPATH:Z:\TC_install\ZhengTai\c\libxl\lib "Z:\TC_install\ZhengTai\c\GetBOMProp\packages\sqdlog.1.0.0\build\..\lib\native\lib\*.lib" "Z:\TC_install\ZhengTai\c\sdplog\lib\*.lib" "Z:\TC_install\jingdiao\c\tclib\lib\*.lib" Z:\TC_install\jingdiao\c\tclib\lib\itk_main.obj "Z:\TC_install\ZhengTai\c\libxl\lib\*.lib" kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /NODEFAULTLIB:libuser_exits.ar.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"Z:\TC_install\ZhengTai\c\GetBOMProp\x64\Release\BOMToSapOpt.pdb" /SUBSYSTEM:CONSOLE /HEAP:"30000000","9000000" /STACK:"30000000","9000000" /OPT:REF /OPT:ICF /LTCG:incremental /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"Z:\TC_install\ZhengTai\c\GetBOMProp\x64\Release\BOMToSapOpt.lib" /MACHINE:X64 x64\Release\ado.obj
@ -100,6 +241,8 @@
x64\Release\GetBOMProp.obj
x64\Release\ocilib.obj
x64\Release\readBomMsg.obj
x64\Release\SAPZYGG2.obj
x64\Release\SAPZZNewOp.obj
x64\Release\soapC.obj
x64\Release\soapSIO_USCOREBOM_USCOREPLM_USCOREASYNBindingProxy.obj
x64\Release\soapSI_USCOREFACTORY_USCORENUMBER_USCOREPLM_USCOREOUT_USCORESYNBindingProxy.obj
@ -107,9 +250,9 @@
x64\Release\stdsoap2.obj
x64\Release\util.obj
正在生成代码
4 of 7986 functions ( 0.1%) were compiled, the rest were copied from previous compilation.
0 functions were new in current compilation
2 functions had inline decision re-evaluated but remain unchanged
13 of 8278 functions ( 0.2%) were compiled, the rest were copied from previous compilation.
1 functions were new in current compilation
109 functions had inline decision re-evaluated but remain unchanged
已完成代码的生成
1>itk_main.obj : warning LNK4099: 未找到 PDB“vc160.pdb”(使用“itk_main.obj”或在“Z:\TC_install\ZhengTai\c\GetBOMProp\x64\Release\vc160.pdb”中寻找);正在链接对象,如同没有调试信息一样
DFL_BOM_WL_TOERP.vcxproj -> Z:\TC_install\ZhengTai\c\GetBOMProp\x64\Release\BOMToSapOpt.exe
@ -117,4 +260,4 @@
已成功生成。
已用时间 00:00:12.84
已用时间 00:00:20.12

@ -3,7 +3,7 @@
// z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\msado15.tlh
//
// C++ source equivalent of type library c:\program files\common files\system\ado\msado15.dll
// compiler-generated file created 03/08/24 at 10:11:29 - DO NOT EDIT!
// compiler-generated file created 03/29/24 at 14:46:06 - DO NOT EDIT!
#pragma once
#pragma pack(push, 8)

@ -3,7 +3,7 @@
// z:\tc_install\zhengtai\c\getbomprop\dfl_bom_wl_toerp\x64\release\msado15.tli
//
// Wrapper implementations for type library c:\program files\common files\system\ado\msado15.dll
// compiler-generated file created 03/08/24 at 10:11:29 - DO NOT EDIT!
// compiler-generated file created 03/29/24 at 14:46:06 - DO NOT EDIT!
#pragma once

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save