提交 806dd65a 编写于 作者: O o2null

Merge branch 'feature/java11' into 'develop'

Feature/java11

See merge request o2oa/o2oa!1591
...@@ -10,7 +10,7 @@ public class SlicePropertiesBuilder { ...@@ -10,7 +10,7 @@ public class SlicePropertiesBuilder {
public static String driver_db2 = "com.ibm.db2.jcc.DB2Driver"; public static String driver_db2 = "com.ibm.db2.jcc.DB2Driver";
public static String driver_oracle = "oracle.jdbc.OracleDriver"; public static String driver_oracle = "oracle.jdbc.OracleDriver";
public static String driver_mysql = "com.mysql.jdbc.Driver"; public static String driver_mysql = "com.mysql.cj.jdbc.Driver";
public static String driver_postgresql = "org.postgresql.Driver"; public static String driver_postgresql = "org.postgresql.Driver";
public static String driver_informix = "com.informix.jdbc.IfxDriver"; public static String driver_informix = "com.informix.jdbc.IfxDriver";
public static String driver_h2 = "org.h2.Driver"; public static String driver_h2 = "org.h2.Driver";
......
...@@ -3,6 +3,12 @@ package com.x.processplatform.assemble.surface.jaxrs.work; ...@@ -3,6 +3,12 @@ package com.x.processplatform.assemble.surface.jaxrs.work;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.EntityManagerContainer;
...@@ -18,6 +24,7 @@ import com.x.processplatform.core.entity.content.ReadCompleted; ...@@ -18,6 +24,7 @@ import com.x.processplatform.core.entity.content.ReadCompleted;
import com.x.processplatform.core.entity.content.Review; import com.x.processplatform.core.entity.content.Review;
import com.x.processplatform.core.entity.content.Task; import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted; import com.x.processplatform.core.entity.content.TaskCompleted;
import com.x.processplatform.core.entity.content.TaskCompleted_;
class ActionCountWithPerson extends ActionComplex { class ActionCountWithPerson extends ActionComplex {
...@@ -39,9 +46,16 @@ class ActionCountWithPerson extends ActionComplex { ...@@ -39,9 +46,16 @@ class ActionCountWithPerson extends ActionComplex {
}); });
/* 已办仅取latest */ /* 已办仅取latest */
CompletableFuture<Void> future_taskCompleted = CompletableFuture.runAsync(() -> { CompletableFuture<Void> future_taskCompleted = CompletableFuture.runAsync(() -> {
EntityManager em;
try { try {
wo.setTaskCompleted(emc.countEqualAndNotEqual(TaskCompleted.class, em = business.entityManagerContainer().get(TaskCompleted.class);
TaskCompleted.person_FIELDNAME, person, TaskCompleted.latest_FIELDNAME, false)); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
Root<TaskCompleted> root = cq.from(TaskCompleted.class);
Predicate p = cb.equal(root.get(TaskCompleted_.person), person);
p = cb.and(p, cb.or(cb.equal(root.get(TaskCompleted_.latest), true),
cb.isNull(root.get(TaskCompleted_.latest))));
wo.setTaskCompleted(em.createQuery(cq.select(cb.count(root)).where(p)).getSingleResult());
} catch (Exception e) { } catch (Exception e) {
logger.error(e); logger.error(e);
} }
......
...@@ -42,7 +42,7 @@ public class CmsPlan extends Plan { ...@@ -42,7 +42,7 @@ public class CmsPlan extends Plan {
this.selectList = new SelectEntries(); this.selectList = new SelectEntries();
this.where = new WhereEntry(); this.where = new WhereEntry();
this.filterList = new TreeList<FilterEntry>(); this.filterList = new TreeList<FilterEntry>();
//this.calculate = new Calculate(); // this.calculate = new Calculate();
this.columnList = new TreeList<String>(); this.columnList = new TreeList<String>();
} }
...@@ -53,7 +53,7 @@ public class CmsPlan extends Plan { ...@@ -53,7 +53,7 @@ public class CmsPlan extends Plan {
this.adjustWhere(); this.adjustWhere();
/* 先调整slectEntry 顺序不能改 */ /* 先调整slectEntry 顺序不能改 */
this.adjustSelectList(); this.adjustSelectList();
//this.adjustCalculate(); // this.adjustCalculate();
} }
private void adjustRuntime() throws Exception { private void adjustRuntime() throws Exception {
...@@ -83,16 +83,16 @@ public class CmsPlan extends Plan { ...@@ -83,16 +83,16 @@ public class CmsPlan extends Plan {
this.selectList = list; this.selectList = list;
} }
List<String> listBundle( EntityManagerContainer emc ) throws Exception { List<String> listBundle(EntityManagerContainer emc) throws Exception {
List<String> docIds = new TreeList<>(); List<String> docIds = new TreeList<>();
//根据where条件查询符合条件的所有文档ID列表 // 根据where条件查询符合条件的所有文档ID列表
docIds = listBundle_document(emc); docIds = listBundle_document(emc);
if (BooleanUtils.isTrue(this.where.accessible)) { if (BooleanUtils.isTrue(this.where.accessible)) {
if (StringUtils.isNotEmpty(runtime.person)) { if (StringUtils.isNotEmpty(runtime.person)) {
//过滤可见范围 // 过滤可见范围
docIds = this.listBundle_accessible(emc, docIds, runtime.person ); docIds = this.listBundle_accessible(emc, docIds, runtime.person);
} }
} }
...@@ -130,36 +130,33 @@ public class CmsPlan extends Plan { ...@@ -130,36 +130,33 @@ public class CmsPlan extends Plan {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class); CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Document> root = cq.from(Document.class); Root<Document> root = cq.from(Document.class);
cq.select(root.get(Document_.id)).distinct(true).where(this.where.documentPredicate(cb, root, this.runtime, this.filterList)); cq.select(root.get(Document_.id)).where(this.where.documentPredicate(cb, root, this.runtime, this.filterList));
//System.out.println(">>>>>1-listBundle_document>>>>>>SQL:" + em.createQuery(cq).toString() );
List<String> docIds = em.createQuery(cq).getResultList(); List<String> docIds = em.createQuery(cq).getResultList();
return docIds; return docIds.stream().distinct().collect(Collectors.toList());
} }
private List<String> listBundle_accessible( EntityManagerContainer emc, List<String> docIds, String person ) private List<String> listBundle_accessible(EntityManagerContainer emc, List<String> docIds, String person)
throws Exception { throws Exception {
List<String> list = new TreeList<>(); List<String> list = new TreeList<>();
List<CompletableFuture<List<String>>> futures = new TreeList<>(); List<CompletableFuture<List<String>>> futures = new TreeList<>();
for (List<String> documentId : ListTools.batch(docIds, SQL_STATEMENT_IN_BATCH)) { for (List<String> documentId : ListTools.batch(docIds, SQL_STATEMENT_IN_BATCH)) {
CompletableFuture<List<String>> future = CompletableFuture.supplyAsync(() -> { CompletableFuture<List<String>> future = CompletableFuture.supplyAsync(() -> {
try { try {
EntityManager em = emc.get( Review.class ); EntityManager em = emc.get(Review.class);
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class); CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Review> root = cq.from( Review.class ); Root<Review> root = cq.from(Review.class);
final HashMap<String, String> map = new HashMap<>(); final HashMap<String, String> map = new HashMap<>();
documentId.stream().forEach( o -> { documentId.stream().forEach(o -> {
map.put(o, o); map.put(o, o);
}); });
Expression<Set<String>> expression = cb.keys(map); Expression<Set<String>> expression = cb.keys(map);
Predicate p = cb.isMember(root.get(Review_.docId), expression); Predicate p = cb.isMember(root.get(Review_.docId), expression);
p = cb.and(p, cb.or( p = cb.and(p, cb.or(cb.equal(root.get(Review_.permissionObj), person),
cb.equal( root.get(Review_.permissionObj), person), cb.equal(root.get(Review_.permissionObj), "*")));
cb.equal( root.get(Review_.permissionObj), "*") cq.select(root.get(Review_.docId)).where(p);
)); List<String> parts = em.createQuery(cq).getResultList();
cq.select(root.get(Review_.docId)).distinct(true).where(p); return parts.stream().distinct().collect(Collectors.toList());
// System.out.println(">>>>>2-listBundle_accessible>>>>>>SQL:" + em.createQuery(cq).toString() );
return em.createQuery(cq).getResultList();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -173,10 +170,11 @@ public class CmsPlan extends Plan { ...@@ -173,10 +170,11 @@ public class CmsPlan extends Plan {
return list; return list;
} }
private List<String> listBundle_filterEntry(EntityManagerContainer emc, List<String> docIds, List<FilterEntry> filterEntries) throws Exception { private List<String> listBundle_filterEntry(EntityManagerContainer emc, List<String> docIds,
List<FilterEntry> filterEntries) throws Exception {
/** 运行FilterEntry */ /** 运行FilterEntry */
List<String> partDocIds = new TreeList<>(); List<String> partDocIds = new TreeList<>();
List<List<String>> batch_docIds = ListTools.batch( docIds, SQL_STATEMENT_IN_BATCH ); List<List<String>> batch_docIds = ListTools.batch(docIds, SQL_STATEMENT_IN_BATCH);
for (int i = 0; i < filterEntries.size(); i++) { for (int i = 0; i < filterEntries.size(); i++) {
FilterEntry f = filterEntries.get(i); FilterEntry f = filterEntries.get(i);
List<String> os = new TreeList<>(); List<String> os = new TreeList<>();
...@@ -190,9 +188,9 @@ public class CmsPlan extends Plan { ...@@ -190,9 +188,9 @@ public class CmsPlan extends Plan {
Root<Item> root = cq.from(Item.class); Root<Item> root = cq.from(Item.class);
Predicate p = f.toPredicate(cb, root, this.runtime, ItemCategory.cms); Predicate p = f.toPredicate(cb, root, this.runtime, ItemCategory.cms);
p = cb.and(p, cb.isMember(root.get(Item_.bundle), cb.literal(_batch))); p = cb.and(p, cb.isMember(root.get(Item_.bundle), cb.literal(_batch)));
cq.select(root.get(Item_.bundle)).distinct(true).where(p); cq.select(root.get(Item_.bundle)).where(p);
// System.out.println(">>>>>>>>3 - listBundle_filterEntry SQL:" + em.createQuery(cq) ); List<String> parts = em.createQuery(cq).getResultList();
return em.createQuery(cq).getResultList(); return parts.stream().distinct().collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -217,7 +215,7 @@ public class CmsPlan extends Plan { ...@@ -217,7 +215,7 @@ public class CmsPlan extends Plan {
} }
} }
} }
docIds = ListUtils.intersection( docIds, partDocIds ); docIds = ListUtils.intersection(docIds, partDocIds);
return docIds; return docIds;
} }
...@@ -264,19 +262,20 @@ public class CmsPlan extends Plan { ...@@ -264,19 +262,20 @@ public class CmsPlan extends Plan {
* @return * @return
* @throws Exception * @throws Exception
*/ */
private Predicate documentPredicate(CriteriaBuilder cb, Root<Document> root, Runtime runtime, List<FilterEntry> filterList) throws Exception { private Predicate documentPredicate(CriteriaBuilder cb, Root<Document> root, Runtime runtime,
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(cb, root, runtime, filterList));
Predicate predicate = this.documentPredicate_typeScope(cb, root); Predicate predicate = this.documentPredicate_typeScope(cb, root);
if( predicate != null ) { if (predicate != null) {
ps.add( predicate ); ps.add(predicate);
} }
ps = ListTools.trim( ps, true, false); ps = ListTools.trim(ps, true, false);
if (ps.isEmpty()) { if (ps.isEmpty()) {
throw new Exception("where is empty."); throw new Exception("where is empty.");
} }
...@@ -285,8 +284,10 @@ public class CmsPlan extends Plan { ...@@ -285,8 +284,10 @@ public class CmsPlan extends Plan {
} }
private Predicate documentPredicate_appInfo(CriteriaBuilder cb, Root<Document> root) throws Exception { private Predicate documentPredicate_appInfo(CriteriaBuilder cb, Root<Document> root) throws Exception {
List<String> _appInfo_ids = ListTools.extractField(this.appInfoList, AppInfo.id_FIELDNAME, String.class, true, true); List<String> _appInfo_ids = ListTools.extractField(this.appInfoList, AppInfo.id_FIELDNAME, String.class,
List<String> _categoryInfo_ids = ListTools.extractField(this.categoryInfoList, CategoryInfo.id_FIELDNAME, String.class, true, true); true, true);
List<String> _categoryInfo_ids = ListTools.extractField(this.categoryInfoList, CategoryInfo.id_FIELDNAME,
String.class, true, true);
_appInfo_ids = _appInfo_ids.stream().filter(o -> { _appInfo_ids = _appInfo_ids.stream().filter(o -> {
return StringUtils.isNotEmpty(o); return StringUtils.isNotEmpty(o);
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -297,17 +298,17 @@ public class CmsPlan extends Plan { ...@@ -297,17 +298,17 @@ public class CmsPlan extends Plan {
return null; return null;
} }
Predicate p = cb.disjunction(); Predicate p = cb.disjunction();
if ( ListTools.isNotEmpty( _appInfo_ids) ) { if (ListTools.isNotEmpty(_appInfo_ids)) {
if( _appInfo_ids.size() == 1) { if (_appInfo_ids.size() == 1) {
p = cb.or(p, cb.equal( root.get(Document_.appId), _appInfo_ids.get( 0 ))); p = cb.or(p, cb.equal(root.get(Document_.appId), _appInfo_ids.get(0)));
}else { } else {
p = cb.or(p, root.get(Document_.appId).in(_appInfo_ids)); p = cb.or(p, root.get(Document_.appId).in(_appInfo_ids));
} }
} }
if ( ListTools.isNotEmpty( _categoryInfo_ids) ) { if (ListTools.isNotEmpty(_categoryInfo_ids)) {
if( _categoryInfo_ids.size() == 1) { if (_categoryInfo_ids.size() == 1) {
p = cb.or(p, cb.equal( root.get(Document_.categoryId), _categoryInfo_ids.get( 0 ))); p = cb.or(p, cb.equal(root.get(Document_.categoryId), _categoryInfo_ids.get(0)));
}else { } else {
p = cb.or(p, root.get(Document_.categoryId).in(_categoryInfo_ids)); p = cb.or(p, root.get(Document_.categoryId).in(_categoryInfo_ids));
} }
} }
...@@ -322,24 +323,24 @@ public class CmsPlan extends Plan { ...@@ -322,24 +323,24 @@ public class CmsPlan extends Plan {
return null; return null;
} }
Predicate p = cb.disjunction(); Predicate p = cb.disjunction();
if ( ListTools.isNotEmpty( _creatorUnits) ) { if (ListTools.isNotEmpty(_creatorUnits)) {
if( _creatorUnits.size() == 1) { if (_creatorUnits.size() == 1) {
p = cb.or(p, cb.equal( root.get(Document_.creatorUnitName), _creatorUnits.get( 0 ))); p = cb.or(p, cb.equal(root.get(Document_.creatorUnitName), _creatorUnits.get(0)));
}else { } else {
p = cb.or(p, root.get(Document_.creatorUnitName).in(_creatorUnits)); p = cb.or(p, root.get(Document_.creatorUnitName).in(_creatorUnits));
} }
} }
if ( ListTools.isNotEmpty( _creatorPersons) ) { if (ListTools.isNotEmpty(_creatorPersons)) {
if( _creatorPersons.size() == 1) { if (_creatorPersons.size() == 1) {
p = cb.or(p, cb.equal( root.get(Document_.creatorPerson), _creatorPersons.get( 0 ))); p = cb.or(p, cb.equal(root.get(Document_.creatorPerson), _creatorPersons.get(0)));
}else { } else {
p = cb.or(p, root.get(Document_.creatorPerson).in(_creatorPersons)); p = cb.or(p, root.get(Document_.creatorPerson).in(_creatorPersons));
} }
} }
if ( ListTools.isNotEmpty( _creatorIdentitys) ) { if (ListTools.isNotEmpty(_creatorIdentitys)) {
if( _creatorIdentitys.size() == 1) { if (_creatorIdentitys.size() == 1) {
p = cb.or(p, cb.equal( root.get(Document_.creatorIdentity), _creatorIdentitys.get( 0 ))); p = cb.or(p, cb.equal(root.get(Document_.creatorIdentity), _creatorIdentitys.get(0)));
}else { } else {
p = cb.or(p, root.get(Document_.creatorIdentity).in(_creatorIdentitys)); p = cb.or(p, root.get(Document_.creatorIdentity).in(_creatorIdentitys));
} }
} }
...@@ -351,7 +352,7 @@ public class CmsPlan extends Plan { ...@@ -351,7 +352,7 @@ public class CmsPlan extends Plan {
return null; return null;
} }
Expression var1 = root.get(Document_.publishTime); Expression var1 = root.get(Document_.publishTime);
if(this.draft){ if (this.draft) {
var1 = root.get(Document_.updateTime); var1 = root.get(Document_.updateTime);
} }
if (null == this.dateRange.start) { if (null == this.dateRange.start) {
...@@ -362,48 +363,50 @@ public class CmsPlan extends Plan { ...@@ -362,48 +363,50 @@ public class CmsPlan extends Plan {
return cb.between(var1, this.dateRange.start, this.dateRange.completed); return cb.between(var1, this.dateRange.start, this.dateRange.completed);
} }
} }
private Predicate documentPredicate_typeScope(CriteriaBuilder cb, Root<Document> root) { private Predicate documentPredicate_typeScope(CriteriaBuilder cb, Root<Document> root) {
if (StringUtils.equals( this.scope, SCOPE_CMS_DATA )) { if (StringUtils.equals(this.scope, SCOPE_CMS_DATA)) {
return cb.equal(root.get(Document_.documentType), "数据"); return cb.equal(root.get(Document_.documentType), "数据");
}else if (StringUtils.equals( this.scope, SCOPE_CMS_INFO )) { } else if (StringUtils.equals(this.scope, SCOPE_CMS_INFO)) {
return cb.equal(root.get(Document_.documentType), "信息"); return cb.equal(root.get(Document_.documentType), "信息");
} }
return null; return null;
} }
private Predicate documentPredicate_Filter(CriteriaBuilder cb, Root<Document> root, Runtime runtime, List<FilterEntry> filterList) throws Exception { private Predicate documentPredicate_Filter(CriteriaBuilder cb, Root<Document> root, Runtime runtime,
List<FilterEntry> filterList) throws Exception {
boolean flag = true; boolean flag = true;
Predicate p = cb.disjunction(); Predicate p = cb.disjunction();
for(FilterEntry filterEntry : filterList){ for (FilterEntry filterEntry : filterList) {
if(filterEntry.path.indexOf("(")>-1 && filterEntry.path.indexOf(")")>-1){ if (filterEntry.path.indexOf("(") > -1 && filterEntry.path.indexOf(")") > -1) {
flag = false; flag = false;
String path = StringUtils.substringBetween(filterEntry.path, "(", ")").trim(); String path = StringUtils.substringBetween(filterEntry.path, "(", ")").trim();
if("readPersonList".equals(path)){ if ("readPersonList".equals(path)) {
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) {
p = cb.or(p, cb.isMember(StringUtils.substringAfter(runtime.person, "@"), root.get(Document_.readPersonList))); p = cb.or(p, cb.isMember(StringUtils.substringAfter(runtime.person, "@"),
root.get(Document_.readPersonList)));
} }
}else if("readUnitList".equals(path)){ } else if ("readUnitList".equals(path)) {
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)) {
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); Predicate fp = filterEntry.toCmsDocumentPredicate(cb, root, runtime, path);
if (StringUtils.equals("and", filterEntry.logic)) { if (StringUtils.equals("and", filterEntry.logic)) {
p = cb.and(p, fp); p = cb.and(p, fp);
}else{ } else {
p = cb.or(p, fp); p = cb.or(p, fp);
} }
} }
} }
} }
if(flag){ if (flag) {
return null; return null;
} }
return p; return p;
......
...@@ -105,19 +105,19 @@ public abstract class Plan extends GsonPropertyObject { ...@@ -105,19 +105,19 @@ public abstract class Plan extends GsonPropertyObject {
for (SelectEntry en : orderList) { for (SelectEntry en : orderList) {
o1 = r1.find(en.column); o1 = r1.find(en.column);
o2 = r2.find(en.column); o2 = r2.find(en.column);
if(BooleanUtils.isTrue(en.numberOrder)){ if (BooleanUtils.isTrue(en.numberOrder)) {
if(StringUtils.isEmpty(o1.toString())){ if (StringUtils.isEmpty(o1.toString())) {
c1 = Double.MAX_VALUE; c1 = Double.MAX_VALUE;
}else{ } else {
try { try {
c1 = Double.parseDouble(o1.toString()); c1 = Double.parseDouble(o1.toString());
} catch (Exception e) { } catch (Exception e) {
c1 = Double.MAX_VALUE; c1 = Double.MAX_VALUE;
} }
} }
if(StringUtils.isEmpty(o2.toString())){ if (StringUtils.isEmpty(o2.toString())) {
c2 = Double.MAX_VALUE; c2 = Double.MAX_VALUE;
}else{ } else {
try { try {
c2 = Double.parseDouble(o2.toString()); c2 = Double.parseDouble(o2.toString());
} catch (Exception e) { } catch (Exception e) {
...@@ -129,7 +129,7 @@ public abstract class Plan extends GsonPropertyObject { ...@@ -129,7 +129,7 @@ public abstract class Plan extends GsonPropertyObject {
} else { } else {
comp = c2.compareTo(c1); comp = c2.compareTo(c1);
} }
}else if (null == o1 && null == o2) { } else if (null == o1 && null == o2) {
comp = 0; comp = 0;
} else if (null == o1) { } else if (null == o1) {
comp = -1; comp = -1;
...@@ -515,48 +515,48 @@ public abstract class Plan extends GsonPropertyObject { ...@@ -515,48 +515,48 @@ public abstract class Plan extends GsonPropertyObject {
for (Tuple o : list) { for (Tuple o : list) {
row = table.get(Objects.toString(o.get(0))); row = table.get(Objects.toString(o.get(0)));
switch (ItemPrimitiveType.valueOf(Objects.toString(o.get(1)))) { switch (ItemPrimitiveType.valueOf(Objects.toString(o.get(1)))) {
case s:
switch (ItemStringValueType.valueOf(Objects.toString(o.get(2)))) {
case s: case s:
switch (ItemStringValueType.valueOf(Objects.toString(o.get(2)))) { if (null != o.get(3)) {
case s: if ((null != o.get(4)) && StringUtils.isNotEmpty(Objects.toString(o.get(4)))) {
if (null != o.get(3)) { row.put(selectEntry.getColumn(), Objects.toString(o.get(4)));
if ((null != o.get(4)) && StringUtils.isNotEmpty(Objects.toString(o.get(4)))) { } else {
row.put(selectEntry.getColumn(), Objects.toString(o.get(4))); row.put(selectEntry.getColumn(), Objects.toString(o.get(3)));
} else { }
row.put(selectEntry.getColumn(), Objects.toString(o.get(3))); }
} break;
} case d:
break; if (null != o.get(5)) {
case d: row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(5)));
if (null != o.get(5)) {
row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(5)));
}
break;
case t:
if (null != o.get(6)) {
row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(6)));
}
break;
case dt:
if (null != o.get(7)) {
row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(7)));
}
break;
default:
break;
} }
break; break;
case b: case t:
if (null != o.get(8)) { if (null != o.get(6)) {
row.put(selectEntry.getColumn(), (Boolean) o.get(8)); row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(6)));
} }
break; break;
case n: case dt:
if (null != o.get(9)) { if (null != o.get(7)) {
row.put(selectEntry.getColumn(), (Number) o.get(9)); row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(7)));
} }
break; break;
default: default:
break; break;
}
break;
case b:
if (null != o.get(8)) {
row.put(selectEntry.getColumn(), (Boolean) o.get(8));
}
break;
case n:
if (null != o.get(9)) {
row.put(selectEntry.getColumn(), (Number) o.get(9));
}
break;
default:
break;
} }
} }
} }
......
...@@ -135,9 +135,9 @@ public class ProcessPlatformPlan extends Plan { ...@@ -135,9 +135,9 @@ public class ProcessPlatformPlan extends Plan {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class); CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<Work> root = cq.from(Work.class); Root<Work> root = cq.from(Work.class);
cq.select(root.get(Work_.job)).distinct(true).where(this.where.workPredicate(cb, root)); cq.select(root.get(Work_.job)).where(this.where.workPredicate(cb, root));
List<String> jobs = em.createQuery(cq).getResultList(); List<String> jobs = em.createQuery(cq).getResultList();
return jobs; return jobs.stream().distinct().collect(Collectors.toList());
} }
private List<String> listBundle_workCompleted(EntityManagerContainer emc) throws Exception { private List<String> listBundle_workCompleted(EntityManagerContainer emc) throws Exception {
...@@ -145,9 +145,9 @@ public class ProcessPlatformPlan extends Plan { ...@@ -145,9 +145,9 @@ public class ProcessPlatformPlan extends Plan {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery(String.class); CriteriaQuery<String> cq = cb.createQuery(String.class);
Root<WorkCompleted> root = cq.from(WorkCompleted.class); Root<WorkCompleted> root = cq.from(WorkCompleted.class);
cq.select(root.get(WorkCompleted_.job)).distinct(true).where(this.where.workCompletedPredicate(cb, root)); cq.select(root.get(WorkCompleted_.job)).where(this.where.workCompletedPredicate(cb, root));
List<String> jobs = em.createQuery(cq).getResultList(); List<String> jobs = em.createQuery(cq).getResultList();
return jobs; return jobs.stream().distinct().collect(Collectors.toList());
} }
private List<String> listBundle_accessible(EntityManagerContainer emc, List<String> jobs, String person) private List<String> listBundle_accessible(EntityManagerContainer emc, List<String> jobs, String person)
...@@ -169,8 +169,9 @@ public class ProcessPlatformPlan extends Plan { ...@@ -169,8 +169,9 @@ public class ProcessPlatformPlan extends Plan {
Expression<Set<String>> expression = cb.keys(map); Expression<Set<String>> expression = cb.keys(map);
Predicate p = cb.isMember(root.get(Review_.job), expression); Predicate p = cb.isMember(root.get(Review_.job), expression);
p = cb.and(p, cb.equal(root.get(Review_.person), person)); p = cb.and(p, cb.equal(root.get(Review_.person), person));
cq.select(root.get(Review_.job)).distinct(true).where(p); cq.select(root.get(Review_.job)).where(p);
return em.createQuery(cq).getResultList(); List<String> parts = em.createQuery(cq).getResultList();
return parts.stream().distinct().collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -206,8 +207,9 @@ public class ProcessPlatformPlan extends Plan { ...@@ -206,8 +207,9 @@ public class ProcessPlatformPlan extends Plan {
Predicate p = f.toPredicate(cb, root, this.runtime, ItemCategory.pp); Predicate p = f.toPredicate(cb, root, this.runtime, ItemCategory.pp);
logger.debug("predicate:{}.", p); logger.debug("predicate:{}.", p);
p = cb.and(p, cb.isMember(root.get(Item_.bundle), cb.literal(_batch))); p = cb.and(p, cb.isMember(root.get(Item_.bundle), cb.literal(_batch)));
cq.select(root.get(Item_.bundle)).distinct(true).where(p); cq.select(root.get(Item_.bundle)).where(p);
return em.createQuery(cq).getResultList(); List<String> parts = em.createQuery(cq).getResultList();
return parts.stream().distinct().collect(Collectors.toList());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册