dobe_comic8/main/java/shkd/repc/recon/formplugin/MaterialSaveCarryNumberPlug...

174 lines
7.5 KiB
Java
Raw Normal View History

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});
}
}