Przeglądaj źródła

修改SignalStack 支持异步操作

zhourui 4 lat temu
rodzic
commit
5e0d6a2c09

+ 28 - 2
o2server/x_base_core_project/src/main/java/com/x/base/core/container/EntityManagerContainer.java

@@ -542,8 +542,8 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return new ArrayList<T>(query.getResultList());
 	}
 
-	public <T extends JpaObject> List<T> listEqualAndLessThanOrEqualTo(Class<T> cls, String attribute,
-			Object value, String otherAttribute, Object otherValue) throws Exception {
+	public <T extends JpaObject> List<T> listEqualAndLessThanOrEqualTo(Class<T> cls, String attribute, Object value,
+			String otherAttribute, Object otherValue) throws Exception {
 		EntityManager em = this.get(cls);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
 		CriteriaQuery<T> cq = cb.createQuery(cls);
@@ -610,6 +610,16 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return list;
 	}
 
+	public <T extends JpaObject> Optional<T> first(Class<T> cls) throws Exception {
+		EntityManager em = this.get(cls);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<T> cq = cb.createQuery(cls);
+		Root<T> root = cq.from(cls);
+		cq.select(root);
+		List<T> os = em.createQuery(cq).setMaxResults(1).getResultList();
+		return os.isEmpty() ? Optional.empty() : Optional.of(os.get(0));
+	}
+
 	public <T extends JpaObject> T firstEqual(Class<T> cls, String attribute, Object value) throws Exception {
 		EntityManager em = this.get(cls);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
@@ -1700,6 +1710,22 @@ public class EntityManagerContainer extends EntityManagerContainerBasic {
 		return list;
 	}
 
+	public <T extends JpaObject> List<T> listSequenceAfter(Class<T> clz, Integer count, String sequence)
+			throws Exception {
+		EntityManager em = this.get(clz);
+		CriteriaBuilder cb = em.getCriteriaBuilder();
+		CriteriaQuery<T> cq = cb.createQuery(clz);
+		Root<T> root = cq.from(clz);
+		Predicate p = cb.conjunction();
+		if (StringUtils.isNotEmpty(sequence)) {
+			p = cb.greaterThan(root.get(JpaObject.sequence_FIELDNAME), sequence);
+		}
+		cq.select(root).where(p).orderBy(cb.asc(root.get(JpaObject.sequence_FIELDNAME)));
+		List<T> os = em.createQuery(cq).setMaxResults((count != null && count > 0) ? count : 100).getResultList();
+		List<T> list = new ArrayList<>(os);
+		return list;
+	}
+
 	/* 仅在单一数据库可用 */
 	public <T extends JpaObject> List<T> fetchDescPaging(Class<T> clz, Predicate predicate, Integer page, Integer count,
 			String orderAttribute) throws Exception {

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/document/ActionPersistPublishByWorkFlow.java

@@ -211,7 +211,7 @@ public class ActionPersistPublishByWorkFlow extends BaseAction {
 
 		if (check) {
 			try {
-				JsonElement docData = XGsonBuilder.instance().toJsonTree(wi.getDocData(), Map.class);
+				JsonElement docData = XGsonBuilder.instance().toJsonTree(wi.getDocData());
 				wi.setDocStatus("published");
 				if(wi.getPublishTime()==null) {
 					wi.setPublishTime(new Date());

+ 2 - 2
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/log/SignalStack.java

@@ -1,8 +1,8 @@
 package com.x.processplatform.core.entity.log;
 
-import java.util.LinkedList;
+import java.util.concurrent.CopyOnWriteArrayList;
 
-public class SignalStack extends LinkedList<Signal> {
+public class SignalStack extends CopyOnWriteArrayList<Signal> {
 
 	private static final long serialVersionUID = -3971898583590304010L;