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

Merge branch 'fix/#365' into 'develop'

Fix/#365

See merge request o2oa/o2oa!1600
o2null 5 лет назад
Родитель
Сommit
0d8f2e26bf
49 измененных файлов с 284 добавлено и 450 удалено
  1. 10 15
      o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java
  2. 5 79
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/jaxrs/StandardJaxrsAction.java
  3. 5 2
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/content/factory/WorkCompletedFactory.java
  4. 5 2
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/content/factory/WorkFactory.java
  5. 3 21
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/element/factory/ApplicationFactory.java
  6. 8 12
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/element/factory/ProcessFactory.java
  7. 5 4
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionApplicationDictOrphan.java
  8. 5 4
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionFormOrphan.java
  9. 5 4
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionProcessOrphan.java
  10. 3 2
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionScriptOrphan.java
  11. 4 4
      o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/input/BaseAction.java
  12. 2 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/ApplicationFactory.java
  13. 0 20
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/FileFactory.java
  14. 5 45
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/ProcessFactory.java
  15. 5 4
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionListWithPerson.java
  16. 5 5
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionListWithPersonComplex.java
  17. 5 5
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionListWithPersonLike.java
  18. 12 15
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionManageListWithPersonComplex.java
  19. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/process/ActionListWithPersonWithApplicationFilter.java
  20. 11 10
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionFilterAttribute.java
  21. 10 10
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionFilterAttributeFilter.java
  22. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListCountWithApplication.java
  23. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListCountWithProcess.java
  24. 15 12
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionFilterAttribute.java
  25. 13 12
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionFilterAttributeFilter.java
  26. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListCountWithApplication.java
  27. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListCountWithProcess.java
  28. 0 31
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/BaseAction.java
  29. 11 10
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionFilterAttribute.java
  30. 10 10
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionFilterAttributeFilter.java
  31. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListCountWithApplication.java
  32. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListCountWithProcess.java
  33. 2 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionProcessingNeural.java
  34. 15 14
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionFilterAttribute.java
  35. 14 14
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionFilterAttributeFilter.java
  36. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListCountWithApplication.java
  37. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListCountWithProcess.java
  38. 12 11
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionFilterAttribute.java
  39. 13 21
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionManageFilterAttribute.java
  40. 7 6
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionFilterAttribute.java
  41. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListCountWithApplication.java
  42. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListCountWithProcess.java
  43. 7 6
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionManageFilterAttribute.java
  44. 3 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionManageListCountWithProcess.java
  45. 6 5
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/attachment/ActionCopyToWorkCompleted.java
  46. 3 2
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/neural/NeuralAnalyzer.java
  47. 3 2
      o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/query/ActionListWithPerson.java
  48. 3 2
      o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/query/ActionListWithPersonLike.java
  49. 1 1
      o2server/x_query_service_processing/src/main/java/com/x/query/service/processing/jaxrs/neural/Learn.java

+ 10 - 15
o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java

@@ -10,6 +10,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -244,7 +245,8 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 			CriteriaQuery<T> cq = cb.createQuery(cls);
 			Root<T> root = cq.from(cls);
 			Predicate p = cb.equal(root.get(field.getName()), flag);
-			List<T> list = em.createQuery(cq.select(root).where(p).distinct(true)).setMaxResults(2).getResultList();
+			List<T> list = em.createQuery(cq.select(root).where(p)).setMaxResults(2).getResultList().stream().distinct()
+					.collect(Collectors.toList());
 			switch (list.size()) {
 			case 0:
 				break;
@@ -252,7 +254,7 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 				t = list.get(0);
 				break out;
 			case 2:
-				throw new Exception("flag get multiple entity flag:" + flag + ", class:" + cls.getName()
+				throw new IllegalStateException("flag get multiple entity flag:" + flag + ", class:" + cls.getName()
 						+ ", attribute:" + field.getName() + ".");
 			}
 		}
@@ -265,7 +267,7 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 
 	private <T extends JpaObject> List<T> flag(List<String> FLAGS, Class<T> cls, List<Field> fields) throws Exception {
 		if (ListTools.isEmpty(fields)) {
-			throw new Exception("attributes can not be empty.");
+			throw new IllegalStateException("attributes can not be empty.");
 		}
 		List<T> list = new ArrayList<>();
 		if (ListTools.isEmpty(FLAGS)) {
@@ -582,9 +584,7 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		CriteriaQuery<T> cq = cb.createQuery(cls);
 		Root<T> root = cq.from(cls);
 		cq.select(root).where(cb.isMember(root.get(attribute), cb.literal(values)));
-		List<T> os = em.createQuery(cq.distinct(true)).getResultList();
-		List<T> list = new ArrayList<>(os);
-		return list;
+		return new ArrayList<>(em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList()));
 	}
 
 	public <T extends JpaObject> List<T> listIsMember(Class<T> cls, String attribute, Object value) throws Exception {
@@ -888,9 +888,8 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<T> root = cq.from(cls);
 		cq.select(root.get(JpaObject.id_FIELDNAME)).where(cb.isMember(root.get(attribute), cb.literal(values)));
-		List<String> os = em.createQuery(cq.distinct(true)).getResultList();
-		List<String> list = new ArrayList<>(os);
-		return list;
+		return new ArrayList<>(
+				em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList()));
 	}
 
 	public <T extends JpaObject, W extends Object> List<String> idsNotIn(Class<T> cls, String attribute,
@@ -900,9 +899,7 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<T> root = cq.from(cls);
 		cq.select(root.get(JpaObject.id_FIELDNAME)).where(cb.not(root.get(attribute).in(values)));
-		List<String> os = em.createQuery(cq.distinct(true)).getResultList();
-		List<String> list = new ArrayList<>(os);
-		return list;
+		return new ArrayList<>(em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList()));
 	}
 
 	public <T extends JpaObject, W extends Object> List<String> idsEqualAndNotIn(Class<T> cls, String attribute,
@@ -914,9 +911,7 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		Predicate p = cb.not(root.get(attribute).in(values));
 		p = cb.and(p, cb.equal(root.get(otherAttribute), otherValue));
 		cq.select(root.get(JpaObject.id_FIELDNAME)).where(p);
-		List<String> os = em.createQuery(cq.distinct(true)).getResultList();
-		List<String> list = new ArrayList<>(os);
-		return list;
+		return new ArrayList<>(em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList()));
 	}
 
 	public <T extends JpaObject> List<String> idsIsMember(Class<T> cls, String attribute, Object value)

+ 5 - 79
o2server/x_base_core_project/src/main/java/com/x/base/core/project/jaxrs/StandardJaxrsAction.java

