From 40d38f2451206c95253e35adcd1af02b07a39212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?REBUILD=20=E4=BC=81=E4=B8=9A=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F?= <42044143+getrebuild@users.noreply.github.com> Date: Sat, 2 Dec 2023 18:22:06 +0800 Subject: [PATCH] View bin data 105 (#687) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 3.6.0-dev * bump lib * code-viewport * Move assets/js/ > assets/general/js/ * Update @rbv * feat: history viewall * feat: 回收站多明细 * Move rb-advfilter.js * Move /general/ * feat: UniPush --- .eslintrc.js | 2 + @rbv | 2 +- pom.xml | 11 +- .../java/com/rebuild/core/Application.java | 4 +- .../core/service/notification/Message.java | 14 +++ .../java/com/rebuild/utils/MarkdownUtils.java | 2 +- .../web/admin/audit/RecycleBinController.java | 20 +++- .../audit/RevisionHistoryController.java | 79 ++++++++---- src/main/resources/web/_include/forms.html | 14 +-- .../resources/web/admin/audit/login-logs.html | 4 +- .../web/admin/audit/recycle-bin.html | 8 +- .../web/admin/audit/revision-history.html | 21 +++- .../web/admin/bizuser/dept-list.html | 2 +- .../web/admin/bizuser/dept-view.html | 2 +- .../web/admin/bizuser/role-view.html | 2 +- .../web/admin/bizuser/team-list.html | 2 +- .../web/admin/bizuser/team-view.html | 2 +- .../web/admin/bizuser/user-list.html | 2 +- .../web/admin/bizuser/user-view.html | 2 +- .../web/admin/integration/apis-manager.html | 12 +- .../web/admin/metadata/field-edit.html | 4 +- .../web/admin/robot/approval-design.html | 2 +- .../web/admin/robot/transform-design.html | 2 +- .../web/admin/robot/trigger-design.html | 2 +- src/main/resources/web/assets/css/rb-page.css | 26 ++++ .../web/assets/js/admin/apis-manager.js | 50 ++------ .../web/assets/js/admin/recycle-bin.js | 26 +++- .../web/assets/js/admin/revision-history.js | 113 ++++++++++++++---- .../assets/js/{ => general}/list-fields.js | 0 .../assets/js/{ => general}/print-preview.js | 0 .../assets/js/{ => general}/rb-advfilter.js | 0 .../assets/js/{ => general}/rb-approval.js | 0 .../assets/js/{ => general}/rb-assignshare.js | 0 .../js/{ => general}/rb-datalist.common.js | 0 .../assets/js/{ => general}/rb-datalist.js | 0 .../js/{ => general}/rb-forms.append.js | 0 .../web/assets/js/{ => general}/rb-forms.js | 0 .../js/{ => general}/rb-forms.protable.js | 0 .../assets/js/{ => general}/rb-view.append.js | 0 .../web/assets/js/{ => general}/rb-view.js | 0 .../resources/web/assets/js/rb-components.js | 35 ++++++ .../resources/web/dashboard/chart-design.html | 2 +- .../resources/web/general/detail-list.html | 2 +- .../resources/web/general/detail-view.html | 4 +- .../resources/web/general/list-fields.html | 2 +- .../resources/web/general/print-preview.html | 6 +- .../resources/web/general/record-list.html | 2 +- .../resources/web/general/record-view.html | 4 +- .../web/general/reference-search.html | 2 +- .../com/rebuild/utils/MarkdownUtilsTest.java | 2 +- 50 files changed, 347 insertions(+), 146 deletions(-) rename src/main/resources/web/assets/js/{ => general}/list-fields.js (100%) rename src/main/resources/web/assets/js/{ => general}/print-preview.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-advfilter.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-approval.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-assignshare.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-datalist.common.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-datalist.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-forms.append.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-forms.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-forms.protable.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-view.append.js (100%) rename src/main/resources/web/assets/js/{ => general}/rb-view.js (100%) diff --git a/.eslintrc.js b/.eslintrc.js index 4f247dbe2..8455e637a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -129,5 +129,7 @@ module.exports = { $escapeHtml: true, $isLight: true, RbGritter: true, + $formattedCode: true, + CodeViewport: true, }, } diff --git a/@rbv b/@rbv index b7e5e1659..cb938a242 160000 --- a/@rbv +++ b/@rbv @@ -1 +1 @@ -Subproject commit b7e5e165931230ab89ca6ac0ab61bc6c72d21e4a +Subproject commit cb938a242952b8f84cbf4a2b3387166b503f42fd diff --git a/pom.xml b/pom.xml index 28a94f966..199438505 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ org.springframework.boot spring-boot-starter-parent - 2.7.17 + 2.7.18 com.rebuild rebuild - 3.5.0-beta3 + 3.6.0-dev rebuild Building your business-systems freely! @@ -335,7 +335,7 @@ redis.clients jedis - 4.4.3 + 4.4.6 com.qiniu @@ -497,6 +497,11 @@ mammoth 1.5.0 + + com.getui.push + restful-sdk + 1.0.0.15 + diff --git a/src/main/java/com/rebuild/core/Application.java b/src/main/java/com/rebuild/core/Application.java index 7ad79e678..45c4241d2 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.5.0-beta3"; + public static final String VER = "3.6.0-dev"; /** * Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2} */ - public static final int BUILD = 3050003; + public static final int BUILD = 3060000; static { // Driver for DB diff --git a/src/main/java/com/rebuild/core/service/notification/Message.java b/src/main/java/com/rebuild/core/service/notification/Message.java index 670ab56f8..e9227df2f 100644 --- a/src/main/java/com/rebuild/core/service/notification/Message.java +++ b/src/main/java/com/rebuild/core/service/notification/Message.java @@ -9,6 +9,7 @@ import cn.devezhao.persist4j.engine.ID; import com.rebuild.core.privileges.UserService; +import com.rebuild.core.support.i18n.Language; import lombok.AccessLevel; import lombok.Data; import lombok.Setter; @@ -57,4 +58,17 @@ public Message(ID fromUser, ID toUser, String message, int type, ID relatedRecor this.type = type; this.relatedRecord = relatedRecord; } + + /** + * 获取通知标题 + * @return + */ + public String getTitle4Type() { + if (this.type == TYPE_ASSIGN) return Language.L("记录分配通知"); + else if (this.type == TYPE_SAHRE) return Language.L("记录共享通知"); + else if (this.type == TYPE_APPROVAL) return Language.L("记录审核通知"); + else if (this.type == TYPE_FEEDS) return Language.L("动态通知"); + else if (this.type == TYPE_PROJECT) return Language.L("项目任务通知"); + else return Language.L("新通知"); + } } diff --git a/src/main/java/com/rebuild/utils/MarkdownUtils.java b/src/main/java/com/rebuild/utils/MarkdownUtils.java index c17edffd5..415f92cbd 100644 --- a/src/main/java/com/rebuild/utils/MarkdownUtils.java +++ b/src/main/java/com/rebuild/utils/MarkdownUtils.java @@ -82,7 +82,7 @@ public static String render(String md, boolean targetBlank) { * @param md * @return */ - public static String cleanMd(String md) { + public static String cleanMarks(String md) { String html = render(md); return Jsoup.parse(html).body().text(); } diff --git a/src/main/java/com/rebuild/web/admin/audit/RecycleBinController.java b/src/main/java/com/rebuild/web/admin/audit/RecycleBinController.java index 4a66a86c1..9258c04fb 100644 --- a/src/main/java/com/rebuild/web/admin/audit/RecycleBinController.java +++ b/src/main/java/com/rebuild/web/admin/audit/RecycleBinController.java @@ -8,13 +8,16 @@ package com.rebuild.web.admin.audit; import cn.devezhao.persist4j.engine.ID; +import com.rebuild.api.RespBody; +import com.rebuild.core.Application; import com.rebuild.core.service.general.recyclebin.RecycleRestore; import com.rebuild.utils.JSONUtils; import com.rebuild.web.BaseController; +import com.rebuild.web.IdParam; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @@ -27,7 +30,7 @@ * @since 2019-08-20 */ @Slf4j -@Controller +@RestController @RequestMapping("/admin/audit/") public class RecycleBinController extends BaseController { @@ -37,7 +40,7 @@ public ModelAndView page() { } @RequestMapping("recycle-bin/restore") - public void dataList(HttpServletRequest request, HttpServletResponse response) { + public RespBody dataList(HttpServletRequest request) { boolean cascade = getBoolParameter(request, "cascade"); String ids = getParameterNotNull(request, "ids"); @@ -60,9 +63,14 @@ public void dataList(HttpServletRequest request, HttpServletResponse response) { } if (lastError != null && restored == 0) { - writeFailure(response, lastError); - } else { - writeSuccess(response, JSONUtils.toJSONObject("restored", restored)); + return RespBody.error(lastError); } + return RespBody.ok(JSONUtils.toJSONObject("restored", restored)); + } + + @GetMapping("recycle-bin/details") + public RespBody details(@IdParam ID id) { + Object[] o = Application.getQueryFactory().uniqueNoFilter(id, "recordContent"); + return RespBody.ok(o[0]); } } diff --git a/src/main/java/com/rebuild/web/admin/audit/RevisionHistoryController.java b/src/main/java/com/rebuild/web/admin/audit/RevisionHistoryController.java index 552ffb7c4..0c56a264c 100644 --- a/src/main/java/com/rebuild/web/admin/audit/RevisionHistoryController.java +++ b/src/main/java/com/rebuild/web/admin/audit/RevisionHistoryController.java @@ -16,7 +16,9 @@ import com.rebuild.core.metadata.MetadataHelper; import com.rebuild.core.metadata.easymeta.EasyField; import com.rebuild.core.metadata.easymeta.EasyMetaFactory; +import com.rebuild.core.support.i18n.I18nUtils; import com.rebuild.core.support.i18n.Language; +import com.rebuild.utils.JSONUtils; import com.rebuild.web.EntityController; import com.rebuild.web.IdParam; import org.springframework.web.bind.annotation.GetMapping; @@ -24,7 +26,10 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; +import java.util.ArrayList; +import java.util.Date; import java.util.Iterator; +import java.util.List; /** * @author devezhao @@ -39,42 +44,70 @@ public ModelAndView page() { return createModelAndView("/admin/audit/revision-history"); } - @RequestMapping("revision-history/details") + @GetMapping("revision-history/details") public JSON details(@IdParam ID revisionId) { Object[] rev = Application.createQueryNoFilter( "select revisionContent,belongEntity from RevisionHistory where revisionId = ?") .setParameter(1, revisionId) .unique(); - JSONArray contents = JSON.parseArray((String) rev[0]); - // 补充字段名称 + JSONArray contents = JSON.parseArray((String) rev[0]); if (MetadataHelper.containsEntity((String) rev[1])) { - Entity entity = MetadataHelper.getEntity((String) rev[1]); + paddingFieldsName(contents, MetadataHelper.getEntity((String) rev[1])); + } - for (Iterator iter = contents.iterator(); iter.hasNext(); ) { - JSONObject item = (JSONObject) iter.next(); - String fieldName = item.getString("field"); + return contents; + } - if (entity.containsField(fieldName)) { - EasyField easyField = EasyMetaFactory.valueOf(entity.getField(fieldName)); - // 排除不可查询字段 - if (!easyField.isQueryable()) { - iter.remove(); - continue; - } + @GetMapping("revision-history/details-list") + public JSON detailsList(@IdParam ID revisionId) { + Object[] o = Application.getQueryFactory().uniqueNoFilter(revisionId, "recordId,belongEntity"); + if (o == null) return JSONUtils.EMPTY_ARRAY; - fieldName = easyField.getLabel(); + Object[][] array = Application.createQueryNoFilter( + "select revisionContent,revisionType,revisionOn,revisionBy.fullName from RevisionHistory where recordId = ? order by autoId desc") + .setParameter(1, o[0]) + .array(); + + List list = new ArrayList<>(); + if (MetadataHelper.containsEntity((String) o[1])) { + Entity entity = MetadataHelper.getEntity((String) o[1]); + + for (Object[] item : array) { + JSONArray contents = JSON.parseArray((String) item[0]); + paddingFieldsName(contents, entity); + + item[0] = contents; + item[2] = I18nUtils.formatDate((Date) item[2]); + list.add(item); + } + } + return (JSON) JSON.toJSON(list); + } + + // 补充字段名称 + private void paddingFieldsName(JSONArray contents, Entity entity) { + for (Iterator iter = contents.iterator(); iter.hasNext(); ) { + JSONObject item = (JSONObject) iter.next(); + String fieldName = item.getString("field"); + + if (entity.containsField(fieldName)) { + EasyField easyField = EasyMetaFactory.valueOf(entity.getField(fieldName)); + // 排除不可查询字段 + if (!easyField.isQueryable()) { + iter.remove(); + continue; + } + + fieldName = easyField.getLabel(); + } else { + if ("SHARETO".equalsIgnoreCase(fieldName)) { + fieldName = Language.L("共享用户"); } else { - if ("SHARETO".equalsIgnoreCase(fieldName)) { - fieldName = Language.L("共享用户"); - } else { - fieldName = "[" + fieldName.toUpperCase() + "]"; - } + fieldName = "[" + fieldName.toUpperCase() + "]"; } - item.put("field", fieldName); } + item.put("field", fieldName); } - - return contents; } } diff --git a/src/main/resources/web/_include/forms.html b/src/main/resources/web/_include/forms.html index f31d9fdc2..4180dd6ed 100644 --- a/src/main/resources/web/_include/forms.html +++ b/src/main/resources/web/_include/forms.html @@ -1,10 +1,10 @@ - - - - - - - + + + + + + +