package tqq9.lc123.cloud.app.plugin.form.pm; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.plugin.AbstractFormPlugin; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.sdk.plugin.Plugin; import org.apache.commons.lang3.StringUtils; import tqq9.lc123.cloud.app.plugin.utils.EntryFieldRefresher; import java.util.EventObject; /** * 表单通用插件,带出创建人部门,许可证号 * 注册证号:tqq9_registration * 许可证号:tqq9_licenseno * 创建部门:tqq9_dept * 需保持一致 */ public class BaseDataPlugin extends AbstractFormPlugin implements Plugin { private final static Log logger = LogFactory.getLog(BaseDataPlugin.class); @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); IDataModel model = this.getModel(); DynamicObject dataEntity = model.getDataEntity(); DynamicObject creator = dataEntity.getDynamicObject("creator"); DynamicObject bos_user = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{new QFilter("id", QCP.equals, creator.getLong("id"))}); DynamicObjectCollection entryentity = bos_user.getDynamicObjectCollection("entryentity"); DynamicObject dept = null; for (DynamicObject dynamicObject : entryentity) { boolean ispartjob = dynamicObject.getBoolean("ispartjob"); if (!ispartjob) { dept = dynamicObject.getDynamicObject("dpt"); } } model.setValue("tqq9_dept", dept); } @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String key = e.getProperty().getName(); ChangeData[] changeSet = e.getChangeSet(); ChangeData changeData = changeSet[0]; int rowIndex = changeData.getRowIndex(); String name = this.getModel().getDataEntity(true).getDataEntityType().getName(); //排斥物料 if(!"bd_material".equals(name)){ if (StringUtils.equals("tqq9_registration", key)) { StringBuilder stringBuilder_supno = new StringBuilder(); StringBuilder stringBuilder_supplier = new StringBuilder(); DynamicObject newValue = (DynamicObject) changeData.getNewValue(); if (newValue != null) { //处理非医非消毒的问题 boolean isFyfxd = false;//是否 非医非消毒 String tqq9_scxkzh = null;//生产许可证号 String tqq9_sccsname = null;//生产厂商名称 handleFyfxd(rowIndex, isFyfxd, tqq9_scxkzh, tqq9_sccsname);//处理非医非消毒的内容 if(isFyfxd){ //非医非消毒 取物料上的生产厂商名称和许可证号 this.getModel().setValue("tqq9_licenseno", tqq9_scxkzh, rowIndex); this.getModel().setValue("tqq9_cs", tqq9_sccsname, rowIndex); }else{ DynamicObject tqq9_registration = BusinessDataServiceHelper.loadSingle("tqq9_registration", new QFilter[]{new QFilter("id", QCP.equals, newValue.getLong("id"))}); DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry"); for (DynamicObject entry : tqq9_entry) { String supno = entry.getString("tqq9_e_supno");//许可证 DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产商 if (StringUtils.isNotBlank(supno)) { stringBuilder_supno.append("#").append(supno); } if (tqq9_e_supplier != null) { stringBuilder_supplier.append("#").append(tqq9_e_supplier.getString("name")); } } if (StringUtils.isNotBlank(stringBuilder_supno.toString())) { String substring = stringBuilder_supno.substring(1); this.getModel().setValue("tqq9_licenseno", substring, rowIndex); } if (StringUtils.isNotBlank(stringBuilder_supplier.toString())) { String substring = stringBuilder_supplier.substring(1); this.getModel().setValue("tqq9_cs", substring, rowIndex); } } } } if (StringUtils.equals("tqq9_zczh", key)) { StringBuilder stringBuilder_supno = new StringBuilder(); StringBuilder stringBuilder_supplier = new StringBuilder(); DynamicObject newValue = (DynamicObject) changeData.getNewValue(); if (newValue != null) { //处理非医非消毒的问题 boolean isFyfxd = false;//是否 非医非消毒 String tqq9_scxkzh = null;//生产许可证号 String tqq9_sccsname = null;//生产厂商名称 handleFyfxd(rowIndex, isFyfxd, tqq9_scxkzh, tqq9_sccsname);//处理非医非消毒的内容 if(isFyfxd){ //非医非消毒 取物料上的生产厂商名称和许可证号 this.getModel().setValue("tqq9_licenseno", tqq9_scxkzh, rowIndex); this.getModel().setValue("tqq9_cs", tqq9_sccsname, rowIndex); }else{ DynamicObject tqq9_registration = BusinessDataServiceHelper.loadSingle("tqq9_registration", new QFilter[]{new QFilter("id", QCP.equals, newValue.getLong("id"))}); DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry"); for (DynamicObject entry : tqq9_entry) { String supno = entry.getString("tqq9_e_supno");//许可证 DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产商 if (StringUtils.isNotBlank(supno)) { stringBuilder_supno.append("#").append(supno); } if (tqq9_e_supplier != null) { stringBuilder_supplier.append("#").append(tqq9_e_supplier.getString("name")); } } if (StringUtils.isNotBlank(stringBuilder_supno.toString())) { String substring = stringBuilder_supno.substring(1); this.getModel().setValue("tqq9_licenseno", substring, rowIndex); } if (StringUtils.isNotBlank(stringBuilder_supplier.toString())) { String substring = stringBuilder_supplier.substring(1); this.getModel().setValue("tqq9_cs", substring, rowIndex); } } } } } } private void handleFyfxd(int rowIndex, boolean isFyfxd, String tqq9_scxkzh, String tqq9_sccsname) { DynamicObject dataEntity = this.getModel().getDataEntity(true); String entitName = dataEntity.getDataEntityType().getName();//单据标识 String mFieldName = EntryFieldRefresher.getEntryMaterialFieldNameByEntityName(entitName); if(StringUtils.isNotBlank(mFieldName)){ DynamicObject material = (DynamicObject) this.getModel().getValue(mFieldName, rowIndex); if(material != null){ Long materialId = material.getDynamicObject("masterid").getLong("id"); DynamicObject bd_material = BusinessDataServiceHelper.loadSingle(materialId, "bd_material"); String tqq9_ylfl = bd_material.getString("tqq9_ylfl"); if("非医非消毒".equals(tqq9_ylfl)){ isFyfxd = true; DynamicObject tqq9_sccs = bd_material.getDynamicObject("tqq9_sccs");//生产厂商 if(tqq9_sccs != null){ tqq9_sccsname = tqq9_sccs.getString("name"); } tqq9_scxkzh = bd_material.getString("tqq9_scxkzh");//生产许可证号 } } } } }