Skip to content

Commit

Permalink
Merge branch 'develop' into react18
Browse files Browse the repository at this point in the history
  • Loading branch information
getrebuild committed Mar 23, 2024
2 parents abc2210 + 6ec4201 commit 1d3cd39
Show file tree
Hide file tree
Showing 34 changed files with 700 additions and 292 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@
import org.apache.commons.lang.StringUtils;

import java.text.MessageFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
* 列表字段分类(分组)数据
Expand Down Expand Up @@ -64,8 +68,8 @@ public JSON datas(Entity entity, ID user) {

} else {

String cf = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.ADV_LIST_SHOWCATEGORY);
String[] ff = cf.split(":");
String conf = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.ADVLIST_SHOWCATEGORY);
String[] ff = conf.split(":");
String ffField = ff[0];
String ffFormat = ff.length > 1 ? ff[1] : null;

Expand Down Expand Up @@ -133,7 +137,7 @@ public JSON datas(Entity entity, ID user) {
* @return
*/
public Field getFieldOfCategory(Entity entity) {
String categoryField = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.ADV_LIST_SHOWCATEGORY);
String categoryField = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.ADVLIST_SHOWCATEGORY);
if (categoryField != null) categoryField = categoryField.split(":")[0];
if (categoryField != null && entity.containsField(categoryField)) return entity.getField(categoryField);
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@
import com.rebuild.core.configuration.ConfigBean;
import com.rebuild.core.metadata.EntityHelper;
import com.rebuild.core.metadata.MetadataHelper;
import com.rebuild.core.metadata.MetadataSorter;
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.impl.EasyEntityConfigProps;
import com.rebuild.core.service.dashboard.ChartManager;
import com.rebuild.core.service.query.AdvFilterParser;
import com.rebuild.core.service.query.ParseHelper;
Expand Down Expand Up @@ -289,19 +292,86 @@ public Set<String> getListFilterPaneFields(ID user, String entity) {
}

/**
* TODO 自定义字段 MODE2
* 自定义字段 MODE2
*
* @param entity
* @return
*/
public JSON getFieldsLayoutMode2(Entity entity) {
JSONObject emptyConfig = (JSONObject) formatListFields(entity.getName(), null, true, null);
JSONArray fields = emptyConfig.getJSONArray("fields");
String showFields = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.ADVLIST_MODE2_SHOWFIELDS);
JSONArray showFieldsConf;
if (JSONUtils.wellFormat(showFields)) {
showFieldsConf = JSON.parseArray(showFields);
} else {
showFieldsConf = JSON.parseArray("[null,null,null,null,null,null]"); // fix:6
}

if (entity.containsField(EntityHelper.ApprovalState)) {
fields.add(formatField(entity.getField(EntityHelper.ApprovalState)));
String imgeField0 = showFieldsConf.getString(0);
if (imgeField0 == null) {
showFieldsConf.set(0, entity.getPrimaryField().getName());
}
String nameField1 = showFieldsConf.getString(1);
if (nameField1 == null) {
nameField1 = entity.getNameField().getName();
showFieldsConf.set(1, nameField1);
}
String approvalField2 = showFieldsConf.getString(2);
if (approvalField2 == null) {
if (MetadataHelper.hasApprovalField(entity)) {
showFieldsConf.set(2, EntityHelper.ApprovalState);
} else {
showFieldsConf.set(2, entity.getPrimaryField().getName());
}
}
String createdOnField3 = showFieldsConf.getString(3);
if (createdOnField3 == null) {
showFieldsConf.set(3, EntityHelper.CreatedOn);
}
String createdByField4 = showFieldsConf.getString(4);
if (createdByField4 == null) {
showFieldsConf.set(4, EntityHelper.CreatedBy);
}

return formatShowFields(entity, showFieldsConf);
}

/**
* 自定义字段 MODE3
*
* @param entity
* @return
*/
public JSON getFieldsLayoutMode3(Entity entity) {
String showFields = EasyMetaFactory.valueOf(entity).getExtraAttr(EasyEntityConfigProps.ADVLIST_MODE3_SHOWFIELDS);
JSONArray showFieldsConf;
if (JSONUtils.wellFormat(showFields)) {
showFieldsConf = JSON.parseArray(showFields);
} else {
showFieldsConf = JSON.parseArray("[null, null, null, null, null]"); // fix:5
}

String imgField0 = showFieldsConf.getString(0);
if (imgField0 == null) {
Field[] x = MetadataSorter.sortFields(entity, DisplayType.IMAGE);
imgField0 = x.length > 0 ? x[0].getName() : entity.getPrimaryField().getName();
showFieldsConf.set(0, imgField0);
}
String nameField1 = showFieldsConf.getString(1);
if (nameField1 == null) {
nameField1 = entity.getNameField().getName();
showFieldsConf.set(1, nameField1);
}

return formatShowFields(entity, showFieldsConf);
}