@@ -624,7 +624,7 @@ public abstract class StandardJaxrsAction extends AbstractJaxrsAction {
 			ListOrderedMap<String, Collection<?>> notIns, ListOrderedMap<String, Object> members,
 			ListOrderedMap<String, Object> notMembers, boolean andJoin, String order) throws Exception {
 		EntityManager em = emc.get(cls);
-		String str = "SELECT count(distinct o) FROM " + cls.getCanonicalName() + " o";
+		String str = "SELECT count(o) FROM " + cls.getCanonicalName() + " o";
 		/* 预编译的SQL语句的参数序号,必须由1开始 */
 		Integer index = 1;
 		List<String> ps = new ArrayList<>();
@@ -696,80 +696,6 @@ public abstract class StandardJaxrsAction extends AbstractJaxrsAction {
 		return (Long) query.getSingleResult() + 1;
 	}
 
-	// private <T extends JpaObject> Long count(EntityManagerContainer emc, Class<T>
-	// cls, EqualsTerms equals,
-	// NotEqualsTerms notEquals, LikeTerms likes, InTerms ins, NotInTerms notIns,
-	// MemberTerms members,
-	// NotMemberTerms notMembers, boolean andJoin) throws Exception {
-	// EntityManager em = emc.get(cls);
-	// String str = "SELECT count(distinct o) FROM " + cls.getCanonicalName() + "
-	// o";
-	// /* 预编译的SQL语句的参数序号,必须由1开始 */
-	// Integer index = 1;
-	// List<String> ps = new ArrayList<>();
-	// List<Object> vs = new ArrayList<>();
-	// if (null != equals && (!equals.isEmpty())) {
-	// for (Entry<String, Object> en : equals.entrySet()) {
-	// ps.add("o." + en.getKey() + (" = ?" + index));
-	// vs.add(en.getValue());
-	// index++;
-	// }
-	// }
-	// if (null != notEquals && (!notEquals.isEmpty())) {
-	// for (Entry<String, Object> en : notEquals.entrySet()) {
-	// ps.add("(o." + en.getKey() + (" <> ?" + index) + " or o." + en.getKey() + "
-	// is null)");
-	// vs.add(en.getValue());
-	// index++;
-	// }
-	// }
-	// if (null != likes && (!likes.isEmpty())) {
-	// List<String> ors = new ArrayList<>();
-	// for (Entry<String, Object> en : likes.entrySet()) {
-	// ors.add("o." + en.getKey() + (" Like ?" + index));
-	// vs.add("%" + en.getValue() + "%");
-	// index++;
-	// }
-	// ps.add("(" + StringUtils.join(ors, " or ") + ")");
-	// }
-	// if (null != ins && (!ins.isEmpty())) {
-	// for (Entry<String, Collection<?>> en : ins.entrySet()) {
-	// ps.add("o." + en.getKey() + (" in ?" + index));
-	// vs.add(en.getValue());
-	// index++;
-	// }
-	// }
-	// if (null != notIns && (!notIns.isEmpty())) {
-	// for (Entry<String, Collection<?>> en : notIns.entrySet()) {
-	// ps.add("o." + en.getKey() + (" not in ?" + index));
-	// vs.add(en.getValue());
-	// index++;
-	// }
-	// }
-	// if (null != members && (!members.isEmpty())) {
-	// for (Entry<String, Object> en : members.entrySet()) {
-	// ps.add(("?" + index) + (" member of o." + en.getKey()));
-	// vs.add(en.getValue());
-	// index++;
-	// }
-	// }
-	// if (null != notMembers && (!notMembers.isEmpty())) {
-	// for (Entry<String, Object> en : notMembers.entrySet()) {
-	// ps.add(("?" + index) + (" not member of o." + en.getKey()));
-	// vs.add(en.getValue());
-	// index++;
-	// }
-	// }
-	// if (!ps.isEmpty()) {
-	// str += " where " + StringUtils.join(ps, (andJoin ? " and " : " or "));
-	// }
-	// Query query = em.createQuery(str, cls);
-	// for (int i = 0; i < vs.size(); i++) {
-	// query.setParameter(i + 1, vs.get(i));
-	// }
-	// return (Long) query.getSingleResult();
-	// }
-
 	private <T extends JpaObject> Long count(EntityManagerContainer emc, Class<T> cls, EqualsTerms equals,
 			NotEqualsTerms notEquals, LikeTerms likes, InTerms ins, NotInTerms notIns, MemberTerms members,
 			NotMemberTerms notMembers, boolean andJoin) throws Exception {
@@ -1121,7 +1047,7 @@ public abstract class StandardJaxrsAction extends AbstractJaxrsAction {
 				selections.add(root.get(field));
 			}
 
-			List<Tuple> os = em.createQuery(cq.multiselect(selections).distinct(true))
+			List<Tuple> os = em.createQuery(cq.multiselect(selections))
 					.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
 
 			List<W> ws = new ArrayList<W>();
@@ -1181,7 +1107,7 @@ public abstract class StandardJaxrsAction extends AbstractJaxrsAction {
 				selections.add(root.get(field));
 			}
 
-			List<Tuple> os = em.createQuery(cq.multiselect(selections).distinct(true))
+			List<Tuple> os = em.createQuery(cq.multiselect(selections))
 					.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
 
 			List<W> ws = new ArrayList<W>();
@@ -1236,8 +1162,8 @@ public abstract class StandardJaxrsAction extends AbstractJaxrsAction {
 				cq.orderBy(cb.asc(root.get(sequenceField)));
 			}
 
-			List<T> os = em.createQuery(cq.select(root).distinct(true))
-					.setMaxResults(Math.max(Math.min(count, list_max), list_min)).getResultList();
+			List<T> os = em.createQuery(cq.select(root)).setMaxResults(Math.max(Math.min(count, list_max), list_min))
+					.getResultList();
 
 			ActionResult<List<T>> result = new ActionResult<>();
 			result.setData(new ArrayList<T>(os));

+ 5 - 2
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/content/factory/WorkCompletedFactory.java

@@ -1,6 +1,7 @@
 package com.x.processplatform.assemble.designer.content.factory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -45,7 +46,8 @@ public class WorkCompletedFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.application), applicationId);
-		return em.createQuery(cq.select(root.get(WorkCompleted_.job)).where(p).distinct(true)).getResultList();
+		return em.createQuery(cq.select(root.get(WorkCompleted_.job)).where(p)).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 
 	public List<String> listJobWithProcess(String processId) throws Exception {
@@ -54,6 +56,7 @@ public class WorkCompletedFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.process), processId);
-		return em.createQuery(cq.select(root.get(WorkCompleted_.job)).where(p).distinct(true)).getResultList();
+		return em.createQuery(cq.select(root.get(WorkCompleted_.job)).where(p)).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 }

+ 5 - 2
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/content/factory/WorkFactory.java

@@ -1,6 +1,7 @@
 package com.x.processplatform.assemble.designer.content.factory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -45,7 +46,8 @@ public class WorkFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), applicationId);
-		return em.createQuery(cq.select(root.get(Work_.job)).where(p).distinct(true)).getResultList();
+		return em.createQuery(cq.select(root.get(Work_.job)).where(p)).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 
 	public List<String> listJobWithProcess(String processId) throws Exception {
@@ -54,6 +56,7 @@ public class WorkFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.process), processId);
-		return em.createQuery(cq.select(root.get(Work_.job)).where(p).distinct(true)).getResultList();
+		return em.createQuery(cq.select(root.get(Work_.job)).where(p)).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 }

+ 3 - 21
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/element/factory/ApplicationFactory.java

@@ -57,25 +57,7 @@ public class ApplicationFactory extends AbstractFactory {
 		return em.createQuery(cq).getResultList();
 	}
 
