|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
|
#include "epm_handler_common.h"
|
|
|
|
|
|
int ML_ChangeObjectDesc(EPM_action_message_t msg)
|
|
|
{
|
|
|
printf("=========================更改物料描述 Start===================\n");
|
|
|
auto startTime = std::chrono::high_resolution_clock::now();
|
|
|
int ifail = ITK_ok;
|
|
|
int attachments_num = 0;
|
|
|
tag_t rootTask = NULLTAG, *attachments = NULLTAG;
|
|
|
//获取任务对象
|
|
|
EPM_ask_root_task(msg.task, &rootTask);
|
|
|
//获取任务目标对象
|
|
|
EPM_ask_attachments(rootTask, EPM_target_attachment, &attachments_num, &attachments);
|
|
|
bool isRelease = false;
|
|
|
|
|
|
char *argflag = NULL, *argvalue = NULL, *arg = NULL;
|
|
|
char arg1value[1024] = "";
|
|
|
//获取参数
|
|
|
int arg_cnt = TC_number_of_arguments(msg.arguments);
|
|
|
printf("参数个数为:%d\n", arg_cnt);
|
|
|
if (arg_cnt > 0)
|
|
|
{
|
|
|
for (int i = 0; i < arg_cnt; i++)
|
|
|
{
|
|
|
//获取下一个参数(从0开始)
|
|
|
arg = TC_next_argument(msg.arguments);
|
|
|
//获取参数的名称和值
|
|
|
ifail = ITK_ask_argument_named_value((const char*)arg, &argflag, &argvalue);
|
|
|
if (stricmp(argflag, "release") == 0)
|
|
|
{
|
|
|
isRelease = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//获取Meling_voltage首选项的值
|
|
|
int pref_cnt = 0;
|
|
|
char ** pref_vals = NULL;
|
|
|
//获取首选项的值
|
|
|
PREF_ask_char_values("Meling_voltage", &pref_cnt, &pref_vals);
|
|
|
|
|
|
char resultString[2048] = "";
|
|
|
for (int i = 0; i < attachments_num; i++)
|
|
|
{
|
|
|
char *itemType = NULL;
|
|
|
AOM_ask_value_string(attachments[i], "object_type", &itemType);
|
|
|
|
|
|
char *itemObjectDesc = NULL;
|
|
|
AOM_ask_value_string(attachments[i], "object_desc", &itemObjectDesc);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//过滤掉非版本的对象
|
|
|
if ((strcmp(itemType, "ML8_RefrigeratorRevision") == 0) || (strcmp(itemType, "ML8_WashingRevision") == 0)
|
|
|
|| (strcmp(itemType, "ML8_ColdRevision") == 0) || (strcmp(itemType, "ML8_OthersRevision") == 0))
|
|
|
{
|
|
|
int releaseCount = 0;
|
|
|
tag_t * releaseTag = NULL_TAG;
|
|
|
//判断子件是否发布
|
|
|
AOM_ask_value_tags(attachments[i], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0 && !isRelease)
|
|
|
{
|
|
|
DOFREE(releaseTag);
|
|
|
continue;
|
|
|
}
|
|
|
DOFREE(releaseTag);
|
|
|
//获取对象的类型
|
|
|
tag_t item = NULLTAG;
|
|
|
ITEM_ask_item_of_rev(attachments[i], &item);
|
|
|
char * itemObjectType = NULL;
|
|
|
AOM_ask_value_string(item, "object_type", &itemObjectType);
|
|
|
|
|
|
//获取通用化标识
|
|
|
char * generalIdentify = NULL;
|
|
|
AOM_ask_value_string(attachments[i], "ml8_GeneralIdentify", &generalIdentify);
|
|
|
if (strcmp(generalIdentify, "标准件") == 0)
|
|
|
{
|
|
|
DOFREE(itemObjectType);
|
|
|
DOFREE(generalIdentify);
|
|
|
continue;
|
|
|
}
|
|
|
//获取销售方式
|
|
|
char * propertyValue = NULL;
|
|
|
AOM_ask_value_string(attachments[i], "ml8_SalesMode", &propertyValue);
|
|
|
|
|
|
if (propertyValue == NULL)
|
|
|
{
|
|
|
DOFREE(itemObjectType);
|
|
|
DOFREE(propertyValue);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
//获取拼接所需要的属性
|
|
|
int projectFormNum = 0;
|
|
|
tag_t * projectForm = NULLTAG;
|
|
|
char * itemId = NULL;//物料名称
|
|
|
char * objectName = NULL;//产品名称
|
|
|
char * productType = NULL;//产品型号
|
|
|
char * colour = NULL;//颜色名称
|
|
|
char * domesticSales = NULL;//订单客户
|
|
|
char * place = NULL;//产地
|
|
|
char * productCode = NULL;//产品代号
|
|
|
AOM_ask_value_string(attachments[i], "item_id", &itemId);
|
|
|
AOM_ask_value_string(attachments[i], "object_name", &objectName);
|
|
|
//AOM_ask_value_string(attachments[i], "ml8_ProductType", &productType);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_Colour", &colour);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_DomesticSales", &domesticSales);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_Place", &place);
|
|
|
//AOM_ask_value_string(attachments[i], "ml8_ProductCode", &productCode);
|
|
|
AOM_ask_value_tags(attachments[i], "ML8_ProjectRelation", &projectFormNum, &projectForm);
|
|
|
if (projectFormNum > 0)
|
|
|
{
|
|
|
AOM_ask_value_string(projectForm[0], "ml8_ProductType", &productType);
|
|
|
AOM_ask_value_string(projectForm[0], "ml8_ProductCode", &productCode);
|
|
|
|
|
|
}
|
|
|
|
|
|
printf("propertyValue:%s Start===================\n", propertyValue);
|
|
|
char objectDesc[100] = "";
|
|
|
//判断销售方式是否为内销、出口基本型、出口扩展型
|
|
|
if ((strcmp(propertyValue, "内销") == 0) || (strcmp(propertyValue, "出口基本型") == 0)
|
|
|
|| (strcmp(propertyValue, "出口扩展型") == 0))
|
|
|
{
|
|
|
string err = "";
|
|
|
if (objectName != NULL && strcmp(objectName, "") != 0 && strcmp(objectName, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, objectName);
|
|
|
}
|
|
|
else if(objectName == NULL || strcmp(objectName, "") == 0)
|
|
|
{
|
|
|
printf("产品名称为空\n");
|
|
|
err += "产品名称为空 ";
|
|
|
}
|
|
|
|
|
|
if (productType != NULL && strcmp(productType, "") != 0 && strcmp(productType, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, productType);
|
|
|
}
|
|
|
else if(productType == NULL || strcmp(productType, "")==0)
|
|
|
{
|
|
|
printf("产品型号为空\n");
|
|
|
err += "产品型号为空 ";
|
|
|
}
|
|
|
|
|
|
if (productCode != NULL && strcmp(productCode, "") != 0 && strcmp(productCode, "/") != 0)
|
|
|
{
|
|
|
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, productCode);
|
|
|
strcat(objectDesc, ")");
|
|
|
////产品状态做特殊处理
|
|
|
//if (strstr(productCode, "CKD") != NULL)
|
|
|
//{
|
|
|
// strcat(objectDesc, "/");
|
|
|
// strcat(objectDesc, "大散");
|
|
|
//}
|
|
|
//else if (strstr(productCode, "CKD") != NULL)
|
|
|
//{
|
|
|
// strcat(objectDesc, "/");
|
|
|
// strcat(objectDesc, "散");
|
|
|
//}
|
|
|
}
|
|
|
else if(productCode == NULL || strcmp(productCode, "") == 0)
|
|
|
{
|
|
|
printf("产品代号为空\n");
|
|
|
err += "产品代号为空 ";
|
|
|
}
|
|
|
|
|
|
|
|
|
if (colour != NULL && strcmp(colour, "") != 0 && strcmp(colour, "/") != 0)
|
|
|
{
|
|
|
//颜色做特殊处理获取颜色名称PCM彩板_暗灰拉丝(ML-C1072)
|
|
|
if (strstr(colour, "(") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int valueCount = 0;
|
|
|
char ** valueChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colour, "(", valueChar, &valueCount);
|
|
|
|
|
|
//将第二个字符串按照_拆分
|
|
|
if (strstr(valueChar[0], "_") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorNameCount = 0;
|
|
|
char ** colorNameChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(valueChar[0], "_", colorNameChar, &colorNameCount);
|
|
|
|
|
|
colour = colorNameChar[1];
|
|
|
}
|
|
|
}
|
|
|
strcat(objectDesc, colour);
|
|
|
}
|
|
|
else if(colour == NULL || strcmp(colour, "") == 0)
|
|
|
{
|
|
|
printf("颜色为空\n");
|
|
|
err += "颜色为空";
|
|
|
}
|
|
|
|
|
|
if (domesticSales != NULL && strcmp(domesticSales, "") != 0 && strcmp(domesticSales, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, domesticSales);
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
if (place != NULL && strcmp(place, "") != 0 && strcmp(place, "/") != 0 && (strcmp(place, "江西") == 0 || strcmp(place, "绵阳") == 0))
|
|
|
{
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, place);
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
else if(place == NULL || strcmp(place, "") == 0)
|
|
|
{
|
|
|
printf("产地号为空\n");
|
|
|
err += "产地为空";
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf("objectDesc:%s Start===================\n", objectDesc);
|
|
|
//判断物料描述是否超过40个字符
|
|
|
/*int len = gbk_strlen(objectDesc);
|
|
|
if (len > 40)
|
|
|
{
|
|
|
strcat(resultString, "物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "已超过40个字符");
|
|
|
strcat(resultString, "/n");
|
|
|
|
|
|
goto loop;
|
|
|
}*/
|
|
|
printf("err%s\n", err.c_str());
|
|
|
//非空判断提示
|
|
|
if (strcmp(err.c_str(), "") != 0) {
|
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, err.c_str());
|
|
|
return 1;
|
|
|
}
|
|
|
////判断是否不需要更改
|
|
|
//if (strcmp(itemObjectDesc, objectDesc) == 0)
|
|
|
//{
|
|
|
// goto loop;
|
|
|
//}
|
|
|
|
|
|
//查重物料描述
|
|
|
int n_entries = 1;
|
|
|
char *qry_entries[1] = { "描述" }, *qry_values[1] = { objectDesc };
|
|
|
int n_found = 0;
|
|
|
tag_t * dba_mbrs = NULLTAG;
|
|
|
char queryName[256] = "";
|
|
|
//strcat(queryName, itemObjectType);
|
|
|
strcat(queryName, "所有物料描述查询");
|
|
|
TCFindItem(queryName, n_entries, qry_entries, qry_values, &n_found, &dba_mbrs);
|
|
|
printf("找到了%d个重复的物料描述查询\n", n_found);
|
|
|
bool isHaveItem = false;
|
|
|
for (int ii = 0; ii < n_found; ii++)
|
|
|
{
|
|
|
char* checkId;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &checkId);
|
|
|
//忽略id中含有"-"的
|
|
|
if (strstr(checkId, "-") != NULL)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
int releaseCount = 0;
|
|
|
tag_t* releaseTag = NULL_TAG;
|
|
|
//获取子件的发布状态
|
|
|
AOM_ask_value_tags(dba_mbrs[ii], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0) {
|
|
|
bool flag = false;
|
|
|
for (int a = 0; a < releaseCount; a++) {
|
|
|
char* releaseName;
|
|
|
AOM_ask_value_string(releaseTag[a], "object_name", &releaseName);
|
|
|
if (strcmp(releaseName, "被取代") == 0 || strcmp(releaseName, "ML8_Replaced") == 0) {
|
|
|
//进行下一次循环
|
|
|
flag = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (flag) {
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
char * otherItemId = NULL;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &otherItemId);
|
|
|
printf("对比Item_id:%s---%s Start===================\n", otherItemId, itemId);
|
|
|
if (strcmp(otherItemId, itemId) == 0)
|
|
|
{
|
|
|
DOFREE(otherItemId);
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
//忽略id中含有"-"的
|
|
|
if (strstr(otherItemId, "-") != NULL)
|
|
|
{
|
|
|
printf("忽略id中包含-的对象\n");
|
|
|
DOFREE(otherItemId);
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
isHaveItem = true;
|
|
|
strcat(resultString, otherItemId);
|
|
|
strcat(resultString, ":");
|
|
|
strcat(resultString, "已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "\n");
|
|
|
DOFREE(otherItemId);
|
|
|
//break;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
if (n_found > 0)
|
|
|
{
|
|
|
strcat(resultString, "系统中已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "/n");
|
|
|
|
|
|
goto result;
|
|
|
}*/
|
|
|
//设置物料描述和标准描述
|
|
|
if (strlen(resultString) == 0) {
|
|
|
AOM_lock(attachments[i]);
|
|
|
AOM_set_value_string(attachments[i], "object_desc", objectDesc);
|
|
|
AOM_set_value_string(attachments[i], "ml8_StdDesc", objectDesc);
|
|
|
AOM_save(attachments[i]);
|
|
|
AOM_unlock(attachments[i]);
|
|
|
AOM_refresh(attachments[i], false);
|
|
|
}
|
|
|
|
|
|
|
|
|
result:
|
|
|
DOFREE(itemObjectType);
|
|
|
}
|
|
|
else if ((strcmp(propertyValue, "出口订单") == 0))
|
|
|
{
|
|
|
string err = "";
|
|
|
//char * voltage = NULL;//电压
|
|
|
//char * frequency = NULL;//频率
|
|
|
char * exportCode = NULL;//出口国代码
|
|
|
//AOM_ask_value_string(attachments[i], "ml8_Voltage", &voltage);
|
|
|
//AOM_ask_value_string(attachments[i], "ml8_Frequency", &frequency);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_ExportCode", &exportCode);
|
|
|
|
|
|
//更改频率
|
|
|
/*if (strcmp(frequency, "50Hz") == 0)
|
|
|
{
|
|
|
frequency = "";
|
|
|
}
|
|
|
else if (strcmp(frequency, "60Hz") == 0)
|
|
|
{
|
|
|
frequency = "60";
|
|
|
}
|
|
|
else if (strcmp(frequency, "50/60Hz") == 0)
|
|
|
{
|
|
|
frequency = "50/60";
|
|
|
}*/
|
|
|
//获取电压
|
|
|
//bool isHave = false;
|
|
|
//for (int j = 0; j < pref_cnt; j++)
|
|
|
//{
|
|
|
// if (strstr(pref_vals[j], "=") != NULL)
|
|
|
// {
|
|
|
// //按照_进行拆分。拆分条件
|
|
|
// int valueCount = 0;
|
|
|
// char ** valueChar = new char *[64];
|
|
|
// //分割字符串
|
|
|
// split(pref_vals[j], "=", valueChar, &valueCount);
|
|
|
|
|
|
// if (strcmp(voltage, valueChar[0]) == 0)
|
|
|
// {
|
|
|
// isHave = true;
|
|
|
// voltage = valueChar[1];
|
|
|
// }
|
|
|
// }
|
|
|
//}
|
|
|
//if (!isHave)
|
|
|
//{
|
|
|
// voltage = "";
|
|
|
// /*strcat(resultString, "未找到匹配的电压值:");
|
|
|
// strcat(resultString, voltage);
|
|
|
// strcat(resultString, "\n");
|
|
|
|
|
|
// goto result2;*/
|
|
|
//}
|
|
|
|
|
|
if (objectName != NULL && strcmp(objectName, "") != 0 && strcmp(objectName, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, objectName);
|
|
|
}
|
|
|
else if(objectName == NULL || strcmp(objectName, "") == 0)
|
|
|
{
|
|
|
printf("产品名称为空\n");
|
|
|
err += "产品名称为空 ";
|
|
|
}
|
|
|
|
|
|
if (productType != NULL && strcmp(productType, "") != 0 && strcmp(productType, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, productType);
|
|
|
}
|
|
|
else if(productType == NULL || strcmp(productType, "") == 0)
|
|
|
{
|
|
|
printf("出口型号为空\n");
|
|
|
err += "出口型号为空 ";
|
|
|
}
|
|
|
|
|
|
if (productCode != NULL && strcmp(productCode, "") != 0 && strcmp(productCode, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, (productCode + 5));
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
else if(productCode == NULL || strcmp(productCode, "") == 0)
|
|
|
{
|
|
|
printf("产品代号为空\n");
|
|
|
err += "产品代号为空 ";
|
|
|
}
|
|
|
|
|
|
if (colour != NULL && strcmp(colour, "") != 0 && strcmp(colour, "/") != 0)
|
|
|
{
|
|
|
//颜色做特殊处理获取颜色名称PCM彩板_暗灰拉丝(ML-C1072)
|
|
|
if (strstr(colour, "(") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int valueCount = 0;
|
|
|
char ** valueChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colour, "(", valueChar, &valueCount);
|
|
|
//将第二个字符串按照(拆分
|
|
|
if (strstr(valueChar[1], ")") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorNameCount = 0;
|
|
|
char ** colorNameChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(valueChar[1], ")", colorNameChar, &colorNameCount);
|
|
|
if (strstr(colorNameChar[0], "-") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorName = 0;
|
|
|
char ** colorChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colorNameChar[0], "-", colorChar, &colorName);
|
|
|
char colorChars[256] = "";
|
|
|
for (int kkk = 0; kkk < colorName; kkk++)
|
|
|
{
|
|
|
if (kkk == 0 && strcmp(colorChar[kkk], "ML") == 0)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
strcat(colorChars, colorChar[kkk]);
|
|
|
if (kkk < (colorName - 1))
|
|
|
{
|
|
|
strcat(colorChars, "-");
|
|
|
}
|
|
|
}
|
|
|
colour = colorChars;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
colour = colorNameChar[0];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
strcat(objectDesc, colour);
|
|
|
}else if (colour == NULL || strcmp(colour, "") == 0)
|
|
|
{
|
|
|
printf("颜色为空\n");
|
|
|
err += "颜色为空 ";
|
|
|
}
|
|
|
/*if (voltage != NULL && strcmp(voltage, "") != 0 && strcmp(voltage, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, voltage);
|
|
|
}
|
|
|
if (frequency != NULL && strcmp(frequency, "") != 0 && strcmp(frequency, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, frequency);
|
|
|
}*/
|
|
|
if (exportCode != NULL && strcmp(exportCode, "") != 0 && strcmp(exportCode, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, exportCode);
|
|
|
//strcat(objectDesc, ")");//出口国代码后的括号去掉
|
|
|
}
|
|
|
////判断物料描述是否超过40个字符
|
|
|
//int len = gbk_strlen(objectDesc);
|
|
|
//if (len > 40)
|
|
|
//{
|
|
|
// strcat(resultString, "物料描述:");
|
|
|
// strcat(resultString, objectDesc);
|
|
|
// strcat(resultString, "已超过40个字符");
|
|
|
// strcat(resultString, "/n");
|
|
|
|
|
|
// goto result2;
|
|
|
//}
|
|
|
printf("err%s\n", err.c_str());
|
|
|
//非空判断提示
|
|
|
if (strcmp(err.c_str(), "") != 0) {
|
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, err.c_str());
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
char * desc = NULL;
|
|
|
char * stdDesc = NULL;
|
|
|
|
|
|
AOM_ask_value_string(attachments[i], "object_desc", &desc);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_StdDesc", &stdDesc);
|
|
|
|
|
|
////判断是否不需要更改
|
|
|
//if (strcmp(itemObjectDesc, objectDesc) == 0 && desc != NULL && stdDesc != NULL && strcmp(desc, "") != 0 && strcmp(stdDesc, "") != 0)
|
|
|
//{
|
|
|
// DOFREE(desc);
|
|
|
// DOFREE(stdDesc);
|
|
|
// goto result2;
|
|
|
//}
|
|
|
DOFREE(desc);
|
|
|
DOFREE(stdDesc);
|
|
|
|
|
|
//查重物料描述
|
|
|
|
|
|
int n_entries = 1;
|
|
|
char *qry_entries[1] = { "描述" }, *qry_values[1] = { objectDesc };
|
|
|
int n_found = 0;
|
|
|
tag_t * dba_mbrs = NULLTAG;
|
|
|
char queryName[256] = "";
|
|
|
//strcat(queryName, itemObjectType);
|
|
|
strcat(queryName, "所有物料描述查询");
|
|
|
TCFindItem(queryName, n_entries, qry_entries, qry_values, &n_found, &dba_mbrs);
|
|
|
printf("找到了%d个重复的物料描述查询\n", n_found);
|
|
|
//过滤当前对象
|
|
|
bool isHaveItem = false;
|
|
|
for (int ii = 0; ii < n_found; ii++)
|
|
|
{
|
|
|
char* checkId;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &checkId);
|
|
|
//忽略id中含有"-"的
|
|
|
if (strstr(checkId, "-") != NULL)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
int releaseCount = 0;
|
|
|
tag_t* releaseTag = NULL_TAG;
|
|
|
//获取子件的发布状态
|
|
|
AOM_ask_value_tags(dba_mbrs[ii], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0) {
|
|
|
bool flag = false;
|
|
|
for (int a = 0; a < releaseCount; a++) {
|
|
|
char* releaseName;
|
|
|
AOM_ask_value_string(releaseTag[a], "object_name", &releaseName);
|
|
|
if (strcmp(releaseName, "被取代") == 0 || strcmp(releaseName, "ML8_Replaced") == 0) {
|
|
|
//进行下一次循环
|
|
|
flag = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (flag) {
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
char * otherItemId = NULL;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &otherItemId);
|
|
|
printf("对比Item_id:%s---%s Start===================\n", otherItemId, itemId);
|
|
|
if (strcmp(otherItemId, itemId) == 0)
|
|
|
{
|
|
|
DOFREE(otherItemId);
|
|
|
continue;
|
|
|
}
|
|
|
isHaveItem = true;
|
|
|
strcat(resultString, otherItemId);
|
|
|
strcat(resultString, ":");
|
|
|
strcat(resultString, "已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "\n");
|
|
|
DOFREE(otherItemId);
|
|
|
//break;
|
|
|
}
|
|
|
|
|
|
/*if (isHaveItem)
|
|
|
{
|
|
|
strcat(resultString, "系统中已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "\n");
|
|
|
|
|
|
DOFREE(dba_mbrs);
|
|
|
goto result2;
|
|
|
}*/
|
|
|
//设置物料描述和标准描述
|
|
|
AOM_lock(attachments[i]);
|
|
|
AOM_set_value_string(attachments[i], "object_desc", objectDesc);
|
|
|
AOM_set_value_string(attachments[i], "ml8_StdDesc", objectDesc);
|
|
|
AOM_save(attachments[i]);
|
|
|
AOM_unlock(attachments[i]);
|
|
|
AOM_refresh(attachments[i], false);
|
|
|
|
|
|
DOFREE(dba_mbrs);
|
|
|
|
|
|
result2:
|
|
|
/*DOFREE(voltage);
|
|
|
DOFREE(frequency);*/
|
|
|
DOFREE(exportCode);
|
|
|
}
|
|
|
|
|
|
loop:
|
|
|
DOFREE(itemObjectType);
|
|
|
DOFREE(propertyValue);
|
|
|
DOFREE(objectName);
|
|
|
DOFREE(productType);
|
|
|
DOFREE(colour);
|
|
|
DOFREE(domesticSales);
|
|
|
DOFREE(place);
|
|
|
DOFREE(productCode);
|
|
|
|
|
|
}
|
|
|
else if ((strcmp(itemType, "ML8_PartRevision") == 0) || (strcmp(itemType, "ML8_RawMaterialRevision") == 0))
|
|
|
{
|
|
|
int releaseCount = 0;
|
|
|
tag_t * releaseTag = NULL_TAG;
|
|
|
//判断子件是否发布
|
|
|
AOM_ask_value_tags(attachments[i], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0 && !isRelease)
|
|
|
{
|
|
|
DOFREE(releaseTag);
|
|
|
continue;
|
|
|
}
|
|
|
DOFREE(releaseTag);
|
|
|
//获取对象的类型
|
|
|
tag_t item = NULLTAG;
|
|
|
ITEM_ask_item_of_rev(attachments[i], &item);
|
|
|
char * itemObjectType = NULL;
|
|
|
AOM_ask_value_string(item, "object_type", &itemObjectType);
|
|
|
//获取通用化标识
|
|
|
/*char * generalIdentify = NULL;
|
|
|
AOM_ask_value_string(attachments[i], "ml8_GeneralIdentify", &generalIdentify);
|
|
|
if (strcmp(generalIdentify, "标准件") != 0)
|
|
|
{
|
|
|
DOFREE(itemObjectType);
|
|
|
DOFREE(generalIdentify);
|
|
|
continue;
|
|
|
}*/
|
|
|
//获取危害物约束
|
|
|
char * propertyValue = NULL;
|
|
|
AOM_ask_value_string(attachments[i], "ml8_HazardConstraint", &propertyValue);
|
|
|
|
|
|
if (propertyValue == NULL)
|
|
|
{
|
|
|
DOFREE(itemObjectType);
|
|
|
DOFREE(propertyValue);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
char objectDesc[50] = "";
|
|
|
|
|
|
//获取拼接所需要的属性
|
|
|
char * itemId = NULL;//物料名称
|
|
|
char * objectName = NULL;//物料名称
|
|
|
char * externalWorking = NULL;//外加工状态
|
|
|
char * colour = NULL;//颜色
|
|
|
char * figureNum = NULL;//图号
|
|
|
char * identification = NULL;//识别码
|
|
|
char * specifications = NULL;//规格型号
|
|
|
AOM_ask_value_string(attachments[i], "item_id", &itemId);
|
|
|
AOM_ask_value_string(attachments[i], "object_name", &objectName);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_ExternalWorking", &externalWorking);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_Colour", &colour);
|
|
|
if ((strcmp(itemType, "ML8_PartRevision") == 0))
|
|
|
{
|
|
|
AOM_ask_value_string(attachments[i], "ml8_FigureNum", &figureNum);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_Identification", &identification);
|
|
|
}
|
|
|
AOM_ask_value_string(attachments[i], "ml8_Specifications", &specifications);
|
|
|
string err = "";
|
|
|
//判断害物约束是否为RoHS指令、非RoHS指令
|
|
|
if ((strcmp(propertyValue, "RoHS指令") == 0))
|
|
|
{
|
|
|
strcat(objectDesc, "R-");
|
|
|
if (objectName != NULL && strcmp(objectName, "") != 0 && strcmp(objectName, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, objectName);
|
|
|
}
|
|
|
else if (objectName == NULL || strcmp(objectName, "") == 0)
|
|
|
{
|
|
|
printf("物料名称为空\n");
|
|
|
err += "物料名称为空 ";
|
|
|
}
|
|
|
bool isHaveExternalWorking = false;
|
|
|
if (externalWorking != NULL && strcmp(externalWorking, "") != 0 && strcmp(externalWorking, "/") != 0)
|
|
|
{
|
|
|
isHaveExternalWorking = true;
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, externalWorking);
|
|
|
}
|
|
|
if (colour != NULL && strcmp(colour, "") != 0 && strcmp(colour, "/") != 0)
|
|
|
{
|
|
|
if (!isHaveExternalWorking)
|
|
|
{
|
|
|
strcat(objectDesc, "(");
|
|
|
}
|
|
|
//颜色做特殊处理获取颜色名称PCM彩板_暗灰拉丝(ML-C1072)
|
|
|
if (strstr(colour, "(") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int valueCount = 0;
|
|
|
char ** valueChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colour, "(", valueChar, &valueCount);
|
|
|
//将第二个字符串按照(拆分
|
|
|
if (strstr(valueChar[1], ")") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorNameCount = 0;
|
|
|
char ** colorNameChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(valueChar[1], ")", colorNameChar, &colorNameCount);
|
|
|
if (strstr(colorNameChar[0], "-") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorName = 0;
|
|
|
char ** colorChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colorNameChar[0], "-", colorChar, &colorName);
|
|
|
char colorChars[256] = "";
|
|
|
for (int kkk = 0; kkk < colorName; kkk++)
|
|
|
{
|
|
|
if (kkk == 0 && strcmp(colorChar[kkk], "ML") == 0)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
strcat(colorChars, colorChar[kkk]);
|
|
|
if (kkk < (colorName - 1))
|
|
|
{
|
|
|
strcat(colorChars, "-");
|
|
|
}
|
|
|
}
|
|
|
colour = colorChars;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
colour = colorNameChar[0];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
strcat(objectDesc, colour);
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
else if(colour == NULL || strcmp(colour, "") == 0)
|
|
|
{
|
|
|
printf("颜色为空\n");
|
|
|
err += "颜色为空 ";
|
|
|
}
|
|
|
else if (isHaveExternalWorking)
|
|
|
{
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
|
|
|
|
|
|
if ((figureNum != NULL && strcmp(figureNum, "") != 0 && strcmp(figureNum, "/") != 0) ||
|
|
|
(identification != NULL && strcmp(identification, "") != 0 && strcmp(identification, "/") != 0) ||
|
|
|
(specifications != NULL && strcmp(specifications, "") != 0 && strcmp(specifications, "/") != 0))
|
|
|
{
|
|
|
strcat(objectDesc, "_");
|
|
|
}
|
|
|
if (figureNum != NULL && strcmp(figureNum, "") != 0 && strcmp(figureNum, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, figureNum);
|
|
|
}
|
|
|
if (identification != NULL && strcmp(identification, "") != 0 && strcmp(identification, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, identification);
|
|
|
}
|
|
|
if (specifications != NULL && strcmp(specifications, "") != 0 && strcmp(specifications, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, specifications);
|
|
|
}
|
|
|
////判断物料描述是否超过40个字符
|
|
|
//int len = gbk_strlen(objectDesc);
|
|
|
//if (len > 40)
|
|
|
//{
|
|
|
// strcat(resultString, "物料描述:");
|
|
|
// strcat(resultString, objectDesc);
|
|
|
// strcat(resultString, "已超过40个字符");
|
|
|
// strcat(resultString, "/n");
|
|
|
|
|
|
// goto loop2;
|
|
|
//}
|
|
|
|
|
|
//非空判断提示
|
|
|
if (strcmp(err.c_str(), "") != 0) {
|
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, err.c_str());
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
|
|
|
char * desc = NULL;
|
|
|
char * stdDesc = NULL;
|
|
|
|
|
|
AOM_ask_value_string(attachments[i], "object_desc", &desc);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_StdDesc", &stdDesc);
|
|
|
////判断是否不需要更改
|
|
|
//if (strcmp(itemObjectDesc, objectDesc) == 0 && desc != NULL && stdDesc != NULL && strcmp(desc, "") != 0 && strcmp(stdDesc, "") != 0)
|
|
|
//{
|
|
|
// DOFREE(desc);
|
|
|
// DOFREE(stdDesc);
|
|
|
// goto loop2;
|
|
|
//}
|
|
|
DOFREE(desc);
|
|
|
DOFREE(stdDesc);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//查重物料描述
|
|
|
int n_entries = 1;
|
|
|
char *qry_entries[1] = { "描述" }, *qry_values[1] = { objectDesc };
|
|
|
int n_found = 0;
|
|
|
tag_t * dba_mbrs = NULLTAG;
|
|
|
char queryName[256] = "";
|
|
|
//strcat(queryName, itemObjectType);
|
|
|
strcat(queryName, "所有物料描述查询");
|
|
|
TCFindItem(queryName, n_entries, qry_entries, qry_values, &n_found, &dba_mbrs);
|
|
|
//过滤当前对象
|
|
|
bool isHaveItem = false;
|
|
|
for (int ii = 0; ii < n_found; ii++)
|
|
|
{
|
|
|
char* checkId;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &checkId);
|
|
|
//忽略id中含有"-"的
|
|
|
if (strstr(checkId, "-") != NULL)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
int releaseCount = 0;
|
|
|
tag_t* releaseTag = NULL_TAG;
|
|
|
//获取子件的发布状态
|
|
|
AOM_ask_value_tags(dba_mbrs[ii], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0) {
|
|
|
bool flag = false;
|
|
|
for (int a = 0; a < releaseCount; a++) {
|
|
|
char* releaseName;
|
|
|
AOM_ask_value_string(releaseTag[a], "object_name", &releaseName);
|
|
|
if (strcmp(releaseName, "被取代") == 0 || strcmp(releaseName, "ML8_Replaced") == 0) {
|
|
|
//进行下一次循环
|
|
|
flag = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (flag) {
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
char * otherItemId = NULL;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &otherItemId);
|
|
|
printf("对比Item_id:%s---%s Start===================\n", otherItemId, itemId);
|
|
|
if (strcmp(otherItemId, itemId) == 0)
|
|
|
{
|
|
|
DOFREE(otherItemId);
|
|
|
continue;
|
|
|
}
|
|
|
isHaveItem = true;
|
|
|
strcat(resultString, otherItemId);
|
|
|
strcat(resultString, ":");
|
|
|
strcat(resultString, "已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "\n");
|
|
|
DOFREE(otherItemId);
|
|
|
//break;
|
|
|
}
|
|
|
if (strlen(resultString)==0) {
|
|
|
AOM_lock(attachments[i]);
|
|
|
AOM_set_value_string(attachments[i], "object_desc", objectDesc);
|
|
|
AOM_set_value_string(attachments[i], "ml8_StdDesc", objectDesc);
|
|
|
AOM_save(attachments[i]);
|
|
|
AOM_unlock(attachments[i]);
|
|
|
AOM_refresh(attachments[i], false);
|
|
|
}
|
|
|
//设置物料描述和标准描述
|
|
|
|
|
|
|
|
|
DOFREE(dba_mbrs);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (objectName != NULL && strcmp(objectName, "") != 0 && strcmp(objectName, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, objectName);
|
|
|
}
|
|
|
else if(objectName == NULL || strcmp(objectName, "") == 0)
|
|
|
{
|
|
|
printf("产品名称为空\n");
|
|
|
err += "产品名称为空";
|
|
|
}
|
|
|
bool isHaveExternalWorking = false;
|
|
|
if (externalWorking != NULL && strcmp(externalWorking, "") != 0 && strcmp(externalWorking, "/") != 0)
|
|
|
{
|
|
|
isHaveExternalWorking = true;
|
|
|
strcat(objectDesc, "(");
|
|
|
strcat(objectDesc, externalWorking);
|
|
|
}
|
|
|
if (colour != NULL && strcmp(colour, "") != 0 && strcmp(colour, "/") != 0)
|
|
|
{
|
|
|
if (!isHaveExternalWorking)
|
|
|
{
|
|
|
strcat(objectDesc, "(");
|
|
|
}
|
|
|
//颜色做特殊处理获取颜色名称PCM彩板_暗灰拉丝(ML-C1072)
|
|
|
if (strstr(colour, "(") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int valueCount = 0;
|
|
|
char ** valueChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colour, "(", valueChar, &valueCount);
|
|
|
//将第二个字符串按照(拆分
|
|
|
if (strstr(valueChar[1], ")") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorNameCount = 0;
|
|
|
char ** colorNameChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(valueChar[1], ")", colorNameChar, &colorNameCount);
|
|
|
|
|
|
if (strstr(colorNameChar[0], "-") != NULL)
|
|
|
{
|
|
|
//按照_进行拆分。拆分条件
|
|
|
int colorName = 0;
|
|
|
char ** colorChar = new char *[64];
|
|
|
//分割字符串
|
|
|
split(colorNameChar[0], "-", colorChar, &colorName);
|
|
|
char colorChars[256] = "";
|
|
|
for (int kkk = 0; kkk < colorName; kkk++)
|
|
|
{
|
|
|
if (kkk == 0 && strcmp(colorChar[kkk], "ML") == 0)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
strcat(colorChars, colorChar[kkk]);
|
|
|
if (kkk < (colorName - 1))
|
|
|
{
|
|
|
strcat(colorChars, "-");
|
|
|
}
|
|
|
}
|
|
|
colour = colorChars;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
colour = colorNameChar[0];
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
strcat(objectDesc, colour);
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
else if (colour == NULL || strcmp(colour, "") == 0)
|
|
|
{
|
|
|
printf("颜色为空\n");
|
|
|
err += "颜色为空 ";
|
|
|
}
|
|
|
else if (isHaveExternalWorking)
|
|
|
{
|
|
|
strcat(objectDesc, ")");
|
|
|
}
|
|
|
if ((figureNum != NULL && strcmp(figureNum, "") != 0 && strcmp(figureNum, "/") != 0) ||
|
|
|
(identification != NULL && strcmp(identification, "") != 0 && strcmp(identification, "/") != 0) ||
|
|
|
(specifications != NULL && strcmp(specifications, "") != 0 && strcmp(specifications, "/") != 0))
|
|
|
{
|
|
|
strcat(objectDesc, "_");
|
|
|
}
|
|
|
if (figureNum != NULL && strcmp(figureNum, "") != 0 && strcmp(figureNum, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, figureNum);
|
|
|
}
|
|
|
if (identification != NULL && strcmp(identification, "") != 0 && strcmp(identification, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, identification);
|
|
|
}
|
|
|
if (specifications != NULL && strcmp(specifications, "") != 0 && strcmp(specifications, "/") != 0)
|
|
|
{
|
|
|
strcat(objectDesc, specifications);
|
|
|
}
|
|
|
////判断物料描述是否超过40个字符
|
|
|
//int len = gbk_strlen(objectDesc);
|
|
|
//if (len > 40)
|
|
|
//{
|
|
|
// strcat(resultString, "物料描述:");
|
|
|
// strcat(resultString, objectDesc);
|
|
|
// strcat(resultString, "已超过40个字符");
|
|
|
// strcat(resultString, "/n");
|
|
|
|
|
|
// goto loop2;
|
|
|
//}
|
|
|
//非空判断提示
|
|
|
printf("err%s\n", err.c_str());
|
|
|
if (strcmp(err.c_str(), "") != 0) {
|
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, err.c_str());
|
|
|
return 1;
|
|
|
}
|
|
|
char * desc = NULL;
|
|
|
char * stdDesc = NULL;
|
|
|
|
|
|
AOM_ask_value_string(attachments[i], "object_desc", &desc);
|
|
|
AOM_ask_value_string(attachments[i], "ml8_StdDesc", &stdDesc);
|
|
|
//判断是否不需要更改
|
|
|
if (strcmp(itemObjectDesc, objectDesc) == 0 && desc != NULL && stdDesc != NULL && strcmp(desc, "") != 0 && strcmp(stdDesc, "") != 0)
|
|
|
{
|
|
|
|
|
|
//查重物料描述
|
|
|
int n_entries = 1;
|
|
|
char* qry_entries[1] = { "描述" }, * qry_values[1] = { objectDesc };
|
|
|
int n_found = 0;
|
|
|
tag_t* dba_mbrs = NULLTAG;
|
|
|
char queryName[256] = "";
|
|
|
strcat(queryName, "所有物料描述查询");
|
|
|
TCFindItem(queryName, n_entries, qry_entries, qry_values, &n_found, &dba_mbrs);
|
|
|
|
|
|
bool isHaveItem = false;
|
|
|
for (int ii = 0; ii < n_found; ii++)
|
|
|
{
|
|
|
char* checkId;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &checkId);
|
|
|
//忽略id中含有"-"的
|
|
|
if (strstr(checkId, "-") != NULL)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
int releaseCount = 0;
|
|
|
tag_t* releaseTag = NULL_TAG;
|
|
|
//获取子件的发布状态
|
|
|
AOM_ask_value_tags(dba_mbrs[ii], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0) {
|
|
|
bool flag = false;
|
|
|
for (int a = 0; a < releaseCount; a++) {
|
|
|
char* releaseName;
|
|
|
AOM_ask_value_string(releaseTag[a], "object_name", &releaseName);
|
|
|
if (strcmp(releaseName, "被取代") == 0 || strcmp(releaseName, "ML8_Replaced") == 0) {
|
|
|
//进行下一次循环
|
|
|
flag = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (flag) {
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
char* otherItemId = NULL;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &otherItemId);
|
|
|
printf("对比Item_id:%s---%s Start===================\n", otherItemId, itemId);
|
|
|
if (strcmp(otherItemId, itemId) == 0)
|
|
|
{
|
|
|
DOFREE(otherItemId);
|
|
|
continue;
|
|
|
}
|
|
|
isHaveItem = true;
|
|
|
strcat(resultString, otherItemId);
|
|
|
strcat(resultString, ":");
|
|
|
strcat(resultString, "已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "\n");
|
|
|
DOFREE(otherItemId);
|
|
|
//break;
|
|
|
}
|
|
|
|
|
|
DOFREE(desc);
|
|
|
DOFREE(stdDesc);
|
|
|
goto loop2;
|
|
|
}
|
|
|
DOFREE(desc);
|
|
|
DOFREE(stdDesc);
|
|
|
|
|
|
//查重物料描述
|
|
|
int n_entries = 1;
|
|
|
char *qry_entries[1] = { "描述" }, *qry_values[1] = { objectDesc };
|
|
|
int n_found = 0;
|
|
|
tag_t * dba_mbrs = NULLTAG;
|
|
|
char queryName[256] = "";
|
|
|
strcat(queryName, "所有物料描述查询");
|
|
|
TCFindItem(queryName, n_entries, qry_entries, qry_values, &n_found, &dba_mbrs);
|
|
|
|
|
|
bool isHaveItem = false;
|
|
|
for (int ii = 0; ii < n_found; ii++)
|
|
|
{
|
|
|
char* checkId;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &checkId);
|
|
|
//忽略id中含有"-"的
|
|
|
if (strstr(checkId, "-") != NULL)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
int releaseCount = 0;
|
|
|
tag_t* releaseTag = NULL_TAG;
|
|
|
//获取子件的发布状态
|
|
|
AOM_ask_value_tags(dba_mbrs[ii], "release_status_list", &releaseCount, &releaseTag);
|
|
|
if (releaseCount > 0) {
|
|
|
bool flag = false;
|
|
|
for (int a = 0; a < releaseCount; a++) {
|
|
|
char* releaseName;
|
|
|
AOM_ask_value_string(releaseTag[a], "object_name", &releaseName);
|
|
|
if (strcmp(releaseName, "被取代") == 0 || strcmp(releaseName, "ML8_Replaced") == 0) {
|
|
|
//进行下一次循环
|
|
|
flag = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (flag) {
|
|
|
isHaveItem = false;
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
char * otherItemId = NULL;
|
|
|
AOM_ask_value_string(dba_mbrs[ii], "item_id", &otherItemId);
|
|
|
printf("对比Item_id:%s---%s Start===================\n", otherItemId, itemId);
|
|
|
if (strcmp(otherItemId, itemId) == 0)
|
|
|
{
|
|
|
DOFREE(otherItemId);
|
|
|
continue;
|
|
|
}
|
|
|
isHaveItem = true;
|
|
|
strcat(resultString, otherItemId);
|
|
|
strcat(resultString, ":");
|
|
|
strcat(resultString, "已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "\n");
|
|
|
DOFREE(otherItemId);
|
|
|
//break;
|
|
|
}
|
|
|
if (isHaveItem)
|
|
|
{
|
|
|
goto loop2;
|
|
|
}
|
|
|
|
|
|
/*if (n_found > 0)
|
|
|
{
|
|
|
strcat(resultString, "系统中已存在物料描述:");
|
|
|
strcat(resultString, objectDesc);
|
|
|
strcat(resultString, "/n");
|
|
|
|
|
|
DOFREE(dba_mbrs);
|
|
|
goto loop2;
|
|
|
}*/
|
|
|
//设置物料描述和标准描述
|
|
|
if (strlen(resultString) == 0) {
|
|
|
AOM_lock(attachments[i]);
|
|
|
AOM_set_value_string(attachments[i], "object_desc", objectDesc);
|
|
|
AOM_set_value_string(attachments[i], "ml8_StdDesc", objectDesc);
|
|
|
AOM_save(attachments[i]);
|
|
|
AOM_unlock(attachments[i]);
|
|
|
AOM_refresh(attachments[i], false);
|
|
|
}
|
|
|
|
|
|
|
|
|
DOFREE(dba_mbrs);
|
|
|
}
|
|
|
|
|
|
loop2:
|
|
|
DOFREE(itemObjectType);
|
|
|
DOFREE(propertyValue);
|
|
|
DOFREE(objectName);
|
|
|
DOFREE(externalWorking);
|
|
|
DOFREE(colour);
|
|
|
DOFREE(figureNum);
|
|
|
DOFREE(identification);
|
|
|
DOFREE(specifications);
|
|
|
}
|
|
|
|
|
|
DOFREE(itemType);
|
|
|
DOFREE(itemObjectDesc);
|
|
|
}
|
|
|
DOFREE(attachments);
|
|
|
if (gbk_strlen(resultString) > 2)
|
|
|
{
|
|
|
ifail = 1;
|
|
|
EMH_store_error_s1(EMH_severity_user_error, EMH_USER_error_base, resultString);
|
|
|
}
|
|
|
|
|
|
auto stopTime = std::chrono::high_resolution_clock::now();
|
|
|
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(stopTime - startTime);
|
|
|
//std::cout << "ML_ChangeObjectDesc用时:" << duration.count() / 1000 << std::endl;
|
|
|
string usetime = "ML_ChangeObjectDesc用时:";
|
|
|
usetime.append(std::to_string(duration.count() / 1000));
|
|
|
WriteLog(true, usetime.c_str());
|
|
|
printf("=========================更改物料描述 End===================\n");
|
|
|
return ifail;
|
|
|
} |