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.

646 lines
24 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.

#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;
string readFileInfoXML(map<string, map<vector<string>, vector<string>>> &xmlMap, string path, vector<string> &typeVec) {
time_t currentTime;
struct tm *timeInfo;
char timeString[80];
// 获取当前时间
time(&currentTime);
// 将时间转换为本地时间
timeInfo = localtime(&currentTime);
TiXmlDocument* pDoc = new TiXmlDocument();
pDoc->LoadFile(path.c_str());
//pDoc->Print();
//char labelName[50]="";
//获取根节点
TiXmlElement* pRoot = pDoc->RootElement();
string rootName = pRoot->Value();
string t_Item_info = rootName;//
//循环遍历根节点下的兄弟节点
char type[50] = "";
char sessionId[50] = "";
char transNowTime[50] = "";
char transStatus[50] = "";
char itemId[50] = "";
char itemRev[50] = "";
char itemName[50] = "";
char itemRelease[50] = "";
map<vector<string>, vector<string>> propertyMap;//字段名集合,值的集合
vector<string> nameVec;
vector<string> valueVec;
TiXmlElement* pChild = pRoot->FirstChildElement();
const char* attribute_value = NULL;
if (pChild != NULL) {
string childLabnelName = pChild->Value();
attribute_value = pChild->Attribute("val");
if (attribute_value == NULL) {
strcpy(sessionId, " ");
}
else {
strcpy(sessionId, attribute_value);
}
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");
if (attribute_value == NULL) {
strcpy(sessionId, " "); // 将 str 复制给 copy
}
else {
strcpy(sessionId, attribute_value); // 将 str 复制给 copy
}
string tempValue = sessionId;
if (strcmp("TRANSNO", childLabnelName.c_str()) == 0) {
//转换时间, 将时间按照指定格式转换为字符串
strftime(timeString, sizeof(timeString), sessionId, timeInfo);
// 打印转换后的时间字符串
tempValue = timeString;
}
if (strcmp("RELTYPE", childLabnelName.c_str()) != 0) {
nameVec.push_back(childLabnelName);;
valueVec.push_back(tempValue);
}
pChild = pChild->NextSiblingElement();
if (pChild == NULL) {
break;
}
}
}
propertyMap[nameVec] = valueVec;
xmlMap[""] = propertyMap;
//获取子级
pChild = pRoot->FirstChildElement("RELTYPE");
attribute_value = pChild->Attribute("val");//所有关系
strcpy(sessionId, attribute_value); // 将 str 复制给 copy
string allTypes = sessionId;
Split(allTypes, ";", typeVec);
vector<string> childNameVec;
vector<string> childValueVec;
map<vector<string>, vector<string>> childPropertyMap;//字段名集合,值的集合
TiXmlElement* sonChild = pChild;
TiXmlElement* cChild = sonChild->FirstChildElement();
if (cChild != NULL) {
string LabnelName = cChild->Value();
attribute_value = cChild->Attribute("val");
strcpy(sessionId, attribute_value); // 将 str 复制给 copy
string tempValue = sessionId;
childNameVec.push_back(LabnelName);
childValueVec.push_back(tempValue);
}
cChild = cChild->NextSiblingElement();
while (true) {
if (cChild != NULL) {
string LabnelName = cChild->Value();
attribute_value = cChild->Attribute("val");
if (attribute_value == NULL) {
strcpy(sessionId, " "); // 将 str 复制给 copy
}
else {
strcpy(sessionId, attribute_value); // 将 str 复制给 copy
}
string tempValue = sessionId;
childNameVec.push_back(LabnelName);
childValueVec.push_back(tempValue);
}
cChild = cChild->NextSiblingElement();
if (cChild == NULL) {
break;
}
}
childPropertyMap[childNameVec] = childValueVec;
xmlMap[""] = childPropertyMap;
delete pDoc;//应该是必要的
return t_Item_info;
}
int JD_FileInfoToMediDatabase(EPM_action_message_t msg) {
nowTime();
time_t now;
struct tm *p;
POM_AM__set_application_bypass(true);
//获取当前时间
time(&now);
//本地化时间,可以细分为年月日时分秒等
p = localtime(&now);
char TC_LOG_FILE[128] = "";
bool showError = false;
createDir();//创建日志目录
// 把日志名称赋予给某变量
sprintf_s(TC_LOG_FILE, "%s\\tmplog\\JD_FileInfoToMediDatabase_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_FileInfoToMediDatabase 开始执行\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_Erp_Info_Connect_Test", 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[6];
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 bomInfoXml = NULL;
ITK__convert_uid_to_tag(xmlUid.c_str(), &bomInfoXml);
//获取文件
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;
}
}
ITKCALL(AE_export_named_ref(bomInfoXml, "XMLRendering", output_file_xml_temp));
string path = output_file_xml_temp;
//解析xml文件
//创建一个XML结构并载入文件内容
map<string, map<vector<string>, vector<string>>> xmlMap;//物料类型,<字段名,属性取值>
vector<string> typeVec;
string tableName = readFileInfoXML(xmlMap, path, typeVec);
map<vector<string>, vector<string>> parentPropertyMap = xmlMap[""];//父级
vector<string> parentNameVec;
vector<string> parentValueVec;
map<vector<string>, vector<string>>::iterator rev_it2;
for (rev_it2 = parentPropertyMap.begin(); rev_it2 != parentPropertyMap.end(); rev_it2++) {
parentNameVec = rev_it2->first;
parentValueVec = rev_it2->second;
}
map<vector<string>, vector<string>> childPropertyMap = xmlMap[""];//子级
vector<string> childNameVec;
vector<string> childValueVec;
map<vector<string>, vector<string>>::iterator rev_it;
for (rev_it = childPropertyMap.begin(); rev_it != childPropertyMap.end(); rev_it++) {
childNameVec = rev_it->first;
childValueVec = rev_it->second;
}
//遍历map所有层级
string revType = arg1value;
WriteLog("revType%s\n", revType.c_str());
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) {
WriteLog("登录成功=====\n");
tag_t partItem = NULL;
ITEM_ask_item_of_rev(attachments[i], &partItem);
//TODO 获取关系下的所有信息
//获取版本下的bom视图
//获取父属性
string parentColumnStr = "insert into ";
parentColumnStr = parentColumnStr.append(tableName).append(" (");
string parentValueStr = "values(";
for (int j = 0; j < parentNameVec.size(); j++)
{
string columnName = parentNameVec[j];
parentColumnStr = parentColumnStr.append(columnName);
if (j < parentNameVec.size() - 1) {
parentColumnStr = parentColumnStr.append(",");
}
string propertyName = parentValueVec[j];
string tempValue = " ";
string updateValue = "";
if (strcmp(columnName.c_str(), "SESSIONID") == 0) {
tempValue = propertyName;//固定值
}
else if (strcmp(columnName.c_str(), "TRANSNO") == 0) {
tempValue = propertyName;//已处理
if (updateWhere.length() == 0) {
updateWhere = updateWhere.append(" where ");
updateWhere = updateWhere.append(columnName).append("='").append(tempValue).append("' and ");
selectStr = selectStr.append(" where ");
selectStr = selectStr.append(columnName).append("='").append(tempValue).append("' and ");
selectAfterUpdateStr = selectAfterUpdateStr.append(" where ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(tempValue).append("' and ");
}
else {
updateWhere = updateWhere.append(columnName).append("='").append(tempValue).append("' and ");
selectStr = selectStr.append(columnName).append("='").append(tempValue).append("' and ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(tempValue).append("' and ");
}
}
else if (strcmp(columnName.c_str(), "TRANSSTATUS") == 0) {
//首次传递空值
updateValue = propertyName;
updateStr = updateStr.append(tableName).append(" set ").append(columnName).append("='").append(updateValue).append("' ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(updateValue).append("' and ");
}
else if (strcmp(columnName.c_str(), "PPUID") == 0) {
char *puid = NULL;
ITK__convert_tag_to_uid(attachments[i], &puid);
tempValue = puid;
//selectStr = selectStr.append(columnName).append("='").append(tempValue).append("' and ");
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(tempValue).append("' and ");
selectAfterUpdateStr = selectAfterUpdateStr.append(" where ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(tempValue).append("' and ");
}
else {
updateWhere = updateWhere.append(columnName).append("='").append(puid).append("' and ");
selectStr = selectStr.append(columnName).append("='").append(puid).append("' and ");
selectAfterUpdateStr = selectAfterUpdateStr.append(columnName).append("='").append(puid).append("' and ");
}
DOFREE(puid);
}
else {
vector<string> propertyVec;
Split(propertyName, ".", propertyVec);
if (propertyVec.size() == 2) {
string propertyPosition = propertyVec[0];
tag_t propertyTag = NULL;
if (strcmp("item", propertyPosition.c_str()) == 0) {
propertyTag = partItem;
}
else if (strcmp("rev", propertyPosition.c_str()) == 0) {
propertyTag = attachments[i];
}
string propertyName = propertyVec[1];
char *propertyValue = NULL;
ITKCALL(ifail=AOM_UIF_ask_value(propertyTag, propertyName.c_str(), &propertyValue));
EMH_clear_errors();
if (ifail==0) {
tempValue = propertyValue;
}
else {
showError = true;
WriteLog("属性异常:%s\n", propertyName.c_str());
}
DOFREE(propertyValue);
}
}
parentValueStr = parentValueStr.append("'").append(tempValue).append("'");
if (j < parentNameVec.size() - 1) {
parentValueStr = parentValueStr.append(",");
}
}
for (int k = 0; k < typeVec.size(); k++) {
string relType = typeVec[k];
if (strcmp("TC_Is_Represented_By", relType.c_str()) == 0) {
//TODO 只取蓝勾选中的版本获取属性TC_Primary_Design_Representation即可
int child_count = 0; tag_t *child_tags = NULLTAG;
AOM_ask_value_tags(attachments[i], "TC_Primary_Design_Representation", &child_count, &child_tags);
if (child_count > 0) {
tag_t rev_tag = child_tags[0];
tag_t childItem = NULL;
ITEM_ask_item_of_rev(rev_tag, &childItem);
//doInsertAndCollectSelectAndUpdate(childNameVec, childValueVec, rev_tag, childItem, updateWhere, parentColumnStr, parentValueStr, selectStr, updateStr, updateVec, selectVec, ado0, relType);
string childColumnStr = "";
string childSelectStr = "";
string childUpdateSelectStr = "";
string childUpdateWhere = "";
string childValueStr = "";
childColumnStr = childColumnStr.append("RELTYPE").append(",");
childValueStr = childValueStr.append("'").append(relType).append("',");
for (int j = 0; j < childNameVec.size(); j++)
{
string columnName = childNameVec[j];
childColumnStr = childColumnStr.append(columnName);
if (j < childNameVec.size() - 1) {
childColumnStr = childColumnStr.append(",");
}
string propertyName = childValueVec[j];
string tempValue = " ";
if (strcmp(columnName.c_str(), "CPUID") == 0) {
char *puid = NULL;
ITK__convert_tag_to_uid(rev_tag, &puid);
tempValue = puid;
childSelectStr = childSelectStr.append(columnName).append("='").append(tempValue).append("' ");
childUpdateSelectStr = childUpdateSelectStr.append(columnName).append("='").append(tempValue).append("' ");
childUpdateWhere = childUpdateWhere.append(columnName).append("='").append(tempValue).append("'");
DOFREE(puid);
}
else {
vector<string> propertyVec;
Split(propertyName, ".", propertyVec);
if (propertyVec.size() == 2) {
string propertyPosition = propertyVec[0];
tag_t propertyTag = NULL;
if (strcmp("item", propertyPosition.c_str()) == 0) {
propertyTag = childItem;
}
else if (strcmp("rev", propertyPosition.c_str()) == 0) {
propertyTag = rev_tag;
}
string propertyName = propertyVec[1];
char *propertyValue = NULL;
ITKCALL(ifail=AOM_UIF_ask_value(propertyTag, propertyName.c_str(), &propertyValue));
EMH_clear_errors();
if (ifail==0) {
tempValue = propertyValue;
}
else {
showError = true;
WriteLog("属性异常:%s\n", propertyName.c_str());
}
DOFREE(propertyValue);
}
else {
tempValue = " ";
}
}
childValueStr = childValueStr.append("'").append(tempValue);
if (j < childNameVec.size() - 1) {
childValueStr = childValueStr.append("',");
}
else {
childValueStr = childValueStr.append("'");
}
}
string insertSql = "";
string selectSql = "";
string updateSelectSql = "";
string updateSql = "";
if (childColumnStr.size() > 0) {
insertSql = insertSql.append(parentColumnStr).append(",").append(childColumnStr).append(")").append(parentValueStr).append(",").append(childValueStr).append(")");
}
else {
insertSql = insertSql.append(parentColumnStr).append(")").append(parentValueStr).append(")");
}
selectSql = selectSql.append(selectStr).append(childSelectStr);
updateSelectSql = updateSelectSql.append(selectAfterUpdateStr).append(childUpdateSelectStr);
updateSql = updateSql.append(updateStr).append(updateWhere).append(childUpdateWhere);
updateSelectSql = Utf8ToGbk(updateSelectSql.c_str());
updateSql = Utf8ToGbk(updateSql.c_str());
selectSql = Utf8ToGbk(selectSql.c_str());
insertSql = Utf8ToGbk(insertSql.c_str());
WriteLog("插入语句:%s\n", insertSql.c_str());
WriteLog("更新语句:%s\n", updateSql.c_str());
WriteLog("查询语句:%s\n", selectSql.c_str());
WriteLog("更新后查询语句:%s\n", updateSelectSql.c_str());
updateVec.push_back(updateSql);
selectVec.push_back(selectSql);
insertVec.push_back(insertSql);
selectAfterUpdateVec.push_back(updateSelectSql);
char sendChar[200] = "";
strcpy(sendChar, insertSql.c_str());
ado0.execute(sendChar);
}
}
else {
int child_count = 0; tag_t *child_tags = NULLTAG;
AOM_ask_value_tags(attachments[i], relType.c_str(), &child_count, &child_tags);
for (int n = 0; n < child_count; n++)
{
tag_t rev_tag = child_tags[n];
tag_t childItem = NULL;
ITKCALL( ITEM_ask_item_of_rev(rev_tag, &childItem));
string childColumnStr = "";
string childSelectStr = "";
string childUpdateWhere = "";
string childValueStr = "";
string childUpdateSelectStr = "";
childColumnStr = childColumnStr.append("RELTYPE").append(",");
childValueStr = childValueStr.append("'").append(relType).append("',");
for (int j = 0; j < childNameVec.size(); j++)
{
string columnName = childNameVec[j];
childColumnStr = childColumnStr.append(columnName);
if (j < childNameVec.size() - 1) {
childColumnStr = childColumnStr.append(",");
}
string propertyName = childValueVec[j];
string tempValue = " ";
if (strcmp(columnName.c_str(), "CPUID") == 0) {
char *puid = NULL;
ITK__convert_tag_to_uid(rev_tag, &puid);
tempValue = puid;
childSelectStr = childSelectStr.append(columnName).append("='").append(tempValue).append("' ");
childUpdateSelectStr = childUpdateSelectStr.append(columnName).append("='").append(tempValue).append("' ");
childUpdateWhere = childUpdateWhere.append(columnName).append("='").append(tempValue).append("'");
DOFREE(puid);
}
else {
vector<string> propertyVec;
Split(propertyName, ".", propertyVec);
if (propertyVec.size() == 2) {
string propertyPosition = propertyVec[0];
tag_t propertyTag = NULL;
if (strcmp("item", propertyPosition.c_str()) == 0) {
propertyTag = childItem;
}
else if (strcmp("rev", propertyPosition.c_str()) == 0) {
propertyTag = rev_tag;
}
string propertyName = propertyVec[1];
char *propertyValue = NULL;
ITKCALL(ifail=AOM_UIF_ask_value(propertyTag, propertyName.c_str(), &propertyValue));
EMH_clear_errors();
if (ifail==0) {
tempValue = propertyValue;
}
else {
showError = true;
WriteLog("属性异常:%s\n", propertyName.c_str());
}
DOFREE(propertyValue);
}
else {
tempValue = " ";
}
}
childValueStr = childValueStr.append("'").append(tempValue);
if (j < childNameVec.size() - 1) {
childValueStr = childValueStr.append("',");
}
else {
childValueStr = childValueStr.append("'");
}
}
string insertSql = "";
string selectSql = "";
string updateSql = "";
string updateSelectSql = "";
if (childColumnStr.size() > 0) {
insertSql = insertSql.append(parentColumnStr).append(",").append(childColumnStr).append(")").append(parentValueStr).append(",").append(childValueStr).append(")");
}
else {
insertSql = insertSql.append(parentColumnStr).append(")").append(parentValueStr).append(")");
}
selectSql = selectSql.append(selectStr).append(childSelectStr);
updateSql = updateSql.append(updateStr).append(updateWhere).append(childUpdateWhere);
updateSelectSql = updateSelectSql.append(selectAfterUpdateStr).append(childUpdateSelectStr);
insertSql = Utf8ToGbk(insertSql.c_str());
updateSql = Utf8ToGbk(updateSql.c_str());
selectSql = Utf8ToGbk(selectSql.c_str());
updateSelectSql = Utf8ToGbk(updateSelectSql.c_str());
WriteLog("插入语句:%s\n", insertSql.c_str());
WriteLog("更新语句:%s\n", updateSql.c_str());
WriteLog("查询语句:%s\n", selectSql.c_str());
WriteLog("更新后查询语句:%s\n", updateSelectSql.c_str());
updateVec.push_back(updateSql);
selectVec.push_back(selectSql);
insertVec.push_back(insertSql);
selectAfterUpdateVec.push_back(updateSelectSql);
char sendChar[200] = "";
strcpy(sendChar, insertSql.c_str());
char sendChar2[200] = "";
strcpy(sendChar2, selectSql.c_str());
int result = ado0.ado_QuerySQLNoInputParam(sendChar2);
ado0.executeInsert(sendChar2, sendChar, result);
//ado0.execute(sendChar);
}
}
}
}
else {
cout << "登录失败" << endl;
}
}
DOFREE(object_TYPE_1);
}
//更新数据库
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[200] = "";
char sendChar2[200] = "";
char sendChar3[200] = "";
strcpy(sendChar, updateSql.c_str());
strcpy(sendChar2, selectSql.c_str());
strcpy(sendChar3, selectUpdate.c_str());
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());
//}
POM_AM__set_application_bypass(false);
WriteLog("=========================================================\n");
WriteLog("JD_FileInfoToMediDatabase 完成\n");
WriteLog("=========================================================\n");
return 0;
}