Browse Source

[查询优化]优化CMS,考勤,OKR,BBS等应用的distinct查询,提升整体查询性能

o2lee 5 years ago
parent
commit
5a365c9398
27 changed files with 142 additions and 117 deletions
  1. 3 2
      o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/factory/BBSOperationRecordFactory.java
  2. 2 1
      o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/factory/BBSVoteRecordFactory.java
  3. 2 1
      o2server/x_calendar_assemble_control/src/main/java/com/x/calendar/assemble/control/factory/Calendar_EventRepeatMasterFactory.java
  4. 2 2
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/AppInfoFactory.java
  5. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/FileFactory.java
  6. 9 8
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/SearchFactory.java
  7. 3 2
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/input/BaseAction.java
  8. 3 2
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryview/ActionList.java
  9. 5 4
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryview/ActionListAll.java
  10. 9 8
      o2server/x_cms_core_entity/src/main/java/com/x/cms/core/entity/query/Query.java
  11. 2 1
      o2server/x_mind_assemble_control/src/main/java/com/x/mind/assemble/control/factory/MindBaseInfoFactory.java
  12. 2 1
      o2server/x_mind_assemble_control/src/main/webapp/describe/sources/com/x/mind/assemble/control/factory/MindBaseInfoFactory.java
  13. 5 4
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrCenterWorkInfoFactory.java
  14. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrConfigSecretaryFactory.java
  15. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrConfigSystemFactory.java
  16. 5 4
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrStatisticReportContentFactory.java
  17. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrStatisticReportStatusFactory.java
  18. 5 4
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrTaskFactory.java
  19. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrTaskHandledFactory.java
  20. 5 4
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkAuthorizeRecordFactory.java
  21. 7 6
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkBaseInfoFactory.java
  22. 5 4
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkChatFactory.java
  23. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkDynamicsFactory.java
  24. 39 38
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkPersonFactory.java
  25. 7 6
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkReportBaseInfoFactory.java
  26. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkReportPersonLinkFactory.java
  27. 3 2
      o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkReportProcessLogFactory.java

+ 3 - 2
o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/factory/BBSOperationRecordFactory.java

@@ -2,6 +2,7 @@ package com.x.bbs.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -53,7 +54,7 @@ public class BBSOperationRecordFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<BBSOperationRecord> root = cq.from(BBSOperationRecord.class);
 		Predicate p = cb.isNotNull( root.get(BBSOperationRecord_.id) );
-		cq.distinct(true).select( root.get(BBSOperationRecord_.operatorName) );
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select( root.get(BBSOperationRecord_.operatorName) );
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 2 - 1
o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/factory/BBSVoteRecordFactory.java

@@ -2,6 +2,7 @@ package com.x.bbs.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -133,7 +134,7 @@ public class BBSVoteRecordFactory extends AbstractFactory {
 			p = cb.and( p, cb.equal( root.get( BBSVoteRecord_.optionId ), voteOptionId ));
 		}
 		cq.select( root.get( BBSVoteRecord_.votorName ) );
