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.

3211 lines
94 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 "jk_custom_erp.h"
# include "jk_custom_erp_struct.h"
# include "erp_send_item.h"
# include "common_itk_util.h"
#include <tccore/aom_prop.h>
#include <tc/tc_macros.h>
#include <tccore/item.h>
#include <sa/groupmember.h>
#include <bom/bom.h>
#include <sa/person.h>
#include <epm/epm_task_template_itk.h>
#include <tc/preferences.h>
#include <ics/ics.h>
#include <ics/ics2.h>
#include "hx_custom.h"
#include <tccore/aom.h>
//#include "../../../../../../../../TEAMCENTER/tc/include/ics/ics2.h"
void JK_get_top_bomline_props(tag_t view_tag ,
vector<JK_P_BOM_STRUCT> & p_bom_vec ,
vector<JK_C_BOM_STRUCT> & c_bom_vec,
vector<JK_SUB_BOM_STRUCT> & sub_bom_vec);
/*******************************************************
*
* 获取单个物料的替代件信息 2018.5.4
*
********************************************************/
void JK_get_material_subs(tag_t obj_tag ,
vector<JK_RECORD_SUBSTIT_T> & sm_bean_vec
)
{
int ifail = 0 ,
global_count = 0,
master_count = 0,
i = 0;
tag_t item_tag =NULLTAG,
*global_tags = NULL,
* master_tags = NULL,
master_tag = NULLTAG,
global_tag = NULLTAG;
char item_id[ITEM_id_size_c + 1] = "\0";
ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags));
if(master_count > 0)
{
master_tag = master_tags[0];
}
ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//通过版本获取item对象
ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//物料编码
date_t current_date;
char create_date_str[32] = "\0";
//获取当前时间
current_time(&current_date);
sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day);
ITKCALL(ifail = AOM_ask_value_tags(item_tag,"global_alt_list",&global_count,&global_tags));//全局替代件
if(global_count>0){
printf("存在多个全局替代件");
for(i = 0;i < global_count;i++)
{
char * sub_item_id=NULL;
ITKCALL(ifail = AOM_ask_value_string(global_tags[i],"item_id",&sub_item_id));//替代件id
if (sub_item_id!=NULL)
{
JK_RECORD_SUBSTIT_T subBean;
subBean.NO.assign(item_id); //物料id
subBean.SUBSTITNO.assign(sub_item_id); //全局替代件id
subBean.STATES.assign("1");//状态 默认传1
subBean.SUB_TRANS_TIME.assign(create_date_str);
sm_bean_vec.push_back(subBean);
}
if(sub_item_id !=NULL)
{
MEM_free(sub_item_id);
sub_item_id =NULL;
}
}
}else{
JK_RECORD_SUBSTIT_T subBean;
printf("无全局替代件");
subBean.NO.assign(item_id);
subBean.SUBSTITNO.assign(""); //没有全局默认传空
subBean.STATES.assign("1");
subBean.SUB_TRANS_TIME.assign(create_date_str);
sm_bean_vec.push_back(subBean);
}
//释放资源
if(master_tags !=NULL)
{
MEM_free(master_tags);
master_tags = NULL;
}
if(global_tags !=NULL)
{
MEM_free(global_tags);
global_tags =NULL;
}
}
void JK_upadte_material_subs_table(vector<JK_RECORD_SUBSTIT_T> sm_bean_vec)
{
;
int ifail = 0;
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
char updateSQL[3000] = "\0";
for(int i = 0;i < sm_bean_vec.size();i++){
sprintf(updateSQL,"UPDATE %s SET STATES='4' WHERE NO='%s' AND STATES='1'",
JK_RECORD_SUBSTIT_TABLE,sm_bean_vec[i].NO);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}else{
printf("提示:插入TABLE表 成功, %s \n",updateSQL);
}
}
ExecuteSQLNoInputParam("commit");
DisConnServer();
}
/*******************************************************
*
* 物料的替代件信息传入中间表 2018.5.4
*
********************************************************/
void JK_write_material_subs_to_DB(vector<JK_RECORD_SUBSTIT_T> sm_bean_vec
)
{
JK_upadte_material_subs_table(sm_bean_vec);
int i = 0,
ifail = 0;
char fields_material[4096]="",
insert_values_material[4096]="",
sql_value[10280] = "\0";
for( i = 0; i < 4; i++ )
{
strcat(fields_material, JK_RECORD_SUBSTIT_fields[i]);
if( i != 3 ){
strcat(fields_material,",");
}
}
cout<<"111111111111111111"<<endl;
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL)== -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
cout<<"共有物料替代件--------------"<<sm_bean_vec.size()<<endl;
for(i = 0; i < sm_bean_vec.size(); i++ )
{
strcpy(insert_values_material,"'");
strcat(insert_values_material,sm_bean_vec[i].NO.c_str());
strcat(insert_values_material,"','");// 物料编码
strcat(insert_values_material,sm_bean_vec[i].SUBSTITNO.c_str());
strcat(insert_values_material,"','"); //全局替代件编码
strcat(insert_values_material,sm_bean_vec[i].STATES.c_str());
strcat(insert_values_material,"','"); //状态
strcat(insert_values_material,sm_bean_vec[i].SUB_TRANS_TIME.c_str());
strcat(insert_values_material,"'"); //时间
cout<<"3333333333333333333"<<endl;
cout<<"插入物料全局替代件信息-------"<<endl;
sprintf(sql_value,"insert into %s (%s ) values (%s )",
JK_RECORD_SUBSTIT_TABLE,
fields_material,
insert_values_material);
printf("SQL =>%s\n",sql_value);
if(ExecuteSQLNoInputParam(sql_value)==-1)
{
printf("提示:插入TABLE表 失败, %s \n",sql_value);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}else{
printf("提示:插入TABLE表 成功, %s \n",sql_value);
}
}
if(ifail == 0)
{
ExecuteSQLNoInputParam("commit");
}else{
EMH_store_error_s1(EMH_severity_user_error,ifail,"[物料传递物料全局替代件中间表失败,请联系管理员!!]");//错误弹窗
}
end_handler:
DisConnServer();
}
/************************************************
*
* 将物料信息传递到数据库
*
*************************************************/
void JK_upadte_material_table(vector<JK_MATERIAL_STRUCT> sm_bean_vec)
{
cout<<"enter JK_upadte_material_table"<<endl;
int ifail = 0;
date_t current_date;
char create_date_str[32] = "\0";
current_time(&current_date);
sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day);
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
char updateSQL[3000] = "\0";
for(int i = 0;i < sm_bean_vec.size();i++){
sprintf(updateSQL,"UPDATE %s SET JK_STATUS='4',JK_OPERATE_TIME='%s' WHERE JK_ITEM_ID='%s' AND JK_STATUS='0'",
JK_MATERIAL_TABLE,create_date_str,sm_bean_vec[i].JK_ITEM_ID);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}
sprintf(updateSQL,"UPDATE %s SET JK_STATUS='3',JK_OPERATE_TIME='%s' WHERE JK_ITEM_ID='%s' AND JK_STATUS='2'",
JK_MATERIAL_TABLE,create_date_str,sm_bean_vec[i].JK_ITEM_ID);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}
}
ExecuteSQLNoInputParam("commit");
DisConnServer();
cout<<"aaaaaaaaaaaaaaaaaaaaaa"<<endl;
}
void JK_write_material_to_DB(vector<JK_MATERIAL_STRUCT> sm_bean_vec,
vector<JK_MATERIAL_STRUCT> &faild_m_vec)
{
cout<<"enter JK_write_material_to_DB"<<endl;
cout<<"sm_bean_vec.size()1---------------------"<<sm_bean_vec.size()<<endl;
JK_upadte_material_table(sm_bean_vec);
cout<<"sm_bean_vec.size()2---------------------"<<sm_bean_vec.size()<<endl;
int i = 0,
ifail = 0;
char fields_material[4096]="",
insert_values_material[4096]="",
sql_value[10280] = "\0";
for( i = 0; i < 45; i++ )
{
strcat(fields_material, jk_material_fields[i]);
if( i != 44 )
strcat(fields_material,",");
}
cout<<"111111111111111111"<<endl;
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL)== -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
cout<<"2222222222222222"<<endl;
cout<<"共有物料--------------"<<sm_bean_vec.size()<<endl;
for(i = 0; i < sm_bean_vec.size(); i++ )
{
strcpy(insert_values_material,"'");
strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_ID.c_str());
if(strcmp("",sm_bean_vec[i].JK_ITEM_ID.c_str())==0)
{
continue;
}
strcat(insert_values_material,"','");// 物料编码
strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_NAME.c_str());
strcat(insert_values_material,"','"); // 物料名称
strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_SPEC_MODEL.c_str());
strcat(insert_values_material,"','"); // 规格型号
strcat(insert_values_material,sm_bean_vec[i].JK_CLASS_CODE.c_str());
strcat(insert_values_material,"','"); // 存货大类编码
strcat(insert_values_material,sm_bean_vec[i].JK_PROD_CODE.c_str());
strcat(insert_values_material,"','"); // 产品识别号 //5
strcat(insert_values_material,sm_bean_vec[i].JK_UOM.c_str());
strcat(insert_values_material,"','"); // 主计量单位
strcat(insert_values_material,sm_bean_vec[i].JK_CREATION_DATE.c_str());
strcat(insert_values_material,"','"); // 申请日期
strcat(insert_values_material,sm_bean_vec[i].JK_SCRAP_DATE.c_str());
strcat(insert_values_material,"','"); // TODO 停用日期(如果类型是启用就置空)
strcat(insert_values_material,sm_bean_vec[i].JK_DESIGN_CODE.c_str());
strcat(insert_values_material,"','"); // 图号信息
strcat(insert_values_material,sm_bean_vec[i].JK_IS_SCRAP.c_str());
strcat(insert_values_material,"','"); // 是否失效 //10
strcat(insert_values_material,sm_bean_vec[i].JK_FROM.c_str());
strcat(insert_values_material,"','"); // 发起人
strcat(insert_values_material,sm_bean_vec[i].JK_TRANS_TIME.c_str());
strcat(insert_values_material,"','"); // 传递时间
strcat(insert_values_material,sm_bean_vec[i].JK_STATUS.c_str());
strcat(insert_values_material,"','"); // 接收状态
strcat(insert_values_material,sm_bean_vec[i].JK_ERROR_MSG.c_str());
strcat(insert_values_material,"','"); // 错误信息
strcat(insert_values_material,sm_bean_vec[i].JK_OPERATE_TIME.c_str());
strcat(insert_values_material,"','"); // 接收时间 //15
strcat(insert_values_material,sm_bean_vec[i].JK_PUID.c_str());
strcat(insert_values_material,"','"); // 唯一编号
strcat(insert_values_material,sm_bean_vec[i].JK_FROM_SYS.c_str());
strcat(insert_values_material,"','"); // 传递方
strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_1.c_str());
strcat(insert_values_material,"','"); // 扩展字段2
strcat(insert_values_material,sm_bean_vec[i].JK_MATERIAL_STATUS.c_str());//启用日期,如果类型是(如果类型是停用就置空)
strcat(insert_values_material,"','"); // 扩展字段1
strcat(insert_values_material,sm_bean_vec[i].JK_REMARKS.c_str());
strcat(insert_values_material,"','"); // 扩展字段3 //20
strcat(insert_values_material,sm_bean_vec[i].JK_PRODUCT_IDNO.c_str());
strcat(insert_values_material,"','"); // 扩展字段4
strcat(insert_values_material,sm_bean_vec[i].JK_ITEM_REV.c_str());
strcat(insert_values_material,"','"); // 扩展字段5
strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_6.c_str());
strcat(insert_values_material,"','"); // 扩展字段6
strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_7.c_str());
strcat(insert_values_material,"','"); // 扩展字段7
strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_8.c_str());
strcat(insert_values_material,"','"); // 扩展字段8 //25
strcat(insert_values_material,sm_bean_vec[i].JK_CPSBH.c_str());//2019.04.11存储产品识别号
strcat(insert_values_material,"','"); // 扩展字段9
strcat(insert_values_material,sm_bean_vec[i].JK_ATTR_10.c_str());// 扩展字段10 //27
strcat(insert_values_material,"','");
strcat(insert_values_material,sm_bean_vec[i].JK_UNIT_WEIGHT.c_str());
strcat(insert_values_material,"','"); // 单位重量
strcat(insert_values_material,sm_bean_vec[i].JK_UNIT_VOLUME.c_str());
strcat(insert_values_material,"','"); // 单位体积
strcat(insert_values_material,sm_bean_vec[i].JK_DOMSC_MARKET.c_str());
strcat(insert_values_material,"','"); // 是否内销 //30
strcat(insert_values_material,sm_bean_vec[i].JK_CONSUM.c_str());
strcat(insert_values_material,"','"); // 是否耗用
strcat(insert_values_material,sm_bean_vec[i].JK_IS_BUY.c_str());
strcat(insert_values_material,"','"); // 是否采购
strcat(insert_values_material,sm_bean_vec[i].JK_IS_MAKE.c_str());
strcat(insert_values_material,"','"); // 是否自制
strcat(insert_values_material,sm_bean_vec[i].JK_OUT_SOURCE.c_str());
strcat(insert_values_material,"','"); // 是否委外
strcat(insert_values_material,sm_bean_vec[i].JK_ACCOUNT_SET.c_str());
strcat(insert_values_material,"','"); // 默认账套 //35
strcat(insert_values_material,sm_bean_vec[i].JK_BUSINESS_TYPE.c_str());
strcat(insert_values_material,"','"); // 业务类型
strcat(insert_values_material,sm_bean_vec[i].JK_BUYER.c_str());
strcat(insert_values_material,"','"); // 采购员
strcat(insert_values_material,sm_bean_vec[i].JK_PURLEAD_TIME.c_str());
strcat(insert_values_material,"','"); // 固定提前期
strcat(insert_values_material,sm_bean_vec[i].JK_SAFE_STOCK.c_str());
strcat(insert_values_material,"','"); // 安全库存
strcat(insert_values_material,sm_bean_vec[i].JK_SUPPLY_TYPE1.c_str());
strcat(insert_values_material,"','"); // 供应类型 //40
strcat(insert_values_material,sm_bean_vec[i].JK_WARE_HOUSE1.c_str());
strcat(insert_values_material,"','"); // 默认仓库
strcat(insert_values_material,sm_bean_vec[i].JK_INNTRANS_COE.c_str());
strcat(insert_values_material,"','"); // 内部交易价格系数
strcat(insert_values_material,sm_bean_vec[i].JK_HOUSE_KEEPER.c_str());
strcat(insert_values_material,"','"); // 库管员
strcat(insert_values_material,sm_bean_vec[i].JK_IS_INNTRANS.c_str());
strcat(insert_values_material,"','"); // 是否内部交易
strcat(insert_values_material,sm_bean_vec[i].JK_PLAN_METHOD.c_str());//计划方式
strcat(insert_values_material," '");
cout<<"3333333333333333333"<<endl;
printf("技术型号====%s\n",sm_bean_vec[i].JK_PROD_CODE.c_str());
printf("insert_values_material====%s\n",insert_values_material);
/*strcpy(sql_value,"insert into ");
strcat(sql_value,JK_MATERIAL_TABLE);
strcat(sql_value," (");
strcat(sql_value,fields_material);
strcat(sql_value," ) values (");
strcat(sql_value,insert_values_material);
strcat(sql_value, ")");*/
cout<<"插入物料信息-------"<<endl;
sprintf(sql_value,"insert into %s (%s ) values (%s )",
JK_MATERIAL_TABLE,
fields_material,
insert_values_material);
printf("SQL =>%s\n",sql_value);
/*sprintf(sql_value,"insert into %s (JK_ATTR_1,JK_ATTR_2 ) values ('sssssss','jhkjhj' )",
JK_MATERIAL_TABLE
);
printf("SQL =>%s\n",sql_value);*/
if(ExecuteSQLNoInputParam(sql_value)==-1)
{
printf("提示:插入TABLE表 失败, %s \n",sql_value);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
faild_m_vec.push_back(sm_bean_vec[i]);
//goto end_handler;
}else{
printf("提示:插入TABLE表 成功, %s \n",sql_value);
}
}
if(ifail == 0)
{
ExecuteSQLNoInputParam("commit");
}else{
EMH_store_error_s1(EMH_severity_user_error,ifail,"[物料传递U8失败,请联系管理员!!]");//错误弹窗
}
end_handler:
DisConnServer();
}
/************************************************
*
* 将BOM 表头 信息传递到数据库
*
*************************************************/
void JK_update_bom_tables(vector<JK_P_BOM_STRUCT> p_bom_bean_vec){
int ifail = 0;
date_t current_date;
char create_date_str[32] = "\0";
current_time(&current_date);
sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day);
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
char updateSQL[3000] = "\0";
for(int i = 0;i < p_bom_bean_vec.size();i++){
sprintf(updateSQL,"UPDATE %s SET JK_STATUS='4',JK_OPERATE_TIME='%s' WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s' AND JK_STATUS='0'",
JK_BOM_PARENT_LINE_TABLE ,create_date_str,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}
sprintf(updateSQL,"UPDATE %s SET JK_STATUS='3',JK_OPERATE_TIME='%s' WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s' AND JK_STATUS='2'",
JK_BOM_PARENT_LINE_TABLE ,create_date_str,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}
sprintf(updateSQL,"DELETE %s WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s'",
JK_BOM_CHILD_LINE_TABLE ,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}
sprintf(updateSQL,"DELETE %s WHERE JK_BOM_ID='%s' AND JK_BOM_REV='%s'",
JK_BOM_SUBSTITUTE_PART_TABLE ,p_bom_bean_vec[i].JK_BOM_ID,p_bom_bean_vec[i].JK_BOM_REV);
if(ExecuteSQLNoInputParam(updateSQL)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",updateSQL);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
}
}
ExecuteSQLNoInputParam("commit");
DisConnServer();
}
void JK_write_p_bom_to_DB(vector<JK_P_BOM_STRUCT> p_bom_bean_vec
,vector<JK_P_BOM_STRUCT> & field_p_bean)
{
JK_update_bom_tables(p_bom_bean_vec);
int i = 0,
ifail = 0;
char fields_material[4096]="",
insert_values_material[4096]="",
sql_value[10280] = "\0";
for( i = 0; i < 24; i++ )
{
strcat(fields_material, jk_p_bom_fields[i]);
if( i != 23 )
strcat(fields_material,",");
}
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
for(i = 0; i < p_bom_bean_vec.size(); i++ )
{
strcpy(insert_values_material,"'");
strcat(insert_values_material,p_bom_bean_vec[i].JK_BOM_ID.c_str());
strcat(insert_values_material,"','");// bom编号
strcat(insert_values_material,p_bom_bean_vec[i].JK_BOM_REV.c_str());
strcat(insert_values_material,"','"); // bom版本
strcat(insert_values_material,p_bom_bean_vec[i].JK_OWNING_USER.c_str());
strcat(insert_values_material,"','"); // 所有者
strcat(insert_values_material,p_bom_bean_vec[i].JK_RATE.c_str());
strcat(insert_values_material,"','"); // 母件损耗率
strcat(insert_values_material,p_bom_bean_vec[i].JK_CREATION_DATE.c_str());
strcat(insert_values_material,"','"); // 生效日期 //5
strcat(insert_values_material,p_bom_bean_vec[i].JK_SCRAP_DATE.c_str());
strcat(insert_values_material,"','"); // 失效日期
strcat(insert_values_material,p_bom_bean_vec[i].JK_IS_SCRAP.c_str());
strcat(insert_values_material,"','"); // 是否失效
strcat(insert_values_material,p_bom_bean_vec[i].JK_FROM.c_str());
strcat(insert_values_material,"','"); // 发起人
strcat(insert_values_material,p_bom_bean_vec[i].JK_TRANS_TIME.c_str());
strcat(insert_values_material,"','"); // 传递时间
strcat(insert_values_material,p_bom_bean_vec[i].JK_STATUS.c_str());
strcat(insert_values_material,"','"); // 接收状态
strcat(insert_values_material,p_bom_bean_vec[i].JK_ERROR_MSG.c_str());
strcat(insert_values_material,"','"); // 错误信息
strcat(insert_values_material,p_bom_bean_vec[i].JK_OPERATE_TIME.c_str());
strcat(insert_values_material,"','"); // 接收时间 //15
strcat(insert_values_material,p_bom_bean_vec[i].JK_PUID.c_str());
strcat(insert_values_material,"','"); // 唯一编号
strcat(insert_values_material,p_bom_bean_vec[i].JK_FROM_SYS.c_str());
strcat(insert_values_material,"','"); // 传递方
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_1.c_str());
strcat(insert_values_material,"','"); // 扩展字段1
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_2.c_str());
strcat(insert_values_material,"','"); // 扩展字段2
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_3.c_str());
strcat(insert_values_material,"','"); // 扩展字段3 //20
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_4.c_str());
strcat(insert_values_material,"','"); // 扩展字段4
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_5.c_str());
strcat(insert_values_material,"','"); // 扩展字段5
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_6.c_str());
strcat(insert_values_material,"','"); // 扩展字段6
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_7.c_str());
strcat(insert_values_material,"','"); // 扩展字段7
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_8.c_str());
strcat(insert_values_material,"','"); // 扩展字段8 //25
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_9.c_str());
strcat(insert_values_material,"','"); // 扩展字段9
strcat(insert_values_material,p_bom_bean_vec[i].JK_ATTR_10.c_str());// 扩展字段10 //27
strcat(insert_values_material,"'");
sprintf(sql_value,"insert into %s (%s ) values (%s )",
JK_BOM_PARENT_LINE_TABLE,
fields_material,
insert_values_material);
printf("SQL =>%s\n",sql_value);
if(ExecuteSQLNoInputParam(sql_value)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",sql_value);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
field_p_bean.push_back(p_bom_bean_vec[i]);
}else{
printf("提示:插入BOM_TABLE表 成功, %s \n",sql_value);
}
}
if(ifail == 0)
{
ExecuteSQLNoInputParam("commit");
}
end_handler:
DisConnServer();
}
/************************************************
*
* 将BOM 结构 信息传递到数据库
*
*************************************************/
void JK_write_c_bom_to_DB(vector<JK_C_BOM_STRUCT> c_bom_bean_vec
,vector<JK_C_BOM_STRUCT> & field_c_bean)
{
int i = 0,
ifail = 0;
char fields_material[4096]="",
insert_values_material[4096]="",
sql_value[10280] = "\0";
for( i = 0; i < 18; i++ )
{
strcat(fields_material, jk_c_bom_fields[i]);
if( i != 17 )
strcat(fields_material,",");
}
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
for(i = 0; i < c_bom_bean_vec.size(); i++ ){
if(strcmp(c_bom_bean_vec[i].JK_BOM_CID.c_str(),"")==0||c_bom_bean_vec[i].JK_BOM_CID.length()==0)
{
continue;
}
strcpy(insert_values_material,"'");
strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_ID.c_str());
strcat(insert_values_material,"','");// bom编号
strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_REV.c_str());
strcat(insert_values_material,"','"); // bom版本
strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_CID.c_str());
strcat(insert_values_material,"','"); // 所有者
strcat(insert_values_material,c_bom_bean_vec[i].JK_SUPPLY_TYPE.c_str());
strcat(insert_values_material,"','"); // 母件损耗率
strcat(insert_values_material,c_bom_bean_vec[i].JK_WAREHOUSE.c_str());
strcat(insert_values_material,"','"); // 生效日期 //5
strcat(insert_values_material,c_bom_bean_vec[i].JK_QUANTITY.c_str());
strcat(insert_values_material,"','"); // 失效日期
strcat(insert_values_material,c_bom_bean_vec[i].JK_REMARK.c_str());
strcat(insert_values_material,"','"); // 是否失效
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_1.c_str());
strcat(insert_values_material,"','"); // 扩展字段1
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_2.c_str());
strcat(insert_values_material,"','"); // 扩展字段2
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_3.c_str());
strcat(insert_values_material,"','"); // 扩展字段3 //20
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_4.c_str());
strcat(insert_values_material,"','"); // 扩展字段4
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_5.c_str());
strcat(insert_values_material,"','"); // 扩展字段5
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_6.c_str());
strcat(insert_values_material,"','"); // 扩展字段6
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_7.c_str());
strcat(insert_values_material,"','"); // 扩展字段7
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_8.c_str());
strcat(insert_values_material,"','"); // 扩展字段8 //25
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_9.c_str());
strcat(insert_values_material,"','"); // 扩展字段9
strcat(insert_values_material,c_bom_bean_vec[i].JK_ATTR_10.c_str());// 扩展字段10 //27
strcat(insert_values_material,"','");
strcat(insert_values_material,c_bom_bean_vec[i].JK_BOM_CWR.c_str());//子件损耗率 //27
strcat(insert_values_material,"'");
sprintf(sql_value,"insert into %s (%s) values (%s)",
JK_BOM_CHILD_LINE_TABLE,
fields_material,
insert_values_material);
printf("SQL =>%s\n",sql_value);
if(ExecuteSQLNoInputParam(sql_value)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",sql_value);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
field_c_bean.push_back(c_bom_bean_vec[i]);
}else{
printf("提示:插入BOM_TABLE表 成功, %s \n",sql_value);
}
}
if(ifail == 0)
{
ExecuteSQLNoInputParam("commit");
}
end_handler:
DisConnServer();
}
/************************************************
*
* 将BOM 替换件 信息传递到数据库
*
*************************************************/
void JK_write_sub_bom_to_DB(vector<JK_SUB_BOM_STRUCT> sub_bom_bean_vec
,vector<JK_SUB_BOM_STRUCT> & field_sub_bean)
{
int i = 0,
ifail = 0;
char fields_material[4096]="",
insert_values_material[4096]="",
sql_value[10280] = "\0";
for( i = 0; i < 17; i++ )
{
strcat(fields_material, jk_sub_bom_fields[i]);
if( i != 16 )
strcat(fields_material,",");
}
if(ConnServer(JK_DB_USER_NAME,JK_DB_USER_PWD,JK_DB_URL) == -1)
{
ECHO("提示:中间数据表访问失败\n");
EMH_store_error_s1( EMH_severity_information,
ERROR_ERP_LOGIN_FAIL,
"中间数据表访问失败" );
ifail = ERROR_ERP_LOGIN_FAIL;
return;
}
for(i = 0; i < sub_bom_bean_vec.size(); i++ )
{
if(strcmp(sub_bom_bean_vec[i].JK_BOM_CID.c_str(),"")==0||sub_bom_bean_vec[i].JK_BOM_CID.length()==0)
{
continue;
}
strcpy(insert_values_material,"'");
strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_ID.c_str());
strcat(insert_values_material,"','");// bom编号
strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_REV.c_str());
strcat(insert_values_material,"','"); // bom版本
strcat(insert_values_material,sub_bom_bean_vec[i].JK_BOM_CID.c_str());
strcat(insert_values_material,"','"); // 所有者
strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_ID.c_str());
strcat(insert_values_material,"','"); // 母件损耗率
strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_INDEX.c_str());
strcat(insert_values_material,"','"); // 生效日期 //5
strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_RATIO.c_str());
strcat(insert_values_material,"','"); // 失效日期
strcat(insert_values_material,sub_bom_bean_vec[i].JK_SUBSTITUTE_PART_DATE.c_str());
strcat(insert_values_material,"','"); // 是否失效
strcat(insert_values_material,sub_bom_bean_vec[i].JK_IS_GLOBAL.c_str());
strcat(insert_values_material,"','"); // 扩展字段1
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_2.c_str());
strcat(insert_values_material,"','"); // 扩展字段2
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_3.c_str());
strcat(insert_values_material,"','"); // 扩展字段3 //20
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_4.c_str());
strcat(insert_values_material,"','"); // 扩展字段4
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_5.c_str());
strcat(insert_values_material,"','"); // 扩展字段5
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_6.c_str());
strcat(insert_values_material,"','"); // 扩展字段6
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_7.c_str());
strcat(insert_values_material,"','"); // 扩展字段7
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_8.c_str());
strcat(insert_values_material,"','"); // 扩展字段8 //25
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_9.c_str());
strcat(insert_values_material,"','"); // 扩展字段9
strcat(insert_values_material,sub_bom_bean_vec[i].JK_ATTR_10.c_str());// 扩展字段10 //27
strcat(insert_values_material,"'");
sprintf(sql_value,"insert into %s (%s) values (%s)",
JK_BOM_SUBSTITUTE_PART_TABLE,
fields_material,
insert_values_material);
printf("SQL =>%s\n",sql_value);
if(ExecuteSQLNoInputParam(sql_value)==-1)
{
printf("提示:插入BOM_TABLE表 失败, %s \n",sql_value);
ifail = ERROR_OCI_FAIL;
EMH_store_error(EMH_severity_error, ifail);
//goto end_handler;
field_sub_bean.push_back(sub_bom_bean_vec[i]);
}else{
printf("提示:插入BOM_TABLE表 成功, %s \n",sql_value);
}
}
if(ifail == 0)
{
ExecuteSQLNoInputParam("commit");
}
end_handler:
DisConnServer();
}
/*******************************************************
*
* 获取单个物料的属性
*
********************************************************/
void JK_get_material_props(tag_t obj_tag ,
vector<JK_MATERIAL_STRUCT> & sm_bean_vec,
vector<string> bigCodeVec,
vector<string> qrBigCodeVec,
map<string,string> uomMapping,
string materialStatusName)
{
int ifail = 0 ,
status_count = 0,
design_count = 0,
master_count = 0,
i = 0;
tag_t item_tag =NULLTAG,
*status_tags = NULL,
*desin_tags =NULL,
* master_tags = NULL,
master_tag = NULLTAG,
uom_tag =NULLTAG,
current_user_tag = NULLTAG,
current_group_mem_tag = NULLTAG,
person_tag = NULLTAG,
classification_object = NULLTAG,
parentTag = NULLTAG,
status_tag = NULLTAG;
double dbjk8UnitWeight = 0,//单位重量
dbjk8UnitVolume = 0,//单位体积
dbjk8PurLeadTime=0,//固定提前期
dbjk8SafeStock=0,//安全库存
dbjk8InnTransCoe=0;//内部交易价格系数
char item_id[ITEM_id_size_c + 1] = "\0",
*object_name = NULL,
*item_revision_id = NULL,
*status_name = NULL,
*jk8SpecModel = NULL,
//2019.06.13 新增特殊说明和产品识别号
*jk8Remarks=NULL,
// *jk8ProductIdentifyNO=NULL,
//*jk8StockBigTypeNo = NULL,
*jk8TechModel = NULL,
*represented_by =NULL,
*jk8UnitWeight1 =NULL,//0
*jk8UnitVolume1 =NULL,//0
jk8UnitWeight[32 + 1]="\0", //单位重量"
jk8UnitVolume[32 + 1]="\0",//单位体积"
*jk8IsDomesticMarket =NULL,//是否内销
*jk8Isconsumables =NULL,//是否耗用"
*jk8IsBuy =NULL,//是否采购"
*jk8IsMake =NULL,//是否自制"
*jk8IsOutsource =NULL,//是否委外"
*jk8AccountSet =NULL,//默认账套"
*jk8BusinessType =NULL,//业务类型"
*jk8Buyer =NULL,//采购员"
*jk8PurLeadTime1 =NULL,//0
*jk8SafeStock1 =NULL,//0
jk8PurLeadTime[32 + 1]="\0",//固定提前期"
jk8SafeStock[32 + 1]="\0",//安全库存"
*jk8SupplyType1 =NULL,//供应类型"
jk8SupplyType2[40]="\0",
*jk8Warehouse1 =NULL,//默认仓库"
jk8Warehouse2[40]="\0",
*jk8InnTransCoe1 =NULL,//0
jk8InnTransCoe[32 + 1]="\0",//内部交易价格系数"
*jk8WarehouseKeeper =NULL,//库管员"
*jk8IsInnTrans =NULL,//是否内部交易"
*jk8PlanMethod =NULL,//计划方式"
*jk8DisabledDate=NULL,//停用日期
*jk8EnableDate=NULL,//启用日期
*jk8ProductIdentifyNO=NULL,//产品识别号
create_date_str[32] = "\0",
person_name[SA_person_name_size_c + 1] = "\0",
* icsID = NULL,
*uom_str = NULL;
date_t status_date ;
string is_scrap,scrap_date;
date_t current_date;
logical isclassed = false;
logical isFilter = false;
//添加物料大类编码的过滤
//获取分类属性
ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//判断是否已经分类
if(isclassed){
//char * icOid = NULL;
ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object));
ITKCALL(ICS_ico_ask_class(classification_object,&icsID));
//
vector<string>::iterator it;
it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID);
if(it != qrBigCodeVec.end())
{
printf("\n[ %s ]不包含在嵌软里面\n",icsID);
if(icsID !=NULL)
{
MEM_free(icsID);
icsID =NULL;
}
return;
}
it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID);
if(it != bigCodeVec.end()){
printf("\n[ %s ]需要截取头两位\n",icsID);
isFilter = true;
}else{
printf("\n[ %s ]需要截取头5位\n",icsID);
isFilter = false;
}
}else{
printf("\n 没有发送到分类 \n");
return ;
}
//获取当前时间
current_time(&current_date);
sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day);
ITKCALL(SA_ask_current_groupmember(&current_group_mem_tag));
ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,&current_user_tag));
ITKCALL(SA_ask_user_person(current_user_tag,&person_tag));
ITKCALL(SA_ask_person_name(person_tag , person_name));
printf("person_name=> %s\n",person_name);
ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags));
if(master_count > 0)
{
master_tag = master_tags[0];
}
//获取分类属性
// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//判断是否已经分类
// if(isclassed){
// //char * icOid = NULL;
// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object));
//
// ITKCALL(ICS_ico_ask_class(classification_object,&icsID));
//
// }
//
ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//通过版本获取item对象
ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//物料编码
ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8DisabledDate,&jk8DisabledDate));//停用日期
ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8EnableDate,&jk8EnableDate));//启用日期
ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));//物料名称
//2019.11.19 发送版本信息
ITKCALL(ifail = AOM_ask_value_string(obj_tag,"item_revision_id",&item_revision_id));//物料名称
//2018.12.4 获取状态
// ITKCALL(ifail = AOM_ask_value_string(obj_tag,"jk8Status",&status_name));//状态
char localization_status;
logical master ;
//2019.1.9把状态的中文发送到中间表
ITKCALL(ifail = AOM_UIF_ask_localized_value_string(obj_tag,"jk8Status","zh_CN",&status_name,&localization_status,&master));//状态
materialStatusName=status_name;
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//规格型号
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Remarks,&jk8Remarks));//特殊说明
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//产品识别号
printf("规格型号=%s,\n",jk8SpecModel);
//ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));//存货大类编码
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//产品识别号
printf("产品识别号=%s,\n",jk8TechModel);
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//单位重量
sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight);
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//单位体积
sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume);
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//是否内销
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//是否耗用
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//是否采购
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//是否自制
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//是否委外
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//默认账套
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//业务类型
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//采购员
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//固定提前期
sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime);
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//安全库存
sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock);
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//供应类型
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//默认仓库
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//内部交易价格系数
sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe);
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//库管员
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//是否内部交易
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//计划方式
//ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//2019.04.11获取产品识别号,发送中间表
ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//物料信息
//date_released name
ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//单位
//ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//单位
tag_t my_uom_tag = NULLTAG;
//ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag));
//ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str));
ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//是否失效
if(status_count > 0)
{
status_tag = status_tags[0];
AOM_ask_value_date(status_tag,"date_released",&status_date);
}
for(i = 1;i < status_count;i++)
{
date_t date_t_i ;
AOM_ask_value_date(status_tags[i],"date_released",&date_t_i);
int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day);
int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day);
if(day_count1 < day_count2)
{
status_tag = status_tags[i];
status_date = date_t_i;
}
}
is_scrap.assign("0");
if(status_tag !=NULLTAG)
{
char * status_name = NULL;
ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name));
if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){
is_scrap.assign("1");
char scrp_date_str[32] = "\0";
sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day);
scrap_date.assign(scrp_date_str);
}else{
//scrap_date.assign("2099-12-31");
scrap_date.assign("\0");
}
if(status_name !=NULL){
MEM_free(status_name);
status_name = NULL;
}
}else{
//scrap_date.assign("2099-12-31");
scrap_date.assign("\0");
}
//printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by);
/*cout<<"开始获取产品识别号---------"<<endl;
logical isClassified ;
string cpsbh="";
ITKCALL(ICS_is_wsobject_classified(obj_tag,&isClassified));//判断是否已经分类
if(isClassified)
{
tag_t classObj,attribute_tag;
tag_t ics_tag;
char * class_id = NULL;
ITKCALL(ifail=ICS_ask_classification_object(obj_tag,&classObj));
int theAttributeCount;
ICS_view_attribute_descriptor_p_t attributes;
ICS_view_descriptor_p_t theViewDescriptor =NULL;
ITKCALL( ICS_ico_ask_class_tag(classObj,&ics_tag));
ITKCALL(ICS_ico_ask_class(classObj,&class_id));
ITKCALL(ICS_view_describe(class_id,"","",FALSE,&theViewDescriptor));
theAttributeCount = theViewDescriptor->attributeCount;
attributes = theViewDescriptor->attributes;
for(int i = 0; i < theAttributeCount;i++){
string attr_name;
cout<<"id--------------"<<attributes[i].id<<endl;
cout<<"format----------------"<<attributes[i].format<<endl;
cout<<"name-------------------"<<attributes[i].name<<endl;
if(strcmp(attributes[i].name,"适用产品识别号")==0)
{
ITKCALL(ifail=ICS_ask_attribute(ics_tag,"适用产品识别号",&attribute_tag));
char *classValue=NULL;
if(ifail==0)
{
cout<<"有适用产品识别号------------------>"<<endl;
ICS_ask_attribute_value(classObj,"适用产品识别号",&classValue);
cout<<"适用产品识别号为------------------>"<<classValue<<endl;
cpsbh=classValue;
}
if(classValue=NULL)
{
MEM_free(classValue);
classValue=NULL;
}
}
}
}*/
JK_MATERIAL_STRUCT m_bean;
/*****************写入属性*****************/
m_bean.JK_ITEM_ID.assign(item_id);
m_bean.JK_CPSBH.assign(jk8ProductIdentifyNO);
m_bean.JK_REMARKS.assign(jk8Remarks);
m_bean.JK_PRODUCT_IDNO.assign(jk8ProductIdentifyNO);
m_bean.JK_ITEM_NAME.assign(object_name);//2019.11.19
m_bean.JK_ITEM_REV.assign(item_revision_id);
if(materialStatusName.length()>0)
{
//2018.12.26参数设置什么值,传到中间表就是什么值
//2019.1.9把本地值传到中间表
m_bean.JK_MATERIAL_STATUS.assign(materialStatusName);
}else
{
m_bean.JK_MATERIAL_STATUS.assign(status_name);
}
m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel);
char BIG_CODE[32] = "\0";
char T_BIG_CODE[6] = "\0";
sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]);
if(isFilter){
if(strcmp(T_BIG_CODE,"E-")==0){
sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]);
}else{
sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]);
}
}else{
if(strcmp(T_BIG_CODE,"E-")==0){
sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]);
}else{
sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]);
}
}
if (strstr(icsID,"prt")!=NULL)//2018/10/9改classid
{
sprintf(BIG_CODE,"%c%c%c%c%c",icsID[3],icsID[4],icsID[5],icsID[6],icsID[7]);
}
m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo
m_bean.JK_PROD_CODE.assign(jk8TechModel);
map<string,string>::iterator mapit;
//printf("uom_str = %s \n",uom_str);
mapit = uomMapping.find(uom_str);
if(mapit != uomMapping.end()){
//printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str());
m_bean.JK_UOM.assign(mapit->second.c_str());//
}else{
m_bean.JK_UOM.assign("01");//
}
m_bean.JK_CREATION_DATE.assign(create_date_str);
m_bean.JK_SCRAP_DATE.assign(scrap_date);
m_bean.JK_DESIGN_CODE.assign(represented_by);
m_bean.JK_IS_SCRAP.assign(is_scrap);
m_bean.JK_FROM.assign(person_name);
m_bean.JK_TRANS_TIME.assign(create_date_str);
m_bean.JK_STATUS.assign("0");
m_bean.JK_FROM_SYS.assign("TC");
/******************************************/
//if(strcmp(jk8UnitWeight1,"")!=0){
m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight);
//}else{
//m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1);
//}
// if(strcmp(jk8UnitVolume1,"")!=0){
m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume);
//}else{
//m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1);
//}
m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket);
m_bean.JK_CONSUM.assign(jk8Isconsumables);
m_bean.JK_IS_BUY.assign(jk8IsBuy);
m_bean.JK_IS_MAKE.assign(jk8IsMake);
m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource);
m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet);
m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType);
m_bean.JK_BUYER.assign(jk8Buyer);
m_bean.JK_SCRAP_DATE.assign(jk8DisabledDate);
m_bean.JK_ATTR_1.assign(jk8EnableDate);
//if(strcmp.(jk8PurLeadTime1,"")!=0){
m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime);
//}else{
// m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1);
//}
printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1);
//if(strcmp(jk8SafeStock1,"")!=0){
m_bean.JK_SAFE_STOCK.assign(jk8SafeStock);
//}else{
// m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1);
//}
printf("jk8SafeStock1=%s\n",jk8SafeStock1);
if(strcmp(jk8SupplyType1,"")!=0){
strncpy(jk8SupplyType2,jk8SupplyType1, 1);//截取第一个
printf("jk8SafeStock2=%s\n",jk8SupplyType2);
m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2);
}else{
m_bean.JK_SUPPLY_TYPE1.assign("3");
}
printf("jk8Warehouse1=%s\n",jk8SafeStock1);
if(strcmp(jk8Warehouse1,"")!=0){
strncpy(jk8Warehouse2,jk8Warehouse1, 2);//截取第一个
m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2);
}else{
m_bean.JK_WARE_HOUSE1.assign("01");
}
//if(strcmp(jk8InnTransCoe1,"")!=0){
m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe);
//}else{
// m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1);
//}
m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper);
m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans);
m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod);
sm_bean_vec.push_back(m_bean);
//释放资源
if(master_tags !=NULL)
{
MEM_free(master_tags);
master_tags = NULL;
}
if(jk8SpecModel !=NULL)
{
MEM_free(jk8SpecModel);
jk8SpecModel =NULL;
}
if(jk8ProductIdentifyNO !=NULL)
{
MEM_free(jk8ProductIdentifyNO);
jk8ProductIdentifyNO =NULL;
}
if(jk8Remarks !=NULL)
{
MEM_free(jk8Remarks);
jk8Remarks =NULL;
}
if(jk8TechModel !=NULL)
{
MEM_free(jk8TechModel);
jk8TechModel =NULL;
}
if(jk8DisabledDate !=NULL)
{
MEM_free(jk8DisabledDate);
jk8DisabledDate =NULL;
}
if(jk8EnableDate !=NULL)
{
MEM_free(jk8EnableDate);
jk8EnableDate =NULL;
}
if(status_tags !=NULL)
{
MEM_free(status_tags);
status_tags =NULL;
}
if(desin_tags !=NULL){
MEM_free(desin_tags);
desin_tags = NULL;
}
if(uom_str != NULL)
{
MEM_free(uom_str);
uom_str =NULL;
}
if(object_name != NULL)
{
MEM_free(object_name);
object_name = NULL;
}
if(item_revision_id != NULL)
{
MEM_free(item_revision_id);
item_revision_id = NULL;
}
if(status_name != NULL)
{
MEM_free(status_name);
status_name = NULL;
}
if(represented_by !=NULL){
MEM_free(represented_by);
represented_by = NULL;
}
if(icsID !=NULL)
{
MEM_free(icsID);
icsID =NULL;
}
if(jk8IsDomesticMarket !=NULL)
{
MEM_free(jk8IsDomesticMarket);
jk8IsDomesticMarket =NULL;
}
if(jk8Isconsumables !=NULL)
{
MEM_free(jk8Isconsumables);
jk8Isconsumables =NULL;
}
if(jk8IsBuy !=NULL)
{
MEM_free(jk8IsBuy);
jk8IsBuy =NULL;
}
if(jk8IsMake !=NULL)
{
MEM_free(jk8IsMake);
jk8IsMake =NULL;
}
if(jk8IsOutsource !=NULL)
{
MEM_free(jk8IsOutsource);
jk8IsOutsource =NULL;
}
if(jk8AccountSet !=NULL)
{
MEM_free(jk8AccountSet);
jk8AccountSet =NULL;
}
if(jk8BusinessType !=NULL)
{
MEM_free(jk8BusinessType);
jk8BusinessType =NULL;
}
if(jk8Buyer !=NULL)
{
MEM_free(jk8Buyer);
jk8Buyer =NULL;
}
if(jk8SupplyType1 !=NULL)
{
MEM_free(jk8SupplyType1);
jk8SupplyType1 =NULL;
}
if(jk8Warehouse1 !=NULL)
{
MEM_free(jk8Warehouse1);
jk8Warehouse1 =NULL;
}
if(jk8WarehouseKeeper !=NULL)
{
MEM_free(jk8WarehouseKeeper);
jk8WarehouseKeeper =NULL;
}
if(jk8IsInnTrans !=NULL)
{
MEM_free(jk8IsInnTrans);
jk8IsInnTrans =NULL;
}
if(jk8PlanMethod !=NULL)
{
MEM_free(jk8PlanMethod);
jk8PlanMethod =NULL;
}
if(jk8UnitWeight1 !=NULL)
{
MEM_free(jk8UnitWeight1);
jk8UnitWeight1 =NULL;
}
if(jk8UnitVolume1 !=NULL)
{
MEM_free(jk8UnitVolume1);
jk8UnitVolume1 =NULL;
}
if(jk8PurLeadTime1 !=NULL)
{
MEM_free(jk8PurLeadTime1);
jk8PurLeadTime1 =NULL;
}
if(jk8SafeStock1 !=NULL)
{
MEM_free(jk8SafeStock1);
jk8SafeStock1 =NULL;
}
if(jk8InnTransCoe1 !=NULL)
{
MEM_free(jk8InnTransCoe1);
jk8InnTransCoe1 =NULL;
}
}
void JK_get_material_props1(tag_t obj_tag ,
vector<JK_MATERIAL_STRUCT> & sm_bean_vec,
vector<string> bigCodeVec,
vector<string> qrBigCodeVec,
map<string,string> uomMapping,
string dateType)
{
cout<<"enter JK_get_material_props1"<<endl;
int ifail = 0 ,
status_count = 0,
design_count = 0,
master_count = 0,
i = 0;
tag_t item_tag =NULLTAG,
*status_tags = NULL,
*desin_tags =NULL,
* master_tags = NULL,
master_tag = NULLTAG,
uom_tag =NULLTAG,
current_user_tag = NULLTAG,
current_group_mem_tag = NULLTAG,
person_tag = NULLTAG,
classification_object = NULLTAG,
parentTag = NULLTAG,
status_tag = NULLTAG;
double dbjk8UnitWeight = 0,//单位重量
dbjk8UnitVolume = 0,//单位体积
dbjk8PurLeadTime=0,//固定提前期
dbjk8SafeStock=0,//安全库存
dbjk8InnTransCoe=0;//内部交易价格系数
char item_id[ITEM_id_size_c + 1] = "\0",
*object_name = NULL,
*jk8SpecModel = NULL,
//2019.06.13 新增特殊说明和产品识别号
*jk8Remarks=NULL,
*jk8ProductIdentifyNO=NULL,
//*jk8StockBigTypeNo = NULL,
*jk8TechModel = NULL,
*represented_by =NULL,
*jk8UnitWeight1 =NULL,//0
*jk8UnitVolume1 =NULL,//0
jk8UnitWeight[32 + 1]="\0", //单位重量"
jk8UnitVolume[32 + 1]="\0",//单位体积"
*jk8IsDomesticMarket =NULL,//是否内销
*jk8Isconsumables =NULL,//是否耗用"
*jk8IsBuy =NULL,//是否采购"
*jk8IsMake =NULL,//是否自制"
*jk8IsOutsource =NULL,//是否委外"
*jk8AccountSet =NULL,//默认账套"
*jk8BusinessType =NULL,//业务类型"
*jk8Buyer =NULL,//采购员"
*jk8PurLeadTime1 =NULL,//0
*jk8SafeStock1 =NULL,//0
jk8PurLeadTime[32 + 1]="\0",//固定提前期"
jk8SafeStock[32 + 1]="\0",//安全库存"
*jk8SupplyType1 =NULL,//供应类型"
jk8SupplyType2[40]="\0",
*jk8Warehouse1 =NULL,//默认仓库"
jk8Warehouse2[40]="\0",
*jk8InnTransCoe1 =NULL,//0
jk8InnTransCoe[32 + 1]="\0",//内部交易价格系数"
*jk8WarehouseKeeper =NULL,//库管员"
*jk8IsInnTrans =NULL,//是否内部交易"
*jk8PlanMethod =NULL,//计划方式"
*jk8DisabledDate=NULL,//停用日期
*jk8EnableDate=NULL,//启用日期
create_date_str[32] = "\0",
person_name[SA_person_name_size_c + 1] = "\0",
* icsID = NULL,
*uom_str = NULL;
date_t status_date ;
string is_scrap,scrap_date;
date_t current_date;
logical isclassed = false;
logical isFilter = false;
//添加物料大类编码的过滤
//获取分类属性
ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//判断是否已经分类
if(isclassed){
//char * icOid = NULL;
ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object));
ITKCALL(ICS_ico_ask_class(classification_object,&icsID));
//
vector<string>::iterator it;
it = find(qrBigCodeVec.begin(),qrBigCodeVec.end(),icsID);
if(it != qrBigCodeVec.end())
{
printf("\n[ %s ]不包含在嵌软里面\n",icsID);
if(icsID !=NULL)
{
MEM_free(icsID);
icsID =NULL;
}
return;
}
it = find(bigCodeVec.begin(),bigCodeVec.end(),icsID);
if(it != bigCodeVec.end()){
printf("\n[ %s ]需要截取头两位\n",icsID);
isFilter = true;
}else{
printf("\n[ %s ]需要截取头5位\n",icsID);
isFilter = false;
}
}else{
printf("\n 没有发送到分类 \n");
return ;
}
//获取当前时间
current_time(&current_date);
sprintf(create_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day);
ITKCALL(SA_ask_current_groupmember(&current_group_mem_tag));
ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,&current_user_tag));
ITKCALL(SA_ask_user_person(current_user_tag,&person_tag));
ITKCALL(SA_ask_person_name(person_tag , person_name));
printf("person_name=> %s\n",person_name);
ITKCALL(AOM_ask_value_tags(obj_tag,"IMAN_master_form_rev",&master_count,&master_tags));
if(master_count > 0)
{
master_tag = master_tags[0];
}
//获取分类属性
// ITKCALL(ICS_is_wsobject_classified(obj_tag,&isclassed));//判断是否已经分类
// if(isclassed){
// //char * icOid = NULL;
// ITKCALL(ICS_ask_classification_object(obj_tag,&classification_object));
//
// ITKCALL(ICS_ico_ask_class(classification_object,&icsID));
//
// }
//
ITKCALL(ifail = ITEM_ask_item_of_rev(obj_tag,&item_tag));//通过版本获取item对象
ITKCALL(ifail = ITEM_ask_id(item_tag,item_id));//物料编码
ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8DisabledDate,&jk8DisabledDate));//停用日期
ITKCALL(ifail = AOM_ask_value_string(item_tag,MATERIAL_jk8EnableDate,&jk8EnableDate));//启用日期
ITKCALL(ifail = AOM_ask_value_string(obj_tag,"object_name",&object_name));//物料名称
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SpecModel,&jk8SpecModel));//规格型号
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Remarks,&jk8Remarks));//特殊说明
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8ProductIdentifyNO,&jk8ProductIdentifyNO));//产品识别号
printf("规格型号=%s,\n",jk8SpecModel);
//ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8StockBigTypeNo,&jk8StockBigTypeNo));//存货大类编码
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8TechModel,&jk8TechModel));//产品识别号
printf("产品识别号=%s,\n",jk8TechModel);
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitWeight,&jk8UnitWeight1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitWeight,&dbjk8UnitWeight));//单位重量
sprintf(jk8UnitWeight,"%.8f",dbjk8UnitWeight);
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8UnitVolume,&jk8UnitVolume1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8UnitVolume,&dbjk8UnitVolume));//单位体积
sprintf(jk8UnitVolume,"%.8f",dbjk8UnitVolume);
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsDomesticMarket,&jk8IsDomesticMarket));//是否内销
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Isconsumables,&jk8Isconsumables));//是否耗用
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsBuy,&jk8IsBuy));//是否采购
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsMake,&jk8IsMake));//是否自制
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsOutsource,&jk8IsOutsource));//是否委外
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8AccountSet,&jk8AccountSet));//默认账套
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8BusinessType,&jk8BusinessType));//业务类型
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Buyer,&jk8Buyer));//采购员
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8PurLeadTime,&jk8PurLeadTime1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8PurLeadTime,&dbjk8PurLeadTime));//固定提前期
sprintf(jk8PurLeadTime,"%.8f",dbjk8PurLeadTime);
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8SafeStock,&jk8SafeStock1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8SafeStock,&dbjk8SafeStock));//安全库存
sprintf(jk8SafeStock,"%.8f",dbjk8SafeStock);
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8SupplyType1,&jk8SupplyType1));//供应类型
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8Warehouse1,&jk8Warehouse1));//默认仓库
ITKCALL(ifail = AOM_UIF_ask_value(master_tag,MATERIAL_jk8InnTransCoe,&jk8InnTransCoe1));
ITKCALL(ifail = AOM_ask_value_double(master_tag,MATERIAL_jk8InnTransCoe,&dbjk8InnTransCoe));//内部交易价格系数
sprintf(jk8InnTransCoe,"%.8f",dbjk8InnTransCoe);
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8WarehouseKeeper,&jk8WarehouseKeeper));//库管员
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8IsInnTrans,&jk8IsInnTrans));//是否内部交易
ITKCALL(ifail = AOM_ask_value_string(master_tag,MATERIAL_jk8PlanMethod,&jk8PlanMethod));//计划方式
ITKCALL(ifail = AOM_UIF_ask_value(obj_tag,"TC_Is_Represented_By",&represented_by));//物料信息
//date_released name
ITKCALL(ifail = AOM_UIF_ask_value(item_tag,"uom_tag",&uom_str));//单位
//ITKCALL(ifail = AOM_ask_value_string(item_tag,"uom_tag",&uom_str));//单位
tag_t my_uom_tag = NULLTAG;
//ITKCALL(ifail = ITEM_ask_unit_of_measure(item_tag,&my_uom_tag));
//ITKCALL(ifail = UOM_ask_symbol(my_uom_tag,&uom_str));
ITKCALL(ifail = AOM_ask_value_tags(obj_tag,"release_status_list",&status_count,&status_tags));//是否失效
if(status_count > 0)
{
status_tag = status_tags[0];
AOM_ask_value_date(status_tag,"date_released",&status_date);
}
for(i = 1;i < status_count;i++)
{
date_t date_t_i ;
AOM_ask_value_date(status_tags[i],"date_released",&date_t_i);
int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day);
int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day);
if(day_count1 < day_count2)
{
status_tag = status_tags[i];
status_date = date_t_i;
}
}
is_scrap.assign("0");
if(status_tag !=NULLTAG)
{
char * status_name = NULL;
ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name));
if(strcmp(status_name,SCRAPE_STATUS_NAME) ==0){
is_scrap.assign("1");
char scrp_date_str[32] = "\0";
sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day);
scrap_date.assign(scrp_date_str);
}else{
//scrap_date.assign("2099-12-31");
scrap_date.assign("\0");
}
if(status_name !=NULL){
MEM_free(status_name);
status_name = NULL;
}
}else{
//scrap_date.assign("2099-12-31");
scrap_date.assign("\0");
}
//printf("uom_tag => %s TC_Is_Represented_By => %s \n",uom_str,represented_by);
JK_MATERIAL_STRUCT m_bean;
/*****************写入属性*****************/
m_bean.JK_ITEM_ID.assign(item_id);
m_bean.JK_ITEM_NAME.assign(object_name);
m_bean.JK_ITEM_SPEC_MODEL.assign(jk8SpecModel);
m_bean.JK_REMARKS.assign(jk8Remarks);
m_bean.JK_PRODUCT_IDNO.assign(jk8ProductIdentifyNO);
char BIG_CODE[32] = "\0";
char T_BIG_CODE[6] = "\0";
sprintf(T_BIG_CODE,"%c%c",item_id[0],item_id[1]);
if(isFilter){
if(strcmp(T_BIG_CODE,"E-")==0){
sprintf(BIG_CODE,"%c%c",item_id[2],item_id[3]);
}else{
sprintf(BIG_CODE,"%c%c",item_id[0],item_id[1]);
}
}else{
if(strcmp(T_BIG_CODE,"E-")==0){
sprintf(BIG_CODE,"%c%c%c%c%c",item_id[2],item_id[3],item_id[4],item_id[5],item_id[6]);
}else{
sprintf(BIG_CODE,"%c%c%c%c%c",item_id[0],item_id[1],item_id[2],item_id[3],item_id[4]);
}
}
if (strstr(icsID,"prt")!=NULL)//2018/10/9改classid
{
sprintf(BIG_CODE,"%c%c%c%c%c",icsID[3],icsID[4],icsID[5],icsID[6],icsID[7]);
}
m_bean.JK_CLASS_CODE.assign(BIG_CODE);//icsID jk8StockBigTypeNo
m_bean.JK_PROD_CODE.assign(jk8TechModel);
map<string,string>::iterator mapit;
//printf("uom_str = %s \n",uom_str);
mapit = uomMapping.find(uom_str);
if(mapit != uomMapping.end()){
//printf(" find uom %s = %s \n",mapit->first.c_str(),mapit->second.c_str());
m_bean.JK_UOM.assign(mapit->second.c_str());//
}else{
m_bean.JK_UOM.assign("01");//
}
m_bean.JK_CREATION_DATE.assign(create_date_str);
m_bean.JK_SCRAP_DATE.assign(scrap_date);
m_bean.JK_DESIGN_CODE.assign(represented_by);
m_bean.JK_IS_SCRAP.assign(is_scrap);
m_bean.JK_FROM.assign(person_name);
m_bean.JK_TRANS_TIME.assign(create_date_str);
m_bean.JK_STATUS.assign("0");
m_bean.JK_FROM_SYS.assign("TC");
/******************************************/
//if(strcmp(jk8UnitWeight1,"")!=0){
m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight);
//}else{
//m_bean.JK_UNIT_WEIGHT.assign(jk8UnitWeight1);
//}
// if(strcmp(jk8UnitVolume1,"")!=0){
m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume);
//}else{
//m_bean.JK_UNIT_VOLUME.assign(jk8UnitVolume1);
//}
m_bean.JK_DOMSC_MARKET.assign(jk8IsDomesticMarket);
m_bean.JK_CONSUM.assign(jk8Isconsumables);
m_bean.JK_IS_BUY.assign(jk8IsBuy);
m_bean.JK_IS_MAKE.assign(jk8IsMake);
m_bean.JK_OUT_SOURCE.assign(jk8IsOutsource);
m_bean.JK_ACCOUNT_SET.assign(jk8AccountSet);
m_bean.JK_BUSINESS_TYPE.assign(jk8BusinessType);
m_bean.JK_BUYER.assign(jk8Buyer);
m_bean.JK_SCRAP_DATE.assign(jk8DisabledDate);
m_bean.JK_ATTR_1.assign(jk8EnableDate);
//如果是失效状态dis启用日期为空如果是启用状态ena失效日期置空
if(strcmp(dateType.c_str(),"dis")==0)
{
m_bean.JK_ATTR_1.assign("\0");
}else if(strcmp(dateType.c_str(),"ena")==0)
{
m_bean.JK_SCRAP_DATE.assign("\0");
}
//if(strcmp.(jk8PurLeadTime1,"")!=0){
m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime);
//}else{
// m_bean.JK_PURLEAD_TIME.assign(jk8PurLeadTime1);
//}
printf("jk8PurLeadTime1=%s\n",jk8PurLeadTime1);
//if(strcmp(jk8SafeStock1,"")!=0){
m_bean.JK_SAFE_STOCK.assign(jk8SafeStock);
//}else{
// m_bean.JK_SAFE_STOCK.assign(jk8SafeStock1);
//}
printf("jk8SafeStock1=%s\n",jk8SafeStock1);
if(strcmp(jk8SupplyType1,"")!=0){
strncpy(jk8SupplyType2,jk8SupplyType1, 1);//截取第一个
printf("jk8SafeStock2=%s\n",jk8SupplyType2);
m_bean.JK_SUPPLY_TYPE1.assign(jk8SupplyType2);
}else{
m_bean.JK_SUPPLY_TYPE1.assign("3");
}
printf("jk8Warehouse1=%s\n",jk8SafeStock1);
if(strcmp(jk8Warehouse1,"")!=0){
strncpy(jk8Warehouse2,jk8Warehouse1, 2);//截取第一个
m_bean.JK_WARE_HOUSE1.assign(jk8Warehouse2);
}else{
m_bean.JK_WARE_HOUSE1.assign("01");
}
//if(strcmp(jk8InnTransCoe1,"")!=0){
m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe);
//}else{
// m_bean.JK_INNTRANS_COE.assign(jk8InnTransCoe1);
//}
m_bean.JK_HOUSE_KEEPER.assign(jk8WarehouseKeeper);
m_bean.JK_IS_INNTRANS.assign(jk8IsInnTrans);
m_bean.JK_PLAN_METHOD.assign(jk8PlanMethod);
sm_bean_vec.push_back(m_bean);
//释放资源
if(master_tags !=NULL)
{
MEM_free(master_tags);
master_tags = NULL;
}
if(jk8SpecModel !=NULL)
{
MEM_free(jk8SpecModel);
jk8SpecModel =NULL;
}
if(jk8Remarks !=NULL)
{
MEM_free(jk8Remarks);
jk8Remarks =NULL;
}
if(jk8ProductIdentifyNO !=NULL)
{
MEM_free(jk8ProductIdentifyNO);
jk8ProductIdentifyNO =NULL;
}
if(jk8TechModel !=NULL)
{
MEM_free(jk8TechModel);
jk8TechModel =NULL;
}
if(jk8DisabledDate !=NULL)
{
MEM_free(jk8DisabledDate);
jk8DisabledDate =NULL;
}
if(jk8EnableDate !=NULL)
{
MEM_free(jk8EnableDate);
jk8EnableDate =NULL;
}
if(status_tags !=NULL)
{
MEM_free(status_tags);
status_tags =NULL;
}
if(desin_tags !=NULL){
MEM_free(desin_tags);
desin_tags = NULL;
}
if(uom_str != NULL)
{
MEM_free(uom_str);
uom_str =NULL;
}
if(object_name != NULL)
{
MEM_free(object_name);
object_name = NULL;
}
if(represented_by !=NULL){
MEM_free(represented_by);
represented_by = NULL;
}
if(icsID !=NULL)
{
MEM_free(icsID);
icsID =NULL;
}
if(jk8IsDomesticMarket !=NULL)
{
MEM_free(jk8IsDomesticMarket);
jk8IsDomesticMarket =NULL;
}
if(jk8Isconsumables !=NULL)
{
MEM_free(jk8Isconsumables);
jk8Isconsumables =NULL;
}
if(jk8IsBuy !=NULL)
{
MEM_free(jk8IsBuy);
jk8IsBuy =NULL;
}
if(jk8IsMake !=NULL)
{
MEM_free(jk8IsMake);
jk8IsMake =NULL;
}
if(jk8IsOutsource !=NULL)
{
MEM_free(jk8IsOutsource);
jk8IsOutsource =NULL;
}
if(jk8AccountSet !=NULL)
{
MEM_free(jk8AccountSet);
jk8AccountSet =NULL;
}
if(jk8BusinessType !=NULL)
{
MEM_free(jk8BusinessType);
jk8BusinessType =NULL;
}
if(jk8Buyer !=NULL)
{
MEM_free(jk8Buyer);
jk8Buyer =NULL;
}
if(jk8SupplyType1 !=NULL)
{
MEM_free(jk8SupplyType1);
jk8SupplyType1 =NULL;
}
if(jk8Warehouse1 !=NULL)
{
MEM_free(jk8Warehouse1);
jk8Warehouse1 =NULL;
}
if(jk8WarehouseKeeper !=NULL)
{
MEM_free(jk8WarehouseKeeper);
jk8WarehouseKeeper =NULL;
}
if(jk8IsInnTrans !=NULL)
{
MEM_free(jk8IsInnTrans);
jk8IsInnTrans =NULL;
}
if(jk8PlanMethod !=NULL)
{
MEM_free(jk8PlanMethod);
jk8PlanMethod =NULL;
}
if(jk8UnitWeight1 !=NULL)
{
MEM_free(jk8UnitWeight1);
jk8UnitWeight1 =NULL;
}
if(jk8UnitVolume1 !=NULL)
{
MEM_free(jk8UnitVolume1);
jk8UnitVolume1 =NULL;
}
if(jk8PurLeadTime1 !=NULL)
{
MEM_free(jk8PurLeadTime1);
jk8PurLeadTime1 =NULL;
}
if(jk8SafeStock1 !=NULL)
{
MEM_free(jk8SafeStock1);
jk8SafeStock1 =NULL;
}
if(jk8InnTransCoe1 !=NULL)
{
MEM_free(jk8InnTransCoe1);
jk8InnTransCoe1 =NULL;
}
}
/*******************************************************
*
* 获取替代件信息
*
*******************************************************/
void JK_get_subline_props(string bom_id,
string bom_rev,
string c_line_id,
tag_t bom_line_tag,
vector<JK_SUB_BOM_STRUCT> & sub_bom_vec){
int sub_obj_count = 0,
effectiveDate_count = 0,
order_count = 0,
ratio_count = 0,
n_substitute = 0,
golbal_alt_count = 0,
golbal_Date_count = 0,
golbal_order_count = 0,
golbal_ratio_count = 0;
tag_t *substitute_tags = NULL,
*golbal_alt_tags = NULL,
bl_item = NULLTAG,
bl_rev = NULLTAG;
char ** golbalDate_str_s = NULL,
** golbalorder_str_s = NULL,
** golbalratio_str_s = NULL;
/*char ** effectiveDate_str_s = NULL,
** order_str_s = NULL,
** ratio_str_s = NULL,
item_id_2[ITEM_id_size_c + 1] = "\0";*/
char * effectiveDate_str = NULL,
* order_str = NULL,
* ratio_str = NULL,
item_id_2[ITEM_id_size_c + 1] = "\0";
if(bom_line_tag==NULL)
{
return;
}
ITKCALL(AOM_ask_value_tag(bom_line_tag,"bl_line_object",&bl_rev));
if(bl_rev==NULL)
{
return;
}
ITKCALL(ITEM_ask_item_of_rev(bl_rev,&bl_item));
ITKCALL(AOM_ask_value_tags(bl_item,"global_alt_list",&golbal_alt_count,&golbal_alt_tags));
ITKCALL(BOM_line_list_substitutes(bom_line_tag,&n_substitute,&substitute_tags));
/*ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_EffectiveDate,&effectiveDate_count,&effectiveDate_str_s));
ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_Order,&order_count,&order_str_s));
ITKCALL(AOM_ask_value_strings(bom_line_tag,JK_SUBSTITUTE_Ratio,&ratio_count,&ratio_str_s));*/
ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitTime",&golbal_Date_count,&golbalDate_str_s)); //2018.3.15改全局替代件
ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitOrder",&golbal_order_count,&golbalorder_str_s));
ITKCALL(AOM_ask_value_strings(bl_item,"jk8OvrlSubstitRatio",&golbal_ratio_count,&golbalratio_str_s));
ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_EffectiveDate1,&effectiveDate_str));
ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_Order1,&order_str));
ITKCALL(AOM_ask_value_string(bom_line_tag,JK_SUBSTITUTE_Ratio1,&ratio_str));
vector<string> orderVecs ;
vector<string> ratioVecs ;
vector<string> effectiveVecs ;
Split(effectiveDate_str,",",effectiveVecs);
Split(order_str,",",orderVecs);
Split(ratio_str,",",ratioVecs);
if(n_substitute == effectiveVecs.size()
&& n_substitute == ratioVecs.size()
&& n_substitute == orderVecs.size()){
printf("替换件,替换比例,替换日期,替换顺序 数量一致,给予传递\n");
for(int i = 0;i < n_substitute;i++){
JK_SUB_BOM_STRUCT sub_struct ;
char index[12] = "\0";
sprintf(index,"%d",i);
char * item_id =NULL;
ITKCALL(AOM_ask_value_string(substitute_tags[i],"bl_item_item_id",&item_id));
sub_struct.JK_BOM_ID.assign(bom_id);
sub_struct.JK_BOM_REV.assign(bom_rev);
sub_struct.JK_BOM_CID.assign(c_line_id);
sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id);
string orderVec1="1";
string ratioVec1="1";
string effectiveVec1="2001-01-01";
for(int j = 0;j < n_substitute;j++){
vector<string> orderVec ;
vector<string> ratioVec ;
vector<string> effectiveVec ;
printf("orderVecs=%s\n",orderVecs[i]);
printf("ratioVecs=%s\n",orderVecs[i]);
printf("effectiveVecs=%s\n",orderVecs[i]);
Split(orderVecs[i],"&",orderVec);
Split(ratioVecs[i],"&",ratioVec);
Split(effectiveVecs[i],"&",effectiveVec);
if(orderVec.empty()){
}else{
if(orderVec.size()>1&&stricmp(item_id,orderVec[0].c_str()) == 0){
if(strcmp(orderVec[1].c_str(),"")==0){
}else{
orderVec1=orderVec[1];
}
}
}
if(ratioVec.empty()){
}else{
if(ratioVec.size()>1&&stricmp(item_id,ratioVec[0].c_str()) == 0){
if(strcmp(ratioVec[1].c_str(),"")==0){
}else{
ratioVec1=ratioVec[1];
}
}
}
if(effectiveVec.empty()){
}else{
if(effectiveVec.size()>1&&stricmp(item_id,effectiveVec[0].c_str()) == 0){
if(strcmp(effectiveVec[1].c_str(),"")==0){
}else{
effectiveVec1=effectiveVec[1];
}
}
}
}
printf("id =%s ,orderVec1= %s /n",item_id,orderVec1);
printf("id =%s ,ratioVec1= %s /n",item_id,ratioVec1);
printf("id =%s ,effectiveVec1= %s /n",item_id,effectiveVec1);
sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(orderVec1);
sub_struct.JK_SUBSTITUTE_PART_RATIO.assign(ratioVec1);
sub_struct.JK_SUBSTITUTE_PART_DATE.assign(effectiveVec1);
sub_struct.JK_IS_GLOBAL.assign("2");
sub_bom_vec.push_back(sub_struct);
if(item_id!=NULL){
MEM_free(item_id);
item_id =NULL;
}
}
}else{
printf("替换件,替换比例,替换日期,替换顺序 数量不一致,给予默认传递\n");
for(int i = 0;i < n_substitute;i++){
JK_SUB_BOM_STRUCT sub_struct ;
char index[12] = "\0";
sprintf(index,"%d",i);
char * item_id =NULL;
ITKCALL(AOM_ask_value_string(substitute_tags[i],"bl_item_item_id",&item_id));
sub_struct.JK_BOM_ID.assign(bom_id);
sub_struct.JK_BOM_REV.assign(bom_rev);
sub_struct.JK_BOM_CID.assign(c_line_id);
sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id);
sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(index);
sub_struct.JK_SUBSTITUTE_PART_RATIO.assign("1");
sub_struct.JK_SUBSTITUTE_PART_DATE.assign("2001-01-01");
sub_struct.JK_IS_GLOBAL.assign("2");
sub_bom_vec.push_back(sub_struct);
if(item_id!=NULL){
MEM_free(item_id);
item_id =NULL;
}
}
}
//处理全局替换件
if(golbal_alt_count == golbal_Date_count
&& golbal_alt_count == golbal_order_count
&& golbal_alt_count == golbal_ratio_count){
printf("全局替换件,替换比例,替换日期,替换顺序 数量一致,给予传递\n");
for(int i = 0 ;i < golbal_alt_count;i++){
ITKCALL(ITEM_ask_id(golbal_alt_tags[i],item_id_2));
JK_SUB_BOM_STRUCT sub_struct ;
char index[12] = "\0";
sprintf(index,"%d",i);
char orderVec1[100]="1";
char ratioVec1[100]="1";
char effectiveVec1[100]="2001-01-01";
if(strcmp(golbalorder_str_s[i],"")==0){
strcpy(orderVec1,"1");
}else{
strcpy(orderVec1,golbalorder_str_s[i]);
}
if(strcmp(golbalratio_str_s[i],"")==0){
strcpy(ratioVec1,"1");
}else{
strcpy(ratioVec1,golbalratio_str_s[i]);
}
if(strcmp(golbalDate_str_s[i],"")==0){
strcpy(effectiveVec1,"2001-01-01");
}else{
strcpy(effectiveVec1,golbalDate_str_s[i]);
}
sub_struct.JK_BOM_ID.assign(bom_id);
sub_struct.JK_BOM_REV.assign(bom_rev);
sub_struct.JK_BOM_CID.assign(c_line_id);
sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id_2);
sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(orderVec1);
sub_struct.JK_SUBSTITUTE_PART_RATIO.assign(ratioVec1);
sub_struct.JK_SUBSTITUTE_PART_DATE.assign(effectiveVec1);
sub_struct.JK_IS_GLOBAL.assign("1");
sub_bom_vec.push_back(sub_struct);
}
}else{
printf("全局替换件,替换比例,替换日期,替换顺序 数量不一致,给予默认传递\n");
for(int i = 0 ;i < golbal_alt_count;i++){
ITKCALL(ITEM_ask_id(golbal_alt_tags[i],item_id_2));
JK_SUB_BOM_STRUCT sub_struct ;
char index[12] = "\0";
sprintf(index,"%d",i);
sub_struct.JK_BOM_ID.assign(bom_id);
sub_struct.JK_BOM_REV.assign(bom_rev);
sub_struct.JK_BOM_CID.assign(c_line_id);
sub_struct.JK_SUBSTITUTE_PART_ID.assign(item_id_2);
sub_struct.JK_SUBSTITUTE_PART_INDEX.assign(index);
sub_struct.JK_SUBSTITUTE_PART_RATIO.assign("1");
sub_struct.JK_SUBSTITUTE_PART_DATE.assign("2001-01-01");
sub_struct.JK_IS_GLOBAL.assign("1");
sub_bom_vec.push_back(sub_struct);
}
}
if(substitute_tags!=NULL){
MEM_free(substitute_tags);
substitute_tags =NULL;
}
if(golbal_alt_tags !=NULL){
MEM_free(golbal_alt_tags);
golbal_alt_tags =NULL;
}
}
/*******************************************************
*
* 获取子bomline属性的属性
*
********************************************************/
void JK_get_bomline_props(string bom_id,
string bom_rev,
tag_t line_tag ,
vector<JK_P_BOM_STRUCT> & p_bom_vec ,
vector<JK_C_BOM_STRUCT> & c_bom_vec,
vector<JK_SUB_BOM_STRUCT> & sub_bom_vec)
{
int child_count = 0 ,
i = 0;
tag_t * child_tags = NULL;
POM_AM__set_application_bypass(true);
ITKCALL(BOM_line_ask_all_child_lines(line_tag,&child_count,&child_tags));
for( i = 0 ; i < child_count ; i++){
char * bl_item_id =NULL,
* bl_item_rev_id = NULL,
* Jk8SupplyType = NULL,
Jk8SupplyType1[40]="\0",
*Jk8Warehouse =NULL,
Jk8Warehouse1[40]="\0",
*bl_quantity =NULL,
*JK_BOM_CWR = NULL,
*Jk8RemarkDesc = NULL;
char* type_class=NULL;
tag_t rev_tag = NULLTAG,
*view_tags =NULL;
int view_count = 0;
string bl_rev_id ;
//因为生产代码做了权限管控所以读取不到bl_item_object_type要开旁路
POM_AM__set_application_bypass(true);
ITKCALL( AOM_ask_value_string(child_tags[i],"bl_item_object_type",&type_class));
printf("type_class=%s\n",type_class);
if(strcmp(type_class, "JK8EmbSoftware" ) ==0){//生产代码不传 2017.9.27
printf("生产代码JK8EmbSoftware不传跳过");
continue;
}
ITKCALL(AOM_ask_value_string(child_tags[i],"bl_item_item_id",&bl_item_id));//bl_item_item_id
if(strcmp(bl_item_id,"LS")==1){ //临时物料不传 2018.1.22
continue;
}
ITKCALL(AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag));
ITKCALL(AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&bl_item_rev_id));//bl_item_id
ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8SupplyType,&Jk8SupplyType));//Jk8SupplyType 供应类型
ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8Warehouse,&Jk8Warehouse));//Jk8Warehouse 仓库
ITKCALL(AOM_UIF_ask_value(child_tags[i],BOM_JK_BOM_CWR,&JK_BOM_CWR));//BOM_JK_BOM_CWR
ITKCALL(AOM_ask_value_string(child_tags[i],"bl_quantity",&bl_quantity));//
ITKCALL(AOM_ask_value_string(child_tags[i],BOM_Jk8RemarkDesc,&Jk8RemarkDesc));//Jk8RemarkDesc 备注
bl_rev_id.assign(bl_item_rev_id);
JK_C_BOM_STRUCT c_bean;
c_bean.JK_BOM_ID.assign(bom_id);
c_bean.JK_BOM_REV.assign(bom_rev);
c_bean.JK_BOM_CID.assign(bl_item_id);
if(Jk8SupplyType==NULL || strlen(Jk8SupplyType) ==0){
c_bean.JK_SUPPLY_TYPE.assign("3");//Jk8SupplyType
}else{
strncpy(Jk8SupplyType1,Jk8SupplyType, 1);//截取第一个
c_bean.JK_SUPPLY_TYPE.assign(Jk8SupplyType1);//Jk8SupplyType
}
if(Jk8Warehouse == NULL || strlen(Jk8Warehouse) == 0){
c_bean.JK_WAREHOUSE.assign("");//Jk8Warehouse
}else{
strncpy(Jk8Warehouse1,Jk8Warehouse, 2);//截取第2个
c_bean.JK_WAREHOUSE.assign(Jk8Warehouse1);//Jk8Warehouse
}
if(bl_quantity == NULL ||strlen(bl_quantity) ==0){
c_bean.JK_QUANTITY.assign("1");
}else{
c_bean.JK_QUANTITY.assign(bl_quantity);
}
c_bean.JK_REMARK.assign(Jk8RemarkDesc);
if(JK_BOM_CWR == NULL|| strlen(JK_BOM_CWR)==0){
c_bean.JK_BOM_CWR.assign("0");//JK_BOM_CWR//2017/10.23子件损耗率默认值1改为0
//}else if(strcmp(JK_BOM_CWR,"")==0){
}else{
c_bean.JK_BOM_CWR.assign(JK_BOM_CWR);//JK_BOM_CWR
}
c_bom_vec.push_back(c_bean);
if(child_tags[i]!=NULL)
{
JK_get_subline_props(bom_id,bom_rev,c_bean.JK_BOM_CID,child_tags[i],sub_bom_vec);
}
// ITKCALL(AOM_ask_value_tags(rev_tag,"structure_revisions",&view_count,&view_tags));
if(view_count > 0){
//获取子BOM结构开始
//JK_get_top_bomline_props(view_tags[0],p_bom_vec,c_bom_vec,sub_bom_vec);
}
if(type_class !=NULL){
MEM_free(type_class);
type_class =NULL;
}
if(view_tags !=NULL){
MEM_free(view_tags);
view_tags =NULL;
}
if(bl_item_rev_id !=NULL){
MEM_free(bl_item_rev_id);
bl_item_rev_id =NULL;
}
if(bl_item_id!=NULL){
MEM_free(bl_item_id);
bl_item_id = NULL;
}
if(Jk8SupplyType != NULL){
MEM_free(Jk8SupplyType);
Jk8SupplyType =NULL;
}
if(Jk8Warehouse != NULL){
MEM_free(Jk8Warehouse);
Jk8Warehouse =NULL;
}
if(bl_quantity != NULL){
MEM_free(bl_quantity);
bl_quantity =NULL;
}
if(Jk8RemarkDesc != NULL){
MEM_free(Jk8RemarkDesc);
Jk8RemarkDesc =NULL;
}
if(JK_BOM_CWR !=NULL){
MEM_free(JK_BOM_CWR);
JK_BOM_CWR =NULL;
}
}
POM_AM__set_application_bypass(false);
if(child_tags!=NULL){
MEM_free(child_tags);
child_tags =NULL;
}
}
/*******************************************************
*
* 获取子TOP Bomline属性的属性
*
********************************************************/
void JK_get_top_bomline_props(tag_t view_tag ,
vector<JK_P_BOM_STRUCT> & p_bom_vec ,
vector<JK_C_BOM_STRUCT> & c_bom_vec,
vector<JK_SUB_BOM_STRUCT> & sub_bom_vec)
{
int ifail = 0 ,
i = 0,
status_count = 0 ,
c_line_count = 0 ,
rev_form_cnt = 0 ;
tag_t rev_tag =NULLTAG,
item_tag = NULLTAG,
owning_user_tag = NULLTAG,
current_user_tag = NULLTAG,
current_group_mem_tag = NULLTAG,
person_tag = NULLTAG,
bom_window_tag = NULLTAG,
*status_tags = NULL,
status_tag = NULLTAG,
top_line_tag = NULLTAG,
*c_line_tags = NULL,
*rev_form_tags = NULL;
char item_id[ITEM_id_size_c + 1] = "\0",
rev_id[ITEM_id_size_c + 1] = "\0",
*user_name = NULL,
*jk8_mjshl = NULL,
create_date_str[32] = "\0",
send_date_str[32] = "\0",
person_name[SA_person_name_size_c + 1] = "\0";
date_t status_date ;
date_t create_date ;
string is_scrap,scrap_date;
date_t current_date;
current_time(&current_date);
sprintf(send_date_str,"%04d-%02d-%02d",current_date.year,1+ current_date.month,current_date.day);
ITKCALL(ifail = BOM_create_window(&bom_window_tag));//创建window视图
ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,view_tag,&top_line_tag));//获取顶层bomline
ITKCALL(BOM_line_ask_all_child_lines(top_line_tag,&c_line_count,&c_line_tags));
if(c_line_count == 0){
printf("没有BOM结构");
ITKCALL(ifail = BOM_close_window(bom_window_tag));
return;
}
//获取当前用户名称
ITKCALL(SA_ask_current_groupmember(&current_group_mem_tag));
ITKCALL(SA_ask_groupmember_user(current_group_mem_tag,&current_user_tag));
ITKCALL(SA_ask_user_person(current_user_tag,&person_tag));
ITKCALL(SA_ask_person_name(person_tag , person_name));
printf("current person_name=> %s\n",person_name);
ITKCALL(AOM_ask_value_tag(top_line_tag,"bl_line_object",&rev_tag));//获取BOMLINE关联的版本
ITKCALL(ITEM_ask_item_of_rev(rev_tag,&item_tag));
ITKCALL(ITEM_ask_id(item_tag,item_id));//物料编码
if(strcmp(item_id,"E-")==1){
return;
}
if(strcmp(item_id,"LS")==1){
return;
}
ITKCALL(ITEM_ask_rev_id(rev_tag,rev_id));//获取版本号
ITKCALL(AOM_ask_value_date(rev_tag,"creation_date", &create_date));//add 版本创建时间 creation_date
if(create_date.year !=0){
sprintf(create_date_str,"%04d-%02d-%02d",create_date.year,1+ create_date.month,create_date.day);
}
ITKCALL(AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&rev_form_cnt,&rev_form_tags));
ITKCALL(AOM_ask_value_tag(view_tag,"owning_user",&owning_user_tag));//bvr的所有者
ITKCALL(AOM_ask_value_string(owning_user_tag,"user_name",&user_name));//获取所有者名称
ITKCALL(ifail = AOM_UIF_ask_value(rev_form_tags[i],BOM_jk8_mjshl,&jk8_mjshl));//母件损耗率 jk8_mjshl
ITKCALL(ifail = AOM_ask_value_tags(view_tag,"release_status_list",&status_count,&status_tags));//是否失效
if(rev_form_tags!=NULL){
MEM_free(rev_form_tags);
rev_form_tags =NULL;
}
if(status_count > 0)
{
status_tag = status_tags[0];
AOM_ask_value_date(status_tag,"date_released",&status_date);
}
for(i = 1;i < status_count;i++)
{
date_t date_t_i ;
AOM_ask_value_date(status_tags[i],"date_released",&date_t_i);
int day_count1 = sum(status_date.year ,1+status_date.month , status_date.day);
int day_count2 = sum(date_t_i.year , 1+date_t_i.month , date_t_i.day);
if(day_count1 < day_count2)
{
status_tag = status_tags[i];
status_date = date_t_i;
}
}
is_scrap.assign("0");
if(status_tag !=NULLTAG)
{
char * status_name = NULL;
ITKCALL(AOM_ask_value_string(status_tag,"name",&status_name));
if(strcmp(status_name, SCRAPE_STATUS_NAME ) ==0){
is_scrap.assign("1");
char scrp_date_str[32] = "\0";
sprintf(scrp_date_str,"%04d-%02d-%02d",status_date.year,1 + status_date.month,status_date.day);
scrap_date.assign(scrp_date_str);
}else{
scrap_date.assign("2099-12-31");
}
if(status_name !=NULL){
MEM_free(status_name);
status_name = NULL;
}
}else{
scrap_date.assign("2099-12-31");
}
JK_P_BOM_STRUCT p_bean;
/*****************写入属性*****************/
p_bean.JK_BOM_ID.assign(item_id);
p_bean.JK_BOM_REV.assign(rev_id);
p_bean.JK_OWNING_USER.assign(user_name);
if(jk8_mjshl == NULL){
p_bean.JK_RATE.assign("0");//jk8_mjshl//2017/10/23母件损耗率默认值1改为0
}else if(strlen(jk8_mjshl)==0){
p_bean.JK_RATE.assign("0");//jk8_mjshl//2017/10/23母件损耗率默认值1改为0
}else{
p_bean.JK_RATE.assign(jk8_mjshl);//jk8_mjshl
}
p_bean.JK_CREATION_DATE.assign(create_date_str);
p_bean.JK_SCRAP_DATE.assign(scrap_date.c_str());
p_bean.JK_IS_SCRAP.assign(is_scrap);
p_bean.JK_FROM.assign(person_name);
p_bean.JK_TRANS_TIME.assign(send_date_str);
p_bean.JK_STATUS.assign("0");
p_bean.JK_FROM_SYS.assign("TC");
/******************************************/
p_bom_vec.push_back(p_bean);
printf("====>1");
JK_get_bomline_props(p_bean.JK_BOM_ID,p_bean.JK_BOM_REV,top_line_tag,p_bom_vec,c_bom_vec,sub_bom_vec);
printf("====>2");
//释放资源
if(c_line_tags !=NULL){
MEM_free(c_line_tags);
c_line_tags = NULL;
}
if(user_name !=NULL)
{
MEM_free(user_name);
user_name = NULL;
}
if(jk8_mjshl !=NULL)
{
MEM_free(jk8_mjshl);
jk8_mjshl =NULL;
}
if(status_tags !=NULL)
{
MEM_free(status_tags);
status_tags =NULL;
}
ITKCALL(ifail = BOM_close_window(bom_window_tag));
}
/*******************************************************
*
* 物料发送到ERP
* handler 参数:
* include_type 需要包含哪些类型 多种类型用/分开egItemRevision/JK8MaterialRevision/JK8LSMaterialRevision
* debug 是否需要记录log日志默认false true需要/false不需要 egtrue
*
*******************************************************/
int JK_send_material(EPM_action_message_t msg)
{
ECHO("\n********************************");
ECHO("\n********传递物料开始************");
ECHO("\n********************************\n");
//参数定义
int ifail = EPM_go ,
arg_cnt = 0 ,
i = 0 ,
att_cnt = 0;
tag_t task_tag = NULLTAG ,
root_task_tag =NULLTAG ,
*attachments = NULL;
char * argflag = NULL ,
*argvalue =NULL ,
*arg = NULL ,
arg_value[1024] = "\0",
statusName[1024]="\0",
statusMark[1024]="\0",
type_class[WSO_object_type_size_c+1] ="\0";
string materialStatusName="";
logical is_debug = false;
logical add_mark=false;
//记录错误信息
map<string,int> errMap;
vector<string> type_vec;
vector<JK_MATERIAL_STRUCT> material_vec;
vector<JK_RECORD_SUBSTIT_T> material_sub_vec;
vector<string> bigCodeVec;//vector<string> bigCodeVec,vector<string> qrBigCodeVec
vector<string> qrBigCodeVec;
vector<string> uomVec;
map<string,string> uomMapping;
//获取需要获取两为编码的分类编码
getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec);
//获取不传递的分类编码
getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec);
//获取单位
getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec);
for(i = 0 ; i < uomVec.size() ; i++){
string uom_u8 = uomVec[i];
vector<string> uV;
Split(uom_u8,"=",uV);
//printf("%s%d \n",uom_u8.c_str(),uV.size());
if(uV.size() == 2){
printf("%s %s \n",uV[1],uV[0]);
uomMapping.insert(pair<string,string>(uV[1],uV[0]));
}
}
//获取handler参数的个数
arg_cnt = TC_number_of_arguments(msg.arguments);
ECHO("参数个数为:%d\n",arg_cnt);
if (arg_cnt > 0)
{
for (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, "include_type") == 0)
{
if(argvalue != NULL)
{
strcpy(arg_value,argvalue);
Split(arg_value,"/",type_vec);
}else{
string key_id;
key_id.assign("缺少include_type参数");
errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
}
}
//是否需要记录log日志
else if(stricmp(argflag, "debug") == 0)
{
if(argvalue != NULL)
{
if(strcmp(argvalue,"true")==0)
{
is_debug = true;
}
else
{
is_debug = false;
}
}
else
{
string key_id;
key_id.assign("缺少debug参数");
errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
}
}
//2018.12.26给状态设置什么值(如果有这个参数,传到中间表以这个值为准,如果没有就以属性值为准)
else if(stricmp(argflag, "addStatus_name") == 0)
{
if(argvalue != NULL)
{
strcpy(statusName,argvalue);
materialStatusName=statusName;
}
/*else
{
string key_id;
key_id.assign("缺少addStatus_name参数");
errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
}*/
}
//给状态标记设置真实值
else if(stricmp(argflag, "addStatus_mark") == 0)
{
if(argvalue != NULL)
{
strcpy(statusMark,argvalue);
add_mark=true;
}
else
{
string key_id;
key_id.assign("缺少addStatus_mark参数");
errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
}
}
}
MEM_free(argflag);
MEM_free(argvalue);
}
//获取目标对象
task_tag = msg.task;
if(task_tag == NULLTAG)
{
return EPM_nogo;
}
EPM_ask_root_task(task_tag, &root_task_tag);
EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments);
for(i = 0 ;i < att_cnt;i++){
tag_t target_tag = attachments[i];
//获取对象的类型
ITKCALL( WSOM_ask_object_type(target_tag, type_class));
ECHO("对象类型%s\n",type_class);
string type_str ;
type_str.assign(type_class);
vector<string>::iterator it;
it = find(type_vec.begin(),type_vec.end(),type_str);
if(it == type_vec.end()){
ECHO("此类型不包含在include_type中\n");
continue;
}
char * item_id_temp = NULL;
ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp));
if(strcmp(item_id_temp,"E-") == 1 ){
ECHO("E-开头的物料不需要传递\n");
if(item_id_temp !=NULL){
MEM_free(item_id_temp);
item_id_temp = NULL;
}
continue;
}
if(item_id_temp !=NULL){
MEM_free(item_id_temp);
item_id_temp = NULL;
}
//2018.12.4 根据参数给版本添加状态 2018.12.26 不设置属性,只传属性
//2019.1.9 根据参数给版本添加状态
if(materialStatusName.length()>0)
{
POM_AM__set_application_bypass(true);
ITKCALL(AOM_load(target_tag));
ITKCALL(AOM_lock(target_tag));
ITKCALL(AOM_refresh(target_tag,1));
// ITKCALL(ifail=AOM_set_value_string(target_tag,"jk8TecModel1",statusName));
// ITKCALL(ifail=AOM_set_value_string(target_tag,"jk8Status",statusName));
ITKCALL(ifail=AOM_UIF_set_value(target_tag,"jk8Status",statusName));
POM_AM__set_application_bypass(false);
AOM_save(target_tag);
AOM_refresh(target_tag,0);
AOM_unlock(target_tag);
}
//2018.12.4 根据参数给版本添加状态标记 通过系统handler添加代码无需添加
if(add_mark==true)
{
tag_t release_stat = NULLTAG;
ITKCALL(ifail=RELSTAT_create_release_status(statusMark, &release_stat));//TCM Released jk8Disabled
POM_AM__set_application_bypass(true);
ITKCALL(ifail=RELSTAT_add_release_status(release_stat, 1, &target_tag, true));
POM_AM__set_application_bypass(false);
}
JK_get_material_props(target_tag , material_vec,bigCodeVec,qrBigCodeVec,uomMapping,materialStatusName);
JK_get_material_subs(target_tag , material_sub_vec);
}
if(attachments!=NULL){
MEM_free(attachments);
attachments =NULL;
}
vector<JK_MATERIAL_STRUCT> faild_vec ;
JK_write_material_to_DB(material_vec,faild_vec);
material_vec.clear();
JK_write_material_subs_to_DB(material_sub_vec);
material_sub_vec.clear();
ECHO("\n********************************");
ECHO("\n********传递物料结束************");
ECHO("\n********************************\n");
return ifail;
}
int JK_send_material1(vector<tag_t> attachments,string dateType)
{
ECHO("\n********************************");
ECHO("\n********传递物料开始JK_send_material1************");
ECHO("\n********************************\n");
//参数定义
int ifail = EPM_go ,
arg_cnt = 0 ,
i = 0 ,
att_cnt = attachments.size();
// tag_t task_tag = NULLTAG ,
// root_task_tag =NULLTAG ,
// *attachments = NULL;
// char * argflag = NULL ,
// *argvalue =NULL ,
// *arg = NULL ,
// arg_value[1024] = "\0",
char type_class[WSO_object_type_size_c+1] ="\0";
logical is_debug = true;
//记录错误信息
map<string,int> errMap;
vector<string> type_vec;
type_vec.push_back("JK8MaterialRevision");
vector<JK_MATERIAL_STRUCT> material_vec;
vector<string> bigCodeVec;//vector<string> bigCodeVec,vector<string> qrBigCodeVec
vector<string> qrBigCodeVec;
vector<string> uomVec;
map<string,string> uomMapping;
//获取需要获取两为编码的分类编码
getPrefStrings("JK_U8_BIG_CODE_TOW",TC_preference_site,bigCodeVec);
//获取不传递的分类编码
getPrefStrings("JK_U8_QR_BIG_CODE",TC_preference_site,qrBigCodeVec);
//获取单位
getPrefStrings("JK_UOM_PLM_U8",TC_preference_site,uomVec);
for(i = 0 ; i < uomVec.size() ; i++){
string uom_u8 = uomVec[i];
vector<string> uV;
Split(uom_u8,"=",uV);
//printf("%s%d \n",uom_u8.c_str(),uV.size());
if(uV.size() == 2){
printf("%s %s \n",uV[1],uV[0]);
uomMapping.insert(pair<string,string>(uV[1],uV[0]));
}
}
//获取handler参数的个数
// arg_cnt = TC_number_of_arguments(msg.arguments);
// ECHO("参数个数为:%d\n",arg_cnt);
// if (arg_cnt > 0)
// {
// for (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, "include_type") == 0)
// {
// if(argvalue != NULL)
// {
// strcpy(arg_value,argvalue);
// Split(arg_value,"/",type_vec);
// }else{
// string key_id;
// key_id.assign("缺少include_type参数");
// errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
// }
// }
// //是否需要记录log日志
// else if(stricmp(argflag, "debug") == 0)
// {
// if(argvalue != NULL)
// {
// if(strcmp(argvalue,"true")==0)
// {
// is_debug = true;
// }
// else
// {
// is_debug = false;
// }
// }
// else
// {
//
// string key_id;
// key_id.assign("缺少secondary_type参数");
// errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
// }
// }
// }
// MEM_free(argflag);
// MEM_free(argvalue);
// }
//获取目标对象
// task_tag = msg.task;
// if(task_tag == NULLTAG)
// {
//
// return EPM_nogo;
// }
// EPM_ask_root_task(task_tag, &root_task_tag);
// EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments);
for(i = 0 ;i < att_cnt;i++){
tag_t target_tag = attachments[i];
//获取对象的类型
ITKCALL( WSOM_ask_object_type(target_tag, type_class));
ECHO("对象类型%s\n",type_class);
string type_str ;
type_str.assign(type_class);
vector<string>::iterator it;
it = find(type_vec.begin(),type_vec.end(),type_str);
if(it == type_vec.end()){
ECHO("此类型不包含在include_type中\n");
continue;
}
char * item_id_temp = NULL;
ITKCALL(AOM_ask_value_string(target_tag,"item_id",&item_id_temp));
if(strcmp(item_id_temp,"E-") == 1 ){
ECHO("E-开头的物料不需要传递\n");
if(item_id_temp !=NULL){
MEM_free(item_id_temp);
item_id_temp = NULL;
}
continue;
}
if(item_id_temp !=NULL){
MEM_free(item_id_temp);
item_id_temp = NULL;
}
cout<<"material_vec.size()1---------------------"<<material_vec.size()<<endl;
JK_get_material_props1(target_tag , material_vec,bigCodeVec,qrBigCodeVec,uomMapping,dateType);
cout<<"material_vec.size()---------------------"<<material_vec.size()<<endl;
}
// if(attachments!=NULL){
// MEM_free(attachments);
// attachments =NULL;
// }
vector<JK_MATERIAL_STRUCT> faild_vec ;
JK_write_material_to_DB(material_vec,faild_vec);
material_vec.clear();
ECHO("\n********************************");
ECHO("\n********传递物料结束************");
ECHO("\n********************************\n");
return ifail;
}
/*******************************************************
*
* BOM发送到ERP
* handler 参数:
* include_type 需要包含哪些类型 多种类型用/分开egItemRevision/JK8MaterialRevision/JK8LSMaterialRevision
* debug 是否需要记录log日志默认false true需要/false不需要 egtrue
*
********************************************************/
int JK_send_bom(EPM_action_message_t msg)
{
ECHO("\n********************************\n");
ECHO("\n********传递BOM开始************\n");
ECHO("\n*******************************\n");
//参数定义
int ifail = EPM_go ,
arg_cnt = 0 ,
i = 0 ,
att_cnt = 0;
tag_t task_tag = NULLTAG ,
root_task_tag =NULLTAG ,
*attachments = NULL;
char * argflag = NULL ,
*argvalue =NULL ,
*arg = NULL ,
arg_value[1024] = "\0",
type_class[WSO_object_type_size_c+1] ="\0";
logical is_debug = false;
//记录错误信息
map<string,int> errMap;
vector<string> type_vec;
vector<JK_P_BOM_STRUCT> p_bom_vec;
vector<JK_C_BOM_STRUCT> c_bom_vec;
vector<JK_SUB_BOM_STRUCT> sub_bom_vec;
//获取handler参数的个数
arg_cnt = TC_number_of_arguments(msg.arguments);
ECHO("参数个数为:%d\n",arg_cnt);
if (arg_cnt > 0)
{
for (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, "include_type") == 0)
{
if(argvalue != NULL)
{
strcpy(arg_value,argvalue);
Split(arg_value,"/",type_vec);
}else{
string key_id;
key_id.assign("缺少include_type参数");
errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
}
}
//是否需要记录log日志
else if(stricmp(argflag, "debug") == 0)
{
if(argvalue != NULL)
{
if(strcmp(argvalue,"true")==0)
{
is_debug = true;
}
else
{
is_debug = false;
}
}
else
{
string key_id;
key_id.assign("缺少secondary_type参数");
errMap.insert(pair<string,int>(key_id,HANDLER_ARGUMENT_ERROR));
}
}
}
MEM_free(argflag);
MEM_free(argvalue);
}
//获取目标对象
task_tag = msg.task;
if(task_tag == NULLTAG)
{
return EPM_nogo;
}
EPM_ask_root_task(task_tag, &root_task_tag);
EPM_ask_attachments(root_task_tag, EPM_target_attachment, &att_cnt, &attachments);
for(i = 0 ;i < att_cnt;i++){
tag_t target_tag = attachments[i];
//获取对象的类型 PSBOMViewRevision
ITKCALL( WSOM_ask_object_type(target_tag, type_class));
ECHO("对象类型%s\n",type_class);
string type_str ;
type_str.assign(type_class);
vector<string>::iterator it;
it = find(type_vec.begin(),type_vec.end(),type_str);
if(it == type_vec.end()){
ECHO("此类型不包含在include_type中\n");
continue;
}
JK_get_top_bomline_props(target_tag,p_bom_vec,c_bom_vec,sub_bom_vec);
}
if(attachments!=NULL)
{
MEM_free(attachments);
attachments =NULL;
}
vector<JK_P_BOM_STRUCT> faild_p_vec;
vector<JK_C_BOM_STRUCT> faild_c_vec;
vector<JK_SUB_BOM_STRUCT> faild_sub_vec;
//将bom信息信息写入到中间表
JK_write_p_bom_to_DB(p_bom_vec,faild_p_vec);
//将bom结构信息写入到中间表
JK_write_c_bom_to_DB(c_bom_vec,faild_c_vec);
JK_write_sub_bom_to_DB(sub_bom_vec,faild_sub_vec);
printf("faild_p_vec.size = %d \n",faild_p_vec.size());
printf("faild_c_vec.size = %d \n",faild_c_vec.size());
printf("faild_sub_vec.size = %d \n",faild_sub_vec.size());
p_bom_vec.clear();
c_bom_vec.clear();
sub_bom_vec.clear();
ECHO("\n********************************");
ECHO("\n********传递BOM结束************");
ECHO("\n********************************\n");
return 0;
}