Skip to content

Commit

Permalink
Merge branch 'master' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
getrebuild committed Mar 12, 2024
2 parents ef49460 + ea86c42 commit df03b4a
Show file tree
Hide file tree
Showing 57 changed files with 573 additions and 333 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@

**_相较于同类产品,REBUILD 更侧重于业务需求实现,而非基础的技术框架或项目启动模板。_**

「开放式设计」是 REBUILD 的重要设计理念得益于研发团队成熟的 B 端产品经验,我们实现了对企业日常各类需求的可配置化管理。全图形化系统设计搭建,所见即所得。
「开放式设计」是 REBUILD 的重要设计理念得益于研发团队成熟的 B 端产品经验,我们实现了对企业日常各类需求的可配置化管理,全图形化设计零代码搭建,所见即所得。

更多详情介绍 [https://getrebuild.com/](https://getrebuild.com/)

> **福利:加入 REBUILD VIP 用户 QQ 交流群 819865721 1013051587 GET 使用技能**
## V3.5 新特性
## V3.6 新特性

本次更新为你带来众多功能增强与优化。

1. [新增] 批量审批
2. [新增] 表单引用组件
3. [新增] 触发器执行流程图
4. [新增] 触发器高级表达式函数 `ISNULL` `DATEPICKAT`
5. [新增] WORD 模板
6. [新增] 手机版支持导出报表
7. [优化] 手机版导航样式优化
8. [优化] 明细实体支持显示在视图页下方
1. [新增] 记录合并功能
2. [新增] 明细复制功能
3. [新增] 从 Excel 数据表导入实体和数据
4. [新增] 字段类型支持转换
5. [新增] 表单设计支持“只读”选项
6. [新增] 多个 FrontJS 函数
7. [优化] 首页仪表盘暗黑模式
8. [优化] 多项安全性更新
9. ...

更多更新详情请参见 [更新日志](https://getrebuild.com/docs/dev/changelog)
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@
<dependency>
<groupId>com.github.devezhao</groupId>
<artifactId>persist4j</artifactId>
<version>1.7.6</version>
<version>1.7.7</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/rebuild/core/ServerStatus.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ public final class ServerStatus {
* @return
*/
public static List<Status> getLastStatus(boolean realtime) {
// 60 秒缓存
if (realtime || System.currentTimeMillis() - LastCheckTime > 60 * 1000) {
// 30 秒缓存
if (realtime || System.currentTimeMillis() - LastCheckTime > 30 * 1000) {
checkAll();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,12 @@
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import org.apache.commons.lang3.StringUtils;

import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

Expand All @@ -50,16 +53,16 @@ private TransformManager() { }
*/
public JSONArray getTransforms(String sourceEntity, ID user) {
JSONArray data = new JSONArray();
for (ConfigBean c : getRawTransforms(sourceEntity)) {
JSONObject config = (JSONObject) c.getJSON("config");
for (ConfigBean cb : getRawTransforms(sourceEntity)) {
JSONObject config = (JSONObject) cb.getJSON("config");
// 过滤尚未配置或禁用的
if (config == null || c.getBoolean("disabled")) continue;
if (config == null || cb.getBoolean("disabled")) continue;

// 无字段映射
JSONObject fieldsMapping = config.getJSONObject("fieldsMapping");
if (fieldsMapping == null || fieldsMapping.isEmpty()) continue;

String target = c.getString("target");
String target = cb.getString("target");
Entity targetEntity = MetadataHelper.getEntity(target);

if (targetEntity.getMainEntity() == null) {
Expand All @@ -74,8 +77,8 @@ public JSONArray getTransforms(String sourceEntity, ID user) {
}

JSONObject item = EasyMetaFactory.toJSON(targetEntity);
item.put("transid", c.getID("id"));
item.put("transName", c.getString("name")); // v3.6 重启用
item.put("transid", cb.getID("id"));
item.put("transName", cb.getString("name"));
item.put("previewMode", config.getIntValue("transformMode") == 2);
data.add(item);
}
Expand Down Expand Up @@ -104,9 +107,7 @@ public ConfigBean getTransformConfig(ID configId, String sourceEntity) throws Co
public List<ConfigBean> getRawTransforms(String sourceEntity) {
final String cKey = "TransformManager31-" + sourceEntity;
Object cached = Application.getCommonsCache().getx(cKey);
if (cached != null) {
return (List<ConfigBean>) cached;
}
if (cached != null) return (List<ConfigBean>) cached;

Object[][] array = Application.createQueryNoFilter(
"select belongEntity,targetEntity,configId,config,isDisabled,name from TransformConfig where belongEntity = ?")
Expand All @@ -131,6 +132,7 @@ public List<ConfigBean> getRawTransforms(String sourceEntity) {
entries.add(entry);
}

sortByName(entries);
Application.getCommonsCache().putx(cKey, entries);
return entries;
}
Expand Down Expand Up @@ -184,10 +186,21 @@ public List<ConfigBean> getDetailImports(String targetEntity) {
}
}

sortByName(imports);
WEAK_CACHED.put(targetEntity, imports);
return imports;
}

// v3.6 排序
private void sortByName(List<ConfigBean> list) {
if (list == null || list.isEmpty()) return;

Comparator<Object> comparator = Collator.getInstance(Locale.CHINESE);
list.sort((o1, o2) -> comparator.compare(
org.apache.commons.lang3.ObjectUtils.defaultIfNull(o1.getString("name"), ""),
org.apache.commons.lang3.ObjectUtils.defaultIfNull(o2.getString("name"), "")));
}

@Override
public void clean(Object cfgid) {
final String cKey = "TransformManager31-" + getBelongEntity((ID) cfgid);
Expand Down
32 changes: 21 additions & 11 deletions src/main/java/com/rebuild/core/metadata/impl/Field2Schema.java
Original file line number Diff line number Diff line change
Expand Up @@ -438,27 +438,37 @@ public boolean castType(Field field, DisplayType toType, boolean force) {
meta.setString("displayType", toType.name());
Application.getCommonsService().update(meta, false);

Dialect dialect = Application.getPersistManagerFactory().getDialect();
final Table table = new Table(field.getOwnEntity(), dialect);
StringBuilder ddl = new StringBuilder();
table.generateFieldDDL(field, ddl);

String alterSql = String.format("alter table `%s` change column `%s` ",
field.getOwnEntity().getPhysicalName(), field.getPhysicalName());
alterSql += ddl.toString().trim();
// 类型生效
DynamicMetadataContextHolder.setSkipLanguageRefresh();
MetadataHelper.getMetadataFactory().refresh();
field = MetadataHelper.getField(field.getOwnEntity().getName(), field.getName());

String alterTypeSql = null;
try {
Application.getSqlExecutor().executeBatch(new String[]{alterSql}, DDL_TIMEOUT);
Dialect dialect = Application.getPersistManagerFactory().getDialect();
final Table table = new Table(field.getOwnEntity(), dialect);
StringBuilder ddl = new StringBuilder();
table.generateFieldDDL(field, ddl);

alterTypeSql = String.format("alter table `%s` change column `%s` ",
field.getOwnEntity().getPhysicalName(), field.getPhysicalName());
alterTypeSql += ddl.toString().trim().replace(" ", "");

Application.getSqlExecutor().executeBatch(new String[]{alterTypeSql}, DDL_TIMEOUT);
log.info("Cast field type : {}", alterTypeSql);

} catch (Throwable ex) {
// 还原
meta.setString("displayType", EasyMetaFactory.getDisplayType(field).name());
Application.getCommonsService().update(meta, false);

log.error("DDL ERROR : \n" + alterSql, ex);
log.error("DDL ERROR : \n" + alterTypeSql, ex);
throw new MetadataModificationException(ThrowableUtils.getRootCause(ex).getLocalizedMessage());
} finally {
MetadataHelper.getMetadataFactory().refresh();
DynamicMetadataContextHolder.isSkipLanguageRefresh(true);
}

MetadataHelper.getMetadataFactory().refresh();
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ public NoRecordFoundException() {
super();
}

public NoRecordFoundException(ID record) {
this(record, Boolean.FALSE);
public NoRecordFoundException(ID recordId) {
this(recordId, Boolean.FALSE);
}

public NoRecordFoundException(ID record, boolean i18n) {
public NoRecordFoundException(ID recordId, boolean i18n) {
this(i18n
? Language.L("无权读取此记录或记录已被删除")
: ("No Record found : " + record.toLiteral()));
: ("No Record found : " + recordId.toLiteral()));
}

public NoRecordFoundException(String msg, Throwable cause) {
Expand Down
Loading

0 comments on commit df03b4a

Please sign in to comment.