179 lines
7.4 KiB
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");
|
|
}
|
|
} |