工艺传递

pull/1/head
李建辉 2 months ago
parent 4e7dc78d21
commit c3b34e0d63

@ -0,0 +1,521 @@
#pragma warning (disable: 4996)
#pragma warning (disable: 4819)
#include <cstdio>
#include <io.h>
#include <epm/epm.h>
#include <ict/ict_userservice.h>
#include <tccore/item.h>
#include <ae/ae.h>
#include <tc/folder.h>
#include <tccore/aom.h>
#include <sa/sa.h>
#include <tccore/aom_prop.h>
#include <tccore/workspaceobject.h>
#include <tccore//grm.h>
#include <tccore/grmtype.h>
#include <bom/bom.h>
#include <fclasses/tc_date.h>
#include <ics/ics.h>
#include <ics/ics2.h>
#include "tc_util.h"
#include "tc_log.h"
#include <vector>
#include <epm/signoff.h>
#include <iostream>
#include "string_utils.h"
#include "tinyxml.h"
#include "ado.h"
#include <stdio.h>
#include <time.h>
using namespace std;
extern "C" int POM_AM__set_application_bypass(logical bypass);
#include <string>
#include <sstream>
#include <iomanip>
#include <string>
#include <sstream>
#include <iomanip>
bool endsWith(const std::string& str, const std::string& suffix) {
if (str.length() < suffix.length()) {
return false;
}
return str.compare(str.length() - suffix.length(), suffix.length(), suffix) == 0;
}
std::string removeTrailingAndGY(const std::string& str) {
const std::string suffix = " and ";
if (str.length() >= suffix.length() &&
str.compare(str.length() - suffix.length(), suffix.length(), suffix) == 0) {
return str.substr(0, str.length() - suffix.length());
}
return str;
}
string readXMLGY(map<string, map<vector<string>, vector<string>>> &xmlMap, string xmlPath) {
time_t currentTime;
struct tm *timeInfo;
char timeString[80];
// 获取当前时间
time(&currentTime);
// 将时间转换为本地时间
timeInfo = localtime(&currentTime);
TiXmlDocument* pDoc = new TiXmlDocument();
pDoc->LoadFile(xmlPath.c_str());
//pDoc->Print();
//获取根节点
TiXmlElement* pRoot = pDoc->RootElement();
string rootName = pRoot->Value();
string t_Item_info = rootName;//
//获取Item标签
TiXmlElement* itemElement = pRoot->FirstChildElement("ITEM");//物料类型
string itemLable = itemElement->Value();
TiXmlElement *nextItemElement = itemElement;
//循环遍历根节点下的兄弟节点
char type[50] = "";
char sessionId[50] = "";
char transNowTime[50] = "";
char transStatus[50] = "";
char itemId[50] = "";
char itemRev[50] = "";
char itemName[50] = "";
char itemRelease[50] = "";
while (nextItemElement) {
map<vector<string>, vector<string>> propertyMap;//字段名集合,值的集合
vector<string> nameVec;
vector<string> valueVec;
const char* attribute_value = nextItemElement->Attribute("type");
if (attribute_value == NULL) {
strcpy(type, "通用");
}
else {
strcpy(type, attribute_value);
}
WriteLog("type=%s\n", type);
string materialType = type;
TiXmlElement* pChild = nextItemElement->FirstChildElement();
if (pChild != NULL) {
string childLabnelName = pChild->Value();
attribute_value = pChild->Attribute("val");
strcpy(sessionId, attribute_value); // 将 str 复制给 copy
string tempValue = sessionId;
nameVec.push_back(childLabnelName);
valueVec.push_back(tempValue);
}
pChild = pChild->NextSiblingElement();
while (true) {
if (pChild != NULL) {
string childLabnelName = pChild->Value();
attribute_value = pChild->Attribute("val");
strcpy(sessionId, attribute_value); // 将 str 复制给 copy
string tempValue = sessionId;
nameVec.push_back(childLabnelName);
WriteLog("childLabnelName==== %s\n", childLabnelName.c_str());
if (strcmp("TRANSNO", childLabnelName.c_str()) == 0) {
strftime(timeString, sizeof(timeString), sessionId, timeInfo);
WriteLog("timeString==== %s\n", timeString);
tempValue = timeString;
}
valueVec.push_back(tempValue);
}
;
pChild = pChild->NextSiblingElement();
if (pChild == NULL) {
break;
}
}
propertyMap[nameVec] = valueVec;
xmlMap[materialType] = propertyMap;
nextItemElement = nextItemElement->NextSiblingElement();
}
delete pDoc;//
return t_Item_info;
}
/**
*
*/
void removeQuotesGY(char* tempValue) {
if (tempValue == nullptr) return;
size_t len = strlen(tempValue);
// 移除开头的单引号
if (len > 0 && tempValue[0] == '\'') {
memmove(tempValue, tempValue + 1, len);
len--;
}
// 移除末尾的单引号
if (len > 0 && tempValue[len - 1] == '\'') {
tempValue[len - 1] = '\0';
}
}
int JD_GYInfoToMediDatabase(EPM_action_message_t msg) {
bool showError = false;
nowTime();
time_t now;
struct tm *p;
//获取当前时间
time(&now);
//本地化时间,可以细分为年月日时分秒等
p = localtime(&now);
char TC_LOG_FILE[128] = "";
createDir();//创建日志目录
// 把日志名称赋予给某变量
sprintf_s(TC_LOG_FILE, "%s\\tmplog\\JD_GYInfoToMediDatabase_log_[%d-%d-%d-%d-%02d-%02d].txt", getenv("TEMP"), 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min,p->tm_sec);
ECHO("创建日志文件[%s]\n", TC_LOG_FILE);
CreateLogFile(TC_LOG_FILE);
//流程节点相关
tag_t root_task = NULLTAG, *sub_tasks = NULL, current_task = NULLTAG, type_tag = NULLTAG;
int arg_cnt = 0, ifail = 0;
char arg1value[1024] = "";//物料类型
char *argflag = NULL, *argvalue = NULL, *arg = NULL;
//得到触发此函数的节点
current_task = msg.task;
WriteLog("=========================================================\n");
WriteLog("JD_GYInfoToMediDatabase 开始执行\n");
WriteLog("=========================================================\n");
//获取handler的参数的个数
arg_cnt = TC_number_of_arguments(msg.arguments);
WriteLog("参数个数为:%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, "PartItem") == 0)
{
if (argvalue != NULL)
{
strcpy(arg1value, argvalue);
}
}
}
MEM_free(argflag);
MEM_free(argvalue);
}
//先获取首选项Jd_Erp_Info_Connect解析其中的用户名密码配置文件等信息
vector<string> pref_vec1;
getPrefStrings1("Jd_MES_Info_Connect", TC_preference_site, pref_vec1);
string ip = pref_vec1[0];
string databaseName = pref_vec1[1];
string user = pref_vec1[2];
string password = pref_vec1[3];
string xmlUid = pref_vec1[11];
WriteLog("ip:%s\n", ip.c_str());
WriteLog("databaseName:%s\n", databaseName.c_str());
WriteLog("user:%s\n", user.c_str());
WriteLog("password:%s\n", password.c_str());
WriteLog("xmlUid:%s\n", xmlUid.c_str());
ado ado0;
char userName[100];
strcpy(userName, user.c_str());
char pwd[100];
strcpy(pwd, password.c_str());
string info = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=";
info.append(databaseName).append(";Data Source=").append(ip);
WriteLog("连接信息:%s\n", info.c_str());
bool log = ado0.open(userName, pwd, info.c_str());
tag_t wlinfoXml = NULL;
ITK__convert_uid_to_tag(xmlUid.c_str(), &wlinfoXml);
//获取文件
char *temp_dir = getenv("temp");//获得缓存路径
char output_file_xml_temp[SS_MAXPATHLEN] = "";
strcpy(output_file_xml_temp, temp_dir);
strcat(output_file_xml_temp, "\\");
strcat(output_file_xml_temp, xmlUid.c_str());
strcat(output_file_xml_temp, ".xml");
if (access(output_file_xml_temp, 0) == 0) {//存在
if (remove(output_file_xml_temp) == 0) {
cout << "exist" << output_file_xml_temp << "delete" << endl;
}
}
POM_AM__set_application_bypass(true);
ITKCALL(AE_export_named_ref(wlinfoXml, "XMLRendering", output_file_xml_temp));
POM_AM__set_application_bypass(false);
string path = output_file_xml_temp;
//解析xml文件
//创建一个XML结构并载入文件内容
map<string, map<vector<string>, vector<string>>> xmlMap;//物料类型,<字段名,属性取值>
string tableName = readXMLGY(xmlMap, path);
WriteLog("中间表:%s\n", tableName.c_str());
//遍历map所有层级
string revType = arg1value;
vector<string> revTypeVec;
Split(revType, ";", revTypeVec);
int att_cnt = 0;
tag_t *attachments = NULL;
//获取根流程节点
tag_t task_tag = msg.task;
tag_t rootTask_tag = NULL;
ifail = EPM_ask_root_task(task_tag, &rootTask_tag);
vector<string> insertVec;
vector<string> updateVec;
vector<string> selectVec;
vector<string> selectAfterUpdateVec;
//获取目标引用对象
ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments);
for (int i = 0; i < att_cnt; i++) {
char *object_TYPE_1 = NULL;
ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1);//对象类型
WriteLog("当前类型对象为 %s\n", object_TYPE_1);
string partType = object_TYPE_1;
if (hasElement(revTypeVec, partType) == 0) {
//
string sqlStr = "insert into ";
string updateStr = "update ";
string selectStr = "select * from ";
string selectAfterUpdateStr = "select * from ";
string updateWhere = "";
sqlStr = sqlStr.append(tableName).append(" (");
selectStr = selectStr.append(tableName).append(" ");
selectAfterUpdateStr = selectAfterUpdateStr.append(tableName).append(" ");
string valueStr = " VALUES (";
//包含类型,连接数据库
if (log == false) {
cout << "登陆成功" << endl;
tag_t partItem = NULL;
ITEM_ask_item_of_rev(attachments[i], &partItem);
char *itemType = NULL;
AOM_ask_value_string(partItem, "object_type", &itemType);
string itemTypeString = itemType;
map<vector<string>, vector<string>> propertyMap;
propertyMap = xmlMap[itemType];
if (propertyMap.size() == 0) {
propertyMap = xmlMap["通用"];
}
map<vector<string>, vector<string>>::iterator rev_it2;
for (rev_it2 = propertyMap.begin(); rev_it2 != propertyMap.end(); rev_it2++) {
vector<string> nameVec = rev_it2->first;
vector<string> valueVec = rev_it2->second;
for (int j = 0; j < nameVec.size(); j++) {
string columnName = nameVec[j];
string columnValue = valueVec[j];
WriteLog("字段名 %s, 取值 %s\n", columnName.c_str(), columnValue.c_str());
WriteLog("字段名 %s, 取值 %s\n", columnName.c_str(), columnValue.c_str());
sqlStr = sqlStr.append(columnName);
if (strcmp(columnName.c_str(), "TRANSNO") == 0) {
//时间已经处理,直接获取即可
valueStr.append("'").append(columnValue).append("'");
if (updateWhere.length() == 0) {
updateWhere = updateWhere.append(" where ");
updateWhere = updateWhere.append(columnName).append("='").append(columnValue).append("' and ");
selectStr = selectStr.append(" where ");
selectStr = selectStr.append(columnName).append("='").append(columnValue).append("' and ");
selectAfterUpdateStr = selectAfterUpdateStr.append(" where ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(columnValue).append("' and ");
}
else {
updateWhere = updateWhere.append(columnName).append("='").append(columnValue).append("'");
selectStr = selectStr.append(columnName).append("='").append(columnValue).append("'");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(columnValue).append("'");
}
}
else if (strcmp(columnName.c_str(), "SESSIONID") == 0) {
//固定值,直接获取即可
valueStr.append("'").append(columnValue).append("'");
}
else if (strcmp(columnName.c_str(), "TRANSSTATUS") == 0) {
//不做任何处理,但在传递完毕后更新
updateStr = updateStr.append(tableName).append(" set ").append(columnName).append("='").append(columnValue).append("' ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(columnValue).append("' and ");
valueStr.append("'").append(" ").append("'");
}
else if (strcmp(columnName.c_str(), "PUID") == 0) {
//获取所有发布状态release_status_list
char *puid = NULL;
ITK__convert_tag_to_uid(attachments[i], &puid);
string puidString = puid;
valueStr.append("'").append(puid).append("'");
if (updateWhere.length() == 0) {
updateWhere = updateWhere.append(" where ");
updateWhere = updateWhere.append(columnName).append("='").append(puid).append("' and ");
selectStr = selectStr.append(" where ");
selectStr = selectStr.append(columnName).append("='").append(columnValue).append("' and ");
selectAfterUpdateStr = selectAfterUpdateStr.append(" where ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(columnValue).append("' and ");
}
else {
updateWhere = updateWhere.append(columnName).append("='").append(puid).append("'");
selectStr = selectStr.append(columnName).append("='").append(puid).append("'");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(puid).append("'");
}
DOFREE(puid);
}
else {
//其他情况获取属性
vector<string> vec;
if (columnValue.size() > 0) {
Split(columnValue, ".", vec);
char *tempValue = NULL;
if (vec.size() == 2) {
tag_t objTag = NULL;
if (strcmp(vec[0].c_str(), "item") == 0) {
objTag = partItem;
}
else if (strcmp(vec[0].c_str(), "rev") == 0) {
objTag = attachments[i];
}
//需要注意,如果属性不存在或者说不准确,就传空值
string tempValueString = " ";
if (endsWith(columnName, "Date")) {
// 是以 "Date" 结尾
date_t creation_date;
AOM_ask_value_date(objTag, vec[1].c_str(), &creation_date);//zt2_ChangeDate
tempValueString.append(to_string(creation_date.year)).append("-").
append(to_string(creation_date.month + 1)).append("-").
append(to_string(creation_date.day)).append(" ").
append(to_string(creation_date.hour)).append(":").
append(to_string(creation_date.minute)).append(":").append(to_string(creation_date.second));
}
else {
ITKCALL(ifail = AOM_UIF_ask_value(objTag, vec[1].c_str(), &tempValue));
removeQuotesGY(tempValue);
if (ifail == 0) {
tempValueString = tempValue;
}
else {
showError = true;
WriteLog("属性异常:%s\n", vec[1].c_str());
}
}
EMH_clear_errors();
valueStr.append("'").append(tempValueString).append("'");
}
DOFREE(tempValue);
}
else {
valueStr.append("' '");
}
}
if (j < nameVec.size() - 1) {
valueStr.append(",");
sqlStr = sqlStr.append(",");
}
else {
valueStr.append(")");
sqlStr = sqlStr.append(") ");
}
}
}
sqlStr = sqlStr.append(valueStr);
//正式系统编码utf-8,测试系统gbk
updateStr = updateStr.append(updateWhere);
sqlStr = Utf8ToGbk(sqlStr.c_str());
updateStr = Utf8ToGbk(updateStr.c_str());
selectStr= Utf8ToGbk(selectStr.c_str());
updateStr = removeTrailingAndGY(updateStr);
sqlStr = removeTrailingAndGY(sqlStr);
updateStr = removeTrailingAndGY(updateStr);
selectStr = removeTrailingAndGY(selectStr);
selectAfterUpdateStr = removeTrailingAndGY(selectAfterUpdateStr);
selectAfterUpdateStr = Utf8ToGbk(selectAfterUpdateStr.c_str());
WriteLog("gbk插入语句%s\n", sqlStr.c_str());
WriteLog("更新语句:%s\n", updateStr.c_str());
WriteLog("查询语句:%s\n", selectStr.c_str());
WriteLog("更新后查询语句:%s\n", selectAfterUpdateStr.c_str());
insertVec.push_back(sqlStr);
updateVec.push_back(updateStr);
selectVec.push_back(selectStr);
selectAfterUpdateVec.push_back(selectAfterUpdateStr);
char sendChar[2000] = "";
strcpy(sendChar, sqlStr.c_str());
char sendChar2[2000] = "";
strcpy(sendChar2, selectStr.c_str());
int result = ado0.ado_QuerySQLNoInputParam(sendChar2);
bool resultSql = ado0.executeInsert(sendChar2, sendChar, result);
}
else {
cout << "登录失败" << endl;
}
}
DOFREE(object_TYPE_1);
}
WriteLog("8\n");
//更新数据库
for (int i = 0; i < updateVec.size(); i++) {
string updateSql = updateVec[i];
string selectSql = selectVec[i];
string insertSql = insertVec[i];
string selectUpdate = selectAfterUpdateVec[i];
char sendChar[2000] = "";
char sendChar2[2000] = "";
char sendChar3[2000] = "";
strcpy(sendChar, updateSql.c_str());
strcpy(sendChar2, selectSql.c_str());
strcpy(sendChar3, selectUpdate.c_str());
WriteLog("9\n");
int result = ado0.ado_QuerySQLNoInputParam(sendChar2);
if (result==0) {
showError = true;
WriteLog("插入失败:%s\n", insertSql.c_str());
}
else {
bool resultSql = ado0.execute2(sendChar2, sendChar, result);
result = ado0.ado_QuerySQLNoInputParam(sendChar3);
if (result == 0) {
showError = true;
WriteLog("更新失败:%s\n", updateSql.c_str());
}
}
}
ado0.close();
//EMH_clear_errors();
DOFREE(attachments);
//if (showError == true) {
// string logName = "数据异常,详见服务器日志:";
// logName = logName.append(TC_LOG_FILE);
// EMH_store_error_s1(EMH_severity_warning, EMH_AE_error_base, logName.c_str());
//}
WriteLog("=========================================================\n");
WriteLog("JD_GYInfoToMediDatabase 结束\n");
WriteLog("=========================================================\n");
return 0;
}

@ -171,6 +171,7 @@
<ClCompile Include="JD_BOPInfoToMediDatabase.cxx" /> <ClCompile Include="JD_BOPInfoToMediDatabase.cxx" />
<ClCompile Include="JD_FileInfoToMediDatabase.cpp" /> <ClCompile Include="JD_FileInfoToMediDatabase.cpp" />
<ClCompile Include="JD_GXInfoToMediDatabase.cxx" /> <ClCompile Include="JD_GXInfoToMediDatabase.cxx" />
<ClCompile Include="JD_GYInfoToMediDatabase.cxx" />
<ClCompile Include="JD_ItemInfoToMediDatabase.cpp" /> <ClCompile Include="JD_ItemInfoToMediDatabase.cpp" />
<ClCompile Include="k_util.cpp" /> <ClCompile Include="k_util.cpp" />
<ClCompile Include="NHL_SignOff_Handler.cpp" /> <ClCompile Include="NHL_SignOff_Handler.cpp" />

@ -113,5 +113,8 @@
<ClCompile Include="JD_GXInfoToMediDatabase.cxx"> <ClCompile Include="JD_GXInfoToMediDatabase.cxx">
<Filter>源文件</Filter> <Filter>源文件</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="JD_GYInfoToMediDatabase.cxx">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -13,3 +13,4 @@ int USERSERVICE_changeUnit(void* returnValue);
int SynchronizeDataSet(EPM_action_message_t msg); int SynchronizeDataSet(EPM_action_message_t msg);
int JD_BOPInfoToMediDatabase(EPM_action_message_t msg); int JD_BOPInfoToMediDatabase(EPM_action_message_t msg);
int JD_GXInfoToMediDatabase(EPM_action_message_t msg); int JD_GXInfoToMediDatabase(EPM_action_message_t msg);
int JD_GYInfoToMediDatabase(EPM_action_message_t msg);

@ -73,7 +73,13 @@ extern DLLAPI int ldy_register_handlers(int *decision, va_list args)
printf("=================Registering action handler JD_GXInfoToMediDatabase failed %d!\n", ifail); printf("=================Registering action handler JD_GXInfoToMediDatabase failed %d!\n", ifail);
} }
ITKCALL(ifail = EPM_register_action_handler("JD_GYInfoToMediDatabase", "标准工艺对象集成", (EPM_action_handler_t)JD_GYInfoToMediDatabase));
if (ifail == ITK_ok) {
printf("================Registering action handler JD_GYInfoToMediDatabase successful!\n");
}
else {
printf("=================Registering action handler JD_GYInfoToMediDatabase failed %d!\n", ifail);
}
//升版二开后操 //升版二开后操
METHOD_id_t mth_tag; METHOD_id_t mth_tag;
ifail = METHOD_find_method("ItemRevision", ITEM_copy_rev_msg, &mth_tag);//参数1类型支持原生和客制化的参数2操作类型 ifail = METHOD_find_method("ItemRevision", ITEM_copy_rev_msg, &mth_tag);//参数1类型支持原生和客制化的参数2操作类型