-	// /* 如果是isManager列示所有应用,如果不是则判断权限 */
-	// public List<String> listApplicationCategoryWithPerson(EffectivePerson
-	// effectivePerson) throws Exception {
-	// EntityManager em = this.entityManagerContainer().get(Application.class);
-	// CriteriaBuilder cb = em.getCriteriaBuilder();
-	// CriteriaQuery<String> cq = cb.createQuery(String.class);
-	// Root<Application> root = cq.from(Application.class);
-	// cq.select(root.get(Application_.applicationCategory)).distinct(true);
-	// if (!effectivePerson.isManager()) {
-	// Predicate p = cb.isMember(effectivePerson.getDistinguishedName(),
-	// root.get(Application_.controllerList));
-	// p = cb.or(p, cb.equal(root.get(Application_.creatorPerson),
-	// effectivePerson.getDistinguishedName()));
-	// cq.where(p);
-	// }
-	// return em.createQuery(cq).getResultList();
-	// }
-
-	/* 如果是isManager列示所有应用,如果不是则判断权限 */
+	// 如果是isManager列示所有应用,如果不是则判断权限
 	public Long countWithPersonWithApplicationCategory(EffectivePerson effectivePerson, String applicationCategory)
 			throws Exception {
 		EntityManager em = this.entityManagerContainer().get(Application.class);
@@ -88,8 +70,8 @@ public class ApplicationFactory extends AbstractFactory {
 					cb.or(cb.isMember(effectivePerson.getDistinguishedName(), root.get(Application_.controllerList)),
 							cb.equal(root.get(Application_.creatorPerson), effectivePerson.getDistinguishedName())));
 		}
-		cq.select(root.get(Application_.id)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Application_.id)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		return new Long(list.size());
 	}
 

+ 8 - 12
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/element/factory/ProcessFactory.java

@@ -26,8 +26,7 @@ public class ProcessFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Process> root = cq.from(Process.class);
 		Predicate p = cb.equal(root.get(Process_.application), application);
-		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)),
-				cb.isNull(root.get(Process_.editionEnable))));
+		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)), cb.isNull(root.get(Process_.editionEnable))));
 		cq.select(root.get(Process_.id)).where(p);
 		return em.createQuery(cq).getResultList();
 	}
@@ -38,8 +37,7 @@ public class ProcessFactory extends AbstractFactory {
 		CriteriaQuery<Process> cq = cb.createQuery(Process.class);
 		Root<Process> root = cq.from(Process.class);
 		Predicate p = cb.equal(root.get(Process_.application), application);
-		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)),
-				cb.isNull(root.get(Process_.editionEnable))));
+		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)), cb.isNull(root.get(Process_.editionEnable))));
 		cq.select(root).where(p);
 		return em.createQuery(cq).getResultList();
 	}
