diff --git a/@rbv b/@rbv index 0632edc28..55386d909 160000 --- a/@rbv +++ b/@rbv @@ -1 +1 @@ -Subproject commit 0632edc28ced726d01dcc7d949932aca976db5f7 +Subproject commit 55386d909e5ed6afe1fe7a0793c460451b491296 diff --git a/Dockerfile b/Dockerfile index ea89fee2b..b1ef76582 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ FROM amazoncorretto:11-alpine +#docker pull amazoncorretto:11-alpine RUN apk add ttf-dejavu EXPOSE 18080 COPY ./target/rebuild.jar /app/rebuild/rebuild-boot.jar - #COPY ./.deploy/SourceHanSansK-Regular.ttf /app/rebuild/.rebuild/ WORKDIR /app/rebuild/ diff --git a/pom.xml b/pom.xml index f9f488bba..5945c2c15 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.rebuild rebuild - 3.9.0-beta3 + 3.9.0 rebuild Building your business-systems freely! https://getrebuild.com/ diff --git a/src/main/java/com/rebuild/core/Application.java b/src/main/java/com/rebuild/core/Application.java index 6859a830f..c85dcce51 100644 --- a/src/main/java/com/rebuild/core/Application.java +++ b/src/main/java/com/rebuild/core/Application.java @@ -74,11 +74,11 @@ public class Application implements ApplicationListener /** * Rebuild Version */ - public static final String VER = "3.9.0-beta3"; + public static final String VER = "3.9.0"; /** * Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2} */ - public static final int BUILD = 3090003; + public static final int BUILD = 3090005; static { // Driver for DB diff --git a/src/main/java/com/rebuild/core/metadata/impl/EasyFieldConfigProps.java b/src/main/java/com/rebuild/core/metadata/impl/EasyFieldConfigProps.java index fdf53193d..dee5cc809 100644 --- a/src/main/java/com/rebuild/core/metadata/impl/EasyFieldConfigProps.java +++ b/src/main/java/com/rebuild/core/metadata/impl/EasyFieldConfigProps.java @@ -102,6 +102,10 @@ public class EasyFieldConfigProps { * 允许上传文件类型 */ public static final String FILE_SUFFIX = "fileSuffix"; + /** + * 指定上传路径 + */ + public static final String FILE_UPDIR = "fileUpdir"; /** * 允许上传数量 diff --git a/src/main/java/com/rebuild/core/service/dashboard/charts/builtin/ApprovalList.java b/src/main/java/com/rebuild/core/service/dashboard/charts/builtin/ApprovalList.java index 4994aae62..ed129ae96 100644 --- a/src/main/java/com/rebuild/core/service/dashboard/charts/builtin/ApprovalList.java +++ b/src/main/java/com/rebuild/core/service/dashboard/charts/builtin/ApprovalList.java @@ -121,6 +121,7 @@ public class ApprovalList extends ChartData implements BuiltinChart { Map ret = new HashMap<>(); ret.put("data", rearray); ret.put("stats", stats); + ret.put("overLimit", array.length >= 500); return (JSON) JSON.toJSON(ret); } } diff --git a/src/main/java/com/rebuild/core/service/general/QuickCodeReindexTask.java b/src/main/java/com/rebuild/core/service/general/QuickCodeReindexTask.java index 3c65259dd..0c72f2b0e 100644 --- a/src/main/java/com/rebuild/core/service/general/QuickCodeReindexTask.java +++ b/src/main/java/com/rebuild/core/service/general/QuickCodeReindexTask.java @@ -168,7 +168,7 @@ public class QuickCodeReindexTask extends HeavyTask { try { quickCode = HanLP.convertToPinyinString(nameVal, "", Boolean.FALSE); } catch (Exception e) { - log.error("QuickCode shorting error : " + nameVal, e); + log.error("QuickCode shorting error : {}", nameVal, e); quickCode = StringUtils.EMPTY; } } diff --git a/src/main/java/com/rebuild/core/support/integration/QiniuCloud.java b/src/main/java/com/rebuild/core/support/integration/QiniuCloud.java index 362d0cbe9..65022034a 100644 --- a/src/main/java/com/rebuild/core/support/integration/QiniuCloud.java +++ b/src/main/java/com/rebuild/core/support/integration/QiniuCloud.java @@ -344,8 +344,8 @@ public class QiniuCloud { String dt = CalendarUtils.getDateFormat("yyyyMMddHHmmssSSS").format(CalendarUtils.now()); String subdir = dt.substring(0, 8); String filePrefix = dt.substring(8); - // remove unsafe /\. - if (StringUtils.isNotBlank(updir)) subdir = updir.replaceAll("[./\\\\\\s]", ""); + // remove unsafe flags + if (StringUtils.isNotBlank(updir)) subdir = updir.replaceAll("[%./\\\\\\s]", ""); return String.format("rb/%s/%s__%s", subdir, filePrefix, fileName); } diff --git a/src/main/java/com/rebuild/web/robot/trigger/TriggerAdminController.java b/src/main/java/com/rebuild/web/robot/trigger/TriggerAdminController.java index d2a311d6b..4514c1e34 100644 --- a/src/main/java/com/rebuild/web/robot/trigger/TriggerAdminController.java +++ b/src/main/java/com/rebuild/web/robot/trigger/TriggerAdminController.java @@ -18,6 +18,7 @@ import com.rebuild.core.metadata.MetadataHelper; import com.rebuild.core.metadata.MetadataSorter; import com.rebuild.core.metadata.easymeta.EasyMetaFactory; import com.rebuild.core.service.approval.RobotApprovalManager; +import com.rebuild.core.service.datareport.DataReportManager; import com.rebuild.core.service.trigger.ActionFactory; import com.rebuild.core.service.trigger.ActionType; import com.rebuild.core.service.trigger.TriggerAction; @@ -158,24 +159,32 @@ public class TriggerAdminController extends BaseController { // 自动记录转换 String useTransform = configJson.getString("useTransform"); if (ID.isId(useTransform)) { - ConfigBean cb; try { - cb = TransformManager.instance.getTransformConfig(ID.valueOf(useTransform), sourceEntity); - } catch (Exception ignored) { - return null; + ConfigBean cb = TransformManager.instance.getTransformConfig(ID.valueOf(useTransform), sourceEntity); + return new String[]{ useTransform, cb.getString("name") }; + } catch (Exception deleted) { + return new String[]{ null, String.format("[%s]", useTransform.toUpperCase()) }; } - return new String[]{ useTransform, cb.getString("name") }; } // 自动审批 String useApproval = configJson.getString("useApproval"); if (ID.isId(useApproval)) { - ConfigBean cb; try { - cb = RobotApprovalManager.instance.getFlowDefinition(ID.valueOf(useApproval)); - } catch (Exception ignored) { - return null; + ConfigBean cb = RobotApprovalManager.instance.getFlowDefinition(ID.valueOf(useApproval)); + return new String[]{ useApproval, cb.getString("name") }; + } catch (Exception deleted) { + return new String[]{ null, String.format("[%s]", useApproval.toUpperCase()) }; + } + } + // 导出报表 + String useTemplate = configJson.getString("useTemplate"); + if (ID.isId(useTemplate)) { + try { + ConfigBean cb = DataReportManager.instance.getReportRaw(ID.valueOf(useTemplate)); + return new String[]{ useTemplate, cb.getString("name") }; + } catch (Exception deleted) { + return new String[]{ null, String.format("[%s]", useTemplate.toUpperCase()) }; } - return new String[]{ useApproval, cb.getString("name") }; } return null; diff --git a/src/main/resources/i18n/lang.zh_CN.json b/src/main/resources/i18n/lang.zh_CN.json index f4b5bd9ac..9cc251da0 100644 --- a/src/main/resources/i18n/lang.zh_CN.json +++ b/src/main/resources/i18n/lang.zh_CN.json @@ -3343,5 +3343,7 @@ "立即备份":"立即备份", "数据库":"数据库", "未备份":"未备份", - "选择要备份哪些数据":"选择要备份哪些数据" + "选择要备份哪些数据":"选择要备份哪些数据", + "分配与共享":"分配与共享", + "最多显示最近 500 条记录":"最多显示最近 500 条记录" } \ No newline at end of file diff --git a/src/main/resources/web/admin/metadata/field-edit.html b/src/main/resources/web/admin/metadata/field-edit.html index 236eb9944..1d4158dba 100644 --- a/src/main/resources/web/admin/metadata/field-edit.html +++ b/src/main/resources/web/admin/metadata/field-edit.html @@ -171,6 +171,12 @@ +
+ +
+ +
+
diff --git a/src/main/resources/web/assets/css/chart-design.css b/src/main/resources/web/assets/css/chart-design.css index b5d3c474c..02a84e744 100644 --- a/src/main/resources/web/assets/css/chart-design.css +++ b/src/main/resources/web/assets/css/chart-design.css @@ -101,12 +101,6 @@ See LICENSE and COMMERCIAL in the project root for license information. cursor: default; } -.axis .axis-head > a { - display: inline-block; - padding: 0 3px; - cursor: default; -} - .axis .axis-target { margin-left: 80px; min-height: 30px; diff --git a/src/main/resources/web/assets/js/admin/system-cfg.js b/src/main/resources/web/assets/js/admin/system-cfg.js index 36d1aeb63..9073b15c5 100644 --- a/src/main/resources/web/assets/js/admin/system-cfg.js +++ b/src/main/resources/web/assets/js/admin/system-cfg.js @@ -358,7 +358,7 @@ class DlgBackup extends RbAlert {
(this._$tips = c)}> {$L('请勿在业务高峰时段执行备份')}
-
@@ -371,6 +371,7 @@ class DlgBackup extends RbAlert { if (type === 0) return this.disabled(true, true) + const $btn = $(this._$btn).button('loading') $.post(`systems/backup?type=${type}`, (res) => { if (res.error_code === 0) { const data = res.data || {} @@ -380,6 +381,7 @@ class DlgBackup extends RbAlert { RbHighbar.error(res.error_msg) } this.disabled(false, false) + $btn.button('reset') }) } } diff --git a/src/main/resources/web/assets/js/charts/charts.js b/src/main/resources/web/assets/js/charts/charts.js index 163abde83..9c9cb8690 100644 --- a/src/main/resources/web/assets/js/charts/charts.js +++ b/src/main/resources/web/assets/js/charts/charts.js @@ -413,12 +413,18 @@ const ECHART_LEGEND_VOPT = { textStyle: { fontSize: 12 }, } -// K=千 M=百万 +// K=千 M=百万 B=亿 const shortNumber = function (num) { - if (rb.locale === 'zh_CN' && (num > 10000 || num < -10000)) return (num / 10000).toFixed(1) + '万' - if (num > 1000000 || num < -1000000) return (num / 1000000).toFixed(1) + 'M' + if (rb.locale === 'zh_CN') { + if (num > 100000000 || num < -100000000) return (num / 100000000).toFixed(1) + '亿' + else if (num > 1000000 || num < -1000000) return (num / 1000000).toFixed(1) + '百万' + else if (num > 10000 || num < -10000) return (num / 10000).toFixed(1) + '万' + return num + } + if (num > 100000000 || num < -100000000) return (num / 100000000).toFixed(1) + 'B' + else if (num > 1000000 || num < -1000000) return (num / 1000000).toFixed(1) + 'M' else if (num > 10000 || num < -10000) return (num / 1000).toFixed(1) + 'K' - else return num + return num } // 千分位 @@ -918,6 +924,11 @@ class ApprovalList extends BaseChart { })} + {data.overLimit && ( +
+ {$L('最多显示最近 500 条记录')} +
+ )}
) diff --git a/src/main/resources/web/assets/js/general/rb-forms.js b/src/main/resources/web/assets/js/general/rb-forms.js index e6d92c838..74a4af4d5 100644 --- a/src/main/resources/web/assets/js/general/rb-forms.js +++ b/src/main/resources/web/assets/js/general/rb-forms.js @@ -1857,7 +1857,15 @@ class RbFormFile extends RbFormImage { ) })}
- (this._fieldValue__input = c)} id={this._htmlid} accept={this.props.fileSuffix || null} multiple /> + (this._fieldValue__input = c)} + id={this._htmlid} + accept={this.props.fileSuffix || null} + multiple + data-updir={this.props.fileUpdir || null} + />
diff --git a/src/main/resources/web/notification/messages.html b/src/main/resources/web/notification/messages.html index 0e6d76464..f05564fb3 100644 --- a/src/main/resources/web/notification/messages.html +++ b/src/main/resources/web/notification/messages.html @@ -131,9 +131,6 @@