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

Merge branch 'fix/retract' into 'develop'

修复无法多次召回的bug

See merge request o2oa/o2oa!317
胡起 5 лет назад
Родитель
Сommit
089a966f55

+ 13 - 4
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManagerRetract.java

@@ -38,6 +38,7 @@ import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -115,10 +116,7 @@ class ActionManagerRetract extends BaseAction {
 				throw new ExceptionRetractNoneTaskCompleted(work.getTitle(), work.getId());
 			}
 
-			taskCompleted = emc.firstEqualAndEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME,
-					workLog.getJob(), TaskCompleted.activityToken_FIELDNAME, workLog.getFromActivityToken(),
-					TaskCompleted.person_FIELDNAME, distinguishedName);
-
+			taskCompleted = findLastTaskCompleted(business);
 			if (null == taskCompleted) {
 				throw new ExceptionNoTaskCompletedToRetract(workLog.getId(), distinguishedName);
 			}
@@ -137,6 +135,15 @@ class ActionManagerRetract extends BaseAction {
 
 	}
 
+
+	private TaskCompleted findLastTaskCompleted(Business business) throws Exception {
+		List<TaskCompleted> list = business.entityManagerContainer().listEqualAndEqualAndEqual(TaskCompleted.class,
+				TaskCompleted.job_FIELDNAME, workLog.getJob(), TaskCompleted.activityToken_FIELDNAME,
+				workLog.getFromActivityToken(), TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
+		return list.stream().sorted(Comparator.comparing(TaskCompleted::getStartTime).reversed()).findFirst()
+				.orElse(null);
+	}
+	
 	private void retract() throws Exception {
 		Req req = new Req();
 		req.setTaskCompleted(taskCompleted.getId());
@@ -214,6 +221,8 @@ class ActionManagerRetract extends BaseAction {
 		}
 	}
 
+
+
 	public static class Req extends V2RetractWi {
 
 	}

+ 10 - 4
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2Retract.java

@@ -1,6 +1,7 @@
 package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -107,10 +108,7 @@ class V2Retract extends BaseAction {
 				throw new ExceptionRetractNoneTaskCompleted(work.getTitle(), work.getId());
 			}
 
-			taskCompleted = emc.firstEqualAndEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME,
-					workLog.getJob(), TaskCompleted.activityToken_FIELDNAME, workLog.getFromActivityToken(),
-					TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
-
+			taskCompleted = findLastTaskCompleted(business);
 			if (null == taskCompleted) {
 				throw new ExceptionNoTaskCompletedToRetract(workLog.getId(), effectivePerson.getDistinguishedName());
 			}
@@ -129,6 +127,14 @@ class V2Retract extends BaseAction {
 
 	}
 
+	private TaskCompleted findLastTaskCompleted(Business business) throws Exception {
+		List<TaskCompleted> list = business.entityManagerContainer().listEqualAndEqualAndEqual(TaskCompleted.class,
+				TaskCompleted.job_FIELDNAME, workLog.getJob(), TaskCompleted.activityToken_FIELDNAME,
+				workLog.getFromActivityToken(), TaskCompleted.person_FIELDNAME, effectivePerson.getDistinguishedName());
+		return list.stream().sorted(Comparator.comparing(TaskCompleted::getStartTime).reversed()).findFirst()
+				.orElse(null);
+	}
+
 	private void retract() throws Exception {
 		Req req = new Req();
 		req.setTaskCompleted(taskCompleted.getId());

+ 1 - 1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/TaskCompleted.java

@@ -321,7 +321,7 @@ public class TaskCompleted extends SliceJpaObject implements ProjectionInterface
 	private String title;
 
 	public static final String startTime_FIELDNAME = "startTime";
-	@FieldDescribe("开始时间.")
+	@FieldDescribe("待办.已办的开始时间.")
 	@Temporal(TemporalType.TIMESTAMP)
 	/* 开始时间不能为空,如果为空排序可能出错 */
 	@Column(name = ColumnNamePrefix + startTime_FIELDNAME)