#ifndef _cplusplus #ifndef _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_DEPRECATE #endif #endif #include"erp_send_item.h" #ifdef WIN32 #pragma warning( push ) #pragma warning( disable: 4311 ) #pragma warning( disable: 4312 ) #endif char control_plan_fields[29][45] = { "STAGE",//阶段 tm2_cpjd "KEY_PHONE",//主要联系人电话 tm2_zylxdh "cust_approval",//客户审批 tm2_gkpz "KEY_CONTACT",//主要联系人 tm2_zylxr "DATE_ORIG",//编制日期 //5 tm2_bzrq "DATE_REV",//修订日期 tm2_xdrq "PLAP_NO",//控制计划编号 tm2_kzjhbh "SOR",//SOR tm2_sor "CORE_TEAM",//核心小组 tm2_hxxz "Customer_engineering_approval",//顾客工程批准/日期 //10 tm2_gkgcpz "Part_Num_Latest_change",//零件号/最新更改程度 tm2_zxggcd "Supplier_Plant_Approval",//供方/工厂批准/日期 tm2_gfgcpz "Customer_quality_approval",//顾客质量批准/日期 tm2_gkzlpz "Customer_Part_Number",//客户图纸编号 tm2_khtzbh "Part_Name_Description",//零件名称/描述//15 tm2_ljmc "Supplier_Plant",//供方/工厂 tm2_gfgc "Supplier_Code",//供方代号 tm2_gfdh "Mode_year",//车型/年度 tm2_cxnd "Other_approval_1",//其他批准/日期// tm2_qtpzrq1 "Other_approval_2",//其他批准/日期//20 tm2_qtpzrq2 "KEY_CONNECT",//KEY键 "CHANGE_LEV",//变更阶段 tm2_xgdj "STATUS", "ORIGINER", "ERROR_MSG",//25 "COMMIT_TIME", "OPERATE_TIME", "BATCH_ID", "ORIGINER_SYS"//29 }; typedef struct{ string STAGE; string KEY_PHONE; string cust_approval; string KEY_CONTACT; string DATE_ORIG;//5 string DATE_REV; string PLAN_NO; string SOR; string CORE_TEAM; string Customer_engineering_approval;//10 string Part_Num_Latest_change; string Supplier_Plant_Approval; string Customer_quality_approval; string Customer_Part_Number; string Part_Name_Description;//15 string Supplier_Plant; string Supplier_Code; string Mode_year; string Other_approval_1; string Other_approval_2;//20 string KEY_CONNECT; string CHANGE_LEV;//业务数据结束 string STATUS; string ORIGINER; string ERROR_MSG;//25 string COMMIT_TIME; string OPERATE_TIME; string BATCH_ID; string ORIGINER_SYS;//29 }CONTROL_PLAN_STRUCT; char comtrol_plan_array_fields[20][45]={ "Part_Process_Number",//tm2_ljgybh "Process_Name_Description",//tm2_gcmcms "Machine_Device",//tm2_jqsbgzjj "Characteristics_Bubbled",//tm2_qptbh "Characteristics_Size",//5//tm2_cc "Characteristics_No",//tm2_xh "Characteristics_Product",//tm2_cp "Characteristics_Process",//tm2_gc "Special_Char_Class",//tm2_tstxfl "Specification_Tolerance",//10//tm2_cpgcgggc "UP_SPEC",//tm2_spc "DOWN_SPEC",//tm2_xpc "Evaluation_Measurement",//tm2_pgclff "Sample_Size",//tm2_rl "Sample_Freq",//15//tm2_pl "Resp",//tm2_fzr "Control_Method",//tm2_kzff "Operation_criteria",//tm2_czgf "Reaction_Plan",//tm2_fyjh "KEY_CONNECT"//20 }; typedef struct{ string Part_Process_Number; string Process_Name_Description; string Machine_Device; string Characteristics_Bubbled; string Characteristics_Size;//5 string Characteristics_No; string Characteristics_Product; string Characteristics_Process; string Special_Char_Class; string Specification_Tolerance;//10 string UP_SPEC; string DOWN_SPEC; string Evaluation_Measurement; string Sample_Size; string Sample_Freq;//15 string Resp; string Control_Method; string Operation_criteria; string Reaction_Plan; string KEY_CONNECT;//20 }CONTROL_PLAN_ARRAY_STRUCT; //----------------------------------- char erp_part_fields[28][40]={ "PART_NAMBER", "PART_NAME", "REVISION", "SPECIFICATION", "CUSTOMER_PART_NUMBER",//5 "PART_MODEL", "STOCK_KEEPING_UNIT", "SHELF_LIFE", "SOURCE", "FORMULA_TYPE",//10 "CLASSIFICATION", "SALE_CLASSIFICATION", "INDICATIVE_PRICE", "APPLICANT", "APPLICANT_DATE",//15 "PART_TYPE", "VALID_DATE", "INVALID_DATE", "STATUS", "ORIGINER",//20 //"ERROR_MSG", "COMMIT_TIME", //"OPERATE_TIME", "BATCH_ID", //"PUID",//25 "ORIGINER_SYS", "POWDER_NO", "CUSTOMER_NAME", "WEIGHT", "BLENDING_WAY", "BASKET" }; //-------------------------------- typedef struct{ string PART_NAMBER; string PART_NAME; string REVISION; string SPECIFICATION; string CUSTOMER_PART_NUMBER;//5 string PART_MODEL; string STOCK_KEEPING_UNIT; string SHELF_LIFE; string SOURCE; string FORMULA_TYPE;//10 string CLASSIFICATION; string SALE_CLASSIFICATION; string INDICATIVE_PRICE; string APPLICANT; string APPLICANT_DATE;//15 string PART_TYPE; string VALID_DATE; string INVALID_DATE; string STATUS; string ORIGINER;//20 //string ERROR_MSG; string COMMIT_TIME; //string OPERATE_TIME; string BATCH_ID; //string PUID;//25 string ORIGINER_SYS; string POWDER_NO; string CUSTOMER_NAME; string WEIGHT; string BLENDING_WAY; string BASKET; }ERP_PART_STRUCT; //------------------------------------ char erp_bom_fields[21][40]={ "SEQ_NUMBER", "P_NUMBER", "P_REV", "PART_NUMBER", "PART_REV",//5 "QUANTITY", "UNIT", "ACQUISITION", "REPLACE_TYPE", "VALID_DATE",//10 "INVALID_DATE", "STATUS", "ORIGINER", "COMMIT_TIME", "BATCH_ID",//15 "ORIGINER_SYS", "SCALE", "P_DEVIATION", "M_DEVIATION", "BASKET_BOMLINE", "BL_SQUENCE" }; //--------------------------------- typedef struct{ string SEQ_NUMBER; string P_NUMBER; string P_REV; string PART_NUMBER; string PART_REV;//5 string QUANTITY; string UNIT; string ACQUISITION; string REPLACE_TYPE; string VALID_DATE;//10 string INVALID_DATE; string STATUS; string ORIGINER; string COMMIT_TIME; string BATCH_ID;//15 string ORIGINER_SYS; string SCALE; string P_DEVIATION; string M_DEVIATION; string BASKET_BOMLINE; string BL_SQUENCE; }ERP_BOM_STRUCT; //---------------------------------- char hl_part_fields[21][40]={ "PART_NAMBER", "PART_NAME", "REVISION", "SPECIFICATION", //"CUSTOMER_PART_NUMBER", //"PART_MODEL", "STOCK_KEEPING_UNIT",//5 "SHELF_LIFE", "SOURCE", "FORMULA_TYPE", "CLASSIFICATION", //"SALE_CLASSIFICATION", //"INDICATIVE_PRICE", "APPLICANT",//10 "APPLICANT_DATE", "PART_TYPE", "VALID_DATE", "INVALID_DATE", "STATUS",//15 "ORIGINER", //"ERROR_MSG", "COMMIT_TIME", //"OPERATE_TIME", "BATCH_ID", //"PUID", "ORIGINER_SYS", "BLENDING_WAY", "BASKET" }; typedef struct{ string PART_NAMBER; string PART_NAME; string REVISION; string SPECIFICATION; //string CUSTOMER_PART_NUMBER; //string PART_MODEL; string STOCK_KEEPING_UNIT; string SHELF_LIFE; string SOURCE; string FORMULA_TYPE; string CLASSIFICATION; //string SALE_CLASSIFICATION; //string INDICATIVE_PRICE; string APPLICANT; string APPLICANT_DATE; string PART_TYPE; string VALID_DATE; string INVALID_DATE; string STATUS; string ORIGINER; //string ERROR_MSG; string COMMIT_TIME; //string OPERATE_TIME; string BATCH_ID; //string PUID; string ORIGINER_SYS; string BLENDING_WAY; string BASKET; }HL_PART_STRUCT; char hl_bom_fields[22][40]={ "SEQ_NUMBER", "P_NUMBER", "P_REV", "PART_NUMBER", "PART_REV",//5 "QUANTITY", "UNIT", "ACQUISITION", "REPLACE_TYPE", "VALID_DATE",//10 "INVALID_DATE", "STATUS", "ORIGINER", "COMMIT_TIME", "BATCH_ID",//15 "ORIGINER_SYS", "WASTAGE", "SCALE", "P_DEVIATION", "M_DEVIATION", "BASKET_BOMLINE", "BL_SQUENCE" }; typedef struct{ string SEQ_NUMBER; string P_NUMBER; string P_REV; string PART_NUMBER; string PART_REV;//5 string QUANTITY; string UNIT; string ACQUISITION; string REPLACE_TYPE; string VALID_DATE;//10 string INVALID_DATE; string STATUS; string ORIGINER; string COMMIT_TIME; string BATCH_ID;//15 string ORIGINER_SYS; string WASTAGE; string SCALE; string P_DEVIATION; string M_DEVIATION; string BASKET_BOMLINE; string BL_SQUENCE; }HL_BOM_STRUCT; //---------------------------------------------------------- char part_fields[18][40]={ "PART_NUMBER", "PART_NAME", "PART_REV", "STATUS", "BATCH_ID",//5 "COMMIT_TIME", "ORIGINER", "PART_SPEC", "CLASS_CODE", "SOURCE",//10 "PROJ_CODE", "UNIT", "RELEASED_STATUS", "INVALID_DATE", "CUSTOMER_PART_NUMBER",//15 "IS_STANDARD", "CREATER", "CREATE_DATE" }; typedef struct{ string PART_NUMBER; string PART_NAME; string PART_REV; string STATUS; string BATCH_ID;//5 string COMMIT_TIME; string ORIGINER; string PART_SPEC; string CLASS_CODE; string SOURCE;//10 string PROJ_CODE; string UNIT; string RELEASED_STATUS; string INVALID_DATE; string CUSTOMER_PART_NUMBER;//15 string IS_STANDARD; string CREATER; string CREATE_DATE; string SCALE; string P_DEVIATION; string M_DEVIATION; }PART_STRUCT; char bom_fields[17][40]={ "SEQ_NUMBER", "P_NUMBER", "RELEASED_DATE", "PART_NUMBER", "VALID_DATE",//5 "INVALID_DATE", "QUANTITY", "ASSEM_QUANTITY", "OTHERS", "ULLAGE",//10 "JOB_NUMBER", "REPLACE_TYPE", "BATCH_ID", "ORIGINER", "COMMIT_TIME",//15 "OPERATE_TIME", "STATUS" }; typedef struct{ string SEQ_NUMBER; string P_NUMBER; string RELEASED_DATE; string PART_NUMBER; string VALID_DATE;//5 string INVALID_DATE; string QUANTITY; string ASSEM_QUANTITY; string OTHERS; string ULLAGE;//10 string JOB_NUMBER; string REPLACE_TYPE; string BATCH_ID; string ORIGINER; string COMMIT_TIME;//15 string OPERATE_TIME; string STATUS; }BOM_STRUCT; extern "C" int POM_AM__set_application_bypass(logical bypass); /** *获取分群码的匹配mapping */ void get_class_code_mapping(map &pdm_wpm_attribute_map){ vector pref_vec; getPrefStrings("Cust_ERP_PLM_Class_Code_Mapping",TC_preference_site, pref_vec); for(int i = 0 ;i < pref_vec.size();i++){ vector values ; Split(pref_vec[i],"@",values); if(values.size() == 2){ pdm_wpm_attribute_map.insert(pair(values[0],values[1])); printf("CLASS_CODE PLM = %s , ERP = %s \n",values[0],values[1]); } } } /** * 获取分群码 */ void get_class_code(map code_map ,string &value){ vector vec; vec.push_back(7); vec.push_back(4); for(int i = 0;i < vec.size();i++) { string v_str = value.substr(0,vec[i]); map::iterator node; node = code_map.find(v_str); if(node != code_map.end()) { value = node->second; printf("\n====找到分群码%s\n",value.c_str()); break; } } } /** *拼接字符串 * */ void get_erp_name(tag_t value_tag, vector prop_name,string &erp_name,tag_t item_tag){ int ifail = ITK_ok; char * str_value = NULL; string erp_name_t; tag_t descript = NULLTAG; for(int i = 0 ;i < prop_name.size();i++){ //ITKCALL(ifail = AOM_ask_descriptor(value_tag,prop_name[i].c_str(),descript)); //PROPDESC_ask_display_values_from_LOV_attachments //PROPDESC_ask_lov //AOM_UIF_ask_value if(strcmp(prop_name[i].c_str(),"object_name")==0){ ITKCALL(ifail = AOM_UIF_ask_value(item_tag,prop_name[i].c_str(),&str_value)); }else{ ITKCALL(ifail = AOM_UIF_ask_value(value_tag,prop_name[i].c_str(),&str_value)); } if(str_value!=NULL){ if(strcmp(str_value,"")!=0){ erp_name_t.append("/").append(str_value); } MEM_free(str_value); str_value = NULL; } } if(erp_name_t.length() > 0 && erp_name_t.c_str()[0]=='/'){ erp_name = erp_name_t.substr(1,(erp_name_t.length()-1)); } } /** * 获取对象的版本的属性 * */ int jf_erp_send_all_item(map rev_map,vector &part_vec,string batchid,char * nowtime){ int ifail = ITK_ok; tag_t tag_value = NULLTAG,item = NULLTAG; date_t p; // char * value =NULL; char ** str_values = NULL ,*value = NULL; char item_type[ITEM_type_size_c + 1] =""; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; map::iterator rev_it; for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) { int formcount = 0; int rev_count = 0; tag_t * rev_tags = NULL; tag_t * formtags = NULL; ERP_PART_STRUCT one_elem; ITEM_ask_item_of_rev(rev_it->first, &item) ; ITEM_list_all_revs(item,&rev_count,&rev_tags); if(rev_count > 1){ MEM_free(rev_tags); rev_tags = NULL; continue; } ITEM_ask_id(item, item_id); ITEM_ask_name(item, item_name); ITEM_ask_type(item,item_type); if((strcmp(item_type,"TM2_materials")==0||strcmp(item_type,"TM2_auxiliary")==0||strcmp(item_type,"TM2_powder")==0||strcmp(item_type,"TM2_rawpowder")==0)!=1){ printf("[%s]不属于物料类型\n",item_type); continue; }else{ //one_elem.PART_TYPE.assign(item_type); one_elem.PART_NAMBER.assign(item_id); one_elem.PART_NAME.assign(item_name); } if(strcmp(item_type,"TM2_materials")==0){ one_elem.PART_TYPE.assign("成品"); }else if(strcmp(item_type,"TM2_auxiliary")==0){ one_elem.PART_TYPE.assign("配套产品"); }else if(strcmp(item_type,"TM2_powder")==0){ one_elem.PART_TYPE.assign("配方粉"); }else { one_elem.PART_TYPE.assign("原材料粉"); } ITEM_ask_rev_id(rev_it->first, rev_id); one_elem.REVISION.assign(rev_id); AOM_ask_value_tags(rev_it->first,"IMAN_master_form_rev",&formcount,&formtags); //对象获取单位属性 ifail = ITEM_ask_unit_of_measure(item,&tag_value); if(ifail == ITK_ok&& tag_value!=NULLTAG){ UOM_ask_symbol(tag_value,&value); if(value!=NULL){ one_elem.STOCK_KEEPING_UNIT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.STOCK_KEEPING_UNIT.assign(""); } }else{ one_elem.STOCK_KEEPING_UNIT.assign(""); } ifail = SA_ask_current_groupmember(&tag_value); if(ifail == ITK_ok) { tag_t user_tag = NULLTAG; SA_ask_groupmember_user(tag_value,&user_tag); if(user_tag!=NULLTAG) { char user_id_temp[SA_user_size_c+1] =""; ifail = SA_ask_user_identifier(user_tag,user_id_temp); one_elem.ORIGINER.assign(user_id_temp); } } //版本获取属性 //版本表单获取属性 if(formcount!=0){ //-----------公用属性-------------------sqr sqsj tag_t user_tag = NULLTAG; AOM_ask_value_tag(formtags[0],"owning_user",&user_tag);//创建人 if(user_tag !=NULLTAG){ AOM_ask_value_string(user_tag,"user_name",&value); if(value!=NULL){ one_elem.APPLICANT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.APPLICANT.assign(""); } } ifail = AOM_ask_value_date(formtags[0],"creation_date",&p);//创建人创建时间 if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; if(p.year !=0){ sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); one_elem.APPLICANT_DATE.assign(date_value_str); } } //------------------------------ if(strcmp(item_type,"TM2_materials")==0||strcmp(item_type,"TM2_auxiliary")==0){ AOM_ask_value_string(formtags[0],"tm2_ckjg",&value);//料品形态类型 if(value!=NULL){ one_elem.INDICATIVE_PRICE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SPECIFICATION.assign(""); } //get_erp_name(formtags[0],ycl_name_vec,erpname,item); AOM_ask_value_string(formtags[0],"tm2_khth",&value);//客户图号 if(value!=NULL){ one_elem.CUSTOMER_PART_NUMBER.assign(value); MEM_free(value); value = NULL; }else{ one_elem.CUSTOMER_PART_NUMBER.assign(""); } AOM_ask_value_string(formtags[0],"tm2_fh",&value);//粉号 if(value!=NULL){ one_elem.POWDER_NO.assign(value); MEM_free(value); value = NULL; }else{ one_elem.CUSTOMER_PART_NUMBER.assign(""); } AOM_ask_value_string(formtags[0],"tm2_khmc",&value);//粉号 if(value!=NULL){ one_elem.CUSTOMER_NAME.assign(value); MEM_free(value); value = NULL; }else{ one_elem.CUSTOMER_PART_NUMBER.assign(""); } AOM_ask_value_string(formtags[0],"tm2_zl",&value);//粉号 if(value!=NULL){ one_elem.WEIGHT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.CUSTOMER_PART_NUMBER.assign(""); } AOM_ask_value_string(formtags[0],"tm2_cpxh",&value);//产品型号 if(value!=NULL){ one_elem.PART_MODEL.assign(value); MEM_free(value); value = NULL; }else{ one_elem.PART_MODEL.assign(""); } AOM_ask_value_string(formtags[0],"tm2_xsfl",&value);//销售分类 if(value!=NULL){ one_elem.SALE_CLASSIFICATION.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SALE_CLASSIFICATION.assign(""); } }else{ if(strcmp(item_type,"TM2_powder")==0){ AOM_ask_value_string(formtags[0],"tm2_pflx",&value);//配方类型 if(value!=NULL){ one_elem.FORMULA_TYPE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.FORMULA_TYPE.assign(""); } } if(strcmp(item_type,"TM2_rawpowder")==0){ //BLENDING_WAY AOM_UIF_ask_value(formtags[0],"tm2_lt",&value);//料桶 if(value!=NULL){ one_elem.BASKET.assign(value); MEM_free(value); value = NULL; }else{ one_elem.BASKET.assign(""); } AOM_UIF_ask_value(formtags[0],"tm2_plfs",&value);//配料方式 if(value!=NULL){ one_elem.BLENDING_WAY.assign(value); MEM_free(value); value = NULL; }else{ one_elem.BLENDING_WAY.assign(""); } AOM_ask_value_string(formtags[0],"tm2_ylfl",&value);//配方类型 if(value!=NULL){ one_elem.CLASSIFICATION.assign(value); MEM_free(value); value = NULL; }else{ one_elem.CLASSIFICATION.assign(""); } AOM_ask_value_string(formtags[0],"tm2_gg",&value);//料品形态类型 if(value!=NULL){ one_elem.SPECIFICATION.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SPECIFICATION.assign(""); } } ifail = AOM_ask_value_date(formtags[0],"tm2_effective_date",&p); if(ifail==ITK_ok && p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); one_elem.VALID_DATE.assign(date_value_str); } ifail = AOM_ask_value_date(formtags[0],"tm2_expiry_date",&p); if(ifail==ITK_ok && p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month +1,p.day,p.hour,p.minute,p.second); one_elem.INVALID_DATE.assign(date_value_str); } AOM_ask_value_string(formtags[0],"tm2_bzq",&value);//保质期 if(value!=NULL){ one_elem.SHELF_LIFE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SHELF_LIFE.assign(""); } AOM_ask_value_string(formtags[0],"tm2_lpxtlx",&value);//料品形态类型 if(value!=NULL){ one_elem.SOURCE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SOURCE.assign(""); } } } one_elem.COMMIT_TIME.assign(nowtime);//COMMIT_TIME one_elem.ORIGINER_SYS.assign("PLM");//IS_STANDARD one_elem.BATCH_ID.assign(batchid);//BATCH_ID one_elem.STATUS.assign("0");//STATUS part_vec.push_back(one_elem); if(formtags!=NULL){ MEM_free(formtags); formtags = NULL; } } printf("\n获取属性完毕\n"); } /** * 获取对象的版本的属性(混料) * */ int jf_hl_send_all_item(map rev_map,vector &part_vec,string batchid,char * nowtime){ int ifail = ITK_ok; tag_t tag_value = NULLTAG,item = NULLTAG; date_t p; // char * value =NULL; char ** str_values = NULL ,*value = NULL; char item_type[ITEM_type_size_c + 1] =""; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; map::iterator rev_it; for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) { int formcount = 0; int rev_count = 0; tag_t * rev_tags = NULL; tag_t * formtags = NULL; HL_PART_STRUCT one_elem; ITKCALL( ITEM_ask_item_of_rev(rev_it->first, &item) ); ITKCALL(ITEM_list_all_revs(item,&rev_count,&rev_tags)); /*if(rev_count > 1){ MEM_free(rev_tags); rev_tags = NULL; continue; }*/ ITKCALL( ITEM_ask_id(item, item_id) ); ITKCALL( ITEM_ask_name(item, item_name)); ITKCALL(ITEM_ask_type(item,item_type)); if((strcmp(item_type,"TM2_powder")==0||strcmp(item_type,"TM2_rawpowder")==0)!=1){ printf("[%s]不属于物料类型\n",item_type); continue; }else{ //one_elem.PART_TYPE.assign(item_type); one_elem.PART_NAMBER.assign(item_id); one_elem.PART_NAME.assign(item_name); } if(strcmp(item_type,"TM2_materials")==0){ one_elem.PART_TYPE.assign("成品"); }else if(strcmp(item_type,"TM2_auxiliary")==0){ one_elem.PART_TYPE.assign("配套产品"); }else if(strcmp(item_type,"TM2_powder")==0){ one_elem.PART_TYPE.assign("配方粉"); }else { one_elem.PART_TYPE.assign("原材料粉"); } ITKCALL( ITEM_ask_rev_id(rev_it->first, rev_id)); one_elem.REVISION.assign(rev_id); AOM_ask_value_tags(rev_it->first,"IMAN_master_form_rev",&formcount,&formtags); //对象获取单位属性 ITKCALL(ifail = ITEM_ask_unit_of_measure(item,&tag_value)); if(ifail == ITK_ok&& tag_value!=NULLTAG){ ITKCALL(UOM_ask_symbol(tag_value,&value)); if(value!=NULL){ one_elem.STOCK_KEEPING_UNIT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.STOCK_KEEPING_UNIT.assign(""); } }else{ one_elem.STOCK_KEEPING_UNIT.assign(""); } ITKCALL(ifail = SA_ask_current_groupmember(&tag_value)); if(ifail == ITK_ok) { tag_t user_tag = NULLTAG; SA_ask_groupmember_user(tag_value,&user_tag); if(user_tag!=NULLTAG) { char user_id_temp[SA_user_size_c+1] =""; ITKCALL(ifail = SA_ask_user_identifier(user_tag,user_id_temp)); one_elem.ORIGINER.assign(user_id_temp); } } //版本获取属性 //版本表单获取属性 if(formcount!=0){ tag_t user_tag = NULLTAG; AOM_ask_value_tag(formtags[0],"owning_user",&user_tag);//申请人 if(user_tag !=NULLTAG){ ITKCALL(AOM_ask_value_string(user_tag,"user_name",&value)); if(value!=NULL){ one_elem.APPLICANT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.APPLICANT.assign(""); } } ifail = AOM_ask_value_date(formtags[0],"creation_date",&p);//创建人创建时间 if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; if(p.year !=0){ sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); one_elem.APPLICANT_DATE.assign(date_value_str); } } //------------------------------ if(strcmp(item_type,"TM2_materials")==0||strcmp(item_type,"TM2_auxiliary")==0){ }else{ if(strcmp(item_type,"TM2_powder")==0){ AOM_ask_value_string(formtags[0],"tm2_pflx",&value);//配方类型 if(value!=NULL){ one_elem.FORMULA_TYPE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.FORMULA_TYPE.assign(""); } } if(strcmp(item_type,"TM2_rawpowder")==0){ AOM_UIF_ask_value(formtags[0],"tm2_lt",&value);//料桶 if(value!=NULL){ one_elem.BASKET.assign(value); MEM_free(value); value = NULL; }else{ one_elem.BASKET.assign(""); } AOM_UIF_ask_value(formtags[0],"tm2_plfs",&value);//配料方式 if(value!=NULL){ one_elem.BLENDING_WAY.assign(value); MEM_free(value); value = NULL; }else{ one_elem.BLENDING_WAY.assign(""); } AOM_ask_value_string(formtags[0],"tm2_ylfl",&value);//配方类型 if(value!=NULL){ one_elem.CLASSIFICATION.assign(value); MEM_free(value); value = NULL; }else{ one_elem.CLASSIFICATION.assign(""); } AOM_ask_value_string(formtags[0],"tm2_gg",&value);//料品形态类型 if(value!=NULL){ one_elem.SPECIFICATION.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SPECIFICATION.assign(""); } } ifail = AOM_ask_value_date(formtags[0],"tm2_effective_date",&p); if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month+1 ,p.day,p.hour,p.minute,p.second); one_elem.VALID_DATE.assign(date_value_str); } ifail = AOM_ask_value_date(formtags[0],"tm2_expiry_date",&p); if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month +1,p.day,p.hour,p.minute,p.second); one_elem.INVALID_DATE.assign(date_value_str); } AOM_ask_value_string(formtags[0],"tm2_bzq",&value);//保质期 if(value!=NULL){ one_elem.SHELF_LIFE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SHELF_LIFE.assign(""); } AOM_ask_value_string(formtags[0],"tm2_lpxtlx",&value);//料品形态类型 if(value!=NULL){ one_elem.SOURCE.assign(value); MEM_free(value); value = NULL; }else{ one_elem.SOURCE.assign(""); } } } one_elem.COMMIT_TIME.assign(nowtime);//COMMIT_TIME one_elem.ORIGINER_SYS.assign("PLM");//IS_STANDARD one_elem.BATCH_ID.assign(batchid);//BATCH_ID one_elem.STATUS.assign("0");//STATUS part_vec.push_back(one_elem); if(formtags!=NULL){ MEM_free(formtags); formtags = NULL; } } } /** * 获取控制计划的信息 */ int jf_control_send_all_item(map rev_map,vector & part_vec, vector &array_vec,string batchid,char * nowtime){ int ifail = ITK_ok; tag_t tag_value = NULLTAG,item = NULLTAG; date_t p; // char * value =NULL; char ** str_values = NULL ,*value = NULL; char item_type[ITEM_type_size_c + 1] =""; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; map::iterator rev_it; int i =0 , j = 0; for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) { int formcount = 0; //int rev_count = 0; //tag_t * rev_tags = NULL; tag_t * formtags = NULL; CONTROL_PLAN_STRUCT one_elem; ITEM_ask_item_of_rev(rev_it->first, &item); //ITKCALL(ITEM_list_all_revs(item,&rev_count,&rev_tags)); ITEM_ask_id(item, item_id); ITEM_ask_name(item, item_name); ITEM_ask_type(item,item_type); if(strcmp(item_type,"TM2_SCKZJH")!=0){ printf("[%s]不属于物料类型\n",item_type); continue; } //ITKCALL( ITEM_ask_rev_id(rev_it->first, rev_id)); //one_elem.REVISION.assign(rev_id); AOM_ask_value_tags(rev_it->first,"IMAN_master_form_rev",&formcount,&formtags); ifail = SA_ask_current_groupmember(&tag_value); if(ifail == ITK_ok) { tag_t user_tag = NULLTAG; SA_ask_groupmember_user(tag_value,&user_tag); if(user_tag!=NULLTAG) { char user_id_temp[SA_user_size_c+1] =""; ifail = SA_ask_user_identifier(user_tag,user_id_temp); one_elem.ORIGINER.assign(user_id_temp); } } int outputColumn = 0; int outputValueCount = 0; char *** outputValue; string batchid = "000"; char keyConnectSQL[100] = "SELECT keyconnect_id_sequence.nextval FROM DUAL"; if(QuerySQLNoInputParam(keyConnectSQL,&outputColumn,&outputValueCount,&outputValue) != -1) { WriteLog("DEBUG: 查询中间表失败\n"); for (int i=0;i>(one_elem,cp_vec)); if(formtags!=NULL){ MEM_free(formtags); formtags = NULL; } } } } /** * 遍历BOM结构(ERP) */ int jf_erp_bom_struct(tag_t bom_line ,map &rev_map,vector &bom_vec,string batchid,char * nowtime ){ int ifail = ITK_ok; char user_id_temp[SA_user_size_c+1] =""; tag_t tag_value; //获取当前登陆用户 ITKCALL(ifail = SA_ask_current_groupmember(&tag_value)); if(ifail == ITK_ok) { tag_t user_tag = NULLTAG; SA_ask_groupmember_user(tag_value,&user_tag); if(user_tag!=NULLTAG) { ITKCALL(ifail = SA_ask_user_identifier(user_tag,user_id_temp)); //one_elem.ORIGINER.assign(user_id_temp); } } // if(bom_line!=NULL){ int child_count = 0; tag_t * child_tags = NULL; char * parent_item_id = NULL; char * parent_rev_id = NULL; //获取父的属性 ITKCALL(ifail = BOM_line_ask_all_child_lines(bom_line,&child_count,&child_tags)); //获取父ID ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_item_item_id",&parent_item_id)); ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_rev_item_revision_id",&parent_rev_id)); //string parent_temp ; //parent_temp.assign(parent_item_id); //添加遍历逻辑 for(int i = 0 ;i < child_count;i++){ char * child_item_id = NULL; char * quantity = NULL; char * sequence_no =NULL; char * child_rev_id = NULL; char * value = NULL; char item_type[ITEM_type_size_c + 1] =""; char * bili = NULL; char * spc = NULL; char * xpc = NULL; char * lt = NULL; tag_t item = NULLTAG; tag_t rev_tag = NULLTAG; ERP_BOM_STRUCT one_elem ; //获取子ID ifail = AOM_ask_value_string(child_tags[i],"bl_item_item_id",&child_item_id); ifail = AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&child_rev_id); ifail = AOM_ask_value_string(child_tags[i],"bl_quantity",&quantity); ifail = AOM_ask_value_string(child_tags[i],"TM2_bl",&bili); ifail = AOM_ask_value_string(child_tags[i],"TM2_spc",&spc); ifail = AOM_ask_value_string(child_tags[i],"TM2_xpc",&xpc); ifail = AOM_ask_value_string(child_tags[i],"tm2_lt_bomline",<); ifail = AOM_ask_value_string(child_tags[i],"bl_sequence_no",&sequence_no); ifail = AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag); ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag,&item)); ITKCALL(ifail = ITEM_ask_type(item,item_type)); ITKCALL(ifail = ITEM_ask_unit_of_measure(item,&tag_value)); if(ifail == ITK_ok&& tag_value!=NULLTAG){ ITKCALL(UOM_ask_symbol(tag_value,&value)); if(value!=NULL){ one_elem.UNIT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.UNIT.assign(""); } }else{ one_elem.UNIT.assign(""); } if(strcmp(item_type,"TM2_powder") == 0 || strcmp(item_type,"TM2_rawpowder") == 0 ){ int form_count = 0; tag_t * form_tags = NULL; ITKCALL(ifail = AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&form_count,&form_tags)); if(ifail == ITK_ok && form_count>0){ date_t p ; ifail = AOM_ask_value_date(form_tags[0],"tm2_effective_date",&p); if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); one_elem.VALID_DATE.assign(date_value_str); } ifail = AOM_ask_value_date(form_tags[0],"tm2_expiry_date",&p); if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); one_elem.INVALID_DATE.assign(date_value_str); } } if(form_tags!=NULL){ MEM_free(form_tags); form_tags = NULL; } } jf_erp_bom_struct(child_tags[i],rev_map,bom_vec,batchid,nowtime); one_elem.P_NUMBER.assign(parent_item_id); one_elem.PART_NUMBER.assign(child_item_id); one_elem.SEQ_NUMBER.assign(sequence_no); one_elem.QUANTITY.assign(quantity); one_elem.P_REV.assign(parent_rev_id);//5 one_elem.PART_REV.assign(child_rev_id); one_elem.SCALE.assign(bili); one_elem.P_DEVIATION.assign(spc); one_elem.M_DEVIATION.assign(xpc); one_elem.BASKET_BOMLINE.assign(lt); char temp_i_str[10] = ""; sprintf(temp_i_str,"%d",i+1); one_elem.BL_SQUENCE.assign(temp_i_str); one_elem.ACQUISITION.assign(""); one_elem.REPLACE_TYPE.assign(""); //one_elem.VALID_DATE.assign("");//10 //one_elem.INVALID_DATE.assign(""); one_elem.BATCH_ID.assign(batchid); one_elem.COMMIT_TIME.assign(nowtime); one_elem.ORIGINER.assign(user_id_temp);//15 one_elem.STATUS.assign("0"); one_elem.ORIGINER_SYS.assign("PLM"); one_elem.ORIGINER.assign(user_id_temp); bom_vec.push_back(one_elem); rev_map.insert(pair(rev_tag,"")); if(child_item_id !=NULL){ MEM_free(child_item_id); child_item_id = NULL; } if(quantity !=NULL){ MEM_free(quantity); quantity = NULL; } if(sequence_no !=NULL){ MEM_free(sequence_no); sequence_no = NULL; } if(child_rev_id !=NULL){ MEM_free(child_rev_id); child_rev_id = NULL; } if(bili !=NULL){ MEM_free(bili); bili = NULL; } if(spc !=NULL){ MEM_free(spc); spc = NULL; } if(xpc !=NULL){ MEM_free(xpc); xpc = NULL; } if(lt !=NULL){ MEM_free(lt); lt = NULL; } } if(child_tags!=NULL ){ MEM_free(child_tags); child_tags = NULL; } if(parent_item_id!=NULL){ MEM_free(parent_item_id); parent_item_id = NULL; } if(parent_rev_id !=NULL){ MEM_free(parent_rev_id); parent_rev_id = NULL; } } } /** * 获取BOM的结构信息(ERP) */ void jf_erp_bom_all_bom(map bom_map,map &rev_map,vector &bom_vec,string batchid,char * nowtime){ int ifail = ITK_ok; //遍历BOM结构 map::iterator bom_it; for( bom_it = bom_map.begin(); bom_it != bom_map.end(); bom_it++ ) { tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; ITKCALL(ifail = BOM_create_window(&bom_window_tag)); ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,bom_it->first,&top_bom_line_tag)); if(top_bom_line_tag != NULLTAG){ ITKCALL(ifail = AOM_ask_value_tag(top_bom_line_tag,"bl_line_object",&rev_tag)); if(rev_tag!=NULLTAG){ ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag,&item_tag)); if(item_tag!=NULLTAG){ int rev_count = 0 ; tag_t * rev_all = NULL; ITKCALL(ifail = ITEM_list_all_revs(item_tag,&rev_count,&rev_all)); if(rev_all!=NULL){ if(rev_count>1){ continue; } MEM_free(rev_all); rev_all = NULL; } } }else{ continue; } //================================================= jf_erp_bom_struct(top_bom_line_tag,rev_map,bom_vec,batchid,nowtime); } ITKCALL(ifail = BOM_close_window(bom_window_tag)); } } /** * 遍历BOM结构(混料) */ int jf_hl_bom_struct(tag_t bom_line ,map &rev_map,vector &bom_vec,string batchid,char * nowtime ){ int ifail = ITK_ok; char user_id_temp[SA_user_size_c+1] =""; tag_t tag_value; //获取当前登陆用户 ITKCALL(ifail = SA_ask_current_groupmember(&tag_value)); if(ifail == ITK_ok) { tag_t user_tag = NULLTAG; SA_ask_groupmember_user(tag_value,&user_tag); if(user_tag!=NULLTAG) { ITKCALL(ifail = SA_ask_user_identifier(user_tag,user_id_temp)); //one_elem.ORIGINER.assign(user_id_temp); } } // if(bom_line!=NULL){ int child_count = 0; tag_t * child_tags = NULL; char * parent_item_id = NULL; char * parent_rev_id = NULL; //获取父的属性 ITKCALL(ifail = BOM_line_ask_all_child_lines(bom_line,&child_count,&child_tags)); //获取父ID ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_item_item_id",&parent_item_id)); ITKCALL(ifail = AOM_ask_value_string(bom_line,"bl_rev_item_revision_id",&parent_rev_id)); //string parent_temp ; //parent_temp.assign(parent_item_id); //添加遍历逻辑 for(int i = 0 ;i < child_count;i++){ char * child_item_id = NULL; char * quantity = NULL; char * sequence_no =NULL; char * child_rev_id = NULL; char * value = NULL; char item_type[ITEM_type_size_c + 1] =""; char * wastage = NULL; char * bili = NULL; char * spc = NULL; char * xpc = NULL; char * lt = NULL; tag_t item = NULLTAG; tag_t rev_tag = NULLTAG; HL_BOM_STRUCT one_elem ; //获取子ID ifail = AOM_ask_value_string(child_tags[i],"bl_item_item_id",&child_item_id); ifail = AOM_ask_value_string(child_tags[i],"bl_rev_item_revision_id",&child_rev_id); ifail = AOM_ask_value_string(child_tags[i],"bl_quantity",&quantity); ifail = AOM_ask_value_string(child_tags[i],"bl_sequence_no",&sequence_no); ifail = AOM_ask_value_tag(child_tags[i],"bl_line_object",&rev_tag); ifail = AOM_ask_value_string(child_tags[i],"TM2_sh",&wastage); ifail = AOM_ask_value_string(child_tags[i],"TM2_bl",&bili); ifail = AOM_ask_value_string(child_tags[i],"TM2_spc",&spc); ifail = AOM_ask_value_string(child_tags[i],"TM2_xpc",&xpc); ifail = AOM_ask_value_string(child_tags[i],"tm2_lt_bomline",<); ifail = ITEM_ask_item_of_rev(rev_tag,&item); ifail = ITEM_ask_type(item,item_type); ifail = ITEM_ask_unit_of_measure(item,&tag_value); if(ifail == ITK_ok&& tag_value!=NULLTAG){ ITKCALL(UOM_ask_symbol(tag_value,&value)); if(value!=NULL){ one_elem.UNIT.assign(value); MEM_free(value); value = NULL; }else{ one_elem.UNIT.assign(""); } }else{ one_elem.UNIT.assign(""); } if(strcmp(item_type,"TM2_powder") == 0 || strcmp(item_type,"TM2_rawpowder") == 0 ){ int form_count = 0; tag_t * form_tags = NULL; ITKCALL(ifail = AOM_ask_value_tags(rev_tag,"IMAN_master_form_rev",&form_count,&form_tags)); if(ifail == ITK_ok && form_count>0){ date_t p ; ITKCALL(ifail = AOM_ask_value_date(form_tags[0],"tm2_effective_date",&p)); if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); one_elem.VALID_DATE.assign(date_value_str); } ITKCALL(ifail = AOM_ask_value_date(form_tags[0],"tm2_expiry_date",&p)); if(ifail==ITK_ok&&p.year!=0){//CREATE_DATE char date_value_str[128] = ""; sprintf(date_value_str,"%04d-%02d-%02d %02d:%02d:%02d",p.year,p.month ,p.day,p.hour,p.minute,p.second); one_elem.INVALID_DATE.assign(date_value_str); } } if(form_tags!=NULL){ MEM_free(form_tags); form_tags = NULL; } } jf_hl_bom_struct(child_tags[i],rev_map,bom_vec,batchid,nowtime); one_elem.P_NUMBER.assign(parent_item_id); one_elem.PART_NUMBER.assign(child_item_id); one_elem.SEQ_NUMBER.assign(sequence_no); one_elem.QUANTITY.assign(quantity); one_elem.P_REV.assign(parent_rev_id);//5 one_elem.PART_REV.assign(child_rev_id); one_elem.ACQUISITION.assign(""); one_elem.REPLACE_TYPE.assign(""); //one_elem.VALID_DATE.assign("");//10 //one_elem.INVALID_DATE.assign(""); one_elem.BATCH_ID.assign(batchid); one_elem.COMMIT_TIME.assign(nowtime); one_elem.ORIGINER.assign(user_id_temp);//15 one_elem.STATUS.assign("0"); one_elem.ORIGINER_SYS.assign("PLM"); one_elem.ORIGINER.assign(user_id_temp); one_elem.WASTAGE.assign(wastage); one_elem.BASKET_BOMLINE.assign(lt); char temp_i_str[10] = ""; sprintf(temp_i_str,"%d",i+1); one_elem.BL_SQUENCE.assign(temp_i_str); one_elem.SCALE.assign(bili); one_elem.P_DEVIATION.assign(spc); one_elem.M_DEVIATION.assign(xpc); bom_vec.push_back(one_elem); rev_map.insert(pair(rev_tag,"")); if(child_item_id !=NULL){ MEM_free(child_item_id); child_item_id = NULL; } if(lt !=NULL){ MEM_free(lt); lt = NULL; } if(quantity !=NULL){ MEM_free(quantity); quantity = NULL; } if(sequence_no !=NULL){ MEM_free(sequence_no); sequence_no = NULL; } if(child_rev_id !=NULL){ MEM_free(child_rev_id); child_rev_id = NULL; } if(wastage!=NULL){ MEM_free(wastage); wastage = NULL; } if(bili !=NULL) { MEM_free(bili); bili = NULL; } if(spc !=NULL) { MEM_free(spc); spc = NULL; } if(xpc !=NULL) { MEM_free(xpc); xpc = NULL; } } if(child_tags!=NULL ){ MEM_free(child_tags); child_tags = NULL; } if(parent_item_id!=NULL){ MEM_free(parent_item_id); parent_item_id = NULL; } if(parent_rev_id !=NULL){ MEM_free(parent_rev_id); parent_rev_id = NULL; } } } /** * 获取BOM的结构信息(混料) */ void jf_hl_bom_all_bom(map bom_map,map &rev_map,vector &bom_vec,string batchid,char * nowtime){ int ifail = ITK_ok; //遍历BOM结构 map::iterator bom_it; for( bom_it = bom_map.begin(); bom_it != bom_map.end(); bom_it++ ) { tag_t bom_window_tag = NULLTAG,top_bom_line_tag =NULLTAG,rev_tag = NULLTAG,item_tag =NULLTAG; ITKCALL(ifail = BOM_create_window(&bom_window_tag)); ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag,bom_it->first,&top_bom_line_tag)); if(top_bom_line_tag != NULLTAG){ ITKCALL(ifail = AOM_ask_value_tag(top_bom_line_tag,"bl_line_object",&rev_tag)); if(rev_tag!=NULLTAG){ ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag,&item_tag)); if(item_tag!=NULLTAG){ //做类型判断 int rev_count = 0 ; tag_t * rev_all = NULL; ITKCALL(ifail = ITEM_list_all_revs(item_tag,&rev_count,&rev_all)); if(rev_all!=NULL){ /*if(rev_count>1){ continue; }*/ MEM_free(rev_all); rev_all = NULL; } } }else{ continue; } //================================================= jf_hl_bom_struct(top_bom_line_tag,rev_map,bom_vec,batchid,nowtime); } ITKCALL(ifail = BOM_close_window(bom_window_tag)); } } /** * 获取BOM结构的数据(ERP) * */ int jf_erp_send_boms(EPM_action_message_t msg){ int ifail = ITK_ok; ECHO("=========================================================\n"); ECHO("向ERP传递BOM 执行开始\n"); ECHO("=========================================================\n"); int rcode = 0, debug = 0; //参数相关 char *value = NULL; char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; BOOL bypass = FALSE; int arg_cnt = 0; //流程节点相关 tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; int sub_task_count = 0; char root_task_name[128]="",task_name[128] = ""; int att_cnt = 0; tag_t *attachments = NULL; char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; ////循环内部变量 tag_t cur_task = NULLTAG; //循环变量 int i=0, j=0, k=0, count = 0, n = 0; //节点信息变量 //char sign_info[2048]=""; //节点循环处理变量 tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; int form_count = 0; tag_t *form_list = NULL,master_form = NULLTAG; //char *qrySQL; vector pref_vec; map rev_map; map bom_map; vector part_vec; vector bom_vec; getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); //-------------------- //vector erp_cp_name_vec; //vector erp_cp_gg_vec; //vector erp_bcp_name_vec; //vector erp_bcp_gg_vec; //vector erp_ycl_name_vec; //------------------- //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, erp_cp_name_vec); //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, erp_cp_gg_vec); //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, erp_bcp_name_vec); //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, erp_bcp_gg_vec); //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, erp_ycl_name_vec); if( pref_vec.size() != 3) { if (debug) { ECHO("DEBUG: 首选项%s配置不正确\n",PREF_JF3_ERP_DB_Login_Info); } EMH_store_error_s1( EMH_severity_information, ERROR_PREFERENCE_ERROR, PREF_JF3_ERP_DB_Login_Info ); ifail = ERROR_PREFERENCE_ERROR; return ifail; } if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) { ECHO("提示:中间数据表访问失败\n"); EMH_store_error_s1( EMH_severity_information, ERROR_ERP_LOGIN_FAIL, "中间数据表访问失败" ); ifail = ERROR_ERP_LOGIN_FAIL; return ifail; } task_tag = msg.task; if(task_tag == NULLTAG) { ifail = ITK_ok; //goto end_handler; return ifail; } arg_cnt = TC_number_of_arguments(msg.arguments); if (debug) ECHO("\n arg_cnt=%d\n",arg_cnt); ITKCALL(ifail = EPM_setup_parser(task_tag)); if (arg_cnt > 0) { for (i=0;i class_mapping; //get_class_code_mapping(class_mapping); //====================================================== char updatesqlF[256] ="UPDATE ERP_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; char updatesqlBom[256] ="UPDATE ERP_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s'"; char updatesqlBom2[256] ="UPDATE ERP_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s' AND PART_NUMBER='%s'"; //===================获取批次====================== char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; int outputColumn = 0; int outputValueCount = 0; char *** outputValue; string batchid = "000"; if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) { WriteLog("DEBUG: 查询中间表失败\n"); //findError =TRUE; //return ifail; for (int i=0;i(attachments[i],"")); } if(((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))){ bom_map.insert(pair(attachments[i],"")); } } //属性存储 tag_t tag_value = NULLTAG; // char * value =NULL; char ** str_values = NULL; char item_type[ITEM_type_size_c + 1] =""; date_t p; struct tm *pp; time_t now; time(&now); pp = localtime(&now); char nowtime[30] = ""; sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); //--------------------------------传递BOM信息------------------------------------------------- jf_erp_bom_all_bom(bom_map,rev_map,bom_vec,batchid,nowtime); //--------------------------------传递BOM结束------------------------------------------------- //--------------------------------传递所有的item---------------------------------------------- //获取物料属性 jf_erp_send_all_item(rev_map,part_vec,batchid,nowtime); //拼接sql语句 //qrySQL= (char *) calloc (1000,sizeof(char)); char fields[4096]="", insert_values[4096]=""; for( i = 0; i < 28; i++ ) { strcat(fields, erp_part_fields[i]); if( i != 27 ) strcat(fields,","); } //BOM char qrySQLBom[6000] = ""; //qrySQLBom= (char *) calloc (1000,sizeof(char)); char fieldsBOM[4096]="", insert_valuesBOM[4096]=""; for( i = 0; i < 21; i++ ) { strcat(fieldsBOM, erp_bom_fields[i]); if( i != 20 ) strcat(fieldsBOM,","); } /* "SEQ_NUMBER", "P_NUMBER", "P_REV", "PART_NUMBER", "PART_REV",//5 "QUANTITY", "UNIT", "ACQUISITION", "REPLACE_TYPE", "VALID_DATE",//10 "INVALID_DATE", "STATUS", "ORIGINER", "COMMIT_TIME", "BATCH_ID",//15 "ORIGINER_SYS" */ for(i = 0; i < bom_vec.size(); i++ ){ char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlBom, "4", nowtime, bom_vec[i].P_NUMBER, "0" ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlBom, "3", nowtime, bom_vec[i].P_NUMBER, "2" ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); } for(i = 0; i < bom_vec.size(); i++ ){ strcpy(insert_valuesBOM,"'"); strcat(insert_valuesBOM,bom_vec[i].SEQ_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_REV.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].PART_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].PART_REV.c_str());//5 strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].QUANTITY.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].UNIT.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ACQUISITION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].REPLACE_TYPE.c_str()); strcat(insert_valuesBOM,"',to_date('"); strcat(insert_valuesBOM, bom_vec[i].VALID_DATE.c_str());//10 strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_valuesBOM, bom_vec[i].INVALID_DATE.c_str()); strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_valuesBOM, bom_vec[i].STATUS.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ORIGINER.c_str()); strcat(insert_valuesBOM,"',to_date('"); strcat(insert_valuesBOM, bom_vec[i].COMMIT_TIME.c_str()); strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_valuesBOM, bom_vec[i].BATCH_ID.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ORIGINER_SYS.c_str()); strcat(insert_valuesBOM,"','"); //--------------------- strcat(insert_valuesBOM, bom_vec[i].SCALE.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_DEVIATION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].M_DEVIATION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].BASKET_BOMLINE.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].BL_SQUENCE.c_str()); strcat(insert_valuesBOM,"'"); sprintf(qrySQLBom,"insert into %s (%s) values (%s)", "ERP_BOM_INFO_TABLE", fieldsBOM, insert_valuesBOM); ECHO("\n 11qrySQL: %s",qrySQLBom); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlBom2, "1", nowtime, bom_vec[i].P_NUMBER, "0", bom_vec[i].PART_NUMBER ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQLBom)==-1) { ECHO("提示:插入BOM_TABLE表 失败, %s \n",qrySQLBom); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; }else{ ECHO("提示:插入BOM_TABLE表 成功, %s \n",qrySQLBom); } } //ECHO("提示:插入part_vec.size()表 成功, %d \n",part_vec.size()); //rev_map //ECHO("提示:插入rev_map.size()表 成功, %d \n",rev_map.size()); //执行插入 for( i = 0; i < part_vec.size(); i++ ) { strcpy(insert_values,"'"); strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].REVISION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CUSTOMER_PART_NUMBER.c_str());//5 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_MODEL.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SOURCE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SALE_CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].INDICATIVE_PRICE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].APPLICANT.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].PART_TYPE.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].VALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].STATUS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].BATCH_ID.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); strcat(insert_values,"','"); //------------------ strcat(insert_values, part_vec[i].POWDER_NO.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CUSTOMER_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].WEIGHT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BASKET.c_str()); strcat(insert_values,"'"); char qrySQL[5000] = "\0"; sprintf(qrySQL,"insert into %s (%s) values (%s)", "ERP_PART_INFO_TABLE", fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlF, "4", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "0" ); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlF, "3", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "2" ); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入PART_INFO_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } //-------------------------------------------------------------------------------------------- ExecuteSQLNoInputParam("commit"); //ifail= 0; DisConnServer(); ECHO("=========================================================\n"); ECHO("向ERP传递BOM 执行开始 执行结束\n"); ECHO("=========================================================\n"); end_handler: if (ifail != ITK_ok ) { pref_vec.clear(); //DOFREE(qrySQL); DisConnServer(); } return ifail; } /** * 获取BOM结构的数据(混料) * */ int jf_hl_send_boms(EPM_action_message_t msg){ int ifail = ITK_ok; ECHO("=========================================================\n"); ECHO("向HL传递BOM 执行开始\n"); ECHO("=========================================================\n"); int rcode = 0, debug = 0; //参数相关 char *value = NULL; char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; BOOL bypass = FALSE; int arg_cnt = 0; //流程节点相关 tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; int sub_task_count = 0; char root_task_name[128]="",task_name[128] = ""; int att_cnt = 0; tag_t *attachments = NULL; char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; ////循环内部变量 tag_t cur_task = NULLTAG; //循环变量 int i=0, j=0, k=0, count = 0, n = 0; //节点信息变量 //char sign_info[2048]=""; //节点循环处理变量 tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; int form_count = 0; tag_t *form_list = NULL,master_form = NULLTAG; //char *qrySQL; vector pref_vec; map rev_map; map bom_map; vector part_vec; vector bom_vec; getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); //-------------------- //vector erp_cp_name_vec; //vector erp_cp_gg_vec; //vector erp_bcp_name_vec; //vector erp_bcp_gg_vec; //vector erp_ycl_name_vec; //------------------- //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, erp_cp_name_vec); //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, erp_cp_gg_vec); //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, erp_bcp_name_vec); //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, erp_bcp_gg_vec); //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, erp_ycl_name_vec); if( pref_vec.size() != 3) { if (debug) { ECHO("DEBUG: 首选项%s配置不正确\n",PREF_JF3_ERP_DB_Login_Info); } EMH_store_error_s1( EMH_severity_information, ERROR_PREFERENCE_ERROR, PREF_JF3_ERP_DB_Login_Info ); ifail = ERROR_PREFERENCE_ERROR; return ifail; } if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) { ECHO("提示:中间数据表访问失败\n"); EMH_store_error_s1( EMH_severity_information, ERROR_ERP_LOGIN_FAIL, "中间数据表访问失败" ); ifail = ERROR_ERP_LOGIN_FAIL; return ifail; } task_tag = msg.task; if(task_tag == NULLTAG) { ifail = ITK_ok; //goto end_handler; return ifail; } arg_cnt = TC_number_of_arguments(msg.arguments); if (debug) ECHO("\n arg_cnt=%d\n",arg_cnt); ITKCALL(ifail = EPM_setup_parser(task_tag)); if (arg_cnt > 0) { for (i=0;i class_mapping; //get_class_code_mapping(class_mapping); //====================================================== //char updatesqlF[256] ="UPDATE HL_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; char updatesqlF[256] ="UPDATE HL_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; char updatesqlBom[256] ="UPDATE HL_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s'"; char updatesqlBom2[256] ="UPDATE HL_BOM_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE P_NUMBER='%s' AND STATUS='%s' AND PART_NUMBER='%s'"; //===================获取批次====================== char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; int outputColumn = 0; int outputValueCount = 0; char *** outputValue; string batchid = "000"; if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) { WriteLog("DEBUG: 查询中间表失败\n"); //findError =TRUE; //return ifail; for (int i=0;i(attachments[i],"")); } if(((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))) { bom_map.insert(pair(attachments[i],"")); } } //属性存储 tag_t tag_value = NULLTAG; // char * value =NULL; char ** str_values = NULL; char item_type[ITEM_type_size_c + 1] =""; date_t p; struct tm *pp; time_t now; time(&now); pp = localtime(&now); char nowtime[30] = ""; sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); //--------------------------------传递BOM信息------------------------------------------------- jf_hl_bom_all_bom(bom_map,rev_map,bom_vec,batchid,nowtime); //--------------------------------传递BOM结束------------------------------------------------- //--------------------------------传递所有的item---------------------------------------------- //获取物料属性 jf_hl_send_all_item(rev_map,part_vec,batchid,nowtime); //拼接sql语句 //qrySQL= (char *) calloc (1000,sizeof(char)); char fields[4096]="", insert_values[4096]=""; for( i = 0; i < 21; i++ ) { strcat(fields, hl_part_fields[i]); if( i != 20 ) strcat(fields,","); } //BOM char qrySQLBom[6000] = ""; //qrySQLBom= (char *) calloc (1000,sizeof(char)); char fieldsBOM[5000]="", insert_valuesBOM[5000]=""; for( i = 0; i < 22; i++ ) { strcat(fieldsBOM, hl_bom_fields[i]); if( i != 21 ) strcat(fieldsBOM,","); } /* "SEQ_NUMBER", "P_NUMBER", "P_REV", "PART_NUMBER", "PART_REV",//5 "QUANTITY", "UNIT", "ACQUISITION", "REPLACE_TYPE", "VALID_DATE",//10 "INVALID_DATE", "STATUS", "ORIGINER", "COMMIT_TIME", "BATCH_ID",//15 "ORIGINER_SYS" */ for(i = 0; i < bom_vec.size(); i++ ){ char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlBom, "4", nowtime, bom_vec[i].P_NUMBER, "0" ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlBom, "3", nowtime, bom_vec[i].P_NUMBER, "2" ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); } printf("更新BOM完成\n"); for(i = 0; i < bom_vec.size(); i++ ){ strcpy(insert_valuesBOM,"'"); strcat(insert_valuesBOM,bom_vec[i].SEQ_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_REV.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].PART_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].PART_REV.c_str());//5 strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].QUANTITY.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].UNIT.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ACQUISITION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].REPLACE_TYPE.c_str()); strcat(insert_valuesBOM,"',to_date('"); strcat(insert_valuesBOM, bom_vec[i].VALID_DATE.c_str());//10 strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_valuesBOM, bom_vec[i].INVALID_DATE.c_str()); strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_valuesBOM, bom_vec[i].STATUS.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ORIGINER.c_str()); strcat(insert_valuesBOM,"',to_date('"); strcat(insert_valuesBOM, bom_vec[i].COMMIT_TIME.c_str()); strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_valuesBOM, bom_vec[i].BATCH_ID.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ORIGINER_SYS.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].WASTAGE.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].SCALE.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_DEVIATION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].M_DEVIATION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].BASKET_BOMLINE.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].BL_SQUENCE.c_str()); strcat(insert_valuesBOM,"'"); sprintf(qrySQLBom,"insert into %s (%s) values (%s)", "HL_BOM_INFO_TABLE", fieldsBOM, insert_valuesBOM); ECHO("\n 11qrySQL: %s",qrySQLBom); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlBom2, "1", nowtime, bom_vec[i].P_NUMBER, "0", bom_vec[i].PART_NUMBER ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQLBom)==-1) { ECHO("提示:插入BOM_TABLE表 失败, %s \n",qrySQLBom); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; }else{ ECHO("提示:插入BOM_TABLE表 成功, %s \n",qrySQLBom); } } //ECHO("提示:插入part_vec.size()表 成功, %d \n",part_vec.size()); //rev_map //ECHO("提示:插入rev_map.size()表 成功, %d \n",rev_map.size()); //执行插入 for( i = 0; i < part_vec.size(); i++ ) { strcpy(insert_values,"'"); strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].REVISION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SOURCE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].APPLICANT.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].PART_TYPE.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].VALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].STATUS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].BATCH_ID.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BASKET.c_str()); strcat(insert_values,"'"); char qrySQL[5000] = "\0"; sprintf(qrySQL,"insert into %s (%s) values (%s)", "HL_PART_INFO_TABLE", fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlF, "4", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "0" ); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlF, "3", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "2" ); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入PART_INFO_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } //-------------------------------------------------------------------------------------------- ExecuteSQLNoInputParam("commit"); //ifail = 0; DisConnServer(); ECHO("=========================================================\n"); ECHO("向HL传递BOM 执行结束\n"); ECHO("=========================================================\n"); end_handler: if (ifail != ITK_ok ) { pref_vec.clear(); //DOFREE(qrySQL); DisConnServer(); } return ifail; } /** * 传递对象版本到ERP中间表(ERP) */ int jf_erp_send_items(EPM_action_message_t msg) { ECHO("=========================================================\n"); ECHO("向ERP传递物料 执行开始\n"); ECHO("=========================================================\n"); int ifail = ITK_ok, rcode = 0, debug = 0; //参数相关 char *value = NULL; char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; BOOL bypass = FALSE; int arg_cnt = 0; //流程节点相关 tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; int sub_task_count = 0; char root_task_name[128]="",task_name[128] = ""; int att_cnt = 0; tag_t *attachments = NULL; char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; ////循环内部变量 tag_t cur_task = NULLTAG; //循环变量 int i=0, j=0, k=0, count = 0, n = 0; //节点信息变量 //char sign_info[2048]=""; //节点循环处理变量 tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; int form_count = 0; tag_t *form_list = NULL,master_form = NULLTAG; // vector pref_vec; map rev_map; vector part_vec; getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); //vector cp_name_vec; //vector cp_gg_vec; //vector bcp_name_vec; //vector bcp_gg_vec; //vector ycl_name_vec; //------------------- //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, cp_name_vec); //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, cp_gg_vec); //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, bcp_name_vec); //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, bcp_gg_vec); //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, ycl_name_vec); if( pref_vec.size() != 3) { if (debug) { ECHO("DEBUG: 首选项%s配置不正确\n",PREF_JF3_ERP_DB_Login_Info); } EMH_store_error_s1( EMH_severity_information, ERROR_PREFERENCE_ERROR, PREF_JF3_ERP_DB_Login_Info ); ifail = ERROR_PREFERENCE_ERROR; return ifail; } if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) { ECHO("提示:中间数据表访问失败\n"); EMH_store_error_s1( EMH_severity_information, ERROR_ERP_LOGIN_FAIL, "中间数据表访问失败" ); ifail = ERROR_ERP_LOGIN_FAIL; return ifail; } task_tag = msg.task; if(task_tag == NULLTAG) { ifail = ITK_ok; //goto end_handler; return ifail; } arg_cnt = TC_number_of_arguments(msg.arguments); if (debug) ECHO("\n arg_cnt=%d\n",arg_cnt); ITKCALL(ifail = EPM_setup_parser(task_tag)); if (arg_cnt > 0) { for (i=0;i class_mapping; //get_class_code_mapping(class_mapping); //====================================================== char updatesqlF[256] ="UPDATE ERP_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; //===================获取批次====================== char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; int outputColumn = 0; int outputValueCount = 0; char *** outputValue; string batchid = "000"; if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) { printf("DEBUG: 查询中间表失败\n"); //findError =TRUE; //return ifail; for (int i=0;i(attachments[i],"")); } } //属性存储 tag_t tag_value = NULLTAG; // char * value =NULL; char ** str_values = NULL; char item_type[ITEM_type_size_c + 1] =""; date_t p; struct tm *pp; time_t now; time(&now); pp = localtime(&now); char nowtime[30] = ""; sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); //获取物料属性 jf_erp_send_all_item(rev_map,part_vec,batchid,nowtime); //拼接sql语句 //qrySQL= (char *) calloc (500,sizeof(char)); char fields[5000]="", insert_values[5000]=""; for( i = 0; i < 28; i++ ) { strcat(fields, erp_part_fields[i]); if( i != 27 ) strcat(fields,","); } //执行插入 for( i = 0; i < part_vec.size(); i++ ) { strcpy(insert_values,"'"); strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].REVISION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CUSTOMER_PART_NUMBER.c_str());//5 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_MODEL.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SOURCE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SALE_CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].INDICATIVE_PRICE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].APPLICANT.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].PART_TYPE.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].VALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].STATUS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].BATCH_ID.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].POWDER_NO.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CUSTOMER_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].WEIGHT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BASKET.c_str()); strcat(insert_values,"'"); char qrySQL[5000] = "\0"; sprintf(qrySQL,"insert into %s (%s) values (%s)", PART_INFO_TABLE, fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlF, "4", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "0" ); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlF, "3", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "2" ); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入PART_INFO_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } ExecuteSQLNoInputParam("commit"); //ifail = 0; DisConnServer(); ECHO("=========================================================\n"); ECHO("向ERP传递物料 执行结束\n"); ECHO("=========================================================\n"); end_handler: if (ifail != ITK_ok ) { pref_vec.clear(); DisConnServer(); } return ifail; } /** * 传递对象版本到混料中间表(混料) */ int jf_hl_send_items(EPM_action_message_t msg) { ECHO("=========================================================\n"); ECHO("向HL传递物料 执行开始\n"); ECHO("=========================================================\n"); int ifail = ITK_ok, rcode = 0, debug = 0; //参数相关 char *value = NULL; char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; BOOL bypass = FALSE; int arg_cnt = 0; //流程节点相关 tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; int sub_task_count = 0; char root_task_name[128]="",task_name[128] = ""; int att_cnt = 0; tag_t *attachments = NULL; char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; ////循环内部变量 tag_t cur_task = NULLTAG; //循环变量 int i=0, j=0, k=0, count = 0, n = 0; //节点信息变量 //char sign_info[2048]=""; //节点循环处理变量 tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; int form_count = 0; tag_t *form_list = NULL,master_form = NULLTAG; //char *qrySQL; vector pref_vec; map rev_map; vector part_vec; getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); //vector cp_name_vec; //vector cp_gg_vec; //vector bcp_name_vec; //vector bcp_gg_vec; //vector ycl_name_vec; //------------------- //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, cp_name_vec); //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, cp_gg_vec); //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, bcp_name_vec); //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, bcp_gg_vec); //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, ycl_name_vec); if( pref_vec.size() != 3) { if (debug) { ECHO("DEBUG: 首选项%s配置不正确\n",PREF_JF3_ERP_DB_Login_Info); } EMH_store_error_s1( EMH_severity_information, ERROR_PREFERENCE_ERROR, PREF_JF3_ERP_DB_Login_Info ); ifail = ERROR_PREFERENCE_ERROR; return ifail; } if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) { ECHO("提示:中间数据表访问失败\n"); EMH_store_error_s1( EMH_severity_information, ERROR_ERP_LOGIN_FAIL, "中间数据表访问失败" ); ifail = ERROR_ERP_LOGIN_FAIL; return ifail; } task_tag = msg.task; if(task_tag == NULLTAG) { ifail = ITK_ok; //goto end_handler; return ifail; } arg_cnt = TC_number_of_arguments(msg.arguments); if (debug) ECHO("\n arg_cnt=%d\n",arg_cnt); ITKCALL(ifail = EPM_setup_parser(task_tag)); if (arg_cnt > 0) { for (i=0;i class_mapping; //get_class_code_mapping(class_mapping); //====================================================== char updatesqlF[256] ="UPDATE HL_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME=to_date('%s','yyyy-MM-dd HH24:mi:ss') WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; //===================获取批次====================== char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; int outputColumn = 0; int outputValueCount = 0; char *** outputValue; string batchid = "000"; if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) { WriteLog("DEBUG: 查询中间表失败\n"); //findError =TRUE; //return ifail; for (int i=0;i(attachments[i],"")); } } //属性存储 tag_t tag_value = NULLTAG; // char * value =NULL; char ** str_values = NULL; char item_type[ITEM_type_size_c + 1] =""; date_t p; struct tm *pp; time_t now; time(&now); pp = localtime(&now); char nowtime[30] = ""; sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); //获取物料属性 jf_hl_send_all_item(rev_map,part_vec,batchid,nowtime); //拼接sql语句 //qrySQL= (char *) calloc (500,sizeof(char)); char fields[4096]="", insert_values[4096]=""; for( i = 0; i < 21; i++ ) { strcat(fields, hl_part_fields[i]); if( i != 20 ) strcat(fields,","); } //执行插入 for( i = 0; i < part_vec.size(); i++ ) { /* "PART_NAMBER", "PART_NAME", "REVISION", "SPECIFICATION", "CUSTOMER_PART_NUMBER",//5 "PART_MODEL", "STOCK_KEEPING_UNIT", "SHELF_LIFE", "SOURCE", "FORMULA_TYPE",//10 "CLASSIFICATION", "SALE_CLASSIFICATION", "INDICATIVE_PRICE", "APPLICANT", "APPLICANT_DATE",//15 "PART_TYPE", "VALID_DATE", "INVALID_DATE", "STATUS", "ORIGINER",//20 "ERROR_MSG", "COMMIT_TIME", "OPERATE_TIME", "BATCH_ID", "PUID",//25 "ORIGINER_SYS" */ strcpy(insert_values,"'"); strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].REVISION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SOURCE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].APPLICANT.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].PART_TYPE.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].VALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].STATUS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].BATCH_ID.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BASKET.c_str()); strcat(insert_values,"'"); char qrySQL[5000] = "\0"; sprintf(qrySQL,"insert into %s (%s) values (%s)", "HL_PART_INFO_TABLE", fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlF, "4", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "0" ); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlF, "3", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "2" ); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入PART_INFO_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } ExecuteSQLNoInputParam("commit"); //ifail = ITK_ok; DisConnServer(); ECHO("=========================================================\n"); ECHO("向HL传递物料 执行结束\n"); ECHO("=========================================================\n"); end_handler: if (ifail != ITK_ok ) { pref_vec.clear(); //DOFREE(qrySQL); DisConnServer(); } return ifail; } /** * 传递变更到ERP */ int jf_erp_ecn_send_msg(EPM_action_message_t msg){ int ifail = ITK_ok; ECHO("=========================================================\n"); ECHO("向ERP 传递 ECN 执行开始\n"); ECHO("=========================================================\n"); int rcode = 0, debug = 0; //参数相关 char *value = NULL; char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; BOOL bypass = FALSE; int arg_cnt = 0; //流程节点相关 tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; int sub_task_count = 0; char root_task_name[128]="",task_name[128] = ""; int att_cnt = 0; tag_t *attachments = NULL; char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; ////循环内部变量 tag_t cur_task = NULLTAG; //循环变量 int i=0, j=0, k=0, count = 0, n = 0; //节点信息变量 //char sign_info[2048]=""; //节点循环处理变量 tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; int form_count = 0; tag_t *form_list = NULL,master_form = NULLTAG; char *qrySQL; vector pref_vec; map rev_map; map bom_map; vector part_vec; vector bom_vec; getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); //-------------------- //vector erp_cp_name_vec; //vector erp_cp_gg_vec; //vector erp_bcp_name_vec; //vector erp_bcp_gg_vec; //vector erp_ycl_name_vec; //------------------- //getPrefStrings(CUST_CP_NAME_PROPS,TC_preference_site, erp_cp_name_vec); //getPrefStrings(CUST_CP_GG_PROPS,TC_preference_site, erp_cp_gg_vec); //getPrefStrings(CUST_BCP_NAME_PROPS,TC_preference_site, erp_bcp_name_vec); //getPrefStrings(CUST_BCP_GG_PROPS,TC_preference_site, erp_bcp_gg_vec); //getPrefStrings(CUST_YCL_NAME_PROPS,TC_preference_site, erp_ycl_name_vec); if( pref_vec.size() != 3) { if (debug) { ECHO("DEBUG: 首选项%s配置不正确\n",PREF_JF3_ERP_DB_Login_Info); } EMH_store_error_s1( EMH_severity_information, ERROR_PREFERENCE_ERROR, PREF_JF3_ERP_DB_Login_Info ); ifail = ERROR_PREFERENCE_ERROR; return ifail; } if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) { ECHO("提示:中间数据表访问失败\n"); EMH_store_error_s1( EMH_severity_information, ERROR_ERP_LOGIN_FAIL, "中间数据表访问失败" ); ifail = ERROR_ERP_LOGIN_FAIL; return ifail; } task_tag = msg.task; if(task_tag == NULLTAG) { ifail = ITK_ok; //goto end_handler; return ifail; } arg_cnt = TC_number_of_arguments(msg.arguments); if (debug) ECHO("\n arg_cnt=%d\n",arg_cnt); ITKCALL(ifail = EPM_setup_parser(task_tag)); if (arg_cnt > 0) { for (i=0;i class_mapping; get_class_code_mapping(class_mapping); //====================================================== char updatesqlF[256] ="UPDATE ERP_PART_INFO_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE PART_NAMBER='%s' AND REVISION ='%s' AND STATUS='%s'"; char updatesqlBom[256] ="UPDATE ERP_BOM_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE P_NUMBER='%s' AND STATUS='%s'"; char updatesqlBom2[256] ="UPDATE ERP_BOM_TABLE SET STATUS='%s',OPERATE_TIME='%s' WHERE P_NUMBER='%s' AND STATUS='%s' AND PART_NUMBER='%s'"; //===================获取批次====================== char batchidqrySQL[100] = "SELECT batch_id_sequence.nextval FROM DUAL"; int outputColumn = 0; int outputValueCount = 0; char *** outputValue; string batchid = "000"; if(QuerySQLNoInputParam(batchidqrySQL,&outputColumn,&outputValueCount,&outputValue) != -1) { WriteLog("DEBUG: 查询中间表失败\n"); //findError =TRUE; //return ifail; for (int i=0;i(attachments[i],"")); } if((strstr(type_class,"Revision") == NULL) && (strstr(type_class,"revision") == NULL) &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) && ((strstr(type_class,"BOM") !=NULL) || (strstr(type_class,"bom") !=NULL) || (strstr(type_class,"Bom") != NULL))) { bom_map.insert(pair(attachments[i],"")); } } //属性存储 tag_t tag_value = NULLTAG; // char * value =NULL; char ** str_values = NULL; char item_type[ITEM_type_size_c + 1] =""; date_t p; struct tm *pp; time_t now; time(&now); pp = localtime(&now); char nowtime[30] = ""; sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); //--------------------------------传递BOM信息------------------------------------------------- jf_erp_bom_all_bom(bom_map,rev_map,bom_vec,batchid,nowtime); //--------------------------------传递BOM结束------------------------------------------------- //--------------------------------传递所有的item---------------------------------------------- //获取物料属性 jf_erp_send_all_item(rev_map,part_vec,batchid,nowtime); //拼接sql语句 qrySQL= (char *) calloc (1000,sizeof(char)); char fields[4096]="", insert_values[4096]=""; for( i = 0; i < 28; i++ ) { strcat(fields, erp_part_fields[i]); if( i != 27 ) strcat(fields,","); } //BOM char * qrySQLBom = NULL; qrySQLBom= (char *) calloc (1000,sizeof(char)); char fieldsBOM[4096]="", insert_valuesBOM[4096]=""; for( i = 0; i < 21; i++ ) { strcat(fieldsBOM, erp_bom_fields[i]); if( i != 20 ) strcat(fieldsBOM,","); } /* "SEQ_NUMBER", "P_NUMBER", "P_REV", "PART_NUMBER", "PART_REV",//5 "QUANTITY", "UNIT", "ACQUISITION", "REPLACE_TYPE", "VALID_DATE",//10 "INVALID_DATE", "STATUS", "ORIGINER", "COMMIT_TIME", "BATCH_ID",//15 "ORIGINER_SYS" */ for(i = 0; i < bom_vec.size(); i++ ){ char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlBom, "4", nowtime, bom_vec[i].P_NUMBER, "0" ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlBom, "3", nowtime, bom_vec[i].P_NUMBER, "2" ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); } for(i = 0; i < bom_vec.size(); i++ ){ strcpy(insert_valuesBOM,"'"); strcat(insert_valuesBOM,bom_vec[i].SEQ_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].P_REV.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].PART_NUMBER.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].PART_REV.c_str());//5 strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].QUANTITY.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].UNIT.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ACQUISITION.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].REPLACE_TYPE.c_str()); strcat(insert_valuesBOM,"',to_date('"); strcat(insert_valuesBOM, bom_vec[i].VALID_DATE.c_str());//10 strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_valuesBOM, bom_vec[i].INVALID_DATE.c_str()); strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_valuesBOM, bom_vec[i].STATUS.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ORIGINER.c_str()); strcat(insert_valuesBOM,"',to_date('"); strcat(insert_valuesBOM, bom_vec[i].COMMIT_TIME.c_str()); strcat(insert_valuesBOM,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_valuesBOM, bom_vec[i].BATCH_ID.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].ORIGINER_SYS.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].BASKET_BOMLINE.c_str()); strcat(insert_valuesBOM,"','"); strcat(insert_valuesBOM, bom_vec[i].BL_SQUENCE.c_str()); strcat(insert_valuesBOM,"'"); sprintf(qrySQLBom,"insert into %s (%s) values (%s)", "ERP_BOM_INFO_TABLE", fieldsBOM, insert_valuesBOM); ECHO("\n 11qrySQL: %s",qrySQLBom); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlBom2, "1", nowtime, bom_vec[i].P_NUMBER, "0", bom_vec[i].PART_NUMBER ); ECHO("\nupdateqrySQL: %s",updateSQL); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQLBom)==-1) { ECHO("提示:插入BOM_TABLE表 失败, %s \n",qrySQLBom); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; }else{ ECHO("提示:插入BOM_TABLE表 成功, %s \n",qrySQLBom); } } //ECHO("提示:插入part_vec.size()表 成功, %d \n",part_vec.size()); //rev_map //ECHO("提示:插入rev_map.size()表 成功, %d \n",rev_map.size()); //执行插入 for( i = 0; i < part_vec.size(); i++ ) { strcpy(insert_values,"'"); strcat(insert_values, part_vec[i].PART_NAMBER.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_NAME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].REVISION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SPECIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CUSTOMER_PART_NUMBER.c_str());//5 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_MODEL.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].STOCK_KEEPING_UNIT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SHELF_LIFE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SOURCE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].FORMULA_TYPE.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SALE_CLASSIFICATION.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].INDICATIVE_PRICE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].APPLICANT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].APPLICANT_DATE.c_str());//15 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PART_TYPE.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].VALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),to_date('"); strcat(insert_values, part_vec[i].INVALID_DATE.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].STATUS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER.c_str());//20 strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].BATCH_ID.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BLENDING_WAY.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BASKET.c_str()); strcat(insert_values,"'"); sprintf(qrySQL,"insert into %s (%s) values (%s)", PART_INFO_TABLE, fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlF, "4", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "0" ); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlF, "3", nowtime, part_vec[i].PART_NAMBER, part_vec[i].REVISION, "2" ); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入PART_INFO_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } //-------------------------------------------------------------------------------------------- ExecuteSQLNoInputParam("commit"); ifail = 0; DisConnServer(); ECHO("=========================================================\n"); ECHO("向ERP传递 ECN 执行结束\n"); ECHO("=========================================================\n"); end_handler: if (ifail != ITK_ok ) { pref_vec.clear(); DOFREE(qrySQL); DisConnServer(); } return ifail; } /** * 传递对象版本到混料中间表(混料) */ int jf_control_plan_send(EPM_action_message_t msg){ ECHO("=========================================================\n"); ECHO("传递控制计划 执行开始\n"); ECHO("=========================================================\n"); int ifail = ITK_ok, rcode = 0, debug = 0; //参数相关 char *value = NULL; char *argflag =NULL,*argvalue=NULL ,*arg = NULL, *flag = NULL; BOOL bypass = FALSE; int arg_cnt = 0; //流程节点相关 tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, type_tag = NULLTAG, rev_rule_tag = NULLTAG; int sub_task_count = 0; char root_task_name[128]="",task_name[128] = ""; int att_cnt = 0; tag_t *attachments = NULL; char tgt_type[WSO_name_size_c+1]="",type_class[TCTYPE_class_name_size_c+1]=""; ////循环内部变量 tag_t cur_task = NULLTAG; //循环变量 int i=0, j=0, k=0, count = 0, n = 0; //节点信息变量 //char sign_info[2048]=""; //节点循环处理变量 tag_t item = NULLTAG, itemrevision = NULLTAG,master_form_rel_type = NULLTAG,rev_master_tag = NULLTAG; char rev_id[ITEM_id_size_c+1]=""; char item_id[ITEM_id_size_c+1]="",item_name[ITEM_id_size_c+1]=""; int form_count = 0; tag_t *form_list = NULL,master_form = NULLTAG; //char *qrySQL; vector pref_vec; map rev_map; vector part_vec; vector array_vec; getPrefStrings(PREF_JF3_ERP_DB_Login_Info,TC_preference_site, pref_vec); if( pref_vec.size() != 3) { if (debug) { ECHO("DEBUG: 首选项%s配置不正确\n",PREF_JF3_ERP_DB_Login_Info); } EMH_store_error_s1( EMH_severity_information, ERROR_PREFERENCE_ERROR, PREF_JF3_ERP_DB_Login_Info ); ifail = ERROR_PREFERENCE_ERROR; return ifail; } if(ConnServer((char*)pref_vec[0].c_str(),(char*)pref_vec[1].c_str(),(char*)pref_vec[2].c_str()) == -1) { ECHO("提示:中间数据表访问失败\n"); EMH_store_error_s1( EMH_severity_information, ERROR_ERP_LOGIN_FAIL, "中间数据表访问失败" ); ifail = ERROR_ERP_LOGIN_FAIL; return ifail; } task_tag = msg.task; if(task_tag == NULLTAG) { ifail = ITK_ok; //goto end_handler; return ifail; } arg_cnt = TC_number_of_arguments(msg.arguments); if (debug) ECHO("\n arg_cnt=%d\n",arg_cnt); ITKCALL(ifail = EPM_setup_parser(task_tag)); if (arg_cnt > 0) { for (i=0;i(attachments[i],"")); } } } //属性存储 tag_t tag_value = NULLTAG; // char * value =NULL; char ** str_values = NULL; char item_type[ITEM_type_size_c + 1] =""; date_t p; struct tm *pp; time_t now; time(&now); pp = localtime(&now); char nowtime[30] = ""; sprintf(nowtime,"%04d-%02d-%02d %02d:%02d:%02d",1900+pp->tm_year,pp->tm_mon+1 ,pp->tm_mday,pp->tm_hour,pp->tm_min,pp->tm_sec); //获取物料属性 jf_control_send_all_item(rev_map,part_vec,array_vec,batchid,nowtime); //拼接sql语句 //qrySQL= (char *) calloc (500,sizeof(char)); char fields[4096]="", insert_values[4096]=""; for( i = 0; i < 29; i++ ) { strcat(fields, control_plan_fields[i]); if( i != 28 ) strcat(fields,","); } //执行插入 //map>::iterator itNote; for( i = 0;i< part_vec.size();i++ ) { strcpy(insert_values,"'"); strcat(insert_values, part_vec[i].STAGE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].KEY_PHONE.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].cust_approval.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].KEY_CONTACT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].DATE_ORIG.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].DATE_REV.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].PLAN_NO.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].SOR.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CORE_TEAM.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Customer_engineering_approval.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Part_Num_Latest_change.c_str());//15 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Supplier_Plant_Approval.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Customer_quality_approval.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Customer_Part_Number.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Part_Name_Description.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Supplier_Plant.c_str());//20 strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Supplier_Code.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Mode_year.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Other_approval_1.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].Other_approval_2.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].KEY_CONNECT.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].CHANGE_LEV.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].STATUS.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ERROR_MSG.c_str()); strcat(insert_values,"',to_date('"); strcat(insert_values, part_vec[i].COMMIT_TIME.c_str()); strcat(insert_values,"','yyyy-MM-dd HH24:mi:ss'),'"); strcat(insert_values, part_vec[i].OPERATE_TIME.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].BATCH_ID.c_str()); strcat(insert_values,"','"); strcat(insert_values, part_vec[i].ORIGINER_SYS.c_str()); strcat(insert_values,"'"); char qrySQL[5000] = "\0"; sprintf(qrySQL,"insert into %s (%s) values (%s)", "CP_INFO_TABLE", fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); char updateSQL[300] ="\0"; sprintf(updateSQL,updatesqlF, "4", nowtime, part_vec[i].PLAN_NO.c_str(), "0" ); ExecuteSQLNoInputParam(updateSQL); sprintf(updateSQL,updatesqlF, "3", nowtime, part_vec[i].PLAN_NO.c_str(), "2" ); ExecuteSQLNoInputParam(updateSQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入CP_INFO_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } strcpy(fields,""); for( i = 0; i < 20; i++ ) { strcat(fields, comtrol_plan_array_fields[i]); if( i != 19 ) strcat(fields,","); } for( i = 0;i< array_vec.size();i++ ) { strcpy(insert_values,"'"); strcat(insert_values, array_vec[i].Part_Process_Number.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Process_Name_Description.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Machine_Device.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Characteristics_Bubbled.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Characteristics_Size.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Characteristics_No.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Characteristics_Product.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Characteristics_Process.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Special_Char_Class.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Specification_Tolerance.c_str());//10 strcat(insert_values,"','"); strcat(insert_values, array_vec[i].UP_SPEC.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].DOWN_SPEC.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Evaluation_Measurement.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Sample_Size.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Sample_Freq.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Resp.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Control_Method.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Operation_criteria.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].Reaction_Plan.c_str()); strcat(insert_values,"','"); strcat(insert_values, array_vec[i].KEY_CONNECT.c_str()); strcat(insert_values,"'"); char qrySQL[5000] = "\0"; sprintf(qrySQL,"insert into %s (%s) values (%s)", "CP_INFO_ARRAY_TABLE", fields, insert_values); ECHO("\nqrySQL: %s",qrySQL); if(ExecuteSQLNoInputParam(qrySQL)==-1) { ECHO("提示:插入CP_INFO_ARRAY_TABLE表 失败, %s \n",qrySQL); ifail = ERROR_OCI_FAIL; EMH_store_error(EMH_severity_error, ifail); goto end_handler; } } ExecuteSQLNoInputParam("commit"); //ifail = ITK_ok; DisConnServer(); ECHO("=========================================================\n"); ECHO("传递控制计划 执行结束\n"); ECHO("=========================================================\n"); end_handler: if (ifail != ITK_ok ) { pref_vec.clear(); //DOFREE(qrySQL); DisConnServer(); } return ifail; //return 0; }; /** *传入数据集,就下载数据集,调用JAVA程序插入图片 * */ int insert_pdf(tag_t dataset, char *ext) { printf("insert_pdf \r\n"); tag_t spec_dataset_rev = NULLTAG, ref_object = NULLTAG; AE_reference_type_t reference_type; ITKCALL(AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev)); char ref_name[WSO_name_size_c + 1] = "PDF_Reference"; ITKCALL(AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object)); if(reference_type == AE_PART_OF) { char pathname[SS_MAXPATHLEN] = ""; ITKCALL(IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname)); char origin_file_name[IMF_filename_size_c + 1] = ""; ITKCALL(IMF_ask_original_file_name(ref_object, origin_file_name)); char new_ds_name[WSO_name_size_c + 1] = ""; char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); char *temp_dir = getenv("temp"); temp_dir="E:\\TEMP"; char * tc_root_dir = getenv("tc_root"); char img_file[SS_MAXPATHLEN] = ""; char temp_file[SS_MAXPATHLEN] = ""; char temp_file2[SS_MAXPATHLEN] = ""; char jar_file[SS_MAXPATHLEN] = ""; //----------------------------- strcpy(temp_file, temp_dir); strcat(temp_file, "\\"); strcat(temp_file, new_file_name); //-------------------------- strcpy(temp_file2, temp_dir); strcat(temp_file2, "\\"); strcat(temp_file2, new_file_name); strcat(temp_file2, ".pdf"); //----------------------------- strcpy(img_file, tc_root_dir); strcat(img_file, "\\bin\\"); strcat(img_file, "jfom_img.tif"); //----------------------------- strcpy(jar_file, tc_root_dir); strcat(jar_file, "\\bin\\"); strcat(jar_file, "insert_pdf.jar"); ITKCALL(IMF_export_file(ref_object, temp_file)); ITKCALL(IMF_export_file(ref_object, temp_file2)); int iCnt; char *user_lib_env,pTempStr[500]; char local_path[MAX_PATH] = ""; char cmd[256] = ""; //strcpy( cmd, user_lib_env ); strcpy( cmd, "java -jar \"" ); strcat( cmd, jar_file ); strcat( cmd, "\" \"" ); strcat( cmd, temp_file2 ); strcat( cmd, "\" \"" ); strcat( cmd, temp_file ); strcat( cmd, "\" \"" ); strcat( cmd, img_file ); strcat( cmd, "\"" ); printf( "\n%s\n",cmd ); system( cmd ); //strcpy(user_lib_env, local_path); tag_t new_file_tag = NULLTAG; IMF_file_t file_descriptor; ITKCALL(IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor)); ITKCALL(IMF_set_original_file_name(new_file_tag, origin_file_name)); ITKCALL(IMF_close_file(file_descriptor)); ITKCALL(AOM_save(new_file_tag)); ITKCALL(AOM_unlock(new_file_tag)); ITKCALL(AOM_lock(spec_dataset_rev)); ITKCALL(AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object)); ITKCALL(AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag)); ITKCALL(AOM_save(spec_dataset_rev)); ITKCALL(AOM_unlock(spec_dataset_rev)); //free(new_file_name); //free(temp_dir); } return ITK_ok; } /** *在PDF中插入图片handler * */ int jf_insert_img_pdf(EPM_action_message_t msg) { //变量定义 POM_AM__set_application_bypass(true); int ifail = ITK_ok,att_cnt = 0, i = 0; tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, *attachments = NULL, relation_type = NULLTAG, type_tag =NULLTAG; char tgt_type[WSO_name_size_c+1]="", type_class[TCTYPE_class_name_size_c+1]="", rev_type[ITEM_type_size_c+1]=""; map rev_map; //获取流程 task_tag = msg.task; //获取根流程 ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); //获取流程目标对象 ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); for( i = 0; i < att_cnt; i++ ) { ITKCALL(TCTYPE_ask_object_type(attachments[i], &type_tag)); ITKCALL(ifail = TCTYPE_ask_class_name(type_tag, type_class)); ECHO("type_class : %s \r\n",type_class); //过滤掉非版本对象 if (((strstr(type_class,"Revision") != NULL) || (strstr(type_class,"revision") != NULL)) &&(strstr(type_class,"Master") == NULL) &&(strstr(type_class,"master") == NULL) && (strstr(type_class,"BOM") ==NULL) && (strstr(type_class,"bom") ==NULL) && (strstr(type_class,"Bom") == NULL)) { //将版本对象写入到缓存 rev_map.insert(pair(attachments[i],"")); } } // ITKCALL(GRM_find_relation_type(IMAN_specification_rtype, &relation_type )); //ITKCALL(GRM_create_relation(pTags[i],new_dataset,relation_type,NULLTAG,&relation)); //遍历版本对象 map::iterator rev_it; for( rev_it = rev_map.begin(); rev_it != rev_map.end(); rev_it++ ) { ITKCALL(ITEM_ask_rev_type(rev_it->first,rev_type)); tag_t * second_tags = NULL; int second_tags_count = 0; //if(strcmp(rev_type,"JF3_CPRevision")==0){ if(true){ //添加数据集下载逻辑 ITKCALL(GRM_list_secondary_objects_only(rev_it->first,relation_type,&second_tags_count,&second_tags)); for( i = 0 ;i < second_tags_count;i++){ char * second_tag_type = NULL; ITKCALL(AOM_ask_value_string(second_tags[i],"object_type",&second_tag_type)); printf(" second_tag_type => %s \r\n",second_tag_type); if(strcmp(second_tag_type,"PDF")==0){ insert_pdf(second_tags[i],"pdf"); } if(second_tag_type!=NULL){ MEM_free(second_tag_type); second_tag_type = NULL; } } } if(second_tags !=NULL){ MEM_free(second_tags); second_tags =NULL; } } if(attachments!=NULL){ MEM_free(attachments); attachments = NULL; } POM_AM__set_application_bypass(false); return ifail; }