-		return em.createQuery(cq.where(p).distinct(true)).getResultList();
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public List<BBSVoteRecord> listVoteRecordForPage(String subjectId, String voteOptionId, Integer maxRecordCount) throws Exception {

+ 2 - 1
o2server/x_calendar_assemble_control/src/main/java/com/x/calendar/assemble/control/factory/Calendar_EventRepeatMasterFactory.java

@@ -2,6 +2,7 @@ package com.x.calendar.assemble.control.factory;
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -179,6 +180,6 @@ public class Calendar_EventRepeatMasterFactory extends AbstractFactory {
 		p = CriteriaBuilderTools.predicate_and( cb, p, permission );
 		cq.select(root.get(Calendar_EventRepeatMaster_.id));
 		
-		return em.createQuery(cq.distinct(true).where(p)).getResultList();
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 2 - 2
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/AppInfoFactory.java

@@ -492,8 +492,8 @@ public class AppInfoFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<AppInfo> root = cq.from(AppInfo.class);
 		Predicate p = cb.isNotNull( root.get(AppInfo_.appType));
-		cq.select(root.get(AppInfo_.appType)).distinct(true);
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get(AppInfo_.appType));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 //	public Long countAppInfoWithAppType(String type) throws Exception {

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/FileFactory.java

@@ -94,7 +94,7 @@ public class FileFactory extends ElementFactory {
 			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();
+			List<File> os = em.createQuery(cq.select(root).where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 			if (os.size() == 1) {
 				o = os.get(0);
 				em.detach(o);

+ 9 - 8
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/SearchFactory.java

@@ -1,6 +1,7 @@
 package com.x.cms.assemble.control.factory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -36,8 +37,8 @@ public class SearchFactory extends AbstractFactory {
 		}else{
 			p = cb.and(p, root.get( Document_.appId ).in( appids ));
 		}
-		cq.distinct(true).select(root.get( Document_.creatorUnitName ) );
-		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList();
+		cq.select(root.get( Document_.creatorUnitName ) );
+		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	
 //	@MethodDescribe("查询用户可见的指定状态下的文件涉及的顶层组织列表量")
@@ -55,8 +56,8 @@ public class SearchFactory extends AbstractFactory {
 		}else{
 			p = cb.and(p, root.get( Document_.appId ).in( appids ));
 		}
-		cq.distinct(true).select(root.get( Document_.creatorTopUnitName ) );
-		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList();
+		cq.select(root.get( Document_.creatorTopUnitName ) );
+		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	
 	//@MethodDescribe("查询用户可见的指定状态下的文件涉及的栏目ID列表量")
@@ -74,8 +75,8 @@ public class SearchFactory extends AbstractFactory {
 		}else{
 			p = cb.and(p, root.get( Document_.appId ).in( appids ));
 		}
-		cq.distinct(true).select(root.get( Document_.appId ) );
-		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList();
+		cq.select(root.get( Document_.appId ) );
+		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	
 	//@MethodDescribe("查询用户可见的指定状态下的文件涉及的分类ID列表")
@@ -93,8 +94,8 @@ public class SearchFactory extends AbstractFactory {
 		}else{
 			p = cb.and(p, root.get( Document_.appId ).in( appids ));
 		}
-		cq.distinct(true).select(root.get( Document_.categoryId ) );
-		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList();
+		cq.select(root.get( Document_.categoryId ) );
+		return em.createQuery( cq.where( p )).setMaxResults(500).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	
 	//@MethodDescribe("根据categoryId查询该应用栏目下的所有文档数量")

+ 3 - 2
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/input/BaseAction.java

@@ -2,6 +2,7 @@ package com.x.cms.assemble.control.jaxrs.input;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -46,7 +47,7 @@ abstract class BaseAction extends StandardJaxrsAction {
 		CriteriaQuery<AppInfo> cq = cb.createQuery(AppInfo.class);
 		Root<AppInfo> root = cq.from(AppInfo.class);
 		Predicate p = cb.equal( root.get(AppInfo_.appAlias ), alias);
-		List<AppInfo> os = em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
+		List<AppInfo> os = em.createQuery(cq.select(root).where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 		if (os.size() == 1) {
 			return os.get(0);
 		} else {
@@ -63,7 +64,7 @@ abstract class BaseAction extends StandardJaxrsAction {
 		CriteriaQuery<AppInfo> cq = cb.createQuery(AppInfo.class);
 		Root<AppInfo> root = cq.from(AppInfo.class);
 		Predicate p = cb.equal(root.get(AppInfo_.appName), name);
-		List<AppInfo> os = em.createQuery(cq.select(root).where(p).distinct(true)).getResultList();
+		List<AppInfo> os = em.createQuery(cq.select(root).where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 		if (os.size() == 1) {
 			return os.get(0);
 		} else {

+ 3 - 2
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryview/ActionList.java

@@ -2,6 +2,7 @@ package com.x.cms.assemble.control.jaxrs.queryview;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -63,8 +64,8 @@ public class ActionList extends BaseAction {
 			p = cb.or(p, root.get(QueryView_.availableUnitList).in(unitNames));
 			p = cb.or(p, root.get(QueryView_.availableIdentityList).in(identities));
 		}
-		cq.select(root.get(QueryView_.id)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(QueryView_.id)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		return list;
 	}
 

+ 5 - 4
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/queryview/ActionListAll.java

@@ -2,6 +2,7 @@ package com.x.cms.assemble.control.jaxrs.queryview;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -71,8 +72,8 @@ public class ActionListAll extends BaseAction {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<QueryView> root = cq.from( QueryView.class );
-		cq.select(root.get( QueryView_.appId )).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get( QueryView_.appId ));
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		return list;
 	}
 
@@ -82,8 +83,8 @@ public class ActionListAll extends BaseAction {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<QueryView> root = cq.from(QueryView.class);
 		Predicate p = cb.equal( root.get(QueryView_.appId), appId );
-		cq.select(root.get(QueryView_.id)).where(p).distinct(true);
-		List<String> list = em.createQuery(cq).getResultList();
+		cq.select(root.get(QueryView_.id)).where(p);
+		List<String> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 		return list;
 	}
 

+ 9 - 8
o2server/x_cms_core_entity/src/main/java/com/x/cms/core/entity/query/Query.java

@@ -5,6 +5,7 @@ import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Tuple;
@@ -432,8 +433,8 @@ public class Query extends GsonPropertyObject {
 						Root<Item> root = cq.from(Item.class);
 						Predicate p = FilterEntryTools.toPredicate(cb, root, f);
 						p = cb.and(p, root.get(Item_.bundle).in(jobs));
-						cq.select(root.get(Item_.bundle)).distinct(true).where(p);
-						List<String> os = em.createQuery(cq).getResultList();
+						cq.select(root.get(Item_.bundle)).where(p);
+						List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 						/** 不等于在这里单独通过等于处理 */
 						if (Comparison.isNotEquals(f.getComparison())) {
 							os = ListUtils.subtract(jobs, os);
@@ -461,8 +462,8 @@ public class Query extends GsonPropertyObject {
 						Root<Item> root = cq.from(Item.class);
 						Predicate p = FilterEntryTools.toPredicate(cb, root, f);
 						p = cb.and(p, root.get(Item_.bundle).in(jobs));
-						cq.select(root.get(Item_.bundle)).distinct(true).where(p);
-						List<String> os = em.createQuery(cq).getResultList();
+						cq.select(root.get(Item_.bundle)).where(p);
+						List<String> os = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 						/** 不等于在这里单独通过等于处理 */
 						if (Comparison.isNotEquals(f.getComparison())) {
 							os = ListUtils.subtract(jobs, os);
@@ -493,8 +494,8 @@ public class Query extends GsonPropertyObject {
 				DateRangeEntryTools.toDocumentPredicate(cb, root, this.getDateRangeEntry()));
 		Predicate pw = cb.and(WhereEntryTools.toDocumentPredicate(cb, root, this.getRestrictWhereEntry()),
 				WhereEntryTools.toDocumentPredicate(cb, root, this.getWhereEntry()));
-		cq.select(root.get(Document.id_FIELDNAME)).distinct(true).where(cb.and(pd, pw));
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Document.id_FIELDNAME)).where(cb.and(pd, pw));
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private Table concreteTable(List<String> docIds) throws Exception {
@@ -579,8 +580,8 @@ public class Query extends GsonPropertyObject {
 			p = cb.and(p, cb.equal(root.get(Item_.path5), paths.length > 5 ? paths[5] : ""));
 			p = cb.and(p, cb.equal(root.get(Item_.path6), paths.length > 6 ? paths[6] : ""));
 			p = cb.and(p, cb.equal(root.get(Item_.path7), paths.length > 7 ? paths[7] : ""));
-			cq.select(root).distinct(true).where(p);
-			List<Item> list = em.createQuery(cq).getResultList();
+			cq.select(root).where(p);
+			List<Item> list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 			for (Item o : list) {
 				Row row = table.get(o.getBundle());
 				switch (o.getItemPrimitiveType()) {

+ 2 - 1
o2server/x_mind_assemble_control/src/main/java/com/x/mind/assemble/control/factory/MindBaseInfoFactory.java

@@ -3,6 +3,7 @@ package com.x.mind.assemble.control.factory;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -318,7 +319,7 @@ public class MindBaseInfoFactory extends AbstractFactory {
 				cq.orderBy( cb.asc( root.get( MindBaseInfo_.sequence ) ) );
 			}
 		}
-		return em.createQuery(cq.distinct(true).where(p)).setMaxResults( count ).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults( count ).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**

+ 2 - 1
o2server/x_mind_assemble_control/src/main/webapp/describe/sources/com/x/mind/assemble/control/factory/MindBaseInfoFactory.java

@@ -3,6 +3,7 @@ package com.x.mind.assemble.control.factory;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -318,7 +319,7 @@ public class MindBaseInfoFactory extends AbstractFactory {
 				cq.orderBy( cb.asc( root.get( MindBaseInfo_.sequence ) ) );
 			}
 		}
-		return em.createQuery(cq.distinct(true).where(p)).setMaxResults( count ).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults( count ).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**

+ 5 - 4
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrCenterWorkInfoFactory.java

@@ -3,6 +3,7 @@ package com.x.okr.assemble.control.factory;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -333,8 +334,8 @@ public class OkrCenterWorkInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrCenterWorkInfo_.creatorIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrCenterWorkInfo_.creatorIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrCenterWorkInfo_.creatorIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询中心工作部署者身份列表(去重复)
@@ -356,8 +357,8 @@ public class OkrCenterWorkInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrCenterWorkInfo_.deployerIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrCenterWorkInfo_.deployerIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrCenterWorkInfo_.deployerIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询中心工作汇报审核领导身份列表(去重复)

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrConfigSecretaryFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -123,8 +124,8 @@ public class OkrConfigSecretaryFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrConfigSecretary_.leaderIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrConfigSecretary_.leaderIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrConfigSecretary_.leaderIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从领导秘书配置信息中查询与该身份有关的所有信息列表

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrConfigSystemFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -112,8 +113,8 @@ public class OkrConfigSystemFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrConfigSystem_.configValue ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrConfigSystem_.configValue ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrConfigSystem_.configValue ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从系统参数配置信息中查询与该身份有关的所有信息列表

+ 5 - 4
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrStatisticReportContentFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -328,8 +329,8 @@ public class OkrStatisticReportContentFactory extends AbstractFactory {
 		if( endDate != null ){
 			p = cb.and( p, cb.lessThan( root.get(OkrStatisticReportContent_.statisticTime ), endDate));
 		}
-		cq.distinct(true).select( root.get(OkrStatisticReportContent_.statisticTimeFlag ));
-		return em.createQuery( cq.where(p) ).getResultList();
+		cq.select( root.get(OkrStatisticReportContent_.statisticTimeFlag ));
+		return em.createQuery( cq.where(p) ).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询统计数据中工作责任者身份列表(去重复)
@@ -351,8 +352,8 @@ public class OkrStatisticReportContentFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrStatisticReportContent_.responsibilityIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrStatisticReportContent_.responsibilityIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrStatisticReportContent_.responsibilityIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从工作最新汇报内容统计信息中查询与该身份有关的所有信息列表

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrStatisticReportStatusFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -154,8 +155,8 @@ public class OkrStatisticReportStatusFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrStatisticReportStatus_.responsibilityIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrStatisticReportStatus_.responsibilityIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrStatisticReportStatus_.responsibilityIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**

+ 5 - 4
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrTaskFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -198,9 +199,9 @@ public class OkrTaskFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrTask> root = cq.from( OkrTask.class);
-		cq.distinct(true).select( root.get( OkrTask_.targetIdentity ));
+		cq.select( root.get( OkrTask_.targetIdentity ));
 		Predicate p = root.get( OkrTask_.dynamicObjectType ).in( taskTypeList );
-		return em.createQuery(cq.where(p)).getResultList();
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -349,8 +350,8 @@ public class OkrTaskFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrTask_.targetIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrTask_.targetIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrTask_.targetIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从具体工作待办待阅信息中查询与该身份有关的所有信息列表

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrTaskHandledFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -126,8 +127,8 @@ public class OkrTaskHandledFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrTaskHandled_.targetIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrTaskHandled_.targetIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrTaskHandled_.targetIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从具体工作已办已阅信息中查询与该身份有关的所有信息列表

+ 5 - 4
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkAuthorizeRecordFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -219,8 +220,8 @@ public class OkrWorkAuthorizeRecordFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkAuthorizeRecord_.delegatorIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkAuthorizeRecord_.delegatorIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkAuthorizeRecord_.delegatorIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询工作承接者身份列表(去重复)
@@ -242,8 +243,8 @@ public class OkrWorkAuthorizeRecordFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkAuthorizeRecord_.targetIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkAuthorizeRecord_.targetIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkAuthorizeRecord_.targetIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从工作授权信息中查询与该身份有关的所有信息列表

+ 7 - 6
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkBaseInfoFactory.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -699,8 +700,8 @@ public class OkrWorkBaseInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkBaseInfo_.creatorIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkBaseInfo_.creatorIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkBaseInfo_.creatorIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询具体工作部署者身份列表(去重复)
@@ -722,8 +723,8 @@ public class OkrWorkBaseInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkBaseInfo_.deployerIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkBaseInfo_.deployerIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkBaseInfo_.deployerIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询具体工作阅知领导身份列表(去重复)
@@ -791,8 +792,8 @@ public class OkrWorkBaseInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkBaseInfo_.responsibilityIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkBaseInfo_.responsibilityIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkBaseInfo_.responsibilityIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**

+ 5 - 4
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkChatFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -235,8 +236,8 @@ public class OkrWorkChatFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkChat_.senderIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkChat_.senderIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkChat_.senderIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询工作交流信息接收者身份列表(去重复)
@@ -258,8 +259,8 @@ public class OkrWorkChatFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkChat_.targetIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkChat_.targetIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkChat_.targetIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从具体工作交流信息中查询与该身份有关的所有信息列表

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkDynamicsFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -320,8 +321,8 @@ public class OkrWorkDynamicsFactory extends AbstractFactory {
 		if (identities_error != null && identities_error.size() > 0) {
 			p = cb.and(p, cb.not(root.get(OkrWorkDynamics_.targetIdentity).in(identities_error)));
 		}
-		cq.distinct(true).select(root.get(OkrWorkDynamics_.targetIdentity));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get(OkrWorkDynamics_.targetIdentity));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**

+ 39 - 38
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkPersonFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -78,7 +79,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.workId));
+		cq.select(root.get(OkrWorkPerson_.workId));
 
 		/**
 		 * 获取的时候过滤条件: 1、如果当前身份是创建者或者部署者的,那么,草稿也要取,如果当前身份不是创建者或者部署者,那么草稿不要去
@@ -114,7 +115,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 
 		p = cb.and(p, cb.or(p_creator_or_depoloyer, p_watcher));
 
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -136,12 +137,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.workId));
+		cq.select(root.get(OkrWorkPerson_.workId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.employeeIdentity), userIdentity);
 		if (centerId != null && !centerId.isEmpty()) {
 			p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.centerId), centerId));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据用户姓名和处理者身份,列示有权限访问的所有具体工作Id列表" )
@@ -158,11 +159,11 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.workId));
+		cq.select(root.get(OkrWorkPerson_.workId));
 		Predicate p = cb.isNotNull(root.get(OkrWorkPerson_.workId));
 		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.employeeName), name));
 		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), processIdentity));
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据用户姓名和处理者身份,列示有权限访问的所有具体工作Id列表" )
@@ -180,7 +181,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.workId));
+		cq.select(root.get(OkrWorkPerson_.workId));
 
 		Predicate p = cb.isNotNull(root.get(OkrWorkPerson_.workId));
 
@@ -194,7 +195,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), processIdentity));
 		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.status), "正常"));
 
-		return em.createQuery(cq.where(p)).setMaxResults(200).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(200).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据用户姓名,列示有权限访问的所有中心工作Id列表" )
@@ -207,12 +208,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.employeeName), name);
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据用户姓名和处理者身份,列示有权限访问的所有中心工作Id列表" )
@@ -230,13 +231,13 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.employeeName), name);
 		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), processIdentity));
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据用户身份和处理者身份,列示有权限访问的所有中心工作Id列表" )
@@ -254,13 +255,13 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.employeeIdentity), identity);
 		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), processIdentity));
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据组织名称,列示有权限访问的所有中心工作Id列表" )
@@ -273,12 +274,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.unitName), name);
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据组织列表,列示有权限访问的所有中心工作Id列表" )
@@ -291,12 +292,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = root.get(OkrWorkPerson_.unitName).in(names);
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据顶层组织名称,列示有权限访问的所有中心工作Id列表" )
@@ -309,12 +310,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.topUnitName), name);
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -336,12 +337,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.employeeIdentity));
+		cq.select(root.get(OkrWorkPerson_.employeeIdentity));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.centerId), centerId);
 		if (identity != null && !identity.isEmpty()) {
 			p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), identity));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(2000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(2000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	// @MethodDescribe( "根据顶层组织列表,列示有权限访问的所有中心工作Id列表" )
@@ -355,12 +356,12 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
+		cq.select(root.get(OkrWorkPerson_.centerId));
 		Predicate p = root.get(OkrWorkPerson_.topUnitName).in(names);
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(1000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -380,7 +381,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.employeeName));
+		cq.select(root.get(OkrWorkPerson_.employeeName));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.workId), workId);
 		if (identity != null && !identity.isEmpty()) {
 			p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), identity));
@@ -388,7 +389,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).setMaxResults(100).getResultList();
+		return em.createQuery(cq.where(p)).setMaxResults(100).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -480,7 +481,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.workId));
+		cq.select(root.get(OkrWorkPerson_.workId));
 		Predicate p = cb.equal(root.get(OkrWorkPerson_.employeeIdentity), employeeIdentity);
 		p = cb.and(p, cb.isNotNull(root.get(OkrWorkPerson_.workId)));
 		if (centerId != null && !centerId.isEmpty()) {
@@ -495,7 +496,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		if (statuses != null && statuses.size() > 0) {
 			p = cb.and(p, root.get(OkrWorkPerson_.status).in(statuses));
 		}
-		return em.createQuery(cq.where(p)).getResultList();
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -1059,15 +1060,15 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.employeeIdentity));
-		return em.createQuery(cq).setMaxResults(10000).getResultList();
+		cq.select(root.get(OkrWorkPerson_.employeeIdentity));
+		return em.createQuery(cq).setMaxResults(10000).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
 	 * 根据工作类别和登录身份来查询用户可以访问到的所有中心工作数量
-	 * 
-	 * @param workTypeName
+	 * @param workTypeNames
 	 * @param loginIdentity
+	 * @param processIdentity
 	 * @return
 	 * @throws Exception
 	 */
@@ -1087,8 +1088,8 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		if (processIdentity != null && !processIdentity.isEmpty()) {
 			p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), processIdentity));
 		}
-		cq.distinct(true).select(root.get(OkrWorkPerson_.centerId));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get(OkrWorkPerson_.centerId));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public List<String> listByAuthorizeRecordIds(List<String> authorizeRecordIds, List<String> statuses)
@@ -1388,8 +1389,8 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		if (identities_error != null && identities_error.size() > 0) {
 			p = cb.and(p, cb.not(root.get(OkrWorkPerson_.employeeIdentity).in(identities_error)));
 		}
-		cq.distinct(true).select(root.get(OkrWorkPerson_.employeeIdentity));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get(OkrWorkPerson_.employeeIdentity));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**
@@ -1425,7 +1426,7 @@ public class OkrWorkPersonFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
 		Predicate p = cb.equal( root.get(OkrWorkPerson_.workId), workId);
-		cq.distinct(true).select(root.get(OkrWorkPerson_.employeeIdentity));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get(OkrWorkPerson_.employeeIdentity));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 7 - 6
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkReportBaseInfoFactory.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -480,8 +481,8 @@ public class OkrWorkReportBaseInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkReportBaseInfo_.creatorIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkReportBaseInfo_.creatorIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkReportBaseInfo_.creatorIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询工作汇报当前处理者身份列表(去重复)
@@ -596,8 +597,8 @@ public class OkrWorkReportBaseInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkReportBaseInfo_.reporterIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkReportBaseInfo_.reporterIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkReportBaseInfo_.reporterIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 查询工作管理者,督办员身份列表(去重复)
@@ -619,8 +620,8 @@ public class OkrWorkReportBaseInfoFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkReportBaseInfo_.workAdminIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkReportBaseInfo_.workAdminIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkReportBaseInfo_.workAdminIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	/**

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkReportPersonLinkFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -336,8 +337,8 @@ public class OkrWorkReportPersonLinkFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkReportPersonLink_.processorIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkReportPersonLink_.processorIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkReportPersonLink_.processorIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从工作汇报处理者信息中查询与该身份有关的所有信息列表

+ 3 - 2
o2server/x_okr_assemble_control/src/main/java/com/x/okr/assemble/control/factory/OkrWorkReportProcessLogFactory.java

@@ -2,6 +2,7 @@ package com.x.okr.assemble.control.factory;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
@@ -317,8 +318,8 @@ public class OkrWorkReportProcessLogFactory extends AbstractFactory {
 		if( identities_error != null && identities_error.size() > 0 ){
 			p = cb.and( p, cb.not(root.get( OkrWorkReportProcessLog_.processorIdentity ).in( identities_error )) );
 		}
-		cq.distinct(true).select(root.get( OkrWorkReportProcessLog_.processorIdentity ));
-		return em.createQuery(cq.where(p)).getResultList();
+		cq.select(root.get( OkrWorkReportProcessLog_.processorIdentity ));
+		return em.createQuery(cq.where(p)).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 	/**
 	 * 根据身份名称,从工作汇报处理日志信息中查询与该身份有关的所有信息列表