diff --git a/main/java/shkd/repc/recon/formplugin/ContractMaterialImportPlugin.java b/main/java/shkd/repc/recon/formplugin/ContractMaterialImportPlugin.java index 2f08e11..17bc0d0 100644 --- a/main/java/shkd/repc/recon/formplugin/ContractMaterialImportPlugin.java +++ b/main/java/shkd/repc/recon/formplugin/ContractMaterialImportPlugin.java @@ -123,7 +123,7 @@ public class ContractMaterialImportPlugin extends AbstractFormPlugin { this.getView().showMessage(e.getMessage()); } return id; - } +} private String checkMaterial(String materialName, String materialModel) { QFilter qFilter = new QFilter("name", QCP.equals, materialName); diff --git a/main/java/shkd/repc/recon/formplugin/MaterialSaveCarryNumberPlugin.java b/main/java/shkd/repc/recon/formplugin/MaterialSaveCarryNumberPlugin.java new file mode 100644 index 0000000..247dba5 --- /dev/null +++ b/main/java/shkd/repc/recon/formplugin/MaterialSaveCarryNumberPlugin.java @@ -0,0 +1,174 @@ +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}); + } +} \ No newline at end of file