@ -1,5 +1,4 @@
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\vc142.pdb d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\vc142.pdb
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinyxmlerror.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinyxml.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinyxml.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinystr.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinystr.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\testreadxml.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\testreadxml.obj
@ -14,12 +13,14 @@ d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\lidy_main.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\nhl_signoff_handler.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\nhl_signoff_handler.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\k_util.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\k_util.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_iteminfotomedidatabase.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_iteminfotomedidatabase.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_gyinfotomedidatabase.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_gxinfotomedidatabase.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_gxinfotomedidatabase.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_fileinfotomedidatabase.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_fileinfotomedidatabase.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_bopinfotomedidatabase.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_bopinfotomedidatabase.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_bominfotomedidatabase.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\jd_bominfotomedidatabase.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\adoconn.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\adoconn.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinyxmlparser.obj d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinyxmlparser.obj
d:\source\精雕\jingdiao_connor_jd\connor_ldy\x64\release\tinyxmlerror.obj
d:\source\精雕\jingdiao_connor_jd\x64\release\connor_jd.lib d:\source\精雕\jingdiao_connor_jd\x64\release\connor_jd.lib
d:\source\精雕\jingdiao_connor_jd\x64\release\connor_jd.exp d:\source\精雕\jingdiao_connor_jd\x64\release\connor_jd.exp
d:\source\精雕\jingdiao_connor_jd\x64\release\connor_jd.dll d:\source\精雕\jingdiao_connor_jd\x64\release\connor_jd.dll

