package shkd.repc.rebm.formplugin; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.dataentity.entity.LocaleString; import kd.bos.dataentity.metadata.IDataEntityProperty; import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.entity.property.*; import kd.bos.form.control.EntryGrid; import kd.bos.form.field.BasedataEdit; import kd.bos.metadata.dao.MetaCategory; import kd.bos.metadata.dao.MetadataDao; import kd.bos.metadata.form.FormMetadata; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.MetadataServiceHelper; import kd.sdk.plugin.Plugin; /** * 【函件模板】-【插入字段扩展(二开页面)】 */ public class CustomFieldTemplatePlugin extends AbstractBillPlugIn implements Plugin { @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String fieldKey = e.getProperty().getName(); //模板类型 if (StringUtils.equals(fieldKey, "qeug_templatetype")) { handleSetFieldsValue(); } //分录源单标识 else if (StringUtils.equals(fieldKey, "qeug_sourceid")){ handleSetEntityName(); } //分录字段标识 else if (StringUtils.equals(fieldKey, "qeug_fieldid")){ handleSetEntryFieldsValue(); } } /** * 设置表头字段 */ private void handleSetFieldsValue() { //获取选中下拉值 String value = (String) this.getModel().getValue("qeug_templatetype"); DynamicObject insertDynamic = BusinessDataServiceHelper.loadSingle("qeug_insertfield", (new QFilter("number", QCP.equals, value.toString())).toArray()); if (null!=insertDynamic){ this.getView().showMessage("已存在编码为:"+value+"的模板,请勿重复生成!"); return; } switch (value){ //邀请函 case "INVITATION": this.getModel().setValue("qeug_defaultfield","invitation"); break; //质疑函 case "OBJECTION_LETTER": this.getModel().setValue("qeug_defaultfield","query"); break; //感谢信 case "THANK_YOU_LETTER": this.getModel().setValue("qeug_defaultfield","thanksletter"); break; //招标公告 case "TENDER_ANNOUNCEMENT": this.getModel().setValue("qeug_defaultfield","bidproject"); break; //中标公告 case "TENDER_RESULT_ANNOUNCEMENT": this.getModel().setValue("qeug_defaultfield","decision"); break; //中标通知 case "BID_NOTICE": this.getModel().setValue("qeug_defaultfield","bidnotification"); break; //商务谈判邀约函 case "BUSINESS_NEGOTIATION_INVITATION": this.getModel().setValue("qeug_defaultfield","negotiate"); break; //评标邀请函 case "EVALUATION_INVITATION": this.getModel().setValue("qeug_defaultfield","bidassinvite"); break; } //获取下拉列表字段 ComboProp comboProp = (ComboProp) getModel().getProperty("qeug_templatetype"); //通过下拉值获取下拉标题 String displayName = comboProp.getItemByName(value); this.getModel().setValue("number",value); this.getModel().setValue("name",displayName+"扩展字段"); } /** * 源单名称赋值 */ private void handleSetEntityName() { //分录数据 DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("qeug_entryentity"); //选中的分录数据 EntryGrid entryGrid = this.getControl("qeug_entryentity"); int[] selectRows = entryGrid.getSelectRows(); if (selectRows.length==1) { String entityName = entryEntity.get(selectRows[0]).getString("qeug_sourceid"); if (!entityName.isEmpty()){ String id = MetadataDao.getIdByNumber(entityName, MetaCategory.Form); if (null==id){ this.getView().showMessage("请填写正确的源单标识!"); return; } FormMetadata formMeta = (FormMetadata) MetadataDao.readRuntimeMeta(id, MetaCategory.Form); //单据名称 LocaleString name = formMeta.getName(); if (null!=name){ this.getModel().setValue("qeug_sourcename",name); } } } this.getView().updateView("qeug_entryentity"); } /** *设置分录字段 */ private void handleSetEntryFieldsValue() { //分录数据 DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("qeug_entryentity"); //选中的分录数据 EntryGrid entryGrid = this.getControl("qeug_entryentity"); int[] selectRows = entryGrid.getSelectRows(); if (selectRows.length==1){ String entityName = entryEntity.get(selectRows[0]).getString("qeug_sourceid"); if (!entityName.isEmpty()){ String fieldName = entryEntity.get(selectRows[0]).getString("qeug_fieldid"); if (!fieldName.isEmpty()){ IDataEntityProperty property = MetadataServiceHelper.getDataEntityType(entityName).getProperty(fieldName); if (null==property){ this.getView().showMessage("源单:"+entityName+"未找到字段:"+fieldName+"信息!"); return; } //字段名 String localeValue_zh_cn = property.getDisplayName().getLocaleValue_zh_CN(); this.getModel().setValue("qeug_fieldname",localeValue_zh_cn,selectRows[0]); //字段类型 String fieldType; if (property instanceof TextProp){ fieldType="TextProp"; }else if (property instanceof DecimalProp){ fieldType="DecimalProp"; }else if (property instanceof DateTimeProp){ fieldType="DateTimeProp"; }else if (property instanceof BasedataProp){ fieldType="BasedataProp"; }else if (property instanceof ComboProp){ fieldType="ComboProp"; }else if (property instanceof BooleanProp){ fieldType="BooleanProp"; }else if (property instanceof VarcharProp) { fieldType = "VarcharProp"; }else if (property instanceof LongProp){ fieldType="LongProp"; }else { this.getView().showMessage("暂不支持该字段类型!"); return; } this.getModel().setValue("qeug_fieldtype",fieldType,selectRows[0]); } } } this.getView().updateView("qeug_entryentity"); } }