diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java index ca0a85e25b335fcaffe186a192c8ba075ad1c509..92bd197b19755b4a206bbcbc28e7f49100e9ef2d 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/ThisApplication.java @@ -67,8 +67,8 @@ public class ThisApplication { // 每天凌晨2点,计算所有的文档的权限信息 context.schedule(Timertask_RefreshAllDocumentReviews.class, "0 0 2 * * ?"); - - context.scheduleLocal(Timertask_CheckDocumentReviewStatus.class, 1200); + //集群下多台会一起运行,Timertask_BatchOperationTask运行即可 + //context.scheduleLocal(Timertask_CheckDocumentReviewStatus.class, 1200); context.scheduleLocal(Timertask_InitOperationRunning.class, 150); } diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/CmsBatchOperationFactory.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/CmsBatchOperationFactory.java index d0e3369360ac72c0db1aee86dd074a12dde9854c..ca98cbcc50b58aa401b8d96be9ac47f92e8a7c00 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/CmsBatchOperationFactory.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/CmsBatchOperationFactory.java @@ -1,5 +1,6 @@ package com.x.cms.assemble.control.factory; +import java.util.Date; import java.util.List; import javax.persistence.EntityManager; @@ -8,10 +9,12 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; +import com.x.base.core.project.tools.DateTools; import com.x.cms.assemble.control.AbstractFactory; import com.x.cms.assemble.control.Business; import com.x.cms.core.entity.CmsBatchOperation; import com.x.cms.core.entity.CmsBatchOperation_; +import com.x.processplatform.core.entity.content.Task_; /** * 批处理操作信息记录,比如需要级联删除大量的分类,文档等等 @@ -40,6 +43,16 @@ public class CmsBatchOperationFactory extends AbstractFactory { cq.orderBy( cb.asc( root.get( CmsBatchOperation_.createTime ) ) ); return em.createQuery(cq).setMaxResults(maxCount).getResultList(); } + + public List list(Integer maxCount, Integer minutesAgo) throws Exception { + EntityManager em = this.entityManagerContainer().get( CmsBatchOperation.class ); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery( CmsBatchOperation.class ); + Root root = cq.from( CmsBatchOperation.class ); + Predicate p = cb.lessThan(root.get(CmsBatchOperation_.createTime), DateTools.getAdjustTimeDay(new Date(), 0, 0, -minutesAgo, 0)); + cq.where(p).orderBy( cb.asc( root.get( CmsBatchOperation_.createTime ) ) ); + return em.createQuery(cq).setMaxResults(maxCount).getResultList(); + } public List listNotRun(Integer maxCount) throws Exception { EntityManager em = this.entityManagerContainer().get( CmsBatchOperation.class ); diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/DocumentFactory.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/DocumentFactory.java index 94a6bb7dad3f2f589755890506328395561ec270..87e1fcf268768599a0d6150daa1a4a331b78307e 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/DocumentFactory.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/factory/DocumentFactory.java @@ -4,14 +4,12 @@ import com.x.base.core.entity.JpaObject; import com.x.base.core.project.bean.WrapCopier; import com.x.base.core.project.bean.WrapCopierFactory; import com.x.base.core.project.exception.ExceptionWhen; +import com.x.base.core.project.tools.DateTools; import com.x.base.core.project.tools.ListTools; import com.x.cms.assemble.control.AbstractFactory; import com.x.cms.assemble.control.Business; import com.x.cms.assemble.control.jaxrs.document.ActionQueryListWithFilterPagingAdmin; -import com.x.cms.core.entity.Document; -import com.x.cms.core.entity.Document_; -import com.x.cms.core.entity.Review; -import com.x.cms.core.entity.Review_; +import com.x.cms.core.entity.*; import com.x.cms.core.express.tools.CriteriaBuilderTools; import com.x.cms.core.express.tools.filter.QueryFilter; import org.apache.commons.beanutils.PropertyUtils; @@ -22,6 +20,7 @@ import javax.persistence.EntityManager; import javax.persistence.Tuple; import javax.persistence.criteria.*; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** * 文档信息基础功能服务类 @@ -394,8 +393,6 @@ public class DocumentFactory extends AbstractFactory { return em.createQuery(cq.where(p)).setMaxResults(maxCount).getResultList(); } - - public List listUnReviewIds(Integer maxCount) throws Exception { if( maxCount == null ){ maxCount = 500; @@ -410,6 +407,22 @@ public class DocumentFactory extends AbstractFactory { return em.createQuery(cq.where(p)).setMaxResults(maxCount).getResultList(); } + public List listUnReviewIds(Integer maxCount, Integer minutesAgo) throws Exception { + if( maxCount == null ){ + maxCount = 500; + } + EntityManager em = this.entityManagerContainer().get( Document.class ); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery( String.class ); + Root root = cq.from( Document.class ); + Predicate p = cb.lessThan(root.get(Document_.createTime), + DateTools.getAdjustTimeDay(new Date(), 0, 0, -minutesAgo, 0)); + p = cb.and(p, cb.or(cb.isFalse( root.get(Document_.reviewed )), cb.isNull(root.get(Document_.reviewed )))); + cq.select(root.get( Document_.id)); + cq.where(p).orderBy( cb.asc( root.get( CmsBatchOperation_.createTime ) ) ); + return em.createQuery(cq).setMaxResults(maxCount).getResultList(); + } + public Long countWithConditionOutofPermission(QueryFilter queryFilter) throws Exception { EntityManager em = this.entityManagerContainer().get( Document.class ); CriteriaBuilder cb = em.getCriteriaBuilder(); diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationQueryService.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationQueryService.java index bae0b40c2ee72e1337dd05f40d3a563f46fb1647..61534b2a901cfe38de66c0cf227a4839740c7159 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationQueryService.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationQueryService.java @@ -29,6 +29,14 @@ public class CmsBatchOperationQueryService { throw e; } } + + public List list( Integer maxCount, Integer minutesAgo) throws Exception { + try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) { + return cmsBatchOperationService.list( emc, maxCount, minutesAgo); + } catch ( Exception e ) { + throw e; + } + } public List listNotRun( Integer maxCount ) throws Exception { try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) { diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationService.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationService.java index da06d74a360160b94d4364fbdda08b12ba5ca124..059f88e9513c6dab585dd14efe20daa28e6f61ac 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationService.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationService.java @@ -24,6 +24,14 @@ public class CmsBatchOperationService { Business business = new Business( emc ); return business.cmsBatchOperationFactory().list(maxCount); } + + public List list( EntityManagerContainer emc, Integer maxCount, Integer minutesAgo) throws Exception { + if( maxCount == null ){ + maxCount = 10; + } + Business business = new Business( emc ); + return business.cmsBatchOperationFactory().list(maxCount, minutesAgo); + } public List listNotRun( EntityManagerContainer emc, Integer maxCount ) throws Exception { if( maxCount == null ){ diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentInfoService.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentInfoService.java index a41829f6065cae73071a9b688dd3ddee0cc5dc33..05934d926df7a935945551b1597b435a403d7ea2 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentInfoService.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/DocumentInfoService.java @@ -319,6 +319,11 @@ public class DocumentInfoService { return business.getDocumentFactory().listUnReviewIds( maxCount); } + public List listUnReviewIds(EntityManagerContainer emc, Integer maxCount, Integer minutesAgo) throws Exception { + Business business = new Business(emc); + return business.getDocumentFactory().listUnReviewIds( maxCount, minutesAgo); + } + /** * 删除指定ID的文档 * @param emc diff --git a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/timertask/Timertask_BatchOperationTask.java b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/timertask/Timertask_BatchOperationTask.java index 0aaa28c3e72085cf7b3acb94b79313b5048a41c9..771066ba2b38ce8eb46deebc5186567a4a376583 100644 --- a/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/timertask/Timertask_BatchOperationTask.java +++ b/o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/timertask/Timertask_BatchOperationTask.java @@ -31,8 +31,8 @@ public class Timertask_BatchOperationTask extends AbstractJob { if (ThisApplication.queueBatchOperation.isEmpty()) { List operations = null; try { - logger.debug("Timertask_BatchOperationTask -> query 2000 cms batch operation in database......"); - operations = cmsBatchOperationQueryService.list(2000); + logger.debug("Timertask_BatchOperationTask -> query 1000 cms batch operation in database......"); + operations = cmsBatchOperationQueryService.list(1000, 8); } catch (Exception e) { logger.warn("Timertask_BatchOperationTask -> list operations got an exception."); logger.error(e); @@ -55,7 +55,7 @@ public class Timertask_BatchOperationTask extends AbstractJob { // 如果队列里已经没有任务了,那么检查一下是否还有未revieiw的文档,添加到队列 DocumentInfoService documentInfoService = new DocumentInfoService(); try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { - List ids = documentInfoService.listUnReviewIds(emc, 5000); + List ids = documentInfoService.listUnReviewIds(emc, 1000, 5); if (ListTools.isNotEmpty(ids)) { CmsBatchOperationPersistService cmsBatchOperationPersistService = new CmsBatchOperationPersistService(); for (String docId : ids) {