dobe_comic8/main/java/shkd/repc/rebm/formplugin/CustomFieldTemplatePlugin.java

179 lines
7.4 KiB
Java

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