Skip to content

Commit

Permalink
enh: 表单回填源字段支持ID
Browse files Browse the repository at this point in the history
  • Loading branch information
getrebuild committed Nov 29, 2023
1 parent 77fed30 commit 4c12e30
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,12 @@
import com.rebuild.core.metadata.easymeta.DisplayType;
import com.rebuild.core.metadata.easymeta.EasyField;
import com.rebuild.core.metadata.easymeta.EasyFile;
import com.rebuild.core.metadata.easymeta.EasyID;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import com.rebuild.core.metadata.easymeta.EasyN2NReference;
import com.rebuild.core.metadata.easymeta.MixValue;
import com.rebuild.core.metadata.impl.EasyFieldConfigProps;
import com.rebuild.core.support.general.FieldValueHelper;
import com.rebuild.utils.JSONUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.map.CaseInsensitiveMap;
Expand Down Expand Up @@ -294,6 +297,8 @@ protected Object conversionCompatibleValue(Field source, Field target, Object va
if (!(newValue instanceof String) || sourceEasy instanceof EasyFile) {
newValue = sourceEasy.wrapValue(newValue);
}
} else if (sourceEasy instanceof EasyID && targetEasy instanceof EasyN2NReference) {
newValue = FieldValueHelper.wrapFieldValue(newValue, targetEasy);
}

return newValue;
Expand Down
20 changes: 15 additions & 5 deletions src/main/java/com/rebuild/core/metadata/MetadataSorter.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

/**
* 元数据辅助类,注意此类返回的数据会过滤和排序
Expand Down Expand Up @@ -159,14 +161,14 @@ public static Field[] sortFields(Field[] fields, DisplayType... usesTypes) {
*/
static Field[] sortByLevel(List<BaseMeta> fields) {
List<BaseMeta> othersFields = new ArrayList<>();
List<BaseMeta> commonsFields = new ArrayList<>();
List<BaseMeta> approvalFields = new ArrayList<>();
Map<String, BaseMeta> commonsFieldsMap = new HashMap<>();

for (BaseMeta field : fields) {
if (MetadataHelper.isApprovalField(field.getName())) {
approvalFields.add(field);
} else if (MetadataHelper.isCommonsField((Field) field)) {
commonsFields.add(field);
commonsFieldsMap.put(field.getName(), field);
} else {
othersFields.add(field);
}
Expand All @@ -175,12 +177,20 @@ static Field[] sortByLevel(List<BaseMeta> fields) {
sortByLabel(othersFields);
List<BaseMeta> allFields = new ArrayList<>(othersFields);

sortByLabel(commonsFields);
allFields.addAll(commonsFields);

sortByLabel(approvalFields);
allFields.addAll(approvalFields);

// v35 特殊排序
final String[] SPEC_SORTS = new String[] {
EntityHelper.CreatedBy, EntityHelper.CreatedOn, EntityHelper.ModifiedBy, EntityHelper.ModifiedOn, EntityHelper.OwningUser, EntityHelper.OwningDept
};
List<BaseMeta> commonsFields = new ArrayList<>();
for (String s : SPEC_SORTS) {
BaseMeta b = commonsFieldsMap.get(s);
if (b != null) commonsFields.add(b);
}
allFields.addAll(commonsFields);

return allFields.toArray(new Field[0]);
}

Expand Down
13 changes: 11 additions & 2 deletions src/main/resources/web/assets/js/metadata/auto-fillin.js
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,17 @@ class DlgRuleEdit extends RbFormHandler {

// #2
$.get(`/commons/metadata/fields?entity=${this.props.sourceEntity}&deep=2`, (res) => {
this.__sourceFieldsCache = res.data
this.setState({ sourceFields: res.data }, () => {
const _data = []
res.data.forEach((item) => {
_data.push(item)
// v35 Last insert a ID
if (item.name === 'owningDept') {
_data.push({ name: `${wpc.referenceEntity}Id`, label: 'ID', type: 'REFERENCE', ref: [wpc.referenceEntity, 'ID'] })
}
})

this.__sourceFieldsCache = _data
this.setState({ sourceFields: _data }, () => {
const $s2source = $(this._sourceField)
.select2({
placeholder: $L('选择字段'),
Expand Down

0 comments on commit 4c12e30

Please sign in to comment.