Просмотр исходного кода

cms文档重复刷新权限的问题

o2sword 5 лет назад
Родитель
Сommit
af7ff8ef81

+ 46 - 46
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/service/CmsBatchOperationProcessService.java

@@ -25,14 +25,14 @@ import com.x.cms.core.entity.Review;
  * 批处理操作执行
  */
 public class CmsBatchOperationProcessService {
-	
+
 	public static String OPT_OBJ_DOCUMENT = "DOCUMENT";
 	public static String OPT_OBJ_CATEGORY = "CATEGORY";
 	public static String OPT_OBJ_APPINFO = "APPINFO";
 	public static String OPT_TYPE_PERMISSION = "PERMISSION";
 	public static String OPT_TYPE_UPDATENAME = "UPDATENAME";
 	public static String OPT_TYPE_DELETE = "DELETE";
-	
+
 	private static  Logger logger = LoggerFactory.getLogger( CmsBatchOperationProcessService.class );
 	private DocumentInfoService documentInfoService = new DocumentInfoService();
 	private ReviewService reviewService = new ReviewService();
@@ -40,7 +40,7 @@ public class CmsBatchOperationProcessService {
 	 * 批处理操作执行
 	 * @param cmsBatchOperation
 	 * @return
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	public String process( CmsBatchOperation cmsBatchOperation ) throws Exception {
 		logger.debug( "process -> Cms processing batch operation: " + cmsBatchOperation.toString() );
@@ -53,11 +53,11 @@ public class CmsBatchOperationProcessService {
 				emc.check( cmsBatchOperation, CheckPersistType.all );
 				emc.commit();
 				logger.debug( "process -> cms change batch operation running......: " );
-			}			
+			}
 		} catch (Exception e) {
 			throw e;
 		}
-		
+
 		if( "DOCUMENT".equalsIgnoreCase( cmsBatchOperation.getObjType() )) {
 			if( "PERMISSION".equalsIgnoreCase( cmsBatchOperation.getOptType() )) {//文档处理
 				//将categoryName是旧分类名称的所有文档的分类和栏目相关的信息更新掉,最后删除当前的批处理信息
@@ -75,7 +75,7 @@ public class CmsBatchOperationProcessService {
 				}
 			}else if( "PERMISSION".equalsIgnoreCase( cmsBatchOperation.getOptType()  )) {
 				//分类修改权限
-				refreshDocumentReviewInCagetory( cmsBatchOperation.getId(), cmsBatchOperation.getBundle() );				
+				refreshDocumentReviewInCagetory( cmsBatchOperation.getId(), cmsBatchOperation.getBundle() );
 			}else if( "DELETE".equalsIgnoreCase( cmsBatchOperation.getOptType()  )) {
 				//删除文档,并且修改分类所属的栏目中的分类数量和文档数量
 				deleteDocumentInCategory( cmsBatchOperation.getId(), cmsBatchOperation.getBundle() );
@@ -89,7 +89,7 @@ public class CmsBatchOperationProcessService {
 				}
 			}else if( "PERMISSION".equalsIgnoreCase( cmsBatchOperation.getOptType()  )) {
 				//栏目修改权限
-				refreshDocumentReviewInAppInfo( cmsBatchOperation.getId(), cmsBatchOperation.getBundle() );		
+				refreshDocumentReviewInAppInfo( cmsBatchOperation.getId(), cmsBatchOperation.getBundle() );
 			}else if( "DELETE".equalsIgnoreCase( cmsBatchOperation.getOptType()  )) {
 				//删除分类以及文档,并且修改分类所属的栏目中的分类数量和文档数量
 				deleteDocumentInApp( cmsBatchOperation.getId(), cmsBatchOperation.getBundle() );
@@ -130,12 +130,12 @@ public class CmsBatchOperationProcessService {
 							document.setAppAlias( appInfo.getAppName() );
 						}
 						emc.check( document, CheckPersistType.all );
-						emc.commit();						
-						cmsBatchOperationPersistService.addOperation( 
-								CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT, 
+						emc.commit();
+						cmsBatchOperationPersistService.addOperation(
+								CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT,
 								CmsBatchOperationProcessService.OPT_TYPE_PERMISSION, document.getId(), document.getId(), "栏目权限变更引起文档Review变更:ID=" + document.getId() );
 					}
-					
+
 				}
 				ids = null;
 				documentList = null;
@@ -164,7 +164,7 @@ public class CmsBatchOperationProcessService {
 			Long count = business.getDocumentFactory().countByCategoryId(categoryId);
 			Long maxTimes = count/maxQueryCount + 2;
 			logger.info( "refreshDocumentReviewInCagetory -> There are : " + count + " documents need to refresh review, maxTimes=" + maxTimes  );
-			
+
 			for( int i=0; i<=maxTimes; i++ ) {
 				ids = business.getDocumentFactory().listReviewedIdsByCategoryId(categoryId, maxQueryCount );
 				if(ListTools.isNotEmpty( ids )) {
@@ -177,13 +177,13 @@ public class CmsBatchOperationProcessService {
 						document.setReviewed( false );
 						emc.check( document, CheckPersistType.all );
 						emc.commit();
-						
+
 						logger.info( "refreshDocumentReviewInCagetory -> Send docment permission operation to queue[queueBatchOperation], document:" + document.getTitle()  );
-						cmsBatchOperationPersistService.addOperation( 
-								CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT, 
+						cmsBatchOperationPersistService.addOperation(
+								CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT,
 								CmsBatchOperationProcessService.OPT_TYPE_PERMISSION, document.getId(), document.getId(), "分类权限变更引起文档Review变更:ID=" + document.getId() );
 					}
-					
+
 				}
 				ids = null;
 				documentList = null;
@@ -200,7 +200,7 @@ public class CmsBatchOperationProcessService {
 	}
 
 	private void deleteDocumentReview(String id, String docId) throws Exception {
-		CmsBatchOperation cmsBatchOperation = null;		
+		CmsBatchOperation cmsBatchOperation = null;
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			cmsBatchOperation = emc.find( id, CmsBatchOperation.class );
 			logger.info( "deleteDocumentReview -> delete all reviews for document: " + docId );
@@ -223,16 +223,16 @@ public class CmsBatchOperationProcessService {
 	 * 全部删除,然后再重新插入Review记录
 	 * @param id
 	 * @param docId
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	private void refreshDocumentReview( String id, String docId ) throws Exception {
 		CmsBatchOperation cmsBatchOperation = null;
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			cmsBatchOperation = emc.find( id, CmsBatchOperation.class );
-			
+
 			reviewService.refreshDocumentReview( emc, docId );
 
-			/*Document document = emc.find( docId, Document.class );
+			Document document = emc.find( docId, Document.class );
 			if( document != null ) {
 				emc.beginTransaction( Document.class );
 				document.setReviewed( true );
@@ -261,8 +261,8 @@ public class CmsBatchOperationProcessService {
 
 				emc.check( document, CheckPersistType.all );
 				emc.commit();
-			}*/
-			
+			}
+
 			if( cmsBatchOperation != null ) {
 				emc.beginTransaction( CmsBatchOperation.class );
 				emc.remove( cmsBatchOperation, CheckRemoveType.all );
@@ -330,7 +330,7 @@ public class CmsBatchOperationProcessService {
 	 * 将栏目下所有的文档删除,最后删除当前的批处理信息
 	 * @param id
 	 * @param bundle
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	private void deleteDocumentInApp(String id, String bundle) throws Exception {
 		Long docCount = 0L;
@@ -341,12 +341,12 @@ public class CmsBatchOperationProcessService {
 		List<String> categoryIds = null;
 		CmsBatchOperation cmsBatchOperation = null;
 		CategoryInfo categoryInfo = null;
-		
+
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
 			cmsBatchOperation = emc.find( id, CmsBatchOperation.class );
 			categoryIds = business.getCategoryInfoFactory().listByAppId( bundle );
-			
+
 			if( ListTools.isNotEmpty( categoryIds )) {
 				for( String categoryId : categoryIds ) {
 					categoryInfo = emc.find( categoryId, CategoryInfo.class );
@@ -356,19 +356,19 @@ public class CmsBatchOperationProcessService {
 						logger.info( "deleteDocumentInApp -> Cms processing batch operation: remove category: " + categoryInfo.getId() + ", alias: " + categoryInfo.getCategoryAlias() );
 						emc.commit();
 					}
-					
+
 					//将该目录下所有的文档删除
 					docCount = business.getDocumentFactory().countByCategoryId( categoryId );
 					if( docCount > 0 ) {
 						totalWhileCount = (int) (docCount/queryMaxCount) + 1;
 						if( totalWhileCount > 0 ) {
-							while( docCount > 0 && currenteWhileCount <= totalWhileCount ) {//查询1000个文档进行操作						
-								document_ids = business.getDocumentFactory().listByCategoryId( bundle, queryMaxCount );														
-								for( String docId : document_ids ){									
+							while( docCount > 0 && currenteWhileCount <= totalWhileCount ) {//查询1000个文档进行操作
+								document_ids = business.getDocumentFactory().listByCategoryId( bundle, queryMaxCount );
+								for( String docId : document_ids ){
 									try {
 										documentInfoService.delete( emc, docId );
-										new CmsBatchOperationPersistService().addOperation( 
-												CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT, 
+										new CmsBatchOperationPersistService().addOperation(
+												CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT,
 												CmsBatchOperationProcessService.OPT_TYPE_DELETE, id, id, "栏目删除引起文档删除:ID=" + id );
 										logger.info( "deleteDocumentInApp -> cms processing batch operation: remove document("+ currenteWhileCount +"/" + totalWhileCount + "): " + docId );
 									}catch( Exception e ) {
@@ -403,7 +403,7 @@ public class CmsBatchOperationProcessService {
 	 * @param id
 	 * @param bundle
 	 * @param oldInfo
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	private void changeAppNameInCategory( String id, String bundle, String oldName ) throws Exception {
 		Long docCount = 0L;
@@ -415,7 +415,7 @@ public class CmsBatchOperationProcessService {
 		AppInfo appInfo = null;
 		CategoryInfo categoryInfo = null;
 		CmsBatchOperation cmsBatchOperation = null;
-		
+
 		//先查询该栏目下的所有分类信息列表
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
@@ -432,7 +432,7 @@ public class CmsBatchOperationProcessService {
 						categoryInfo.setAppName( appInfo.getAppName() );
 						if( StringUtils.isEmpty( categoryInfo.getCategoryAlias() )) {
 							categoryInfo.setCategoryAlias( appInfo.getAppName() + "-" + categoryInfo.getCategoryName() );
-						}						
+						}
 						emc.beginTransaction( CategoryInfo.class );
 						emc.check( categoryInfo, CheckPersistType.all );
 						logger.info( "changeAppNameInCategory -> cms processing batch operation: change category: " + categoryInfo.getId() + ", app_name: " + oldName + " -> " + categoryInfo.getAppName() );
@@ -445,7 +445,7 @@ public class CmsBatchOperationProcessService {
 						if( totalWhileCount > 0 ) {
 							while( docCount > 0 && currenteWhileCount <= totalWhileCount ) {
 								//查询1000个文档进行操作
-								document_ids = business.getDocumentFactory().listByCategoryIdAndNotEqualAppName( categoryInfo.getId(), appInfo.getAppName(), queryMaxCount );							
+								document_ids = business.getDocumentFactory().listByCategoryIdAndNotEqualAppName( categoryInfo.getId(), appInfo.getAppName(), queryMaxCount );
 								changeDocumentInfoWithCategory( emc, document_ids, categoryInfo );
 								logger.info( "changeAppNameInCategory -> cms processing batch operation: update app and category info for document, batch("+ currenteWhileCount +"/" + totalWhileCount + ") " );
 								//当前循环次数+1
@@ -472,7 +472,7 @@ public class CmsBatchOperationProcessService {
 	 * 将分类下所有的文档删除,最后删除当前的批处理信息
 	 * @param id
 	 * @param bundle
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	private void deleteDocumentInCategory( String id, String bundle ) throws Exception {
 		Long docCount = 0L;
@@ -482,31 +482,31 @@ public class CmsBatchOperationProcessService {
 		List<String> document_ids = null;
 		CmsBatchOperation cmsBatchOperation = null;
 		CategoryInfo categoryInfo = null;
-		
+
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
 			cmsBatchOperation = emc.find( id, CmsBatchOperation.class );
 			categoryInfo = emc.find( bundle, CategoryInfo.class );
-			
+
 			if( categoryInfo != null ) {
 				emc.beginTransaction( CategoryInfo.class );
 				emc.remove( categoryInfo, CheckRemoveType.all );
 				logger.info( "deleteDocumentInCategory -> cms processing batch operation: remove category, id:"+ bundle );
 				emc.commit();
 			}
-			
+
 			//将该目录下所有的文档删除
 			docCount = business.getDocumentFactory().countByCategoryId( bundle );
 			if( docCount > 0 ) {
 				totalWhileCount = (int) (docCount/queryMaxCount) + 1;
 				if( totalWhileCount > 0 ) {
-					while( docCount > 0 && currenteWhileCount <= totalWhileCount ) {//查询1000个文档进行操作						
+					while( docCount > 0 && currenteWhileCount <= totalWhileCount ) {//查询1000个文档进行操作
 						document_ids = business.getDocumentFactory().listByCategoryId( bundle, queryMaxCount );
 						for( String docId : document_ids ){
 							try {
 								documentInfoService.delete( emc, docId );
-								new CmsBatchOperationPersistService().addOperation( 
-										CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT, 
+								new CmsBatchOperationPersistService().addOperation(
+										CmsBatchOperationProcessService.OPT_OBJ_DOCUMENT,
 										CmsBatchOperationProcessService.OPT_TYPE_DELETE, id, id, "分类删除引起文档删除:ID=" + id );
 								logger.info( "deleteDocumentInCategory -> cms processing batch operation: remove document("+ currenteWhileCount +"/" + totalWhileCount + "): " + docId );
 							}catch( Exception e ) {
@@ -519,7 +519,7 @@ public class CmsBatchOperationProcessService {
 						docCount = business.getDocumentFactory().countByCategoryId( categoryInfo.getId() );
 					}
 				}
-			}			
+			}
 			if( cmsBatchOperation != null ) {
 				emc.beginTransaction( CmsBatchOperation.class );
 				emc.remove( cmsBatchOperation, CheckRemoveType.all );
@@ -538,7 +538,7 @@ public class CmsBatchOperationProcessService {
 	 * @param id 批处理信息ID
 	 * @param bundle  绑定的分类信息ID
 	 * @param oldName 分类使用的旧名称
-	 * @throws Exception 
+	 * @throws Exception
 	 */
 	private void changeCategoryNameInDocument( String id, String bundle, String oldName ) throws Exception {
 		Long docCount = 0L;
@@ -560,8 +560,8 @@ public class CmsBatchOperationProcessService {
 					if( totalWhileCount > 0 ) {
 						while( docCount > 0 && currenteWhileCount <= totalWhileCount ) {
 							//查询1000个文档进行操作
-							document_ids = business.getDocumentFactory().listByCategoryIdAndCategoryName(bundle, categoryInfo.getCategoryName(), queryMaxCount );							
-							changeDocumentInfoWithCategory( emc, document_ids, categoryInfo );			
+							document_ids = business.getDocumentFactory().listByCategoryIdAndCategoryName(bundle, categoryInfo.getCategoryName(), queryMaxCount );
+							changeDocumentInfoWithCategory( emc, document_ids, categoryInfo );
 							logger.info( "changeCategoryNameInDocument -> cms processing batch operation: update app and category info for document, batch("+ currenteWhileCount +"/" + totalWhileCount + ") " );
 							//当前循环次数+1
 							currenteWhileCount ++;