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

1072 lines
39 KiB

This file contains ambiguous Unicode characters!

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

#include "SendSap.h"
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;
}
}
}
}
// 根据材料利用率获取组件用量
char* getMENGE(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 = stod(lylStr);
}
if (lyl > 0) {
res = dw / lyl;
}
char buffer[16];
sprintf(buffer, "%.3f", res);
log("MENGE1:%f==%s", res, buffer);
return buffer;
}
char* getSAPMENGE(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 getMENGE(stod(ZT2_TYWeight), part, codeMark);
}
}
else {// 非通用件
double zt2_DesignWeight = 0;
ITKCALL(AOM_ask_value_double(design, "zt2_DesignWeight", &zt2_DesignWeight));
char* ss = getMENGE(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;
}
}
void recurBYZZSAP(tag_t line, tag_t rev, 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* codeRemark, int unct, map<string, tag_t>& by_materials,
char* now, vector <_ns1__DT_USCOREPROCESSROUTE_USCORES4_USCOREREQ_LIST>& proclist, int level, string& errMsg, string type1, vector<string> dists) {
char *line_os = NULL;
ITKCALL(AOM_ask_value_string(line, "object_string", &line_os));
log("recurBYZZSAP line:%s\n", line_os);
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(rev, 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(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;
}
}
char *zt2_Source = NULL, *zz_os = NULL;
ITKCALL(AOM_ask_value_string(rev, "object_string", &zz_os));
ITKCALL(AOM_UIF_ask_value(rev, "zt2_Source", &zt2_Source));
log("zzRev:%s==%s\n", zz_os, 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, rev, false, gy_meops, needTCM_meops, groupName, now, proclist);
}
else {
readBopInfo1YH(meop, rev, 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, rev, partRev, groupName, gy_meops, needTCM_meops, bomIsExist, set_meops, transfer, fa,
list, codeRemark, unct, by_materials, now, proclist, level, errMsg, type1, dists);
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 *item_id = NULL;
ITKCALL(AOM_ask_value_string(rev, "item_id", &item_id));
vector<string> split;
Split(item_id, "-", split);
string item_id_cut = "";
if (split.size() > 1) {
for (int i = 0; i < split.size() - 1; i++) {
if (item_id_cut.size() > 0) {
item_id_cut.append("-");
}
item_id_cut.append(split[i]);
}
}
if (find(dists.begin(), dists.end(), type) != dists.end()) {
log("框架BOM[%s]不进行原材料展开", item_id);
return;
}
if (tc_strcmp(type, "ZT2_Design3DRevision") == 0 && tc_strcmp(zt2_Source, "自制") == 0) {
tag_t comp = NULLTAG;
map<string, string> materials;
if (tc_strcmp(type1.c_str(), "E") == 0) {
comp = getClassPartDB(rev, groupName, by_materials, materials, errMsg);
}
else {
comp = getClassPart(rev, codeRemark, unct, by_materials, errMsg);
}
// 原材料展开时投料工序获取父项的工艺首工序改为获取父项的投料工序
char *sortno = NULL;
ITKCALL(AOM_ask_value_string(line, "ZT2_ClassificationNo", &sortno));
log("工序编码 =>%s", sortno);
_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;
if (partRev != NULLTAG) {
char *zt2_MaterialNo = NULL, *zt2_WBSNo = NULL, *zt2_unit = NULL;
ITKCALL(AOM_UIF_ask_value(partRev, "zt2_MaterialNo", &zt2_MaterialNo));
log("zt2_MaterialNo ==>%s", zt2_MaterialNo);
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);
ITKCALL(AOM_UIF_ask_value(partRev, "zt2_WBSNo", &zt2_WBSNo));
if (!zt2_WBSNo || tc_strcmp(zt2_WBSNo, "") == 0) {
head.PSPNR = "";
}
else {
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 (!sortno || tc_strlen(sortno) == 0) {
char* mos = NULL;
ITKCALL(AOM_ask_value_string(rev, "object_string", &mos));
errMsg.append("自制件").append(mos).append("未投料\\n");
}
if (comp != NULLTAG) {
tag_t crev = NULLTAG;
char *os = NULL;
ITKCALL(ITEM_ask_latest_rev(comp, &crev));
ITKCALL(AOM_ask_value_string(crev, "object_string", &os));
log("原材料 =>%s", os);
//tag_t item2;
char *zt2_MaterialNo2 = NULL, *zt2_unit2 = NULL;
ITKCALL(AOM_UIF_ask_value(crev, "zt2_MaterialNo", &zt2_MaterialNo2));
if (!zt2_MaterialNo2 || tc_strlen(zt2_MaterialNo2) == 0) {
errMsg.append(line_os).append("物料号为空;");
}
//ITKCALL(ITEM_ask_item_of_rev(comp, &item2));
ITKCALL(AOM_ask_value_string(comp, "zt2_unit", &zt2_unit2));
items_item.IDNRK = zt2_MaterialNo2;
//char* unit22 = getUnti(zt2_unit2);
items_item.MEINS = zt2_unit2;
char *menge = NULL;
menge = (char*)MEM_alloc((16 + 1) * sizeof(char));
if (tc_strcmp(type1.c_str(), "E") == 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, getSAPMENGE(rev, crev, line, true, codeRemark, errMsg));
}
}
else {
tc_strcpy(menge, getSAPMENGE(rev, crev, line, true, codeRemark, errMsg));
}
items_item.MENGE = 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;
}
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;
char *c_line_os = NULL;
ITKCALL(AOM_ask_value_string(c_line_tag, "object_string", &c_line_os));
log("c_line_tag:%s\n", c_line_os);
ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &rev2));
tag_t partRev2 = getBOMPart(c_line_tag, 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, *c_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", &c_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 = c_sortno;
if (!c_sortno || tc_strlen(c_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, codeRemark, unct, by_materials, now, proclist, level, errMsg, type1, dists);
}
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_Design3Drevision的zt2_DrawingNo属性去掉后面的“-XXX”查找对象
* 获取对象的引用中MEOPRevision类型对象获取属性zt2_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, vector<string> dists, char* projectName) {
log("************** SAPZZNewOp **************");
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];
}
}
pref_cnt = 0;
char **urls = NULL;
ITKCALL(PREF_ask_char_values("CHINT_BomUrl_YB", &pref_cnt, &urls));
if (pref_cnt < 3) {
errMsgBuf.append("CHINT_BomUrl_YB首选项配置不正确\\n");
//
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = 'CHINT_BomUrl_YB首选项配置不正确' ,SAPRESULT = 'PLM检查未通过',PLMRESULT = '已发送飞书通知' where code = '%s' ";
char selectRxfs[800];
string timel;
sprintf(selectRxfs, updateSum.c_str(), code);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
//错误数据已发送飞书提醒
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
return;
}
int unct = getIcsId((char*)codeRemark.c_str(), "材料标记");
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, (char*)codeRemark.c_str(), unct, by_materials, now, proclist, 1, errMsg, type, dists);
//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, urls[1]);//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, urls[2]);
//sendBom(list);
}
else {
string time1 = getPlmTime(code);
string updateSum = "update CHINT_BOM_TO_SAP_SUM set datastatus = '没有合法BOM',organizationaltime = '%s',taskstauts = '组织完成',PLMFINISHTIME = SYSDATE where code = '%s' ";
char selectRxfs[800];
string timel;
sprintf(selectRxfs, updateSum.c_str(), time1.c_str(), code);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
}
}
void SAPPartZYOp2(vector<tag_t> ccpVector, char* projectNo, char* groupName, char* wbs,
char* now, string& errMsgBuf, char*code, char* transfer, char* userName, char* type, char* projectName) {
log("************** SAPPartZYOp2 **************");
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];
}
}
pref_cnt = 0;
char **urls = NULL;
ITKCALL(PREF_ask_char_values("CHINT_BomUrl_YB", &pref_cnt, &urls));
if (pref_cnt < 3) {
errMsgBuf.append("CHINT_BomUrl_YB首选项配置不正确\\n");
//
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = 'CHINT_BomUrl_YB首选项配置不正确' ,SAPRESULT = 'PLM检查未通过',PLMRESULT = '已发送飞书通知' where code = '%s' ";
char selectRxfs[800];
string timel;
sprintf(selectRxfs, updateSum.c_str(), code);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
//错误数据已发送飞书提醒
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
return;
}
map<tag_t, vector<_ns1__DT_USCOREBOM_USCORES4_USCOREREQ_LIST>> mapList;
map<string, vector<string>> inCcpMap;//记录单元对应的产成品物料编码
for (int len = 0; len < ccpVector.size(); len++) {
tag_t rev = ccpVector[len], *factoryNos;
char* revUid;
ITK__convert_tag_to_uid(rev, &revUid);
log("产成品UID:%s", revUid);
char *type = NULL;
ITKCALL(WSOM_ask_object_type2(rev, &type));
if (tc_strcmp(type, "ZT2_Design3DRevision") != 0 && tc_strcmp(type, "Part Revision") != 0) {
continue;
}
int num = 0;
ITKCALL(AOM_ask_value_tags(rev, "ZT2_FactoryNumber", &num, &factoryNos));
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;
}
}
}
}
if (designRev == NULLTAG) {
designRev = rev;
}
tag_t ebom_window = NULLTAG, line = NULLTAG;
ITKCALL(BOM_create_window(&ebom_window));
ITKCALL(BOM_set_window_top_line(ebom_window, NULL, designRev, NULLTAG, &line));
char *ccpMaterialNo = NULL;
ITKCALL(AOM_ask_value_string(rev, "zt2_MaterialNo", &ccpMaterialNo));
int unct = getIcsId((char*)codeRemark.c_str(), "材料标记");
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<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, groupName, 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;
}
ITKCALL(BOM_close_window(ebom_window));
}
if (mapList.size() > 0) {
//传递BOM
//logBomMsg(list);
//sendBom(list, sendMsg);
startSplitSend(groupName, mapList, code, wbs, inCcpMap, urls[2]);
//sendBom(list);
}
else {
string time1 = getPlmTime(code);
string updateSum = "update CHINT_BOM_TO_SAP_SUM set datastatus = '没有合法BOM',organizationaltime = '%s',taskstauts = '组织完成',PLMFINISHTIME = SYSDATE where code = '%s' ";
char selectRxfs[800];
string timel;
sprintf(selectRxfs, updateSum.c_str(), time1.c_str(), code);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
}
}
/**
* 壳体方案传递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 **************");
int pref_cnt = 0;
char **urls = NULL;
ITKCALL(PREF_ask_char_values("CHINT_BomUrl_YB", &pref_cnt, &urls));
if (pref_cnt < 3) {
errMsgBuf.append("CHINT_BomUrl_YB首选项配置不正确\\n");
//
string updateSum = "update CHINT_BOM_TO_SAP_SUM set \"DATASTATUS\" = 'CHINT_BomUrl_YB首选项配置不正确' ,SAPRESULT = 'PLM检查未通过',PLMRESULT = '已发送飞书通知' where code = '%s' ";
char selectRxfs[800];
string timel;
sprintf(selectRxfs, updateSum.c_str(), code);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
//错误数据已发送飞书提醒
sendNotice(code, errMsgBuf, wbs, groupName, userName, projectName);
return;
}
//记录是否有重复的出厂编号
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, urls[0]);
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, urls[1]);//proclists.push_back(proclist);//sendProcess(proclist);
}
}
}
if (mapList.size() > 0) {
//传递BOM
//logBomMsg(list);
//sendBom(list, sendMsg);
startSplitSend(groupName, mapList, code, wbs, inCcpMap, urls[2]);
//sendBom(list);
}
else {
string time1 = getPlmTime(code);
string updateSum = "update CHINT_BOM_TO_SAP_SUM set datastatus = '没有合法BOM',organizationaltime = '%s',taskstauts = '组织完成',PLMFINISHTIME = SYSDATE where code = '%s' ";
char selectRxfs[800];
string timel;
sprintf(selectRxfs, updateSum.c_str(), time1.c_str(), code);
log("selectRecord2 ===> %s\n", selectRxfs);
ExecuteSQLNoInputParam(selectRxfs);
ExecuteSQLNoInputParam((char*)"commit");
}
}