private JSON formatShowFields(Entity entity, JSONArray showFields) {
JSONObject emptyConfig = (JSONObject) formatListFields(entity.getName(), null, true, null);
JSONArray fields = emptyConfig.getJSONArray("fields");
fields.clear();
for (Object name : showFields) {
if (name != null) fields.add(formatField(entity.getField((String) name)));
}
return emptyConfig;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,27 +41,27 @@ public class EasyEntityConfigProps {
/**
* 隐藏常用查询面板
*/
public static final String ADV_LIST_HIDE_FILTERS = "advListHideFilters";
public static final String ADVLIST_HIDE_FILTERS = "advListHideFilters";
/**
* 隐藏图表面板
*/
public static final String ADV_LIST_HIDE_CHARTS = "advListHideCharts";
public static final String ADVLIST_HIDE_CHARTS = "advListHideCharts";
/**
* 列表模式
*/
public static final String ADV_LIST_MODE = "advListMode";
public static final String ADVLIST_MODE = "advListMode";
/**
* 列表分类
*/
public static final String ADV_LIST_SHOWCATEGORY = "advListShowCategory";
public static final String ADVLIST_SHOWCATEGORY = "advListShowCategory";
/**
* 列表查询面板
*/
public static final String ADV_LIST_FILTERPANE = "advListFilterPane";
public static final String ADVLIST_FILTERPANE = "advListFilterPane";
/**
* 列表查询页签
*/
public static final String ADV_LIST_FILTERTABS = "advListFilterTabs";
public static final String ADVLIST_FILTERTABS = "advListFilterTabs";
/**
* 重复字段检查模式 (AND/OR)
*/
Expand All @@ -75,4 +75,18 @@ public class EasyEntityConfigProps {
* 启用记录合并(还需配合权限)
*/
public static final String ENABLE_RECORD_MERGER = "enableRecordMerger";

/**
* 列表模式
*/
public static final String ADVLIST_MODE2_SHOWFIELDS = "mode2ShowFields";
public static final String ADVLIST_MODE3_SHOWFIELDS = "mode3ShowFields";
/**
* @see #ADVLIST_HIDE_FILTERS
*/
public static final String ADVLIST_MODE3_SHOWFILTERS = "mode3ShowFilters";
/**
* @see #ADVLIST_SHOWCATEGORY TODO
*/
public static final String ADVLIST_MODE3_SHOWCATEGORY = "mode3ShowCategory";
}
30 changes: 15 additions & 15 deletions src/main/java/com/rebuild/core/service/query/AdvFilterParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,21 +145,21 @@ public String toSqlWhere() {
String quickFields = filterExpr.getString("quickFields");
JSONArray quickItems = buildQuickFilterItems(quickFields, 1);

// // v3.6-b4 值1|值2 UNTEST
// // 转义可输入 \|
// JSONObject values = filterExpr.getJSONObject("values");
// String[] valuesPlus = values.values().iterator().next().toString().split("(?<!\\\\)\\|");
// if (valuesPlus.length > 1) {
// values.clear();
// values.put("1", valuesPlus[0].trim());
//
// for (int i = 2; i <= valuesPlus.length; i++) {
// JSONArray quickItemsPlus = buildQuickFilterItems(quickFields, i);
// values.put(String.valueOf(i), valuesPlus[i - 1].trim());
// quickItems.addAll(quickItemsPlus);
// }
// filterExpr.put("values", values);
// }
// TODO v3.6-b4,3.7 值1|值2 UNTEST
// 转义可输入 \|
JSONObject values = filterExpr.getJSONObject("values");
String[] valuesPlus = values.values().iterator().next().toString().split("(?<!\\\\)\\|");
if (valuesPlus.length > 1) {
values.clear();
values.put("1", valuesPlus[0].trim());

for (int i = 2; i <= valuesPlus.length; i++) {
JSONArray quickItemsPlus = buildQuickFilterItems(quickFields, i);
values.put(String.valueOf(i), valuesPlus[i - 1].trim());
quickItems.addAll(quickItemsPlus);
}
filterExpr.put("values", values);
}

filterExpr.put("items", quickItems);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,10 @@ private Object evalRbJoin(int mode) {
if (n == null) continue;

// *N
boolean xN3 = false;
if (n instanceof ID && mode == 3) {
n = FieldValueHelper.getLabel((ID) n, StringUtils.EMPTY);
xN3 = true;
}

// 多引用
Expand All @@ -243,7 +245,7 @@ private Object evalRbJoin(int mode) {
nvList.add(n);
}
} else {
Object v = easyField.wrapValue(n);
Object v = xN3 ? n : easyField.wrapValue(n);
if (v == null) continue;

DisplayType dt = easyField.getDisplayType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public ModelAndView pageSystems() {
mv.getModel().put("Version", Application.VER);
mv.getModel().put("SN", "***" + auth.getString("sn").substring(12));
mv.getModel().put("VN", auth.getString("vn"));
mv.getModel().put("VNExpires", auth.getIntValue("vnExpiresLeft") < 0);

return mv;
}
Expand Down
43 changes: 28 additions & 15 deletions src/main/java/com/rebuild/web/general/GeneralListController.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,12 @@ public ModelAndView pageList(@PathVariable String entity, HttpServletRequest req
final Entity listEntity = MetadataHelper.getEntity(entity);
final EasyEntity easyEntity = EasyMetaFactory.valueOf(listEntity);

int listMode = ObjectUtils.toInt(easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_MODE), 1);
int listModeForce = getIntParameter(request, "mode", 0);
if (listModeForce >= 1 && listModeForce <= 3) listMode = listModeForce;
String listPage = listEntity.getMainEntity() != null ? "/general/detail-list" : "/general/record-list";
int listMode = ObjectUtils.toInt(easyEntity.getExtraAttr(EasyEntityConfigProps.ADV_LIST_MODE), 1);
if (listMode == 2) {
listPage = "/general/record-list2"; // Mode2
}
if (listMode == 2) listPage = "/general/record-list2"; // Mode2
if (listMode == 3) listPage = "/general/record-list3"; // Mode3

ModelAndView mv = createModelAndView(listPage, entity, user);

Expand Down Expand Up @@ -103,20 +104,20 @@ public ModelAndView pageList(@PathVariable String entity, HttpServletRequest req

// 侧栏

String advListHideFilters = easyEntity.getExtraAttr(EasyEntityConfigProps.ADV_LIST_HIDE_FILTERS);
String advListHideCharts = easyEntity.getExtraAttr(EasyEntityConfigProps.ADV_LIST_HIDE_CHARTS);
String advListShowCategory = easyEntity.getExtraAttr(EasyEntityConfigProps.ADV_LIST_SHOWCATEGORY);
mv.getModel().put(EasyEntityConfigProps.ADV_LIST_HIDE_FILTERS, advListHideFilters);
mv.getModel().put(EasyEntityConfigProps.ADV_LIST_HIDE_CHARTS, advListHideCharts);
mv.getModel().put(EasyEntityConfigProps.ADV_LIST_SHOWCATEGORY, StringUtils.isNotBlank(advListShowCategory));
String advListHideFilters = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_HIDE_FILTERS);
String advListHideCharts = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_HIDE_CHARTS);
String advListShowCategory = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_SHOWCATEGORY);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_HIDE_FILTERS, advListHideFilters);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_HIDE_CHARTS, advListHideCharts);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_SHOWCATEGORY, StringUtils.isNotBlank(advListShowCategory));

