提交 96dd4814 编写于 作者: liyi_hz2008's avatar liyi_hz2008

Merge branch 'fix/select.sql.with.distinct' into 'develop'

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

See merge request o2oa/o2oa!1611
......@@ -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,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,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());
}
}
\ No newline at end of file
......@@ -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 {
......
......@@ -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);
......
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查询该应用栏目下的所有文档数量")
......
package com.x.cms.assemble.control.jaxrs.categoryinfo;
import com.google.gson.JsonElement;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.cache.Cache;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.EqualsTerms;
import com.x.base.core.project.jaxrs.InTerms;
import com.x.base.core.project.jaxrs.LikeTerms;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.cms.assemble.control.jaxrs.document.BaseAction;
import com.x.cms.core.entity.CategoryInfo;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class ActionQueryListWithFilterPaging extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionQueryListWithFilterPaging.class);
protected ActionResult<List<Wo>> execute( HttpServletRequest request, Integer page, Integer size, JsonElement jsonElement, EffectivePerson effectivePerson ) {
ActionResult<List<Wo>> result = new ActionResult<>();
EqualsTerms equals = new EqualsTerms();
InTerms ins = new InTerms();
LikeTerms likes = new LikeTerms();
Wi wi = null;
List<Wo> wraps = null;
List<Wo> wraps_out = new ArrayList<>();
Boolean check = true;
try {
wi = this.convertToWrapIn(jsonElement, Wi.class);
} catch (Exception e) {
check = false;
Exception exception = new ExceptionCategoryInfoProcess(e,
"系统在将JSON信息转换为对象时发生异常。JSON:" + jsonElement.toString());
result.error(exception);
logger.error(e, effectivePerson, request, null);
}
if (check) {
if (null != wi.getAppIdList() && !wi.getAppIdList().isEmpty()) {
ins.put("appId", wi.getAppIdList());
}
if (null != wi.getCategoryIdList() && !wi.getCategoryIdList().isEmpty()) {
ins.put("id", wi.getCategoryIdList());
}
if (null != wi.getCreatorList() && !wi.getCreatorList().isEmpty()) {
ins.put("creatorPerson", wi.getCreatorList());
}
if (StringUtils.isNotEmpty(wi.getKey())) {
String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
if (StringUtils.isNotEmpty(key)) {
likes.put("title", key);
}
}
}
if (check) {
Cache.CacheKey cacheKey = new Cache.CacheKey( this.getClass(), wi.getAppIdList(), wi.getKey(), "allCategoryInApps" );
Optional<?> optional = CacheManager.get( cacheCategory, cacheKey );
if (optional.isPresent()) {
wraps = (List<Wo>)optional.get();
result.setData( wraps );
result.setCount( Long.parseLong(wraps.size() + "" ) );
} else {
try {
//一次性取出所有的分类信息,最大2000条,在内存里进行分页
result = this.standardListNext( Wo.copier, "(0)", 5000, "sequence", equals, null, likes, ins, null, null, null, null, true, DESC);
CacheManager.put(cacheCategory, cacheKey, result.getData() );
} catch (Exception e) {
check = false;
result.error(e);
logger.error(e, effectivePerson, request, null);
}
}
}
if( check ){
wraps = result.getData();
if( page <= 0 ){
page = 1;
}
if( size <= 0 ){
size = 20;
}
int startIndex = ( page - 1 ) * size;
int endIndex = page * size;
int i = 0;
for( ; wraps != null && i< wraps.size(); i++ ){
if( i >= startIndex && i < endIndex ){
wraps_out.add( wraps.get( i ) );
}
}
result.setData( wraps_out );
result.setSize( Long.parseLong(size + "" ));
}
return result;
}
public static class Wo extends CategoryInfo {
private static final long serialVersionUID = -5076990764713538973L;
public static List<String> Excludes = new ArrayList<String>();
static WrapCopier<CategoryInfo, Wo> copier = WrapCopierFactory.wo(CategoryInfo.class, Wo.class, null, ListTools.toList(JpaObject.FieldsInvisible));
@FieldDescribe("扩展信息JSON内容")
private String extContent = null;
private Long rank;
public Long getRank() {
return rank;
}
public void setRank(Long rank) {
this.rank = rank;
}
public String getExtContent() {
return extContent;
}
public void setExtContent(String extContent) {
this.extContent = extContent;
}
}
public static class Wi extends GsonPropertyObject {
@FieldDescribe("作为过滤条件的信息内容管理应用ID列表, 可多个, String数组.")
private List<String> appIdList;
@FieldDescribe("作为过滤条件的内容管理分类ID列表, 可多个, String数组.")
private List<String> categoryIdList;
@FieldDescribe("作为过滤条件的创建者姓名列表, 可多个, String数组.")
private List<String> creatorList;
@FieldDescribe("作为过滤条件的内容管理应用关键字, 通常是应用名称, String, 模糊查询.")
private String key;
@FieldDescribe("文档类型:全部 | 信息 | 数据")
private String documentType = "信息";
public List<String> getAppIdList() {
return appIdList;
}
public void setAppIdList(List<String> appIdList) {
this.appIdList = appIdList;
}
public List<String> getCategoryIdList() {
return categoryIdList;
}
public void setCategoryIdList(List<String> categoryIdList) {
this.categoryIdList = categoryIdList;
}
public List<String> getCreatorList() {
return creatorList;
}
public void setCreatorList(List<String> creatorList) {
this.creatorList = creatorList;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getDocumentType() {
return documentType;
}
public void setDocumentType(String documentType) {
this.documentType = documentType;
}
}
}
\ No newline at end of file
......@@ -340,5 +340,29 @@ public class CategoryInfoAction extends StandardJaxrsAction{
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "分页查询符合过滤条件的分类列表.", action = ActionQueryListWithFilterPaging.class)
@PUT
@Path("filter/list/{page}/size/{size}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void query_listWithFilterPaging( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
EffectivePerson effectivePerson = this.effectivePerson( request );
ActionResult<List<ActionQueryListWithFilterPaging.Wo>> result = new ActionResult<>();
Boolean check = true;
if( check ){
try {
result = new ActionQueryListWithFilterPaging().execute( request, page, size, jsonElement, effectivePerson );
} catch (Exception e) {
result = new ActionResult<>();
result.error( e );
logger.error( e, effectivePerson, request, null);
}
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
}
\ No newline at end of file
......@@ -119,4 +119,29 @@ public class DocumentAnonymousAction extends StandardJaxrsAction{
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "分页查询符合过滤条件的已发布的信息内容.", action = ActionQueryListWithFilterPaging.class)
@PUT
@Path("filter/list/{page}/size/{size}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void query_listWithFilterPaging( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
@JaxrsParameterDescribe("数量") @PathParam("size") Integer size, JsonElement jsonElement) {
EffectivePerson effectivePerson = this.effectivePerson( request );
ActionResult<List<ActionQueryListWithFilterPaging.Wo>> result = new ActionResult<>();
Boolean check = true;
if( check ){
try {
result = new ActionQueryListWithFilterPaging().execute( request, page, size, jsonElement, effectivePerson );
} catch (Exception e) {
result = new ActionResult<>();
result.error( e );
logger.error( e, effectivePerson, request, null);
}
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
}
\ No newline at end of file
......@@ -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 {
......
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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()) {
......
......@@ -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());
}
/**
......
......@@ -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());
}
/**
......
......@@ -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());
}
/**
* 查询中心工作汇报审核领导身份列表(去重复)
......
......@@ -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());
}
/**
* 根据身份名称,从领导秘书配置信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
* 根据身份名称,从系统参数配置信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
* 根据身份名称,从工作最新汇报内容统计信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
......
......@@ -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());
}
/**
* 根据身份名称,从具体工作待办待阅信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
* 根据身份名称,从具体工作已办已阅信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
* 根据身份名称,从工作授权信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
......
......@@ -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());
}
/**
* 根据身份名称,从具体工作交流信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
......
......@@ -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());
}
}
\ No newline at end of file
......@@ -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());
}
/**
......
......@@ -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());
}
/**
* 根据身份名称,从工作汇报处理者信息中查询与该身份有关的所有信息列表
......
......@@ -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());
}
/**
* 根据身份名称,从工作汇报处理日志信息中查询与该身份有关的所有信息列表
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册