Skip to content

Commit

Permalink
enh: 记录转换源字段支持ID
Browse files Browse the repository at this point in the history
  • Loading branch information
getrebuild committed Dec 2, 2023
1 parent 8562c8d commit ae53ef7
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public Object exprDefaultValue() {
/**
* 转换返回值,输出用(默认实现为原值返回)
*
* @param value 原值
* @param value 原值,必须符合值类型
* @return
* @see com.rebuild.core.support.general.FieldValueHelper
*/
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/com/rebuild/web/commons/MetadataGetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,12 @@ public List<JSON> entities(HttpServletRequest request) {
@GetMapping("fields")
public JSON fields(HttpServletRequest request) {
Entity entity = MetadataHelper.getEntity(getParameterNotNull(request, "entity"));
// 返回引用实体的字段
// 返回引用实体的字段层级
int appendRefFields = getIntParameter(request, "deep", 0);
// 返回ID主键字段
boolean forceWithId = getBoolParameter(request, "withid");

return MetaFormatter.buildFieldsWithRefs(entity, appendRefFields, true, field -> {
return MetaFormatter.buildFieldsWithRefs(entity, appendRefFields, true, forceWithId, field -> {
if (!field.isQueryable()) return true;

if (field instanceof Field) {
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/com/rebuild/web/general/MetaFormatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public static JSONObject buildRichField(EasyField field) {
* @param deep
* @param filter
* @return
* @see #buildFieldsWithRefs(Entity, int, boolean, boolean, Predicate)
*/
public static JSONArray buildFieldsWithRefs(Entity entity, int deep, Predicate<BaseMeta> filter) {
return buildFieldsWithRefs(entity, deep, false, filter);
Expand All @@ -90,8 +91,23 @@ public static JSONArray buildFieldsWithRefs(Entity entity, int deep, Predicate<B
* @param riching
* @param filter
* @return
* @see #buildFieldsWithRefs(Entity, int, boolean, boolean, Predicate)
*/
public static JSONArray buildFieldsWithRefs(Entity entity, int deep, boolean riching, Predicate<BaseMeta> filter) {
return buildFieldsWithRefs(entity, deep, riching, false, filter);
}

/**
* 获取字段列表
*
* @param entity
* @param deep 几级
* @param riching
* @param forceWithId 带有主键ID
* @param filter
* @return
*/
public static JSONArray buildFieldsWithRefs(Entity entity, int deep, boolean riching, boolean forceWithId, Predicate<BaseMeta> filter) {
JSONArray res = new JSONArray();

// 一级
Expand All @@ -101,6 +117,10 @@ public static JSONArray buildFieldsWithRefs(Entity entity, int deep, boolean ric

res.add(buildField(easyField, null, riching));
}
if (forceWithId) {
res.add(buildField(EasyMetaFactory.valueOf(entity.getPrimaryField()), null, false));
}

if (deep < 2) return res;

List<Object[]> deep3Refs = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ private JSONObject buildEntity(Entity entity, boolean sourceType) {
JSONArray fields;
// 源
if (sourceType) {
fields = MetaFormatter.buildFieldsWithRefs(entity, 3, true, field -> {
fields = MetaFormatter.buildFieldsWithRefs(entity, 3, true, true, field -> {
if (field instanceof EasyField) {
EasyField easyField = (EasyField) field;
int c = easyField.getDisplayType() == DisplayType.REFERENCE
Expand Down
15 changes: 3 additions & 12 deletions src/main/resources/web/assets/js/metadata/auto-fillin.js
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,9 @@ class DlgRuleEdit extends RbFormHandler {
this.__select2.push($s2target)

// #2
$.get(`/commons/metadata/fields?entity=${this.props.sourceEntity}&deep=2`, (res) => {
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 }, () => {
$.get(`/commons/metadata/fields?entity=${this.props.sourceEntity}&deep=2&withid=true`, (res) => {
this.__sourceFieldsCache = res.data
this.setState({ sourceFields: res.data }, () => {
const $s2source = $(this._sourceField)
.select2({
placeholder: $L('选择字段'),
Expand Down
8 changes: 4 additions & 4 deletions src/main/resources/web/assets/js/rb-forms.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ class RbForm extends React.Component {
for (let k in iv) {
let val = iv[k]
// array, object, simple
val = typeof val === 'object' ? val.id || val : val
val = val && typeof val === 'object' ? val.id || val : val
this.__FormData[k] = { value: val, error: null }
}
}
Expand Down Expand Up @@ -1803,7 +1803,7 @@ class RbFormPickList extends RbFormElement {
}

setValue(val) {
if (typeof val === 'object') val = val.id
if (val && typeof val === 'object') val = val.id
this.__select2.val(val).trigger('change')
}
}
Expand Down Expand Up @@ -2111,7 +2111,7 @@ class RbFormN2NReference extends RbFormReference {

handleChange(e, checkValue) {
let val = e.target.value
if (typeof val === 'object') val = val.join(',')
if (val && typeof val === 'object') val = val.join(',')
this.setState({ value: val }, () => checkValue === true && this.checkValue())
}

Expand Down Expand Up @@ -2733,7 +2733,7 @@ class RbFormTag extends RbFormElement {
}

setValue(val) {
if (typeof val === 'object') val = val.join('$$$$')
if (val && typeof val === 'object') val = val.join('$$$$')
super.setValue(val)

// fix: v3.4.4
Expand Down

0 comments on commit ae53ef7

Please sign in to comment.