mv.getModel().put("hideAside",
BooleanUtils.toBoolean(advListHideFilters) && BooleanUtils.toBoolean(advListHideCharts) && StringUtils.isBlank(advListShowCategory));

// 查询面板

String advListFilterPane = easyEntity.getExtraAttr(EasyEntityConfigProps.ADV_LIST_FILTERPANE);
mv.getModel().put(EasyEntityConfigProps.ADV_LIST_FILTERPANE, advListFilterPane);
String advListFilterPane = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_FILTERPANE);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_FILTERPANE, advListFilterPane);

if (BooleanUtils.toBoolean(advListFilterPane)) {
JSONArray paneFields = new JSONArray();
Expand All @@ -135,8 +136,8 @@ public ModelAndView pageList(@PathVariable String entity, HttpServletRequest req
}

// v3.3 查询页签
String advListFilterTabs = easyEntity.getExtraAttr(EasyEntityConfigProps.ADV_LIST_FILTERTABS);
mv.getModel().put(EasyEntityConfigProps.ADV_LIST_FILTERTABS, advListFilterTabs);
String advListFilterTabs = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_FILTERTABS);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_FILTERTABS, advListFilterTabs);

// v3.6 记录合并
String enableRecordMerger = easyEntity.getExtraAttr(EasyEntityConfigProps.ENABLE_RECORD_MERGER);
Expand All @@ -148,9 +149,21 @@ public ModelAndView pageList(@PathVariable String entity, HttpServletRequest req

} else if (listMode == 2) {
listConfig = DataListManager.instance.getFieldsLayoutMode2(listEntity);
// 明细
if (listEntity.getMainEntity() != null) mv.getModel().put("DataListType", "DetailList");

// 明细列表
} else if (listMode == 3) {
listConfig = DataListManager.instance.getFieldsLayoutMode3(listEntity);
// 明细
if (listEntity.getMainEntity() != null) mv.getModel().put("DataListType", "DetailList");

// 侧栏
String advListShowFilters = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_MODE3_SHOWFILTERS);
String advListShowCategory = easyEntity.getExtraAttr(EasyEntityConfigProps.ADVLIST_MODE3_SHOWCATEGORY);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_MODE3_SHOWFILTERS, advListShowFilters);
mv.getModel().put(EasyEntityConfigProps.ADVLIST_MODE3_SHOWCATEGORY, advListShowCategory);
mv.getModel().put("hideAside",
!(BooleanUtils.toBoolean(advListShowFilters) || BooleanUtils.toBoolean(advListShowCategory)));
}

