提交 ddfb1ead 编写于 作者: O o2sword

内容管理文档权限刷新修改

上级 c23bf19e
......@@ -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);
}
......
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<CmsBatchOperation> list(Integer maxCount, Integer minutesAgo) throws Exception {
EntityManager em = this.entityManagerContainer().get( CmsBatchOperation.class );
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<CmsBatchOperation> cq = cb.createQuery( CmsBatchOperation.class );
Root<CmsBatchOperation> 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<CmsBatchOperation> listNotRun(Integer maxCount) throws Exception {
EntityManager em = this.entityManagerContainer().get( CmsBatchOperation.class );
......
......@@ -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<String> 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<String> listUnReviewIds(Integer maxCount, Integer minutesAgo) throws Exception {
if( maxCount == null ){
maxCount = 500;
}
EntityManager em = this.entityManagerContainer().get( Document.class );
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<String> cq = cb.createQuery( String.class );
Root<Document> 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();
......
......@@ -29,6 +29,14 @@ public class CmsBatchOperationQueryService {
throw e;
}
}
public List<CmsBatchOperation> 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<CmsBatchOperation> listNotRun( Integer maxCount ) throws Exception {
try ( EntityManagerContainer emc = EntityManagerContainerFactory.instance().create() ) {
......
......@@ -24,6 +24,14 @@ public class CmsBatchOperationService {
Business business = new Business( emc );
return business.cmsBatchOperationFactory().list(maxCount);
}
public List<CmsBatchOperation> 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<CmsBatchOperation> listNotRun( EntityManagerContainer emc, Integer maxCount ) throws Exception {
if( maxCount == null ){
......
......@@ -319,6 +319,11 @@ public class DocumentInfoService {
return business.getDocumentFactory().listUnReviewIds( maxCount);
}
public List<String> listUnReviewIds(EntityManagerContainer emc, Integer maxCount, Integer minutesAgo) throws Exception {
Business business = new Business(emc);
return business.getDocumentFactory().listUnReviewIds( maxCount, minutesAgo);
}
/**
* 删除指定ID的文档
* @param emc
......
......@@ -31,8 +31,8 @@ public class Timertask_BatchOperationTask extends AbstractJob {
if (ThisApplication.queueBatchOperation.isEmpty()) {
List<CmsBatchOperation> 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<String> ids = documentInfoService.listUnReviewIds(emc, 5000);
List<String> ids = documentInfoService.listUnReviewIds(emc, 1000, 5);
if (ListTools.isNotEmpty(ids)) {
CmsBatchOperationPersistService cmsBatchOperationPersistService = new CmsBatchOperationPersistService();
for (String docId : ids) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册