@@ -74,7 +72,6 @@ public class ProcessFactory extends AbstractFactory {
 		Predicate p = cb.equal(root.get(Process_.application), application);
 		p = cb.and(p, cb.isNotNull(root.get(Process_.edition)));
 		p = cb.and(p, cb.notEqual(root.get(Process_.edition), ""));
-
 		Subquery<Process> subquery = cq.subquery(Process.class);
 		Root<Process> subRoot = subquery.from(Process.class);
 		Predicate subP = cb.conjunction();
@@ -82,9 +79,8 @@ public class ProcessFactory extends AbstractFactory {
 		subP = cb.and(subP, cb.isTrue(subRoot.get(Process_.editionEnable)));
 		subquery.select(subRoot).where(subP);
 		p = cb.and(p, cb.not(cb.exists(subquery)));
-
-		cq.distinct(true).select(root.get(Process_.edition)).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.edition)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public Process getEnabledProcess(String application, String edition) throws Exception {
@@ -97,7 +93,7 @@ public class ProcessFactory extends AbstractFactory {
 		p = cb.and(p, cb.isTrue(root.get(Process_.editionEnable)));
 		cq.select(root).where(p).orderBy(cb.desc(root.get(Process_.editionNumber)));
 		List<Process> list = em.createQuery(cq).getResultList();
-		if(list!=null && !list.isEmpty()){
+		if (list != null && !list.isEmpty()) {
 			return list.get(0);
 		}
 		return null;
@@ -110,16 +106,16 @@ public class ProcessFactory extends AbstractFactory {
 	}
 
 	public Double getMaxEditionNumber(String application, String edition) throws Exception {
-		if (StringUtils.isNotEmpty(edition)){
+		if (StringUtils.isNotEmpty(edition)) {
 			EntityManager em = this.entityManagerContainer().get(Process.class);
 			CriteriaBuilder cb = em.getCriteriaBuilder();
 			CriteriaQuery<Double> cq = cb.createQuery(Double.class);
 			Root<Process> root = cq.from(Process.class);
 			Predicate p = cb.equal(root.get(Process_.application), application);
-			p = cb.and(p,cb.equal(root.get(Process_.edition), edition));
+			p = cb.and(p, cb.equal(root.get(Process_.edition), edition));
 			cq.select(cb.max(root.get(Process_.editionNumber))).where(p);
 			Double max = em.createQuery(cq).getSingleResult();
-			if(max == null || max < 1.0){
+			if (max == null || max < 1.0) {
 				max = 1.0;
 			}
 			return max;

+ 5 - 4
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionApplicationDictOrphan.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.designer.jaxrs.elementtool;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -49,8 +50,8 @@ class ActionApplicationDictOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ApplicationDict> root = cq.from(ApplicationDict.class);
 		Predicate p = cb.not(root.get(ApplicationDict_.application).in(applicationIds));
-		cq.select(root.get(ApplicationDict_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(ApplicationDict_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private List<String> listOrphanApplicationDictItem(Business business, List<String> applicationDictIds)
@@ -60,8 +61,8 @@ class ActionApplicationDictOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ApplicationDictItem> root = cq.from(ApplicationDictItem.class);
 		Predicate p = cb.not(root.get(ApplicationDictItem_.bundle).in(applicationDictIds));
-		cq.select(root.get(ApplicationDictItem_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(ApplicationDictItem_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public static class WoApplicationDict extends ApplicationDict {

+ 5 - 4
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionFormOrphan.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.designer.jaxrs.elementtool;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -47,8 +48,8 @@ class ActionFormOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Form> root = cq.from(Form.class);
 		Predicate p = cb.not(root.get(Form_.application).in(applicationIds));
-		cq.select(root.get(Form_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Form_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private List<String> listOrphanFormField(Business business, List<String> formIds) throws Exception {
@@ -57,8 +58,8 @@ class ActionFormOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<FormField> root = cq.from(FormField.class);
 		Predicate p = cb.not(root.get(FormField_.form).in(formIds));
-		cq.select(root.get(FormField_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(FormField_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public static class WoForm extends Form {

+ 5 - 4
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionProcessOrphan.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.designer.jaxrs.elementtool;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -88,8 +89,8 @@ class ActionProcessOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Process> root = cq.from(Process.class);
 		Predicate p = cb.not(root.get(Process_.application).in(applicationIds));
-		cq.select(root.get(Process_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private <T extends JpaObject, W> List<String> listOrphanProcessElement(Business business, List<String> processIds,
@@ -99,8 +100,8 @@ class ActionProcessOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<T> root = cq.from(copier.getOrigClass());
 		Predicate p = cb.not(root.get(Agent.process_FIELDNAME).in(processIds));
-		cq.select(root.get(JpaObject.id_FIELDNAME)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(JpaObject.id_FIELDNAME)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public static class WoProcess extends Process {

+ 3 - 2
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/elementtool/ActionScriptOrphan.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.designer.jaxrs.elementtool;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -43,8 +44,8 @@ class ActionScriptOrphan extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Script> root = cq.from(Script.class);
 		Predicate p = cb.not(root.get(Script_.application).in(applicationIds));
-		cq.select(root.get(Script_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Script_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public static class WoScript extends Script {

+ 4 - 4
o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/jaxrs/input/BaseAction.java

@@ -24,8 +24,8 @@ abstract class BaseAction extends StandardJaxrsAction {
 
 //	protected Ehcache inputCache = ApplicationCache.instance().getCache(BaseAction.class.getName(), 100,
 //			ApplicationCache.MINUTES_20, ApplicationCache.MINUTES_20);
-	
-	protected CacheCategory cacheCategory= new CacheCategory(BaseAction.class);
+
+	protected CacheCategory cacheCategory = new CacheCategory(BaseAction.class);
 
 	public enum Method {
 		cover, create, ignore;
@@ -51,7 +51,7 @@ abstract class BaseAction extends StandardJaxrsAction {
 		CriteriaQuery<Application> cq = cb.createQuery(Application.class);
 		Root<Application> root = cq.from(Application.class);
 		Predicate p = cb.equal(root.get(Application_.alias), alias);
-		List<Application> os = em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
+		List<Application> os = em.createQuery(cq.select(root).where(p)).getResultList();
 		if (os.size() == 1) {
 			return os.get(0);
 		} else {
@@ -68,7 +68,7 @@ abstract class BaseAction extends StandardJaxrsAction {
 		CriteriaQuery<Application> cq = cb.createQuery(Application.class);
 		Root<Application> root = cq.from(Application.class);
 		Predicate p = cb.equal(root.get(Application_.name), name);
-		List<Application> os = em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
+		List<Application> os = em.createQuery(cq.select(root).where(p)).getResultList();
 		if (os.size() == 1) {
 			return os.get(0);
 		} else {

+ 2 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/ApplicationFactory.java

@@ -87,7 +87,7 @@ public class ApplicationFactory extends ElementFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Application> root = cq.from(Application.class);
-		cq.select(root.get(Application_.id)).distinct(true);
+		cq.select(root.get(Application_.id));
 		if (effectivePerson.isNotManager() && (!this.business().organization().person().hasRole(effectivePerson,
 				OrganizationDefinition.Manager, OrganizationDefinition.ProcessPlatformManager))) {
 			Predicate p = cb.and(cb.isEmpty(root.get(Application_.availableIdentityList)),
@@ -102,7 +102,7 @@ public class ApplicationFactory extends ElementFactory {
 			}
 			cq.where(p);
 		}
-		return em.createQuery(cq.distinct(true)).getResultList();
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public <T extends Application> List<T> sort(List<T> list) {

+ 0 - 20
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/FileFactory.java

@@ -21,26 +21,6 @@ public class FileFactory extends ElementFactory {
 		return this.pick(flag, File.class);
 	}
 
-//	private File pickObject(String flag) throws Exception {
-//		File o = this.business().entityManagerContainer().flag(flag, File.class);
-//		if (o != null) {
-//			this.entityManagerContainer().get(File.class).detach(o);
-//		}
-//		if (null == o) {
-//			EntityManager em = this.entityManagerContainer().get(File.class);
-//			CriteriaBuilder cb = em.getCriteriaBuilder();
-//			CriteriaQuery<File> cq = cb.createQuery(File.class);
-//			Root<File> root = cq.from(File.class);
-//			Predicate p = cb.equal(root.get(File_.name), flag);
-//			List<File> os = em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
-//			if (os.size() == 1) {
-//				o = os.get(0);
-//				em.detach(o);
-//			}
-//		}
-//		return o;
-//	}
-
 	public <T extends File> List<T> sort(List<T> list) {
 		list = list.stream()
 				.sorted(Comparator.comparing(File::getAlias, Comparator.nullsLast(String::compareTo))

+ 5 - 45
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/factory/element/ProcessFactory.java

@@ -65,47 +65,7 @@ public class ProcessFactory extends ElementFactory {
 		return o;
 	}
 
-//	private Process pickObject(String flag) throws Exception {
-//		Process o = this.business().entityManagerContainer().flag(flag, Process.class);
-//		if (o != null) {
-//			this.entityManagerContainer().get(Process.class).detach(o);
-//		}
-//		if (null == o) {
-//			EntityManager em = this.entityManagerContainer().get(Process.class);
-//			CriteriaBuilder cb = em.getCriteriaBuilder();
-//			CriteriaQuery<Process> cq = cb.createQuery(Process.class);
-//			Root<Process> root = cq.from(Process.class);
-//			Predicate p = cb.equal(root.get(Process_.name), flag);
-//			List<Process> os = em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
-//			if (os.size() == 1) {
-//				o = os.get(0);
-//				em.detach(o);
-//			}
-//		}
-//		return o;
-//	}
-
-//	public Process pickObject(Application application, String flag) throws Exception {
-//		if (null == application || StringUtils.isEmpty(flag)) {
-//			return null;
-//		}
-//		Process o = null;
-//		String cacheKey = ApplicationCache.concreteCacheKey(Process.class, application.getId(), flag);
-//		Element element = cache.get(cacheKey);
-//		if (null != element) {
-//			if (null != element.getObjectValue()) {
-//				o = (Process) element.getObjectValue();
-//			}
-//		} else {
-//			o = this.restrictProcess(application.getId(), flag);
-//			if (null != o) {
-//				cache.put(new Element(cacheKey, o));
-//			}
-//		}
-//		return o;
-//	}
-
-	/* 获取Application下的所有流程 */
+	// 获取Application下的所有流程
 	public List<String> listWithApplication(Application application) throws Exception {
 		EntityManager em = this.entityManagerContainer().get(Process.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -113,8 +73,8 @@ public class ProcessFactory extends ElementFactory {
 		Root<Process> root = cq.from(Process.class);
 		Predicate p = cb.equal(root.get(Process_.application), application.getId());
 		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)), cb.isNull(root.get(Process_.editionEnable))));
-		cq.select(root.get(Process_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/* 获取用户可启动的流程,如果applicationId 为空则取到所有可启动流程 */
@@ -139,8 +99,8 @@ public class ProcessFactory extends ElementFactory {
 		}
 		p = cb.and(p, cb.equal(root.get(Process_.application), application.getId()));
 		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)), cb.isNull(root.get(Process_.editionEnable))));
-		cq.select(root.get(Process_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/* 获取用户可启动的流程,如果applicationId 为空则取到所有可启动流程 */

+ 5 - 4
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionListWithPerson.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.application;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -98,8 +99,8 @@ class ActionListWithPerson extends BaseAction {
 			}
 			cq.where(p);
 		}
-		list = em.createQuery(cq.select(root.get(Application_.id)).distinct(true)).getResultList();
-		return list;
+		return em.createQuery(cq.select(root.get(Application_.id))).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 
 	/**
@@ -126,7 +127,7 @@ class ActionListWithPerson extends BaseAction {
 				p = cb.or(p, root.get(Process_.startableUnitList).in(units));
 			}
 		}
-		cq.select(root.get(Process_.application)).distinct(true).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.application)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 5 - 5
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionListWithPersonComplex.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.application;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -108,7 +109,6 @@ class ActionListWithPersonComplex extends BaseAction {
 
 	private List<String> listFromApplication(Business business, EffectivePerson effectivePerson, List<String> roles,
 			List<String> identities, List<String> units) throws Exception {
-		List<String> list = new ArrayList<>();
 		EntityManager em = business.entityManagerContainer().get(Application.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
@@ -127,8 +127,8 @@ class ActionListWithPersonComplex extends BaseAction {
 			}
 			cq.where(p);
 		}
-		list = em.createQuery(cq.select(root.get(Application_.id)).distinct(true)).getResultList();
-		return list;
+		return em.createQuery(cq.select(root.get(Application_.id))).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 
 	/**
@@ -155,8 +155,8 @@ class ActionListWithPersonComplex extends BaseAction {
 				p = cb.or(p, root.get(Process_.startableUnitList).in(units));
 			}
 		}
-		cq.select(root.get(Process_.application)).distinct(true).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.application)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private List<WoProcess> referenceProcess(Business business, EffectivePerson effectivePerson,

+ 5 - 5
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionListWithPersonLike.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.application;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -66,7 +67,6 @@ class ActionListWithPersonLike extends BaseAction {
 
 	private List<String> listFromApplication(Business business, EffectivePerson effectivePerson, List<String> roles,
 			List<String> identities, List<String> units) throws Exception {
-		List<String> list = new ArrayList<>();
 		EntityManager em = business.entityManagerContainer().get(Application.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
@@ -85,8 +85,8 @@ class ActionListWithPersonLike extends BaseAction {
 			}
 			cq.where(p);
 		}
-		list = em.createQuery(cq.select(root.get(Application_.id)).distinct(true)).getResultList();
-		return list;
+		return em.createQuery(cq.select(root.get(Application_.id))).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 	}
 
 	/**
@@ -116,7 +116,7 @@ class ActionListWithPersonLike extends BaseAction {
 				p = cb.or(p, root.get(Process_.startableUnitList).in(units));
 			}
 		}
-		cq.select(root.get(Process_.application)).distinct(true).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.application)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 12 - 15
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/application/ActionManageListWithPersonComplex.java

@@ -24,6 +24,7 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 class ActionManageListWithPersonComplex extends BaseAction {
 
@@ -33,7 +34,7 @@ class ActionManageListWithPersonComplex extends BaseAction {
 			List<Wo> wos = new ArrayList<>();
 			Business business = new Business(emc);
 
-			if (effectivePerson.isManager()){
+			if (effectivePerson.isManager()) {
 				List<String> identities = business.organization().identity().listWithPerson(person);
 				/** 去除部门以及上级部门,如果设置了一级部门可用,那么一级部门下属的二级部门也可用 */
 				List<String> units = business.organization().unit().listWithPersonSupNested(person);
@@ -127,7 +128,8 @@ class ActionManageListWithPersonComplex extends BaseAction {
 		}
 		cq.where(p);
 
-		list = em.createQuery(cq.select(root.get(Application_.id)).distinct(true)).getResultList();
+		list = em.createQuery(cq.select(root.get(Application_.id))).getResultList().stream().distinct()
+				.collect(Collectors.toList());
 		return list;
 	}
 
@@ -153,14 +155,13 @@ class ActionManageListWithPersonComplex extends BaseAction {
 			p = cb.or(p, root.get(Process_.startableUnitList).in(units));
 		}
 
-		cq.select(root.get(Process_.application)).distinct(true).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.application)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private List<WoProcess> referenceProcess(Business business, EffectivePerson effectivePerson,
 			List<String> identities, List<String> units, Application application) throws Exception {
-		List<String> ids = this.listStartableWithApplication(business,effectivePerson, identities, units,
-				application);
+		List<String> ids = this.listStartableWithApplication(business, effectivePerson, identities, units, application);
 		List<WoProcess> wos = new ArrayList<>();
 		for (String id : ids) {
 			WoProcess o = WoProcess.copier.copy(business.process().pick(id));
@@ -171,9 +172,8 @@ class ActionManageListWithPersonComplex extends BaseAction {
 	}
 
 	/* 获取用户可启动的流程,如果applicationId 为空则取到所有可启动流程 */
-	private List<String> listStartableWithApplication(Business business, EffectivePerson effectivePerson, List<String> identities,
-													 List<String> units, Application application) throws Exception {
-		List<String> list = new ArrayList<>();
+	private List<String> listStartableWithApplication(Business business, EffectivePerson effectivePerson,
+			List<String> identities, List<String> units, Application application) throws Exception {
 		EntityManager em = business.entityManagerContainer().get(Process.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
@@ -191,11 +191,8 @@ class ActionManageListWithPersonComplex extends BaseAction {
 		}
 
 		p = cb.and(p, cb.equal(root.get(Process_.application), application.getId()));
-		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)),
-				cb.isNull(root.get(Process_.editionEnable))));
-		cq.select(root.get(Process_.id)).where(p).distinct(true);
-
-		list = em.createQuery(cq).getResultList();
-		return list;
+		p = cb.and(p, cb.or(cb.isTrue(root.get(Process_.editionEnable)), cb.isNull(root.get(Process_.editionEnable))));
+		cq.select(root.get(Process_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/process/ActionListWithPersonWithApplicationFilter.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.process;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -98,8 +99,8 @@ class ActionListWithPersonWithApplicationFilter extends BaseAction {
 							cb.equal(root.get(Process_.startableTerminal), Process.STARTABLETERMINAL_ALL)));
 		}
 
-		cq.select(root.get(Process_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Process_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public static class Wo extends Process {

+ 11 - 10
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionFilterAttribute.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.read;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -104,8 +105,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Read> root = cq.from(Read.class);
 		Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Read_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -132,8 +133,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Read> root = cq.from(Read.class);
 		Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Read_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -160,8 +161,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Read> root = cq.from(Read.class);
 		Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Read_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -182,8 +183,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Read> root = cq.from(Read.class);
 		Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Read_.activityName)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.activityName)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : list) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -204,8 +205,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Read> root = cq.from(Read.class);
 		Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Read_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {

+ 10 - 10
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionFilterAttributeFilter.java

@@ -187,8 +187,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Read_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Read_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -232,8 +232,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Read_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Read_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -277,8 +277,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Read_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Read_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -316,8 +316,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Read_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Read_.activityName)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.activityName)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -355,8 +355,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Read_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Read_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Read_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListCountWithApplication.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.read;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -32,8 +33,8 @@ class ActionListCountWithApplication extends BaseAction {
 			CriteriaQuery<String> cq = cb.createQuery(String.class);
 			Root<Read> root = cq.from(Read.class);
 			Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
-			cq.select(root.get(Read_.application)).where(p).distinct(true);
-			List<String> list = em.createQuery(cq).getResultList();
+			cq.select(root.get(Read_.application)).where(p);
+			List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 			for (String str : list) {
 				NameValueCountPair o = this.concreteNameValueCountPair(business, effectivePerson, str);
 				wraps.add(o);

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/read/ActionListCountWithProcess.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.read;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -40,8 +41,8 @@ class ActionListCountWithProcess extends BaseAction {
 			Root<Read> root = cq.from(Read.class);
 			Predicate p = cb.equal(root.get(Read_.person), effectivePerson.getDistinguishedName());
 			p = cb.and(p, cb.equal(root.get(Read_.application), application.getId()));
-			cq.select(root.get(Read_.process)).where(p).distinct(true);
-			List<String> list = em.createQuery(cq).getResultList();
+			cq.select(root.get(Read_.process)).where(p);
+			List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 			for (String str : list) {
 				NameValueCountPair o = this.concreteNameValueCountPair(business, effectivePerson, str);
 				wraps.add(o);

+ 15 - 12
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionFilterAttribute.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.readcompleted;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -115,8 +116,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -143,8 +144,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -171,8 +172,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -193,8 +194,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.activityName)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.activityName)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : list) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -215,8 +216,9 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.completedTimeMonth)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.completedTimeMonth)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
+		;
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : list) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -237,8 +239,9 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.startTimeMonth)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.startTimeMonth)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
+		;
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : list) {
 			if (StringUtils.isNotEmpty(str)) {

+ 13 - 12
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionFilterAttributeFilter.java

@@ -213,8 +213,9 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(ReadCompleted_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
+		;
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -261,8 +262,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(ReadCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -309,8 +310,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(ReadCompleted_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -351,8 +352,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(ReadCompleted_.activityName)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.activityName)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -393,8 +394,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(ReadCompleted_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -435,8 +436,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(ReadCompleted_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(ReadCompleted_.completedTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.completedTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListCountWithApplication.java

@@ -3,6 +3,7 @@ package com.x.processplatform.assemble.surface.jaxrs.readcompleted;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -43,8 +44,8 @@ class ActionListCountWithApplication extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(ReadCompleted_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/ActionListCountWithProcess.java

@@ -3,6 +3,7 @@ package com.x.processplatform.assemble.surface.jaxrs.readcompleted;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -52,8 +53,8 @@ class ActionListCountWithProcess extends BaseAction {
 		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
 		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p, cb.equal(root.get(ReadCompleted_.application), application.getId()));
-		cq.select(root.get(ReadCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(ReadCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			Process process = business.process().pick(str);

+ 0 - 31
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/readcompleted/BaseAction.java

@@ -14,16 +14,6 @@ import com.x.processplatform.core.entity.content.ReadCompleted_;
 
 abstract class BaseAction extends StandardJaxrsAction {
 
-//	static WrapCopier<ReadCompleted, WrapOutReadCompleted> readCompletedOutCopier = WrapCopierFactory
-//			.wo(ReadCompleted.class, WrapOutReadCompleted.class, null, WrapOutReadCompleted.FieldsInvisible);
-//
-//	static WrapCopier<Work, WrapOutWork> workOutCopier = WrapCopierFactory.wo(Work.class, WrapOutWork.class, null,
-//			WrapOutWork.Excludes);
-//
-//	static WrapCopier<WorkCompleted, WrapOutWorkCompleted> workCompletedOutCopier = WrapCopierFactory
-//			.wo(WorkCompleted.class, WrapOutWorkCompleted.class, null, WrapOutWorkCompleted.Excludes);
-	
-
 	Long countWithApplication(Business business, EffectivePerson effectivePerson, String id) throws Exception {
 		EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -35,27 +25,6 @@ abstract class BaseAction extends StandardJaxrsAction {
 		return em.createQuery(cq).getSingleResult();
 	}
 
-//	List<NameValueCountPair> listProcessPair(Business business, EffectivePerson effectivePerson,
-//			Application application) throws Exception {
-//		List<NameValueCountPair> wraps = new ArrayList<>();
-//		EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
-//		CriteriaBuilder cb = em.getCriteriaBuilder();
-//		CriteriaQuery<String> cq = cb.createQuery(String.class);
-//		Root<ReadCompleted> root = cq.from(ReadCompleted.class);
-//		Predicate p = cb.equal(root.get(ReadCompleted_.person), effectivePerson.getDistinguishedName());
-//		p = cb.and(p, cb.equal(root.get(ReadCompleted_.application), application.getId()));
-//		cq.select(root.get(ReadCompleted_.process)).where(p).distinct(true);
-//		List<String> list = em.createQuery(cq).getResultList();
-//		for (String str : list) {
-//			NameValueCountPair o = new NameValueCountPair();
-//			o.setValue(str);
-//			o.setName(business.process().pickName(str, ReadCompleted.class, effectivePerson.getDistinguishedName()));
-//			wraps.add(o);
-//		}
-//		SortTools.asc(wraps, "name");
-//		return wraps;
-//	}
-
 	Long countWithProcess(Business business, EffectivePerson effectivePerson, String id) throws Exception {
 		EntityManager em = business.entityManagerContainer().get(ReadCompleted.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();

+ 11 - 10
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionFilterAttribute.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.task;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -108,8 +109,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Task> root = cq.from(Task.class);
 		Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Task_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -136,8 +137,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Task> root = cq.from(Task.class);
 		Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Task_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -164,8 +165,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Task> root = cq.from(Task.class);
 		Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Task_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -186,8 +187,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Task> root = cq.from(Task.class);
 		Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Task_.activityName)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.activityName)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -208,8 +209,8 @@ class ActionFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Task> root = cq.from(Task.class);
 		Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(Task_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {

+ 10 - 10
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionFilterAttributeFilter.java

@@ -187,8 +187,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Task_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -232,8 +232,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Task_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -277,8 +277,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Task_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -316,8 +316,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Task_.activityName)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.activityName)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -355,8 +355,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
-		cq.select(root.get(Task_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Task_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListCountWithApplication.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.task;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -32,8 +33,8 @@ class ActionListCountWithApplication extends BaseAction {
 			CriteriaQuery<String> cq = cb.createQuery(String.class);
 			Root<Task> root = cq.from(Task.class);
 			Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
-			cq.select(root.get(Task_.application)).where(p).distinct(true);
-			List<String> list = em.createQuery(cq).getResultList();
+			cq.select(root.get(Task_.application)).where(p);
+			List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 			for (String str : list) {
 				this.addNameValueCountPair(business, effectivePerson, str, wraps);
 			}

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListCountWithProcess.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.task;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -37,8 +38,8 @@ class ActionListCountWithProcess extends BaseAction {
 				Root<Task> root = cq.from(Task.class);
 				Predicate p = cb.equal(root.get(Task_.person), effectivePerson.getDistinguishedName());
 				p = cb.and(p, cb.equal(root.get(Task_.application), application.getId()));
-				cq.select(root.get(Task_.process)).where(p).distinct(true);
-				List<String> list = em.createQuery(cq).getResultList();
+				cq.select(root.get(Task_.process)).where(p);
+				List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 				for (String str : list) {
 					this.addNameValueCountPair(business, effectivePerson, str, wraps);
 				}

+ 2 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionProcessingNeural.java

@@ -230,8 +230,8 @@ class ActionProcessingNeural extends BaseAction {
 		Root<FormField> root = cq.from(FormField.class);
 		Predicate p = root.get(FormField_.form).in(formIds);
 		p = cb.and(p, cb.equal(root.get(FormField_.dataType), "number"));
-		cq.select(root.get(FormField_.name)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(FormField_.name)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private List<String> listForm(Business business, Process process) throws Exception {

+ 15 - 14
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionFilterAttribute.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.taskcompleted;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -135,8 +136,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -165,8 +166,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -195,8 +196,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -219,8 +220,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.activityName)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.activityName)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -243,8 +244,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -267,8 +268,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.completedTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.completedTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -292,8 +293,8 @@ class ActionFilterAttribute extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.completed)).where(p).distinct(true);
-		List<Boolean> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.completed)).where(p);
+		List<Boolean> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (Boolean value : os) {
 			NameValueCountPair o = new NameValueCountPair();

+ 14 - 14
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionFilterAttributeFilter.java

@@ -242,8 +242,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -295,8 +295,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -348,8 +348,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -395,8 +395,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.activityName)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.activityName)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -442,8 +442,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -489,8 +489,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.completedTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.completedTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			if (StringUtils.isNotEmpty(str)) {
@@ -536,8 +536,8 @@ class ActionFilterAttributeFilter extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getCompletedList())) {
 			p = cb.and(p, root.get(TaskCompleted_.completed).in(wi.getCompletedList()));
 		}
-		cq.select(root.get(TaskCompleted_.completed)).where(p).distinct(true);
-		List<Boolean> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.completed)).where(p);
+		List<Boolean> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (Boolean value : os) {
 			NameValueCountPair o = new NameValueCountPair();

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListCountWithApplication.java

@@ -3,6 +3,7 @@ package com.x.processplatform.assemble.surface.jaxrs.taskcompleted;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -46,8 +47,8 @@ class ActionListCountWithApplication extends BaseAction {
 		Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
-		cq.select(root.get(TaskCompleted_.application)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.application)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			Application application = business.application().pick(str);

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/taskcompleted/ActionListCountWithProcess.java

@@ -3,6 +3,7 @@ package com.x.processplatform.assemble.surface.jaxrs.taskcompleted;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -54,8 +55,8 @@ class ActionListCountWithProcess extends BaseAction {
 		p = cb.and(p,
 				cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
 		p = cb.and(p, cb.equal(root.get(TaskCompleted_.application), application.getId()));
-		cq.select(root.get(TaskCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(TaskCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			Process process = business.process().pick(str);

+ 12 - 11
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionFilterAttribute.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -64,7 +65,7 @@ class ActionFilterAttribute extends BaseAction {
 		private List<NameValueCountPair> activityNameList = new ArrayList<>();
 
 		@FieldDescribe("可选择的工作状态")
-		@FieldTypeDescribe(fieldType="enum",fieldValue="start|processing|hanging",fieldTypeName = "com.x.processplatform.core.entity.content.WorkStatus")
+		@FieldTypeDescribe(fieldType = "enum", fieldValue = "start|processing|hanging", fieldTypeName = "com.x.processplatform.core.entity.content.WorkStatus")
 		private List<NameValueCountPair> workStatusList = new ArrayList<>();
 
 		public List<NameValueCountPair> getProcessList() {
@@ -118,8 +119,8 @@ class ActionFilterAttribute extends BaseAction {
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
 		p = cb.and(p, cb.equal(root.get(Work_.creatorPerson), effectivePerson.getDistinguishedName()));
-		cq.select(root.get(Work_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			Process process = business.process().pick(str);
@@ -144,8 +145,8 @@ class ActionFilterAttribute extends BaseAction {
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
 		p = cb.and(p, cb.equal(root.get(Work_.creatorPerson), effectivePerson.getDistinguishedName()));
-		cq.select(root.get(Work_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
@@ -166,8 +167,8 @@ class ActionFilterAttribute extends BaseAction {
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
 		p = cb.and(p, cb.equal(root.get(Work_.creatorPerson), effectivePerson.getDistinguishedName()));
-		cq.select(root.get(Work_.activityName)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.activityName)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : list) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(str);
@@ -187,8 +188,8 @@ class ActionFilterAttribute extends BaseAction {
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
 		p = cb.and(p, cb.equal(root.get(Work_.creatorPerson), effectivePerson.getDistinguishedName()));
-		cq.select(root.get(Work_.startTimeMonth)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.startTimeMonth)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : list) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(str);
@@ -208,8 +209,8 @@ class ActionFilterAttribute extends BaseAction {
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
 		p = cb.and(p, cb.equal(root.get(Work_.creatorPerson), effectivePerson.getDistinguishedName()));
-		cq.select(root.get(Work_.workStatus)).where(p).distinct(true);
-		List<WorkStatus> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.workStatus)).where(p);
+		List<WorkStatus> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (WorkStatus status : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(status);

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

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -68,8 +69,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		private List<NameValueCountPair> activityNameList = new ArrayList<>();
 
 		@FieldDescribe("可选择的工作状态")
-		@FieldTypeDescribe(fieldType="class",fieldValue="{name='',value='',count=0}",fieldTypeName = "com.x.base.core.project.bean.NameValueCountPair")
-		
+		@FieldTypeDescribe(fieldType = "class", fieldValue = "{name='',value='',count=0}", fieldTypeName = "com.x.base.core.project.bean.NameValueCountPair")
+
 		private List<NameValueCountPair> workStatusList = new ArrayList<>();
 
 		public List<NameValueCountPair> getProcessList() {
@@ -80,15 +81,6 @@ class ActionManageFilterAttribute extends BaseAction {
 			this.processList = processList;
 		}
 
-		// public List<NameValueCountPair> getCreatorTopUnitList() {
-		// return creatorTopUnitList;
-		// }
-		//
-		// public void setCreatorTopUnitList(List<NameValueCountPair>
-		// creatorTopUnitList) {
-		// this.creatorTopUnitList = creatorTopUnitList;
-		// }
-
 		public List<NameValueCountPair> getCreatorUnitList() {
 			return creatorUnitList;
 		}
@@ -130,8 +122,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
-		cq.select(root.get(Work_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			Process process = business.process().pick(str);
@@ -155,8 +147,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
-		cq.select(root.get(Work_.creatorUnit)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.creatorUnit)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(str);
@@ -174,8 +166,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
-		cq.select(root.get(Work_.activityName)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.activityName)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : list) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(str);
@@ -193,8 +185,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
-		cq.select(root.get(Work_.startTimeMonth)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.startTimeMonth)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (String str : list) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(str);
@@ -212,8 +204,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<WorkStatus> cq = cb.createQuery(WorkStatus.class);
 		Root<Work> root = cq.from(Work.class);
 		Predicate p = cb.equal(root.get(Work_.application), application.getId());
-		cq.select(root.get(Work_.workStatus)).where(p).distinct(true);
-		List<WorkStatus> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(Work_.workStatus)).where(p);
+		List<WorkStatus> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		for (WorkStatus status : list) {
 			NameValueCountPair o = new NameValueCountPair();
 			o.setValue(status);

+ 7 - 6
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionFilterAttribute.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -53,8 +54,8 @@ public class ActionFilterAttribute extends BaseAction {
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
 		p = cb.and(p, cb.equal(root.get(WorkCompleted_.application), applicationId));
-		cq.select(root.get(WorkCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(WorkCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
@@ -80,8 +81,8 @@ public class ActionFilterAttribute extends BaseAction {
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
 		p = cb.and(p, cb.equal(root.get(WorkCompleted_.application), applicationId));
-		cq.select(root.get(WorkCompleted_.startTimeMonth)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(WorkCompleted_.startTimeMonth)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wraps = new ArrayList<>();
 		for (String str : list) {
 			NameValueCountPair o = new NameValueCountPair();
@@ -100,8 +101,8 @@ public class ActionFilterAttribute extends BaseAction {
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
 		p = cb.and(p, cb.equal(root.get(WorkCompleted_.application), applicationId));
-		cq.select(root.get(WorkCompleted_.completedTimeMonth)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(WorkCompleted_.completedTimeMonth)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wraps = new ArrayList<>();
 		for (String str : list) {
 			NameValueCountPair o = new NameValueCountPair();

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListCountWithApplication.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.workcompleted;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -30,8 +31,8 @@ class ActionListCountWithApplication extends BaseAction {
 			CriteriaQuery<String> cq = cb.createQuery(String.class);
 			Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 			Predicate p = cb.equal(root.get(WorkCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
-			cq.select(root.get(WorkCompleted_.application)).where(p).distinct(true);
-			for (String str : em.createQuery(cq).getResultList()) {
+			cq.select(root.get(WorkCompleted_.application)).where(p);
+			for (String str : em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList())) {
 				NameValueCountPair o = new NameValueCountPair();
 				o.setValue(str);
 				o.setName(this.getApplicationName(business, effectivePerson, str));

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionListCountWithProcess.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.workcompleted;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -36,8 +37,8 @@ class ActionListCountWithProcess extends BaseAction {
 			Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 			Predicate p = cb.equal(root.get(WorkCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
 			p = cb.and(p, cb.equal(root.get(WorkCompleted_.application), applicationId));
-			cq.select(root.get(WorkCompleted_.process)).where(p).distinct(true);
-			List<String> os = em.createQuery(cq).getResultList();
+			cq.select(root.get(WorkCompleted_.process)).where(p);
+			List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 			List<NameValueCountPair> wos = new ArrayList<>();
 			for (String str : os) {
 				NameValueCountPair o = new NameValueCountPair();

+ 7 - 6
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionManageFilterAttribute.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.workcompleted;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -87,8 +88,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.application), applicationId);
-		cq.select(root.get(WorkCompleted_.process)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(WorkCompleted_.process)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
@@ -113,8 +114,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.application), applicationId);
-		cq.select(root.get(WorkCompleted_.startTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(WorkCompleted_.startTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();
@@ -133,8 +134,8 @@ class ActionManageFilterAttribute extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 		Predicate p = cb.equal(root.get(WorkCompleted_.application), applicationId);
-		cq.select(root.get(WorkCompleted_.completedTimeMonth)).where(p).distinct(true);
-		List<String> os = em.createQuery(cq).getResultList();
+		cq.select(root.get(WorkCompleted_.completedTimeMonth)).where(p);
+		List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		List<NameValueCountPair> wos = new ArrayList<>();
 		for (String str : os) {
 			NameValueCountPair o = new NameValueCountPair();

+ 3 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/workcompleted/ActionManageListCountWithProcess.java

@@ -2,6 +2,7 @@ package com.x.processplatform.assemble.surface.jaxrs.workcompleted;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -37,8 +38,8 @@ class ActionManageListCountWithProcess extends BaseAction {
 			CriteriaQuery<String> cq = cb.createQuery(String.class);
 			Root<WorkCompleted> root = cq.from(WorkCompleted.class);
 			Predicate p = cb.equal(root.get(WorkCompleted_.application), applicationId);
-			cq.select(root.get(WorkCompleted_.process)).where(p).distinct(true);
-			List<String> os = em.createQuery(cq).getResultList();
+			cq.select(root.get(WorkCompleted_.process)).where(p);
+			List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 			List<NameValueCountPair> wos = new ArrayList<>();
 			for (String str : os) {
 				NameValueCountPair o = new NameValueCountPair();

+ 6 - 5
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/attachment/ActionCopyToWorkCompleted.java

@@ -1,5 +1,9 @@
 package com.x.processplatform.service.processing.jaxrs.attachment;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
 import com.google.gson.JsonElement;
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
@@ -20,10 +24,6 @@ import com.x.processplatform.core.entity.content.Attachment;
 import com.x.processplatform.core.entity.content.WorkCompleted;
 import com.x.processplatform.service.processing.ThisApplication;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Callable;
-
 /**
  * 
  * @author zhour 复制指定的附件到work,仅拷贝内容,并清除其他附带的信息
@@ -40,7 +40,8 @@ class ActionCopyToWorkCompleted extends BaseAction {
 		String executorSeed = null;
 
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			WorkCompleted work = emc.fetch(workCompletedId, WorkCompleted.class, ListTools.toList(WorkCompleted.job_FIELDNAME));
+			WorkCompleted work = emc.fetch(workCompletedId, WorkCompleted.class,
+					ListTools.toList(WorkCompleted.job_FIELDNAME));
 			if (null == work) {
 				throw new ExceptionEntityNotExist(workCompletedId, WorkCompleted.class);
 			}

+ 3 - 2
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/neural/NeuralAnalyzer.java

@@ -2,6 +2,7 @@ package com.x.processplatform.service.processing.neural;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -143,8 +144,8 @@ public class NeuralAnalyzer {
 		Root<FormField> root = cq.from(FormField.class);
 		Predicate p = root.get(FormField_.form).in(formIds);
 		p = cb.and(p, cb.equal(root.get(FormField_.dataType), "number"));
-		cq.select(root.get(FormField_.name)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(FormField_.name)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private List<TaskCompleted> listTaskCompleted(Business business, String activity, String person) throws Exception {

+ 3 - 2
o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/query/ActionListWithPerson.java

@@ -1,6 +1,7 @@
 package com.x.query.assemble.surface.jaxrs.query;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -77,7 +78,7 @@ class ActionListWithPerson extends BaseAction {
 				p = cb.or(p, root.get(Query_.availableUnitList).in(units));
 			}
 		}
-		cq.select(root.get(Query_.id)).distinct(true).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Query_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 3 - 2
o2server/x_query_assemble_surface/src/main/java/com/x/query/assemble/surface/jaxrs/query/ActionListWithPersonLike.java

@@ -1,6 +1,7 @@
 package com.x.query.assemble.surface.jaxrs.query;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -79,7 +80,7 @@ class ActionListWithPersonLike extends BaseAction {
 				p = cb.or(p, root.get(Query_.availableUnitList).in(units));
 			}
 		}
-		cq.select(root.get(Query_.id)).distinct(true).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Query_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 1 - 1
o2server/x_query_service_processing/src/main/java/com/x/query/service/processing/jaxrs/neural/Learn.java

@@ -283,7 +283,7 @@ public class Learn {
 		cq.select(root).where(p).orderBy(cb.desc(root.get(InText_.count)));
 		Integer cutoff = MapTools.getInteger(model.getPropertyMap(), Model.PROPERTY_MLP_LEARNINTEXTCUTOFFSIZE,
 				Model.DEFAULT_MLP_LEARNINTEXTCUTOFFSIZE);
-		List<InText> os = em.createQuery(cq.distinct(true)).setMaxResults(cutoff).getResultList();
+		List<InText> os = em.createQuery(cq).setMaxResults(cutoff).getResultList();
 		InTextBag inTextBag = new InTextBag(os);
 		return inTextBag;
 	}