mv.getModel().put("DataListConfig", JSON.toJSONString(listConfig));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,17 @@ public void redirect(@IdParam ID anyId, HttpServletRequest request, HttpServletR
}

} else if (entity.getEntityCode() == EntityHelper.User) {
url = MessageFormat.format("../admin/bizuser/users#!/View/{0}/{1}", entity.getName(), anyId);
url = "newtab".equalsIgnoreCase(type)
? String.format("User/view/%s", anyId)
: String.format("../admin/bizuser/users#!/View/User/%s", anyId);
} else if (entity.getEntityCode() == EntityHelper.Department) {
url = MessageFormat.format("../admin/bizuser/departments#!/View/{0}/{1}", entity.getName(), anyId);
url = "newtab".equalsIgnoreCase(type)
? String.format("Department/view/%s", anyId)
: String.format("../admin/bizuser/departments#!/View/Department/%s", anyId);
} else if (entity.getEntityCode() == EntityHelper.Team) {
url = MessageFormat.format("../admin/bizuser/teams#!/View/{0}/{1}", entity.getName(), anyId);
url = String.format("../admin/bizuser/teams#!/View/Team/%s", anyId);
} else if (entity.getEntityCode() == EntityHelper.Role) {
url = MessageFormat.format("../admin/bizuser/role/{0}", anyId);
url = String.format("../admin/bizuser/role/%s", anyId);

} else if (MetadataHelper.isBusinessEntity(entity)) {
if ("dock".equalsIgnoreCase(type)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ public RespBody evalCalcFormula(@EntityParam Entity entity, HttpServletRequest r
} else if (dt == DisplayType.NUMBER || dt == DisplayType.DECIMAL) {
if (evalVal instanceof Number) {
evalVal = easyField.wrapValue(evalVal);
evalVal = EasyDecimal.clearFlaged(evalVal);
return RespBody.ok(evalVal);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/web/admin/bizuser/dept-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
</div>
<div class="col-12 col-lg-6">
<div class="dataTables_oper">
<button class="btn btn-space btn-secondary J_view" type="button" disabled="disabled"><i class="icon zmdi zmdi-folder"></i> [[${bundle.L('打开')}]]</button>
<button class="btn btn-space btn-secondary J_view" type="button" disabled="disabled"><i class="icon mdi mdi-folder-open"></i> [[${bundle.L('打开')}]]</button>
<button class="btn btn-primary btn-space J_new" type="button"><i class="icon mdi mdi-account-multiple-plus"></i> [[${bundle.L('新建部门')}]]</button>
<div class="btn-group btn-space">
<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown">[[${bundle.L('更多')}]] <i class="icon zmdi zmdi-more-vert"></i></button>
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/web/admin/bizuser/team-list.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
</div>
<div class="col-12 col-lg-6">
<div class="dataTables_oper">
<button class="btn btn-space btn-secondary J_view" type="button" disabled="disabled"><i class="icon zmdi zmdi-folder"></i> [[${bundle.L('打开')}]]</button>
<button class="btn btn-space btn-secondary J_view" type="button" disabled="disabled"><i class="icon mdi mdi-folder-open"></i> [[${bundle.L('打开')}]]</button>
<button class="btn btn-primary btn-space J_new" type="button"><i class="icon mdi mdi-briefcase-plus"></i> [[${bundle.L('新建团队')}]]</button>
<div class="btn-group btn-space">
<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown">[[${bundle.L('更多')}]] <i class="icon zmdi zmdi-more-vert"></i></button>
Expand Down
Loading

0 comments on commit 1d3cd39

Please sign in to comment.