mirror of
https://github.com/getrebuild/rebuild.git
synced 2025-09-30 02:28:49 +08:00
Merge branch 'master' into develop
This commit is contained in:
commit
18ae721894
8 changed files with 91 additions and 33 deletions
|
@ -527,15 +527,16 @@ public class FormsBuilder extends FormsManager {
|
|||
* @see com.rebuild.core.support.general.DataListWrapper#wrapFieldValue(Object, Field)
|
||||
*/
|
||||
public Object wrapFieldValue(Record data, EasyField field, ID user4Desensitized) {
|
||||
final DisplayType dt = field.getDisplayType();
|
||||
Object value = data.getObjectValue(field.getName());
|
||||
|
||||
// 使用主键
|
||||
if (field.getDisplayType() == DisplayType.BARCODE) {
|
||||
if (dt == DisplayType.BARCODE) {
|
||||
value = data.getPrimary();
|
||||
}
|
||||
|
||||
// 处理日期格式
|
||||
if (field.getDisplayType() == DisplayType.REFERENCE
|
||||
if (dt == DisplayType.REFERENCE
|
||||
&& value instanceof ID && ((ID) value).getLabelRaw() != null) {
|
||||
Field nameField = field.getRawMeta().getReferenceEntity().getNameField();
|
||||
|
||||
|
@ -552,8 +553,20 @@ public class FormsBuilder extends FormsManager {
|
|||
|
||||
value = FieldValueHelper.wrapFieldValue(value, field);
|
||||
|
||||
if (value != null && FieldValueHelper.isUseDesensitized(field, user4Desensitized)) {
|
||||
value = FieldValueHelper.desensitized(field, value);
|
||||
if (value != null) {
|
||||
if (FieldValueHelper.isUseDesensitized(field, user4Desensitized)) {
|
||||
value = FieldValueHelper.desensitized(field, value);
|
||||
}
|
||||
// v3.1.4
|
||||
else if (dt == DisplayType.REFERENCE || dt == DisplayType.N2NREFERENCE) {
|
||||
|
||||
Field nameField = field.getRawMeta().getReferenceEntity().getNameField();
|
||||
EasyField easyNameField = EasyMetaFactory.valueOf(nameField);
|
||||
|
||||
if (FieldValueHelper.isUseDesensitized(easyNameField, user4Desensitized)) {
|
||||
FieldValueHelper.desensitizedMixValue(easyNameField, (JSON) value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ import org.apache.commons.lang.StringUtils;
|
|||
* @since 2020/11/17
|
||||
*/
|
||||
@Slf4j
|
||||
public class EasyMultiSelect extends EasyField implements MixValue {
|
||||
public class EasyMultiSelect extends EasyField implements MixValue, MultiValue {
|
||||
private static final long serialVersionUID = -1615061627351160386L;
|
||||
|
||||
protected EasyMultiSelect(Field field, DisplayType displayType) {
|
||||
|
@ -73,10 +73,10 @@ public class EasyMultiSelect extends EasyField implements MixValue {
|
|||
public Object unpackWrapValue(Object wrappedValue) {
|
||||
if (wrappedValue instanceof Long) {
|
||||
return StringUtils.join(
|
||||
MultiSelectManager.instance.getLabels((Long) wrappedValue, getRawMeta()), ", ");
|
||||
MultiSelectManager.instance.getLabels((Long) wrappedValue, getRawMeta()), MV_SPLIT);
|
||||
}
|
||||
|
||||
JSONObject mixValue = (JSONObject) wrappedValue;
|
||||
return StringUtils.join(mixValue.getJSONArray("text"), ", ");
|
||||
return StringUtils.join(mixValue.getJSONArray("text"), MV_SPLIT);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import java.util.List;
|
|||
* @see N2NReferenceSupport
|
||||
*/
|
||||
@Slf4j
|
||||
public class EasyN2NReference extends EasyReference {
|
||||
public class EasyN2NReference extends EasyReference implements MultiValue {
|
||||
private static final long serialVersionUID = -16180408450167432L;
|
||||
|
||||
protected EasyN2NReference(Field field, DisplayType displayType) {
|
||||
|
@ -68,7 +68,7 @@ public class EasyN2NReference extends EasyReference {
|
|||
}
|
||||
|
||||
List<ID> idArray = new ArrayList<>();
|
||||
for (String id : valueExpr.split(",")) {
|
||||
for (String id : valueExpr.split(MV_SPLIT.trim())) {
|
||||
if (ID.isId(id)) idArray.add(ID.valueOf(id));
|
||||
}
|
||||
return idArray.toArray(new ID[0]);
|
||||
|
@ -93,6 +93,6 @@ public class EasyN2NReference extends EasyReference {
|
|||
for (Object item : arrayValue) {
|
||||
texts.add(((JSONObject) item).getString ("text"));
|
||||
}
|
||||
return StringUtils.join(texts, ", ");
|
||||
return StringUtils.join(texts, MV_SPLIT);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ package com.rebuild.core.metadata.easymeta;
|
|||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* 将复合值转为可识别值
|
||||
* 复合值
|
||||
*
|
||||
* @author devezhao
|
||||
* @since 2020/11/17
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
/*!
|
||||
Copyright (c) REBUILD <https://getrebuild.com/> and/or its owners. All rights reserved.
|
||||
|
||||
rebuild is dual-licensed under commercial and open source licenses (GPLv3).
|
||||
See LICENSE and COMMERCIAL in the project root for license information.
|
||||
*/
|
||||
|
||||
package com.rebuild.core.metadata.easymeta;
|
||||
|
||||
/**
|
||||
* 多个值
|
||||
*
|
||||
* @author devezhao
|
||||
* @since 2022/12/12
|
||||
*/
|
||||
public interface MultiValue {
|
||||
|
||||
String MV_SPLIT = ", ";
|
||||
|
||||
}
|
|
@ -22,6 +22,7 @@ import com.rebuild.core.metadata.MetadataHelper;
|
|||
import com.rebuild.core.metadata.easymeta.DisplayType;
|
||||
import com.rebuild.core.metadata.easymeta.EasyField;
|
||||
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
|
||||
import com.rebuild.core.metadata.easymeta.MultiValue;
|
||||
import com.rebuild.core.metadata.impl.EasyFieldConfigProps;
|
||||
import com.rebuild.core.privileges.UserHelper;
|
||||
import com.rebuild.core.service.approval.ApprovalState;
|
||||
|
@ -274,8 +275,8 @@ public class EasyExcelGenerator extends SetUser {
|
|||
for (final String fieldName : varsMap.values()) {
|
||||
if (fieldName == null) continue;
|
||||
|
||||
EasyField easyField = EasyMetaFactory.valueOf(
|
||||
Objects.requireNonNull(MetadataHelper.getLastJoinField(entity, fieldName)));
|
||||
@SuppressWarnings("DataFlowIssue")
|
||||
EasyField easyField = EasyMetaFactory.valueOf(MetadataHelper.getLastJoinField(entity, fieldName));
|
||||
DisplayType dt = easyField.getDisplayType();
|
||||
|
||||
// 替换成变量名
|
||||
|
@ -316,14 +317,31 @@ public class EasyExcelGenerator extends SetUser {
|
|||
// Keep Type
|
||||
fieldValue = ObjectUtils.round(((BigDecimal) fieldValue).doubleValue(), scale);
|
||||
} else {
|
||||
fieldValue = FieldValueHelper.wrapFieldValue(fieldValue, easyField, true);
|
||||
fieldValue = FieldValueHelper.wrapFieldValue(fieldValue, easyField, Boolean.TRUE);
|
||||
}
|
||||
|
||||
if (FieldValueHelper.isUseDesensitized(easyField, this.getUser())) {
|
||||
fieldValue = FieldValueHelper.desensitized(easyField, fieldValue);
|
||||
} else if (record.getEntity().getEntityCode() == EntityHelper.RobotApprovalStep
|
||||
&& "state".equalsIgnoreCase(fieldName)) {
|
||||
if (record.getEntity().getEntityCode() == EntityHelper.RobotApprovalStep && "state".equalsIgnoreCase(fieldName)) {
|
||||
fieldValue = Language.L(ApprovalState.valueOf(ObjectUtils.toInt(fieldValue)));
|
||||
} else if (FieldValueHelper.isUseDesensitized(easyField, this.getUser())) {
|
||||
fieldValue = FieldValueHelper.desensitized(easyField, fieldValue);
|
||||
}
|
||||
// v3.1.4
|
||||
else if (dt == DisplayType.REFERENCE || dt == DisplayType.N2NREFERENCE) {
|
||||
|
||||
Field refNameField = easyField.getRawMeta().getReferenceEntity().getNameField();
|
||||
EasyField easyNameField = EasyMetaFactory.valueOf(refNameField);
|
||||
|
||||
if (FieldValueHelper.isUseDesensitized(easyNameField, this.getUser())) {
|
||||
if (dt == DisplayType.N2NREFERENCE) {
|
||||
List<String> fieldValueList = new ArrayList<>();
|
||||
for (String s : fieldValue.toString().split(MultiValue.MV_SPLIT)) {
|
||||
fieldValueList.add((String) FieldValueHelper.desensitized(easyNameField, s));
|
||||
}
|
||||
fieldValue = StringUtils.join(fieldValueList, MultiValue.MV_SPLIT);
|
||||
} else {
|
||||
fieldValue = FieldValueHelper.desensitized(easyNameField, fieldValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
data.put(varName, fieldValue);
|
||||
|
|
|
@ -13,7 +13,6 @@ import cn.devezhao.persist4j.dialect.FieldType;
|
|||
import cn.devezhao.persist4j.engine.ID;
|
||||
import cn.devezhao.persist4j.query.compiler.SelectItem;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.rebuild.core.Application;
|
||||
import com.rebuild.core.configuration.ConfigBean;
|
||||
|
@ -184,7 +183,7 @@ public class DataListWrapper {
|
|||
Field useNameField = easyField.getRawMeta().getReferenceEntity().getNameField();
|
||||
EasyField useNameFieldEasy = EasyMetaFactory.valueOf(useNameField);
|
||||
if (useNameFieldEasy.isDesensitized()) {
|
||||
desensitizedMixValue((JSON) value, useNameFieldEasy);
|
||||
FieldValueHelper.desensitizedMixValue(useNameFieldEasy, (JSON) value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -225,19 +224,6 @@ public class DataListWrapper {
|
|||
return value;
|
||||
}
|
||||
|
||||
private void desensitizedMixValue(JSON value, EasyField easyField) {
|
||||
if (value instanceof JSONObject) {
|
||||
String text = ((JSONObject) value).getString("text");
|
||||
if (text != null) {
|
||||
((JSONObject) value).put("text", FieldValueHelper.desensitized(easyField, text));
|
||||
}
|
||||
}
|
||||
// N2N
|
||||
else if (value instanceof JSONArray) {
|
||||
for (Object o : (JSONArray) value) desensitizedMixValue((JSON) o, easyField);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see FieldValueHelper#isUseDesensitized(EasyField, ID)
|
||||
*/
|
||||
|
|
|
@ -14,6 +14,8 @@ import cn.devezhao.persist4j.Field;
|
|||
import cn.devezhao.persist4j.engine.ID;
|
||||
import cn.devezhao.persist4j.engine.NullValue;
|
||||
import cn.devezhao.persist4j.metadata.MetadataException;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.rebuild.core.Application;
|
||||
import com.rebuild.core.configuration.general.ClassificationManager;
|
||||
|
@ -313,6 +315,25 @@ public class FieldValueHelper {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 字段值脱敏:复合值
|
||||
*
|
||||
* @param easyField
|
||||
* @param mixValue
|
||||
*/
|
||||
public static void desensitizedMixValue(EasyField easyField, JSON mixValue) {
|
||||
if (mixValue instanceof JSONObject) {
|
||||
String text = ((JSONObject) mixValue).getString("text");
|
||||
if (text != null) {
|
||||
((JSONObject) mixValue).put("text", FieldValueHelper.desensitized(easyField, text));
|
||||
}
|
||||
}
|
||||
// N2N
|
||||
else if (mixValue instanceof JSONArray) {
|
||||
for (Object o : (JSONArray) mixValue) desensitizedMixValue(easyField, (JSON) o);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否有值
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue