#include "updateMaterial.h" void printfMaterial(MaterialBean bean) { stringstream ss; ss.str(""); ss<<"[MaterialBean pmpcCode="< 3 ? n_ifails - 3 : 0; for (auto i = n_ifails - 1; i >= n_end; i--) { err_ss << err[i]; } return err_ss.str(); } } //物料更新 更新物料状态 void updatePart(tag_t rev,MaterialBean bean,bool flag) { //LINFO<<"更新"; //printfMaterial(bean); tag_t item; ITEM_ask_item_of_rev(rev,&item); char * item_id,*item_id2; AOM_ask_value_string(rev,"item_id",&item_id); AOM_ask_value_string(item,"item_id",&item_id2); //LINFO<<"版本item_id:"<(BusinessObjectRegistry::instance().createInputObject( "Part", OPERATIONINPUT_CREATE)); SAFECALL(itemCreateInput->setString("object_name", bean.goodsName, false)); SAFECALL(itemCreateInput->setString("item_id",bean.goodsCode,false)); item_i =BusinessObjectRegistry::instance().createBusinessObject(itemCreateInput); tag_t uom; UOM_find_by_name("ZT2_zhongliang", &uom); if (uom) { item_i->setTag("uom_tag", uom, false); } SAFECALL(AOM_save_with_extensions(item_i->getTag())); item = item_i->getTag(); SAFECALL(ITEM_ask_latest_rev(item,&rev)); ITEM_ask_item_of_rev(rev,&item); SAFECALL(AOM_lock(item)); SAFECALL(AOM_set_value_string(item,"zt2_unit",bean.unitCode.c_str())); SAFECALL(AOM_save(item)); SAFECALL(AOM_unlock(item)); SAFECALL(AOM_refresh(item,TRUE)); SAFECALL(AOM_lock(rev)); SAFECALL(AOM_set_value_string(rev,"object_name",bean.goodsName.c_str())); SAFECALL(AOM_set_value_string(rev,"zt2_MaterialNo",bean.goodsCode.c_str())); SAFECALL(AOM_set_value_string(rev,"object_desc",bean.spec.c_str())); SAFECALL(AOM_set_value_string(rev,"zt2_TechRequirements",bean.teRe.c_str())); SAFECALL(AOM_set_value_string(rev,"zt2_State",bean.state.c_str())); SAFECALL(AOM_set_value_string(rev,"zt2_ClassificationCode",bean.pmpcCode.c_str())); SAFECALL(AOM_save(rev)); SAFECALL(AOM_unlock(rev)); SAFECALL(AOM_refresh(rev,TRUE)); return rev; } //物料创建 tag_t createPart(string &id) { tag_t item,rev; BusinessObject* item_i=nullptr; CreateInput* itemCreateInput =static_cast(BusinessObjectRegistry::instance().createInputObject( "Part", OPERATIONINPUT_CREATE)); SAFECALL(itemCreateInput->setString("object_name", id, false)); SAFECALL(itemCreateInput->setString("item_id",id,false)); item_i =BusinessObjectRegistry::instance().createBusinessObject(itemCreateInput); tag_t uom; UOM_find_by_name("ZT2_zhongliang", &uom); if (uom) { item_i->setTag("uom_tag", uom, false); } SAFECALL(AOM_save_with_extensions(item_i->getTag())); item = item_i->getTag(); SAFECALL(ITEM_ask_latest_rev(item,&rev)); ITEM_ask_item_of_rev(rev,&item); SAFECALL(AOM_lock(item)); //SAFECALL(AOM_set_value_string(item,"zt2_unit",bean.unitCode.c_str())); SAFECALL(AOM_save(item)); SAFECALL(AOM_unlock(item)); SAFECALL(AOM_refresh(item,TRUE)); SAFECALL(AOM_lock(rev)); SAFECALL(AOM_set_value_string(rev,"object_name",id.c_str())); SAFECALL(AOM_set_value_string(rev,"zt2_MaterialNo",id.c_str())); //SAFECALL(AOM_set_value_string(rev,"object_desc",bean.spec.c_str())); //SAFECALL(AOM_set_value_string(rev,"zt2_TechRequirements",bean.teRe.c_str())); //SAFECALL(AOM_set_value_string(rev,"zt2_State",bean.state.c_str())); //SAFECALL(AOM_set_value_string(rev,"zt2_ClassificationCode",bean.pmpcCode.c_str())); SAFECALL(AOM_save(rev)); SAFECALL(AOM_unlock(rev)); SAFECALL(AOM_refresh(rev,TRUE)); return rev; } void updateMaterial() { LINFO<<"物料更新开始-------------"< materials = db.getMaterials(); POM_AM__set_application_bypass(true); int size = materials.size(); string process_name = "TCM Release Process"; for(auto i=0;i"; p_status="-1"; //printfMaterial(bean); continue; } ITEM_find_item(bean.goodsCode.c_str(),&item); if(item) { ITEM_ask_latest_rev(item,&rev); } if(bean.code == 0) { bean.code = db.getCodeByGoodsCode(bean.goodsCode); if(bean.code==0) { bean.code = db.getCode(); } LINFO<<"CODE为0-->新Code:"+bean.code; if(item) { char *uid ; ITK__convert_tag_to_uid(rev,&uid); bean.puid = uid; LINFO<<"更新物料(无需更改ID)开始-->"<"; }else { LINFO<<"--新建对象开始:"<"< vecs = db.queryByCode(bean.code); bool flag = false; if(vecs.size()==2) { //printf("userID:%s,puid:%s;\r\n",bean.userID.c_str(),bean.puid.c_str()); bean.puid = vecs[0]; bean.userID = vecs[1]; //printf("userID:%s,puid:%s;\r\n",bean.userID.c_str(),bean.puid.c_str()); flag = true; } LINFO<<"Code["<["<"<"; }else { LINFO<<"记录为["<新建"; rev = createPart(bean); char *uid ; ITK__convert_tag_to_uid(rev,&uid); bean.puid = uid; LINFO<<"新建结束"; } }else { LINFO<<"PUID不为空"; tag_t uid_rev = NULLTAG; ITK__convert_uid_to_tag(bean.puid.c_str(),&uid_rev); //char *item_id; if(uid_rev && item) { LINFO<<"物料编码对象存在,原UID对象存在"; SAFECALL(AOM_ask_value_string(uid_rev,"zt2_MaterialNo",&zt2_MaterialNo)); char *item_id; SAFECALL(AOM_ask_value_string(uid_rev,"item_id",&item_id)); string MaterialNo = zt2_MaterialNo; if(strcmp(item_id,bean.goodsCode.c_str())==0) { LINFO<<"物料更新-->"<"<"; } //2.原UID对象存在,物料编码对象不存在 else if(uid_rev) { LINFO<<"原UID对象存在,物料编码对象不存在"; char *item_id; SAFECALL(AOM_ask_value_string(uid_rev,"item_id",&item_id)); LINFO<<"原ID["<"<"; }else { LINFO<<"更新物料(更改ID)开始-->"<"; } } } } if(flag) { db.updateMaterial2(p_status,bean.code,bean.goodsCode); } } if(rev) { int rel_cnt; tag_t *rels; SAFECALL(AOM_ask_value_tags(rev, "release_status_list", &rel_cnt, &rels)); //未发布,下一个 if (rel_cnt < 1) { LINFO<<"版本发布------->"; proProcessCreate(rev,process_name); } } db.updateMaterial1(p_status,p_rec_date,bean.puid,bean.userID,bean.code,bean.goodsCode); } conn.Disconnect(); }catch(SAException e) { printf("异常\n"); e.ErrMessage(); LINFO<