Bladeren bron

Merge branch 'fix/#241' into 'develop'

修复自动流转无record的bug

See merge request o2oa/o2oa!1110
o2null 5 jaren geleden
bovenliggende
commit
03771ade9f

+ 2 - 2
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/ManualProcessor.java

@@ -613,10 +613,10 @@ public class ManualProcessor extends AbstractManualProcessor {
 
 	private void expireAppointNaturalDay(Task task, Manual manual) throws Exception {
 		Integer m = 0;
-		if (NumberTools.greaterThan(manual.getTaskExpireDay(), 0)) {
+		if (BooleanUtils.isTrue(NumberTools.greaterThan(manual.getTaskExpireDay(), 0))) {
 			m += manual.getTaskExpireDay() * 60 * 24;
 		}
-		if (NumberTools.greaterThan(manual.getTaskExpireHour(), 0)) {
+		if (BooleanUtils.isTrue(NumberTools.greaterThan(manual.getTaskExpireHour(), 0))) {
 			m += manual.getTaskExpireHour() * 60;
 		}
 		if (m > 0) {

+ 21 - 31
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/schedule/PassExpired.java

@@ -8,19 +8,18 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
-import javax.persistence.Tuple;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Path;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.entity.JpaObject;
+import com.x.base.core.entity.JpaObject_;
 import com.x.base.core.project.Applications;
 import com.x.base.core.project.x_processplatform_service_processing;
 import com.x.base.core.project.config.Config;
-import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.jaxrs.WoId;
 import com.x.base.core.project.jaxrs.WrapBoolean;
 import com.x.base.core.project.logger.Logger;
@@ -72,13 +71,9 @@ public class PassExpired extends AbstractJob {
 					if (!targets.isEmpty()) {
 						sequence = targets.get(targets.size() - 1).getSequence();
 						for (Task task : targets) {
-							try {
-								logger.print("执行超时工作默认路由流转:{}, id:{}.", task.getTitle(), task.getId());
-								this.execute(task);
-								count.incrementAndGet();
-							} catch (Exception e) {
-								logger.error(e);
-							}
+							logger.print("执行超时工作默认路由流转:{}, id:{}.", task.getTitle(), task.getId());
+							this.executeWithLogException(task);
+							count.incrementAndGet();
 						}
 					}
 				} while (!targets.isEmpty());
@@ -89,6 +84,15 @@ public class PassExpired extends AbstractJob {
 		}
 	}
 
+	private void executeWithLogException(Task task) {
+		try {
+			this.execute(task);
+		} catch (Exception e) {
+			logger.error(e);
+		}
+
+	}
+
 	private void execute(Task task) throws Exception {
 		try {
 			String series = StringTools.uniqueToken();
@@ -211,7 +215,7 @@ public class PassExpired extends AbstractJob {
 		/* 记录上一处理人信息 */
 		if (ListTools.isNotEmpty(list)) {
 			WrapUpdatePrevTaskIdentity req = new WrapUpdatePrevTaskIdentity();
-			req.setTaskList(ListTools.extractProperty(list, Task.id_FIELDNAME, String.class, true, true));
+			req.setTaskList(ListTools.extractProperty(list, JpaObject.id_FIELDNAME, String.class, true, true));
 			req.getPrevTaskIdentityList().add(task.getIdentity());
 			ThisApplication.context().applications()
 					.putQuery(x_processplatform_service_processing.class,
@@ -282,37 +286,23 @@ public class PassExpired extends AbstractJob {
 			throws Exception {
 		EntityManager em = emc.get(Task.class);
 		CriteriaBuilder cb = em.getCriteriaBuilder();
-		CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
+		CriteriaQuery<Task> cq = cb.createQuery(Task.class);
 		Root<Task> root = cq.from(Task.class);
-		Path<String> id_path = root.get(Task_.id);
-		Path<String> job_path = root.get(Task_.job);
-		Path<String> sequence_path = root.get(Task_.sequence);
-		Path<String> work_path = root.get(Task_.work);
 		Predicate p = cb.equal(root.get(Task_.expired), true);
 		p = cb.and(p, root.get(Task_.activity).in(manualToRoute.keySet()));
 		if (StringUtils.isNotEmpty(sequence)) {
-			p = cb.and(p, cb.greaterThan(sequence_path, sequence));
-		}
-		cq.multiselect(id_path, job_path, sequence_path, work_path).where(p).orderBy(cb.asc(sequence_path));
-		List<Tuple> os = em.createQuery(cq).setMaxResults(200).getResultList();
-		List<Task> list = new ArrayList<>();
-		for (Tuple o : os) {
-			Task task = new Task();
-			task.setId(o.get(id_path));
-			task.setJob(o.get(job_path));
-			task.setSequence(o.get(sequence_path));
-			task.setWork(o.get(work_path));
-			list.add(task);
+			p = cb.and(p, cb.greaterThan(root.get(JpaObject_.sequence), sequence));
 		}
-		return list;
+		return em.createQuery(cq.select(root).where(p).orderBy(cb.asc(root.get(JpaObject_.sequence))))
+				.setMaxResults(200).getResultList();
 	}
 
 	private Map<String, Route> linkPassExpiredManualToRoute(EntityManagerContainer emc) throws Exception {
 		List<Route> routes = emc.fetchEqual(Route.class,
-				ListTools.toList(Route.id_FIELDNAME, Route.name_FIELDNAME, Route.opinion_FIELDNAME),
+				ListTools.toList(JpaObject.id_FIELDNAME, Route.name_FIELDNAME, Route.opinion_FIELDNAME),
 				Route.passExpired_FIELDNAME, true);
 		List<Manual> manuals = emc.fetchIn(Manual.class, Manual.routeList_FIELDNAME,
-				ListTools.extractProperty(routes, Route.id_FIELDNAME, String.class, true, true));
+				ListTools.extractProperty(routes, JpaObject.id_FIELDNAME, String.class, true, true));
 		List<String> ids = new ArrayList<>();
 		for (Manual m : manuals) {
 			ids.add(m.getId());