提交 32ac1494 编写于 作者: O o2null

Merge branch 'fix/视图查询内容管理文档字段支持不等于条件' into 'wrdp'

[数据中心]视图查询内容管理文档字段支持不等于条件

See merge request o2oa/o2oa!4431
...@@ -268,11 +268,12 @@ public class CmsPlan extends Plan { ...@@ -268,11 +268,12 @@ public class CmsPlan extends Plan {
private Predicate documentPredicate(CriteriaBuilder cb, Root<Document> root, Runtime runtime, private Predicate documentPredicate(CriteriaBuilder cb, Root<Document> root, Runtime runtime,
List<FilterEntry> filterList) throws Exception { List<FilterEntry> filterList) throws Exception {
List<Predicate> ps = new TreeList<>(); List<Predicate> ps = new TreeList<>();
//ps.add(this.documentPredicate_creator(cb, root)); ps.add(this.documentPredicate_creator(cb, root));
ps.add(this.documentPredicate_appInfo(cb, root)); ps.add(this.documentPredicate_appInfo(cb, root));
//ps.add(this.documentPredicate_date(cb, root)); ps.add(this.documentPredicate_date(cb, root));
ps.add(this.documentPredicate_Filter(cb, root, runtime, filterList)); ps.add(this.documentPredicate_Filter_or(cb, root, runtime, filterList));
//ps.add(this.documentPredicate_draft(cb, root)); ps.add(this.documentPredicate_Filter_and(cb, root, runtime, filterList));
ps.add(this.documentPredicate_draft(cb, root));
Predicate predicate = this.documentPredicate_typeScope(cb, root); Predicate predicate = this.documentPredicate_typeScope(cb, root);
if (predicate != null) { if (predicate != null) {
...@@ -384,12 +385,9 @@ public class CmsPlan extends Plan { ...@@ -384,12 +385,9 @@ public class CmsPlan extends Plan {
return null; return null;
} }
private Predicate documentPredicate_Filter(CriteriaBuilder cb, Root<Document> root, Runtime runtime, private Predicate documentPredicate_Filter_or(CriteriaBuilder cb, Root<Document> root, Runtime runtime,
List<FilterEntry> filterList) throws Exception { List<FilterEntry> filterList) throws Exception {
boolean flag = true; boolean flag = true;
boolean orFlag = false;
boolean andFlag = false;
Predicate rp = cb.conjunction();
Predicate p = cb.disjunction(); Predicate p = cb.disjunction();
List<FilterEntry> list = new ArrayList<>(); List<FilterEntry> list = new ArrayList<>();
list.addAll(filterList); list.addAll(filterList);
...@@ -398,10 +396,9 @@ public class CmsPlan extends Plan { ...@@ -398,10 +396,9 @@ public class CmsPlan extends Plan {
} }
for (FilterEntry filterEntry : list) { for (FilterEntry filterEntry : list) {
if (filterEntry.path.indexOf("(") > -1 && filterEntry.path.indexOf(")") > -1) { if (filterEntry.path.indexOf("(") > -1 && filterEntry.path.indexOf(")") > -1) {
flag = false;
String path = StringUtils.substringBetween(filterEntry.path, "(", ")").trim(); String path = StringUtils.substringBetween(filterEntry.path, "(", ")").trim();
if ("readPersonList".equals(path)) { if ("readPersonList".equals(path)) {
orFlag = true; flag = false;
p = cb.or(p, cb.isMember("所有人", root.get(Document_.readPersonList))); p = cb.or(p, cb.isMember("所有人", root.get(Document_.readPersonList)));
p = cb.or(p, cb.isMember(runtime.person, root.get(Document_.readPersonList))); p = cb.or(p, cb.isMember(runtime.person, root.get(Document_.readPersonList)));
if (runtime.person.indexOf("@") > -1) { if (runtime.person.indexOf("@") > -1) {
...@@ -409,22 +406,19 @@ public class CmsPlan extends Plan { ...@@ -409,22 +406,19 @@ public class CmsPlan extends Plan {
root.get(Document_.readPersonList))); root.get(Document_.readPersonList)));
} }
} else if ("readUnitList".equals(path)) { } else if ("readUnitList".equals(path)) {
orFlag = true; flag = false;
if (ListTools.isNotEmpty(runtime.unitAllList)) { if (ListTools.isNotEmpty(runtime.unitAllList)) {
p = cb.or(p, root.get(Document_.readUnitList).in(runtime.unitAllList)); p = cb.or(p, root.get(Document_.readUnitList).in(runtime.unitAllList));
} }
} else if ("readGroupList".equals(path)) { } else if ("readGroupList".equals(path)) {
orFlag = true; flag = false;
if (ListTools.isNotEmpty(runtime.groupList)) { if (ListTools.isNotEmpty(runtime.groupList)) {
p = cb.or(p, root.get(Document_.readGroupList).in(runtime.groupList)); p = cb.or(p, root.get(Document_.readGroupList).in(runtime.groupList));
} }
} else { } else {
Predicate fp = filterEntry.toCmsDocumentPredicate(cb, root, runtime, path); if (!StringUtils.equals("and", filterEntry.logic)) {
if (Comparison.isEquals(filterEntry.logic)) { Predicate fp = filterEntry.toCmsDocumentPredicate(cb, root, runtime, path);
andFlag = true; flag = false;
rp = cb.and(rp, fp);
} else {
orFlag = true;
p = cb.or(p, fp); p = cb.or(p, fp);
} }
} }
...@@ -433,14 +427,34 @@ public class CmsPlan extends Plan { ...@@ -433,14 +427,34 @@ public class CmsPlan extends Plan {
if (flag) { if (flag) {
return null; return null;
} }
if(andFlag){ return p;
if(orFlag){ }
rp = cb.and(rp, p);
private Predicate documentPredicate_Filter_and(CriteriaBuilder cb, Root<Document> root, Runtime runtime,
List<FilterEntry> filterList) throws Exception {
boolean flag = true;
Predicate p = cb.conjunction();
List<FilterEntry> list = new ArrayList<>();
list.addAll(filterList);
if(runtime.filterList!=null){
list.addAll(runtime.filterList);
}
for (FilterEntry filterEntry : list) {
if (filterEntry.path.indexOf("(") > -1 && filterEntry.path.indexOf(")") > -1) {
String path = StringUtils.substringBetween(filterEntry.path, "(", ")").trim();
if (!"readPersonList".equals(path) && !"readUnitList".equals(path) && !"readGroupList".equals(path)) {
if (StringUtils.equals("and", filterEntry.logic)) {
Predicate fp = filterEntry.toCmsDocumentPredicate(cb, root, runtime, path);
flag = false;
p = cb.and(p, fp);
}
}
} }
}else{
rp = p;
} }
return rp; if (flag) {
return null;
}
return p;
} }
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册