package shkd.repc.recon.formplugin; import kd.bos.coderule.api.CodeRuleInfo; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.form.control.events.BeforeItemClickEvent; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.bos.servicehelper.org.OrgUnitServiceHelper; import kd.sdk.plugin.Plugin; import shkd.repc.recon.formplugin.dynamic.ImportMaterial; import java.util.EventObject; /** * 动态表单插件 * 带出物料编码 */ public class MaterialSaveCarryNumberPlugin extends AbstractFormPlugin implements Plugin { private static final String BOS_ORG = "bos_org";//组织实体 private static final String BD_MATERIAL = "bd_material";//物料实体 @Override public void registerListener(EventObject e) { super.registerListener(e); this.addItemClickListeners("tbmain"); } @Override public void beforeItemClick(BeforeItemClickEvent evt) { super.beforeItemClick(evt); String key = evt.getItemKey().toLowerCase(); if ("bar_save".equals(key)) { this.carryMaterialNumber(); } } /** * 携带物料编码 */ private void carryMaterialNumber() { DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("qeug_orderformentry"); if (entryEntity != null && entryEntity.size() != 0) { for (int i = 0; i < entryEntity.size(); i++) { DynamicObject material = entryEntity.get(i).getDynamicObject("qeug_material");//物料-基础资料 String type = entryEntity.get(i).getString("qeug_importmaterialtype");//物料分类 String model = entryEntity.get(i).getString("qeug_importmodel");//规格型号 String unit = entryEntity.get(i).getString("qeug_importunit");//规格型号 String brand = entryEntity.get(i).getString("qeug_brand");//规格型号 String extModel = entryEntity.get(i).getString("qeug_model");//规格型号 Long id; if (material==null){ String name = entryEntity.get(i).getString("qeug_materialnames"); if (name!=null&&!"".equals(name)){ //查询系统已有编码 id = this.getExitMaterialId(name,model); if (id==null){ //新增物料 id=this.addNewMaterial(name,type,model,unit,brand,extModel); } this.getModel().setValue("qeug_material",id,i); } } } } } /** * 查询系统中有的物料id * @param materialName 名称 * @param materialModel 规格类型 * @return */ private Long getExitMaterialId(String materialName, String materialModel) { QFilter qFilter = new QFilter("name", QCP.equals, materialName); qFilter.and("modelnum",QCP.equals,materialModel); DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("bd_material", qFilter.toArray()); if (dynamicObject!=null){ return dynamicObject.getLong("id"); } return null; } /** * 新增物料-带出id * @param name 名称 * @param type 分类 * @param model 规格型号 * @param unit 单位 * @param brand 品牌 * @param extModel 型号 * @return */ private Long addNewMaterial(String name, String type, String model, String unit, String brand, String extModel) { DynamicObject bd_material; Long id = null; try { bd_material = BusinessDataServiceHelper.newDynamicObject(BD_MATERIAL); //物料编码 DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("bd_material"); CodeRuleInfo codeRule = CodeRuleServiceHelper.getCodeRule(dynamicObject.getDataEntityType().getName(), dynamicObject, null); bd_material.set("number", CodeRuleServiceHelper.getNumber(codeRule, dynamicObject)); //物料名称 bd_material.set("name", name); //所属组织 long rootOrgId = OrgUnitServiceHelper.getRootOrgId(); DynamicObject org = BusinessDataServiceHelper.loadSingle(rootOrgId, BOS_ORG); if (null != org) { bd_material.set("createorg", org); } //物料单位 QFilter unitQFilter = new QFilter("name", QCP.equals, unit); DynamicObject measureUnits = BusinessDataServiceHelper.loadSingle("bd_measureunits", unitQFilter.toArray()); if (null != measureUnits) { bd_material.set("baseunit", measureUnits); } bd_material.set("modelnum", model);//规格 bd_material.set("materialtype", "1");//物料类型:物资 //业务属性 DynamicObjectCollection collection = bd_material.getDynamicObjectCollection("serviceattribute"); DynamicObject serviceAttribute = BusinessDataServiceHelper.loadSingle("bd_serviceattribute", (new QFilter("number", QCP.equals, "1001")).toArray()); if (serviceAttribute!=null){ DynamicObject dynamicObject1 = new DynamicObject(collection.getDynamicObjectType()); dynamicObject1.set("fbasedataId",serviceAttribute); collection.add(dynamicObject1); } bd_material.set("qeug_brand",brand);//品牌 bd_material.set("qeug_model",extModel);//型号 bd_material.set("enable", "1");//使用状态:可用 bd_material.set("status", "C");//数据状态:审核 bd_material.set("ctrlstrategy", "5");//控制策略:全局共享 bd_material.set("enablepur",true);//可采购 bd_material.set("enablesale",true);//可销售 bd_material.set("enableinv",true);//可库存 SaveServiceHelper.save(new DynamicObject[]{bd_material}); //物料分类映射 DynamicObject group = BusinessDataServiceHelper.loadSingle("bd_materialgroup", (new QFilter("name", QCP.equals, type)).toArray()); if (group==null) { //待分类 group = BusinessDataServiceHelper.loadSingle("bd_materialgroup", (new QFilter("number", QCP.equals, "waitgroup")).toArray()); } id = bd_material.getLong("id"); this.newMaterialType(id,group); } catch (Exception e) { this.getView().showMessage(e.getMessage()); } return id; } /** * 新增物料分类映射表数据 * @param materialId * @param group */ private void newMaterialType(Long materialId, DynamicObject group) { DynamicObject materialType = BusinessDataServiceHelper.newDynamicObject("bd_materialgroupdetail"); //分类标准 DynamicObject standard = BusinessDataServiceHelper.loadSingle("bd_materialgroupstandard", (new QFilter("number", QCP.equals, "JBFLBZ")).toArray()); materialType.set("standard",standard); materialType.set("group",group); //物料 materialType.set("material",materialId); SaveServiceHelper.save(new DynamicObject[]{materialType}); } }