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.

1528 lines
56 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 "dfl_custom.h"
//#include <tc/envelope.h>
//#include <base_utils/IFail.hxx>
//#include <base_utils/TcResultStatus.hxx>
//#include <tccore/aom_prop.h>
//#include "ado.h"
//#include <tccore\aom.h>
//#include <tccore\aom_prop.h>
//#include "rapidjson/document.h"
//#include <tccore/uom.h>
//#include "rapidjson/writer.h"
//#include <sstream>
//#include <iostream>
//#include <fstream>
//#include "ocilib.h"
//#include <regex>
//#include <tccore/grm.h>
//#include <bom/bom.h>
//#include <cfm/cfm.h>
//#include <me/me.h>
//#include <property/nr.h>
//#include <tccore/aom.h>
//#include <tccore/item.h>
//#include <tccore/workspaceobject.h>
//
//extern "C" int POM_AM__set_application_bypass(logical bypass);
////正则判断是否为 线圈 "1ZDB581000X-00055"; 线圈申请P物料
//regex qq_reg("^1ZDB5.*\\d{1,}1000X.*"); //\\d{5,}$
//struct newCBean
//{
// int num;
// tag_t cLine;
//};
//struct EBomBean
//{
// boolean istop = false;
// vector<tag_t> topCcp;
// tag_t eRev; //原来的e物料
// tag_t eBomline; //Ebom行
// vector <tag_t> pRev; //另存的P物料
// tag_t pBomline = NULL; //PBOM
// tag_t designRev; //E物料的图纸
// vector<EBomBean> parentBean; //遍历EBOM时候的父级
// vector<newCBean> c_lines; //EBOM中的子件 只有线圈用
//};
//
///*
//primaryTag版本
//secondTag数据集
//relationType关系
//*/
//string Sql2 = "select t.PrhName,t.PrdLine,t.PrdNo,t.PrdFeatureCode,t.FeatureName,t.PrdCanInput,t.PrdSign from CcemVW_Prd t where t.prhcode = '%s' order by t.PrdNo";
//string Sql1 = "select t.PmpcPrhCode, t.PmpcPType,t.PmpcMType from CcemVW_Pmpc t where t.PmpcCode='%s'";
//string m_code1 = "230101001";
//string m_code2 = "220103001";
//
//struct PRD
//{
// string prdFeatureCode;
// string featureName;
//};
//struct PMPC
//{
// string m_code;
// string pmpcPrhCode;
// string pmpcPType;
// string pmpcMType;
//};
//PMPC pmpc;
//vector<PRD> prds;
//void save_representation2222(tag_t primaryTag, tag_t secondTag, char* relationType)
//{
//
// //POM_AM__set_application_bypass(true);
// tag_t typeTag = NULLTAG;
// ITKCALL(GRM_find_relation_type(relationType, &typeTag));
//
// ITKCALL(AOM_refresh(primaryTag, TRUE));
// ITKCALL(AOM_refresh(secondTag, TRUE));
// tag_t relationTag = NULLTAG;
// ITKCALL(GRM_create_relation(primaryTag, secondTag, typeTag, NULLTAG, &relationTag));//如果关系已经存在,那么就是增加对象
//
// ITKCALL(GRM_save_relation(relationTag));//很必要
// ITKCALL(AOM_save(primaryTag));
// ITKCALL(AOM_save(secondTag));
// ITKCALL(AOM_refresh(primaryTag, FALSE));
// ITKCALL(AOM_refresh(secondTag, FALSE));
// //POM_AM__set_application_bypass(false);
//
//}
//void replaceBom(tag_t newTopLine, tag_t newChild) {
// int c_line_count, cnt2, numFac;
// tag_t* c_line_tags;
// char* uid1;
// ITK__convert_tag_to_uid(newChild, &uid1);
// ITKCALL(BOM_line_ask_all_child_lines(newTopLine, &c_line_count, &c_line_tags));
// for (int t = 0; t < c_line_count; t++) {
// tag_t c_line_tag = c_line_tags[t], eRev;
// ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
// char* uid2;
// ITK__convert_tag_to_uid(eRev, &uid2);
// if (strcmp(uid2, uid1) == 0) {
// BOM_line_replace(c_line_tag, NULLTAG, newChild, NULLTAG);
// }
// }
//
//}
//string sql_query = "select FeatureList from CcemVW_GoodsFeature where GoodsCode ='%s' ";
//void saveAsCycle(EBomBean& childPm, map<string, tag_t>& map,tag_t& topPrev) {
// tag_t tcType, newItem, newRev;
// char* newId;
// if (childPm.parentBean.size() > 0) {
// saveAsCycle(childPm.parentBean[0], map, topPrev);
// }
// printf("1===>%d\n", childPm.pRev.size());
// char* eRevUid, * zt2_ifpbom;
// AOM_ask_value_string(childPm.eRev, "zt2_ifpbom", &zt2_ifpbom);
// if (strcmp(zt2_ifpbom, "P") == 0) {
// if (childPm.pRev.size() == 0) {
// childPm.pRev.push_back(childPm.eRev);
// }
// return;
// }
// ITK__convert_tag_to_uid(childPm.eRev, &eRevUid);
// if (childPm.pRev.size() == 0) {
// if (map.count(eRevUid) > 0) {
// childPm.pRev.push_back(map[eRevUid]);
// }
// else {
// char* newid = NULL;
// logical isModified = FALSE;
// tag_t item_type_tag;
// TCTYPE_ask_type("Item", &item_type_tag);
// ITKCALL(USER_new_item_id(NULLTAG, item_type_tag, &isModified, &newid));
// /*ITKCALL(NR_next_value("MEProcess", "item_id", NULLTAG, "", "", "",
// NULLTAG, "", "", &next_id));*/
// printf("next_id==>%s\n", newid);
// ITKCALL(ITEM_copy_item(childPm.eRev, newid, NULL, &newItem, &newRev));
// //ITKCALL(AOM_set_value_string(newRev, "zt2_PMaterial", "PBOM"));
// char* matnrNo;
// AOM_ask_value_string(childPm.eRev, "zt2_MaterialNo", &matnrNo);
// AOM_lock(newRev);
//
// AOM_set_value_string(newRev, "zt2_ifpbom", "P");
// AOM_set_value_string(newRev, "zt2_MaterialNo", matnrNo);
// AOM_save(newRev);
// AOM_unlock(newRev);
// if (topPrev == NULLTAG) {
// topPrev = newRev;
// }
// childPm.pRev.push_back(newRev);
// map[eRevUid] = newRev;
// int num = 0, revNum = 0, tagNum = 0;
// tag_t* mantrs, dsuser, * structure_revisions, * bom_view_tags;
// AOM_ask_value_tags(childPm.eRev, "TC_Is_Represented_By", &num, &mantrs);
// if (num > 0) {
// AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions);
// AOM_ask_value_tags(newRev, "bom_view_tags", &tagNum, &bom_view_tags);
// AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newItem, dsuser, defGroup));
// ITKCALL(AOM_set_ownership(newRev, dsuser, defGroup));
// if (revNum > 0) {
// ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
// }
// if (tagNum > 0) {
// ITKCALL(AOM_set_ownership(bom_view_tags[0], dsuser, defGroup));
// }
// }
// }
// }
// if (childPm.parentBean.size() > 0) {
// EBomBean parentBean = childPm.parentBean[0];
// vector <tag_t> pRevs = parentBean.pRev;
// if (pRevs.size() > 0) {
// int bvr_count = 0, c_line_count;
// tag_t ebom_window = NULLTAG;
// tag_t bom_line = NULLTAG, * c_line_tags;
// (BOM_create_window(&ebom_window));
// tag_t* bvr_list = NULL;
// (ITEM_rev_list_bom_view_revs(pRevs[0], &bvr_count, &bvr_list));
// printf("bvr_count=%d\n", bvr_count);
//
// (BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// //ITKCALL(AOM_ask_value_tag(bom_line, "bl_line_object", &mantr));
// ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
//
// for (int ind = 0; ind < c_line_count; ind++) {
// tag_t c_line_tag = c_line_tags[ind], mantr;
// AOM_ask_value_tag(c_line_tag, "bl_line_object", &mantr);
// char* eRevUid2;
// ITK__convert_tag_to_uid(mantr, &eRevUid2);
// if (strcmp(eRevUid2, eRevUid) == 0) {
// if (childPm.pRev.size() > 0) {
// printf("eRevUid===>%s\n", eRevUid);
// ITKCALL(BOM_line_replace(c_line_tag, NULLTAG, childPm.pRev[0], NULLTAG));
// }
// }
// }
// BOM_save_window(ebom_window);
// BOM_close_window(ebom_window);
// }
// }
//}
//void getSpecs(tag_t rev, vector<string>& vec) {
// tag_t* comps;
// int cnt;
// /*AOM_ask_value_string(line, "ZT2_TYSpecifications", &ZT2_TYSpecifications);
// if (strcmp(ZT2_TYSpecifications, "") == 0) {*/
// AOM_ask_value_tags(rev, "representation_for", &cnt, &comps);
// char* zt2_Specifications;
// //if (cnt == 0) {
// AOM_ask_value_string(rev, "zt2_Specifications", &zt2_Specifications);
// vec.push_back(zt2_Specifications);
// // //}
// //}
//}
//string insertSql = "insert into chint_material(\"Code\",\"PUID\",\"PmpcCode\",\"GoodsCode\",\"GoodsName\",\"UnitCode\",\"CompanyCode\",\"BpNo\",\"Spec\",\"TeRe\",\"State\",\"User\",\"Time\",\"Condition\",\"Info\") values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',to_date('%s','yyyy-mm-dd HH24:mi:ss'),'%s','%s')";
//tag_t send1(tag_t rev, string now,
// char* user_id, vector<string>& jsons, string groupId, string spec, char* nameNum, char* idss, tag_t dcproxy) {
// //map<tag_t, vector<string>>::iterator it;
// //for (it = general_maps.begin(); it != general_maps.end(); it++) {
// char* item_id, * object_name, * zt2_DrawingNo1, * zt2_MaterialMark, * zt2_ProductModel
// , * object_desc, * zt2_SurfaceTreatment, * zt2_Source;
// AOM_ask_value_string(rev, "item_id", &item_id); //groupId
// AOM_ask_value_string(rev, "object_name", &object_name);
// AOM_ask_value_string(rev, "zt2_DrawingNo", &zt2_DrawingNo1);
// AOM_ask_value_string(rev, "zt2_MaterialMark", &zt2_MaterialMark);
// AOM_ask_value_string(rev, "zt2_ProductModel", &zt2_ProductModel);
// AOM_ask_value_string(rev, "object_desc", &object_desc);
// AOM_ask_value_string(rev, "zt2_SurfaceTreatment", &zt2_SurfaceTreatment);
// AOM_UIF_ask_value(rev, "zt2_Source", &zt2_Source);
// PMPC m_pmpc;
// vector<PRD> m_prds;
// //if (strcmp(item_id, "1ZDB") == 0) {
// m_prds = prds;
// m_pmpc = pmpc;
// printf("m_pmpc\n");
// //}
// string pmpcCode = m_pmpc.m_code;
// string prhCode = m_pmpc.pmpcPrhCode;
// string pmpcType = m_pmpc.pmpcMType;
// printf("pmpcType===>%s\n", pmpcType.c_str());
// if (pmpcType.length() == 0) {
// return NULLTAG;
// }
// string goodsCode = ""; // 申请时为空
// string prefixName = nameNum;
// string goodsName = prefixName.append(object_name);//rev.getProperty("object_name");
// string unitCode = "ST"; // 默认件真实值ST
// string companyCode = groupId;
// string mp = "M";
// if (strcmp(zt2_Source, "外购") == 0) {
// mp = "P";
// pmpcType = m_pmpc.pmpcPType;
// }
// string bpNo = item_id;//rev.getProperty("item_id"); // 非必填
// string zt2_DrawingNo = zt2_DrawingNo1;//rev.getProperty("zt2_DrawingNo");
// if (!zt2_DrawingNo.empty()) {
// if (strcmp(item_id, zt2_DrawingNo1) != 0)
// bpNo = zt2_DrawingNo1;
// }
// vector<string> vec2;
// if (strstr(bpNo.c_str(), "-") != NULL) {
// Split(bpNo, "-", vec2);
// bpNo = vec2[0].append("-").append(idss).append("-").append(vec2[1]);
// }
// string materialMark = zt2_MaterialMark;//rev.getProperty("zt2_MaterialMark"); // 非必填
//
// if (materialMark.compare("--") == 0) {
// materialMark = "";
// }
// // 产品型号 //所属产品
// string productModel = zt2_ProductModel;//rev.getProperty("zt2_ProductModel");
// string teRe = "";
// string state = ""; // 申请时为空
// string wbs = "";
// string product = "";
// string user = user_id;
// string time = now;
// string condition = "审核中";// 默认审核中
// string desc = object_desc;// properties[5];//rev.getProperty("object_desc");
// //for (int i = 0; i < specs.size(); i++) {
// string json = "{";
// string sql22 = "select CHINT_MATERIAL_SEQ.nextval as sid from dual";
// int colmun2 = 0, count2 = 0;
// char*** outputValue2 = NULL;
// printf("search1");
// QuerySQLNoInputParam((char*)sql22.c_str(), &colmun2, &count2, &outputValue2);
// char* projn = "";
// if (count2 > 0) {
// projn = outputValue2[0][0];
// }
// printf("projn===>%s\n", projn);
// json.append("\"Code\":\"").append(projn).append("\",");
// //string spec = specs[i]; // 非必填
// string feature = "\"Feature\":{";
// for (int j = 0; j < m_prds.size(); j++) {
// PRD prd = m_prds[j];
// //System.out.println(prd.prdFeatureCode + "-" + prd.featureName);
// if (strstr(prd.featureName.c_str(), "材质") != NULL) {
// feature.append("\"").append(prd.prdFeatureCode).append("\":\"")
// .append(zt2_MaterialMark).append("\",");
// }
// else if (strstr(prd.featureName.c_str(), "名称") != NULL) {
// feature.append("\"").append(prd.prdFeatureCode).append("\":\"")
// .append(goodsName).append("\",");
// }
// else if (strstr(prd.featureName.c_str(), "型号") != NULL || strstr(prd.featureName.c_str(), "规格") != NULL) {
// feature.append("\"").append(prd.prdFeatureCode).append("\":\"")
// .append(spec).append("\",");
// }
// else if (strstr(prd.featureName.c_str(), "图样代号") != NULL) {
// feature.append("\"").append(prd.prdFeatureCode).append("\":\"")
// .append(bpNo).append("\",");
// }
// else if (strstr(prd.featureName.c_str(), "所属产品") != NULL) {
// feature.append("\"").append(prd.prdFeatureCode).append("\":\"")
// .append(zt2_ProductModel).append("\",");
// }
// else {
// feature.append("\"").append(prd.prdFeatureCode).append("\":\"").append("\",");
// }
// }
//
// if (strcmp(zt2_SurfaceTreatment, "") != 0) {
// feature.append("\"").append("F067").append("\":\"").append(zt2_SurfaceTreatment).append("\"");
// }
// else {
// feature = feature.substr(0, feature.length() - 1);
// }
// //feature.substr(0, feature.length());
// feature.append("},");
// string data = json;
// data.append("\"Data\":[{");
// data.append("\"PrhCode").append("\":\"").append(prhCode).append("\",");
// data.append("\"PmpcCode").append("\":\"").append(pmpcCode).append("\",");
// data.append("\"PmpcType").append("\":\"").append(pmpcType).append("\",");
// data.append("\"UnitCode").append("\":\"").append(unitCode).append("\",");
// data.append("\"CompanyCode").append("\":\"").append(companyCode).append("\",");
// data.append("\"UserCode").append("\":\"").append(user).append("\",");
// data.append("\"MP").append("\":\"").append(mp).append("\",");
// data.append(feature);
// data.append("\"ProductGroupCode").append("\":\"").append("\",");
// data.append("\"AssistUnitCode").append("\":\"").append("\",");
// data.append("\"UnitQty").append("\":\"").append("\",");
// data.append("\"AssistUnitQty").append("\":\"").append("\",");
// data.append("\"Desc").append("\":\"").append(desc).append("\"");
// data.append("}]}");
// jsons.push_back(data);
// tag_t newItem, newRev, pitem;
// ITKCALL(ITEM_create_item(NULL, goodsName.c_str(), "Part", NULL, &newItem, &newRev));
// AOM_lock(newItem);
// AOM_lock(newRev);
// ITKCALL(AOM_set_value_string(newRev, "zt2_Factory", groupId.c_str()));
// ITKCALL(AOM_set_value_string(newRev, "object_desc", spec.c_str()));
// ITKCALL(AOM_set_value_string(newRev, "zt2_ClassificationCode", "230101001"));
// char* zt2_unit, * newUid;
// ITK__convert_tag_to_uid(newRev, &newUid);
// ITEM_ask_item_of_rev(rev, &pitem);
// ITKCALL(AOM_ask_value_string(pitem, "zt2_unit", &zt2_unit));
// ITKCALL(AOM_set_value_string(newItem, "zt2_unit", zt2_unit));
//
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dcproxy, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newItem, dcproxy, defGroup));
// ITKCALL(AOM_set_ownership(newRev, dcproxy, defGroup));
// AOM_save(newRev);
// AOM_unlock(newRev);
// AOM_save(newItem);
// AOM_unlock(newItem);
// char selectGyId[400];
// sprintf(selectGyId, insertSql.c_str(), projn, newUid, pmpcCode.c_str(), "", goodsName.c_str(), "ST", companyCode.c_str(),
// bpNo.c_str(), spec.c_str(), "", "", user_id, now.c_str(), "审核中", "");
// ExecuteSQLNoInputParam(selectGyId);
// return newRev;
// /*uid = "";
// Object params[] = new Object[15];
// params[0] = code;
// params[1] = uid;
// params[2] = pmpcCode;
// params[3] = goodsCode;
// params[4] = goodsName;
// params[5] = unitCode;
// params[6] = companyCode;
// params[7] = bpNo;
// params[8] = spec;
// params[9] = teRe;
// params[10] = state;
// params[11] = user;
// params[12] = time;
// params[13] = condition;
// params[14] = "";*/
//}
////添加A项线圈的子行
//void addToAmatnr(tag_t* c_line_tags, int c_line_count, int len, tag_t newPAmatnr) {
//
// tag_t mantr = newPAmatnr, ebom_window, bom_line;
// tag_t* bvr_list = NULL;
// int bvr_count;
// ITKCALL(ITEM_rev_list_bom_view_revs(mantr, &bvr_count, &bvr_list));
// if (bvr_count == 0) {
// tag_t newView, newViewBvr, pitem;
// ITEM_ask_item_of_rev(mantr, &pitem);
// ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
// AOM_save(newView);
// ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, mantr, &newViewBvr));
// AOM_save(newViewBvr);
// AOM_save(mantr);
// }
// ITKCALL(BOM_create_window(&ebom_window));
// ITKCALL(BOM_set_window_top_line(ebom_window, NULL, mantr, NULLTAG, &bom_line));
//
// for (int i = 0; i < c_line_count; i++) {
// tag_t newChild;
// char* oldQty, * seqNo;
// ITKCALL(BOM_line_copy(bom_line, c_line_tags[i], NULLTAG, &newChild));
// AOM_ask_value_string(c_line_tags[i], "bl_quantity", &oldQty);
// AOM_ask_value_string(c_line_tags[i], "bl_sequence_no", &seqNo);
// int blQty = atoi(oldQty);
// int num = blQty / len;
// string numNew = to_string(num);
// AOM_lock(newChild);
// AOM_set_value_string(newChild, "bl_quantity", numNew.c_str());
// AOM_set_value_string(newChild, "bl_sequence_no", seqNo);
// AOM_save(newChild);
// AOM_unlock(newChild);
// }
//
// ITKCALL(BOM_save_window(ebom_window));
// ITKCALL(BOM_close_window(ebom_window));
//}
//char* G2U222(const char* gb2312)
//{
// int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
// wchar_t* wstr = new wchar_t[len + 1];
// memset(wstr, 0, len + 1);
// MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
// len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
// char* str = new char[len + 1];
// memset(str, 0, len + 1);
// WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
// if (wstr) delete[] wstr;
// return str;
//}
////childPm存放线圈的E物料P物料
//void replaceBom(EBomBean& childPm, map<string, tag_t>& map, int len, tag_t dcproxy,tag_t &topPrev) {
//
// vector<EBomBean> parentBeans = childPm.parentBean;
//
// //另存P物料 放到关系文件夹下
// saveAsCycle(childPm, map, topPrev);
//
// printf("saveAsCycle OVER \n");
// tag_t owning_group, owning_user;
// char* grpId, * user_id;
// int num = 0;
// tag_t* mantrs, designRev;
// string errBuff;
// ITKCALL(AOM_ask_value_tags(childPm.eRev, "TC_Is_Represented_By", &num, &mantrs));
// if (num > 0) {
// tag_t tzRev = mantrs[0];
// ITKCALL(AOM_ask_value_tag(tzRev, "owning_user", &owning_user));
// ITKCALL(AOM_ask_value_tag(tzRev, "owning_group", &owning_group));
// ITKCALL(AOM_ask_value_string(owning_group, "name", &grpId));
// ITKCALL(AOM_ask_value_string(owning_user, "user_id", &user_id));
// vector<string> specs;
// getSpecs(tzRev, specs);
// printf("获取规格结束 \n");
// time_t now;
// struct tm* p;
// time(&now);
// p = localtime(&now);
// char buffer[80];
// sprintf_s(buffer, "%04d%02d%02d %02d:%02d:%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
// string now1 = buffer;
// vector<string> jsons;
// char* names[5] = { "A相","B相","C相","D相","E相" };
// char* idss[5] = { "A","B","C","D","E" };
// tag_t axqPmatnr = childPm.pRev[0]; //另存的线圈P物料
//
// int bvr_count = 0, c_line_count;
// tag_t ebom_window = NULLTAG;
// tag_t bom_line = NULLTAG, * c_line_tags;
// tag_t* bvr_list = NULL;
// (ITEM_rev_list_bom_view_revs(axqPmatnr, &bvr_count, &bvr_list));
// printf("bvr_count=%d\n", bvr_count);
//
// if (bvr_count == 0) {
// tag_t newView, newViewBvr, pitem;
// ITEM_ask_item_of_rev(axqPmatnr, &pitem);
// ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
// AOM_save(newView);
// ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, axqPmatnr, &newViewBvr));
// AOM_save(newViewBvr);
// AOM_save(axqPmatnr);
// tag_t dsuser, * structure_revisions, * bom_view_tags;
// AOM_ask_value_tag(tzRev, "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newView, dsuser, defGroup));
// ITKCALL(AOM_set_ownership(newViewBvr, dsuser, defGroup));
// //return;
// (ITEM_rev_list_bom_view_revs(axqPmatnr, &bvr_count, &bvr_list));
// }
// (BOM_create_window(&ebom_window));
// (BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// //ITKCALL(AOM_ask_value_tag(bom_line, "bl_line_object", &mantr));
// ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
// printf("int===>%d\n", len);
// vector<tag_t> newPAmatnrs;
// for (int i = 0; i < len; i++) {
// //创建A项物料
// printf("names[i]===>%s\n", names[i]);
// tag_t newPAmatnr = send1(tzRev, now1, user_id, jsons, grpId, specs[0], names[i], idss[i], dcproxy);
// newPAmatnrs.push_back(newPAmatnr);
// addToAmatnr(c_line_tags, c_line_count, len, newPAmatnr);
// //ITKCALL(BOM_line_add(bom_line, NULLTAG, newPAmatnr, NULLTAG, &bomLineAdd));
// }
// for (int i = 0; i < c_line_count; i++) {
// ITKCALL(BOM_line_cut(c_line_tags[i]));
// }
// for (int t = 0; t < newPAmatnrs.size(); t++) {
// tag_t bomLineAdd;
// ITKCALL(BOM_line_add(bom_line, NULLTAG, newPAmatnrs[t], NULLTAG, &bomLineAdd));
// }
// //ITKCALL(AOM_save(bom_line));
// ITKCALL(BOM_save_window(ebom_window));
// ITKCALL(BOM_close_window(ebom_window));
// for (int i = 0; i < jsons.size(); i++) {
// printf("jsons ===> %s \n", jsons[i].c_str());
// string url = "http://10.128.20.35:9002/Post/PLM_Goods";
// string jsonUf = G2U222(jsons[i].c_str());
// //string msg = callHttpserver(jsonUf, url);
// }
// }
//}
////获取分类属性 判断是否整除
//int getClassVal2(tag_t topItem, string& errMessage) {
// tag_t top_classificationObject;
// ICS_ask_classification_object(topItem, &top_classificationObject);
// if (top_classificationObject == NULL_TAG)
// {
// errMessage.append("顶层对象没有发送到分类\n");
// return 0;
// }
// char* top_class_id = NULL, * top_class_name = NULL;
// //ICS_ask_class_of_classification_obj(top_classificationObject, &top_class_tag);
// //ICS_ask_id_name(top_class_tag, &top_class_id, &top_class_name);
// printf("BOM TOP LINE CLASS ID = %s | NAME = %s \n", top_class_id, top_class_name);
// int n_attrs;
// char** attr_names;
// char** attr_vals;
// ITKCALL(ICS_ask_attributes_of_classification_obj(top_classificationObject, &n_attrs, &attr_names, &attr_vals));
// cout << n_attrs << endl;
// int num = 1;
// for (int ii = 0; ii < n_attrs; ii++)
// {
// printf("attr_names[ii]==>%sTTT\n", attr_names[ii]);
// printf("attr_vals[ii]==>%sTTT\n", attr_vals[ii]);
// if (strcmp(attr_names[ii], "相数") == 0) {
// if (strcmp(attr_vals[ii], "") == 0) {
// errMessage.append("分类属性相数为空,请检查。\n");
// return 0;
// }
// else {
// printf("111[ii]==TTT\n");
// if (strstr(attr_vals[ii], "3") != NULL) {
// num = 3;
// }
// else if (strstr(attr_vals[ii], "1") != NULL) {
// num = 1;
// }
// else if (strstr(attr_vals[ii], "5") != NULL) {
// num = 5;
// }
// //num = atoi(attr_vals[ii]);
// }
// break;
// }
// }
// return num;
//}
//void recyReadEBom(tag_t pLine, EBomBean parentBean, vector<EBomBean>& beans, int len, tag_t pErev, string& errBuff) {
//
// int c_line_count, cnt2, numFac, cnt3;
// tag_t* c_line_tags;
// ITKCALL(BOM_line_ask_all_child_lines(pLine, &c_line_count, &c_line_tags));
// char* sffc, * name, * pRevId, ** sealeds, ** factorys, ** procureType;
// ITKCALL(AOM_ask_value_string(pErev, "item_id", &pRevId));
// ITKCALL(AOM_ask_value_string(pErev, "object_name", &name));
// ITKCALL(AOM_ask_value_string(pErev, "zt2_State", &sffc));
// if (strcmp(sffc, "D1") == 0 || strcmp(sffc, "封存") == 0) {
// errBuff.append("物料:").append(pRevId).append("/").append(name).append("已封存无法转换PBOM.\n");
// //return;
// }
// AOM_ask_value_strings(pErev, "zt2_SZProcuretype", &cnt3, &procureType); //包含自制
// AOM_ask_value_strings(pErev, "zt2_SZSealedornot", &cnt2, &sealeds);
// AOM_ask_value_strings(pErev, "zt2_SZFactory", &numFac, &factorys);
// for (int i = 0; i < numFac; i++) {
// if (strcmp(factorys[i], "M060") == 0 && cnt2 > i) {
// if (strcmp(sealeds[i], "Y") == 0) {
// errBuff.append("物料:").append(pRevId).append("/").append(name).append("已封存无法转换PBOM.\n");
// //return;
// }
// if (cnt3 > i && strcmp(procureType[i], "/") == 0) {
// errBuff.append("物料:").append(pRevId).append("/").append(name).append("物料不可用无法转换PBOM.\n");
// }
// }
// }
// printf("c_line_count%d===>\n", c_line_count);
// for (int i = 0; i < c_line_count; i++) {
//
// tag_t c_line_tag = c_line_tags[i], eRev;
// ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
// EBomBean cBean;
// cBean.eRev = eRev;
// cBean.eBomline = c_line_tag;
// cBean.parentBean.push_back(parentBean);
// //获取图纸对象
// //如果判断正则表达式通过 加到beans下最后检查整除并搭建
// int num = 0;
// tag_t* mantrs;
// ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
// if (num == 1) {
// char* id;
// AOM_ask_value_string(mantrs[0], "item_id", &id);
// string item_id = id;
// smatch result;
// bool ret = regex_match(item_id, result, qq_reg);
// if (ret) {
// char* zt2_ifpbom;
// AOM_ask_value_string(eRev, "zt2_ifpbom", &zt2_ifpbom);
// if (zt2_ifpbom != NULL && strcmp(zt2_ifpbom, "P") == 0) {
// continue;
// }
// int cc_cnt;
// tag_t* cc_lines;
// BOM_line_ask_all_child_lines(c_line_tag, &cc_cnt, &cc_lines);
// printf("cc_cnt===> %d item_id ==> %s \n", cc_cnt, id);
// for (int tt = 0; tt < cc_cnt; tt++) {
// tag_t cc_line = cc_lines[tt], c_eRev;
// char* bl_quantity, * pId, * c_pId;
// AOM_ask_value_string(eRev, "item_id", &pId);
// AOM_ask_value_string(cc_line, "bl_quantity", &bl_quantity);
// ITKCALL(AOM_ask_value_tag(cc_line, "bl_line_object", &c_eRev));
// AOM_ask_value_string(c_eRev, "item_id", &c_pId);
// printf("c_pId===> %s bl_quantity ==> %s len==> %d \n", c_pId, bl_quantity, len);
// if (strcmp("bl_quantity", "") == 0) {
// errBuff.append("P类物料:").append(pId).append("下子件").append(c_pId)
// .append("无法整除,请检查。").append("\n");
// }
// else {
// int blQty = atoi(bl_quantity);
// if (blQty % len != 0) {
// errBuff.append("P类物料:").append(pId).append("下子件").append(c_pId)
// .append("无法整除,请检查。").append("\n");
// }
// else {
// newCBean aBean;
// aBean.num = blQty / len;
// aBean.cLine = cc_line;
// cBean.c_lines.push_back(aBean);
// }
// }
// }
// beans.push_back(cBean);
// continue;
// }
// }
// recyReadEBom(c_line_tag, cBean, beans, len, eRev, errBuff);
// //判断子件数量是否整除 线圈数量
// }
//
//}
//tag_t findDcUser() {
// tag_t* tags;
// tag_t query = NULLTAG;
// //查询所有符合的物料编码
// ITKCALL(QRY_find2("__WEB_find_user", &query));
// if (query == NULLTAG) {
// cout << "没有找到当前查询" << endl;
// }
// int cnt;
// char** qry_entries1, ** qry_values2;
// QRY_find_user_entries(query, &cnt, &qry_entries1, &qry_values2);
// char* qry_values[1] = { "dcproxy" };
// int n_found;
// ITKCALL(QRY_execute(query, 1, qry_entries1, qry_values, &n_found, &tags));
// if (n_found == 0) {
// return NULLTAG;
// }
// else {
// return tags[0];
// }
//}
//
//class E2PBean //以class 开头
//{
//public:
// string key;//wbs号+物料号组成的标识
// tag_t pMantr; // p物料 发布升版,没发布更新,取最新版本 (不带P的移除添加)
// string revId = "";
// tag_t eMantr; // e物料
//public:
// //定义成员函数
// void isSameKey(string newKey)
// {
// if (key.compare(newKey) == 0) {
// //一样的
// }
// }
//
//};
//struct EBomUpBean
//{
// string matnrNo;
// tag_t bomline;
// vector<EBomUpBean> parentBean; //遍历EBOM时候的父级
// vector<newCBean> c_lines; //EBOM中的子件 只有线圈用
//};
////遍历EBOM 存放所有EBOM的
//void updatePbomCycle(tag_t eLine,string &errBuff,int len, EBomUpBean &upBean) {
// int c_line_count;
// tag_t *c_line_tags;
// ITKCALL(BOM_line_ask_all_child_lines(eLine, &c_line_count, &c_line_tags));
// //printf("upBean===>%s\n", upBean.matnrNo.c_str());
// for (int i = 0; i < c_line_count; i++) {
// char* ifpBom,*matnrNo;
// tag_t c_line_tag = c_line_tags[i], eRev;
// ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
// AOM_ask_value_string(eRev, "zt2_ifpbom", &ifpBom);
// AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo);
//
// EBomUpBean cBean;
// cBean.matnrNo = matnrNo;
// //printf("CChild===>%s\n", matnrNo);
// cBean.bomline = c_line_tag;
// int num = 0;
// tag_t* mantrs;
// ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
// if (num == 1) {
// char* id;
// AOM_ask_value_string(mantrs[0], "item_id", &id);
// string item_id = id;
// smatch result;
// bool ret = regex_match(item_id, result, qq_reg);
// if (ret) {
// char* zt2_ifpbom;
// AOM_ask_value_string(eRev, "zt2_ifpbom", &zt2_ifpbom);
// if (zt2_ifpbom != NULL && strcmp(zt2_ifpbom, "P") == 0) {
// continue;
// }
// int cc_cnt;
// tag_t* cc_lines;
// BOM_line_ask_all_child_lines(c_line_tag, &cc_cnt, &cc_lines);
// printf("cc_cnt===> %d item_id ==> %s \n", cc_cnt, id);
// for (int tt = 0; tt < cc_cnt; tt++) {
// tag_t cc_line = cc_lines[tt], c_eRev;
// char* bl_quantity, * pId, * c_pId;
// AOM_ask_value_string(eRev, "item_id", &pId);
// AOM_ask_value_string(cc_line, "bl_quantity", &bl_quantity);
// ITKCALL(AOM_ask_value_tag(cc_line, "bl_line_object", &c_eRev));
// AOM_ask_value_string(c_eRev, "item_id", &c_pId);
// printf("c_pId===> %s bl_quantity ==> %s len==> %d \n", c_pId, bl_quantity, len);
// if (strcmp("bl_quantity", "") == 0) {
// errBuff.append("P类物料:").append(pId).append("下子件").append(c_pId)
// .append("无法整除,请检查。").append("\n");
// }
// else {
// int blQty = atoi(bl_quantity);
// if (blQty % len != 0) {
// errBuff.append("P类物料:").append(pId).append("下子件").append(c_pId)
// .append("无法整除,请检查。").append("\n");
// }
// else {
// newCBean aBean;
// aBean.num = blQty / len;
// aBean.cLine = cc_line;
// cBean.c_lines.push_back(aBean);
// }
// }
// }
// //beans.push_back(cBean);
// //continue;
// }
// }
// updatePbomCycle(c_line_tag, errBuff, len, cBean);
// upBean.parentBean.push_back(cBean);
// }
//}
//boolean checkName(char* name) {
//
// if (strstr(name, "A相") != NULL || strstr(name, "B相") != NULL || strstr(name, "C相") != NULL
// || strstr(name, "E相") != NULL || strstr(name, "D相") != NULL ) {
// return true;
// }
// else {
// return false;
// }
//
//}
//tag_t saveAsUpdate(tag_t eRev, char *uid,tag_t pLine) {
// char* newid = NULL;
// logical isModified = FALSE;
// tag_t item_type_tag, newItem, newRev;
// TCTYPE_ask_type("Item", &item_type_tag);
// ITKCALL(USER_new_item_id(NULLTAG, item_type_tag, &isModified, &newid));
// /*ITKCALL(NR_next_value("MEProcess", "item_id", NULLTAG, "", "", "",
// NULLTAG, "", "", &next_id));*/
// printf("next_id==>%s\n", newid);
// ITKCALL(ITEM_copy_item(eRev, newid, NULL, &newItem, &newRev));
// //ITKCALL(AOM_set_value_string(newRev, "zt2_PMaterial", "PBOM"));
// char* matnrNo;
// AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo);
// AOM_lock(newRev);
//
// AOM_set_value_string(newRev, "zt2_ifpbom", "P");
// AOM_set_value_string(newRev, "zt2_MaterialNo", matnrNo);
// AOM_save(newRev);
// AOM_unlock(newRev);
//
// int num = 0, revNum = 0, tagNum = 0;
// tag_t* mantrs, dsuser, * structure_revisions, * bom_view_tags;
// AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs);
// if (num > 0) {
// AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions);
// AOM_ask_value_tags(newRev, "bom_view_tags", &tagNum, &bom_view_tags);
// AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newItem, dsuser, defGroup));
// ITKCALL(AOM_set_ownership(newRev, dsuser, defGroup));
// if (revNum > 0) {
// ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
// }
// if (tagNum > 0) {
// ITKCALL(AOM_set_ownership(bom_view_tags[0], dsuser, defGroup));
// }
// }
// {
// //ITKCALL(BOM_line_replace(newChild, NULLTAG, newRev, NULLTAG));
// int bvr_count = 0, c_line_count;
// tag_t ebom_window = NULLTAG;
// tag_t bom_line = NULLTAG, * c_line_tags;
// (BOM_create_window(&ebom_window));
// tag_t* bvr_list = NULL;
// (ITEM_rev_list_bom_view_revs(pLine, &bvr_count, &bvr_list));
// printf("bvr_count=%d\n", bvr_count);
//
// (BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// //ITKCALL(AOM_ask_value_tag(bom_line, "bl_line_object", &mantr));
// ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
//
// for (int ind = 0; ind < c_line_count; ind++) {
// tag_t c_line_tag = c_line_tags[ind], mantr;
// AOM_ask_value_tag(c_line_tag, "bl_line_object", &mantr);
// char* eRevUid2;
// ITK__convert_tag_to_uid(mantr, &eRevUid2);
// if (strcmp(eRevUid2, uid) == 0) {
// ITKCALL(BOM_line_replace(c_line_tag, NULLTAG, newRev, NULLTAG));
// }
// }
// BOM_save_window(ebom_window);
// BOM_close_window(ebom_window);
// }
// return newRev;
//}
//tag_t saveAsUpdate(tag_t eRev,tag_t newChild) {
// char* newid = NULL;
// logical isModified = FALSE;
// tag_t item_type_tag, newItem, newRev;
// TCTYPE_ask_type("Item", &item_type_tag);
// ITKCALL(USER_new_item_id(NULLTAG, item_type_tag, &isModified, &newid));
// /*ITKCALL(NR_next_value("MEProcess", "item_id", NULLTAG, "", "", "",
// NULLTAG, "", "", &next_id));*/
// printf("next_id==>%s\n", newid);
// ITKCALL(ITEM_copy_item(eRev, newid, NULL, &newItem, &newRev));
// //ITKCALL(AOM_set_value_string(newRev, "zt2_PMaterial", "PBOM"));
// char* matnrNo;
// AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo);
// AOM_lock(newRev);
//
// AOM_set_value_string(newRev, "zt2_ifpbom", "P");
// AOM_set_value_string(newRev, "zt2_MaterialNo", matnrNo);
// AOM_save(newRev);
// AOM_unlock(newRev);
//
// int num = 0, revNum = 0, tagNum = 0;
// tag_t* mantrs, dsuser, * structure_revisions, * bom_view_tags;
// AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs);
// if (num > 0) {
// AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions);
// AOM_ask_value_tags(newRev, "bom_view_tags", &tagNum, &bom_view_tags);
// AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newItem, dsuser, defGroup));
// ITKCALL(AOM_set_ownership(newRev, dsuser, defGroup));
// if (revNum > 0) {
// ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
// }
// if (tagNum > 0) {
// ITKCALL(AOM_set_ownership(bom_view_tags[0], dsuser, defGroup));
// }
// }
// {
// ITKCALL(BOM_line_replace(newChild, NULLTAG, newRev, NULLTAG));
// //int bvr_count = 0, c_line_count;
// //tag_t ebom_window = NULLTAG;
// //tag_t bom_line = NULLTAG, * c_line_tags;
// //(BOM_create_window(&ebom_window));
// //tag_t* bvr_list = NULL;
// //(ITEM_rev_list_bom_view_revs(pRevs[0], &bvr_count, &bvr_list));
// //printf("bvr_count=%d\n", bvr_count);
//
// //(BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// ////ITKCALL(AOM_ask_value_tag(bom_line, "bl_line_object", &mantr));
// //ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
//
// //for (int ind = 0; ind < c_line_count; ind++) {
// // tag_t c_line_tag = c_line_tags[ind], mantr;
// // AOM_ask_value_tag(c_line_tag, "bl_line_object", &mantr);
// // char* eRevUid2;
// // ITK__convert_tag_to_uid(mantr, &eRevUid2);
// // if (strcmp(eRevUid2, eRevUid) == 0) {
// // if (childPm.pRev.size() > 0) {
// // printf("eRevUid===>%s\n", eRevUid);
// // ITKCALL(BOM_line_replace(c_line_tag, NULLTAG, childPm.pRev[0], NULLTAG));
// // }
// // }
// //}
// //BOM_save_window(ebom_window);
// //BOM_close_window(ebom_window);
// }
// return newRev;
//}
//
//void createAXxq(tag_t eRev,tag_t pRev,int len, tag_t dcproxy) {
// tag_t owning_group, owning_user;
// char* grpId, * user_id;
// int num = 0;
// tag_t* mantrs, designRev;
// string errBuff;
// ITKCALL(AOM_ask_value_tags(eRev, "TC_Is_Represented_By", &num, &mantrs));
// if (num > 0) {
// tag_t tzRev = mantrs[0];
// ITKCALL(AOM_ask_value_tag(tzRev, "owning_user", &owning_user));
// ITKCALL(AOM_ask_value_tag(tzRev, "owning_group", &owning_group));
// ITKCALL(AOM_ask_value_string(owning_group, "name", &grpId));
// ITKCALL(AOM_ask_value_string(owning_user, "user_id", &user_id));
// vector<string> specs;
// getSpecs(tzRev, specs);
// printf("获取规格结束 \n");
// time_t now;
// struct tm* p;
// time(&now);
// p = localtime(&now);
// char buffer[80];
// sprintf_s(buffer, "%04d%02d%02d %02d:%02d:%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
// string now1 = buffer;
// vector<string> jsons;
// char* names[5] = { "A相","B相","C相","D相","E相" };
// char* idss[5] = { "A","B","C","D","E" };
// tag_t axqPmatnr = pRev; //另存的线圈P物料
//
// int bvr_count = 0, c_line_count;
// tag_t ebom_window = NULLTAG;
// tag_t bom_line = NULLTAG, * c_line_tags;
// tag_t* bvr_list = NULL;
// (ITEM_rev_list_bom_view_revs(axqPmatnr, &bvr_count, &bvr_list));
// printf("bvr_count=%d\n", bvr_count);
//
// if (bvr_count == 0) {
// tag_t newView, newViewBvr, pitem;
// ITEM_ask_item_of_rev(axqPmatnr, &pitem);
// ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
// AOM_save(newView);
// ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, axqPmatnr, &newViewBvr));
// AOM_save(newViewBvr);
// AOM_save(axqPmatnr);
// //return;
// tag_t dsuser, * structure_revisions, * bom_view_tags;
// AOM_ask_value_tag(tzRev, "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newView, dsuser, defGroup));
// ITKCALL(AOM_set_ownership(newViewBvr, dsuser, defGroup));
// (ITEM_rev_list_bom_view_revs(axqPmatnr, &bvr_count, &bvr_list));
// }
// (BOM_create_window(&ebom_window));
// (BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// //ITKCALL(AOM_ask_value_tag(bom_line, "bl_line_object", &mantr));
// ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
// printf("int===>%d\n", len);
// vector<tag_t> newPAmatnrs;
// for (int i = 0; i < len; i++) {
// //创建A项物料
// printf("names[i]===>%s\n", names[i]);
// tag_t newPAmatnr = send1(tzRev, now1, user_id, jsons, grpId, specs[0], names[i], idss[i], dcproxy);
// newPAmatnrs.push_back(newPAmatnr);
// addToAmatnr(c_line_tags, c_line_count, len, newPAmatnr);
// //ITKCALL(BOM_line_add(bom_line, NULLTAG, newPAmatnr, NULLTAG, &bomLineAdd));
// }
// for (int i = 0; i < c_line_count; i++) {
// ITKCALL(BOM_line_cut(c_line_tags[i]));
// }
// for (int t = 0; t < newPAmatnrs.size(); t++) {
// tag_t bomLineAdd;
// ITKCALL(BOM_line_add(bom_line, NULLTAG, newPAmatnrs[t], NULLTAG, &bomLineAdd));
// }
// //ITKCALL(AOM_save(bom_line));
// ITKCALL(BOM_save_window(ebom_window));
// ITKCALL(BOM_close_window(ebom_window));
// for (int i = 0; i < jsons.size(); i++) {
// printf("jsons ===> %s \n", jsons[i].c_str());
// string url = "http://10.128.20.35:9002/Post/PLM_Goods";
// string jsonUf = G2U222(jsons[i].c_str());
// //string msg = callHttpserver(jsonUf, url);
// }
// }
//}
//
//void startUpdate(EBomUpBean upBean,tag_t bom_line,int len,tag_t dcproxy) {
// vector<EBomUpBean> vecs = upBean.parentBean;
// int c_line_count = 0;
// tag_t* c_line_tags;
// vector<string> matnrVec;
// map<string, tag_t> pBomMap;
// ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
// for (int i = 0; i < c_line_count; i++) {
// char* ifpBom, * matnrNo,* name;
// tag_t c_line_tag = c_line_tags[i], eRev;
// ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &eRev));
// AOM_ask_value_string(eRev, "zt2_ifpbom", &ifpBom);
// AOM_ask_value_string(eRev, "zt2_MaterialNo", &matnrNo);
// AOM_ask_value_string(eRev, "object_name", &name);
// printf("zt2_MaterialNo ===>%s ifpBom==>%s\n", matnrNo, ifpBom);
// if (strcmp(ifpBom, "P") == 0) {
// matnrVec.push_back(matnrNo);
// pBomMap[matnrNo] = c_line_tag;
// //BOM_line_cut(c_line_tag);
// }
// else if(!checkName(name)){
// BOM_line_cut(c_line_tag);//pBomMap[matnrNo] = c_line_tag;
// }
// }
// //移除所有非P 再从EBOM复制
// printf("vecs===>%d\n", vecs.size());
// for (int i = 0; i < vecs.size(); i++) {
// EBomUpBean cupBean = vecs[i];
//
// if (std::find(matnrVec.begin(), matnrVec.end(), cupBean.matnrNo) != matnrVec.end()) {
// tag_t c_line_tag = pBomMap[cupBean.matnrNo];
// tag_t c_Rev,bomView=NULLTAG;
// ITKCALL(AOM_ask_value_tag(c_line_tag, "bl_line_object", &c_Rev));
// boolean flagAs = false;
// {
// int structs = 0, statusNum = 0;
// tag_t* structure_revisions, * release_status_list;
// AOM_ask_value_tags(c_Rev, "structure_revisions", &structs, &structure_revisions);
// if (structs > 0) {
// AOM_ask_value_tags(structure_revisions[0], "release_status_list", &statusNum, &release_status_list);
// if (statusNum > 0) {
// tag_t* mantrsAs, dsuser, pBomTop,* bvr_list;
// int revNum=0, num=0, bvr_count=0;
// ITEM_copy_rev(c_Rev, NULL, &pBomTop);
// flagAs = true;
// AOM_ask_value_tags(c_Rev, "TC_Is_Represented_By", &num, &mantrsAs);
// AOM_ask_value_tag(mantrsAs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(pBomTop, dsuser, defGroup));
// if (num > 0) {
// AOM_ask_value_tags(pBomTop, "structure_revisions", &revNum, &structure_revisions);
// if (revNum > 0) {
// ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
// }
// }
// (BOM_create_window(&bomView));
// (ITEM_rev_list_bom_view_revs(pBomTop, &bvr_count, &bvr_list));
// printf("bvr_count=%d \n", bvr_count);
// if (bvr_count == 0) {
// //errBuff.append("不存在EBOM请检查\n");
// }
// ITKCALL(BOM_set_window_top_line_bvr(bomView, bvr_list[0], &c_line_tag)); //顶层bom获取
// }
// }
// }
// printf("matnrVec ===>%s\n", cupBean.matnrNo.c_str());
// startUpdate(cupBean, c_line_tag,len, dcproxy);
// if (bomView!=NULLTAG&& flagAs) {
// BOM_save_window(bomView);
// BOM_close_window(bomView);
// }
// }
// else{
// boolean flagLc = false;
// char* seq;
// printf("matnrVecNotP===>%s\n", cupBean.matnrNo.c_str());
// tag_t cline = cupBean.bomline;
// tag_t newChild;
// ITKCALL(BOM_line_copy(bom_line, cline, NULLTAG, &newChild));
// AOM_ask_value_string(cline, "bl_sequence_no", &seq);
// AOM_lock(newChild);
// AOM_set_value_string(newChild, "bl_sequence_no", seq);
// AOM_save(newChild);
// AOM_unlock(newChild);
// tag_t c_Rev;
// ITKCALL(AOM_ask_value_tag(cline, "bl_line_object", &c_Rev));
//
// vector<EBomUpBean> ccBeans = cupBean.parentBean;
// //线圈装配
// for (int j = 0; j < ccBeans.size(); j++) {
// EBomUpBean ccBean = ccBeans[j];
// if (ccBean.c_lines.size() > 0) {
// //要另存操作
// char* uid;
// tag_t cc_Rev;
// tag_t newPrev = saveAsUpdate(c_Rev, newChild);
// ITKCALL(AOM_ask_value_tag(ccBean.bomline, "bl_line_object", &cc_Rev));
// ITK__convert_tag_to_uid(cc_Rev, &uid);
// tag_t cc_PRev = saveAsUpdate(cc_Rev, uid, newPrev);
// createAXxq(cc_Rev, cc_PRev, len, dcproxy);
// }
// }
//
// }
// }
//}
//void copyBomLine(tag_t matnrTop,tag_t otherPbom) {
// tag_t ebom_window, ebom_window2, *bvr_list, * bvr_list2, bom_line, bom_line2,* c_line_tags,* c_line_tags2;
// int bvr_count = 0, bvr_count2=0, c_line_count, c_line_count2;
// (BOM_create_window(&ebom_window));
// (ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
// printf("bvr_count=%d \n", bvr_count);
// if (bvr_count == 0) {
// //errBuff.append("不存在EBOM请检查\n");
// }
// ITKCALL(BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// printf("顶层bom获取\n");
// //ITKCALL(AOM_ask_value_tag(bom_line, "bl_line_object", &mantr));
// ITKCALL(BOM_line_ask_all_child_lines(bom_line, &c_line_count, &c_line_tags));
//
//
// (ITEM_rev_list_bom_view_revs(otherPbom, &bvr_count2, &bvr_list2));
// if (bvr_count2 == 0) {
// tag_t newView, newViewBvr,pitem;
// ITEM_ask_item_of_rev(otherPbom, &pitem);
// ITKCALL(PS_create_bom_view(NULL, NULL, NULL, pitem, &newView));
// AOM_save(newView);
// ITKCALL(PS_create_bvr(newView, NULL, NULL, FALSE, otherPbom, &newViewBvr));
// AOM_save(newViewBvr);
// AOM_save(otherPbom);
// int num = 0;
// tag_t dsuser, * structure_revisions, * bom_view_tags,* mantrs;
// ITKCALL(AOM_ask_value_tags(otherPbom, "TC_Is_Represented_By", &num, &mantrs));
// if (num == 1) {
// AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newView, dsuser, defGroup));
// ITKCALL(AOM_set_ownership(newViewBvr, dsuser, defGroup));
// }
// //return;
// (ITEM_rev_list_bom_view_revs(otherPbom, &bvr_count2, &bvr_list2));
// }
// (BOM_create_window(&ebom_window2));
// (BOM_set_window_top_line_bvr(ebom_window2, bvr_list2[0], &bom_line2)); //顶层bom获取
// ITKCALL(BOM_line_ask_all_child_lines(bom_line2, &c_line_count2, &c_line_tags2));
// for (int i = 0; i < c_line_count2; i++) {
// BOM_line_cut(c_line_tags2[i]);
// }
// for (int i = 0; i < c_line_count; i++) {
// tag_t newChild;
// ITKCALL(BOM_line_copy(bom_line2, c_line_tags[i], NULLTAG, &newChild));
// }
// //tag_t newChild;
// //ITKCALL(BOM_line_copy(bom_line2, c_line_tags[i], NULLTAG, &newChild));
//
// ITKCALL(BOM_save_window(ebom_window2));
// BOM_close_window(ebom_window2);
// BOM_close_window(ebom_window);
//}
//
//void EbomToPMethod(char* revUid, string& errBuffer) {
// int ifail = ITK_ok;
// char* sql = NULL;
// tag_t matnrRev1;
// ITK__convert_uid_to_tag(revUid, &matnrRev1);
//
// if (open("PLMUser", "PLMUser", "BDP2020", "10.128.20.35")) {
// printf("链接SQLSERVER失败\n");
// }
// else {
// printf("链接SQLSERVER成功\n");
// }
// {
// char selectRecord[200], selectRecord1[200];
// sprintf(selectRecord, Sql1.c_str(), m_code1.c_str());
// printf("执行查询 %s\n", selectRecord);
// int outputColumn = 0, outputValueCount = 0;
// char*** outputValue = NULL;
// ado_QuerySQLNoInputParam(selectRecord, &outputColumn, &outputValueCount, &outputValue);
// prds.clear();
// string pmpcPrhCode, pmpcPType, pmpcMType;
// for (int j = 0; j < outputValueCount; j++) {
// pmpcPrhCode = outputValue[j][0];
// pmpcPType = outputValue[j][1];
// pmpcMType = outputValue[j][2];
// pmpc.m_code = m_code1;
// pmpc.pmpcPrhCode = pmpcPrhCode;
// pmpc.pmpcPType = pmpcPType;
// pmpc.pmpcMType = pmpcMType;
// printf("pmpcMType====>%s\n", outputValue[j][2]);
// }
// sprintf(selectRecord1, Sql2.c_str(), pmpcPrhCode.c_str());
// int outputColumn1 = 0, outputValueCount1 = 0;
// char*** outputValue1 = NULL;
// printf("执行查询 %s\n", selectRecord1);
// ado_QuerySQLNoInputParam(selectRecord1, &outputColumn1, &outputValueCount1, &outputValue1);
// for (int j = 0; j < outputValueCount1; j++) {
// string prdFeatureCode = outputValue1[j][3];
// string featureName = outputValue1[j][4];
// PRD prd;
// prd.prdFeatureCode = prdFeatureCode;
// prd.featureName = featureName;
// prds.push_back(prd);
// }
// }
// close();
// //遍历design BOM 获取物料信息
// int bvr_count = 0, c_line_count;
// tag_t ebom_window = NULLTAG;
// tag_t bom_line = NULLTAG;
// tag_t item_tag = NULLTAG, * c_line_tags;
//
// int num = 0, num2 = 0;
// tag_t* mantrs, designRev;
// string errBuff;
// ITKCALL(AOM_ask_value_tags(matnrRev1, "TC_Is_Represented_By", &num, &mantrs));
// int len = 1;
// if (num == 1) {
// designRev = mantrs[0];
// char* itemId;
// AOM_ask_value_string(designRev, "item_id", &itemId);
// vector<string> vec2;
// Split(itemId, "-", vec2);
// string idTop = "1ZDB300000P";
// if (vec2.size() > 0) {
// idTop = idTop.append("-").append(vec2[1]);
// }
// tag_t topItem, topDesginRev;
// ITEM_find_item(idTop.c_str(), &topItem);
// ITEM_ask_latest_rev(topItem, &topDesginRev);
// len = getClassVal2(topItem, errBuff);
// printf("len%d\n", len);
// if (len > 0) {
// boolean isUpdate = false;
//
// tag_t* bvr_list = NULL, * topMatnrs;
// ITKCALL(AOM_ask_value_tags(topDesginRev, "representation_for", &num2, &topMatnrs));
// //tag_t matnrTop = NULLTAG;
// printf("num2===>%d\n", num2);
// map<string, E2PBean> wlbmMap;
// for (int t = 0; t < num2; t++) {
// char* isPm, * zt2_MaterialNo, * zt2_WBSNo;
// AOM_ask_value_string(topMatnrs[t], "zt2_WBSNo", &zt2_WBSNo);
// AOM_ask_value_string(topMatnrs[t], "zt2_MaterialNo", &zt2_MaterialNo);
// AOM_ask_value_string(topMatnrs[t], "zt2_ifpbom", &isPm);
// string key = "";
// key.append(zt2_WBSNo).append(zt2_MaterialNo);
//
// if (wlbmMap.count(key) > 0) {
// E2PBean &bean = wlbmMap[key];
// if (strcmp(isPm,"P") == 0) {
// char* revId;
// AOM_ask_value_string(topMatnrs[t], "item_revision_id", &revId);
// if (strcmp(revId, bean.revId.c_str()) > 0) {
// bean.pMantr = topMatnrs[t];
// bean.revId = revId;
// }
// }
// else {
// printf("1\n");
// bean.eMantr = topMatnrs[t];
// }
// }
// else {
// E2PBean bean;
// bean.key = key;
// if (strcmp(isPm, "P") == 0) {
// char* revId;
// AOM_ask_value_string(topMatnrs[t],"item_revision_id", &revId);
// bean.pMantr = topMatnrs[t];
// bean.revId = revId;
// }
// else {
// printf("2\n");
// bean.eMantr = topMatnrs[t];
// }
// wlbmMap[key] = bean;
// }
// if (strcmp(isPm, "P") == 0) {
// isUpdate = true;
// }
// }
// POM_AM__set_application_bypass(true);
// tag_t dcproxy = findDcUser();
// if(!isUpdate && wlbmMap.size()>0){
// printf("wlbmMap.size()===>%d\n", wlbmMap.size());
// map<string, E2PBean>::iterator it;
// //名称模糊匹配
// tag_t matnrTop = NULLTAG;
// string keyNum = "";
// //第一个创建,其他复制就行
// for (it = wlbmMap.begin(); it != wlbmMap.end(); it++) {
// string s = it->first;
// keyNum = s;
// E2PBean tagBean = wlbmMap[s];
// printf("tagBean.key.c_str()=%s \n", tagBean.key.c_str()); //tagBean.key.c_str()
// matnrTop = tagBean.eMantr;
// break;
// }
// char* uida;
// ITK__convert_tag_to_uid(matnrTop, &uida);
// printf("uida=%s \n", uida);
// //只有E物料新建的逻辑
// (BOM_create_window(&ebom_window));
// (ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
// printf("bvr_count=%d \n", bvr_count);
// if (bvr_count == 0) {
// errBuff.append("不存在EBOM请检查\n");
// }
// ITKCALL(BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// printf("顶层bom获取\n");
// EBomBean topBean;
// topBean.eRev = matnrTop;
// topBean.eBomline = bom_line;
// //遍历EBOM获取P物料
// vector<EBomBean> beans;
// recyReadEBom(bom_line, topBean, beans, len, matnrTop, errBuff);
// printf("read end %d\n", beans.size());
//
// BOM_close_window(ebom_window);
// //搭建BOM
//
// printf("buff %s==>\n", errBuff.c_str());
// tag_t topPrev = NULLTAG;
// if (errBuff.empty()) {
// map<string, tag_t> map;
//
// int url_num = 0;
// char** url_vals = NULL;
// PREF_ask_char_values("database_tc", &url_num, &url_vals);
// string url = url_vals[0];
// url.append("/").append(url_vals[2]);
// printf("url ==> %s \n", url.c_str());
// if (ConnServer(url_vals[3], url_vals[4], (char*)url.c_str()) == -1)
// {
// printf("提示:中间数据表访问失败\n");
// ifail = 1;
// }
// for (int t = 0; t < beans.size(); t++) {
// replaceBom(beans[t], map, len, dcproxy, topPrev);
// }
// DisConnServer();
// }
// {//多个直接复制
// map<string, E2PBean>::iterator it2;
// for (it2 = wlbmMap.begin(); it2 != wlbmMap.end(); it2++) {
// string ss = it2->first;
// tag_t eMantr = wlbmMap[ss].eMantr;
// if (keyNum.compare(ss) == 0) {
// continue;
// }
// char* newid = NULL;
// logical isModified = FALSE;
// tag_t item_type_tag, newRev, newItem;
// TCTYPE_ask_type("Item", &item_type_tag);
// ITKCALL(USER_new_item_id(NULLTAG, item_type_tag, &isModified, &newid));
// /*ITKCALL(NR_next_value("MEProcess", "item_id", NULLTAG, "", "", "",
// NULLTAG, "", "", &next_id));*/
// printf("next_id==>%s\n", newid);
// ITKCALL(ITEM_copy_item(eMantr, newid, NULL, &newItem, &newRev));
// //ITKCALL(AOM_set_value_string(newRev, "zt2_PMaterial", "PBOM"));
// char* matnrNo;
// AOM_ask_value_string(eMantr, "zt2_MaterialNo", &matnrNo);
// AOM_lock(newRev);
// AOM_set_value_string(newRev, "zt2_ifpbom", "P");
// AOM_set_value_string(newRev, "zt2_MaterialNo", matnrNo);
// AOM_save(newRev);
// AOM_unlock(newRev);
// copyBomLine(topPrev, newRev);
// }
// }
// }
// else {
// //更新逻辑 遍历Ebom 不带P的和带P的
// tag_t matnrTop = NULLTAG;
// tag_t pBomTop = NULLTAG;
// map<string, E2PBean>::iterator it;
// //第一个创建,其他复制就行
// string keyNum = "";
// for (it = wlbmMap.begin(); it != wlbmMap.end(); it++) {
// string s = it->first;
// keyNum = s;
// //printf("newRev===>%s\n", tagBean.revId.c_str());
// E2PBean tagBean = wlbmMap[s];
// matnrTop = tagBean.eMantr;
// pBomTop = tagBean.pMantr;
// //判断版本视图是否发布,如果发布了,升版
// int structs = 0, statusNum=0;
// tag_t *structure_revisions,* release_status_list;
// AOM_ask_value_tags(pBomTop, "structure_revisions", &structs, &structure_revisions);
// if (structs > 0) {
// AOM_ask_value_tags(structure_revisions[0], "release_status_list", &statusNum, &release_status_list);
// if (statusNum > 0) {
// tag_t *mantrsAs, dsuser;
// int revNum;
// ITEM_copy_rev(pBomTop, NULL, &pBomTop);
// AOM_ask_value_tags(matnrTop, "TC_Is_Represented_By", &num, &mantrsAs);
// AOM_ask_value_tag(mantrsAs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(pBomTop, dsuser, defGroup));
// if (num > 0) {
// AOM_ask_value_tags(pBomTop, "structure_revisions", &revNum, &structure_revisions);
// if (revNum > 0) {
// ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
// }
// }
//
// }
// }
// break;
// }
// (BOM_create_window(&ebom_window));
// (ITEM_rev_list_bom_view_revs(matnrTop, &bvr_count, &bvr_list));
// printf("bvr_count=%d \n", bvr_count);
// if (bvr_count == 0) {
// errBuff.append("不存在EBOM请检查\n");
// }
// ITKCALL(BOM_set_window_top_line_bvr(ebom_window, bvr_list[0], &bom_line)); //顶层bom获取
// printf("顶层bom获取\n");
// EBomUpBean upBean;
// upBean.bomline = bom_line;
// updatePbomCycle(bom_line, errBuff,len, upBean);
// tag_t ebom_window2, * bvr_list2, bom_line2;
// int bvr_count2 = 0;
// char* revIdP;
// (BOM_create_window(&ebom_window2));
// (ITEM_rev_list_bom_view_revs(pBomTop, &bvr_count2, &bvr_list2));
// AOM_ask_value_string(pBomTop,"item_revision_id",&revIdP);
// printf("bvr_count=%d revIdP==>%s \n", bvr_count2, revIdP);
// if (bvr_count2 == 0) {
// errBuff.append("不存在EBOM请检查\n");
// }
// ITKCALL(BOM_set_window_top_line_bvr(ebom_window2, bvr_list2[0], &bom_line2)); //顶层bom获取
//
// int url_num = 0;
// char** url_vals = NULL;
// PREF_ask_char_values("database_tc", &url_num, &url_vals);
// string url = url_vals[0];
// url.append("/").append(url_vals[2]);
// printf("url ==> %s \n", url.c_str());
// if (ConnServer(url_vals[3], url_vals[4], (char*)url.c_str()) == -1)
// {
// printf("提示:中间数据表访问失败\n");
// ifail = 1;
// }
// startUpdate(upBean, bom_line2, len, dcproxy);
// DisConnServer();
//
// BOM_save_window(ebom_window2);
// BOM_close_window(ebom_window2);
//
// BOM_close_window(ebom_window);
// printf("keyNum===>%s\n", keyNum.c_str());
// map<string, E2PBean>::iterator it2;
// for (it2 = wlbmMap.begin(); it2 != wlbmMap.end(); it2++) {
// string ss = it2->first;
// E2PBean tagBean = wlbmMap[ss];
// printf("ss===>%s\n", ss.c_str());
// if (keyNum.compare(ss) == 0) {
// continue;
// }
// tag_t newRev = tagBean.pMantr;
// printf("newRev===>%s\n", tagBean.revId.c_str());
// int structs = 0, statusNum = 0;
// tag_t* structure_revisions, * release_status_list;
// AOM_ask_value_tags(newRev, "structure_revisions", &structs, &structure_revisions);
// if (structs > 0) {
// AOM_ask_value_tags(structure_revisions[0], "release_status_list", &statusNum, &release_status_list);
// if (statusNum > 0) {
// int revNum = 0;
// tag_t *mantrsAs, dsuser;
// ITKCALL(ITEM_copy_rev(newRev, NULL, &newRev));
// AOM_ask_value_tags(matnrTop, "TC_Is_Represented_By", &num, &mantrsAs);
// AOM_ask_value_tag(mantrs[0], "owning_user", &dsuser);
// tag_t defGroup;
// ITKCALL(AOM_ask_value_tag(dsuser, "default_group", &defGroup));
// ITKCALL(AOM_set_ownership(newRev, dsuser, defGroup));
// if (num > 0) {
// AOM_ask_value_tags(newRev, "structure_revisions", &revNum, &structure_revisions);
// if (revNum > 0) {
// ITKCALL(AOM_set_ownership(structure_revisions[0], dsuser, defGroup));
// }
// }
// }
// }
// copyBomLine(pBomTop, newRev);
// }
// }
//
// POM_AM__set_application_bypass(false);
// }
// }
// string buff = errBuff;
// if (buff.empty()) {
// buff = "succ";
// }
// printf("buff===>%s\n", buff.c_str());
// /**((char**)returnValue) = (char*)MEM_alloc((strlen(buff.c_str()) + 1) * sizeof(char));
// tc_strcpy(*((char**)returnValue), buff.c_str());*/
// return;
//}