diff --git a/pom.xml b/pom.xml
index 7b5dd34c4f..51487d96f6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.rebuild
rebuild
- 3.9.2
+ 3.9.3
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 3523df0be7..46b1b5188c 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.2";
+ public static final String VER = "3.9.3";
/**
* Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2}
*/
- public static final int BUILD = 3090207;
+ public static final int BUILD = 3090308;
static {
// Driver for DB
diff --git a/src/main/java/com/rebuild/core/privileges/UserHelper.java b/src/main/java/com/rebuild/core/privileges/UserHelper.java
index 57a040bb4e..2d37a8430f 100644
--- a/src/main/java/com/rebuild/core/privileges/UserHelper.java
+++ b/src/main/java/com/rebuild/core/privileges/UserHelper.java
@@ -65,7 +65,7 @@ public static boolean isAdmin(ID userId) {
try {
return Application.getUserStore().getUser(userId).isAdmin();
} catch (NoMemberFoundException ex) {
- log.error("No User found : " + userId);
+ log.error("No User found : {}", userId);
}
return false;
}
@@ -100,7 +100,7 @@ public static boolean isActive(ID bizzId) {
}
} catch (NoMemberFoundException ex) {
- log.error("No bizz found : " + bizzId);
+ log.error("No bizz found : {}", bizzId);
}
return false;
}
@@ -460,16 +460,21 @@ public static Set getMembersOfRole(ID roleId) {
* @return
*/
public static boolean isSelf(ID user, ID otherUserOrAnyRecordId) {
- ID createdBy = otherUserOrAnyRecordId;
- if (otherUserOrAnyRecordId.getEntityCode() != EntityHelper.User) {
- createdBy = getCreatedBy(otherUserOrAnyRecordId);
- if (createdBy == null) return false;
- }
+ try {
+ ID createdBy = otherUserOrAnyRecordId;
+ if (otherUserOrAnyRecordId.getEntityCode() != EntityHelper.User) {
+ createdBy = getCreatedBy(otherUserOrAnyRecordId);
+ if (createdBy == null) return false;
+ }
- if (createdBy.equals(user)) return true;
+ if (createdBy.equals(user)) return true;
- // 所有管理员被视为同一用户
- return isAdmin(createdBy) && isAdmin(user);
+ // 所有管理员被视为同一用户
+ return isAdmin(createdBy) && isAdmin(user);
+ } catch (Exception ex) {
+ log.warn("Check isSelf error : {}, {}", user, otherUserOrAnyRecordId, ex);
+ return false;
+ }
}
private static ID getCreatedBy(ID anyRecordId) {
diff --git a/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer39.java b/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer39.java
index 56187f6c3a..70cd9a08e5 100644
--- a/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer39.java
+++ b/src/main/java/com/rebuild/core/service/general/transform/RecordTransfomer39.java
@@ -21,14 +21,18 @@
import com.rebuild.core.configuration.general.TransformManager;
import com.rebuild.core.metadata.EntityHelper;
import com.rebuild.core.metadata.MetadataHelper;
+import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import com.rebuild.core.service.general.GeneralEntityService;
import com.rebuild.core.service.query.QueryHelper;
import com.rebuild.core.support.CommonsLog;
import lombok.extern.slf4j.Slf4j;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* @author Zixin
@@ -175,6 +179,12 @@ public JSON preview(ID sourceRecordId, ID specMainId, ID targetExistsRecordId) {
}
((JSONObject) formModel).put(GeneralEntityService.HAS_DETAILS, formModelDetailsMap);
+
+ // 明细导入
+ if (targetEntity.getDetailEntity() != null) {
+ ((JSONObject) formModel).put("detailImports", buildDetailImports39(targetEntity));
+ }
+
return formModel;
}
@@ -190,21 +200,6 @@ private void mergeExistsAndTarget(Record transTargetRecord) {
transTargetRecord.removeValue(EntityHelper.OwningUser);
transTargetRecord.removeValue(EntityHelper.OwningDept);
}
-
-// if (isPreview) {
-// Record existsRecordSnap = Application.getQueryFactory().recordNoFilter(targetExistsRecordId);
-// for (Field field : existsRecordSnap.getEntity().getFields()) {
-// EasyField easyField = EasyMetaFactory.valueOf(field);
-// if (MetadataHelper.isCommonsField(field) || easyField.getDisplayType() == DisplayType.SERIES) {
-// if (field.getType() == FieldType.PRIMARY) continue;
-//
-// String fieldName = field.getName();
-// if (EntityHelper.AutoId.equals(fieldName) || EntityHelper.QuickCode.equals(fieldName)) continue;
-//
-// transTargetRecord.setObjectValue(fieldName, existsRecordSnap.getObjectValue(fieldName));
-// }
-// }
-// }
}
// 获取主记录(如果是明细的话)
@@ -215,4 +210,44 @@ private ID forceGetSpecMainId(ID targetRecordId) {
}
return null;
}
+
+ // ~~
+
+ /**
+ * @param mainEntity
+ * @return
+ */
+ public static List