ensign/src/main/java/com/yem/tws/BilllogonEdit.java
2024-08-26 09:19:12 +08:00

961 lines
62 KiB
Java

package com.yem.tws;
import java.util.*;
import com.yem.tws.common1.StringUtils;
import kd.bos.form.control.Control;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.dataentity.metadata.IDataEntityType;
import kd.bos.entity.EntityMetadataCache;
import kd.bos.entity.MainEntityType;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.entity.property.*;
import kd.bos.form.control.events.ClickListener;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.control.events.ItemClickListener;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.metadata.dao.MetaCategory;
import kd.bos.metadata.dao.MetadataDao;
import kd.bos.entity.SubEntryType;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.metadata.form.BillFormAp;
import kd.bos.metadata.form.ControlAp;
import kd.bos.metadata.form.FormMetadata;
import kd.bos.metadata.form.control.EntryAp;
import kd.bos.metadata.form.control.FieldAp;
/**
* 关务单据注册表单插件
* @author lzb
*
*/
public class BilllogonEdit extends AbstractFormPlugin implements ItemClickListener,ClickListener {
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
// IDataModel model = this.getModel();
String name = e.getProperty().getName();
// ChangeData changeData = e.getChangeSet()[0];
// Object newValue = changeData.getNewValue();
// Object oldValue = changeData.getOldValue();
// int parentRowIndex = changeData.getParentRowIndex();
// int rowIndex = changeData.getRowIndex();
switch (name) {
case "yem_formid":
init_EntityColName();
this.getView().updateView("yem_entityfieldcol");
break;
default:
break;
}
}
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
// 侦听按钮点击事件
this.addItemClickListeners("yem_reload");
this.addClickListeners("yem_reload");
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
String source = evt.getItemKey();
switch (source) {
case "":
break;
default:
break;
}
}
@Override
public void click(EventObject evt) {
super.click(evt);
Control source = (Control) evt.getSource();
String key = source.getKey();
switch (key) {
case "":
break;
default:
break;
}
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs e) {
super.afterDoOperation(e);
boolean isSuccess = false;
if (e.getOperationResult() != null) {
isSuccess = e.getOperationResult().isSuccess();
}
String operateKey = e.getOperateKey();
if (StringUtils.isNotEmpty(operateKey)&&isSuccess) {
if (operateKey.equals("yem_reload")){
yem_reload();//增量检查
yem_dropitem();//删除项检查
this.getView().updateView("yem_entitycontainer");
this.getView().updateView("yem_entityfieldcol");
}
}
}
/**++
* 根据单据标识初始化单据实体名称
*/
private void init_EntityColName() {
IDataModel model = this.getModel();
DynamicObject billDate = model.getDataEntity(true);
DynamicObject yem_formid = (DynamicObject) model.getValue("yem_formid");
if (null != yem_formid) {
String formid = yem_formid.getString("number");
//加载数据包
MainEntityType sourceMainType = EntityMetadataCache.getDataEntityType(formid);
FormMetadata taskMeta = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(sourceMainType.getName(), MetaCategory.Form), MetaCategory.Form);
//获取所有控件集合
List<ControlAp<?>> items = taskMeta.getItems();
// DynamicPropertyCollection dynPropColl = (DynamicPropertyCollection) sourceMainType.getProperties();
//数据包字段集合
Map<String, IDataEntityProperty> fields = sourceMainType.getAllFields();
//加载数据前清理赋值分录集合
DynamicObjectCollection entrys = billDate.getDynamicObjectCollection("yem_entitycontainer");//实体主分录
int count = model.getEntryRowCount("yem_entitycontainer");
if (count > 0) {
for (int i = count - 1; i >= 0; i--) {
model.deleteEntryRow("yem_entitycontainer", i);
}
}
//处理元数据集合
for (ControlAp<?> item : items) {
//判断是否单据头
if (item instanceof BillFormAp) {
int row = this.getView().getModel().createNewEntryRow("yem_entitycontainer");
model.setValue("yem_entitytype", "A", row);
model.setValue("yem_entityformid", item.getKey(), row);
model.setValue("yem_entityformname", item.getName().getLocaleValue(), row);
DynamicObject Entrys = entrys.get(0);
DynamicObjectCollection SubEntryfieldCol = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
SubEntryfieldCol.clear();
}
// 判断当前控件是否属于FieldAp
if (item instanceof FieldAp) {
DynamicObject Entrys = entrys.get(0);
DynamicObjectCollection SubEntryfieldCol = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
// String qwe = fields.get(item.getKey()).getPropertyType().getSimpleName();
if (fields.get(item.getKey()) instanceof BasedataProp) {
BasedataProp field = (BasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_filedtypename", dynamicpropertyen);
}
}
} else if (fields.get(item.getKey()) instanceof FieldProp) {
FieldProp field = (FieldProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}
}
} else if (fields.get(item.getKey() + "_startdate") instanceof DateProp) {
DateProp fieldstart = (DateProp) fields.get(item.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if (fieldTypestart.getName().equals(formid)) {
String name = fieldstart.getDisplayName().getLocaleValue_zh_CN();
String type = fieldstart.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey() + "_startdate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}
}
DateProp fieldend = (DateProp) fields.get(item.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if (fieldTypeend.getName().equals(formid)) {
String name = fieldend.getDisplayName().getLocaleValue_zh_CN();
String type = fieldend.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey() + "_enddate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}
}
} else if (fields.get(item.getKey()) instanceof MulBasedataProp) {
MulBasedataProp field = (MulBasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}
}
}
} else if (item instanceof EntryAp) {
int row = this.getView().getModel().createNewEntryRow("yem_entitycontainer");
model.setValue("yem_entitytype", "B", row);
model.setValue("yem_entityformid", item.getKey(), row);
model.setValue("yem_entityformname", item.getName().getLocaleValue(), row);
DynamicObject Entrys = entrys.get(row);
DynamicObjectCollection SubEntryfieldCol = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
SubEntryfieldCol.clear();
List<ControlAp<?>> Entryitems = ((EntryAp) item).getItems();
String Parentname = "";
for (ControlAp<?> entryitem : Entryitems) {
if (fields.get(entryitem.getKey()) instanceof BasedataProp) {
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
BasedataProp field = (BasedataProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType instanceof SubEntryType) {
if (!Parentname.isEmpty()) {
IDataEntityType grandParent = fieldType.getParent();
Parentname = grandParent.getName();
}
}
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_filedtypename", dynamicpropertyen);
} else if (fields.get(entryitem.getKey()) instanceof FieldProp) {
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
FieldProp field = (FieldProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldType.getParent();
Parentname = grandParent.getName();
}
}
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
} else if (fields.get(entryitem.getKey()) instanceof DateProp) {
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
DateProp field = (DateProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldType.getParent();
Parentname = grandParent.getName();
}
}
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}else if (fields.get(entryitem.getKey() + "_startdate") instanceof DateProp) {
DateProp fieldstart = (DateProp) fields.get(entryitem.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if (fieldTypestart instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldTypestart.getParent();
Parentname = grandParent.getName();
}
}
String name = fieldstart.getDisplayName().getLocaleValue_zh_CN();
String type = fieldstart.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey() + "_startdate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}
DateProp fieldend = (DateProp) fields.get(entryitem.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if (fieldTypeend instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldTypeend.getParent();
Parentname = grandParent.getName();
}
}
String name = fieldend.getDisplayName().getLocaleValue_zh_CN();
String type = fieldend.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey() + "_enddate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
}
}
}
model.setValue("yem_parentcontainer", Parentname, row);
}
}
} else {
int count = model.getEntryRowCount("yem_entitycontainer");
if (count > 0) {
for (int i = count - 1; i >= 0; i--) {
model.deleteEntryRow("yem_entitycontainer", i);
}
}
}
}
/***
* 重新加载事件
*/
private void yem_reload() {
IDataModel model = this.getModel();
DynamicObject billDate = model.getDataEntity(true);
DynamicObject yem_formid = (DynamicObject) model.getValue("yem_formid");
if (null != yem_formid) {
String formid = yem_formid.getString("number");
//加载数据包
MainEntityType sourceMainType = EntityMetadataCache.getDataEntityType(formid);
FormMetadata taskMeta = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(sourceMainType.getName(), MetaCategory.Form), MetaCategory.Form);
//获取所有控件集合
List<ControlAp<?>> items = taskMeta.getItems();
//数据包字段集合
Map<String, IDataEntityProperty> fields = sourceMainType.getAllFields();
DynamicObjectCollection yem_entitycontainers = billDate.getDynamicObjectCollection("yem_entitycontainer");
Map<String, List<String>> EnyryEntityMap = new HashMap();
if (yem_entitycontainers != null && yem_entitycontainers.getRowCount() > 0) {
for (int u = 0; u < yem_entitycontainers.getRowCount(); u++) {
DynamicObject yem_entitycontainer = yem_entitycontainers.get(u);
if (yem_entitycontainer != null) {
String yem_entityformid = yem_entitycontainer.getString("yem_entityformid");
if (StringUtils.isNotEmpty(yem_entityformid)) {
List<String> EnyryEntityList = new ArrayList();
DynamicObjectCollection SubEntryfieldCols = yem_entitycontainer.getDynamicObjectCollection("yem_entityfieldcol");
if (SubEntryfieldCols != null && SubEntryfieldCols.getRowCount() > 0) {
for (int y = 0; y < SubEntryfieldCols.getRowCount(); y++) {
DynamicObject SubEntryfieldCol = SubEntryfieldCols.get(y);
if (SubEntryfieldCol != null) {
String yem_erpfiledformid = SubEntryfieldCol.getString("yem_erpfiledformid");
if (StringUtils.isNotEmpty(yem_erpfiledformid)) {
EnyryEntityList.add(yem_erpfiledformid);
}
}
}
}
EnyryEntityMap.put(yem_entityformid, EnyryEntityList);
}
}
}
}
//处理元数据集合
int row = 0;
String HeadKey = "";
for (ControlAp<?> item : items) {
if (item instanceof BillFormAp) {
if (yem_entitycontainers.getRowCount() > 0 && yem_entitycontainers != null) {
if (!EnyryEntityMap.containsKey(item.getKey())) {
for (int i = 0; i < yem_entitycontainers.getRowCount(); i++) {
DynamicObject yem_entitycontainer = yem_entitycontainers.get(i);
String yem_entityformid = yem_entitycontainer.getString("yem_entityformid");
String yem_entityformname = yem_entitycontainer.getString("yem_entityformname");
String yem_entitytype = yem_entitycontainer.getString("yem_entitytype");
if (yem_entitytype.equals("A") && !item.getKey().equals(yem_entityformid) && !item.getName().getLocaleValue().equals(yem_entityformname)) {
row = this.getView().getModel().insertEntryRow("yem_entitycontainer", i);
model.setValue("yem_entitytype", "A", row);
model.setValue("yem_entityformid", item.getKey(), row);
model.setValue("yem_entityformname", item.getName().getLocaleValue(), row);
model.setValue("yem_isincremental", true, row);
DynamicObject Entrys = yem_entitycontainers.get(row);
DynamicObjectCollection SubEntryfieldCol = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
SubEntryfieldCol.clear();
if (yem_entitytype.equals("A")) {
model.setValue("yem_isdelete", true, i);
}
} else if (yem_entitytype.equals("A")) {
HeadKey = yem_entityformid;
}
}
} else {
for (int i = 0; i < yem_entitycontainers.getRowCount(); i++) {
DynamicObject yem_entitycontainer = yem_entitycontainers.get(i);
String yem_entityformid = yem_entitycontainer.getString("yem_entityformid");
String yem_entitytype = yem_entitycontainer.getString("yem_entitytype");
if (yem_entitytype.equals("A")) {
HeadKey = yem_entityformid;
}
}
}
}
}
// 判断当前控件是否属于FieldAp
if (item instanceof FieldAp) {
if (row > 0) {
DynamicObject Entrys = yem_entitycontainers.get(row);
DynamicObjectCollection SubEntryfieldCol = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
if (fields.get(item.getKey()) instanceof BasedataProp) {
BasedataProp field = (BasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_filedtypename", dynamicpropertyen);
SubEntrynew.set("yem_subisincremental", true);
}
}
} else if (fields.get(item.getKey()) instanceof FieldProp) {
FieldProp field = (FieldProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
} else if (fields.get(item.getKey() + "_startdate") instanceof DateProp) {
DateProp fieldstart = (DateProp) fields.get(item.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if (fieldTypestart.getName().equals(formid)) {
String name = fieldstart.getDisplayName().getLocaleValue_zh_CN();
String type = fieldstart.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey() + "_startdate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
DateProp fieldend = (DateProp) fields.get(item.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if (fieldTypeend.getName().equals(formid)) {
String name = fieldend.getDisplayName().getLocaleValue_zh_CN();
String type = fieldend.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey() + "_enddate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
} else if (fields.get(item.getKey()) instanceof MulBasedataProp) {
MulBasedataProp field = (MulBasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
DynamicObject SubEntrynew = SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
} else {
List<String> A_EntryEntity = EnyryEntityMap.get(HeadKey);
DynamicObject Entrys = yem_entitycontainers.get(0);
DynamicObjectCollection SubEntryfieldCols = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
if (A_EntryEntity != null && A_EntryEntity.size() > 0) {
if (fields.get(item.getKey()) instanceof BasedataProp) {
BasedataProp field = (BasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
if (!A_EntryEntity.contains(item.getKey())) {
DynamicObject SubEntrynew = SubEntryfieldCols.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_filedtypename", dynamicpropertyen);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
} else if (fields.get(item.getKey()) instanceof FieldProp) {
FieldProp field = (FieldProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
if (!A_EntryEntity.contains(item.getKey())) {
DynamicObject SubEntrynew = SubEntryfieldCols.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
} else if (fields.get(item.getKey() + "_startdate") instanceof DateProp) {
if (!A_EntryEntity.contains(item.getKey() + "_startdate")) {
DateProp fieldstart = (DateProp) fields.get(item.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if (fieldTypestart.getName().equals(formid)) {
String name = fieldstart.getDisplayName().getLocaleValue_zh_CN();
String type = fieldstart.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCols.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey() + "_startdate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
if (!A_EntryEntity.contains(item.getKey() + "_enddate")) {
DateProp fieldend = (DateProp) fields.get(item.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if (fieldTypeend.getName().equals(formid)) {
String name = fieldend.getDisplayName().getLocaleValue_zh_CN();
String type = fieldend.getFilterControlType();
DynamicObject SubEntrynew = SubEntryfieldCols.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey() + "_enddate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
} else if (fields.get(item.getKey()) instanceof MulBasedataProp) {
MulBasedataProp field = (MulBasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
DynamicObject SubEntrynew = SubEntryfieldCols.addNew();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
}
}
} else if (item instanceof EntryAp) {
if (!EnyryEntityMap.containsKey(item.getKey())) {
int Head_B_Row = this.getView().getModel().createNewEntryRow("yem_entitycontainer");
model.setValue("yem_entitytype", "B", Head_B_Row);
model.setValue("yem_entityformid", item.getKey(), Head_B_Row);
model.setValue("yem_entityformname", item.getName().getLocaleValue(), Head_B_Row);
model.setValue("yem_isincremental", true, Head_B_Row);
// DynamicObject Entrys = yem_entitycontainers.get(Head_B_Row);
// DynamicObjectCollection SubEntryfieldCol = Entrys.getDynamicObjectCollection("yem_entityfieldcol");
// SubEntryfieldCol.clear();
DynamicObject B_Entrys = yem_entitycontainers.get(Head_B_Row);
DynamicObjectCollection B_SubEntryfieldCol = B_Entrys.getDynamicObjectCollection("yem_entityfieldcol");
B_SubEntryfieldCol.clear();
List<ControlAp<?>> Entryitems = ((EntryAp) item).getItems();
String Parentname = "";
for (ControlAp<?> entryitem : Entryitems) {
if (fields.get(entryitem.getKey()) instanceof BasedataProp) {
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
BasedataProp field = (BasedataProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType instanceof SubEntryType) {
if (!Parentname.isEmpty()) {
IDataEntityType grandParent = fieldType.getParent();
Parentname = grandParent.getName();
}
}
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_filedtypename", dynamicpropertyen);
SubEntrynew.set("yem_subisincremental", true);
} else if (fields.get(entryitem.getKey()) instanceof FieldProp) {
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
FieldProp field = (FieldProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldType.getParent();
Parentname = grandParent.getName();
}
}
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
} else if (fields.get(entryitem.getKey()) instanceof DateProp) {
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
DateProp field = (DateProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldType.getParent();
Parentname = grandParent.getName();
}
}
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
} else if (fields.get(entryitem.getKey() + "_startdate") instanceof DateProp) {
DateProp fieldstart = (DateProp) fields.get(entryitem.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if (fieldTypestart instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldTypestart.getParent();
Parentname = grandParent.getName();
}
}
String name = fieldstart.getDisplayName().getLocaleValue_zh_CN();
String type = fieldstart.getFilterControlType();
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey() + "_startdate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
DateProp fieldend = (DateProp) fields.get(entryitem.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if (fieldTypeend instanceof SubEntryType) {
if (Parentname.isEmpty()) {
IDataEntityType grandParent = fieldTypeend.getParent();
Parentname = grandParent.getName();
}
}
String name = fieldend.getDisplayName().getLocaleValue_zh_CN();
String type = fieldend.getFilterControlType();
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey() + "_enddate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
model.setValue("yem_parentcontainer", Parentname, row);
} else {
List<String> B_EntryEntity = EnyryEntityMap.get(item.getKey());
List<ControlAp<?>> Entryitems = ((EntryAp) item).getItems();
for (ControlAp<?> entryitem : Entryitems) {
if (yem_entitycontainers.getRowCount() > 0 && yem_entitycontainers != null) {
for (int i = 0; i < yem_entitycontainers.getRowCount(); i++) {
DynamicObject yem_entitycontainer = yem_entitycontainers.get(i);
String yem_entityformid = yem_entitycontainer.getString("yem_entityformid");
if (item.getKey().equals(yem_entityformid)) {
DynamicObjectCollection B_SubEntryfieldCol = yem_entitycontainer.getDynamicObjectCollection("yem_entityfieldcol");
if (B_SubEntryfieldCol != null && B_SubEntryfieldCol.getRowCount() > 0) {
if (fields.get(entryitem.getKey()) instanceof BasedataProp) {
if (!B_EntryEntity.contains(entryitem.getKey())) {
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
BasedataProp field = (BasedataProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
String dynamicpropertyen = field.getBaseEntityId();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_filedtypename", dynamicpropertyen);
SubEntrynew.set("yem_subisincremental", true);
}
} else if (fields.get(entryitem.getKey()) instanceof FieldProp) {
if (!B_EntryEntity.contains(entryitem.getKey())) {
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
FieldProp field = (FieldProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
} else if (fields.get(entryitem.getKey()) instanceof DateProp) {
if (!B_EntryEntity.contains(entryitem.getKey())) {
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
DateProp field = (DateProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
String name = field.getDisplayName().getLocaleValue_zh_CN();
String type = field.getFilterControlType();
SubEntrynew.set("yem_erpfiledformid", item.getKey());
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
} else if (fields.get(entryitem.getKey() + "_startdate") instanceof DateProp) {
if (!B_EntryEntity.contains(entryitem.getKey() + "_startdate")) {
DateProp fieldstart = (DateProp) fields.get(entryitem.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
String name = fieldstart.getDisplayName().getLocaleValue_zh_CN();
String type = fieldstart.getFilterControlType();
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey() + "_startdate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
if (!B_EntryEntity.contains(entryitem.getKey() + "_startdate")) {
DateProp fieldend = (DateProp) fields.get(entryitem.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
String name = fieldend.getDisplayName().getLocaleValue_zh_CN();
String type = fieldend.getFilterControlType();
DynamicObject SubEntrynew = B_SubEntryfieldCol.addNew();
SubEntrynew.set("yem_erpfiledformid", entryitem.getKey() + "_enddate");
SubEntrynew.set("yem_erpfiledformname", name);
SubEntrynew.set("yem_filedtype", type);
SubEntrynew.set("yem_subisincremental", true);
}
}
}
}
}
}
}
}
}
}
}
}
}
/***
* 删除项检查
*/
private void yem_dropitem() {
IDataModel model = this.getModel();
DynamicObject billDate = model.getDataEntity(true);
DynamicObjectCollection yem_entitycontainers = billDate.getDynamicObjectCollection("yem_entitycontainer");
if (yem_entitycontainers != null && yem_entitycontainers.getRowCount() > 0) {
// for (int i = 0; i < yem_entitycontainers.getRowCount(); i++) {
// DynamicObject yem_entitycontainer = yem_entitycontainers.get(i);
// if (yem_entitycontainer != null) {
// String Key = yem_entitycontainer.getString("yem_entityformid");
// if (StringUtils.isNotEmpty(Key)) {
// if (!GetBillMate(Key)) {
// yem_entitycontainer.set("yem_isdelete", true);
// }
// }
// DynamicObjectCollection yem_entityfieldcols = yem_entitycontainer.getDynamicObjectCollection("yem_entityfieldcol");
// if (yem_entityfieldcols != null && yem_entityfieldcols.getRowCount() > 0) {
// for (int j = 0; j < yem_entityfieldcols.getRowCount(); j++) {
// DynamicObject yem_entityfieldcol = yem_entityfieldcols.get(j);
// if (yem_entityfieldcol != null) {
// String EntryKey = yem_entityfieldcol.getString("yem_erpfiledformid");
// if (StringUtils.isNotEmpty(EntryKey)) {
// if (!GetBillMate(EntryKey)) {
// yem_entityfieldcol.set("yem_subisdelete", true);
// }
// }
// }
// }
// }
// }
// }
for (int i = yem_entitycontainers.getRowCount() - 1; i >= 0; i--) {
DynamicObject yem_entitycontainer = yem_entitycontainers.get(i);
if (yem_entitycontainer != null) {
String Key = yem_entitycontainer.getString("yem_entityformid");
if (StringUtils.isNotEmpty(Key)) {
if (!GetBillMate(Key)) {
model.deleteEntryRow("yem_entitycontainer", i);
} else {
DynamicObjectCollection yem_entityfieldcols = yem_entitycontainer.getDynamicObjectCollection("yem_entityfieldcol");
if (yem_entityfieldcols != null && yem_entityfieldcols.getRowCount() > 0) {
for (int o = yem_entityfieldcols.getRowCount() - 1; o >= 0; o--) {
DynamicObject yem_entityfieldcol = yem_entityfieldcols.get(o);
if (yem_entityfieldcol != null) {
String EntryKey = yem_entityfieldcol.getString("yem_erpfiledformid");
if (StringUtils.isNotEmpty(EntryKey)) {
if (!GetBillMate(EntryKey)) {
model.deleteEntryRow("yem_entityfieldcol", o);
}
}
}
}
}
}
}
}
}
}
}
private Boolean GetBillMate(String EntityKey){
int Isappearcount =0;
Boolean Isappear =false;
IDataModel model = this.getModel();
DynamicObject billDate = model.getDataEntity(true);
DynamicObject yem_formid = (DynamicObject) model.getValue("yem_formid");
if (null != yem_formid) {
String formid = yem_formid.getString("number");
//加载数据包
MainEntityType sourceMainType = EntityMetadataCache.getDataEntityType(formid);
FormMetadata taskMeta = (FormMetadata) MetadataDao.readRuntimeMeta(MetadataDao.getIdByNumber(sourceMainType.getName(), MetaCategory.Form), MetaCategory.Form);
//获取所有控件集合
List<ControlAp<?>> items = taskMeta.getItems();
//数据包字段集合
Map<String, IDataEntityProperty> fields = sourceMainType.getAllFields();
//处理元数据集合
for (ControlAp<?> item : items) {
//判断是否单据头
if (item instanceof BillFormAp) {
if(item.getKey().equals(EntityKey)){
Isappearcount++;
}
}
// 判断当前控件是否属于FieldAp
if (item instanceof FieldAp) {
if (fields.get(item.getKey()) instanceof BasedataProp) {
BasedataProp field = (BasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
if(item.getKey().equals(EntityKey)){
Isappearcount++;
}
}
}
} else if (fields.get(item.getKey()) instanceof FieldProp) {
FieldProp field = (FieldProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
if(item.getKey().equals(EntityKey)){
Isappearcount++;
}
}
}
} else if (fields.get(item.getKey() + "_startdate") instanceof DateProp) {
DateProp fieldstart = (DateProp) fields.get(item.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if (fieldTypestart.getName().equals(formid)) {
if(EntityKey.equals(item.getKey() + "_startdate")){
Isappearcount++;
}
}
}
DateProp fieldend = (DateProp) fields.get(item.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if (fieldTypeend.getName().equals(formid)) {
if(EntityKey.equals(item.getKey() + "_enddate")){
Isappearcount++;
}
}
}
} else if (fields.get(item.getKey()) instanceof MulBasedataProp) {
MulBasedataProp field = (MulBasedataProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if (fieldType != null) {
if (fieldType.getName().equals(formid)) {
if(item.getKey().equals(EntityKey)){
Isappearcount++;
}
}
}
}
} else if (item instanceof EntryAp) {
String EntryKry = item.getKey();
if(item.getKey().equals(EntityKey)){
Isappearcount++;
}
List<ControlAp<?>> Entryitems = ((EntryAp) item).getItems();
String Parentname = "";
for (ControlAp<?> entryitem : Entryitems) {
if (fields.get(entryitem.getKey()) instanceof BasedataProp) {
BasedataProp field = (BasedataProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
if(entryitem.getKey().equals(EntityKey)){
Isappearcount++;
}
} else if (fields.get(entryitem.getKey()) instanceof FieldProp) {
FieldProp field = (FieldProp) fields.get(entryitem.getKey());
IDataEntityType fieldType = field.getParent();
if(entryitem.getKey().equals(EntityKey)){
Isappearcount++;
}
} else if (fields.get(entryitem.getKey()) instanceof DateProp) {
DateProp field = (DateProp) fields.get(item.getKey());
IDataEntityType fieldType = field.getParent();
if(entryitem.getKey().equals(EntityKey)){
Isappearcount++;
}
}else if (fields.get(entryitem.getKey() + "_startdate") instanceof DateProp) {
DateProp fieldstart = (DateProp) fields.get(entryitem.getKey() + "_startdate");
IDataEntityType fieldTypestart = fieldstart.getParent();
if (fieldTypestart != null) {
if(EntityKey.equals(entryitem.getKey()+ "_startdate")){
Isappearcount++;
}
}
DateProp fieldend = (DateProp) fields.get(entryitem.getKey() + "_enddate");
IDataEntityType fieldTypeend = fieldend.getParent();
if (fieldTypeend != null) {
if(EntityKey.equals(entryitem.getKey()+ "_enddate")){
Isappearcount++;
}
}
}
}
}
}
}
if(Isappearcount>0){
Isappear = true ;
}
return Isappear;
}
}