@ -173,6 +173,38 @@ D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(190,8
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(226,19): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(226,19): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(232,6): warning C4996: 'access': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _access. See online help for details. D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(232,6): warning C4996: 'access': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _access. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(364,8): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead. D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GXInfoToMediDatabase.cxx(364,8): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
JD_GYInfoToMediDatabase.cxx
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\string_utils.h(134,50): warning C4190: “replace”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”
C:\VS2019\VC\Tools\MSVC\14.29.30133\include\xstring(4871): message : 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\string_utils.h(135,45): warning C4190: “stringToUTF8”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”
C:\VS2019\VC\Tools\MSVC\14.29.30133\include\xstring(4871): message : 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\string_utils.h(136,39): warning C4190: “GbkToUtf8”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”
C:\VS2019\VC\Tools\MSVC\14.29.30133\include\xstring(4871): message : 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\string_utils.h(137,39): warning C4190: “Utf8ToGbk”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”
C:\VS2019\VC\Tools\MSVC\14.29.30133\include\xstring(4871): message : 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(96,4): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(99,4): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(107,4): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(117,5): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(69,13): warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(212,6): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(234,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(236,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(246,2): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(247,2): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(248,2): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(249,2): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(469,5): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(471,5): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(491,3): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(492,3): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(493,3): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(180,6): warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(184,96): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(208,8): warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _stricmp. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(244,19): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(250,6): warning C4996: 'access': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _access. See online help for details.
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\JD_GYInfoToMediDatabase.cxx(399,11): warning C4996: 'AOM_UIF_ask_value': "AOM_UIF_ask_value" deprecated in Teamcenter "11.1"; Use "AOM_ask_displayable_values" instead.
JD_ItemInfoToMediDatabase.cpp JD_ItemInfoToMediDatabase.cpp
D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\string_utils.h(134,50): warning C4190: “replace”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>” D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\string_utils.h(134,50): warning C4190: “replace”有指定的 C 链接,但返回了与 C 不兼容的 UDT“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”
C:\VS2019\VC\Tools\MSVC\14.29.30133\include\xstring(4871): message : 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明 C:\VS2019\VC\Tools\MSVC\14.29.30133\include\xstring(4871): message : 参见“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”的声明
@ -296,12 +328,12 @@ D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\tc_util.cpp(63,10): warning C4067
testReadXml.cpp testReadXml.cpp
tinystr.cpp tinystr.cpp
tinyxml.cpp tinyxml.cpp
tinyxmlerror.cpp
正在编译... 正在编译...
tinyxmlerror.cpp
tinyxmlparser.cpp tinyxmlparser.cpp
正在创建库 D:\source\精雕\JINGDIAO_connor_jd\x64\Release\connor_jd.lib 和对象 D:\source\精雕\JINGDIAO_connor_jd\x64\Release\connor_jd.exp 正在创建库 D:\source\精雕\JINGDIAO_connor_jd\x64\Release\connor_jd.lib 和对象 D:\source\精雕\JINGDIAO_connor_jd\x64\Release\connor_jd.exp
正在生成代码 正在生成代码
Previous IPDB not found, fall back to full compilation. Previous IPDB not found, fall back to full compilation.
All 1764 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. All 1779 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
已完成代码的生成 已完成代码的生成
connor_ldy.vcxproj -> D:\source\精雕\JINGDIAO_connor_jd\x64\Release\connor_jd.dll connor_ldy.vcxproj -> D:\source\精雕\JINGDIAO_connor_jd\x64\Release\connor_jd.dll

Binary file not shown.

Binary file not shown.

@ -3,7 +3,7 @@
// D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\x64\Release\msado15.tlh // D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\x64\Release\msado15.tlh
// //
// C++ source equivalent of type library c:\program files\common files\system\ado\msado15.dll // C++ source equivalent of type library c:\program files\common files\system\ado\msado15.dll
// compiler-generated file created 02/06/26 at 11:31:03 - DO NOT EDIT! // compiler-generated file created 02/11/26 at 17:32:47 - DO NOT EDIT!
#pragma once #pragma once
#pragma pack(push, 8) #pragma pack(push, 8)

@ -3,7 +3,7 @@
// D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\x64\Release\msado15.tli // D:\source\精雕\JINGDIAO_connor_jd\connor_ldy\x64\Release\msado15.tli
// //
// Wrapper implementations for type library c:\program files\common files\system\ado\msado15.dll // Wrapper implementations for type library c:\program files\common files\system\ado\msado15.dll
// compiler-generated file created 02/06/26 at 11:31:03 - DO NOT EDIT! // compiler-generated file created 02/11/26 at 17:32:47 - DO NOT EDIT!
#pragma once #pragma once

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save