Просмотр исходного кода

去重一次提交中多条待阅和参阅

zhourui 5 лет назад
Родитель
Сommit
d450ffc124

+ 2 - 2
o2server/configSample/person.json

@@ -3,7 +3,7 @@
   "captchaLogin": true,
   "codeLogin": true,
   "bindLogin": true,
-  "faceLogin": false,
+  "faceLogin": true,
   "password": "(var v \\u003d person.getMobile();\\u000a return v.substring(v.length - 6))",
   "passwordPeriod": 0.0,
   "passwordRegex": "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}$",
@@ -35,4 +35,4 @@
   "###failureCount": "尝试登录次数###",
   "###tokenExpiredMinutes": "token时长,分钟###",
   "###personUnitOrderByAsc": "人员组织排序是否为升序,true为升序(默认),false为降序###"
-}
+}

+ 0 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionCreate.java

@@ -1,6 +1,5 @@
 package com.x.processplatform.assemble.surface.jaxrs.work;
 
-import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -24,7 +23,6 @@ import com.x.base.core.project.logger.Audit;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
 import com.x.base.core.project.organization.Unit;
-import com.x.base.core.project.tools.DefaultCharset;
 import com.x.base.core.project.tools.ListTools;
 import com.x.base.core.project.tools.SortTools;
 import com.x.organization.core.express.Organization;

+ 45 - 32
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/AeiObjects.java

@@ -5,6 +5,7 @@ import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.Map.Entry;
+import java.util.TreeSet;
 import java.util.stream.Collectors;
 
 import javax.script.Bindings;
@@ -981,22 +982,28 @@ public class AeiObjects extends GsonPropertyObject {
 	}
 
 	private void commitReadCreatePart() {
-		this.getCreateReads().stream().forEach(o -> {
-			Read obj;
-			try {
-				obj = this.getReads().stream().filter(p -> StringUtils.equals(o.getJob(), p.getJob())
-						&& StringUtils.equals(o.getPerson(), p.getPerson())).findFirst().orElse(null);
-				if (null == obj) {
-					this.business.entityManagerContainer().persist(o, CheckPersistType.all);
-					/* 创建待阅的参阅 */
-					this.createReview(new Review(this.getWork(), o.getPerson()));
-				} else {
-					o.copyTo(obj, JpaObject.FieldsUnmodify);
-				}
-			} catch (Exception e) {
-				logger.error(e);
-			}
-		});
+		// 去重可能的在同一次提交中产生的对同一个人的多份Read
+		this.getCreateReads().stream()
+				.collect(Collectors.collectingAndThen(
+						Collectors.toCollection(
+								() -> new TreeSet<>(Comparator.comparing(o -> o.getPerson() + o.getJob()))),
+						ArrayList::new))
+				.stream().forEach(o -> {
+					Read obj;
+					try {
+						obj = this.getReads().stream().filter(p -> StringUtils.equals(o.getJob(), p.getJob())
+								&& StringUtils.equals(o.getPerson(), p.getPerson())).findFirst().orElse(null);
+						if (null == obj) {
+							this.business.entityManagerContainer().persist(o, CheckPersistType.all);
+							/* 创建待阅的参阅 */
+							this.createReview(new Review(this.getWork(), o.getPerson()));
+						} else {
+							o.copyTo(obj, JpaObject.FieldsUnmodify);
+						}
+					} catch (Exception e) {
+						logger.error(e);
+					}
+				});
 	}
 
 	private void commitReadUpdatePart() {
@@ -1095,22 +1102,28 @@ public class AeiObjects extends GsonPropertyObject {
 	}
 
 	private void commitReviewCreatePart() {
-		this.getCreateReviews().stream().forEach(o -> {
-			Review obj;
-			try {
-				/* 参阅唯一 */
-				obj = this.getReviews().stream().filter(p -> StringUtils.equals(o.getJob(), p.getJob())
-						&& StringUtils.equals(o.getPerson(), p.getPerson())).findFirst().orElse(null);
-				if (null == obj) {
-					this.business.entityManagerContainer().persist(o, CheckPersistType.all);
-				} else {
-					// 如果逻辑上相同的已阅已经存在,覆盖内容.
-					o.copyTo(obj, JpaObject.FieldsUnmodify);
-				}
-			} catch (Exception e) {
-				logger.error(e);
-			}
-		});
+		// 去重可能的在同一次提交中产生的对同一个人的多份Review
+		this.getCreateReviews().stream()
+				.collect(Collectors.collectingAndThen(
+						Collectors.toCollection(
+								() -> new TreeSet<>(Comparator.comparing(o -> o.getPerson() + o.getJob()))),
+						ArrayList::new))
+				.stream().forEach(o -> {
+					Review obj;
+					try {
+						/* 参阅唯一 */
+						obj = this.getReviews().stream().filter(p -> StringUtils.equals(o.getJob(), p.getJob())
+								&& StringUtils.equals(o.getPerson(), p.getPerson())).findFirst().orElse(null);
+						if (null == obj) {
+							this.business.entityManagerContainer().persist(o, CheckPersistType.all);
+						} else {
+							// 如果逻辑上相同的已阅已经存在,覆盖内容.
+							o.copyTo(obj, JpaObject.FieldsUnmodify);
+						}
+					} catch (Exception e) {
+						logger.error(e);
+					}
+				});
 	}
 
 	private void commitReviewUpdatePart() {