From d59326fe3e6df4345e0ab4b9021d01e123909046 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: Mon, 5 Feb 2024 18:25:22 +0800
Subject: [PATCH] Fix 3.5.6 (#713)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix: v3.5.5/3.5.6 默认所有人可发起
* sync: v3.6 bugfix
* fix: 重复检查
* v3.5.6
---
@rbv | 2 +-
pom.xml | 2 +-
src/main/java/com/rebuild/core/Application.java | 4 ++--
.../com/rebuild/core/metadata/MetadataHelper.java | 2 +-
.../service/approval/RobotApprovalManager.java | 8 +++++---
.../service/general/GeneralEntityService.java | 14 ++++++++++++--
.../general/recyclebin/RecycleBinCleanerJob.java | 2 +-
.../general/recyclebin/RestoreRecordCreator.java | 15 +++++++++++++++
.../web/assets/js/metadata/field-edit.js | 2 +-
9 files changed, 39 insertions(+), 12 deletions(-)
diff --git a/@rbv b/@rbv
index 5cd4303fe..75847403d 160000
--- a/@rbv
+++ b/@rbv
@@ -1 +1 @@
-Subproject commit 5cd4303fe6581ae6867546e527154c8053fc96a7
+Subproject commit 75847403de7aa7d2e4222d6ff4c8bd8803493715
diff --git a/pom.xml b/pom.xml
index 56f9ca7e4..4dc50d5e2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.rebuild
rebuild
- 3.5.5
+ 3.5.6
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 0b203ea6a..d182a8220 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.5";
+ public static final String VER = "3.5.6";
/**
* Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2}
*/
- public static final int BUILD = 3050510;
+ public static final int BUILD = 3050611;
static {
// Driver for DB
diff --git a/src/main/java/com/rebuild/core/metadata/MetadataHelper.java b/src/main/java/com/rebuild/core/metadata/MetadataHelper.java
index 0ca10bbea..2e144ec14 100644
--- a/src/main/java/com/rebuild/core/metadata/MetadataHelper.java
+++ b/src/main/java/com/rebuild/core/metadata/MetadataHelper.java
@@ -111,7 +111,7 @@ public class MetadataHelper {
try {
return getMetadataFactory().getEntity(entityName);
} catch (MissingMetaExcetion ex) {
- throw new MissingMetaExcetion(Language.L("实体 [%s] 已经不存在,请检查配置", entityName.toUpperCase()));
+ throw new MissingMetaExcetion(Language.L("实体 [%s] 已经不存在,请检查配置", StringUtils.upperCase(entityName)));
}
}
diff --git a/src/main/java/com/rebuild/core/service/approval/RobotApprovalManager.java b/src/main/java/com/rebuild/core/service/approval/RobotApprovalManager.java
index 1cd4ecb0b..0acb57e74 100644
--- a/src/main/java/com/rebuild/core/service/approval/RobotApprovalManager.java
+++ b/src/main/java/com/rebuild/core/service/approval/RobotApprovalManager.java
@@ -134,11 +134,13 @@ public class RobotApprovalManager implements ConfigManager {
// 发起人匹配
JSONArray users = root.getDataMap().getJSONArray("users");
if (users == null || users.isEmpty()) {
- users = JSON.parseArray("['OWNS']");
+ // v3.5.5/3.5.6 默认所有人可发起
+ users = JSON.parseArray("['ALL']");
}
- if (FlowNode.USER_ALL.equals(users.getString(0))
- || (FlowNode.USER_OWNS.equals(users.getString(0)) && owning.equals(user))
+ final String rootUser = users.getString(0);
+ if (FlowNode.USER_ALL.equals(rootUser)
+ || (FlowNode.USER_OWNS.equals(rootUser) && owning.equals(user))
|| UserHelper.parseUsers(users, recordId).contains(user)) {
// 过滤条件
diff --git a/src/main/java/com/rebuild/core/service/general/GeneralEntityService.java b/src/main/java/com/rebuild/core/service/general/GeneralEntityService.java
index 0d9d6c302..7ee85a1a7 100644
--- a/src/main/java/com/rebuild/core/service/general/GeneralEntityService.java
+++ b/src/main/java/com/rebuild/core/service/general/GeneralEntityService.java
@@ -215,7 +215,12 @@ public class GeneralEntityService extends ObservableService implements EntitySer
}
/**
- * 优先使用 `#createOrUpdate(Record) `
+ * 优先使用 `#createOrUpdate`。直接使用此方法请注意调用重复检查 `#getAndCheckRepeated`
+ *
+ * @param record
+ * @return
+ * @see #createOrUpdate(Record)
+ * @see #getAndCheckRepeated(Record, int)
*/
@Override
public Record create(Record record) {
@@ -226,7 +231,12 @@ public class GeneralEntityService extends ObservableService implements EntitySer
}
/**
- * 优先使用 `#createOrUpdate(Record) `
+ * 优先使用 `#createOrUpdate`。直接使用此方法请注意调用重复检查 `#getAndCheckRepeated`
+ *
+ * @param record
+ * @return
+ * @see #createOrUpdate(Record)
+ * @see #getAndCheckRepeated(Record, int)
*/
@Override
public Record update(Record record) {
diff --git a/src/main/java/com/rebuild/core/service/general/recyclebin/RecycleBinCleanerJob.java b/src/main/java/com/rebuild/core/service/general/recyclebin/RecycleBinCleanerJob.java
index ff1ce38d2..17d780c0e 100644
--- a/src/main/java/com/rebuild/core/service/general/recyclebin/RecycleBinCleanerJob.java
+++ b/src/main/java/com/rebuild/core/service/general/recyclebin/RecycleBinCleanerJob.java
@@ -59,7 +59,7 @@ public class RecycleBinCleanerJob extends DistributedJobLock {
// 相关引用也在此时一并删除,因为记录已经彻底删除
// Field: recordId
String[] refs = new String[] {
- "Attachment", "ShareAccess", "RobotApprovalStep", "NreferenceItem"
+ "Attachment", "ShareAccess", "RobotApprovalStep", "NreferenceItem", "TagItem"
};
for (String refName : refs) {
Entity refEntity = MetadataHelper.getEntity(refName);
diff --git a/src/main/java/com/rebuild/core/service/general/recyclebin/RestoreRecordCreator.java b/src/main/java/com/rebuild/core/service/general/recyclebin/RestoreRecordCreator.java
index b42a0427c..bf989e279 100644
--- a/src/main/java/com/rebuild/core/service/general/recyclebin/RestoreRecordCreator.java
+++ b/src/main/java/com/rebuild/core/service/general/recyclebin/RestoreRecordCreator.java
@@ -12,7 +12,10 @@ import cn.devezhao.persist4j.Field;
import cn.devezhao.persist4j.Record;
import cn.devezhao.persist4j.engine.StandardRecord;
import cn.devezhao.persist4j.record.JsonRecordCreator;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.rebuild.core.metadata.easymeta.DisplayType;
+import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
@@ -46,6 +49,18 @@ public class RestoreRecordCreator extends JsonRecordCreator {
continue;
}
+ // fix: v3.5.6/v3.6
+ DisplayType dt = EasyMetaFactory.getDisplayType(entity.getField(fileName));
+ if (dt == DisplayType.N2NREFERENCE || dt == DisplayType.TAG) {
+ // 只需保留一个作为标志,因为 NreferenceItem/TagItem 中并未删除
+ try {
+ JSONArray valueArray = (JSONArray) value;
+ value = valueArray.get(0);
+ } catch (Exception ignored) {
+ continue;
+ }
+ }
+
setFieldValue(entity.getField(fileName), value.toString(), record);
}
return record;
diff --git a/src/main/resources/web/assets/js/metadata/field-edit.js b/src/main/resources/web/assets/js/metadata/field-edit.js
index 40d4d9fc4..55508791f 100644
--- a/src/main/resources/web/assets/js/metadata/field-edit.js
+++ b/src/main/resources/web/assets/js/metadata/field-edit.js
@@ -561,7 +561,7 @@ const _loadRefsLabel = function ($dv, $dvClear) {
$dv.attr('data-value-id', CURRENT_BIZZ)
$dvClear && $dvClear.removeClass('hide')
} else if (dvid) {
- $.get(`/commons/search/read-labels?ids=${encodeURIComponent(dvid)}&ignoreMiss=true`, (res) => {
+ $.get(`/commons/search/read-labels?ids=${encodeURIComponent(dvid)}&ignoreMiss=false`, (res) => {
if (res.data) {
const ids = []
const labels = []