#include "util.h" int erp_save(tag_t task,string key_str,string pref1,string pref2) { printf("start kl_erp_save\n"); tag_t *atts, root_task; int att_cnt; EPM_ask_root_task(task, &root_task); EPM_ask_attachments(root_task, EPM_target_attachment, &att_cnt, &atts); int pref_cnt, pref_cnt2; char **pref_vals, **pref_vals2; PREF_ask_char_values(pref1.c_str(), &pref_cnt, &pref_vals); PREF_ask_char_values(pref2.c_str(), &pref_cnt2, &pref_vals2); vector configs; Document doc0, doc1, doc2, doc3, doc4, doc5,doc6,doc7; vector vec; vec.push_back(&doc0); vec.push_back(&doc1); vec.push_back(&doc2); vec.push_back(&doc3); vec.push_back(&doc4); vec.push_back(&doc5); vec.push_back(&doc6); vec.push_back(&doc7); for (auto i = 0; iParse(pref_vals2[i]); configs.push_back(vec[i]); } string ip = pref_vals[0]; string token_url = ip + "/K3API/Token/Create?authorityCode=" + pref_vals[1]; Testclass ^class1 = gcnew Testclass(); System::String ^key = convert_to_cstring(key_str.c_str()); string token = ConvertToString(class1->GetToken(convert_to_cstring(token_url.c_str()),key)); printf("token:%s\n", token.c_str()); string s_url = ip + "/K3API/Material/Save?token=" + token; string c_url = ip + "/K3API/Material/GetDetail?token=" + token; System::String ^save_url = convert_to_cstring(s_url.c_str()); System::String ^check_url = convert_to_cstring(c_url.c_str()); string u_url = ip + "/K3API/Material/Update?token=" + token; System::String ^update_url = convert_to_cstring(u_url.c_str()); POM_AM__set_application_bypass(true); printf("att_cnt:%d\n", att_cnt); for (auto i = 0; i check_writer(check_sb); bool is_update = true; check_doc.Accept(check_writer); string check_result = ConvertToString(class1->Send(check_url, convert_to_cstring(check_sb.GetString()), key)); printf("check_result:%s\n", check_result.c_str()); if(check_result[0]!='s') { LERROR << "check error:" << check_result; printf("check error\n"); break; } if(check_result.find("不存在或是没有访问权限")!=-1) { is_update = false; } doc.SetObject(); Document::AllocatorType &al = doc.GetAllocator(); Value data(kObjectType); printf("is_update:%d\n", is_update); if(is_update) { string syzt = get_val(atts[i], "kl3_syzt"); if (syzt == "禁用") continue; if (type != 1 && type != 2 && type != 6) { data.AddMember("Fmaund", 0, al); } else { Value maund(kObjectType); string zldw = get_val(atts[i], "kl3_zldw"); maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al); maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al); data.AddMember("Fmaund", maund, al); } printf("111\n"); Value manager(kObjectType); manager.AddMember("FName", Value().SetString(pref_vals[2], al), al); manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al); data.AddMember("FDSManagerID", manager, al); data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al); data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al); // if(type<3||type>5) // { // data.AddMember("FKFPeriod", Value().SetString(get_val(atts[i], "kl3_bzqt"), al), al); // } // data.AddMember("FISKFPeriod", true, al); data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al); data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al); data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al); string jldwz = get_val(atts[i], "kl3_jldwz"); int jldw_index = jldwz.find('/'); jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz; Value &jldw_val = (*configs[4])[jldwz.c_str()]; if (!jldw_val.IsNull()) { Value jldw(kObjectType); jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al); jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al); data.AddMember("FUnitGroupID", jldw, al); data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al); data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al); data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al); data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al); data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al); } printf("222\n"); if(type!=2){ data.AddMember("FLength", 0, al); data.AddMember("FWidth", 0, al); data.AddMember("FHeight", 0, al); data.AddMember("FSize", 0, al); }else{ int int_val; double db_val; char *ch_val; AOM_ask_value_int(atts[i],"kl3_chang",&int_val); db_val=(double)int_val/1000; data.AddMember("FLength", db_val, al); AOM_ask_value_int(atts[i],"kl3_kuan",&int_val); db_val=(double)int_val/1000; data.AddMember("FWidth", db_val, al); AOM_ask_value_int(atts[i],"kl3_gao",&int_val); db_val=(double)int_val/1000; data.AddMember("FHeight", db_val, al); AOM_ask_value_string(atts[i],"kl3_dxtj",&ch_val); db_val=atof(ch_val); data.AddMember("FSize", db_val, al); } switch (type) { case 0: // data.AddMember("FDefaultLoc", 651, al); // break; case 1: case 2: data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al); break; case 3: case 5: data.AddMember("FDefaultLoc", 666, al); break; case 4: data.AddMember("FDefaultLoc", 667, al); break; default: break; } if (type == 0) { data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al); data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al); data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al); data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al); } if (type == 0) { string inspect = get_val(atts[i], "kl3_cgjyfs"); int inspect_val = 353; if (inspect == "全检") { inspect_val = 351; } else if (inspect == "免检") { inspect_val = 352; }else if (inspect == "抽检") { inspect_val = 353; } data.AddMember("FInspectionLevel", inspect_val, al); } if(type==1||type==2||type==6) { string ly_val = get_val(atts[i], "kl3_ly"); Value source_val(kObjectType); if(ly_val=="注塑制造部") { source_val.AddMember("FName", "注塑制造部", al); source_val.AddMember("FNumber", "13", al); }else if(ly_val=="胶条制造部") { source_val.AddMember("FName", "胶条制造部", al); source_val.AddMember("FNumber", "14", al); }else { source_val.AddMember("FName", "", al); source_val.AddMember("FNumber", "", al); } data.AddMember("FSource", source_val, al); } if (type == 2) { Value type_id(kObjectType); string wlfl = get_val(atts[i], "kl3_wlfl"); type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al); type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al); data.AddMember("FTypeID", type_id, al); data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al); data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al); data.AddMember("F_113", Value().SetString(get_val(atts[i], "kl3_cx"), al), al); data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al); data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al); data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al); data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al); data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al); data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al); data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al); string s = "是"; data.AddMember("F_136", s== get_val(atts[i], "kl3_sfyz")?1:0, al); data.AddMember("F_138", s == get_val(atts[i], "kl3_sfsbz") ? 1 : 0, al); data.AddMember("F_139", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al); data.AddMember("F_142", Value().SetString(get_val(atts[i], "kl3_MOQ"), al), al); data.AddMember("F_143", Value().SetString(get_val(atts[i], "kl3_ydcgzq"), al), al); data.AddMember("F_144", Value().SetString(get_val(atts[i], "kl3_dxzl"), al), al); } if (type == 4) { data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al); data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al); data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al); } Value data2(kObjectType); data2.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); data2.AddMember("Data", data, al); doc.AddMember("Data", data2, al); }else { data.AddMember("Fdeleted", 0, al); data.AddMember("FTrack", 76, al); data.AddMember("FDefaultReadyLoc", 664, al); data.AddMember("FCostProject", 57, al); data.AddMember("FPlanMode", 14036, al); data.AddMember("FOrderTrategy", 331, al); data.AddMember("FCtrlType", 14039, al); data.AddMember("FBeforeExpire", 0, al); data.AddMember("FSOChkMde", 352, al); data.AddMember("FWthDrwChkMde", 352, al); data.AddMember("FOtherChkMde", 352, al); data.AddMember("FQtyDecimal", 8, al); data.AddMember("FUseState", 341, al); data.AddMember("FGrossWeight", 0, al); data.AddMember("FNetWeight", 0, al); if(type==1) { data.AddMember("FPriceDecimal", 10, al); }else if(type==2) { data.AddMember("FPriceDecimal", 6, al); }else { data.AddMember("FPriceDecimal", 4, al); } if(type==1||type==2||type==6) { string ly_val = get_val(atts[i], "kl3_ly"); Value source_val(kObjectType); if(ly_val=="注塑制造部") { source_val.AddMember("FName", "注塑制造部", al); source_val.AddMember("FNumber", "13", al); }else if(ly_val=="胶条制造部") { source_val.AddMember("FName", "胶条制造部", al); source_val.AddMember("FNumber", "14", al); }else { source_val.AddMember("FName", "", al); source_val.AddMember("FNumber", "", al); } data.AddMember("FSource", source_val, al); } printf("111\n"); if (type != 1 && type != 2 && type != 6) { data.AddMember("Fmaund", 0, al); } else { Value maund(kObjectType); string zldw = get_val(atts[i], "kl3_zldw"); maund.AddMember("FNumber", (*configs[3])[zldw.c_str()], al); maund.AddMember("FName", Value().SetString(zldw.c_str(), al), al); data.AddMember("Fmaund", maund, al); } if(type!=2){ data.AddMember("FLength", 0, al); data.AddMember("FWidth", 0, al); data.AddMember("FHeight", 0, al); data.AddMember("FSize", 0, al); }else{ int int_val; double db_val; char *ch_val; AOM_ask_value_int(atts[i],"kl3_chang",&int_val); db_val=(double)int_val/1000; data.AddMember("FLength", db_val, al); AOM_ask_value_int(atts[i],"kl3_kuan",&int_val); db_val=(double)int_val/1000; data.AddMember("FWidth", db_val, al); AOM_ask_value_int(atts[i],"kl3_gao",&int_val); db_val=(double)int_val/1000; data.AddMember("FHeight", db_val, al); AOM_ask_value_string(atts[i],"kl3_dxtj",&ch_val); db_val=atof(ch_val); data.AddMember("FSize", db_val, al); } data.AddMember("FLenDecimal", 0, al); data.AddMember("FCubageDecimal", 0, al); data.AddMember("FWeightDecimal", 0, al); Value manager(kObjectType); manager.AddMember("FName", Value().SetString(pref_vals[2], al), al); manager.AddMember("FNumber", Value().SetString(pref_vals[3], al), al); data.AddMember("FDSManagerID", manager, al); data.AddMember("FName", Value().SetString(get_val(rev, "object_name"), al), al); data.AddMember("FNumber", Value().SetString(get_val(rev, "item_id"), al), al); data.AddMember("FModel", Value().SetString(get_val(atts[i], "kl3_item_ggxh"), al), al); data.AddMember("FPlanTrategy", type<3 ? 321 : 324, al); if (type == 0) { string inspect = get_val(atts[i], "kl3_cgjyfs"); int inspect_val = 353; if (inspect == "全检") { inspect_val = 351; } else if (inspect == "免检") { inspect_val = 352; }else if (inspect == "抽检") { inspect_val = 353; } data.AddMember("FInspectionLevel", inspect_val, al); } else { data.AddMember("FInspectionLevel", type<2 ? 353 : 352, al); } data.AddMember("FProChkMde", type<1 ? 353 : 352, al); data.AddMember("FWWChkMde", type<1 ? 353 : 352, al); data.AddMember("FStkChkMde", type<5 ? 353 : 352, al); data.AddMember("FBatchManager", type<3 ? 1 : 0, al); data.AddMember("FISKFPeriod", (type<3 || type>5) ? 1 : 0, al); data.AddMember("FKFPeriod", (type<3 || type>5) ? (Value().SetString(get_val(atts[i], "kl3_bzqt"), al)) : Value().SetString("", al), al); data.AddMember("FFixLeadTime", (type != 1 && type != 2 && type != 6) ? (Value().SetString(get_val(atts[i], "kl3_gdtql"), al)) : Value().SetString("", al), al); data.AddMember("F_132", (type<3 || type == 6) ? (Value().SetString(get_val(atts[i], "kl3_color"), al)) : Value().SetString("", al), al); data.AddMember("FErpClsID", get_wlsx(get_val(atts[i], "kl3_item_wlsx"), al, *configs[5]), al); printf("222\n"); string jldwz = get_val(atts[i], "kl3_jldwz"); int jldw_index = jldwz.find('/'); jldwz = jldw_index != -1 ? jldwz.substr(0, jldw_index) : jldwz; Value &jldw_val = (*configs[4])[jldwz.c_str()]; if (!jldw_val.IsNull()) { Value jldw(kObjectType); jldw.AddMember("FName", Value().SetString(jldwz.c_str(), al), al); jldw.AddMember("FNumber", Value().SetString(jldw_val["id"].GetString(), al), al); data.AddMember("FUnitGroupID", jldw, al); data.AddMember("FUnitID", get_jldw(get_val(atts[i], "kl3_jbjldw"), al, jldw_val), al); data.AddMember("FOrderUnitID", get_jldw(get_val(atts[i], "kl3_cgjldw"), al, jldw_val), al); data.AddMember("FSaleUnitID", get_jldw(get_val(atts[i], "kl3_xsjldw"), al, jldw_val), al); data.AddMember("FProductUnitID", get_jldw(get_val(atts[i], "kl3_item_scjldw"), al, jldw_val), al); data.AddMember("FStoreUnitID", get_jldw(get_val(atts[i], "kl3_kcjldw"), al, jldw_val), al); } string item_id = get_val(rev, "item_id"); item_id = item_id.substr(0, 3); data.AddMember("FAcctID", get_acct(item_id, al, 0, *configs[2]), al); data.AddMember("FSaleAcctID", get_acct(item_id, al, 1, *configs[2]), al); data.AddMember("FCostAcctID", get_acct(item_id, al, 2, *configs[2]), al); printf("333\n"); switch (type) { case 0: // data.AddMember("FDefaultLoc", 651, al); // break; case 1: case 2: data.AddMember("FDefaultLoc", (*configs[1])[get_val(atts[i], "kl3_mrck")], al); break; case 3: case 5: data.AddMember("FDefaultLoc", 666, al); break; case 4: data.AddMember("FDefaultLoc", 667, al); break; default: break; } if (type == 0) { data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkcsl"), al), al); data.AddMember("FQtyMin", Value().SetString(get_val(atts[i], "kl3_zxdhl"), al), al); data.AddMember("FBatchAppendQty", Value().SetString(get_val(atts[i], "kl3_plzl"), al), al); data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); data.AddMember("F_131", Value().SetString(get_val(atts[i], "kl3_clfl"), al), al); data.AddMember("FStockTime", 1, al); } if (type == 2) { Value type_id(kObjectType); string wlfl = get_val(atts[i], "kl3_wlfl"); type_id.AddMember("FID", (*configs[0])[wlfl.c_str()], al); type_id.AddMember("FName", Value().SetString(wlfl.c_str(), al), al); data.AddMember("FTypeID", type_id, al); data.AddMember("F_112", Value().SetString(get_val(atts[i], "kl3_brand"), al), al); data.AddMember("F_109", Value().SetString(get_val(atts[i], "kl3_bzsj"), al), al); data.AddMember("F_118", Value().SetString(get_val(atts[i], "kl3_bzyf"), al), al); data.AddMember("F_113", Value().SetString(get_val(atts[i], "kl3_cx"), al), al); data.AddMember("F_114", Value().SetString(get_val(atts[i], "kl3_lcrq"), al), al); data.AddMember("F_104", Value().SetString(get_val(atts[i], "kl3_ncl"), al), al); data.AddMember("F_105", Value().SetString(get_val(atts[i], "kl3_yl"), al), al); data.AddMember("F_119", Value().SetString(get_val(atts[i], "kl3_sm"), al), al); data.AddMember("F_106", Value().SetString(get_val(atts[i], "kl3_dxsl"), al), al); data.AddMember("F_133", Value().SetString(get_val(atts[i], "kl3_OTSdhrq"), al), al); data.AddMember("F_134", Value().SetString(get_val(atts[i], "kl3_zjcmc"), al), al); data.AddMember("F_135", Value().SetString(get_val(atts[i], "kl3_lccxmc"), al), al); string s="是"; data.AddMember("F_136", s== get_val(atts[i], "kl3_sfyz")?1:0, al); data.AddMember("F_138", s == get_val(atts[i], "kl3_sfsbz") ? 1 : 0, al); //data.AddMember("F_136", 0, al); //data.AddMember("F_138", 0, al); data.AddMember("F_139", Value().SetString(get_val(atts[i], "kl3_cpzt"), al), al); data.AddMember("F_142", Value().SetString(get_val(atts[i], "kl3_MOQ"), al), al); data.AddMember("F_143", Value().SetString(get_val(atts[i], "kl3_ydcgzq"), al), al); data.AddMember("F_144", Value().SetString(get_val(atts[i], "kl3_dxzl"), al), al); } if (type == 4) { data.AddMember("FSecInv", Value().SetString(get_val(atts[i], "kl3_aqkc"), al), al); data.AddMember("FLowLimit", Value().SetString(get_val(atts[i], "kl3_zdkc"), al), al); data.AddMember("FHighLimit", Value().SetString(get_val(atts[i], "kl3_zgkc"), al), al); } doc.AddMember("Data", data, al); } StringBuffer sb; Writer writer(sb); doc.Accept(writer); printf("data:%s\n", sb.GetString()); string result = ConvertToString(class1->Send(is_update?update_url:save_url, convert_to_cstring(sb.GetString()),key)); if(result[0]=='s') { LOG(INFO) << result; }else { POM_AM__set_application_bypass(false); LOG(ERROR) << result; EMH_store_error_s1(EMH_severity_error, EMH_ATTR_error_base, result.c_str()); return 1; } printf("result:%s\n", result.c_str()); } POM_AM__set_application_bypass(false); return 0; } int kl_erp_save(EPM_action_message_t msg) { int arg_cnt = TC_number_of_arguments(msg.arguments); string key, pref1, pref2; for(auto i=0;i