/*Script updating project database for V Latest Updated : 19 FEB 2014*/ SET NOCOUNT ON IF NOT EXISTS (SELECT * FROM sys.tables where object_id = OBJECT_ID('tbl_pj_projectsetup')) BEGIN SELECT 'Please run this script in VenioPCD database' RETURN END DECLARE @ProjectId bigint = 0 DECLARE @Version NVARCHAR(50) SET @Version = (SELECT TOP 1 VenioDB FROM [dbo].[tbl_sys_VersionInfo] ORDER BY ReleaseDate DESC) Declare @DBName NVARCHAR(MAX) DECLARE @v_query NVARCHAR(MAX) DECLARE @v_table_name NVARCHAR(MAX) DECLARE @v_column_name NVARCHAR(MAX) DECLARE @v_index_name NVARCHAR(MAX) DECLARE @LinkServer NVARCHAR(400) DECLARE @v_synonymname nvarchar(4000) DECLARE @v_synonymtemplate nvarchar(4000) DECLARE @v_veniopcd nvarchar(2000) SET @v_veniopcd = '['+(SELECT DB_NAME())+']' DECLARE @IsPCDServer BIT DECLARE @v_qeury_with_linkServer_Execution NVARCHAR(MAX) DECLARE @displayMessage NVARCHAR(MAX) DECLARE @v_project_name NVARCHAR(MAX) DECLARE @SupportedVersion SQL_VARIANT DECLARE @ServerVersion SQL_VARIANT DECLARE @VersionTable TABLE (ServerVersion SQL_VARIANT ) SELECT @DBName='['+ISNULL(P.DatabaseInstanceName,'')+']',@IsPCDServer=ISNULL(D.IsPCDServer,0),@LinkServer=ISNULL(D.LinkServerName,'') ,@v_project_name=P.ProjectName FROM tbl_pj_projectsetup P WITH(NOLOCK), tbl_pj_databaseServerInfo D WITH(NOLOCK) WHERE BackupStatus=0 AND P.DSID=D.DSID AND P.ProjectId=@ProjectId SET @displayMessage = ' UPGRADING PROJECT:'+ @v_project_name+' ' RAISERROR( @displayMessage, 10,1) WITH NOWAIT SET @v_synonymtemplate = ' IF EXISTS (SELECT * FROM sys.synonyms WHERE name = N''{synname}'') DROP SYNONYM [dbo].{synname} CREATE SYNONYM [dbo].{synname} FOR {pcd_name}.[dbo].{synname} ' if(@IsPCDServer=0) SET @v_qeury_with_linkServer_Execution =N'EXEC (''{query}'') AT ['+@LinkServer+']' ELSE SET @v_qeury_with_linkServer_Execution =N'EXEC (''{query}'')' DECLARE @SynonmLinkServer NVARCHAR(400) SELECT TOP 1 @SynonmLinkServer='['+LinkServerName+'].' FROM tbl_pj_DatabaseServerInfo WHERE IsPCDServer=1 IF(@IsPCDServer=1) SET @SynonmLinkServer='' DECLARE @v_index_exists_check_and_drop_template_fixed nvarchar(max) DECLARE @v_index_not_exists_check_template_fixed nvarchar(max) SET @v_index_exists_check_and_drop_template_fixed = ' IF EXISTS (SELECT * FROM {db_name}.sys.indexes WHERE object_id = OBJECT_ID(N''{db_name}.[dbo].{tablename}'') AND NAME = ''{indexname}'') DROP INDEX {indexname} ON {db_name}.[dbo].{tablename} WITH ( ONLINE = OFF ) ' SET @v_index_not_exists_check_template_fixed = ' IF NOT EXISTS (SELECT * FROM {db_name}.sys.indexes WHERE object_id = OBJECT_ID(N''{db_name}.[dbo].{tablename}'') AND NAME = ''{indexname}'') ' ------------------------------------------------------------------------------------------------------------ --PROCEDURE ------------------------------------------------------------------------------------------------------------ SET @displayMessage = ' '+ @v_project_name +':UPGRADING PROCEDURE' RAISERROR( @displayMessage, 10,1) WITH NOWAIT ------------------------------------------------------------------------------- --CHANGE PROCEDURE sp_sm_PopulateSamplingData ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_sm_PopulateSamplingData'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sm_PopulateSamplingData]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE PROCEDURE [dbo].[sp_sm_PopulateSamplingData] @samplepopulation VARCHAR(100), @sampletagcondition VARCHAR(100), @TaggedBy int, @populationsize BIGINT, @confidencelevel int, @confidenceinterval int, @samplesize bigint, @samplepurpose NVARCHAR(max), @sampletrackingid Varchar(max), @sampltrackingfor VARCHAR(50), @samplaction VARCHAR(50), @sampleactiondetail VARCHAR(2000), @sampleid BIGINT OUTPUT, @samplename nvarchar(200), @SampleTrackingTagCount bigint, @SamplePreviousTagCount bigint, @ExcludeNoText bit, @ExcludeExistingProfileReviewset bit, @ExcludeManualCatDocs bit, @ExcludeTags bit, @ExcludeSelectedTag nvarchar(1000), @SamplePercent int, @SampleNumber int, @StratifiedBy varchar(1000), @TempTableName varchar(1000), @StratifiedSettings xml, @QueryLog NVARCHAR(MAX) AS --WRITE TO tbl_sm_samplinginfo BEGIN INSERT INTO tbl_sm_samplinginfo( SamplePopulation, SampleName, SampleTagCondition, TaggedBy, PopulationSize, ConfidenceLevel, ConfidenceInterval, SampleSize, SamplePurpose, SampleTrackingTagId, SampleTrackingFor, SampleAction, SampleActionDetail, SampleDate, SampleTrackingTagCount, SamplePreviousTagCount, ExcludeNoText,ExcludeExistingProfileReviewset,ExcludeManualCatDocs,ExcludeTags,ExcludeSelectedTag, SamplePercent,SampleNumber,StratifiedBy, StratifiedSettings, QueryLog) VALUES ( @samplepopulation, @samplename, @sampletagcondition, @TaggedBy, @populationsize, @confidencelevel, @confidenceinterval, @samplesize, @samplepurpose, @sampletrackingid, @sampltrackingfor, @samplaction, @sampleactiondetail, getdate(), @SampleTrackingTagCount, @SamplePreviousTagCount, @ExcludeNoText,@ExcludeExistingProfileReviewset,@ExcludeManualCatDocs,@ExcludeTags,@ExcludeSelectedTag, @SamplePercent,@SampleNumber,@StratifiedBy,@StratifiedSettings, @QueryLog) SET @sampleid =(SELECT SCOPE_IDENTITY()) DECLARE @Query NVARCHAR(MAX) SET @Query= ''INSERT INTO tbl_sm_SamplingFileIdAssociation SELECT @sampleid,T.fileid FROM ''+@TempTableName+'' T '' EXEC SP_EXECUTESQL @Query ,N''@sampleid BIGINT'', @sampleid=@sampleid END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE Sp_tg_CreateTagOrGroup ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].Sp_tg_CreateTagOrGroup'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[Sp_tg_CreateTagOrGroup]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE PROCEDURE [dbo].[Sp_tg_createtagorgroup] @Type VARCHAR(10), @Name NVARCHAR(2000), @IsExclusive BIT=0, @TagGroupId BIGINT, @IsSystemTag BIT=0, @Description NVARCHAR(max)='''', @ParentTagId BIGINT=-1, @EnforceChildTagRule BIT=0, @IsRead BIT=0, @IsWrite BIT=0, @UserId BIGINT, @needToCreateTagIfExists BIT = 0, @Id BIGINT output, @IsSuccess BIT output, @Message NVARCHAR(1000) output, @TagPermissionXml XML = '''', @TagSecurityLevel NVARCHAR(500) = ''ALL_ACCESS_GENERAL_TAG'' AS BEGIN SET xact_abort ON SELECT @Id = 0, @IsSuccess = 0, @Message = '''' DECLARE @trancount INT SET @trancount = @@TRANCOUNT BEGIN try IF @trancount = 0 BEGIN TRANSACTION ELSE SAVE TRANSACTION sp_tg_createtagorgroup IF( @Type = ''TAGGROUP'' ) BEGIN --Check if tag group with give name exists DECLARE @RunLoopForTagGroup BIT = 0 DECLARE @CounterForTagGroup INT = 1 SELECT TOP 1 @Id = taggroupid FROM tbl_tg_taggroup WITH(nolock) WHERE taggroupname = @Name IF ( @Id > 0 ) BEGIN IF( @needToCreateTagIfExists = 1 ) BEGIN WHILE( @RunLoopForTagGroup = 0 ) IF EXISTS(SELECT TOP 1 1 FROM tbl_tg_taggroup WITH(nolock) WHERE taggroupname = @Name) BEGIN SET @Name = @Name + Cast(@CounterForTagGroup AS NVARCHAR) SET @CounterForTagGroup = @CounterForTagGroup + 1 END ELSE SET @RunLoopForTagGroup = 1 END ELSE BEGIN SET @IsSuccess=0 SET @Message=''Tag group "'' + @Name + ''" already exists.'' IF @trancount = 0 ROLLBACK IF @trancount > 0 ROLLBACK TRANSACTION sp_tg_createtagorgroup RETURN END END --Create the tag group INSERT INTO tbl_tg_taggroup (taggroupname, isexclusive) VALUES (@Name, @IsExclusive) SET @Id=Scope_identity() SET @IsSuccess=1 SET @Message=''Tag group "'' + @Name + ''" is created successfully.'' END ELSE BEGIN --Check if tag with given name exists SELECT TOP 1 @Id = tagid FROM tbl_ex_tag WITH(nolock) WHERE tagname = @Name IF @Id > 0 BEGIN SET @IsSuccess=0 SET @Message=''Tag "'' + @Name + ''" already exists.'' IF @trancount = 0 ROLLBACK IF @trancount > 0 ROLLBACK TRANSACTION sp_tg_createtagorgroup RETURN END --Check if given tag group for new tag exists IF NOT EXISTS(SELECT TOP 1 1 FROM tbl_tg_taggroup WITH(nolock) WHERE taggroupid = @TagGroupId) BEGIN SET @IsSuccess=0 SET @Message=''Please provide valid tag group.'' IF @trancount = 0 ROLLBACK IF @trancount > 0 ROLLBACK TRANSACTION sp_tg_createtagorgroup RETURN END --Create new tag INSERT INTO tbl_ex_tag (tagname, issystemtag, [description], parenttagid, tagidlineage, EnforceChildTagRule, TagSecurityLevel) VALUES (@Name, @IsSystemTag, @Description, @ParentTagId, '''', @EnforceChildTagRule, @TagSecurityLevel) SET @Id = Scope_identity() --Update tagid lineage DECLARE @TagIdLineage NVARCHAR(max)=''\'' + Cast(@Id AS NVARCHAR) IF( @ParentTagId <>- 1 ) BEGIN SELECT @TagIdLineage = ( tagidlineage + @TagIdLineage ) FROM tbl_ex_tag WITH(nolock) WHERE tagid = @ParentTagId END UPDATE tbl_ex_tag WITH(rowlock) SET tagidlineage = @TagIdLineage WHERE tagid = @Id --Associate tag with its tag group INSERT INTO tbl_tg_taggroupassociation (tagid, taggroupid) VALUES (@Id, @TagGroupId) DECLARE @ReadPermissionGroupId NVARCHAR(MAX), @WritePermissionGroupId NVARCHAR(MAX) SELECT @ReadPermissionGroupId = C.value(''ReadPermission[1]'',''varchar(200)'') , @WritePermissionGroupId = C.value(''WritePermission[1]'',''varchar(200)'') FROM @TagPermissionXml.nodes(''TagPermission'') AS T(C) CREATE TABLE #TagGroupRightAssociation (GroupId BIGINT,IsWritePermission BIT) DECLARE @Query NVARCHAR(MAX) SET @Query='' INSERT INTO #TagGroupRightAssociation (GroupId, IsWritePermission ) SELECT GroupId, @IsWrite FROM TBL_PJ_GroupInfo WITH(NOLOCK) WHERE GROUPID IN (''+ISNULL(@WritePermissionGroupId,''-1'')+'',1,2''+'') INSERT INTO #TagGroupRightAssociation (GroupId, IsWritePermission ) SELECT GroupId, @IsWrite FROM tbl_pj_groupuserassociation G WITH(NOLOCK) WHERE UserId = @UserId AND NOT EXISTS(SELECT TOP 1 1 FROM #TagGroupRightAssociation WHERE GroupId=G.GroupId ) INSERT INTO #TagGroupRightAssociation (GroupId, IsWritePermission ) SELECT GroupId, 0 FROM TBL_PJ_GroupInfo G WITH(NOLOCK) WHERE G.GROUPID IN (''+ISNULL(@ReadPermissionGroupId,''-1'')+'') AND NOT EXISTS(SELECT TOP 1 1 FROM #TagGroupRightAssociation WHERE GroupId=G.GroupId ) '' exec sp_executesql @Query, N''@IsWrite BIT, @UserId BIGINT'', @IsWrite=@IsWrite, @UserId=@UserId IF( @ParentTagID = -1 AND @IsRead = 1 ) BEGIN INSERT INTO tbl_tg_tagprojectgroupassociation (tagid, groupid, readpermission, writepermission) SELECT @Id, GroupId, 1, IsWritePermission FROM #TagGroupRightAssociation END ELSE IF( @IsRead = 1 ) BEGIN INSERT INTO tbl_tg_tagprojectgroupassociation (tagid, groupid, readpermission, writepermission) SELECT @Id, G.GroupId, 1, CASE WHEN G.IsWritePermission =1 THEN T.WritePermission ELSE G.IsWritePermission END FROM #TagGroupRightAssociation G , tbl_tg_tagprojectgroupassociation T WITH(nolock) WHERE T.groupid = G.groupid AND T.tagid = @ParentTagId END SET @IsSuccess=1 SET @Message=''Tag "'' + @Name + ''" is created successfully.'' END IF @trancount = 0 COMMIT END try BEGIN catch DECLARE @ErrorSeverity INT, @ErrorMessage VARCHAR(4000), @xstate INT, @ErrorState INT SELECT @ErrorSeverity = Error_severity(), @ErrorMessage = Error_message(), @xstate = Xact_state(), @ErrorState = Error_state() IF @xstate = -1 ROLLBACK IF @xstate = 1 AND @trancount = 0 ROLLBACK IF @xstate = 1 AND @trancount > 0 ROLLBACK TRANSACTION sp_tg_createtagorgroup RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState) END catch END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE SP_JB_VAR_Training ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_VAR_Training'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_VAR_Training]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* ============================================= -- Author: Rabindra -- Create date: Nov 28 2013 -- Description: VAR Training Status -- ChangeLog -- 1. , <17th Dec 2013> :- Changed the POST_PROCESSING_STATUS -- 2. , <3rd Jan 2014> :- Added Eta and precentage complete -- 3. Bhuwan , 09 Jan 2014 : Remove 2 digits only in ETA Hour -- 4. Sujan, 9th April 2015: Added Paused status -- 5. Jasmeen Bajracharya,27-MAY-2019,Redmine 21492,Old Training and CG jobs to be displayed in the UI -- 6. Deepak Shrestha,29-MAY-2019,Redmine 21492,Query modify to show all jobs that are in projectjobinfo table -- 7. Jasmeen Bajracharya,18-JUN-2019,Redmine 21809,ISNULL(ErrorType,0) case handled -- 8. Jasmeen Bajracharya,11-SEP-2019,Redmine 19986, Status display corrected -- 9. Anuj Man Bajracharya,1-NOV-2019,Redmine 22294, Cancel VAR/CAL Job - Show status in job status -- =============================================*/ CREATE PROCEDURE [dbo].[SP_JB_VAR_Training] AS BEGIN IF OBJECT_ID(''tempdb..#CollectedJobStatus'') IS NOT NULL BEGIN DROP TABLE #CollectedJobStatus END SELECT PROFILEID,PROFILE,JOBID,JOB,JOBTYPE,TOTAL_COUNT,NOTSTARTED,IN_PROGRESS,COMPLETED,FAILED,POSTPONED,[STATUS],POSTPROCESSINGSTATUS,REQUESTEDBY,ETA,PERCENT_ INTO #CollectedJobStatus FROM tbl_VAR_TF_CG_shadow_summary WITH(NOLOCK) INSERT INTO #CollectedJobStatus SELECT pi.ProfileID AS PROFILEID ,pi.ProfileName AS PROFILE ,tr.JOBID ,tr.JOB ,tr.JOBTYPE ,tr.TOTAL_COUNT ,tr.NOTSTARTED ,tr.IN_PROGRESS ,tr.COMPLETED ,tr.FAILED ,tr.POSTPONED ,tr.STATUS ,POST_PROCESSING_STATUS as POSTPROCESSINGSTATUS ,Ui.Fullname as REQUESTEDBY ,[ETA] ,PERCENT_ FROM tbl_VAR_ProfileInfo pi WITH(NOLOCK), tbl_pj_userinfo UI WITH(NOLOCK), (SELECT A.JOBID ,''VAR Training Document Preparation'' AS JOB ,1 AS JOBTYPE ,A.ProfileID ,CONVERT(VARCHAR, ISNULL(TF.TOTAL_COUNT,0)) AS TOTAL_COUNT ,CONVERT(VARCHAR, ISNULL(TF.NOTSTARTED ,0)+ ISNULL(TF.POSTPONED,0)) AS NOTSTARTED ,CONVERT(VARCHAR, ISNULL(TF.IN_PROGRESS,0)) AS IN_PROGRESS ,CONVERT(VARCHAR, ISNULL(TF.COMPLETED,0)) AS COMPLETED ,CONVERT(VARCHAR, ISNULL(TF.FAILED,0)) AS FAILED ,CONVERT(VARCHAR, ISNULL(TF.POSTPONED,0)) AS POSTPONED ,CASE WHEN A.TFJobStatus IN (2,-2) AND A.IsCancelled=1 THEN ''Canceled'' WHEN A.TFJobStatus NOT IN (2,-2) AND A.IsCancelled=1 THEN ''Canceling'' WHEN A.TFJobStatus IN (2,- 2) THEN ''Completed'' WHEN A.TFJobStatus NOT IN (2,- 2) AND A.IsJobPaused = 1 THEN ''Paused'' WHEN ISNULL(NOTSTARTED,0) = ISNULL(TOTAL_COUNT,0) THEN ''Not Started'' WHEN ISNULL(IN_PROGRESS,0) > 0 OR TFJobStatus = 1 THEN ''In Progress'' WHEN ISNULL(POSTPONED,0) > 0 THEN ''Postponed'' ELSE ''In Progress'' END AS STATUS, CASE WHEN BulkProcessingStatus=0 THEN ''Not Started'' WHEN BulkprocessingStatus=1 THEN ''Analyzing Training Documents'' -- ChangeLog 1 ELSE ''Completed'' END AS POST_PROCESSING_STATUS, case when [PROGRESS] is null or [progress]=0.0 or [progress]=100.0 THEN ''00:00:00'' ELSE cast( CAST(((Datediff(ss, A.STARTEDON, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)/3600 AS NVARCHAR)+'':''+ -- ChangeLog #3 right(''00'' + cast( CAST(((Datediff(ss, A.STARTEDON, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)%3600/60 AS NVARCHAR), 2)+'':''+ right(''00'' + cast( CAST(((Datediff(ss, A.STARTEDON, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)%60 AS NVARCHAR), 2) END [ETA], -- ChangeLog 2 isnull(PROGRESS,0) AS PERCENT_ -- ChangeLog 2 FROM (SELECT S.JobID ,S.ProfileID ,COUNT(TrainingItemID) AS TOTAL_COUNT ,ISNULL(SUM(CASE WHEN ProcessingFlag = 0 THEN 1 ELSE 0 END), 0) AS NOTSTARTED ,ISNULL(SUM(CASE WHEN ProcessingFlag = 1 THEN 1 ELSE 0 END), 0) AS IN_PROGRESS ,ISNULL(SUM(CASE WHEN ProcessingFlag = - 1 THEN 1 ELSE 0 END), 0) AS POSTPONED ,ISNULL(SUM(CASE WHEN ProcessingFlag = 2 AND ISNULL(ErrorType,0)=0 THEN 1 ELSE 0 END), 0) AS COMPLETED ,ISNULL(SUM(CASE WHEN ProcessingFlag = 2 AND ErrorType <> 0 THEN 1 ELSE 0 END), 0) AS FAILED ,CAST((ISNULL(SUM(CASE WHEN ProcessingFlag IN (-2,2) THEN 1 ELSE 0 END), 0)*100.00)/NULLIF(COUNT(*),0) AS DECIMAL(5,2)) [PROGRESS] -- ChangeLog 2 FROM tbl_VAR_tf_shadow S WITH (NOLOCK) LEFT JOIN #CollectedJobStatus T ON S.JobID=T.JobID WHERE T.JOBID IS NULL GROUP BY S.JobID ,S.ProfileID ) TF right JOIN (SELECT PJ.JOBID, pj.STATUS AS TFJobStatus,pjj.ProfileID,PJ.BulkProcessingStatus,PJ.Startedon, ISNULL(OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'', ''bit''), 0) AS IsJobPaused ,ISNULL(OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'', ''bit''), 0) AS IsCancelled FROM tbl_ds_ProjectJobInfo pj WITH (NOLOCK), ( SELECT pj.JobID AS JobID ,pja.ProfileID FROM tbl_ds_ProjectJobInfo pj WITH (NOLOCK) INNER JOIN tbl_var_ProfileJobAssociation pja WITH (NOLOCK) ON pj.JobId = pja.JobId AND pj.[Name] = ''TF'' LEFT JOIN #CollectedJobStatus T ON PJ.JobID=T.JobID WHERE T.JOBID IS NULL group by PJA.Profileid, PJ.JOBID ) pjj WHERE pj.JobID = pjj.JobID ) A ON A.ProfileID = TF.ProfileID AND A.JobId=TF.JobID )tr WHERE pi.ProfileID = tr.ProfileID AND pi.CREATEDBY =UI.USERID INSERT INTO #CollectedJobStatus SELECT pi.ProfileID AS PROFILEID ,pi.ProfileName AS PROFILE ,tr.JOBID ,tr.JOB ,tr.JOBTYPE ,tr.TOTAL_COUNT ,tr.NOTSTARTED ,tr.IN_PROGRESS ,tr.COMPLETED ,tr.FAILED ,tr.POSTPONED ,tr.STATUS ,POST_PROCESSING_STATUS as POSTPROCESSINGSTATUS ,Ui.Fullname as REQUESTEDBY ,[ETA] ,PERCENT_ FROM tbl_VAR_ProfileInfo pi WITH(NOLOCK), tbl_pj_userinfo UI WITH(NOLOCK), (SELECT A.JobID ,''VAR Learning and Model Generation'' AS JOB ,2 AS JOBTYPE ,A.ProfileID ,CONVERT(VARCHAR, ISNULL(CG.TOTAL_COUNT,0)) AS TOTAL_COUNT ,CONVERT(VARCHAR, ISNULL(CG.NOTSTARTED,0) + ISNULL(CG.POSTPONED,0)) AS NOTSTARTED ,CONVERT(VARCHAR, ISNULL(CG.IN_PROGRESS,0)) AS IN_PROGRESS ,CONVERT(VARCHAR, ISNULL(CG.COMPLETED,0)) AS COMPLETED ,CONVERT(VARCHAR, ISNULL(CG.FAILED,0)) AS FAILED ,CONVERT(VARCHAR, ISNULL(CG.POSTPONED,0)) AS POSTPONED ,CASE WHEN A.CGJobStatus IN (2,-2) AND A.IsCancelled=1 THEN ''Canceled'' WHEN A.CGJobStatus NOT IN (2,-2) AND A.IsCancelled=1 THEN ''Canceling'' WHEN A.CGJobStatus IN (2,- 2) THEN ''Completed'' WHEN A.CGJobStatus NOT IN (2,- 2) AND A.IsJobPaused = 1 THEN ''Paused'' WHEN ISNULL(NOTSTARTED,0) = ISNULL(TOTAL_COUNT,0) THEN ''Not Started'' WHEN ISNULL(IN_PROGRESS,0) > 0 OR A.CGJobStatus = 1 THEN ''In Progress'' WHEN ISNULL(POSTPONED,0) > 0 THEN ''Postponed'' ELSE ''In Progress'' END AS STATUS, CASE WHEN BulkProcessingStatus=0 THEN ''Not Started'' WHEN BulkProcessingStatus=1 THEN ''Generating Model'' --ChangeLog 1 ELSE ''Completed'' END AS POST_PROCESSING_STATUS, case when [PROGRESS] is null or [progress]=0.0 or [progress]=100.0 THEN ''00:00:00'' ELSE cast( CAST(((Datediff(ss, A.STARTEDON, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)/3600 AS NVARCHAR)+'':''+ -- ChangeLog #3 right(''00'' + cast( CAST(((Datediff(ss, A.STARTEDON, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)%3600/60 AS NVARCHAR), 2)+'':''+ right(''00'' + cast( CAST(((Datediff(ss, A.STARTEDON, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)%60 AS NVARCHAR), 2) END [ETA], -- ChangeLog 2 isnull(PROGRESS,0) AS PERCENT_ -- ChangeLog 2 FROM (SELECT S.JobID ,S.ProfileID ,COUNT(CGSetID) AS TOTAL_COUNT ,ISNULL(SUM(CASE WHEN ProcessingFlag = 0 THEN 1 ELSE 0 END), 0) AS NOTSTARTED ,ISNULL(SUM(CASE WHEN ProcessingFlag = 1 THEN 1 ELSE 0 END), 0) AS IN_PROGRESS ,ISNULL(SUM(CASE WHEN ProcessingFlag = - 1 THEN 1 ELSE 0 END), 0) AS POSTPONED ,ISNULL(SUM(CASE WHEN ProcessingFlag = 2 AND ISNULL(ErrorType,0) = 0THEN 1 ELSE 0 END), 0) AS COMPLETED ,ISNULL(SUM(CASE WHEN ProcessingFlag = 2 AND ErrorType <> 0 THEN 1 ELSE 0 END), 0) AS FAILED ,CAST((ISNULL(SUM(CASE WHEN ProcessingFlag IN (-2,2) THEN 1 ELSE 0 END), 0)*100.00)/NULLIF(COUNT(*),0) AS DECIMAL(5,2)) [PROGRESS] -- ChangeLog 2 FROM tbl_VAR_CG_shadow S WITH (NOLOCK) LEFT JOIN #CollectedJobStatus T ON S.JobID=T.JobID WHERE T.JOBID IS NULL GROUP BY S.JobID,S.ProfileID ) CG RIGHT JOIN (SELECT PJ.JOBID,pj.STATUS AS CGJobStatus,pjj.ProfileID,PJ.BulkProcessingStatus,PJ.StartedOn, ISNULL(OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'', ''bit''), 0) AS IsJobPaused ,ISNULL(OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'', ''bit''), 0) AS IsCancelled FROM tbl_ds_ProjectJobInfo pj WITH (NOLOCK), (SELECT pj.JobID AS JobID ,pja.ProfileID FROM tbl_ds_ProjectJobInfo pj WITH (NOLOCK) INNER JOIN tbl_var_ProfileJobAssociation pja WITH (NOLOCK) ON pj.JobId = pja.JobId AND pj.[Name] = ''CG'' LEFT JOIN #CollectedJobStatus T ON PJ.JobID=T.JobID WHERE T.JOBID IS NULL GROUP BY PJ.JobId,PJA.Profileid ) pjj WHERE pj.JobID = pjj.JobID ) A ON A.ProfileID = CG.ProfileID AND A.JobId=CG.JobID ) tr WHERE pi.ProfileID = tr.ProfileID And pi.CREATEDBY =UI.USERID SELECT PROFILEID , PROFILE ,JOBID ,JOB ,JOBTYPE ,TOTAL_COUNT ,NOTSTARTED ,IN_PROGRESS ,COMPLETED ,FAILED ,POSTPONED ,STATUS ,POSTPROCESSINGSTATUS ,REQUESTEDBY ,[ETA] ,CASE WHEN STATUS IN (''Completed'' ,''Completed With Error'') THEN ''100.00'' ELSE PERCENT_ END AS PERCENT_ FROM #CollectedJobStatus ORDER BY ProfileID,JobID END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE SP_Rev_TagOrder ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_Rev_TagOrder'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_Rev_TagOrder]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: -- Create date: -- Description: -- jasmeen,22-MAY-2017,Redmine 16322, WritePermission maintained in tbl_rev_tagSortORder -- ============================================= CREATE PROCEDURE [dbo].[SP_Rev_TagOrder] @TagOrder xml, @ReviewSetId bigint, @IsEdit bit AS BEGIN DECLARE @TempTagOrder TABLE (ReviewSetId bigint,TagId bigint,SortOrder bigint, TagOrGroup varchar(10), WritePermission bit) Insert into @TempTagOrder (ReviewSetId,TagId,SortOrder,TagOrGroup,WritePermission) (select @ReviewSetId, T.C.value(''(ID)[1]'', ''BIGINT'') ,T.C.value(''(Order)[1]'', ''BIGINT'') ,T.C.value(''(TagOrGroup)[1]'', ''VARCHAR(20)'') ,T.C.value(''(WritePermission)[1]'', ''BIT'') from @TagOrder.nodes(''/TagSortOrder'')as t(c)) if(@IsEdit=0) BEGIN INSERT INTO tbl_rev_TagSortOrder(ReviewSetId,TagId,SortOrder,WritePermission) SELECT ReviewSetId,TagId,SortOrder,WritePermission FROM @TempTagOrder where TagOrGroup=''Tag''; INSERT INTO tbl_rev_TagGroupSortOrder(ReviewSetId,TagGroupId,SortOrder) SELECT ReviewSetId,TagId,SortOrder FROM @TempTagOrder where TagOrGroup=''Group''; END ELSE BEGIN DELETE FROM tbl_rev_TagSortOrder WHERE REVIEWSETID=@ReviewSetId; DELETE FROM tbl_rev_TagGroupSortOrder WHERE REVIEWSETID=@ReviewSetId; INSERT INTO tbl_rev_TagSortOrder(ReviewSetId,TagId,SortOrder,WritePermission) SELECT ReviewSetId,TagId,SortOrder,WritePermission FROM @TempTagOrder where TagOrGroup=''Tag''; INSERT INTO tbl_rev_TagGroupSortOrder(ReviewSetId,TagGroupId,SortOrder) SELECT ReviewSetId,TagId,SortOrder FROM @TempTagOrder where TagOrGroup=''Group'' END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_rev_EditReviewSet ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_rev_EditReviewSet'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rev_EditReviewSet]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Deepak Shrestha. -- Create date: May. 17, 2012 -- Description: Reviewset Table -- Modified By: Deepak Shrestha -- Modified Date:10 April 2014 -- Modification LOG 1 IF reviewer group is change then remove the permission of profile tag for old reviewer and add permission for new reviewer group. -- Modified By: Bipin Shakya -- Modified Date:24 April 2014 -- Modification LOG 2 Edit Coding field -- 3. Bhuwan, 24 Dec, 2014 , alter table variable to temp table -- 4. SumanK, 10th Nov 2015, Inserted UserGroup and User in new table tbl_rev_UserReviewAssociation and removed AssignUserId column from tbl_rev_ReviewSetInfo -- 5. SumanK, 11th Dec 2015, Edited selected redaction object -- 5. ROjina, 21 jan 2016, Added new field enforce review tag -- 6. Sudhir, 19 May 2017, Added the tag group rule -- 7. Sudhir, 17 Aug 2020, Added layout field in review set -- ============================================= CREATE PROCEDURE [dbo].[sp_rev_EditReviewSet] @ReviewSetId BIGINT ,@Name NVARCHAR(1000) ,@Purpose NVARCHAR(max) ,@BatchPrefix NVARCHAR(200) ,@BatchPadding BIGINT ,@BatchSize BIGINT ,@BatchStartNumber BIGINT ,@EnableAutoCollect BIT ,@AutoCollectThresholdValue INT ,@AutoCollectFreq float ,@AutoCollectExpiresOn DATETIME ,@DSUserName NVARCHAR(200) ,@SelectedUserGroupIdXML XML --ChangeLog #4 ,@ShowEmailHeaderInFulltext bit ,@VisibleReviewPanel VarChar (max)=null ,@TagOrderXml xml ,@CodingOrderXml xml ,@RedactionObjectIdList NVARCHAR(MAX)=NULL ,@ShowHideReviewedFiles bit ,@EnforceTagForReview bit ,@Result bit output ,@Lastupdatedby int ,@ShowPurposeInUI bit ,@AutoQueueForHtmlConversion bit ,@AutoQueueForTiff bit ,@TagGroupIds xml ,@TagRules xml= null ,@TagPropagateEmailThread bit=0 ,@TagPropagatePcSet bit=0 ,@TagPropagationOption int=2--do not propagate ,@DuplicateReviewPropagationOption int=2--do not propagate ,@ReviewPropagatePcSet bit=0 ,@ReviewPropagateEmailThread bit=0 ,@LayoutId int=null AS BEGIN SET @Result=0 BEGIN TRY BEGIN TRANSACTION DECLARE @OrgPrefix NVARCHAR(200) DECLARE @OrgBatchPadding BIGINT DECLARE @OrgBatchSize BIGINT DECLARE @OrgBatchStartNumber BIGINT DECLARE @OrgAutoCollectFrequency BIGINT DECLARE @OrgAutoCollectExpiresOn datetime DECLARE @ReviewDatabaseInstanceName NVARCHAR(200) SET @ReviewDatabaseInstanceName=(SELECT DB_NAME()) DECLARE @JobName NVARCHAR(400) SET @JobName='''' DECLARE @OrgReviewSetJobName Nvarchar(400) SELECT @OrgPrefix=BatchPrefix, @OrgBatchPadding=BatchPaddingLength, @OrgBatchSize=[BatchSize] ,@OrgBatchStartNumber=BatchStartNumber,@OrgReviewSetJobName=ReviewSetJobName,@OrgAutoCollectFrequency=AutoCollectFrequency,@OrgAutoCollectExpiresOn=AutoCollectExpiresOn FROM TBL_REV_REVIEWSETINFO with(nolock) WHERE REVIEWSETID=@ReviewSetId IF(@EnableAutoCollect=1) BEGIN set @JobName=''Venio_Job_''+@ReviewDatabaseInstanceName+''_''+@Name set @AutoCollectFreq=cast((@AutoCollectFreq*60) as bigint) END ELSE BEGIN set @AutoCollectFreq= null set @AutoCollectExpiresOn=null SET @AutoCollectThresholdValue=0 END --Select old group or user assocciation with reviewset, ChangeLog #4 DECLARE @OldAssignedUserGroupId TABLE(Id BIGINT, IsGroupId BIT) INSERT INTO @OldAssignedUserGroupId SELECT Id AS Id ,IsGroupId AS IsGroupId FROM tbl_rev_UserReviewAssociation where ReviewSetId=@ReviewSetId DECLARE @AutoCollectExpiresOnString nvarchar(50) SET @AutoCollectExpiresOnString=CASE WHEN @AutoCollectExpiresOn is NULL THEN ''NULL'' ELSE ''''''''+convert(varchar, @AutoCollectExpiresOn,101)+'''''''' END DECLARE @v_query nvarchar (max) SET @v_query=''UPDATE TBL_REV_REVIEWSETINFO WITH(ROWLOCK) SET Name=''''''+@Name+'''''',Purpose=''''''+replace(@Purpose,'''''''','''''''''''')+'''''',ShowPurposeInUI=''+CAST(@ShowPurposeInUI AS NVARCHAR(5))+'' ,BatchPrefix=''''''+@BatchPrefix+'''''', BatchPaddingLength=''+cast(@BatchPadding as nvarchar(50))+'', BatchSize =''+ Convert(varchar,@BatchSize)+'',BatchStartNumber =''+cast(@BatchStartNumber as nvarchar(50))+'' ,EnableAutoCollect=''+CAST(@EnableAutoCollect AS NVARCHAR(5))+'' ,ReviewSetJobName=''''''+@JobName+'''''',AutoCollectThresholdValue=''+Convert(varchar,@AutoCollectThresholdValue)+'', AutoCollectFrequency =''+ case when @AutoCollectFreq is not null then Convert(varchar,@AutoCollectFreq) else ''NULL'' END +'', AutoCollectExpiresOn = ''+@AutoCollectExpiresOnString+'' ,ShowEmailHeaderInFulltext ='' + CAST(@ShowEmailHeaderInFulltext as nvarchar(10))+'' ,ReviewerVisibleOption=''''''+@VisibleReviewPanel+'''''',ShowHideReviewedFiles=''''''+ CAST(@ShowHideReviewedFiles AS nvarchar(5))+'''''' ,EnforceTagForReview= ''+ CAST(@EnforceTagForReview as nvarchar(5))+'' ,AutoQueueForHtmlConversion= ''+ CAST(@AutoQueueForHtmlConversion as nvarchar(5))+'' ,AutoQueueForTiff= ''+ CAST(@AutoQueueForTiff as nvarchar(5))+'' ,LastUpdatedBy=''+cast(@Lastupdatedby as nvarchar(100))+'' ,LastUpdatedOn=Getdate() ,TagGroupIdsForTagGroupRule = ''''''+ cast(@TagGroupIds as nvarchar(max)) +'''''' ,TagRules = ''''''+ cast(@TagRules as nvarchar(max)) +'''''' ,TagPropagateEmailThread=''+ CAST(@TagPropagateEmailThread AS NVARCHAR(5))+'' ,TagPropagatePcSet= ''+ CAST(@TagPropagatePcSet AS NVARCHAR(5))+'' ,TagPropagationOption=''+ Convert(varchar,@TagPropagationOption)+'' ,DuplicateReviewPropagationOption=''+ Convert(varchar,@DuplicateReviewPropagationOption)+'' ,ReviewPropagatePcSet=''+ CAST(@ReviewPropagatePcSet AS NVARCHAR(5))+'' ,ReviewPropagateEmailThread=''+ CAST(@ReviewPropagateEmailThread AS NVARCHAR(5))+'' ,LayoutId=''+ CAST(@LayoutId AS NVARCHAR(10))+'' WHERE REVIEWSETID =''+Convert(varchar,@ReviewSetId) --Update UserGroup or User association with the review. ChangeLog #4 --Create a table of selected usergroup or user and insert selected usergroup or user in table using xml DECLARE @TempUserGroupTable TABLE(Id BIGINT, IsGroupId BIT) INSERT INTO @TempUserGroupTable SELECT X1.value(''.'',''int'') as Id, CASE WHEN X1.value(''@Type'',''VARCHAR(10)'')=''USER'' THEN 0 ELSE 1 END as IsGroupId FROM @SelectedUserGroupIdXML.nodes(''/SelectedUserGroup/UserGroupId'') as XMLVar(X1) --Insert selected usergroup or user in tbl_rev_UserReviewAssociation to associate ReviewSet with UserGroup or User, ChangeLog #4 DELETE FROM tbl_rev_UserReviewAssociation WHERE ReviewSetId=@ReviewSetId INSERT INTO tbl_rev_UserReviewAssociation( ReviewSetId, Id, IsGroupId) SELECT @ReviewSetId as ReviewSetId ,Id as Id ,IsGroupId as IsGroupId FROM @TempUserGroupTable --Associate Redaction Object and Review Set IF(@RedactionObjectIdList IS NOT NULL AND @RedactionObjectIdList<>'''') BEGIN DECLARE @UpdateRedactionObject NVARCHAR(MAX) SET @UpdateRedactionObject='' DELETE FROM tbl_rev_RedactionReviewsetAssociation WHERE ReviewSetId=''+ CAST(@ReviewSetId AS NVARCHAR(20)) +'' INSERT INTO tbl_rev_RedactionReviewsetAssociation (ReviewSetId, ObjectId) SELECT ''+CAST(@ReviewSetId AS NVARCHAR(20))+'', ObjectId FROM tbl_ann_RedactionObjects WITH(NOLOCK) WHERE ObjectId IN (''+@RedactionObjectIdList+'')'' EXEC SP_EXECUTESQL @UpdateRedactionObject END IF(@EnableAutoCollect=1) BEGIN IF @OrgReviewSetJobName IS NULL or @OrgReviewSetJobName='''' BEGIN EXEC [SP_REV_CREATEJOB] @JobName ,@ReviewSetId ,@ReviewDatabaseInstanceName ,@AutoCollectFreq ,@AutoCollectExpiresOn ,@DSUserName END ELSE BEGIN IF(@OrgAutoCollectFrequency!=@AutoCollectFreq or @OrgAutoCollectExpiresOn!=@AutoCollectExpiresOn) BEGIN IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @OrgReviewSetJobName) EXEC msdb.dbo.sp_delete_job @job_name=@OrgReviewSetJobName EXEC [SP_REV_CREATEJOB] @JobName ,@ReviewSetId ,@ReviewDatabaseInstanceName ,@AutoCollectFreq ,@AutoCollectExpiresOn ,@DSUserName END END END ELSE BEGIN IF @OrgReviewSetJobName IS NOT NULL AND @OrgReviewSetJobName!='''' IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs_view WHERE name = @OrgReviewSetJobName) EXEC msdb.dbo.sp_delete_job @job_name=@OrgReviewSetJobName END IF( @OrgPrefix!=@BatchPrefix OR @OrgBatchPadding!=@BatchPadding OR @BatchSize!=@OrgBatchSize OR @OrgBatchStartNumber!=@BatchStartNumber) BEGIN declare @BatchCount bigint declare @PrevBatchSize Bigint DECLARE @TotalFileForReview BIGINT BEGIN select @BatchCount=count(batchid) from tbl_rev_ReviewBatch where reviewsetid= @ReviewSetId and batchstatus>0 set @BatchStartNumber=@BatchStartNumber+@BatchCount Create table #BatchTable (fileid bigint) Insert into #BatchTable select bfa.fileid from tbl_rev_BatchFileAssociation bfa, tbl_rev_ReviewBatch rb where rb.reviewsetid=@ReviewSetId and rb.batchid=bfa.batchid and rb.batchstatus=0 SELECT @TotalFileForReview = @@ROWCOUNT DECLARE @OrderByField varchar(100) SELECT @OrderByField= OrderByField FROM TBL_REV_REVIEWSETINFO WHERE REVIEWSETID=@ReviewSetId -- ChangeLog #3 Bhuwan IF OBJECT_ID(''tempdb..#ReviewSetTable'') IS NOT NULL DROP TABLE #ReviewSetTable CREATE TABLE #ReviewSetTable (FileId BIGINT, GroupId BIGINT, ReviewSetFileOrderId bigint primary key) IF (@OrderByField = ''GROUP_DATE'') BEGIN INSERT INTO #ReviewSetTable (FileId,GroupId, ReviewSetFileOrderId) SELECT t1.FileId,t2.GroupId,ROW_NUMBER() OVER (ORDER BY t2.GroupDate ASC, t2.GroupId ASC, t2.FileId ASC) FROM #BatchTable t1 INNER JOIN tbl_rev_FileInfo t2 WITH(NOLOCK) ON t1.FileId = t2.FileId END ELSE BEGIN INSERT INTO #ReviewSetTable(FileId,GroupId, ReviewSetFileOrderId) SELECT t1.FileId,t2.GroupId, ROW_NUMBER() OVER (ORDER BY t2.GroupId ASC, t2.FileId ASC) FROM #BatchTable t1 INNER JOIN tbl_rev_FileInfo t2 WITH(NOLOCK) ON t1.FileId = t2.FileId END DELETE FROM TBL_REV_BATCHFILEASSOCIATION FROM TBL_REV_BATCHFILEASSOCIATION BFA, TBL_REV_REVIEWBATCH RB WHERE RB.BATCHID=BFA.BATCHID AND RB.REVIEWSETID=@ReviewSetId AND RB.BATCHSTATUS=0 --WHERE BATCHID=(SELECT BATCHID FROM TBL_REV_REVIEWBATCH WITH(NOLOCK) WHERE REVIEWSETID=@ReviewSetId) DELETE FROM TBL_REV_REVIEWBATCH WHERE REVIEWSETID=@ReviewSetId AND BATCHSTATUS=0 DECLARE @InsertedRows INT DECLARE @LastId BIGINT SELECT @InsertedRows = 0 SELECT @LastId = 0 WHILE @InsertedRows < @TotalFileForReview BEGIN DECLARE @CurrentBatchId bigint DECLARE @BatchName nvarchar(200) SELECT @BatchName=DBO.FN_EP_GETEXPORTDOCID (@BatchPrefix+''-'',@BatchPadding,''0'',@BatchStartNumber) INSERT INTO tbl_rev_ReviewBatch(ReviewSetId,BatchStatus,BatchName,BatchRequestedBy,CheckedOutOn,CommitedOn, OriginalPartialCommitBatchId) VALUES(@ReviewSetId,0,@BatchName,null,null,null, null) SELECT @CurrentBatchId = SCOPE_IDENTITY() INSERT INTO tbl_rev_BatchFileAssociation(BatchId,FileId) SELECT TOP(@BatchSize) with ties @CurrentBatchId, FileId AS FileId FROM #ReviewSetTable WHERE ReviewSetFileOrderId > @LastId order by GroupId SELECT @InsertedRows = @InsertedRows + @@ROWCOUNT SELECT @LastId = MAX(ReviewSetFileOrderId) FROM #ReviewSetTable t1, tbl_rev_BatchFileAssociation t2 WITH(NOLOCK) WHERE t1.FileId=t2.FileId AND t2.BatchId = @CurrentBatchId SET @BatchStartNumber=@BatchStartNumber+1 END DROP TABLE #BatchTable DROP TABLE #ReviewSetTable END END EXEC sp_executesql @v_query DECLARE @ProfileId BIGINT SELECT @ProfileId=ProfileId FROM tbl_VAR_ProfileReviewSetAssociation WHERE ReviewSetId=@ReviewSetId IF(@ProfileId IS NOT NULL) BEGIN DECLARE @ProfileCreaterGroupId BIGINT SELECT @ProfileCreaterGroupId=G.GroupId FROM tbl_VAR_ProfileInfo P WITH(NOLOCK), tbl_pj_GroupUserAssociation G WITH(NOLOCK) WHERE P.CreatedBy=G.UserId AND ProfileID=@ProfileId DECLARE @TagIdList TABLE (TAGID BIGINT) INSERT INTO @TagIdList SELECT TrainingTagID AS TAGID FROM tbl_VAR_CategoryInfo WITH(NOLOCK) WHERE ProfileID=@ProfileId UNION SELECT PredictionTagID AS TAGID FROM tbl_VAR_CategoryInfo WITH(NOLOCK) WHERE ProfileID=@ProfileId UNION SELECT PredictedBelowThresholdTagId AS TAGID FROM tbl_VAR_ProfileInfo WITH(NOLOCK) WHERE PROFILEID=@ProfileId DELETE FROM T FROM TBL_TG_TAGPROJECTGROUPASSOCIATION T WITH(NOLOCK), @TagIdList TMP, ( SELECT ID FROM @OldAssignedUserGroupId where IsGroupId=1 UNION SELECT DISTINCT GUA.GroupId AS ID FROM @OldAssignedUserGroupId T, tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) where IsGroupId=0 AND T.Id=GUA.UserId ) OA WHERE TMP.TAGID=T.TagID AND T.GroupId=OA.Id AND T.GroupId<>1 AND T.GroupId<>@ProfileCreaterGroupId INSERT INTO TBL_TG_TAGPROJECTGROUPASSOCIATION (TagId, GroupId,ReadPermission,WritePermission) SELECT A.TagId,B.Id,1,0 FROM @TagIdList A, ( SELECT ID FROM @TempUserGroupTable where IsGroupId=1 UNION SELECT DISTINCT GUA.GroupId AS ID FROM @TempUserGroupTable T, tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) where IsGroupId=0 AND T.Id=GUA.UserId )B WHERE NOT EXISTS(SELECT TOP 1 1 FROM TBL_TG_TAGPROJECTGROUPASSOCIATION WHERE TagID=A.TAGID AND GroupId=B.Id) END -- Edit tag ordering EXEC [dbo].[SP_Rev_TagOrder] @TagOrderXml, @ReviewSetId,1 --Edit coding ordering EXEC [dbo].[SP_Rev_AvailableCodingField] @CodingOrderXml,@ReviewSetId,1 -- Log 2 SET @Result=1 COMMIT TRANSACTION END TRY BEGIN CATCH IF ( @@TRANCOUNT > 0) ROLLBACK DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(); RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); RETURN END CATCH END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_jb_GetProjectLanguageIdentificationStatus ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_jb_GetProjectLanguageIdentificationStatus'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_jb_GetProjectLanguageIdentificationStatus]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* -- ============================================= -- Author: Sujan -- Create date: Jan 27, 2014 -- Description: Get Language Identification Status for all the media. -- ChangeLog 1. Deepak 24th July 2014 : Change qry to handle the bug of change in ProjectSetting with Language Identification off and edit case #2138 2. Deepak 19 oct 2016: Not displaying correct applicable file count #13089 3. Deepak 21 JUNE 2017: Filter if file exists or not for languageIdentification Applicable File Count vts #11291 -- ============================================= */ CREATE PROCEDURE [dbo].[sp_jb_GetProjectLanguageIdentificationStatus] @MediaList NVARCHAR(MAX) AS BEGIN DECLARE @query NVARCHAR(MAX) SET @query = ''declare @IMT TABLE ( mediaid bigint, totalCount bigint, LanguageIdentificationApplicableFileCount BIGINT ) insert into @IMT(mediaid,totalCount, LanguageIdentificationApplicableFileCount) select FI.mediaid, Count(FI.fileid), SUM(CASE WHEN FI.IsNoText=0 AND FT.FileId IS NOT NULL THEN 1 ELSE 0 END) FROM tbl_ex_fileinfo FI WITH(nolock) LEFT JOIN tbl_eX_fulltextFileLocation FT WITH(NOLOCK) ON FI.FileId=FT.FileId WHERE FI.isarchive = 0 AND FI.issystem = 0 AND FI.isdenist = 0 AND FI.MediaId IN (''+@MediaList+'') --log 1 filter media group by FI.mediaid SELECT CAST(0 AS BIT) AS [Select] ,LI.CustodianId ,LI.CustodianName ,LI.MediaId ,LI.MediaName ,CONVERT(VARCHAR,LI.TOTALCOUNT) AS TotalCount ,CONVERT(VARCHAR,LI.TOTALAPPLICABLECOUNT) AS Count ,CONVERT(VARCHAR,LI.NOTSTARTED+LI.PAUSED) AS NotStarted ,CONVERT(VARCHAR,LI.INPROGRESS) AS InProgress ,CONVERT(VARCHAR,LI.COMPLETED) AS Completed ,CONVERT(VARCHAR,LI.FAILED) AS Failed ,CONVERT(VARCHAR,LI.PAUSED) AS Paused ,LI.[Status] ,CASE WHEN NOTSTARTED + INPROGRESS + PAUSED + COMPLETED + FAILED=0 AND PROJECTJOBGROUPSTATUS=2 THEN ''''Completed'''' WHEN NOTSTARTED=TOTALAPPLICABLECOUNT AND NOT (PROJECTJOBGROUPSTATUS IS NULL AND parsed=2) THEN ''''Not Started'''' WHEN INPROGRESS>0 OR PROJECTJOBGROUPSTATUS =1 THEN ''''In Progress'''' WHEN PAUSED>0 THEN ''''Paused'''' WHEN FAILED>0 AND PROJECTJOBGROUPSTATUS IN (2,-2) THEN ''''Completed With Error'''' WHEN (TOTALAPPLICABLECOUNT=COMPLETED AND PROJECTJOBGROUPSTATUS IN (2,-2)) or (PROJECTJOBGROUPSTATUS IS NULL AND parsed=2) THEN ''''Completed'''' ELSE ''''In Progress'''' END AS StatusText FROM( SELECT M.MEDIAID ,M.MEDIANAME ,M.CUSTODIANID ,C.CustodianName ,M.parsed ,ISNULL(LanguageIdentificationApplicableFileCount,0) AS TOTALAPPLICABLECOUNT ,isnull(totalcount,0) AS TOTALCOUNT ,ISNULL(SUM(CASE WHEN JB.STATUS=0 THEN 1 ELSE 0 END), 0) AS NOTSTARTED ,ISNULL(SUM(CASE WHEN JB.STATUS=1 THEN 1 ELSE 0 END), 0) AS INPROGRESS ,ISNULL(SUM(CASE WHEN JB.STATUS=-1 THEN 1 ELSE 0 END), 0) AS PAUSED ,ISNULL(SUM(CASE WHEN JB.STATUS=2 THEN 1 ELSE 0 END), 0) AS COMPLETED ,ISNULL(SUM(CASE WHEN JB.STATUS=-2 THEN 1 ELSE 0 END), 0) AS FAILED ,pj.BulkProcessingStatus [PROJECTJOBGROUPSTATUS] ,ISNULL(pj.[Status],Parsed) AS [Status] --log 1 FROM TBL_EX_CUSTODIAN C WITH(NOLOCK), TBL_EX_MEDIA M WITH(NOLOCK) LEFT JOIN (SELECT PJ.*, OTHERSETTINGS.value(''''(/OtherSettings/MediaId)[1]'''',''''bigint'''') AS MEDIAID FROM TBL_DS_PROJECTJOBINFO PJ WITH(NOLOCK), (SELECT MEDIAID, MAX(JOBID) AS JOBID FROM (SELECT JOBID, OTHERSETTINGS.value(''''(/OtherSettings/MediaId)[1]'''',''''bigint'''') AS MEDIAID FROM TBL_DS_PROJECTJOBINFO WITH(NOLOCK) WHERE [NAME]=''''Language Identification'''' )T GROUP BY MEDIAID ) PJJ WHERE PJJ.JOBID=PJ.JobId and pj.[Name]=''''Language Identification'''' ) pj ON m.MediaId =pj.MEDIAID LEFT JOIN TBL_JB_GENERICJOBDETAIL JB WITH(NOLOCK) ON PJ.JOBID=JB.JOBID LEFT JOIN @IMT FI ON FI.mediaid=m.mediaid WHERE M.CustodianId = C.CustodianId --log 1(remove parsed filter as it will display media with parsed=2 only) AND M.MediaId in (''+ @MediaList +'') GROUP BY M.MEDIAID ,M.MEDIANAME ,M.Parsed ,M.CUSTODIANID ,C.CustodianName ,totalCount ,LanguageIdentificationApplicableFileCount ,pj.BulkProcessingStatus ,pj.Startedon ,pj.[Status] ,pj.PostProcessingStatus ) LI'' EXEC sp_executesql @query END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_rev_ReviewDashboard ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_rev_ReviewDashboard'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rev_ReviewDashboard]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Dipesh -- Create date: 11th May, 2012 -- Description: Queries for Review Dashboard -- In Review Dashboard - Tag Status Report : Tag name length greater than 60 are trimmed and shown by adding ''..'' to the trimmed tag name. -- In Review Dashboard - Review Progress Summary : Review stats is shown according to the date range and reviewer available type. Also added two parameters (@p_StartingDate and @p_EndingDate) -- UserGroup/User from tbl_rev_UserReviewAssociation is used as AssignedUserGroupId is removed from tbl_rev_ReviewSetInfo -- refactor query -- Tags from and outside review -- Remove tag security when displaying review document in review dashboard -- remove hardcord datetime format -- Dynamic Folder as Review Source -- Order BY RB.BatchName added for p_section REVIEWBATCH -- ============================================= CREATE PROCEDURE [dbo].[sp_rev_ReviewDashboard] @p_Section NVARCHAR(50), @p_ReviewSetID BIGINT, @p_ViewMode NVARCHAR(100), @p_BatchIDList VARCHAR(MAX), @p_UserID BIGINT, @p_StartingDate DATE= NULL, @p_EndingDate DATE= NULL AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; --login 7 IF(@p_StartingDate IS NULL) SET @p_StartingDate =CONVERT(DATE, ''1753-01-01'') IF(@p_EndingDate IS NOT NULL) SET @p_EndingDate=CONVERT(DATE,@p_EndingDate) DECLARE @v_Query NVARCHAR(MAX) IF(@p_Section=''REVIEWSETSUMMARY'') BEGIN DECLARE @ReviewSourceOpt NvarChar(50) SELECT @ReviewSourceOpt=ReviewSource FROM tbl_rev_reviewsetinfo WHERE REVIEWSETID=@p_ReviewSetID IF(@ReviewSourceOpt=''TAG'' OR @ReviewSourceOpt=''FOLDER'' OR @ReviewSourceOpt=''REDACTION_SET'' OR @ReviewSourceOpt=''SAMPLE'') BEGIN DECLARE @ReviewSource NVARCHAR(MAX) SET @v_Query='' SET @ReviewSource =N'''''''' SELECT @ReviewSource=@ReviewSource+ {0} +'''' {4} '''' FROM {1} WITH(NOLOCK) WHERE {2} IN ({3}) IF(LEN(@ReviewSource)>0) SELECT @ReviewSource = ''''BY {5} (''''+ SUBSTRING(@ReviewSource,1,LEN(@ReviewSource)-LEN('''' {4}''''))+'''')'''''' DECLARE @TagFolderOpt nvarchar(10) DECLARE @TagFolderId nvarchar(1000) if(@ReviewSourceOpt=''TAG'') BEGIN SELECT @TagFolderOpt=TAGSELECTIONOPTION, @TagFolderId=Tagid FROM TBL_REV_REVIEWSETINFO WHERE REVIEWSETID=@p_ReviewSetID SET @v_Query = REPLACE(@v_Query,''{0}'', ''TAGNAME'') SET @v_Query = REPLACE(@v_Query,''{1}'', ''TBL_EX_TAG'') SET @v_Query = REPLACE(@v_Query,''{2}'', ''TAGID'') SET @v_Query = REPLACE(@v_Query,''{3}'', @TagFolderId) SET @v_Query = REPLACE(@v_Query,''{4}'', @TagFolderOpt) END IF(@ReviewSourceOpt=''FOLDER'') BEGIN SELECT @TagFolderOpt=FOLDERSELECTIONOPTION,@TagFolderId=Folderid FROM TBL_REV_REVIEWSETINFO WHERE REVIEWSETID=@p_ReviewSetID SET @v_Query = REPLACE(@v_Query,''{0}'', ''FOLDERNAME'') SET @v_Query = REPLACE(@v_Query,''{1}'', ''tbl_fd_FolderHierarchy'') SET @v_Query = REPLACE(@v_Query,''{2}'', ''FOLDERID'') SET @v_Query = REPLACE(@v_Query,''{3}'', @TagFolderId) SET @v_Query = REPLACE(@v_Query,''{4}'', @TagFolderOpt) END IF(@ReviewSourceOpt=''REDACTION_SET'') BEGIN SELECT @TagFolderOpt='','',@TagFolderId=RedactionObjectId FROM TBL_REV_REVIEWSETINFO WHERE REVIEWSETID=@p_ReviewSetID SET @v_Query = REPLACE(@v_Query,''{0}'', ''OBJECTNAME'') SET @v_Query = REPLACE(@v_Query,''{1}'', ''tbl_ann_RedactionObjects'') SET @v_Query = REPLACE(@v_Query,''{2}'', ''OBJECTID'') SET @v_Query = REPLACE(@v_Query,''{3}'', @TagFolderId) SET @v_Query = REPLACE(@v_Query,''{4}'', @TagFolderOpt) END IF(@ReviewSourceOpt=''SAMPLE'') BEGIN SELECT @TagFolderOpt='','',@TagFolderId=SampleId FROM TBL_REV_REVIEWSETINFO WHERE REVIEWSETID=@p_ReviewSetID SET @v_Query = REPLACE(@v_Query,''{0}'', ''SampleName'') SET @v_Query = REPLACE(@v_Query,''{1}'', ''tbl_sm_samplinginfo'') SET @v_Query = REPLACE(@v_Query,''{2}'', ''SampleId'') SET @v_Query = REPLACE(@v_Query,''{3}'', @TagFolderId) SET @v_Query = REPLACE(@v_Query,''{4}'', @TagFolderOpt) END SET @v_Query = REPLACE(@v_Query,''{5}'', @ReviewSourceOpt) END IF(@ReviewSourceOpt=''SAVED_SEARCH'') BEGIN SET @v_Query='' SET @ReviewSource =N'''''''' SELECT @ReviewSource= ''''BY SAVED SEARCH (''''+ SEARCHNAME + '''') '''' FROM tbl_ex_SEARCHLOG SL WITH(NOLOCK) WHERE SL.SEARCHID=(SELECT TOP 1 SaveDSearchId FROM TBL_REV_REVIEWSETINFO RSI WITH(NOLOCK) WHERE RSI.REVIEWSETID={0})'' SET @v_Query = REPLACE(@v_Query,''{0}'',@p_ReviewSetID) END IF(@ReviewSourceOpt=''REVIEW_SET_CLONE'') BEGIN SET @v_Query='' SET @ReviewSource =N'''''''' SELECT @ReviewSource= ''''BY CLONE ('''' + NAME + '''') '''' From TBL_REV_REVIEWSETINFO SL WITH(NOLOCK) WHERE SL.ReviewSetId=(SELECT TOP 1 SourceReviewSetId FROM TBL_REV_REVIEWSETINFO RSI WITH(NOLOCK) WHERE RSI.REVIEWSETID={0})'' SET @v_Query = REPLACE(@v_Query,''{0}'',@p_ReviewSetID) END --Change log 8 IF(@ReviewSourceOpt=''Dynamic_Folder'') BEGIN SET @v_Query='' SET @ReviewSource =N'''''''' SELECT TOP 1 @ReviewSource=''''BY DYNAMIC FOLDER ('''' + Lineage + '''')'''' FROM tbl_fd_DynamicFolder D WITH(NOLOCK), TBL_REV_REVIEWSETINFO R WITH(NOLOCK) WHERE R.REVIEWSETID={0} AND ''''G_''''+CAST(D.DynamicFolderId AS nvarchar(100))=R.DynamicFolderId IF(@ReviewSource ='''''''') SELECT TOP 1 @ReviewSource=''''BY DYNAMIC FOLDER ('''' + Lineage + '''')'''' FROM tbl_fd_ProjectDynamicFolder D WITH(NOLOCK) , TBL_REV_REVIEWSETINFO R WITH(NOLOCK) WHERE R.REVIEWSETID={0} AND ''''L_''''+CAST(D.DynamicFolderId AS nvarchar(100))=R.DynamicFolderId'' SET @v_Query = REPLACE(@v_Query,''{0}'',@p_ReviewSetID) END EXEC sp_executesql @v_Query, N''@ReviewSource varchar(MAX) OUTPUT'', @ReviewSource OUTPUT SELECT RSA.NAME, @ReviewSource as SOUCRE, TG.TAGNAME, GI.GROUPNAME, RSA.PURPOSE, RSA.[BATCHSIZE], ISNULL(( SELECT COUNT(FILEID) FROM TBL_REV_BATCHFILEASSOCIATION BFA WITH(NOLOCK), TBL_REV_REVIEWBATCH RB WITH(NOLOCK) WHERE BFA.BatchID=RB.BatchID AND RB.ReviewSetID=@p_ReviewSetID ),0) AS TOTALDOCS, ISNULL(( SELECT COUNT(BFA.FILEID)AS PROCESSEDFILE FROM TBL_REV_BATCHFILEASSOCIATION BFA WITH(NOLOCK), TBL_REV_REVIEWBATCH RB WITH(NOLOCK), TBL_EX_FILETAGASSOCIATION FTA WITH(NOLOCK) WHERE RB.REVIEWSETID=@p_ReviewSetID AND RB.BatchID=BFA.BatchID AND FTA.TAGID=RSA.REVIEWTAGID AND FTA.FILEID=BFA.FILEID ),0) AS PROCESSED FROM tbl_rev_reviewsetinfo RSA WITH(NOLOCK), tbl_pj_groupinfo GI WITH(NOLOCK), TBL_EX_TAG TG WITH(NOLOCK), ( SELECT GUA.GroupId FROM tbl_rev_UserReviewAssociation U WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) WHERE U.ReviewSetId=@p_ReviewSetID AND IsGroupId=0 AND U.Id=GUA.UserId UNION SELECT G.GroupId FROM tbl_rev_UserReviewAssociation U WITH(NOLOCK), tbl_pj_groupinfo G WITH(NOLOCK) LEFT JOIN tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) ON G.GroupId=GUA.GroupId WHERE U.ReviewSetId=@p_ReviewSetID AND IsGroupId=1 AND G.GroupId=U.Id ) TT WHERE REVIEWSETID=@p_ReviewSetID AND TG.TAGID=RSA.REVIEWTAGID AND GI.GROUPID=TT.GroupId END IF(@p_Section=''REVIEWFILECOUNTCHART'') BEGIN SELECT ISNULL(SUM(CASE WHEN A.BatchStatus=0 THEN 1 ELSE 0 END),0) AS [Not Checked Out], ISNULL(SUM(CASE WHEN (A.BatchStatus=1) AND B.TAGID IS NULL THEN 1 ELSE 0 END),0) AS [Checked Out Only], ISNULL(SUM(CASE WHEN (A.BatchStatus=1) AND B.TAGID IS NOT NULL THEN 1 ELSE 0 END),0) AS [Checked Out And Reviewed], ISNULL(SUM(CASE WHEN A.BatchStatus>=2 THEN 1 ELSE 0 END),0) AS [Reviewed] FROM ( SELECT BFA.FileID, RB.BatchStatus FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK), tbl_rev_ReviewBatch RB WITH(NOLOCK) WHERE BFA.BatchID=RB.BatchID AND RB.ReviewSetID=@p_ReviewSetID ) A LEFT JOIN ( SELECT FTA.FileID, FTA.TAGID FROM tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_rev_ReviewSetInfo RSI WITH(NOLOCK) WHERE RSI.ReviewSetID=@p_ReviewSetID AND FTA.TagID = RSI.ReviewTagID ) B ON A.FileID=B.FileID END IF(@p_Section=''REVIEWTOP3'') BEGIN SELECT TOP 3 GUA.UserID, (SELECT UserName FROM tbl_pj_UserInfo WHERE UserID=GUA.UserID) AS UserName, COUNT(FTA.FileID) AS TotalReviewed, ISNULL(( SELECT SUM(DATEDIFF(mi, ( CASE WHEN CONVERT(DATE,LOGINDATETIME )<@p_StartingDate THEN @p_StartingDate ELSE LOGINDATETIME END), ( CASE WHEN LOGOUTDATETIME IS NULL THEN ESTLOGOUTDATETIME ELSE LOGOUTDATETIME END))) FROM TBL_EX_MODULELOGIN WITH(NOLOCK) WHERE UserID=GUA.UserID AND REVIEWSETID=@p_ReviewSetID AND MODULE=''REVIEW'' AND ( CASE WHEN LOGOUTDATETIME IS NULL THEN CONVERT(DATE,ESTLOGOUTDATETIME ) ELSE CONVERT(DATE,LOGOUTDATETIME ) END) BETWEEN @p_StartingDate AND @p_EndingDate),0)/60.00 AS NumberOfHours FROM tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_ex_TagActionLog TAL WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK), tbl_rev_ReviewSetInfo RSI WITH(NOLOCK), ( SELECT DISTINCT GroupId FROM [fn_rev_GetReviewUser](@p_ReviewSetID) ) TT WHERE GUA.GroupID = TT.GroupId AND GUA.UserID=TAL.TagOrUntaggedBy AND RSI.ReviewSetID=@p_ReviewSetID AND FTA.BatchID=TAL.BatchID AND FTA.TagID = RSI.ReviewTagID AND CONVERT(DATE,TAL.TagAppliedDate ) BETWEEN @p_StartingDate AND @p_EndingDate GROUP BY GUA.UserID ORDER BY TotalReviewed DESC, UserName ASC END IF(@p_Section=''REVIEWBOTTOM3'') BEGIN SELECT TOP 3 GUA.UserID, (SELECT UserName FROM tbl_pj_UserInfo WHERE UserID=GUA.UserID) AS UserName, COUNT(FTA.FileID) AS TotalReviewed, ISNULL(( SELECT SUM(DATEDIFF(mi, ( CASE WHEN CONVERT(DATE,LOGINDATETIME)<@p_StartingDate THEN @p_StartingDate ELSE LOGINDATETIME END), ( CASE WHEN LOGOUTDATETIME IS NULL THEN ESTLOGOUTDATETIME ELSE LOGOUTDATETIME END))) FROM TBL_EX_MODULELOGIN WITH(NOLOCK) WHERE UserID=GUA.UserID AND REVIEWSETID=@p_ReviewSetID AND MODULE=''REVIEW'' AND ( CASE WHEN LOGOUTDATETIME IS NULL THEN CONVERT(DATE,ESTLOGOUTDATETIME ) ELSE CONVERT(DATE,LOGOUTDATETIME ) END) BETWEEN @p_StartingDate AND @p_EndingDate),0)/60.00 AS NumberOfHours FROM tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_ex_TagActionLog TAL WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK), ( SELECT DISTINCT GroupId FROM [fn_rev_GetReviewUser](@p_ReviewSetID) ) TT WHERE GUA.GroupID = TT.GroupId AND GUA.UserID=TAL.TagOrUntaggedBy AND FTA.BatchID=TAL.BatchID AND FTA.TagID = (SELECT TOP 1 ReviewTagID FROM tbl_rev_ReviewSetInfo RSI WITH(NOLOCK) WHERE RSI.ReviewSetId=@p_ReviewSetID) AND CONVERT(DATE,TAL.TagAppliedDate) BETWEEN @p_StartingDate AND @p_EndingDate GROUP BY GUA.UserID ORDER BY TotalReviewed ASC, UserName DESC END IF(@p_Section=''REVIEWTOTAL'') BEGIN SELECT COUNT(DISTINCT GUA.UserID) AS TotalUsers, COUNT(FTA.FileID) AS TotalReviewed, ISNULL(( SELECT SUM(DATEDIFF(mi, ( CASE WHEN CONVERT(DATE,LOGINDATETIME)<@p_StartingDate THEN @p_StartingDate ELSE LOGINDATETIME END), ( CASE WHEN LOGOUTDATETIME IS NULL THEN ESTLOGOUTDATETIME ELSE LOGOUTDATETIME END))) FROM TBL_EX_MODULELOGIN WITH(NOLOCK) WHERE REVIEWSETID=@p_ReviewSetID AND MODULE=''REVIEW'' AND ( CASE WHEN LOGOUTDATETIME IS NULL THEN CONVERT(DATE,ESTLOGOUTDATETIME ) ELSE CONVERT(DATE,LOGOUTDATETIME ) END) BETWEEN @p_StartingDate AND @p_EndingDate),0)/60.00 AS NumberOfHours FROM tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_ex_TagActionLog TAL WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK), ( SELECT DISTINCT GroupId FROM [fn_rev_GetReviewUser](@p_ReviewSetID) ) TT WHERE GUA.GroupID = TT.GroupId AND GUA.UserID=TAL.TagOrUntaggedBy AND FTA.BatchID=TAL.BatchID AND FTA.TagID = (SELECT TOP 1 ReviewTagID FROM tbl_rev_ReviewSetInfo RSI WITH(NOLOCK) WHERE RSI.ReviewSetId=@p_ReviewSetID) AND CONVERT(DATE,TAL.TagAppliedDate) BETWEEN @p_StartingDate AND @p_EndingDate END IF(@p_Section=''REVIEWBATCH'') BEGIN SET @v_Query = '' SELECT RB.BatchName AS Batch, RB.BatchID, RB.ReviewSetID, CASE WHEN RB.BatchStatus=0 THEN ''''Not Checked Out'''' WHEN RB.BatchStatus=1 THEN ''''In Progress'''' WHEN RB.BatchStatus>=2 THEN ''''Completed'''' END AS BatchStatus, (SELECT UserName FROM tbl_pj_UserInfo WITH(NOLOCK) WHERE UserID=RB.BatchRequestedBy) AS Reviewer, ISNULL(T1.TotalCount,0) AS TotalFiles, ISNULL(T1.RemainingCount,0) AS RemainingFiles FROM tbl_rev_ReviewBatch RB WITH(NOLOCK) LEFT JOIN ( SELECT A.BatchID, ISNULL(COUNT(A.FileID),0) AS TotalCount, ISNULL(SUM(CASE WHEN TagID IS NULL THEN 1 ELSE 0 END),0) AS RemainingCount FROM ( SELECT BFA.FileID, RB.BatchID FROM tbl_rev_ReviewBatch RB WITH(NOLOCK), tbl_rev_BatchFileAssociation BFA WITH(NOLOCK) WHERE RB.ReviewSetID=@ReviewSetID AND RB.BatchID = BFA.BatchID ) A LEFT JOIN ( SELECT FTA.FileID, FTA.TagID FROM tbl_ex_FileTagAssociation FTA WITH(NOLOCK) WHERE FTA.TagID=(SELECT TOP 1 ReviewTagID FROM tbl_rev_ReviewSetInfo RSI WITH(NOLOCK) WHERE RSI.ReviewSetId=@ReviewSetID) ) B ON A.FileID=B.FileID GROUP BY A.BatchID ) T1 ON RB.BatchID=T1.BatchID WHERE RB.ReviewSetID=@ReviewSetID'' IF(@p_ViewMode=''Completed'') SET @v_Query = @v_Query + '' AND BatchStatus>=2'' ELSE IF(@p_ViewMode=''Not Checked Out'') SET @v_Query = @v_Query + '' AND BatchStatus=0'' ELSE IF(@p_ViewMode=''In Progress'') SET @v_Query = @v_Query + '' AND BatchStatus=1'' SET @v_Query = @v_Query + '' ORDER BY RB.BATCHNAME'' EXEC sp_Executesql @v_Query, N''@ReviewSetID BIGINT'', @ReviewSetID=@p_ReviewSetID END IF(@p_Section=''REVIEWSUMMARY'') BEGIN SELECT ISNULL(COUNT(BATCHID),0) AS ''TotalBatches'', ISNULL(SUM(CASE WHEN BatchStatus>=2 THEN 1 ELSE 0 END),0) AS ''CompletedBatches'', ISNULL(SUM(CASE WHEN BatchStatus=1 THEN 1 ELSE 0 END),0) AS ''InProgressBatches'', ISNULL(SUM(CASE WHEN BatchStatus=0 THEN 1 ELSE 0 END),0) AS ''NotStartedBatches'' FROM tbl_rev_ReviewBatch RB WITH(NOLOCK) WHERE ReviewSetID=@p_ReviewSetID END IF(@p_Section=''REVIEWTAGSUMMARY'') BEGIN IF(@p_BatchIDList = ''ALL'') BEGIN DECLARE @Temp TABLE (TagName NVARCHAR(400), GroupStatus NVARCHAR(20), FileCount INT) INSERT INTO @Temp SELECT --Start - ChangeLogId = 1, Keshab Pandey --tg.TagName as TagName, CASE WHEN LEN(TG.TagName) > 60 THEN SUBSTRING (TG.TagName ,1 , 60 )+''..'' ELSE TG.TagName END TagName, --End - ChangeLogId = 1, Keshab Pandey CASE GroupStatus WHEN 0 THEN ''DIFFERENT'' ELSE ''SAME'' END as GroupStatus, FileCount FROM ( SELECT FTA.TagID, CASE WHEN TAL.BatchID IS NULL THEN 0 ELSE 1 END AS GroupStatus, ISNULL(COUNT(FTA.FileID),0) AS FileCount FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK) INNER JOIN tbl_rev_ReviewBatch RB WITH(NOLOCK) ON BFA.BatchId = RB.BatchId INNER JOIN tbl_ex_FileTagAssociation FTA WITH(NOLOCK) ON BFA.FileId = FTA.FileId LEFT JOIN tbl_ex_TagActionLog TAL WITH(NOLOCK) ON FTA.BatchId = TAL.BatchId AND RB.BatchId = TAL.ReviewBatchID INNER JOIN tbl_tg_TagProjectGroupAssociation TPGA WITH(NOLOCK) ON FTA.TagID=TPGA.TagID INNER JOIN tbl_pj_GroupUserAssociation grp WITH(NOLOCK) ON TPGA.GroupId = grp.GroupId WHERE RB.ReviewSetID=@p_ReviewSetID AND grp.UserId = @p_UserID GROUP BY FTA.TagID, CASE WHEN TAL.BatchID IS NULL THEN 0 ELSE 1 END )A INNER JOIN tbl_ex_tag tg WITH(NOLOCK) ON A.TagID = tg.TagID SELECT T.TagName,T.GroupStatus,ISNULL(TM.FileCount,0) AS FileCount FROM (SELECT T.TagName,G.GroupStatus FROM (SELECT DISTINCT TagName FROM @Temp) T, (SELECT ''DIFFERENT'' GroupStatus UNION SELECT ''SAME'' GroupStatus)G ) T LEFT JOIN @Temp TM ON TM.TagName=T.TagName AND TM.GroupStatus=T.GroupStatus END ELSE IF(LEN(@p_BatchIDList)>0) BEGIN SET @v_Query = ''DECLARE @Temp TABLE (TagName NVARCHAR(400), GroupStatus NVARCHAR(20), FileCount INT) INSERT INTO @Temp SELECT tg.TagName as TagName, CASE GroupStatus WHEN 0 THEN ''''DIFFERENT'''' ELSE ''''SAME'''' END as GroupStatus, FileCount FROM ( SELECT FTA.TagID, CASE WHEN TAL.BatchID IS NULL THEN 0 ELSE 1 END AS GroupStatus, ISNULL(COUNT(FTA.FileID),0) AS FileCount FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK) INNER JOIN tbl_rev_ReviewBatch RB WITH(NOLOCK) ON BFA.BatchId = RB.BatchId INNER JOIN tbl_ex_FileTagAssociation FTA WITH(NOLOCK) ON BFA.FileId = FTA.FileId LEFT JOIN tbl_ex_TagActionLog TAL WITH(NOLOCK) ON FTA.BatchId = TAL.BatchId AND RB.BatchId = TAL.ReviewBatchID INNER JOIN tbl_tg_TagProjectGroupAssociation TPGA WITH(NOLOCK) ON FTA.TagID=TPGA.TagID INNER JOIN tbl_pj_GroupUserAssociation grp WITH(NOLOCK) ON TPGA.GroupId = grp.GroupId WHERE RB.ReviewSetID=''+CAST(@p_ReviewSetID AS VARCHAR)+'' AND RB.BATCHID IN (''+@p_BatchIDList+'') and grp.UserId =''+CAST(@p_UserID AS VARCHAR)+'' GROUP BY FTA.TagID, CASE WHEN TAL.BatchID IS NULL THEN 0 ELSE 1 END )A INNER JOIN tbl_ex_tag tg WITH(NOLOCK) ON A.TagID = tg.TagID SELECT T.TagName,T.GroupStatus,ISNULL(TM.FileCount,0) AS FileCount FROM (SELECT T.TagName,G.GroupStatus FROM (SELECT DISTINCT TagName FROM @Temp) T, (SELECT ''''DIFFERENT'''' GroupStatus UNION SELECT ''''SAME'''' GroupStatus)G ) T LEFT JOIN @Temp TM ON TM.TagName=T.TagName AND TM.GroupStatus=T.GroupStatus '' EXEC sp_executesql @v_Query END END IF(@p_Section=''REVIEWERSTATUS'') BEGIN IF(LEN(@p_BatchIDList)>0) BEGIN SET @v_Query = '' SELECT (SELECT UserName FROM tbl_pj_UserInfo WITH(NOLOCK) WHERE UserID=TAL.TagORUntaggedBy) AS UserName, ISNULL(COUNT(FTA.FileID),0) AS FileCount FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK), tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_ex_TagActionLog TAL WITH(NOLOCK) WHERE BFA.BatchID IN (''+@p_BatchIDList+'') AND FTA.FileID=BFA.FileID AND FTA.TagID = (SELECT TOP 1 ReviewTagID FROM tbl_rev_ReviewSetInfo RSI WITH(NOLOCK) WHERE RSI.ReviewSetId=''+CAST(@p_ReviewSetID AS VARCHAR)+'') AND FTA.BatchID=TAL.BatchID GROUP BY TAL.TagOrUntaggedBy'' EXEC sp_executesql @v_Query END ELSE BEGIN SELECT (SELECT UserName FROM tbl_pj_UserInfo WITH(NOLOCK) WHERE UserID=TAL.TagORUntaggedBy) AS UserName, ISNULL(COUNT(FTA.FileID),0) AS FileCount FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK), tbl_rev_ReviewBatch RB WITH(NOLOCK), tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_ex_TagActionLog TAL WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) WHERE RB.ReviewSetID=@p_ReviewSetID AND BFA.BatchID=RB.BatchID AND TAL.TagOrUntaggedBy=GUA.UserID AND FTA.FileID=BFA.FileID AND FTA.TagID = (SELECT TOP 1 ReviewTagID FROM tbl_rev_ReviewSetInfo RSI WITH(NOLOCK) WHERE RSI.ReviewSetId=@p_ReviewSetID ) AND FTA.BatchID=TAL.BatchID GROUP BY TAL.TagOrUntaggedBy END END IF(@p_Section=''REVIEWERUSERS'') BEGIN SELECT UserId FROM [fn_rev_GetReviewUser](@p_ReviewSetID) END END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE SP_QC_Task ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_QC_Task'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_QC_Task]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* ============================================= -- Author: -- Create date: -- Description: --ChangeLog: 1:Sujan Tiwari; April 28, 2017; Deleted parameters @FileId,@PageNumber , @PageFrom, @pageTo and Added parameter @SelectedPages. Single file is also now sent in @SelectedFileIds and selected pages are sent in new parameter @SelectedPages -- =============================================*/ CREATE PROCEDURE [dbo].[SP_QC_Task] @DocSetId BIGINT = 0 , @SelectedFileIds VARCHAR(max) = '''' , @SelectedPages VARCHAR(max) = '''' , @IsTiffBad BIT = false , @isSkipped BIT = false , @isQCCompleted BIT = false , @UpdatedBy INT , @requestfrom VARCHAR(100) , @result VARCHAR(50) out AS BEGIN SET XACT_ABORT ON BEGIN TRANSACTION BEGIN TRY SET @result = ''Success''; IF OBJECT_ID(''tempdb..#tempTableFile'') IS NOT NULL DROP TABLE #tempTableFile CREATE TABLE #tempTableFile ( FileId BIGINT , PageNumber BIGINT , PRIMARY KEY ([FileId], [PageNumber]) ) INSERT INTO #tempTableFile SELECT F.ParsedValue AS FileId , P.ParsedValue AS PageNumber FROM dbo.fn_ParseString(@SelectedFileIds, '','') F LEFT JOIN dbo.fn_ParseString(@SelectedPages, '','') P ON 1 = 1 IF ( @requestfrom = ''MARKDOCBAD'' OR @requestfrom = ''MARKDOCBADBULK'' ) BEGIN UPDATE QC WITH (ROWLOCK) SET IsTiffBad = @IsTiffBad , UpdatedBy = @UpdatedBy , UpdatedOn = GETDATE() FROM tbl_QC_Document QC , #tempTableFile T WHERE QC.FileId = T.FileId INSERT INTO tbl_QC_Document ( FileId , IsTiffBad , CreatedBy , CreatedOn ) SELECT T.FileId , @IsTiffBad , @UpdatedBy , GETDATE() FROM #tempTableFile T LEFT JOIN tbl_qc_Document QC WITH (NOLOCK) ON T.FileId = QC.FileId WHERE QC.FileId IS NULL END IF ( @requestfrom = ''MARKDOCBAD'' OR @requestfrom = ''MARKDOCBADBULK'' OR @requestfrom = ''SKIPDOCUMENTBULK'' OR @requestfrom = ''QCEDNEXTDOC'') BEGIN UPDATE D WITH (ROWLOCK) SET isSkipped = @isSkipped , isQCCompleted = @isQCCompleted , LastUpdatedBy = @UpdatedBy , lastUpdatedOn = GETDATE() FROM tbl_qc_DocSetFileAssociation D , #tempTableFile T WHERE QCDocSetId = @DocSetId AND D.FileId = T.FileId; END ELSE IF ( @requestfrom = ''MARKPAGEBAD'' OR @requestfrom = ''MARKPAGEBADBULK'') BEGIN UPDATE I WITH (ROWLOCK) SET IsTiffBad = @IsTiffBad , UpdatedBy = @UpdatedBy , UpdatedOn = GETDATE() FROM tbl_QC_Image I , #tempTableFile T WHERE I.FileId = T.FileId AND I.PageNumber = T.PageNumber INSERT INTO tbl_QC_Image ( FileId , PageNumber , IsTiffBad , CreatedBy , CreatedOn ) SELECT T.FileId , T.PageNumber , @IsTiffBad , @UpdatedBy , GETDATE() FROM #tempTableFile T LEFT JOIN tbl_QC_Image I WITH (NOLOCK) ON I.FileId = T.FileId AND I.PageNumber = T.PageNumber WHERE I.FileId IS NULL AND I.PageNumber IS NULL END ELSE SET @result = ''No request''; COMMIT TRANSACTION END TRY BEGIN CATCH SET @result = ''Fail''; DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE() , @ErrorSeverity = ERROR_SEVERITY() , @ErrorState = ERROR_STATE(); RAISERROR ( @ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. ); ROLLBACK TRANSACTION END CATCH END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_su_SetMediaSummary ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_su_SetMediaSummary'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_su_SetMediaSummary]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*------------------------------------------------------------------------------------------------- --CREATED BY: SURAJ BABU --CREATED DATE: 28 NOVEMBER 2011 --LATEST UPDATED BY: --LATEST UPDATED ON: --ChangeLog:1 -- 1. , 2014 FEB 28 : ADDED ZERO BYTE,UNSUPPORTED FILES -- 2. Sujan Tiwari, 29th July 2014 : Removed the [NO_ADDRESS] files from domainCount Summary -- 3. RajanM, 8th June 2016 : include decrypted file in processed count -- 4. RajanM, 31 Jan 2017 : Exclude decrypted file in password protected count. -- 5. Bipin, 21 Nov 2017 : Filter out issystem, isdenist and isarchive from filetype summary and domain. Language summary has already this filter applied. -------------------------------------------------------------------------------------------------*/ CREATE procedure [dbo].[sp_su_SetMediaSummary] @p_mediaid bigint, @p_computecountsummary bit, @p_computedomainsummary bit, @p_computefiletypesummary bit, @p_computelanguagesummary bit AS BEGIN DECLARE @p_custodianid bigint SELECT @p_custodianid = custodianid FROM tbl_ex_Media WITH(NOLOCK) WHERE MediaId = @p_mediaid IF(@p_computecountsummary = 1) BEGIN DELETE FROM [tbl_su_MediaLevelCountSummary] WHERE MEDIAID = @p_mediaid INSERT INTO [tbl_su_MediaLevelCountSummary] ([CustodianID] ,[MediaID] ,[TotalProcessedCount] ,[FileTypeRestrictedCount] ,[FileExtensionRestrictedCount] ,[DateRestrictedCount] ,[DeNISTCount] ,[SystemFilesCount] ,[PasswordProtectedArchiveCount] ,[CorruptedArchiveCount] ,[NonProcessedArchiveCount] ,[ProcessedArchiveCount] ,[OriginalProcessedEmailCount] ,[OriginalProcessedAttachmentCount] ,[DuplicateProcessedEmailCount] ,[DuplicateProcessedAttachmentCount] ,[CustodianDuplicateProcessedEmailCount] ,[CustodianDuplicateProcessedAttachmentCount] ,[OriginalProcessedEdocCount] ,[OriginalProcessedEmbeddedEdocCount] ,[DuplicateProcessedEdocCount] ,[DuplicateProcessedEmbeddedEdocCount] ,[CustodianDuplicateProcessedEdocCount] ,[CustodianDuplicateProcessedEmbeddedEdocCount] ,[OriginalPasswordProtectedEmailCount] ,[OriginalPasswordProtectedAttachmentCount] ,[DuplicatePasswordProtectedEmailCount] ,[DuplicatePasswordProtectedAttachmentCount] ,[CustodianDuplicatePasswordProtectedEmailCount] ,[CustodianDuplicatePasswordProtectedAttachmentCount] ,[OriginalPasswordProtectedEdocCount] ,[OriginalPasswordProtectedEmbeddedEdocCount] ,[DuplicatePasswordProtectedEdocCount] ,[DuplicatePasswordProtectedEmbeddedEdocCount] ,[CustodianDuplicatePasswordProtectedEdocCount] ,[CustodianDuplicatePasswordProtectedEmbeddedEdocCount] ,[OriginalCorruptedEmailCount] ,[OriginalCorruptedAttachmentCount] ,[DuplicateCorruptedEmailCount] ,[DuplicateCorruptedAttachmentCount] ,[CustodianDuplicateCorruptedEmailCount] ,[CustodianDuplicateCorruptedAttachmentCount] ,[OriginalCorruptedEdocCount] ,[OriginalCorruptedEmbeddedEdocCount] ,[DuplicateCorruptedEdocCount] ,[DuplicateCorruptedEmbeddedEdocCount] ,[CustodianDuplicateCorruptedEdocCount] ,[CustodianDuplicateCorruptedEmbeddedEdocCount] ,[OriginalZeroByteEmailCount] ,[OriginalZeroByteAttachmentCount] ,[DuplicateZeroByteEmailCount] ,[DuplicateZeroByteAttachmentCount] ,[CustodianDuplicateZeroByteEmailCount] ,[CustodianDuplicateZeroByteAttachmentCount] ,[OriginalZeroByteEdocCount] ,[OriginalZeroByteEmbeddedCount] ,[DuplicateZeroByteEdocCount] ,[DuplicateZeroByteEmbeddedCount] ,[CustodianDuplicateZeroByteEdocCount] ,[CustodianDuplicateZeroByteEmbeddedCount] ,[OriginalUnknownEmailCount] ,[OriginalUnknownAttachmentCount] ,[DuplicateUnknownEmailCount] ,[DuplicateUnknownAttachmentCount] ,[CustodianDuplicateUnknownEmailCount] ,[CustodianDuplicateUnknownAttachmentCount] ,[OriginalUnknownEdocCount] ,[OriginalUnknownEmbeddedEdocCount] ,[DuplicateUnknownEdocCount] ,[DuplicateUnknownEmbeddedEdocCount] ,[CustodianDuplicateUnknownEdocCount] ,[CustodianDuplicateUnknownEmbeddedEdocCount] ,[OriginalUnSupportedEmailCount] ,[OriginalUnSupportedAttachmentCount] ,[DuplicateUnSupportedEmailCount] ,[DuplicateUnSupportedAttachmentCount] ,[CustodianDuplicateUnSupportedEmailCount] ,[CustodianDuplicateUnSupportedAttachmentCount] ,[OriginalUnSupportedEdocCount] ,[OriginalUnSupportedEmbeddedCount] ,[DuplicateUnSupportedEdocCount] ,[DuplicateUnSupportedEmbeddedCount] ,[CustodianDuplicateUnSupportedEdocCount] ,[CustodianDuplicateUnSupportedEmbeddedCount] ,[OriginalProcessingErrorEmailCount] ,[OriginalProcessingErrorAttachmentCount] ,[DuplicateProcessingErrorEmailCount] ,[DuplicateProcessingErrorAttachmentCount] ,[CustodianDuplicateProcessingErrorEmailCount] ,[CustodianDuplicateProcessingErrorAttachmentCount] ,[OriginalProcessingErrorEdocCount] ,[OriginalProcessingErrorEmbeddedEdocCount] ,[DuplicateProcessingErrorEdocCount] ,[DuplicateProcessingErrorEmbeddedEdocCount] ,[CustodianDuplicateProcessingErrorEdocCount] ,[custodianDuplicateProcessingErrorEmbeddedEdocCount] ,[MinEmailGroupDate] ,[MaxEmailGroupDate] ,[MinEdocGroupDate] ,[MaxEdocGroupDate] ,[ProcessedDocumentSize]) SELECT @p_custodianid as CustodianID, @p_mediaid as MediaID, A.TotalProcessedCount, B.FileTypeRestrictedCount, B.FileExtensionRestrictedCount, B.DateRestrictedCount, A.DeNISTCount, A.SystemFilesCount, A.PasswordProtectedArchive, A.CorruptedArchive, A.NonProcessedArchive, A.ProcessedArchive, A.OriginalProcessedEmailCount, A.OriginalProcessedAttachmentCount, A.DuplicateProcessedEmailCount, A.DuplicateProcessedAttachmentCount, A.CustodianDuplicateProcessedEmailCount, A.CustodianDuplicateProcessedAttachmentCount, A.OriginalProcessedEdocCount, A.OriginalProcessedEmbeddedEdocCount, A.DuplicateProcessedEdocCount, A.DuplicateProcessedEmbeddedEdocCount, A.CustodianDuplicateProcessedEdocCount, A.CustodianDuplicateProcessedEmbeddedEdocCount, A.OriginalPwdEmailCount, A.OriginalPwdAttachmentCount, A.DuplicatePwdEmailCount, A.DuplicatePwdAttachmentCount, A.CustodianDuplicatePwdEmailCount, A.CustodianDuplicatePwdAttachmentCount, A.OriginalPwdEdocCount, A.OriginalPwdEmbeddedEdocCount, A.DuplicatePwdEdocCount, A.DuplicatePwdEmbeddedEdocCount, A.CustodianDuplicatePwdEdocCount, A.CustodianDuplicatePwdEmbeddedEdocCount, A.OriginalCorruptedEmailCount, A.OriginalCorruptedAttachmentCount, A.DuplicateCorruptedEmailCount, A.DuplicateCorruptedAttachmentCount, A.CustodianDuplicateCorruptedEmailCount, A.CustodianDuplicateCorruptedAttachmentCount, A.OriginalCorruptedEdocCount, A.OriginalCorruptedEmbeddedEdocCount, A.DuplicateCorruptedEdocCount, A.DuplicateCorruptedEmbeddedEdocCount, A.CustodianDuplicateCorruptedEdocCount, A.CustodianDuplicateCorruptedEmbeddedEdocCount, A.OriginalZeroByteEmailCount, A.OriginalZeroByteAttachmentCount, A.DuplicateZeroByteEmailCount, A.DuplicateZeroByteAttachmentCount, A.CustodianDuplicateZeroByteEmailCount, A.CustodianDuplicateZeroByteAttachmentCount, A.OriginalZeroByteEdocCount, A.OriginalZeroByteEmbeddedEdocCount, A.DuplicateZeroByteEdocCount, A.DuplicateZeroByteEmbeddedEdocCount, A.CustodianDuplicateZeroByteEdocCount, A.CustodianDuplicateZeroByteEmbeddedEdocCount, A.OriginalUnknownEmailCount, A.OriginalUnknownAttachmentCount, A.DuplicateUnknownEmailCount, A.DuplicateUnknownAttachmentCount, A.CustodianDuplicateUnknownEmailCount, A.CustodianDuplicateUnknownAttachmentCount, A.OriginalUnknownEdocCount, A.OriginalUnknownEmbeddedEdocCount, A.DuplicateUnknownEdocCount, A.DuplicateUnknownEmbeddedEdocCount, A.CustodianDuplicateUnknownEdocCount, A.CustodianDuplicateUnknownEmbeddedEdocCount, A.OriginalUnSupportedEmailCount, A.OriginalUnSupportedAttachmentCount, A.DuplicateUnSupportedEmailCount, A.DuplicateUnSupportedAttachmentCount, A.CustodianDuplicateUnSupportedEmailCount, A.CustodianDuplicateUnSupportedAttachmentCount, A.OriginalUnSupportedEdocCount, A.OriginalUnSupportedEmbeddedEdocCount, A.DuplicateUnSupportedEdocCount, A.DuplicateUnSupportedEmbeddedEdocCount, A.CustodianDuplicateUnSupportedEdocCount, A.CustodianDuplicateUnSupportedEmbeddedEdocCount, A.OriginalErrEmailCount, A.OriginalErrAttachmentCount, A.DuplicateErrEmailCount, A.DuplicateErrAttachmentCount, A.CustodianDuplicateErrEmailCount, A.CustodianDuplicateErrAttachmentCount, A.OriginalErrEdocCount, A.OriginalErrEmbeddedEdocCount, A.DuplicateErrEdocCount, A.DuplicateErrEmbeddedEdocCount, A.CustodianDuplicateErrEdocCount, A.CustodianDuplicateErrEmbeddedEdocCount, A.MinEmailGroupDate, A.MaxEmailGroupDate, A.MinEdocGroupDate, A.MaxEdocGroupDate, A.[ProcessedDocumentSize] FROM ( SELECT ISNULL(Count(FileID),0) AS TotalProcessedCount, isnull(SUM(case when isDeNIST = 1 then 1 else 0 end),0) AS DeNISTCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 1 then 1 else 0 end),0) AS SystemFilesCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 1 AND IsPasswordprotected = 1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS PasswordProtectedArchive, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 1 AND IsPasswordprotected = 0 and IsCorrupted=1 then 1 else 0 end),0) AS CorruptedArchive, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 1 AND IsPasswordprotected = 0 and IsCorrupted=0 and IsNonProcessed=1 then 1 else 0 end),0) AS NonProcessedArchive, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 1 AND (IsPasswordprotected = 0 OR ( IsPasswordprotected = 1 AND IsPasswordDecrypted = 1)) and IsCorrupted=0 and IsNonProcessed=0 then 1 else 0 end),0) AS ProcessedArchive, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS OriginalProcessedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS OriginalProcessedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS DuplicateProcessedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS DuplicateProcessedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS CustodianDuplicateProcessedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS CustodianDuplicateProcessedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS OriginalProcessedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS OriginalProcessedEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS DuplicateProcessedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS DuplicateProcessedEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS CustodianDuplicateProcessedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsNonProcessed=0 and FileType NOT IN (''UNKNOWN'',''NONE'') then 1 else 0 end),0) AS CustodianDuplicateProcessedEmbeddedEdocCount, --pwd isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS OriginalPwdEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS OriginalPwdAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS DuplicatePwdEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS DuplicatePwdAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS CustodianDuplicatePwdEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS CustodianDuplicatePwdAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS OriginalPwdEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS OriginalPwdEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS DuplicatePwdEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS DuplicatePwdEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS CustodianDuplicatePwdEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and IsPasswordprotected=1 AND IsPasswordDecrypted = 0 then 1 else 0 end),0) AS CustodianDuplicatePwdEmbeddedEdocCount, -- corrupted isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS OriginalCorruptedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS OriginalCorruptedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS DuplicateCorruptedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS DuplicateCorruptedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS CustodianDuplicateCorruptedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS CustodianDuplicateCorruptedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS OriginalCorruptedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS OriginalCorruptedEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS DuplicateCorruptedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS DuplicateCorruptedEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS CustodianDuplicateCorruptedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=1 then 1 else 0 end),0) AS CustodianDuplicateCorruptedEmbeddedEdocCount, --zero byte isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS OriginalZeroByteEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS OriginalZeroByteAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS DuplicateZeroByteEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS DuplicateZeroByteAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS CustodianDuplicateZeroByteEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS CustodianDuplicateZeroByteAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS OriginalZeroByteEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS OriginalZeroByteEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS DuplicateZeroByteEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS DuplicateZeroByteEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS CustodianDuplicateZeroByteEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and IsZeroByte=1 then 1 else 0 end),0) AS CustodianDuplicateZeroByteEmbeddedEdocCount, --unknown isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS OriginalUnknownEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS OriginalUnknownAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS DuplicateUnknownEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS DuplicateUnknownAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS CustodianDuplicateUnknownEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS CustodianDuplicateUnknownAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS OriginalUnknownEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS OriginalUnknownEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS DuplicateUnknownEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS DuplicateUnknownEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS CustodianDuplicateUnknownEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS CustodianDuplicateUnknownEmbeddedEdocCount, --unsupported isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS OriginalUnSupportedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS OriginalUnSupportedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS DuplicateUnSupportedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS DuplicateUnSupportedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS CustodianDuplicateUnSupportedEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS CustodianDuplicateUnSupportedAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS OriginalUnSupportedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS OriginalUnSupportedEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS DuplicateUnSupportedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS DuplicateUnSupportedEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS CustodianDuplicateUnSupportedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS CustodianDuplicateUnSupportedEmbeddedEdocCount, --processing error isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS OriginalErrEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS OriginalErrAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS DuplicateErrEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS DuplicateErrAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND isEmail = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS CustodianDuplicateErrEmailCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EMAIL'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS CustodianDuplicateErrAttachmentCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS OriginalErrEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=0 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS OriginalErrEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS DuplicateErrEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicate=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS DuplicateErrEmbeddedEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND isparent = 1 AND IsEdocs = 1 and IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS CustodianDuplicateErrEdocCount, isnull(SUM(case when isDeNIST = 0 AND issystem = 0 AND IsArchive = 0 AND ParentDocType = ''EDOC'' AND IsParent = 0 AND IsDuplicateCustodianLevel=1 and (IsPasswordprotected=0 OR (IsPasswordprotected=1 AND IsPasswordDecrypted=1)) and IsCorrupted=0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS CustodianDuplicateErrEmbeddedEdocCount, MIN(case when isparent = 1 AND isemail = 1 then groupdate end) AS MinEmailGroupDate, MAX(case when isparent = 1 AND isemail = 1 then groupdate end) AS MaxEmailGroupDate, MIN(case when isparent = 1 AND isedocs = 1 AND issystem = 0 AND isdenist = 0 then groupdate end) AS MinEdocGroupDate, MAX(case when isparent = 1 AND isedocs = 1 AND issystem = 0 AND isdenist = 0 then groupdate end) AS MaxEdocGroupDate, ISNULL(SUM(case when isArchive = 0 AND issystem = 0 AND isdenist = 0 then ISNULL(FileSize,0) ELSE 0 end),0) AS [ProcessedDocumentSize] FROM tbl_Ex_fileinfo WITH(NOLOCK) WHERE MediaID = @p_mediaid ) A, ( SELECT isnull(SUM(case when FILTERTYPE = ''FILETYPE'' then 1 else 0 end),0) AS FileTypeRestrictedCount, isnull(SUM(case when FILTERTYPE = ''FILEEXTENSION'' then 1 else 0 end),0) AS FileExtensionRestrictedCount, isnull(SUM(case when FILTERTYPE = ''DATELIMIT'' then 1 else 0 end),0) AS DateRestrictedCount, isnull(SUM(case when FILTERTYPE = ''ARCHIVE'' then 1 else 0 end),0) AS ArchiveRestrictedCount FROM tbl_ex_filtereddocs WITH (NOLOCK) WHERE MediaID = @p_mediaid ) B END --END COMPUTING COUNT SUMMARY IF(@p_computefiletypesummary = 1) BEGIN DELETE FROM tbl_su_filetypesummary WHERE MEDIAID = @p_mediaid --INSERT FILETYPE SUMMARY INSERT INTO tbl_su_filetypesummary ([custodianid],[mediaid],[FileType],[FileTypeCount],[FileTypeSize],[FileTypeGroupId]) SELECT @p_custodianid as CustodianID, @p_mediaid as MediaID, CASE WHEN FI.filetype = ''DXL_MAILMESSAGE'' THEN ''LOTUS NOTES DOCUMENT'' ELSE FI.filetype END AS FileType, COUNT(FI.fileid) as FileTypeCount, isnull(SUM(FI.FileSize),0) as FileTypeSize, (SELECT FTD.FileTypeGroupId FROM tbl_pj_FileTypesDescription FTD WITH(NOLOCK) WHERE FTD.ToolsDisplayName=FileType) FROM tbl_ex_fileinfo FI WITH (NOLOCK) WHERE FI.isarchive = 0 AND FI.issystem = 0 AND FI.isdenist = 0 AND FI.isduplicate = 0 AND FI.mediaid = @p_mediaid GROUP BY FI.FileType ORDER BY FileTypeCount DESC END IF(@p_computelanguagesummary = 1) BEGIN DELETE FROM tbl_su_languagesummary WHERE MEDIAID = @p_mediaid --INSERT LANGUAGE SUMMARY INSERT INTO tbl_su_languagesummary ([custodianid],[mediaid],[Language],[LanguageCount]) SELECT @p_custodianid as CustodianID, @p_mediaid as MediaID, isnull(T2.FileLanguage, ''NO_TEXT'') as [Language], count(isnull(T2.FileLanguage, ''NO_TEXT'')) as LanguageCount from tbl_ex_fileinfo T1 WITH (NOLOCK) left join tbl_ex_filelanguage T2 WITH (NOLOCK) ON T1.fileid = T2.fileid where T1.isarchive = 0 AND T1.issystem = 0 AND T1.isdenist = 0 AND T1.isduplicate = 0 AND T1.mediaid = @p_mediaid group by isnull(T2.FileLanguage, ''NO_TEXT'') order by LanguageCount desc END IF(@p_computedomainsummary = 1) BEGIN --INSERT DOMAIN SUMMARY DELETE FROM tbl_su_domainsummary WHERE MEDIAID = @p_mediaid INSERT INTO tbl_su_domainsummary(custodianid,mediaid,domainname,domaincount) SELECT @p_CustodianId, @p_MediaId, domainname, count(A.fileid) as [Count] FROM ( SELECT DISTINCT fileid, domainname as domainname FROM tbl_Ex_emailaddresses T1 WITH (NOLOCK), tbl_ex_emailaddresslist T2 WITH (NOLOCK) where T1.senderid = T2.emailaddressid AND T2.EmailAddress != ''[NO_ADDRESS]'' AND MEDIAID = @p_MediaId UNION SELECT DISTINCT fileid, domainname AS domainname FROM tbl_Ex_emailaddresses T1 WITH (NOLOCK), tbl_ex_emailaddresslist T2 WITH (NOLOCK) WHERE T1.recepientid = T2.emailaddressid AND T2.EmailAddress != ''[NO_ADDRESS]'' AND MEDIAID = @p_MediaId ) A, tbl_ex_FileInfo FI WITH(NOLOCK) WHERE A.FileID=FI.FileId AND FI.IsDuplicate=0 AND isDeNIST=0 GROUP BY DOMAINNAME ORDER BY [Count] DESC END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE Sp_rep_repexportsummary ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].Sp_rep_repexportsummary'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[Sp_rep_repexportsummary]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*----------------------------------------------------------------------------------------------- --CREATED BY: BISHAL/SURAJ --CREATED DATE: 2009-08-26 16:22:58.140 --LATEST UPDATED BY: SAURAV RANJIT --LATEST UPDATED ON: MAY 09, 2011 (REFERENCE TICKET No . 2493) --UPDATED BY: DIPESH --UPDATED ON: MARCH 1 ,2010(FOR CUSTODIAN SELECTION) --UPDATED BY: SUMAN KARKI --UPDATED ON: 5TH AUG,2014 --MODIFICATION: LOG 1:- Added Columns in Project Level to calculate Export Bates Range --UPDATED BY: Mohit Maharjan --UPDATED ON: 20TH April,2015 --MODIFICATION: LOG 2:- Added size of images, count of images, size of fulltext, count of fulltext -- Document Count, total pages, and size of export folder to both project level -- and custodian level #4945 -- Log 3 :- retrieve size of fulltext and native from new table #15121 ------------------------------------------------------------------------------------------------*/ CREATE PROCEDURE [dbo].[Sp_rep_repexportsummary] @TYPE VARCHAR(200) ,@CustodianId NVARCHAR(max) ,@ExportId VARCHAR(max) ,@UserId BIGINT AS BEGIN DECLARE @Query NVARCHAR(max) DECLARE @AvailableMedia NVARCHAR(max) IF OBJECT_ID(''tempdb..#TEMP'') IS NOT NULL DROP TABLE #TEMP CREATE TABLE #TEMP ( ExportId BIGINT ,ExportTiffOption NVARCHAR(10) ,RedactionSelectionType NVARCHAR(100) ,RedactionId NVARCHAR(250) ) IF OBJECT_ID(''tempdb..#TEMPRedaction'') IS NOT NULL DROP TABLE #TEMPRedaction CREATE TABLE #TEMPRedaction ( ExportId BIGINT ,RedactionSetting NVARCHAR(MAX) ) IF OBJECT_ID(''tempdb..#TiffImagesESReport'') IS NOT NULL DROP TABLE #TiffImagesESReport CREATE TABLE #TiffImagesESReport ( ExportId BIGINT ,FileID BIGINT ,ImageSize BIGINT ,ImagePageCount BIGINT ) SET @Query = ''INSERT INTO #TEMP SELECT ExportId, ExportOptions.value(''''ExportTemplateSettings[1]/FileOption[1]/ExportTiff[1]'''',''''varchar(10)''''), ExportOptions.value(''''ExportTemplateSettings[1]/FileOption[1]/AdditionalTiffOptions[1]/TiffOptions[1]/RedactionOptions[1]/RedactionSelectionType[1]'''',''''varchar(100)''''), ExportOptions.value(''''ExportTemplateSettings[1]/FileOption[1]/AdditionalTiffOptions[1]/TiffOptions[1]/RedactionOptions[1]/RedactionObjectIdList[1]'''',''''varchar(250)'''') FROM tbl_ep_Exports WITH(NOLOCK) WHERE ExportID IN ('' + @ExportId + '')'' EXEC SP_EXECUTESQL @Query SET @Query ='' INSERT INTO #TiffImagesESReport SELECT ExpOpt.ExportId , FileID , CASE WHEN ExportParentChildAsSinglePDF = 1 AND (FILE_ID_PK <> GROUPID OR (FILE_ID_PK = GROUPID AND TED.PageNumber > (SELECT MIN(PageNumber) FROM tbl_ep_TiffExportDetails T WITH(NOLOCK) WHERE TED.FileID = T.FileID and ted.exportid=t.exportid))) THEN 0 WHEN ( ( ImageExportOption = ''''NonSearchablePDF'''' OR ImageExportOption = ''''SearchablePDF'''' OR ImageExportOption = ''''MultiplePageTiff'''') AND TED.PageNumber > (SELECT MIN(PageNumber) FROM tbl_ep_TiffExportDetails T WITH(NOLOCK) WHERE TED.FileID = T.FileID and ted.exportid=t.exportid) AND ExportParentChildAsSinglePDF = 0 ) THEN 0 ELSE ImageSize END AS ImageSize , ImagePageCount FROM tbl_ep_TiffExportDetails TED WITH (NOLOCK) , tbl_ep_ExportPrimaryTable EPT WITH (NOLOCK) , ( SELECT ExportId , ExportOptions.value(''''(ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ImageExportOption)[1]'''', ''''nvarchar(max)'''') AS ImageExportOption , ExportOptions.value(''''(ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ExportParentChildAsSinglePDF)[1]'''', ''''bit'''') AS ExportParentChildAsSinglePDF FROM tbl_ep_exports WITH (NOLOCK) WHERE ExportId in ('' + @ExportId + '') ) ExpOpt WHERE TED.ExportID = ExpOpt.ExportID AND TED.FileID = EPT.FILE_ID_PK AND TED.ExportID = ept.ExportID'' EXEC SP_EXECUTESQL @Query DECLARE @RedactionExportId BIGINT ,@ExportTiffOption NVARCHAR(10) ,@RedactionSelectionType NVARCHAR(100) ,@RedactionId NVARCHAR(250) ,@RedactionList NVARCHAR(MAX) DECLARE ep_cursor CURSOR FOR SELECT * FROM #TEMP OPEN ep_cursor FETCH NEXT FROM ep_cursor INTO @RedactionExportId ,@ExportTiffOption ,@RedactionSelectionType ,@RedactionId WHILE @@FETCH_STATUS = 0 BEGIN IF (@ExportTiffOption = ''True'') BEGIN IF (@RedactionSelectionType = ''PARTIAL'') BEGIN IF (@RedactionId != '''') BEGIN SET @Query = ''DECLARE @Redaction_list NVARCHAR(MAX)= '''''''' SELECT @Redaction_list = CASE WHEN LEN(@Redaction_list) > 0 THEN @Redaction_list + '''','''' + ObjectName ELSE ObjectName END FROM tbl_ann_RedactionObjects WHERE ObjectId IN ('' + @RedactionId + '') INSERT INTO #TEMPRedaction SELECT '' + CAST(@RedactionExportId AS NVARCHAR(100)) + '',@Redaction_list'' EXEC SP_EXECUTESQL @Query END END ELSE IF (@RedactionSelectionType = ''ALL'') BEGIN INSERT INTO #TEMPRedaction VALUES ( @RedactionExportId ,''ALL'' ) END ELSE BEGIN INSERT INTO #TEMPRedaction VALUES ( @RedactionExportId ,''NONE'' ) END END ELSE BEGIN INSERT INTO #TEMPRedaction VALUES ( @RedactionExportId ,''NONE'' ) END FETCH NEXT FROM ep_cursor INTO @RedactionExportId ,@ExportTiffOption ,@RedactionSelectionType ,@RedactionId; END CLOSE ep_cursor; DEALLOCATE ep_cursor; IF (@TYPE = ''CUSTODIAN'') BEGIN EXEC Sp_getavailablemediaofcustodian @CustodianId, @UserId ,@AvailableMedia OUTPUT SELECT @Query = N'' SELECT Isnull(Sum(T.NativeSize), 0) AS [Total Export Native File Sizes] ,T.custodianid AS CustodianId ,Sum(CASE WHEN T.isduplicate = 1 THEN 1 ELSE 0 END) [Total # Duplicate Files Exported] ,Sum(CASE WHEN T.isdenist = 1 AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # NIST files exported] ,Sum(CASE WHEN T.isdenist = 0 AND T.isduplicate = 0 AND T.issystem = 1 AND T.isdenist = 0 AND T.isarchive = 0 THEN 1 ELSE 0 END) AS [Total # System files exported] ,Sum(CASE WHEN T.isarchive = 0 AND T.isduplicate = 0 AND T.isdenist = 0 AND T.issystem = 0 AND ( T.isnonprocessed = 1 OR iscorrupted = 1 ) THEN 1 ELSE 0 END) AS [Total # Non Process Files Exported] ,Sum(CASE WHEN T.isduplicate = 0 AND T.isdenist = 0 AND T.issystem = 0 AND (T.isarchive = 1) THEN 1 ELSE 0 END) AS [Total # Archive Files Exported] ,Sum(CASE WHEN T.isduplicate = 0 AND T.isdenist = 0 AND T.issystem = 0 AND (T.ispasswordprotected = 1) THEN 1 ELSE 0 END) AS [Total # Password Protected Files Exported] ,Sum(CASE WHEN T.isparent = 1 AND T.isemail = 1 AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # Parent Emails Exported] ,Sum(CASE WHEN T.parentdoctype = ''''EMAIL'''' AND T.isattachment = 1 AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # Attachments Exported] ,Sum(CASE WHEN T.parentdoctype = ''''EDOC'''' AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # Edocs exported] ,Count(DISTINCT (T.custodianid)) AS [Total # Custodians Exported] ,(T.exportbase) AS [Export Path] ,Max(T.exportstartdate) AS [Date/Time] ,(T.exportname) AS [Export Name] ,(T.exportid) AS [Export Id] ,Max(T.exportstartdate) AS [Export Start Date] ,Max(T.exportenddate) AS [Export End Date] ,ISNULL(T.FilePrefix, ''''N/A'''') AS [Prefix] ,(T.FileStartNumber) AS [StartNumber] ,(T.FileEndNumber) AS [EndNumber] ,(T.FilePadding) AS [Padding] ,ISNULL(T.ImageFilePrefix, ''''N/A'''') AS [BatesPrefix] ,--Log 1 (T.ImageFileStartNumber) AS [BatesStartNumber] ,--Log 1 (T.ImageFileEndNumber) AS [BatesEndNumber] ,--Log 1 (T.ImageFilePadding) AS [BatesPadding] ,--Log 1 (T.TotalTiffPageCount) AS [Count of Images] ,SUM(T.ImageSize) AS [Size of Images] ,(T.TotalFileCount) AS [Total Documents] ,SUM(ISNULL(T.FulltextSize, 0)) AS [Size of Fulltext] ,SUM(CASE WHEN T.FulltextSize IS NOT NULL THEN 1 ELSE 0 END) AS [Count of Fulltext] ,SUM(CASE WHEN T.NativeSize IS NOT NULL THEN 1 ELSE 0 END) AS [Total Export Native File Counts] ,( SELECT RedactionSetting FROM #TEMPRedaction WHERE EXPORTID = T.exportid ) AS RedactionSelectionType FROM ( SELECT ND.NativeSize ,fi.FileId ,fi.custodianid ,fi.isduplicate ,fi.isdenist ,fi.issystem ,fi.isarchive ,fi.ispasswordprotected ,fi.isnonprocessed ,fi.parentdoctype ,fi.iscorrupted ,fi.isparent ,fi.isemail ,fi.isattachment ,EP.exportbase ,EP.exportstartdate ,EP.exportenddate ,EP.exportname ,EP.exportid ,EP.FilePrefix ,EP.FileStartNumber ,EP.FileEndNumber ,EP.FilePadding ,EP.ImageFilePrefix ,--Log 1 EP.ImageFileStartNumber ,EP.ImageFileEndNumber ,EP.ImageFilePadding ,EP.TotalTiffPageCount ,EP.TotalFileCount ,--Log 1 FD.FulltextSize ,SUM(TED.ImageSize) AS ImageSize FROM tbl_ex_fileinfo fi WITH (NOLOCK) ,tbl_ep_exports EP WITH (NOLOCK) ,tbl_ep_exportdetails ED WITH (NOLOCK) LEFT JOIN #TiffImagesESReport TED WITH (NOLOCK) ON TED.ExportID = ED.ExportID AND ED.fileid = TED.Fileid LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON FD.ExportID = ED.ExportID AND ED.fileid = FD.Fileid LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ND.ExportID = ED.ExportID AND ED.fileid = ND.Fileid WHERE ED.fileid = FI.fileid AND ED.exportid = EP.exportid AND fi.mediaid IN ( '' + @AvailableMedia + N'' ) AND EP.exportid IN ('' + @ExportId + N'') AND fi.custodianid IN ( '' + @CustodianId + N'' ) GROUP BY ND.NativeSize ,fi.FileId ,fi.custodianid ,fi.isduplicate ,fi.isdenist ,fi.issystem ,fi.isarchive ,fi.ispasswordprotected ,fi.isnonprocessed ,fi.parentdoctype ,fi.iscorrupted ,fi.isparent ,fi.isemail ,fi.isattachment ,EP.exportbase ,EP.exportstartdate ,EP.exportenddate ,EP.exportname ,EP.exportid ,EP.FilePrefix ,EP.FileStartNumber ,EP.FileEndNumber ,EP.FilePadding ,EP.ImageFilePrefix ,--Log 1 EP.ImageFileStartNumber ,EP.ImageFileEndNumber ,EP.ImageFilePadding ,EP.TotalTiffPageCount ,EP.TotalFileCount ,--Log 1 FD.FulltextSize ,EP.ExportBase ) T GROUP BY T.exportbase ,T.exportname ,T.custodianid ,T.exportid ,T.FilePrefix ,T.FileStartNumber ,T.FileEndNumber ,T.FilePadding ,T.ImageFilePrefix ,T.ImageFileStartNumber ,T.ImageFileEndNumber ,T.ImageFilePadding ,T.TotalTiffPageCount ,T.TotalFileCount ORDER BY Max(T.exportenddate) DESC'' END ELSE IF (@TYPE = ''PROJECT'') BEGIN EXEC dbo.Sp_getavailablemedia @UserId, @AvailableMedia OUTPUT SELECT @Query = N''SELECT Isnull(Sum(T.NativeSize), 0) AS [Total Export Native File Sizes] ,Sum(CASE WHEN T.isduplicate = 1 THEN 1 ELSE 0 END) [Total # Duplicate Files Exported] ,Sum(CASE WHEN T.isdenist = 1 AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # NIST files exported] ,Sum(CASE WHEN T.isdenist = 0 AND T.isduplicate = 0 AND T.issystem = 1 AND T.isdenist = 0 AND T.isarchive = 0 THEN 1 ELSE 0 END) AS [Total # System files exported] ,Sum(CASE WHEN T.isarchive = 0 AND T.isduplicate = 0 AND T.isdenist = 0 AND T.issystem = 0 AND ( T.isnonprocessed = 1 OR iscorrupted = 1 ) THEN 1 ELSE 0 END) AS [Total # Non Process Files Exported] ,Sum(CASE WHEN T.isduplicate = 0 AND T.isdenist = 0 AND T.issystem = 0 AND (T.isarchive = 1) THEN 1 ELSE 0 END) AS [Total # Archive Files Exported] ,Sum(CASE WHEN T.isduplicate = 0 AND T.isdenist = 0 AND T.issystem = 0 AND (T.ispasswordprotected = 1) THEN 1 ELSE 0 END) AS [Total # Password Protected Files Exported] ,Sum(CASE WHEN T.isparent = 1 AND T.isemail = 1 AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # Parent Emails Exported] ,Sum(CASE WHEN T.parentdoctype = ''''EMAIL'''' AND T.isattachment = 1 AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # Attachments Exported] ,Sum(CASE WHEN T.parentdoctype = ''''EDOC'''' AND T.isduplicate = 0 THEN 1 ELSE 0 END) AS [Total # Edocs exported] ,Count(DISTINCT (T.custodianid)) AS [Total # Custodians Exported] ,(T.exportbase) AS [Export Path] ,Max(T.exportstartdate) AS [Date/Time] ,(T.exportname) AS [Export Name] ,(T.exportid) AS [Export Id] ,Max(T.exportstartdate) AS [Export Start Date] ,Max(T.exportenddate) AS [Export End Date] ,ISNULL(T.FilePrefix, ''''N/A'''') AS [Prefix] ,(T.FileStartNumber) AS [StartNumber] ,(T.FileEndNumber) AS [EndNumber] ,(T.FilePadding) AS [Padding] ,ISNULL(T.ImageFilePrefix, ''''N/A'''') AS [BatesPrefix] ,--Log 1 (T.ImageFileStartNumber) AS [BatesStartNumber] ,--Log 1 (T.ImageFileEndNumber) AS [BatesEndNumber] ,--Log 1 (T.ImageFilePadding) AS [BatesPadding] ,--Log 1 (T.TotalTiffPageCount) AS [Count of Images] ,SUM(T.ImageSize) AS [Size of Images] ,(T.TotalFileCount) AS [Total Documents] ,SUM(ISNULL(T.FulltextSize, 0)) AS [Size of Fulltext] ,SUM(CASE WHEN T.FulltextSize IS NOT NULL THEN 1 ELSE 0 END) AS [Count of Fulltext] ,SUM(CASE WHEN T.NativeSize IS NOT NULL THEN 1 ELSE 0 END) AS [Total Export Native File Counts] ,( SELECT RedactionSetting FROM #TEMPRedaction WHERE EXPORTID = T.exportid ) AS RedactionSelectionType FROM ( SELECT ND.NativeSize ,fi.FileId ,fi.custodianid ,fi.isduplicate ,fi.isdenist ,fi.issystem ,fi.isarchive ,fi.ispasswordprotected ,fi.isnonprocessed ,fi.parentdoctype ,fi.iscorrupted ,fi.isparent ,fi.isemail ,fi.isattachment ,EP.exportbase ,EP.exportstartdate ,EP.exportenddate ,EP.exportname ,EP.exportid ,EP.FilePrefix ,EP.FileStartNumber ,EP.FileEndNumber ,EP.FilePadding ,EP.ImageFilePrefix ,--Log 1 EP.ImageFileStartNumber ,EP.ImageFileEndNumber ,EP.ImageFilePadding ,EP.TotalTiffPageCount ,EP.TotalFileCount ,--Log 1 FD.FulltextSize ,SUM(TED.ImageSize) AS ImageSize FROM tbl_ex_fileinfo fi WITH (NOLOCK) ,tbl_ep_exports EP WITH (NOLOCK) ,tbl_ep_exportdetails ED WITH (NOLOCK) LEFT JOIN #TiffImagesESReport TED WITH (NOLOCK) ON TED.ExportID = ED.ExportID AND ED.fileid = TED.Fileid LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON FD.ExportID = ED.ExportID AND ED.fileid = FD.Fileid LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ND.ExportID = ED.ExportID AND ED.fileid = ND.Fileid WHERE ED.fileid = FI.fileid --AND ED.exportid = TED.ExportID AND ED.exportid = EP.exportid AND fi.mediaid IN ( '' + @AvailableMedia + '' ) AND EP.exportid IN ( '' + @ExportId + '' ) GROUP BY ND.NativeSize ,fi.FileId ,fi.custodianid ,fi.isduplicate ,fi.isdenist ,fi.issystem ,fi.isarchive ,fi.ispasswordprotected ,fi.isnonprocessed ,fi.parentdoctype ,fi.iscorrupted ,fi.isparent ,fi.isemail ,fi.isattachment ,EP.exportbase ,EP.exportstartdate ,EP.exportenddate ,EP.exportname ,EP.exportid ,EP.FilePrefix ,EP.FileStartNumber ,EP.FileEndNumber ,EP.FilePadding ,EP.ImageFilePrefix ,--Log 1 EP.ImageFileStartNumber ,EP.ImageFileEndNumber ,EP.ImageFilePadding ,EP.TotalTiffPageCount ,EP.TotalFileCount ,--Log 1 FD.FulltextSize ,EP.ExportBase ) T GROUP BY T.exportbase ,T.exportname ,T.exportid ,T.FilePrefix ,T.FileStartNumber ,T.FileEndNumber ,T.FilePadding ,T.ImageFilePrefix ,T.ImageFileStartNumber ,T.ImageFileEndNumber ,T.ImageFilePadding ,T.TotalTiffPageCount ,T.TotalFileCount ORDER BY Max(T.exportenddate) DESC'' END EXEC Sp_executesql @Query END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_rep_ProcessExportReport ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_rep_ProcessExportReport'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rep_ProcessExportReport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*--------------------------------------------------------------------- Description : Script for the ''process export report'' that is to be sent after the export process. CREATED BY : Sujan Tiwari CREATED ON : 28th May 2015 Redmine Ticket : 5435 ChangeLog : 1). Added files to the placeholdered files list whose slipsheet/placeholder was created during export, Sujan Tiwari, 17th February 2016, #8554 2). change the Image Key Range field to Control Number Range and populate control number if tiff not exported, BipinBaglung, 16th May 2016, #10745 3). Added MediaName in CustodianSummary, Sujan Tiwari, 5th August 2016, 4). Supported when export is splitted into multiple volumes. 5). Sort by Control Number in VolumeSummary , Volume Name in CustodianSummary and Remove entry from potentiallyTextCuttoffItems for Non-TIFF export, BipinBaglung, 1st March 2017, #15285 6). Generate sequential volume name when export is splited by custodian ---------------------------------------------------------------------*/ CREATE PROCEDURE [dbo].[sp_rep_ProcessExportReport] ( @ExportId BIGINT ,@Type NVARCHAR(100) ) AS BEGIN DECLARE @DuplicateOption NVARCHAR(50) ,@ParentOnly BIT ,@SystemFiles BIT ,@Archives BIT ,@Denist BIT ,@ProjectId BIGINT ,@ExportIncludeOptionXML XML ,@ExportSourceOption XML DECLARE @MediaTable TABLE (MediaId BIGINT) Declare @IsExportSplitedByVolume bit select @IsExportSplitedByVolume=ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/SplitVolumes)[1]'', ''bit''),cast(''0'' as bit)) FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID = @ExportId DECLARE @ExportsTable TABLE(ExportId BIGINT PRIMARY KEY) IF(@IsExportSplitedByVolume =1) BEGIN IF EXISTS(SELECT TOP 1 ExportId FROM Tbl_Ep_ExportVolumes with(nolock) WHERE ExportGroupId = @ExportId) BEGIN INSERT INTO @ExportsTable(ExportId) SELECT ExportId FROM Tbl_Ep_ExportVolumes with(nolock) WHERE ExportGroupId = @ExportId END ELSE BEGIN INSERT INTO @ExportsTable (ExportId) VALUES(@ExportId) END END ELSE BEGIN INSERT INTO @ExportsTable (ExportId) VALUES(@ExportId) END IF (@Type = ''ExportDiscoverySummary'') BEGIN SELECT @ProjectId = ProjectId FROM tbl_pj_ProjectSetup WITH (NOLOCK) WHERE DatabaseInstanceName = DB_NAME() DECLARE @IsFilteringServiceCase BIT = 0; SELECT @IsFilteringServiceCase = CAST(SettingXML AS XML).value(''(SettingsInfo/ApprovePreProcessPage_CostEstimate)[1]'', ''bit'') FROM tbl_VoD_VoDRInputSettings WITH(NOLOCK) WHERE ProjectId = @ProjectId DECLARE @HasProductionSettingsId BIT =0 IF Exists(select top 1 1 from tbl_VOD_ProductionSettings with(nolock) where ExportID=@ExportId) SET @HasProductionSettingsId=1 ELSE SET @HasProductionSettingsId=0 IF(@IsFilteringServiceCase = 1 AND @HasProductionSettingsId = 1 ) BEGIN DECLARE @discoveredFiles BIGINT ,@exportedFiles BIGINT SELECT @discoveredFiles = ProductionFilterXML.value(''(/ProductionFilterXMl/FileTagHitCountList/FileTagHitCount/TaggedFileCount)[1]'', ''BIGINT'') + ProductionFilterXML.value(''(/ProductionFilterXMl/FileTagHitCountList/FileTagHitCount/TaggedFileCount)[2]'', ''BIGINT'') FROM tbl_VOD_ProductionSettings ps WITH (NOLOCK),@ExportsTable tmp WHERE ps.ExportID = tmp.ExportId SELECT @exportedFiles = COUNT(FileID) FROM tbl_ep_ExportDetails ed WITH (NOLOCK),@ExportsTable tmp WHERE ed.ExportID = tmp.ExportId SELECT ISNULL(@discoveredFiles,0) AS Discovered , ISNULL(@discoveredFiles,0) - ISNULL(@exportedFiles,0) AS Excluded, ISNULL(@exportedFiles,0) AS Exported END ELSE BEGIN SELECT COUNT(FI.FileId) AS Discovered ,ISNULL(SUM(CASE WHEN ED.FileID IS NULL THEN 1 ELSE 0 END),0) AS Excluded ,ISNULL(SUM(CASE WHEN ED.FileID IS NOT NULL THEN 1 ELSE 0 END),0) AS Exported FROM tbl_ex_FileInfo FI WITH(NOLOCK) LEFT JOIN tbl_ep_ExportDetails ED WITH(NOLOCK) ON ED.FileID = FI.FileId LEFT JOIN tbl_VODR_ServiceSubmitCustodianMediaAssociation SMA WITH(NOLOCK) ON FI.MediaId = SMA.MediaId LEFT JOIN tbl_VoD_VoDRInputSettings VIS WITH(NOLOCK) ON VIS.SettingId = SMA.SettingId LEFT JOIN @ExportsTable tmpe ON tmpe.ExportId =ED.ExportId LEFT JOIN @ExportsTable tmps ON tmps.ExportId =VIS.ExportId WHERE VIS.ProjectId = @ProjectId AND (tmpe.EXPORTID IS NOT NULL OR tmps.exportid is not null) END END ELSE IF (@Type = ''VolumeSummary'') BEGIN SELECT VolumeName ,ExportJobID ,DocumentCount ,[PageCount] ,ImageKeyRangeStart + ''-'' + ImageKeyRangeEnd AS ImageKeyRange ,ExportedFileSizeInKB ,OriginalFileSizeInKB ,ROUND(ExportedFileSizeInKB / (1024 * 1024), 2) AS ExportedFileSizeInGB ,ROUND(OriginalFileSizeInKB / (1024 * 1024), 2) AS OriginalFileSizeInGB FROM ( SELECT ( SELECT CASE WHEN @IsExportSplitedByVolume = 0 THEN ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumePrefix)[1]'', ''NVARCHAR(MAX)'') ELSE dbo.fn_ep_GetExportDocId(ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumePrefix)[1]'', ''NVARCHAR(MAX)''), ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumePadding)[1]'', ''INT''), ''0'', ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumeStartNumber)[1]'', ''bigint'') + ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumeId)[1]'', ''bigint'') - 1) END FROM tbl_ep_Exports ep WITH (NOLOCK) WHERE ExportID = tmp.ExportId ) AS VolumeName ,@ExportId AS ExportJobID ,COUNT(FI.FileId) AS DocumentCount ,SUM(T.[PageCount]) AS [PageCount] ,CASE WHEN ( SELECT ExportOptions.value(''(/ExportTemplateSettings/FileOption/ExportTiff)[1]'', ''bit'') FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID = @ExportId ) = CAST(1 AS BIT) THEN ( SELECT TOP 1 BatesNumber FROM tbl_ep_TiffExportDetails ed WITH (NOLOCK) WHERE ExportID = tmp.ExportId ORDER BY LEN(BatesNumber) ASC ,BatesNumber ASC ) ELSE ( SELECT TOP 1 ControlNumber FROM tbl_ep_ExportDetails ed WITH (NOLOCK) WHERE ExportID = tmp.ExportId ORDER BY LEN(ControlNumber) ASC ,ControlNumber ASC ) END AS ImageKeyRangeStart ,CASE WHEN ( SELECT ExportOptions.value(''(/ExportTemplateSettings/FileOption/ExportTiff)[1]'', ''bit'') FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID = @ExportId ) = CAST(1 AS BIT) THEN ( SELECT TOP 1 BatesNumber FROM tbl_ep_TiffExportDetails ed WITH (NOLOCK) WHERE ExportID = tmp.ExportId ORDER BY LEN(BatesNumber) DESC ,BatesNumber DESC ) ELSE ( SELECT TOP 1 ControlNumber FROM tbl_ep_ExportDetails ed WITH (NOLOCK) WHERE ExportID = tmp.ExportId ORDER BY LEN(ControlNumber) DESC ,ControlNumber DESC ) END AS ImageKeyRangeEnd ,CAST((SUM(ISNULL(FD.FulltextSize, 0)) + SUM(ISNULL(ND.NativeSize, 0)) + SUM(ISNULL(T.ImageSize, 0))) AS FLOAT) / 1024 AS ExportedFileSizeInKB ,CAST((SUM(ISNULL(FI.FileSize, 0))) AS FLOAT) / 1024 AS OriginalFileSizeInKB FROM tbl_ex_FileInfo FI WITH (NOLOCK) INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON FI.FileId = ED.FileID INNER JOIN @ExportsTable tmp ON ed.ExportID = tmp.ExportId LEFT JOIN ( SELECT FileID ,COUNT(FileID) AS PageCount ,SUM(ISNULL(ImageSize, 0)) AS ImageSize FROM ( SELECT ExpOpt.ExportId , FileID , CASE WHEN ExportParentChildAsSinglePDF = 1 AND (FILE_ID_PK <> GROUPID OR (FILE_ID_PK = GROUPID AND TED.PageNumber > (SELECT MIN(PageNumber) FROM tbl_ep_TiffExportDetails T WITH(NOLOCK) WHERE TED.FileID = T.FileID and ted.exportid=t.exportid)))THEN 0 WHEN ( ( ImageExportOption = ''NonSearchablePDF'' OR ImageExportOption = ''SearchablePDF'' OR ImageExportOption = ''MultiplePageTiff'') AND TED.PageNumber > (SELECT MIN(PageNumber) FROM tbl_ep_TiffExportDetails T WITH(NOLOCK) WHERE TED.FileID = T.FileID and ted.exportid=t.exportid) AND ExportParentChildAsSinglePDF = 0 ) THEN 0 ELSE ImageSize END AS ImageSize , ImagePageCount FROM tbl_ep_TiffExportDetails TED WITH (NOLOCK) , tbl_ep_ExportPrimaryTable EPT WITH (NOLOCK) , ( SELECT ExportId , ExportOptions.value(''(ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ImageExportOption)[1]'', ''nvarchar(max)'') AS ImageExportOption , ExportOptions.value(''(ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ExportParentChildAsSinglePDF)[1]'', ''bit'') AS ExportParentChildAsSinglePDF FROM tbl_ep_exports WITH (NOLOCK) ) ExpOpt WHERE TED.ExportID = ExpOpt.ExportID AND TED.FileID = EPT.FILE_ID_PK AND TED.ExportID = ept.ExportID ) td INNER JOIN @ExportsTable tmp ON td.ExportID = tmp.ExportId GROUP BY FileID ) T ON ED.FileID = T.FileID LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON ED.FileId = FD.FileID AND ED.ExportID = FD.ExportID LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ED.FileId = ND.FileID AND ED.ExportID = ND.ExportID GROUP BY tmp.ExportId --,tmp.CustodianName ) TOUT ORDER BY LEN(ImageKeyRangeStart) ASC, ImageKeyRangeStart ASC END ELSE IF (@Type = ''CustodianSummary'') BEGIN SELECT CustodianName , MediaName, VolumeName, ExportJobID, DocumentCount ,[PageCount] , ExportedFileSizeInKB, OriginalFileSizeInKB , ROUND(ExportedFileSizeInKB/(1024*1024),2) AS ExportedFileSizeInGB , ROUND(OriginalFileSizeInKB/(1024*1024),2 ) AS OriginalFileSizeInGB FROM ( SELECT ( SELECT CustodianName FROM tbl_ex_Custodian WITH (NOLOCK) WHERE CustodianId = FI.CustodianId ) AS CustodianName ,( SELECT MediaName FROM tbl_ex_Media WITH (NOLOCK) WHERE MediaId = FI.MediaId ) AS MediaName ,( SELECT case when @IsExportSplitedByVolume=0 then ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumePrefix)[1]'', ''NVARCHAR(MAX)'') else dbo.fn_ep_GetExportDocId( ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumePrefix)[1]'', ''NVARCHAR(MAX)''), ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumePadding)[1]'', ''INT''), ''0'', ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumeStartNumber)[1]'', ''bigint'') + ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/VolumeId)[1]'', ''bigint'') -1) end FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID = tmp.ExportId ) AS VolumeName ,tmp.ExportId AS ExportJobID ,COUNT(FI.FileId) AS DocumentCount ,SUM(T.[PageCount]) AS [PageCount] ,CAST((SUM(ISNULL(FD.FulltextSize, 0)) + SUM(ISNULL(ND.NativeSize, 0)) + SUM(ISNULL(T.ImageSize, 0))) AS FLOAT) / 1024 AS ExportedFileSizeInKB ,CAST((SUM(ISNULL(FI.FileSize, 0))) AS FLOAT) / 1024 AS OriginalFileSizeInKB FROM tbl_ex_FileInfo FI WITH (NOLOCK) INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON FI.FileId = ED.FileID INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON FD.ExportId = ED.ExportID AND FD.FileId = ED.FileID LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ND.ExportId = ED.ExportID AND ND.FileId = ED.FileID LEFT JOIN ( SELECT FileID ,COUNT(FileID) AS PageCount ,SUM(ISNULL(ImageSize, 0)) AS ImageSize FROM tbl_ep_TiffExportDetails td WITH (NOLOCK) INNER JOIN @ExportsTable tmp on td.exportId=tmp.ExportId GROUP BY FileID ) T ON ED.FileID = T.FileID GROUP BY FI.CustodianId ,Fi.MediaId,tmp.ExportId) TOUT ORDER BY LEN(VolumeName) ASC, VolumeName ASC END ELSE IF (@Type = ''FileTypeSummary'') BEGIN SELECT ( SELECT FileTypeGroup FROM tbl_pj_FileTypesGroup FTG WITH (NOLOCK) WHERE FTG.FileTypeGroupID = FTD.FileTypeGroupID ) AS [FileType] --,tmp.ExportId AS ExportJobID ,COUNT(FI.FileId) AS DocumentCount ,SUM(T.[PageCount]) AS [PageCount] ,CAST((SUM(ISNULL(FD.FulltextSize, 0)) + SUM(ISNULL(ND.NativeSize, 0)) + SUM(ISNULL(T.ImageSize, 0))) AS FLOAT) / 1024 AS ExportedFileSizeInKB ,CAST((SUM(ISNULL(FI.FileSize, 0))) AS FLOAT) / 1024 AS OriginalFileSizeInKB ,ROUND(CAST((SUM(ISNULL(FD.FulltextSize, 0)) + SUM(ISNULL(ND.NativeSize, 0)) + SUM(ISNULL(T.ImageSize, 0))) AS FLOAT) / (1024 * 1024 * 1024), 2) AS ExportedFileSizeInGB ,ROUND(CAST(SUM(ISNULL(FI.FileSize, 0)) AS FLOAT) / (1024 * 1024 * 1024), 2) AS OriginalFileSizeInGB FROM tbl_ex_FileInfo FI WITH (NOLOCK) INNER JOIN tbl_pj_FileTypesDescription FTD WITH (NOLOCK) ON FTD.ToolsDisplayName = FI.FileType INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON FI.FileId = ED.FileID INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON FD.ExportId = ED.ExportID AND FD.FileId = ED.FileID LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ND.ExportId = ED.ExportID AND ND.FileId = ED.FileID LEFT JOIN ( SELECT FileID ,COUNT(FileID) AS PageCount ,SUM(ISNULL(ImageSize, 0)) AS ImageSize FROM tbl_ep_TiffExportDetails td WITH (NOLOCK) INNER JOIN @ExportsTable tmp on td.exportId=tmp.ExportId GROUP BY FileID ) T ON ED.FileID = T.FileID GROUP BY FTD.FileTypeGroupID END ELSE IF (@Type = ''FileExtensionSummary'') BEGIN SELECT ISNULL(NULLIF(FI.Extension, ''''), ''No extension'') AS FileExtension --,@ExportId AS ExportJobID ,COUNT(FI.FileId) AS DocumentCount ,SUM(T.[PageCount]) AS [PageCount] ,CAST((SUM(ISNULL(FD.FulltextSize, 0)) + SUM(ISNULL(ND.NativeSize, 0)) + SUM(ISNULL(T.ImageSize, 0))) AS FLOAT) / 1024 AS ExportedFileSizeInKB ,CAST((SUM(ISNULL(FI.FileSize, 0))) AS FLOAT) / 1024 AS OriginalFileSizeInKB ,ROUND(CAST((SUM(ISNULL(FD.FulltextSize, 0)) + SUM(ISNULL(ND.NativeSize, 0)) + SUM(ISNULL(T.ImageSize, 0))) AS FLOAT) / (1024 * 1024 * 1024), 2) AS ExportedFileSizeInGB ,ROUND(CAST(SUM(ISNULL(FI.FileSize, 0)) AS FLOAT) / (1024 * 1024 * 1024), 2) AS OriginalFileSizeInGB FROM tbl_ex_FileInfo FI WITH (NOLOCK) INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON FI.FileId = ED.FileID INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON FD.ExportId = ED.ExportID AND FD.FileId = ED.FileID LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ND.ExportId = ED.ExportID AND ND.FileId = ED.FileID LEFT JOIN ( SELECT FileID ,COUNT(FileID) AS PageCount ,SUM(ISNULL(ImageSize, 0)) AS ImageSize FROM tbl_ep_TiffExportDetails td WITH (NOLOCK) INNER JOIN @ExportsTable tmp on td.exportId=tmp.ExportId GROUP BY FileID ) T ON ED.FileID = T.FileID GROUP BY FI.Extension END ELSE IF (@Type = ''FamilyTypeSummary'') BEGIN SELECT ISNULL(FamilyType, ''Child'') AS FamilyType ,COUNT(FI.FileId) AS DocumentCount ,SUM(T.[PageCount]) AS [PageCount] ,CAST((SUM(FD.FulltextSize) + SUM(ND.NativeSize) + SUM(T.ImageSize)) AS FLOAT) / 1024 AS ExportedFileSizeInKB ,CAST((SUM(ISNULL(FI.FileSize, 0))) AS FLOAT) / 1024 AS OriginalFileSizeInKB ,ROUND(CAST((SUM(FD.FulltextSize) + SUM(ND.NativeSize) + SUM(T.ImageSize)) AS FLOAT) / (1024 * 1024 * 1024), 2) AS ExportedFileSizeInGB ,ROUND(CAST(SUM(ISNULL(FI.FileSize, 0)) AS FLOAT) / (1024 * 1024 * 1024), 2) AS OriginalFileSizeInGB FROM ( SELECT GroupId ,CASE WHEN COUNT(GroupId) = 1 THEN ''Individual'' WHEN COUNT(GroupId) > 1 THEN ''Parent'' END AS FamilyType FROM tbl_ex_FileInfo WITH (NOLOCK) GROUP BY GroupId ) FI1 RIGHT JOIN tbl_ex_FileInfo FI WITH (NOLOCK) ON FI1.GroupId = FI.FileId INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON FI.FileId = ED.FileID INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId LEFT JOIN Tbl_Ep_FulltextDetails FD WITH (NOLOCK) ON FD.ExportId = ED.ExportID AND FD.FileId = ED.FileID LEFT JOIN Tbl_Ep_NativeDetails ND WITH (NOLOCK) ON ND.ExportId = ED.ExportID AND ND.FileId = ED.FileID LEFT JOIN ( SELECT FileID ,COUNT(FileID) AS PageCount ,SUM(ISNULL(ImageSize, 0)) AS ImageSize FROM tbl_ep_TiffExportDetails td WITH (NOLOCK) INNER JOIN @ExportsTable tmp on td.exportId=tmp.ExportId GROUP BY FileID ) T ON FI.FileID = T.FileID GROUP BY FamilyType END ELSE IF (@Type = ''PlaceholderedItems'') BEGIN SELECT C.CustodianName ,ED.ExportId ,ED.ControlNumber ,CASE WHEN TS.Hardlimit = 1 THEN ''Threshold Exceeded'' ELSE ''Placeholder'' END AS PlaceHolderType ,FI.FileId ,FI.[FileName] ,FTG.FileTypeGroup AS FileType ,FI.RelativeFilePath AS FilePath ,CASE WHEN GroupCount = 1 THEN ''Individual'' WHEN GroupCount > 1 THEN ''Parent'' WHEN GroupCount IS NULL THEN ''Child'' END AS FamilyType ,FI.FileSize AS FileSize ,TED.PageCount FROM tbl_ex_FileInfo FI WITH (NOLOCK) LEFT JOIN ( SELECT GroupId ,COUNT(GroupId) AS GroupCount FROM tbl_ex_FileInfo FI WITH (NOLOCK) ,tbl_ep_ExportDetails ED WITH (NOLOCK) INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId WHERE ED.FILEID = FI.FILEID GROUP BY GroupId ) FI1 ON FI.FileId = FI1.GroupId INNER JOIN tbl_ex_Custodian C WITH (NOLOCK) ON FI.CustodianId = C.CustodianId INNER JOIN tbl_pj_FileTypesDescription FTD WITH (NOLOCK) ON FI.FileType = FTD.ToolsDisplayName INNER JOIN tbl_pj_FileTypesGroup FTG WITH (NOLOCK) ON FTD.FileTypeGroupID = FTG.FileTypeGroupID INNER JOIN ( SELECT MAX(PageNumber) AS PageCount ,FileID ,MAX(CAST(IsPlaceholderTiff AS INT)) AS IsPlaceholderTiff FROM tbl_ep_TiffExportDetails td WITH (NOLOCK) INNER JOIN @ExportsTable tmp on td.exportId=tmp.ExportId GROUP BY FileID ) TED ON FI.FileID = TED.FileID INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON ED.FileID = FI.FileId INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId LEFT JOIN tbl_tiff_Shadow TS WITH (NOLOCK) ON TS.fileId = FI.FileId WHERE ( TED.IsPlaceholderTiff = 1 OR EXISTS ( SELECT TOP 1 1 FROM Tbl_tiff_Images TI WITH (NOLOCK) WHERE TI.FileId = FI.FileId AND IsSlipSheet = 1 ) ) END ELSE IF (@Type = ''PotentiallyTextCutoffItems'') BEGIN SELECT C.CustodianName ,ED.ExportId ,FI.FileId ,ED.ControlNumber ,CASE WHEN GroupCount = 1 THEN ''Individual'' WHEN GroupCount > 1 THEN ''Parent'' WHEN GroupCount IS NULL THEN ''Child'' END AS FamilyType ,FTG.FileTypeGroup AS FileType ,FI.RelativeFilePath AS FilePath ,FI.[FileName] ,( SELECT MAX(PageNumber) FROM tbl_ep_TiffExportDetails td WITH (NOLOCK) INNER JOIN @ExportsTable tmp on td.exportId=tmp.ExportId WHERE FileID = FI.FileID ) AS [PageCount] ,FI.FileSize AS FileSizeInBytes FROM tbl_ex_FileInfo FI WITH (NOLOCK) RIGHT JOIN ( SELECT GroupId ,COUNT(GroupId) AS GroupCount FROM tbl_ex_FileInfo WITH (NOLOCK) GROUP BY GroupId ) FI1 ON FI.FileId = FI1.GroupId INNER JOIN tbl_ex_Custodian C WITH (NOLOCK) ON FI.CustodianId = C.CustodianId INNER JOIN tbl_pj_FileTypesDescription FTD WITH (NOLOCK) ON FI.FileType = FTD.ToolsDisplayName INNER JOIN tbl_pj_FileTypesGroup FTG WITH (NOLOCK) ON FTD.FileTypeGroupID = FTG.FileTypeGroupID INNER JOIN tbl_ep_ExportDetails ED WITH (NOLOCK) ON ED.FileID = FI.FileId INNER JOIN @ExportsTable tmp on ed.exportId=tmp.ExportId INNER JOIN(SELECT DISTINCT FileID, ExportID FROM tbl_ep_TiffExportDetails WITH(NOLOCK))TED ON ED.ExportID = TED.ExportID AND TED.FileID = ED.FileId LEFT JOIN tbl_tiff_Shadow TS WITH (NOLOCK) ON TS.fileId = FI.FileId LEFT JOIN ( SELECT DISTINCT QC.FileId FROM tbl_QC_PreQCImage QC WITH (NOLOCK) ,tbl_ep_ExportDetails E WITH (NOLOCK) ,@ExportsTable tmp WHERE E.exportId=tmp.ExportId AND E.FileID = QC.FileId AND ( IsRightCutOff = 1 OR IsPageCountDiscrepancy = 1 ) ) PQC ON FI.fileId = PQC.FileId LEFT JOIN tbl_ex_EdocMeta EDM WITH (NOLOCK) ON EDM.FileID = FI.FileId WHERE ( SheetHidden = 1 OR SlideHidden = 1 OR RowHidden = 1 OR ColumnHidden = 1 OR Hiddentext = 1 OR HasCroppedContent = 1 OR HasVeryHiddenSheet = 1 OR PQC.FileId IS NOT NULL ) END ELSE IF (@Type = ''ExcludedItems'') BEGIN SELECT @ProjectId = ProjectId FROM tbl_pj_ProjectSetup WITH (NOLOCK) WHERE DatabaseInstanceName = DB_NAME() SELECT @ExportIncludeOptionXML = ExportOptions.query(''(/ExportTemplateSettings/IncludeOption)[1]'') ,@ExportSourceOption = ExportOptions.query(''(/ExportTemplateSettings/ExportSourceOption)[1]'') FROM tbl_ep_Exports WHERE ExportID = @ExportId IF (@ExportSourceOption.value(''(/ExportSourceOption/ExportSource)[1]'', ''NVARCHAR(50)'') = ''SELECTED_MEDIAS'') BEGIN INSERT INTO @MediaTable SELECT r.value(''.'', ''BIGINT'') FROM @ExportSourceOption.nodes(''/ExportSourceOption/Media/ID'') AS x(r) SELECT @DuplicateOption = @ExportIncludeOptionXML.value(''(/IncludeOption/DuplicateOption)[1]'', ''NVARCHAR(50)'') ,@ParentOnly = @ExportIncludeOptionXML.value(''(/IncludeOption/ParentOnly)[1]'', ''BIT'') ,@SystemFiles = @ExportIncludeOptionXML.value(''(/IncludeOption/SystemFiles)[1]'', ''BIT'') ,@Archives = @ExportIncludeOptionXML.value(''(/IncludeOption/Archives)[1]'', ''BIT'') ,@Denist = @ExportIncludeOptionXML.value(''(/IncludeOption/De-Nist)[1]'', ''BIT'') SELECT @ProjectId AS ProjectId ,CustodianName ,FI.FileId ,FTG.FileTypeGroup AS FileType ,FI.Extension AS FileExtension ,CASE WHEN ( @DuplicateOption = ''PROJECT_LEVEL_DEDUP'' AND FI.IsDuplicate = 1 ) OR ( @DuplicateOption = ''CUSTODIAN_LEVEL_DEDUP'' AND FI.IsDuplicateCustodianLevel = 1 ) THEN ''Duplicate'' WHEN @SystemFiles = 0 AND FI.IsSystem = 1 THEN ''System'' WHEN @Archives = 0 AND FI.IsArchive = 1 THEN ''Archive'' WHEN @Denist = 0 AND FI.IsDenist = 1 THEN ''De-Nist'' WHEN @ParentOnly = 0 AND IsParent != 1 AND IsParent IS NOT NULL THEN ''Parent Only'' ELSE ''Quality Control Filter'' END AS FilterType ,FI.RelativeFilePath AS FilePath ,FI.[FileName] AS [FileName] ,FI.FileSize AS FileSizeInBytes ,FI.HashValue FROM tbl_ex_FileInfo FI WITH (NOLOCK) LEFT JOIN ( SELECT FileId FROM tbl_ep_ExportDetails e WITH (NOLOCK), @ExportsTable tmp WHERE e.ExportID=tmp.ExportId ) ED ON FI.FileId = ED.FileID INNER JOIN @MediaTable M ON M.MediaId = FI.MediaId INNER JOIN tbl_ex_Custodian C WITH (NOLOCK) ON C.CustodianId = FI.CustodianId INNER JOIN tbl_pj_FileTypesDescription FTD WITH (NOLOCK) ON FI.FileType = FTD.ToolsDisplayName INNER JOIN tbl_pj_FileTypesGroup FTG WITH (NOLOCK) ON FTG.FileTypeGroupID = FTD.FileTypeGroupID WHERE ED.FileID IS NULL END END ELSE IF (@Type = ''ExcludedItemsSummary'') BEGIN SELECT @ProjectId = ProjectId FROM tbl_pj_ProjectSetup WITH (NOLOCK) WHERE DatabaseInstanceName = DB_NAME() SELECT @ExportIncludeOptionXML = ExportOptions.query(''(/ExportTemplateSettings/IncludeOption)[1]'') ,@ExportSourceOption = ExportOptions.query(''(/ExportTemplateSettings/ExportSourceOption)[1]'') FROM tbl_ep_Exports WHERE ExportID = @ExportId IF (@ExportSourceOption.value(''(/ExportSourceOption/ExportSource)[1]'', ''NVARCHAR(50)'') = ''SELECTED_MEDIAS'') BEGIN INSERT INTO @MediaTable SELECT r.value(''.'', ''BIGINT'') FROM @ExportSourceOption.nodes(''/ExportSourceOption/Media/ID'') AS x(r) SELECT @DuplicateOption = @ExportIncludeOptionXML.value(''(/IncludeOption/DuplicateOption)[1]'', ''NVARCHAR(50)'') ,@ParentOnly = @ExportIncludeOptionXML.value(''(/IncludeOption/ParentOnly)[1]'', ''BIT'') ,@SystemFiles = @ExportIncludeOptionXML.value(''(/IncludeOption/SystemFiles)[1]'', ''BIT'') ,@Archives = @ExportIncludeOptionXML.value(''(/IncludeOption/Archives)[1]'', ''BIT'') ,@Denist = @ExportIncludeOptionXML.value(''(/IncludeOption/De-Nist)[1]'', ''BIT'') SELECT FileType ,SUM(CASE WHEN FilterType = ''Duplicate'' THEN 1 ELSE 0 END) AS Duplicate ,SUM(CASE WHEN FilterType = ''De-Nist'' THEN 1 ELSE 0 END) AS [NistMatch] ,SUM(CASE WHEN FilterType = ''Archive'' THEN 1 ELSE 0 END) AS Archive ,SUM(CASE WHEN FilterType = ''System'' THEN 1 ELSE 0 END) AS [System] ,''N/A'' AS [NonUserGenerated] ,''N/A'' AS [NonResponsive] ,''N/A'' AS [Protected] ,''N/A'' AS [Corrupt] ,''N/A'' AS [InlineImage] ,''N/A'' AS [ZeroFileSize] ,''N/A'' AS [NonPrintable] ,SUM(CASE WHEN FilterType = ''Quality Control Filter'' THEN 1 ELSE 0 END) AS [QualityControlFilter] FROM ( SELECT FTG.FileTypeGroup AS FileType ,CASE WHEN ( @DuplicateOption = ''PROJECT_LEVEL_DEDUP'' AND FI.IsDuplicate = 1 ) OR ( @DuplicateOption = ''CUSTODIAN_LEVEL_DEDUP'' AND FI.IsDuplicateCustodianLevel = 1 ) THEN ''Duplicate'' WHEN @SystemFiles = 0 AND FI.IsSystem = 1 THEN ''System'' WHEN @Archives = 0 AND FI.IsArchive = 1 THEN ''Archive'' WHEN @Denist = 0 AND FI.IsDenist = 1 THEN ''De-Nist'' WHEN @ParentOnly = 0 AND IsParent != 1 AND IsParent IS NOT NULL THEN ''Parent Only'' ELSE ''Quality Control Filter'' END AS FilterType FROM tbl_ex_FileInfo FI WITH (NOLOCK) LEFT JOIN ( SELECT FileId FROM tbl_ep_ExportDetails e WITH (NOLOCK), @ExportsTable tmp WHERE e.ExportID = tmp.ExportId ) ED ON FI.FileId = ED.FileID INNER JOIN @MediaTable M ON M.MediaId = FI.MediaId INNER JOIN tbl_pj_FileTypesDescription FTD WITH (NOLOCK) ON FI.FileType = FTD.ToolsDisplayName INNER JOIN tbl_pj_FileTypesGroup FTG WITH (NOLOCK) ON FTG.FileTypeGroupID = FTD.FileTypeGroupID WHERE ED.FileID IS NULL ) T GROUP BY FileType END END ELSE IF (@Type = ''Glossary'') BEGIN DECLARE @GloassaryTable TABLE ( Term NVARCHAR(200) ,[Definition] NVARCHAR(MAX) ) INSERT INTO @GloassaryTable ( Term ,[Definition] ) VALUES ( ''>'' ,''Regarding file path the "->" string signifies the file was extracted from the file following the ">" string.'' ) ,( ''1'' , ''A non-user generated file extension, a Manual page used by the Man utility, a Unix program used to view user manuals; contains plain text documentation, separated into several segments delimited by standard markers; used for storing a level 1 user manual.'' ) ,( ''C'' , ''A non-user generated file extension, a source code file for a C or C++ program; may include an entire program''''s source code, or may be one of many source files referenced within a programming project; can be edited using a basic text editor, but will not show syntax highlighting like most software development programs.'' ) ,( ''Child'' ,''A file that was attached or extracted from a parent file.'' ) ,( ''Corrupt'' ,''A filter type which indicates the corresponding file contains data corruption.'' ) ,( ''CPP'' , ''A non-user generated file extension, a source code file written in the C++ programming language; may be a standalone program or one of many files referenced within a programming project; can be viewed with a text editor, but most software development programs will display the text with helpful syntax highlighting.'' ) ,( ''CSS'' , ''A non-user generated file extension, a cascading style sheet file used to format the contents of a web page; contains customized, global properties for how to display HTML elements; can define the size, color, font, line spacing, indentation, borders, and location of HTML elements.'' ) ,( ''CustodianName'' ,''Value assigned to the custodian node.'' ) ,( ''DAT'' , ''A non-user generated file extension, a generic data file created by a specific application, typically accessed only by the application that created the file; may contain data in text or binary format; text-based DAT files can be viewed in a text editot.'' ) ,( ''Discovered'' ,''All files extracted from an original data set.'' ) ,( ''DiscoveryJobID'' ,''An incremental integer assigned to each discovery job node, unique to each database.'' ) ,( ''DocumentCount'' ,''Sum of all documents.'' ) ,( ''Duplicate'' ,''A file that has an identical MD5Hash value of another file.'' ) ,( ''EMLXPART'' , ''A non-user generated file extension, an attachment such as an image or other document attached to a mail message (.emlx file) saved using Mac OS X Mail, may also contain the HTML version of a message; does not contain the message metadata, which is included in the .emlx file.'' ) ,( ''Excluded'' ,''Files filtered out of a deliverable.'' ) ,( ''Exported'' ,''Files included in a deliverable.'' ) ,( ''ExportedFileSizeGB'' ,''The file size of an exported data set in gigabytes.'' ) ,( ''ExportedFileSizeKB'' ,''The file size of an exported data set in kilobytes.'' ) ,( ''ExportJobID'' ,''An incremental integer assigned to each export job node, unique to each database.'' ) ,( ''FamilyType'' ,''The file relationship type (i.e. individual, parent, child).'' ) ,( ''FileCount'' ,''Sum of all files.'' ) ,( ''FileExtension'' ,''A file name suffix applied to indicate the file format of the file''''s contents or usage.'' ) ,( ''FileName'' ,''A name used to identify a computer file stored in a file system.'' ) ,( ''FilePath'' ,''A file''''s relative path.'' ) ,( ''FileSizeBytes'' ,''The size of a file in bytes.'' ) ,( ''FileType'' ,''The file type category based on the Oracle outside in technology supported formats.'' ) ,( ''FilterType'' , ''Defines the parameter for excluding a file (i.e. Duplicate, NIST Match, Non-User Generated, Non-Responsive, Protected, Corrupt, Inline Image, Zero File Size, Non-Printable, Quality Control Filter).'' ) ,( ''H'' , ''A non-user generated file extension, a header file referenced by a C++ or java source code document; may contain variables, constants, and functions that are used by other files within a programming project; allows commonly used functions to be written only once and referenced by other source files when needed.'' ) ,( ''HashValue'' ,''The produced a 128-bit hash value produced using MD5 or SHA1 algorithm and is commonly used to check data integrity.'' ) ,( ''ImageKeyRange'' ,''The range of image keys for a specified data set.'' ) ,( ''Individual'' ,''A file that is not a child item and contains no child items.'' ) ,( ''INF'' , ''A non-user generated file extension, a plain text configuration file that defines what files are installed with a certain software program update; may also list the location of the files and the directories where the files are to be installed; used by the Windows operating systeam, or by the program or installer that includes the INF file.'' ) ,( ''INI'' , ''A non-user generated file extension, a configuration file used by Windows programs to initialize program settings, contains sections for settings and preferences with each section containing one of more name and value parameters.'' ) ,( ''Inline Image'' ,''A graphics file that is the child of an email and appears in the email, typically associated with email signatures.'' ) ,( ''ItemID'' ,''An incremental integer assigned to each item discovered, unique to each database.'' ) ,( ''JAVA'' , ''A non-user generated file extension, a source code file written in the java programming language, which was originally developed by Sun Microsystems but is now maintained by Oracle; uses an object oriented approach, where structured data types, called classes, are used to instantiate objects at runtime.'' ) ,( ''JOBOPTIONS'' , ''A non-user generated file extension, a file used by Adobe distiller, a program that controls the creation of PDF files, stores properties for generating a PDF, including security settings, color schemes, fonts, and image resolutions, allow generated PDFs to have the same properties.'' ) ,( ''JS'' , ''A non-user generated file extension, a text file containing JavaScript code; used to execute JavaScript instructions in web pages; may include functions that open and close windows, validate form fields, enable roll over images, or create drop down menus.'' ) ,( ''LOG'' , ''A non-user generated file extension, a file used by various operating systems and programs; typically contains a plain text log of certain events with their timestamps; may be created by the operating systeam to keep track of system events or by a software installation program to list location and names of installed files.'' ) ,( ''Native'' ,''A placeholder type where the native of an unextractable item is represented by a text placeholder.'' ) ,( ''NIST Match'' ,''A filter type which indicates the corresponding file matched an entry in the National Software Reference Library.'' ) ,( ''Non-Printable'' , ''A filter type which indicates the corresponding file either cannot be printed or if printed does not accurately represent the data contained in the file (i.e. audio files, video files, executable files, & database files).'' ) ,( ''Non-Responsive'' ,''A filter type which indicates the corresponding file was not responsive to the processing criteria, typically indicates a file was not responsive to a search term.'' ) ,( ''Non-UserGenerated'' , ''A filter type which indicates the corresponding file was a text file with a pre-defined non-user generated extension (i.e. .DAT, .JOBOPTIONS, .LOG, .EMLXPART, .STRINGS, .H, .JS, .URL, .JAVA, .PROPERTIES, .1, .PRJ, .INF, .INI, .CSS, .OUT, .PPD, .C, .CPP).'' ) ,( ''OriginalFileSizeGB'' ,''Unextracted file size in gigabytes.'' ) ,( ''OriginalFilesizeKB'' ,''Unextracted file size in kilobytes.'' ) ,( ''OUT'' , ''A non-user generated file extension, a generic output file created by various programs; typically contains text that has been dumped from a batch process or a custom program as a log; may be analyzed to debug of understand the execution behavior of a program.'' ) ,( ''PageCount'' ,''Sum of all pages.'' ) ,( ''Parent'' ,''A file that contains attachments or child items, but is not a child item of another file.'' ) ,( ''Placeholder'' ,''A placeholder type where all images are removed and represented by a placeholder.'' ) ,( ''PlaceholderType'' ,''Describes the type of placeholder used (i.e. placeholder, threshold exceeded).'' ) ,( ''PPD'' , ''A non-user generated file extension, a file that servs as a driver for a PostScript printer; describes the font, paper sizes, DPI resolution, memory configuration, and other features and capabilities supported by the printer.'' ) ,( ''PRJ'' , ''A non-user generated file extension, a generic project file extension used by multiple programs; typically saves project data and settings and may include references to other files used by the project.'' ) ,( ''PROPERTIES'' , ''A non-user generated file extension, a properties file used by java programs; contains a collection of key-value pairs in an XML hierarchy; can be loaded by the java virtual machine using the java.util.Properties API; used for storing various program settings and properties that can be accessed by the application.'' ) ,( ''Protected'' ,''A filter type which indicates the corresponding file is protected and requires a password to open.'' ) ,( ''QualityControlFilter'' ,''A filter type that indicates a quality control specialist filtered the corresponding file to meet project requirements or quality control standards.'' ) ,( ''STRINGS'' , ''A non-user generated file extension, a file containing text strings referenced by a Mac OS X program; used for alerts, errors, and status messages; often several STINGS files are stored within the resources folder of an OS X application package; they are not all meant to be opened or edited by the user.'' ) ,( ''ThresholdExceeded'' ,''A placeholder type where all images after the specified threshold are removed and represented by a placeholder.'' ) ,( ''URL'' , ''A non-user generated file extension, a shortcut file used by web browsers, including Microsoft Internet Explorer and Apple Safari; contains information for a web URL; also sometimes contains a reference to the favicon.ico icon file, which is displayed as the icon for the shortcut file.'' ) ,( ''VolumeName'' ,''Identifier assigned to a deliverable.'' ) ,( ''Zero File Size'' ,''A filter type which indicates the corresponding file has a file size of zero.'' ) SELECT * FROM @GloassaryTable END ELSE IF (@Type = ''Responsiveness'') BEGIN SELECT ProductionFilterXML.value(''(/ProductionFilterXMl/FileTagHitCountList/FileTagHitCount/TaggedFileCount)[1]'', ''BIGINT'') AS Responsive, ProductionFilterXML.value(''(/ProductionFilterXMl/FileTagHitCountList/FileTagHitCount/TaggedFileCount)[2]'', ''BIGINT'') AS NonResponsive, ProductionFilterXML.value(''(/ProductionFilterXMl/FileTagHitCountList/FileTagHitCount/TaggedFileCount)[3]'', ''BIGINT'') AS PotentiallyNonResponsive FROM tbl_VOD_ProductionSettings WITH(NOLOCK) WHERE ExportID = @ExportId END ELSE IF (@Type = ''FilterSummary'') BEGIN SELECT p.value(''(./searchExpression)[1]'', ''NVARCHAR(MAX)'') AS Filters, p.value(''(./totalHitCount)[1]'', ''BIGINT'') AS FileCount FROM tbl_VOD_ProductionSettings WITH(NOLOCK) CROSS APPLY ProductionFilterXML.nodes(''/ProductionFilterXMl/SearchExpressionList/SearchExpressionAndHitCount'') t(p) where ExportID = @ExportId END END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [Sp_jb_GetFilesForOcrGeneratedTiff] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].Sp_jb_GetFilesForOcrGeneratedTiff'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[Sp_jb_GetFilesForOcrGeneratedTiff]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*=================================== --Author: Bishal --CreatedDate: Dec 19,2013 --Description: Fetch files to ocr for generated tiffs --ChangeLog: 1 RajanM, July 11 2017, Get LanguageSelected for nuance ocr. --=================================*/ CREATE PROCEDURE [dbo].[Sp_jb_GetFilesForOcrGeneratedTiff] (@BatchSize INT, @BatchId INT, @ProcessingId NVARCHAR(250)) AS BEGIN SET NOCOUNT ON DECLARE @SelectedFiles TABLE ( FileId BIGINT PRIMARY KEY, CustodianId BIGINT, MediaId BIGINT, ProcessingFlag INT, ProcessingId VARCHAR(250), IsNoText BIT, PageNumberList XML, LanguageSelected xml null ) BEGIN TRANSACTION INSERT INTO @SelectedFiles (FileId,CustodianId,MediaId,ProcessingFlag,ProcessingId,IsNoText,PageNumberList,LanguageSelected) SELECT TOP (@BatchSize) GT.FileId, FI.CustodianId, FI.MediaId, GT.[Status], @ProcessingId, FI.IsNoText, GT.PageNumberList, CASE WHEN LanguageSelected IS NULL THEN (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) ELSE LanguageSelected END AS LanguageSelected FROM tbl_jb_ocrGeneratedTiff GT WITH (UPDLOCK, READPAST), tbl_ex_fileInfo FI WITH(nolock) WHERE GT.[Status] IN ( 0, -1 ) AND GT.JobId = @batchid AND GT.FileId = FI.FileId UPDATE GT WITH(ROWLOCK) SET [Status] = 1, ProcessingInstanceID = @ProcessingId, UpdatedDate = Getdate() FROM tbl_jb_ocrGeneratedTiff GT, @SelectedFiles F WHERE GT.FileId = F.FileId COMMIT SELECT S.*, M.FileLocation FROM @SelectedFiles S, tbl_ex_Media M WITH(NOLOCK) WHERE M.MediaId = S.MediaId END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_jb_GetRedactedFilesForOCR] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_jb_GetRedactedFilesForOCR'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_jb_GetRedactedFilesForOCR]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* ============================================= -- Author: Sudhir -- Create date: December 16, 2013 -- Description: Get redacted files for ocr -- ChangeLog: 1. Bhuwan, 10 Dec 2015, #8209, Changes to load annotations from table tbl_ann_AnnotationDetail -- ChangeLog: 2. RajanM, July 11 2017, Get LanguageSelected for nuance ocr. -- =============================================*/ CREATE PROCEDURE [dbo].[sp_jb_GetRedactedFilesForOCR] @JobId bigint, @BatchSize int, @ProcessingInstanceId varchar(250), @RedactionSet xml AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @SelectedFile TABLE (FileId bigint primary key, LanguageSelected xml) BEGIN TRANSACTION INSERT INTO @SelectedFile (FileId, LanguageSelected) SELECT TOP (@BatchSize) rd.FileID, CASE WHEN LanguageSelected IS NULL THEN (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) ELSE LanguageSelected END AS LanguageSelected FROM tbl_jb_ocrRedactedTiff rd WITH(UPDLOCK,READPAST) WHERE JobId = @JobId AND [Status] IN (0,-1) -- mark them to be processed UPDATE tbl_jb_ocrRedactedTiff WITH(ROWLOCK) SET ProcessingInstanceId = @ProcessingInstanceId, [Status] = 1, [UpdatedDate] = GETDATE() FROM tbl_jb_ocrRedactedTiff t1, @SelectedFile t2 WHERE t1.FileId = t2.FileID AND t1.JobId=@JobId --COMMIT COMMIT -- Only return rows that have annotations SELECT CustodianId, MediaId, data.FileId, PageNumber, ImagePath, RedactedImagePath, LastUpdatedDate, tmp.LanguageSelected, FileLocation FROM ( SELECT m.CustodianId, m.MediaId, ti.FileId, ti.PageNumber, ti.ImagePath, ti.RedactedImagePath, ann.LastUpdatedDate, m.FileLocation FROM tbl_tiff_images ti WITH(NOLOCK) INNER JOIN (SELECT FileID,PageNumber, MAX(LastUpdatedDate) AS LastUpdatedDate FROM tbl_ann_AnnotationDetail WITH(NOLOCK) GROUP BY FileId, PageNumber) ann ON ti.fileid=ann.fileid and ti.pagenumber=ann.pagenumber INNER JOIN tbl_ex_media m WITH(NOLOCK) ON m.mediaid=ti.mediaid INNER JOIN @SelectedFile t ON t.FileID = ti.FileID LEFT JOIN tbl_ft_ImageFullText ft WITH(NOLOCK) ON ti.FileId = ft.fileid AND ti.PageNumber = ft.PageNumber WHERE ft.FileID IS NULL OR ti.IsRedactionSuccessful IS NULL OR ti.IsRedactionSuccessful=0 OR ft.RedactedOCRErrored =1 OR ft.RedactedOCRFulltextFileLocation IS NULL OR ISNULL(ti.IsSlipSheet,0)=0 OR (ft.RedactedOCRFulltextFileLocation IS NOT NULL AND CONVERT(VARCHAR(19), ti.RedactedImageDate , 120) <> CONVERT(VARCHAR(19), ann.LastUpdatedDate, 120)) --ORDER By ti.FileId, ti.pagenumber -- Get Pages which were not OCRed using the provided redaction set previously UNION select m.CustodianId, m.MediaId, x.FileId, x.PageNumber, ti.ImagePath, ti.RedactedImagePath, LastUpdatedDate, m.FileLocation from ( select Distinct F.fileid, F.PageNumber, LastUpdatedDate, CAST(ISNULL(RedactionSet, (SELECT CAST('''' + (SELECT(SELECT CAST( N'''' + CAST(OBJECTID AS NVARCHAR(MAX)) + N'''' AS XML) FROM TBL_ANN_REDACTIONOBJECTS T1 WITH(NOLOCK) order by ObjectId FOR XML PATH (''''))) + '''' AS XML)) ) as nvarchar(max)) RedactionSet from tbl_ft_ImageFullText F with(Nolock) inner join (select FileId, PageNumber, MAX(LastUpdatedDate) AS LastUpdatedDate from tbl_ann_annotationDetail with(nolock) Group by FileId, PageNumber) A on a.FileId = f.FileID and a.PageNumber = F.PageNumber ) x INNER JOIN tbl_tiff_images ti WITH(NOLOCK) On ti.FileId = x.FileID and ti.Pagenumber = x.PageNumber INNER Join tbl_ex_Media m with(nolock) on m.MediaId = ti.MediaId INNER JOIN @SelectedFile s ON s.FileId = x.FileID where CAST(@RedactionSet as nvarchar(max)) <> cast(RedactionSet as nvarchar(max)) ) data, @SelectedFile tmp where tmp.FileId = data.FileId ORDER By data.FileId, data.Pagenumber END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ocr_GetFilesForOCR] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ocr_GetFilesForOCR'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ocr_GetFilesForOCR]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ========================================================================================== -- AUTHOR: Sajjan Dahal -- CREATE DATE: 2011-12-08 -- DESCRIPTION: 20. Need to add "readpast" lock hint in OCR job request query to avoid locking -- ChangeLog: 1 RajanM, July 03 2015, Get MinimumCharacter count if the file is subjected for partial ocr. -- ChangeLog: 2 RajanM, July 11 2017, Get LanguageSelected for nuance ocr. -- ========================================================================================== CREATE PROCEDURE [dbo].[sp_ocr_GetFilesForOCR] ( @BatchSize int, @BatchId int, @ProcessingId nvarchar(250), @ProjectId Bigint ) AS BEGIN SET NOCOUNT ON DECLARE @SelectedFiles TABLE (FILEID bigint PRIMARY KEY, UNCFILE nvarchar(2000), PROCESSINGFLAG int, PROCESSINGID varchar(250) , LASTPROCESSEDPAGE int, PAGEERRORS nvarchar(4000), FULLTEXTLOCATION nvarchar(2000), CustodianId bigint, MediaId bigint, MinCharForPDF bigint, LanguageSelected xml null) BEGIN TRANSACTION DECLARE @MinCharForPDF int SELECT @MinCharForPDF = Isnull(OCRTextMinimumThreshold,0) FROM tbl_pj_projectsetup WITH(nolock) WHERE ProjectId = @Projectid INSERT INTO @SelectedFiles (FILEID,UNCFILE,PROCESSINGFLAG,PROCESSINGID,LASTPROCESSEDPAGE,PAGEERRORS,FULLTEXTLOCATION,CustodianId,MediaId, MinCharForPDF, LanguageSelected) SELECT TOP (@BatchSize) o.FILEID, fi.Accesspath , PROCESSINGFLAG , @ProcessingId , LASTPROCESSEDPAGE , PAGEERRORS , FULLTEXTLOCATION,o.CustodianId,o.MediaId, CASE WHEN (@MinCharForPDF > 0 AND FI.extension = ''pdf'' AND EXISTS (SELECT TOP 1 1 FROM tbl_ocr_partial_text OPT WITH(nolock) WHERE fileid = FI.fileid AND (charactercount < @MinCharForPDF) )) THEN @MinCharForPDF ELSE 0 END AS MinCharForPDF, CASE WHEN LanguageSelected IS NULL THEN (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) ELSE LanguageSelected END AS LanguageSelected FROM TBL_OCR_SHADOW o WITH (UPDLOCK,READPAST), tbl_ex_fileInfo fi with(nolock) WHERE PROCESSINGFLAG IN (0,-1) AND BATCHID=@batchid AND o.fileid=fi.fileid UPDATE TBL_OCR_SHADOW WITH(ROWLOCK) SET ProcessingFlag=1, PROCESSINGID=@ProcessingId ,UpdatedDate=getdate() WHERE FileID IN (SELECT FileId FROM @SelectedFiles) COMMIT SELECT * FROM @SelectedFiles END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_JB_QueueDataForOCR] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_QueueDataForOCR'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_QueueDataForOCR]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Deepak Shrestha -- Create date: 19 June 2015 -- Description: queue for OCR -- ChangeLog -- 1. RajanM, Aug 10 2015, Modified query to queue pdf files for partial OCR. -- 2. Nisha, Nov 27 2015, Track PDF ocr which matched threshhold criteria. -- 3. RajanM, Dec 06 2015, Split query into query for job entry and queuing file in ocr job. -- 4. RajanM, July 11 2017, set LanguageSelected while queuing. -- 5. RajanM, March 14 2018, Added fulltextlocation according to media location. -- ============================================= CREATE PROCEDURE [dbo].[SP_JB_QueueDataForOCR] @UserId BIGINT, @ProjectJobGroupId BIGINT, @RemarksDate NVARCHAR(400), @TempTableName NVARCHAR(MAX), @WhereClause NVARCHAR(MAX), @OtherSettings XML, @QueuingType NVARCHAR(25), @FileIdList NVARCHAR(MAX), @IsLaunch BIT, @IsRelaunch BIT AS BEGIN SET XACT_ABORT ON BEGIN TRANSACTION DECLARE @OcrRemarks NVARCHAR(800) SET @OcrRemarks=''OCR - ''+@RemarksDate DECLARE @ProjectId BIGINT DECLARE @ProjectLocation NVARCHAR(2000) SELECT @ProjectId=ProjectId, @ProjectLocation=FileServerLocation FROM tbl_pj_ProjectSetup WHERE DatabaseInstanceName=DB_NAME() DECLARE @Query NVARCHAR(MAX) IF OBJECT_ID(''tempdb..#TMP'') IS NOT NULL DROP TABLE #TMP CREATE TABLE #TMP (FileId BIGINT) SET @Query= ''INSERT INTO #TMP SELECT T.FILEID FROM TBL_Ex_FILEINFO FI WITH(NOLOCK) , ''+@TempTableName +'' T {TableLaunchRelaunch} WHERE ''+@WhereClause +'' AND T.FILEID=FI.FILEID AND (fi.isnotext = 1 OR EXISTS(SELECT TOP 1 1 FROM TBL_JB_OCRGENERATEDTIFF WITH(NOLOCK) WHERE FILEID=FI.FILEID) OR EXISTS (SELECT FFL.FileID FROM TBL_PJ_PROJECTSETUP P WITH(NOLOCK), tbl_ex_FulltextFileLocation FFL WITH(NOLOCK), tbl_ex_EdocMeta EDM WITH(NOLOCK) WHERE P.PROJECTID= ''+CAST(@ProjectId as nvarchar(200))+'' AND EDm.FileID = FFl.FileID AND FFL.FILEID = FI.FILEID AND FI.EXTENSION=''''PDF'''' AND (FFL.FulltextFilesize-2)/((CASE WHEN EDM.[PageCount] IS NULL OR EDM.[PageCount] = 0THEN 1 ELSE EDM.[PageCount] END)*2) <= OCRTextThresholdValue ) OR EXISTS (SELECT TOP 1 1 from tbl_pj_projectsetup PS WITH(NOLOCK), tbl_OCR_partial_Text opt WITH(NOLOCK) WHERE PS.projectId = ''+CAST(@ProjectId as nvarchar(200))+'' AND OPT.FileId = FI.FileId AND OPT.CharacterCount < PS.OCRTextMinimumThreshold) {WhereLaunchRelaunch} ) {WhereSelectedType} '' IF(@QueuingType!=''ALL'') BEGIN DECLARE @Where NVARCHAR(MAX) IF(@QueuingType=''SELECTED'') SET @Where='' AND T.FILEID IN (''+@FileIdList+'') '' ELSE SET @Where='' AND T.FILEID NOT IN (''+@FileIdList+'') '' SET @Query=REPLACE(@Query ,''{WhereSelectedType}'',@Where) END ELSE BEGIN SET @Query=REPLACE(@Query ,''{WhereSelectedType}'','' '') END IF(@IsRelaunch=1) BEGIN SET @Query=REPLACE(@Query ,''{TableLaunchRelaunch}'','' LEFT JOIN TBL_OCR_SHADOW SH WITH(NOLOCK) ON T.FILEID=SH.FILEID '') SET @Query=REPLACE(@Query ,''{WhereLaunchRelaunch}'','' OR SH.FILEID IS NOT NULL'') END ELSE BEGIN SET @Query=REPLACE(@Query ,''{TableLaunchRelaunch}'','' '') SET @Query=REPLACE(@Query ,''{WhereLaunchRelaunch}'','' '') END EXEC SP_EXECUTESQL @Query IF @IsRelaunch=1 AND EXISTS(SELECT TOP 1 1 FROM tbl_ocr_Shadow S WITH(NOLOCK), #TMP T WHERE S.FileId=T.FileId) BEGIN DECLARE @jobid int, @status int; DECLARE job_cursor CURSOR FOR SELECT DISTINCT jobid, status FROM tbl_ds_ProjectJobInfo P WITH(NOLOCK), tbl_ocr_Shadow S WITH(NOLOCK), #TMP T WHERE P.JobId = S.BatchId AND S.FileId=T.FileId OPEN job_cursor; FETCH NEXT FROM job_cursor INTO @jobid, @status; WHILE @@FETCH_STATUS = 0 BEGIN IF @status in (2,-2) BEGIN DECLARE @xmlStoreOld xml,@xmlStoreNew xml; SET @xmlStoreOld = (SELECT * FROM tbl_ds_ProjectJobInfo WHERE JobId=@jobid FOR XML AUTO, ELEMENTS) update tbl_ds_ProjectJobInfo set Status=0,IsQueuingCompleted=0,StartedOn=Null,CompletedOn=NULL,BulkProcessingStatus=0,QueuedOn=GETDATE() where JobId=@jobid UPDATE PJ WITH(ROWLOCK) SET OtherSettings.modify(''delete /OtherSettings/PostProcessingStatus/Operation'') FROM tbl_ds_ProjectJobInfo PJ where JobId =@jobid AND OtherSettings IS NOT NULL AND --log 2 EXISTS(SELECT TOP 1 OtherSettings.exist(''/OtherSettings/PostProcessingStatus/Operation'') FROM tbl_ds_ProjectJobInfo where JobId=PJ.JOBID) --LogId #1 SET @xmlStoreNew = (SELECT * FROM tbl_ds_ProjectJobInfo WHERE JobId=@jobid FOR XML AUTO, ELEMENTS) INSERT INTO [tbl_lg_AuditLog] VALUES(''VenioFPR-Desktop'',''Requeue Job (OCR)'',''UPDATE'',''Requeued ocr job id:''+CONVERT(NVARCHAR(max),@jobid) ,CONVERT(NVARCHAR(max),@xmlStoreOld),CONVERT(NVARCHAR(max),@xmlStoreNew),'''',@UserId,getdate() ) END ELSE BEGIN update tbl_ds_ProjectJobInfo set Status=0,IsQueuingCompleted=0,StartedOn=Null,CompletedOn=NULL,BulkProcessingStatus=0 where JobId=@jobid END FETCH NEXT FROM job_cursor INTO @jobid, @status; END CLOSE job_cursor; DEALLOCATE job_cursor; UPDATE J SET Status=0,Priority=DATEDIFF(SS, ''1/1/1970'', GETDATE()) FROM tbl_ds_jobinfo J WITH(ROWLOCK), tbl_ocr_Shadow S WITH(NOLOCK), #TMP T WHERE J.JobId= S.BatchId AND S.FileId=T.FileId AND J.ProjectId=@ProjectId UPDATE F SET ISINDEXED=0,ISNOTEXT=1 FROM tbl_ex_FileInfo F WITH(ROWLOCK), #TMP T WHERE F.FileId=T.FileId DELETE FROM F FROM TBL_EX_FULLTEXTFILELOCATION F WITH(NOLOCK), #TMP T WHERE F.FileId=T.FileId DELETE FROM I FROM TBL_EX_INDEXSTATUSLOG I WITH(NOLOCK), #TMP T WHERE I.FileId=T.FileId UPDATE S SET PROCESSINGFLAG=0, PROCESSINGID='''',LASTPROCESSEDPAGE=NULL,ERRORTYPE= NULL,PAGEERRORS=NULL ,UPDATEDDATE=GETDATE(),AttemptFailed=0,createddate=GETDATE() FROM tbl_ocr_Shadow S WITH(ROWLOCK), #TMP T WHERE S.FileId=T.FileId UPDATE P set IsQueuingCompleted=1 FROM tbl_ds_ProjectJobInfo P WITH(ROWLOCK), tbl_ocr_Shadow S WITH(NOLOCK), #TMP T where P.JobId =S.BatchId AND S.FileId=T.FileId END IF @IsLaunch=1 AND EXISTS(SELECT TOP 1 1 FROM tbl_ocr_Shadow S WITH(NOLOCK) RIGHT JOIN #TMP T ON S.FileId=T.FileId WHERE S.FileId IS NULL) BEGIN DECLARE @HasPrefetchRequiredFile BIT =0, @HasPrefetchedFile BIT =0 IF EXISTS(SELECT TOP 1 1 FROM tbl_ex_FileInfo F WITH(NOLOCK), #TMP T WHERE T.FileId=F.FileId AND CHARINDEX(''|'',F.AccessPath)>0) SET @HasPrefetchRequiredFile=1 IF EXISTS (SELECT TOP 1 1 FROM tbl_ex_FileInfo F WITH(NOLOCK), #TMP T WHERE T.FileId=F.FileId AND CHARINDEX(''|'',F.AccessPath)=0 AND NOT EXISTS(SELECT TOP 1 1 FROM tbl_ocr_Shadow S WHERE S.FileId=T.FileId)) SET @HasPrefetchedFile=1 DECLARE @JobInfoQuery nvarchar(max) SET @JobInfoQuery ='' INSERT INTO [dbo].[tbl_ds_ProjectJobInfo] ([Name] ,[Status] ,[IsQueuingCompleted] ,[QueuedOn] ,[StartedOn] ,[CompletedOn] ,[QueuedBy] ,[BulkProcessingInstanceId] ,[BulkProcessingStatus] ,[OtherSettings] ,[DisplayRemarks]) VALUES (''''OCR'''',0,0,getdate(),NULL,NULL,''+CAST(@UserId AS NVARCHAR(400))+'',Null,0,@OtherSettings,''''''+@OcrRemarks+'''''') SELECT @JobId = scope_identity() INSERT INTO [dbo].[tbl_ds_JobInfo] ([ProjectId] ,[JobId] ,[Name] ,[Status] ,[Priority] ,[DisplayRemarks]) VALUES(''+CAST(@ProjectId AS NVARCHAR(400))+'', @JobId, ''''OCR'''', 0,DATEDIFF(SS, ''''1/1/1970'''', GETDATE()), ''''''+@OcrRemarks+'''''') {JobDependency Update} '' SET @Query ='' INSERT INTO tbl_ocr_shadow (CustodianId, MediaId,BatchId,FileID,ProcessingFlag, ProcessingId, LastProcessedPage, ErrorType, PageErrors, FullTextLocation,CreatedDate,UpdatedDate,AttemptFailed,HasThresholdMet,OcrSource,LanguageSelected) SELECT fi.CustodianId, fi.MediaId, @jobid, fi.FileId, 0, null, null, null, null, M.FileLocation +N''''\FullTextFiles\''+CAST(@ProjectId AS NVARCHAR(400))+N''\'''' + CAST(fi.CustodianId as nvarchar(max)) + N''''\'''' + CAST(fi.MediaId as nvarchar(max))+N''''\''''+ dbo.fn_ep_GetExportDocId(N'''''''',2,N''''0'''',(fi.FileId%100))+N''''\''''+dbo.fn_ep_GetExportDocId(N'''''''',13,N''''0'''',fi.FileId) + N''''.txt'''', getdate(), null, 0, CASE WHEN fi.FileId IN (SELECT FFL.FileID FROM TBL_PJ_PROJECTSETUP P WITH(NOLOCK), tbl_ex_FulltextFileLocation FFL WITH(NOLOCK), tbl_ex_EdocMeta EDM WITH(NOLOCK), TBL_EX_FILEINFO fi WITH(NOLOCK) WHERE P.PROJECTID= @ProjectID AND EDm.FileID = FFl.FileID AND FFL.FILEID = FI.FILEID AND FI.EXTENSION=''''PDF'''' AND (FFL.FulltextFilesize-2)/((CASE WHEN EDM.[PageCount] IS NULL OR EDM.[PageCount] = 0THEN 1 ELSE EDM.[PageCount] END)*2) <= P.OCRTextThresholdValue ) OR EXISTS (SELECT TOP 1 1 from tbl_pj_projectsetup PS WITH(NOLOCK), tbl_OCR_partial_Text opt WITH(nolock),TBL_EX_FILEINFO fi WITH(NOLOCK) WHERE PS.projectId = 1 AND OPT.FileId = FI.FileId AND OPT.CharacterCount < PS.OCRTextMinimumThreshold) THEN 1 ELSE 0 END , ''''OCRED'''', (select [langId] as "@LanguageId", LangName as "@LanguageName", [Enable] as "@Enable" from Tbl_Ocr_Language where enable = 1 for xml PATH(''''language''''), root(''''languages'''')) as LanguageSelected FROM TBL_EX_FILEINFO fi INNER JOIN tbl_ex_media M ON M.mediaid = FI.mediaid INNER JOIN #TMP TMP ON FI.FILEID=TMP.FILEID LEFT JOIN TBL_OCR_SHADOW SH WITH(NOLOCK) ON TMP.FILEID=SH.FILEID WHERE {prefetchQry} (fi.IsCorrupted = 0 AND fi.IsPasswordprotected = 0 AND fi.IsSystem = 0 AND fi.isDeNIST = 0 AND fi.IsZeroByte = 0) AND SH.FILEID IS NULL INSERT INTO tbl_jb_SkippedJobFiles (JobType,JobId,FileID,CreatedDate,Remarks) SELECT ''''OCR'''' ,@JobId ,fi.FileId ,getdate() ,CASE WHEN isDeNIST = 1 THEN ''''DeNIST'''' WHEN IsSystem = 1 THEN ''''System'''' WHEN IsPasswordprotected = 1 THEN ''''PasswordProtected'''' WHEN IsCorrupted = 1 THEN ''''Corrupted'''' WHEN IsZeroByte = 1 THEN ''''ZeroByte'''' ELSE ''''Unknown'''' END AS Remarks FROM TBL_EX_FILEINFO fi INNER JOIN #TMP TMP ON FI.FILEID=TMP.FILEID LEFT JOIN tbl_jb_SkippedJobFiles S WITH(NOLOCK) ON S.FILEID=TMP.FILEID AND JOBTYPE =''''OCR'''' WHERE {prefetchQry} NOT (fi.IsCorrupted = 0 AND fi.IsPasswordprotected = 0 AND fi.IsSystem = 0 AND fi.isDeNIST = 0 AND fi.IsZeroByte = 0) AND S.FILEID IS NULL UPDATE TBL_ds_projectjobinfo set IsQueuingCompleted=1 WHERE JOBID=@JobId '' DECLARE @QueryPrefetch NVARCHAR(MAX) IF( @HasPrefetchRequiredFile =1) BEGIN DECLARE @NativeRemarks NVARCHAR(800) SET @NativeRemarks = ''Native Pre-fetch - '' + @RemarksDate DECLARE @PrefetchNewJob BIGINT DECLARE @IsNewJobCreatedNewJob BIGINT EXEC SP_jb_PrepareDataForPrefetchHTMLConversion @TempTableName,@UserId,''Native Pre-fetch'','''',@NativeRemarks,true,-1,true,@IsNewJobCreatedNewJob OUTPUT,@PrefetchNewJob OUTPUT,NULL IF @PrefetchNewJob >0 UPDATE tbl_ds_ProjectJobInfo SET OtherSettings=CAST('''' AS XML) WHERE JobId=@PrefetchNewJob AND Name=''Native Pre-fetch'' DECLARE @OCRJobId BIGINT SET @JobInfoQuery=REPLACE(@JobInfoQuery,''{JobDependency Update}'',''INSERT INTO tbl_ds_JobDependency (ProjectId,JobId,DependOnJobId) VALUES (@ProjectId,@JobId,@PrefetchNewJob)'') SET @QueryPrefetch=REPLACE(@Query,''{prefetchQry}'','' CHARINDEX(''''|'''',fi.AccessPath)>0 AND'') EXEC SP_EXECUTESQL @JobInfoQuery, N''@JobId BIGINT OUTPUT, @PrefetchNewJob BIGINT, @OtherSettings XML'', @jobid = @OCRJobId OUTPUT, @PrefetchNewJob = @PrefetchNewJob, @OtherSettings = @OtherSettings EXEC SP_EXECUTESQL @Query, N''@JobId bigint, @OtherSettings XML'', @OCRJobId , @OtherSettings if(@ProjectJobGroupId IS NULL OR @ProjectJobGroupId<1) BEGIN SET @ProjectJobGroupId=@OCRJobId END UPDATE tbl_ds_ProjectJobInfo SET @ProjectJobGroupId=@ProjectJobGroupId WHERE JobId IN (@OCRJobId,@PrefetchNewJob) END IF(@HasPrefetchedFile=1) BEGIN SET @JobInfoQuery=REPLACE(@JobInfoQuery,''{JobDependency Update}'','' '') SET @Query=REPLACE(@Query,''{prefetchQry}'','' '') EXEC SP_EXECUTESQL @JobInfoQuery, N''@JobId BIGINT OUTPUT, @OtherSettings XML'', @jobid = @OCRJobId OUTPUT, @OtherSettings = @OtherSettings EXEC SP_EXECUTESQL @Query, N''@JobId bigint, @OtherSettings XML, @ProjectID bigint'', @OCRJobId , @OtherSettings, @ProjectId UPDATE tbl_ds_ProjectJobInfo SET @ProjectJobGroupId=@ProjectJobGroupId WHERE JobId =@OCRJobId END END COMMIT END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_JB_OCRRedactedTiff] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_OCRRedactedTiff'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_OCRRedactedTiff]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Deepak Shrestha -- Create date: 16 dec 2013 -- Description: Queue file for ocr job of Redacted tiff files -- ChangeLog 1. , <24 Dec 2013> : -- ChangeLog 2. , <24 Dec 2013> : -- ChangeLog 3. , <25 Dec 2013> : -- ChangeLog 4. , <2 Apr 2014> : -- ChangeLog 5. Bhuwan, 10 Dec 2015, #8209, Changes to load annotations fileid from table tbl_ann_AnnotationDetail -- ChangeLog 6. Deepak Shrestha, 3 feb 2016, #9029, added relaunch. If relaunch remove file from old job and then queue in new jobid -- ChangeLog 8. RajanM, July 11 2017, set LanguageSelected while queuing. -- ChangeLog 9. Sudhir, Nov 6 2019, OCRGeneratedTiff status should not be completed to queue files for redacted tiff ocr -- ============================================= CREATE PROCEDURE [dbo].[SP_JB_OCRRedactedTiff] @tempTableName NVARCHAR(500), @addWhereClause NVARCHAR(MAX), @UserId BIGINT, @OtherSettngs XML, @Remarks NVARCHAR(MAX), @ProjectId BIGINT, @ExistsOCRofTiff BIT, @ProjectJobGroupId BIGINT, @OCRRedactedTiffJobId BIGINT OUTPUT, @Islaunch bit=1, @IsRelaunch bit=0, @IsQueuedByRedactionChange bit = 0 AS BEGIN DECLARE @TableForOCROFTiffExits nvarchar(max) DECLARE @WhereClauseForOCROFTiffExits nvarchar(max) set @TableForOCROFTiffExits ='''' set @WhereClauseForOCROFTiffExits='''' IF @ExistsOCRofTiff=1 BEGIN set @TableForOCROFTiffExits =''TBL_JB_OCRGeneratedTiff OG WITH(NOLOCK),'' set @WhereClauseForOCROFTiffExits='' AND OG.FILEID=FI.FILEID '' --AND OG.Status=2'' END DECLARE @Query nvarchAr(max) INSERT INTO [dbo].[tbl_ds_ProjectJobInfo] ([Name] ,[Status] ,[IsQueuingCompleted] ,[QueuedOn] ,[StartedOn] ,[CompletedOn] ,[QueuedBy] ,[BulkProcessingInstanceId] ,[BulkProcessingStatus] ,[OtherSettings] ,[DisplayRemarks], ProjectJobGroupId ) VALUES (''OCR Redacted Tiff'',0,0,getdate(),NULL,NULL,@UserId,Null,0,@OtherSettngs,@Remarks,@ProjectJobGroupId) SELECT @OCRRedactedTiffJobId= scope_identity() --logid 6 IF @ExistsOCRofTiff=1 BEGIN CREATE TABLE #RelaunchFileList ( JobId BigInt, FileId BigInt, JobStatus Int ) IF( @IsRelaunch=1) BEGIN SET @Query=''INSERT INTO #RelaunchFileList ([JobId] ,[fileId] ,[JobStatus]) SELECT DISTINCT ORT.JobId, fi.FileId, ORT.Status FROM TBL_EX_FILEINFO fi WITH(NOLOCK), ''+@tempTableName+'' TMP, TBL_JB_OCRGeneratedTiff OG WITH(NOLOCK), (SELECT DISTINCT FILEID FROM tbl_ann_AnnotationDetail A WITH(NOLOCK)) AN LEFT JOIN TBL_JB_OCRRedactedTiff ORT WITH(NOLOCK) ON ORT.FILEID = AN.FILEID WHERE FI.FILEID=AN.FILEID AND TMP.FILEID=FI.FILEID AND ORT.FILEID IS NOT NULL AND OG.FILEID=FI.FILEID ''+@addWhereClause EXEC sp_executesql @Query END ELSE IF(@ExistsOCRofTiff=1) BEGIN --LOG #4 SET @Query=''INSERT INTO #RelaunchFileList ([JobId] ,[fileId] ,[JobStatus]) SELECT DISTINCT ''+cast (@OCRRedactedTiffJobId as nvarchar(500))+'', fi.FileId, ORT.STATUS FROM TBL_EX_FILEINFO fi WITH(NOLOCK), (select DISTINCT AF.FileId from tbl_ann_AnnotationDetail AF WITH(NOLOCK), Tbl_tiff_Images I WITH(NOLOCK) WHERE AF.FileId = I.FileId AND AF.PageNumber = I.Pagenumber AND CONVERT(VARCHAR(19), (SELECT ISNULL(MAX(LastUpdatedDate),0) FROM tbl_ann_AnnotationDetail WITH(NOLOCK) WHERE Fileid = I.FileId), 120) <> CONVERT(VARCHAR(19), (SELECT ISNULL(MAX(RedactedImageDate),0) FROM tbl_tiff_images WITH(NOLOCK) WHERE Fileid = I.FileId), 120) AND --ChangeLog #4 I.redactedimagepath IS NOT NULL) A, tbl_jb_OCRRedactedTiff ORT WITH(NOLOCK), ''+@TableForOCROFTiffExits+'' ''+@tempTableName+'' TMP WHERE A.FILEID=FI.FILEID AND ORT.FILEID=A.FILEID AND ORT.STATUS IN (2,-2) ''+@WhereClauseForOCROFTiffExits+'' ''+@addWhereClause exec sp_executesql @Query END UPDATE FT WITH(ROWLOCK) SET RedactedOCRFulltextFileLocation = NULL, RedactedOCRRedactedDate = NULL, RedactedOCRErrored = NULL, RedactedOCRErrorType = NULL, RedactedTiffOCRFulltextSize = NULL FROM tbl_ft_imagefulltext FT INNER JOIN #relaunchfilelist RT ON FT.fileid = RT.fileid --Update fileinfo table UPDATE FI WITH(ROWLOCK) SET IsNoText=1 FROM #RelaunchFileList RF LEFT JOIN tbl_ft_FullTextMaster FM WITH(NOLOCK) ON RF.FileId = FM.FileId, tbl_ex_FileInfo FI WHERE ISNULL(FM.DefaultPreference, (SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY Priority ASC)) = ''REDACTED_OCR'' AND FI.FILEID=RF.FILEID --Update IndexStatus Log DELETE FROM IG FROM #RelaunchFileList RF LEFT JOIN tbl_ft_FullTextMaster FM WITH(NOLOCK) ON RF.FileId = FM.FileId, tbl_ex_IndexStatusLog IG WHERE ISNULL(FM.DefaultPreference,(SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY Priority ASC)) = ''REDACTED_OCR'' AND RF.FileId = IG.FileId --Requeue Redaction OCR Job DELETE FROM OGT FROM Tbl_jb_ocrRedactedTiff OGT WITH(NOLOCK), #RelaunchFileList RF WHERE OGT.FileId = RF.FileId END DECLARE @LanguageSelected XML SELECT @LanguageSelected = (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) IF(@Islaunch=1) BEGIN SET @Query=''INSERT INTO tbl_jb_OCRRedactedTiff ( [JobId] ,[fileId] ,[Status] ,[processingInstanceID] ,[CreatedDate] ,[UpdatedDate] ,[RetryCount] ,[LanguageSelected] ) SELECT ''+cast (@OCRRedactedTiffJobId as nvarchar(500))+'', fi.FileId, 0, null, getdate(), null, 0, @LanguageSelected FROM TBL_EX_FILEINFO fi WITH(NOLOCK), ''+@tempTableName+'' TMP, ''+@TableForOCROFTiffExits+'' (SELECT DISTINCT FILEID FROM tbl_ann_AnnotationDetail A WITH(NOLOCK)) AN LEFT JOIN TBL_JB_OCRRedactedTiff ORT WITH(NOLOCK) ON ORT.FILEID = AN.FILEID WHERE FI.FILEID=AN.FILEID AND TMP.FILEID=FI.FILEID AND ORT.FILEID IS NULL ''+@WhereClauseForOCROFTiffExits+'' ''+@addWhereClause exec sp_executesql @Query,N''@LanguageSelected XML'', @LanguageSelected=@LanguageSelected END ELSE IF(@ExistsOCRofTiff=1 AND @IsRelaunch=1) BEGIN SET @Query=''INSERT INTO tbl_jb_OCRRedactedTiff ( [JobId] ,[fileId] ,[Status] ,[processingInstanceID] ,[CreatedDate] ,[UpdatedDate] ,[RetryCount] ,[LanguageSelected] ) SELECT ''+cast (@OCRRedactedTiffJobId as nvarchar(500))+'', FileId, 0, null, getdate(), null, 0, @LanguageSelected FROM #RelaunchFileList '' exec sp_executesql @Query,N''@LanguageSelected XML'', @LanguageSelected=@LanguageSelected END UPDATE TBL_DS_PROJECTJOBINFO SET [IsQueuingCompleted]=1 WHERE JOBID=@OCRRedactedTiffJobId DECLARE @JobPriority BIGINT SELECT @JobPriority =[Priority] FROM tbl_ds_jobinfo WHERE jobid=@ProjectJobGroupId and projectid=@ProjectId IF(@JobPriority IS NULL) BEGIN SET @JobPriority = (SELECT OS.JobPriority.value(''(JobPriority)[1]'', ''BIGINT'') FROM @OtherSettngs.nodes(''/OtherSettings'') AS OS(JobPriority)) IF(@JobPriority IS NULL) BEGIN SET @JobPriority = DATEDIFF(SS, ''1/1/1970'', GETDATE()) END END INSERT INTO [dbo].[tbl_ds_JobInfo]( [ProjectId] ,[JobId] ,[Name] ,[Status] ,[Priority] ,[DisplayRemarks] ,[IsRealTimeJob]) VALUES(@ProjectId,@OCRRedactedTiffJobId,''OCR Redacted Tiff'',0,@JobPriority,@Remarks,@IsQueuedByRedactionChange) --if @ExistsOCRofTiff is false dependency job is created. IF @ExistsOCRofTiff=0 BEGIN DECLARE @DependentJobId BIGINT DECLARE @DependentJobIds Nvarchar(max) DECLARE Job_cursor CURSOR FOR SELECT distinct ogt.jobid FROM dbo.Tbl_jb_ocrGeneratedTiff OGT WITH(NOLOCK), tbl_jb_OCRRedactedTiff ORT WITH(NOLOCK) WHERE OGT.fileid =ORT.fileid AND ORT.JOBID=@OCRRedactedTiffJobId OPEN Job_cursor FETCH NEXT FROM Job_cursor INTO @DependentJobId WHILE @@FETCH_STATUS = 0 BEGIN SET @DependentJobIds = CAST(@DependentJobId AS Nvarchar) + '','' INSERT INTO [tbl_ds_JobDependency]([ProjectId],[JobId],[DependOnJobId]) VALUES(@ProjectId,@OCRRedactedTiffJobId,@DependentJobId) FETCH NEXT FROM Job_cursor INTO @DependentJobId; END CLOSE Job_cursor; DEALLOCATE Job_cursor; --In case of Null DependentJobIds By RajanM Jan 6 2014 IF(@DependentJobIds is not null AND len(@DependentJobIds) > 0) SET @DependentJobIds = @Remarks+''(Depends on JobId: ''+substring(@DependentJobIds,1,len(@DependentJobIds)-1)+'')'' ELSE SET @DependentJobIds = @Remarks UPDATE TBL_DS_PROJECTJOBINFO SET DisplayRemarks = @DependentJobIds WHERE JOBID=@OCRRedactedTiffJobId UPDATE TBL_DS_JOBINFO SET DisplayRemarks = @DependentJobIds WHERE JOBID=@OCRRedactedTiffJobId and projectid= @ProjectId END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_JB_RelaunchOCRRedactedTiff] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_RelaunchOCRRedactedTiff'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_RelaunchOCRRedactedTiff]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: RajanM -- Create date: 13 March 2014 -- Description: Re-queue file for ocr job of redacted files -- ChangeLog 1. , <14 March 2014> : -- ChangeLog 2. , <4 April 2014> : -- Modified by:Deepak Shrestha --Modifed date:25 JUNE 2014 --Modification : log 3 - ADDING XACT_ABORT ON -- ChangeLog 4. , <30 Oct 2014> : -- ChangeLog 5. , : -- ============================================= CREATE PROCEDURE [dbo].[SP_JB_RelaunchOCRRedactedTiff] @tempTableName NVARCHAR(500), @addWhereClause NVARCHAR(MAX), @UserId bigint, @ProjectId bigint, @ProjectJobGroupId bigint, @JobId BigInt OUTPUT --LogId #2 AS BEGIN SET XACT_ABORT ON --LOG 3 DECLARE @Query nvarchAr(max) SET @JobId = -1 CREATE TABLE #RelaunchFileList ( JobId BigInt, FileId BigInt, JobStatus Int ) SET @Query=''INSERT INTO #RelaunchFileList ([JobId] ,[fileId] ,[JobStatus]) SELECT ORT.JobId, fi.FileId, ORT.Status FROM TBL_EX_FILEINFO fi WITH(NOLOCK), ''+@tempTableName+'' TMP, TBL_JB_OCRGeneratedTiff OG WITH(NOLOCK), (SELECT DISTINCT FILEID FROM tbl_ann_AnnotationDetail A WITH(NOLOCK)) AN LEFT JOIN TBL_JB_OCRRedactedTiff ORT WITH(NOLOCK) ON ORT.FILEID = AN.FILEID WHERE FI.FILEID=AN.FILEID AND TMP.FILEID=FI.FILEID AND ORT.FILEID IS NOT NULL AND OG.FILEID=FI.FILEID AND OG.Status IN (2,-2) --For completed and completed with error jobs ''+@addWhereClause EXEC sp_executesql @Query --Update ProjectJobInfo status table for all the jobs DECLARE @status int; DECLARE job_cursor CURSOR FOR SELECT jobid,Status FROM tbl_ds_ProjectJobInfo PJ WITH(NOLOCK) WHERE PJ.JobId IN (SELECT DISTINCT JobId FROM #RelaunchFileList) order by PJ.JobId --LogId #2 OPEN job_cursor; FETCH NEXT FROM job_cursor INTO @jobid, @status; WHILE @@FETCH_STATUS = 0 BEGIN IF @status in (2,-2) BEGIN DECLARE @xmlStoreOld xml,@xmlStoreNew xml; SET @xmlStoreOld = (SELECT * FROM tbl_ds_ProjectJobInfo WITH(NOLOCK) WHERE JobId=@jobid FOR XML AUTO, ELEMENTS) UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET Status=0,IsQueuingCompleted=0,StartedOn=Null,CompletedOn=NULL,BulkProcessingStatus=0,QueuedOn=GETDATE(),PostProcessingStatus=NULL where JobId=@jobid SET @xmlStoreNew = (SELECT * FROM tbl_ds_ProjectJobInfo WITH(NOLOCK) WHERE JobId=@jobid FOR XML AUTO, ELEMENTS) INSERT INTO [tbl_lg_AuditLog] VALUES(''VenioFPR-Desktop'',''Requeue Job (OCR Redacted Tiff)'',''UPDATE'',''Requeued ocr job id:''+CONVERT(NVARCHAR(max),@jobid) ,CONVERT(NVARCHAR(max),@xmlStoreOld),CONVERT(NVARCHAR(max),@xmlStoreNew),'''',@UserId,getdate() ) END ELSE BEGIN UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET Status=0,IsQueuingCompleted=0,StartedOn=Null,CompletedOn=NULL,BulkProcessingStatus=0,PostProcessingStatus=NULL WHERE JobId=@jobid END FETCH NEXT FROM job_cursor INTO @jobid, @status; END CLOSE job_cursor; DEALLOCATE job_cursor; DECLARE @LanguageSelected XML SELECT @LanguageSelected = (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) --Requeue Redaction OCR Job UPDATE OGT WITH(ROWLOCK) SET [Status]= 0, ProcessingInstanceID = '''', UpdatedDate=GETDATE(), CreatedDate=GETDATE(), RetryCount=0, LanguageSelected = @LanguageSelected FROM Tbl_jb_ocrRedactedTiff OGT INNER JOIN #RelaunchFileList RF ON OGT.FileId = RF.FileId UPDATE FT WITH(ROWLOCK) SET RedactedOCRFulltextFileLocation = NULL, RedactedOCRRedactedDate = NULL, RedactedOCRErrored = NULL, RedactedOCRErrorType = NULL, RedactedTiffOCRFulltextSize = NULL FROM tbl_ft_imagefulltext FT INNER JOIN #relaunchfilelist RT ON FT.fileid = RT.fileid --Update fileinfo table UPDATE FI WITH(ROWLOCK) SET IsNoText=1 FROM #RelaunchFileList RF LEFT JOIN tbl_ft_FullTextMaster FM WITH(NOLOCK) ON RF.FileId = FM.FileId, tbl_ex_FileInfo FI WHERE ISNULL(FM.DefaultPreference, (SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY Priority ASC)) = ''REDACTED_OCR'' AND FI.FILEID=RF.FILEID --Update IndexStatus Log DELETE FROM IG FROM #RelaunchFileList RF LEFT JOIN tbl_ft_FullTextMaster FM WITH(NOLOCK) ON RF.FileId = FM.FileId, tbl_ex_IndexStatusLog IG WHERE ISNULL(FM.DefaultPreference,(SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY Priority ASC)) = ''REDACTED_OCR'' AND RF.FileId = IG.FileId --Update Status and Priority for all the jobs DECLARE @JobPriority BIGINT IF(@ProjectJobGroupId > 0 AND @ProjectJobGroupId IS NOT NULL) BEGIN --LogId #1 UPDATE J WITH(ROWLOCK) SET J.ProjectJobGroupId = @ProjectJobGroupId FROM tbl_ds_ProjectJobInfo J, #RelaunchFileList T WHERE T.JOBID=J.JOBID SELECT @JobPriority =[Priority] FROM tbl_ds_jobinfo WITH(NOLOCK) WHERE jobid=@ProjectJobGroupId and projectid=@ProjectId END IF(@JobPriority IS NULL) SET @JobPriority = DATEDIFF(SS, ''1/1/1970'', GETDATE()) UPDATE tbl_ds_JobInfo WITH(ROWLOCK) SET [Status] = 0, Priority = @JobPriority WHERE JobId in (SELECT DISTINCT JobId FROM #RelaunchFileList) and projectId = @ProjectId --After updating status for all files, updating Queueing Status in ProjectJobInfo table UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET IsQueuingCompleted = 1 where JobId in (SELECT DISTINCT JobId FROM #RelaunchFileList) IF(@JobId = -1) BEGIN --LogId #4 SET @Query=''SELECT @JobId = ISNULL(MAX(ORT.JobId),-1) FROM TBL_EX_FILEINFO fi WITH(NOLOCK) INNER JOIN ''+@tempTableName+'' TMP ON FI.FileId = TMP.FileId INNER JOIN TBL_JB_OCRGeneratedTiff OG WITH(NOLOCK) ON OG.FileId = FI.FileId INNER JOIN (SELECT DISTINCT FILEID FROM tbl_ann_AnnotationDetail A WITH(NOLOCK)) AN ON FI.FileId = AN.FileId LEFT JOIN TBL_JB_OCRRedactedTiff ORT WITH(NOLOCK) ON ORT.FILEID = AN.FILEID WHERE ORT.FILEID IS NOT NULL ''+@addWhereClause EXEC sp_executesql @Query, N''@JobId BIGINT OUTPUT'', @JobId = @JobId OUTPUT END DROP TABLE #RelaunchFileList END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_JB_OCRTiffFiles] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_OCRTiffFiles'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_OCRTiffFiles]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Deepak Shrestha -- Create date: 16 dec 2013 -- Description: Queue file for ocr job of tiff files -- ChangeLog 1. , <23 December 2013> : -- ChangeLog 2. , <6th March 2014> : -- ChangeLog 3. , <24 April 2014> : -- Modified by:Deepak Shrestha -- Modifed date:25 JUNE 2014 -- Modification : log 4 - ADDING XACT_ABORT ON -- ChangeLog 5. , <13 Jan 2016> : -- ChangeLog 6. , <30 Sep 2016> Queue processing error pdf document for tiffing. -- ChangeLog 7. , , set LanguageSelected while queuing. -- ============================================= CREATE PROCEDURE [dbo].[SP_JB_OCRTiffFiles] @tempTableName NVARCHAR(500), @addWhereClause NVARCHAR(MAX), @UserId bigint, @OtherSettings xml, @Remarks NVARCHAR(MAX), @ProjectId bigint, @ProjectJobGroupId bigint, @QueueFileWithOutTiffAlso bit, --Log 2 @QueueFilesWithOutTiffnNativeFiles bit, --Log 2 @OCRTiffJobId bigint output, @IsQueuedByRedactionChange bit = 0 AS BEGIN SET XACT_ABORT ON --LOG 4 DECLARE @Query nvarchAr(max) DECLARE @FilterNonPrefetchedFiles nvarchAr(max) --Log 2 IF(@QueueFilesWithOutTiffnNativeFiles = 0) SET @FilterNonPrefetchedFiles = '' AND CHARINDEX(''''|'''',AccessPath)=0 '' ELSE SET @FilterNonPrefetchedFiles = '' AND CHARINDEX(''''|'''',AccessPath)>0 '' INSERT INTO [dbo].[tbl_ds_ProjectJobInfo] ([Name] ,[Status] ,[IsQueuingCompleted] ,[QueuedOn] ,[StartedOn] ,[CompletedOn] ,[QueuedBy] ,[BulkProcessingInstanceId] ,[BulkProcessingStatus] ,[OtherSettings] ,[DisplayRemarks] ,[ProjectJobGroupId]) VALUES (''OCR Generated Tiff'',0,0,getdate(),NULL,NULL,@UserId,Null,0,@OtherSettings,@Remarks,@ProjectJobGroupId) SELECT @OCRTiffJobId= scope_identity() IF (@ProjectJobGroupId IS NULL) UPDATE TBL_DS_PROJECTJOBINFO WITH(ROWLOCK) SET [ProjectJobGroupId]=@OCRTiffJobId WHERE JOBID=@OCRTiffJobId DECLARE @LanguageSelected XML SELECT @LanguageSelected = (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) IF(@QueueFileWithOutTiffAlso = 0) BEGIN SET @Query=''INSERT INTO Tbl_jb_ocrGeneratedTiff ([JobId] ,[fileId] ,[Status] ,[processingInstanceID] ,[CreatedDate] ,[UpdatedDate] ,[RetryCount] ,[LanguageSelected]) SELECT ''+cast (@OCRTiffJobId as nvarchar(500))+'', FI.FileId, 0, NULL, GETDATE(), NULL, 0, @LanguageSelected FROM Tbl_ex_FileInfo FI WITH(NOLOCK), '' + @tempTableName + '' TMP, Tbl_Tiff_Shadow SH WITH(NOLOCK) LEFT JOIN Tbl_jb_ocrGeneratedTiff OGT WITH (NOLOCK) ON OGT.FILEID=SH.FILEID WHERE FI.FileId=SH.FileId AND FI.FILEID=TMP.FILEID AND SH.ProcessIngFlag=2 AND SH.ErrorType IS NULL AND OGT.FILEID IS NULL AND EXISTS (SELECT TOP(1) 1 FROM Tbl_tiff_Images WITH(NOLOCK) WHERE fileId = TMP.fileId AND ISNULL(IsSlipSheet,0) <> 1) --LogId #3 '' + @addWhereClause END ELSE BEGIN --#Log 2 SET @Query=''INSERT INTO Tbl_jb_ocrGeneratedTiff ([JobId] ,[fileId] ,[Status] ,[processingInstanceID] ,[CreatedDate] ,[UpdatedDate] ,[RetryCount] ,[LanguageSelected]) SELECT ''+cast (@OCRTiffJobId as nvarchar(500))+'', FI.FileId, 0, NULL, GETDATE(), NULL, 0, @LanguageSelected FROM Tbl_ex_FileInfo FI WITH(ROWLOCK) INNER JOIN '' + @tempTableName + '' TMP ON FI.FileId = TMP.FileId LEFT JOIN Tbl_Tiff_Shadow SH WITH(NOLOCK) ON TMP.FileId=SH.FileId LEFT JOIN Tbl_jb_ocrGeneratedTiff OGT WITH (NOLOCK) ON OGT.FILEID=SH.FILEID LEFT JOIN tbl_pj_filetypesdescription ftd WITH(nolock) ON FI.filetype = ftd.toolsdisplayname LEFT JOIN tbl_tiff_filetypeimagerpluginassociation imgft WITH(nolock) ON FTD.toolsvalueid = imgft.filetypeid LEFT JOIN tbl_tiff_extensionimagerpluginassociation imgext WITH(nolock) ON FI.extension = imgext.extension WHERE FI.isDeNIST = 0 AND FI.issystem = 0 AND FI.IsArchive = 0 AND FI.iscorrupted = 0 AND (fi.ispasswordprotected = 0 OR (Fi.ispasswordProtected = 1 AND FI.IspasswordDecrypted = 1)) AND (FI.isnonprocessed = 0 OR (FI.IsProcessingError = 1 AND FI.FileType IN (''''PDF'''',''''PDFA'''',''''PDFIMAGE'''',''''PDFMACBIN''''))) AND (FTD.filetypegroupid NOT IN (2,6) OR FTD.filetypegroupid IS NULL) AND OGT.FILEID IS NULL AND SH.FileId IS NOT NULL --Not queuing files which has only slipsheets AND NOT EXISTS (select TOP 1 1 from Tbl_tiff_Images WITH(nolock) WHERE FileId = FI.FileId group by FileId having sum(CAST(ISNULL(~isSlipSheet,0) AS INT))=0) AND ( imgft.imagerplugin IS NULL OR imgft.imagerplugin <> ''''DO NOT CONVERT'''') AND ( imgext.imagerplugin IS NULL OR imgext.imagerplugin <> ''''DO NOT CONVERT'''') '' + @addWhereClause + '' '' + @FilterNonPrefetchedFiles --Log 2 END EXEC sp_executesql @Query, N''@LanguageSelected XML'', @LanguageSelected=@LanguageSelected UPDATE TBL_DS_PROJECTJOBINFO WITH(ROWLOCK) SET [IsQueuingCompleted]=1 WHERE JOBID=@OCRTiffJobId DECLARE @JobPriority BIGINT SELECT @JobPriority =[Priority] FROM tbl_ds_jobinfo WITH(NOLOCK) WHERE jobid=@ProjectJobGroupId and projectid=@ProjectId IF(@JobPriority IS NULL) BEGIN SET @JobPriority = (SELECT OS.JobPriority.value(''(JobPriority)[1]'', ''BIGINT'') FROM @OtherSettings.nodes(''/OtherSettings'') AS OS(JobPriority)) IF(@JobPriority IS NULL) BEGIN SET @JobPriority = DATEDIFF(SS, ''1/1/1970'', GETDATE()) END END --Added Display Remarks By RajanM Jan 6 2014 INSERT INTO [dbo].[tbl_ds_JobInfo]( [ProjectId] ,[JobId] ,[Name] ,[Status] ,[Priority] ,[DisplayRemarks] ,[IsRealTimeJob]) VALUES(@ProjectId,@OCRTiffJobId,''OCR Generated Tiff'',0,@JobPriority,@Remarks,@IsQueuedByRedactionChange) --#Log 2 For Job Dependency IF(@QueueFileWithOutTiffAlso = 1) BEGIN DECLARE @DependentJobId BIGINT DECLARE @DependentJobIds Nvarchar(max) DECLARE Job_cursor CURSOR FOR SELECT distinct SH.BatchId FROM Tbl_jb_ocrGeneratedTiff OGT WITH(NOLOCK), tbl_tiff_shadow SH WITH(NOLOCK) WHERE OGT.fileid =SH.fileid AND OGT.JObId=@OCRTiffJobId OPEN Job_cursor FETCH NEXT FROM Job_cursor INTO @DependentJobId WHILE @@FETCH_STATUS = 0 BEGIN SET @DependentJobIds = CAST(@DependentJobId AS Nvarchar) + '','' INSERT INTO [tbl_ds_JobDependency]([ProjectId],[JobId],[DependOnJobId]) VALUES(@ProjectId,@OCRTiffJobId,@DependentJobId) FETCH NEXT FROM Job_cursor INTO @DependentJobId; END CLOSE Job_cursor; DEALLOCATE Job_cursor; --In case of Null DependentJobIds By RajanM Jan 6 2014 IF(@DependentJobIds is not null AND len(@DependentJobIds) > 0) SET @DependentJobIds = @Remarks+''(Depends on JobId: ''+substring(@DependentJobIds,1,len(@DependentJobIds)-1)+'')'' ELSE SET @DependentJobIds = @Remarks UPDATE TBL_DS_PROJECTJOBINFO WITH(ROWLOCK) SET DisplayRemarks = @DependentJobIds WHERE JOBID=@OCRTiffJobId UPDATE TBL_DS_JOBINFO WITH(ROWLOCK) SET DisplayRemarks = @DependentJobIds WHERE JOBID=@OCRTiffJobId and projectid= @ProjectId END END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_JB_RelaunchOCRTiffFiles] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_RelaunchOCRTiffFiles'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_RelaunchOCRTiffFiles]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'-- ============================================= -- Author: RajanM -- Create date: 12 March 2014 -- Description: Re-queue file for ocr job of tiff files -- ChangeLog 1. , <4 April 2014> : -- ChangeLog 2. , <24 April 2014> : -- Modified by:Deepak Shrestha --Modifed date:25 JUNE 2014 --Modification : log 3 - ADDING XACT_ABORT ON -- ChangeLog 4. , <30 Oct 2014> : -- ChangeLog 5. , <7 Oct 2015> : -- ChangeLog 6. , <5 Nov 2015> : -- ChangeLog 7. , : -- ChangeLog 8. , : -- ChangeLog 9. , : -- ============================================= CREATE PROCEDURE [dbo].[SP_JB_RelaunchOCRTiffFiles] @tempTableName NVARCHAR(500), @addWhereClause NVARCHAR(MAX), @UserId bigint, @ProjectId bigint, @ProjectJobGroupId bigint, @JobId bigint OUTPUT --LogId #1 AS BEGIN SET XACT_ABORT ON --LOG 3 DECLARE @Query nvarchAr(max) SET @JobId = -1 CREATE TABLE #RelaunchFileList ( JobId BigInt, FileId BigInt, JobStatus Int, PageNumberList Xml ) DECLARE @HASPAGENUMBERLISTCOLUMN BIT IF EXISTS(SELECT 1 FROM TempDB.INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = ''PageNumberList'' and TABLE_NAME = @tempTableName ) SELECT @HASPAGENUMBERLISTCOLUMN = CAST(1 AS BIT) ELSE SELECT @HASPAGENUMBERLISTCOLUMN = CAST(0 AS BIT) SET @Query=''INSERT INTO #RelaunchFileList ([JobId] ,[fileId] ,[JobStatus], [PageNumberList]) SELECT OGT.JobId, FI.FileId, OGT.Status {0} FROM Tbl_ex_FileInfo FI WITH(NOLOCK), '' + @tempTableName + '' TMP, Tbl_Tiff_Shadow SH WITH(NOLOCK) LEFT JOIN Tbl_jb_ocrGeneratedTiff OGT WITH (NOLOCK) ON OGT.FILEID=SH.FILEID WHERE FI.FileId=SH.FileId AND FI.FILEID=TMP.FILEID AND SH.ErrorType IS NULL AND OGT.FILEID IS NOT NULL AND OGT.Status IN (2,-2) --For completed and completed with error jobs AND EXISTS (SELECT TOP(1) 1 FROM Tbl_tiff_Images with(nolock) WHERE fileId = TMP.fileId AND ISNULL(IsSlipSheet,0) <> 1) --LogId #3 '' + @addWhereClause IF(@HASPAGENUMBERLISTCOLUMN = 1) SET @QUERY = REPLACE(@QUERY, ''{0}'', '', TMP.PAGENUMBERLIST'') ELSE SET @QUERY = REPLACE(@QUERY, ''{0}'', '','''''''''') EXEC sp_executesql @Query DECLARE @DependedJob TABLE (JobId BIGINT, DependedOnJobId BIGINT) INSERT INTO @DependedJob SELECT DISTINCT T.JobId, SH.BatchId FROM #RelaunchFileList T LEFT JOIN tbl_tiff_shadow SH WITH(NOLOCK) ON T.fileid =SH.fileid AND SH.Processingflag !=2 INSERT INTO [tbl_ds_JobDependency]([ProjectId],[JobId],[DependOnJobId]) SELECT @ProjectId, JobId,DependedOnJobId FROM @DependedJob WHERE DependedOnJobId IS NOT NULL --Update ProjectJobInfo status table for all the jobs DECLARE @status int; DECLARE job_cursor CURSOR FOR SELECT jobid,Status FROM tbl_ds_ProjectJobInfo PJ WITH(NOLOCK) WHERE PJ.JobId IN (SELECT DISTINCT JobId FROM @DependedJob) order by PJ.JobId --LogId #1 OPEN job_cursor; FETCH NEXT FROM job_cursor INTO @jobid, @status; WHILE @@FETCH_STATUS = 0 BEGIN UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET OtherSettings.modify(''delete /OtherSettings/IsCancelled'') where JobId=@jobid UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET OtherSettings.modify(''delete /OtherSettings/CancelledOn'') where JobId=@jobid IF @status in (2,-2) BEGIN DECLARE @xmlStoreOld xml,@xmlStoreNew xml; SET @xmlStoreOld = (SELECT * FROM tbl_ds_ProjectJobInfo WITH(NOLOCK) WHERE JobId=@jobid FOR XML AUTO, ELEMENTS) UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET Status=0,IsQueuingCompleted=0,StartedOn=Null,CompletedOn=NULL,BulkProcessingStatus=0,QueuedOn=GETDATE(),PostProcessingStatus=NULL where JobId=@jobid UPDATE PJ WITH(ROWLOCK) SET OtherSettings.modify(''delete /OtherSettings/PostProcessingStatus/Operation'') FROM tbl_ds_ProjectJobInfo PJ where JobId = @jobid AND OtherSettings IS NOT NULL AND EXISTS(SELECT TOP 1 OtherSettings.exist(''/OtherSettings/PostProcessingStatus/Operation'') FROM tbl_ds_ProjectJobInfo where JobId = PJ.JobId) SET @xmlStoreNew = (SELECT * FROM tbl_ds_ProjectJobInfo WITH(NOLOCK) WHERE JobId=@jobid FOR XML AUTO, ELEMENTS) INSERT INTO [tbl_lg_AuditLog] VALUES(''VenioFPR-Desktop'',''Requeue Job (OCR Generated Tiff)'',''UPDATE'',''Requeued ocr job id:''+CONVERT(NVARCHAR(max),@jobid) ,CONVERT(NVARCHAR(max),@xmlStoreOld),CONVERT(NVARCHAR(max),@xmlStoreNew),'''',@UserId,getdate() ) END ELSE BEGIN UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET Status=0,IsQueuingCompleted=0,StartedOn=Null,CompletedOn=NULL,BulkProcessingStatus=0,PostProcessingStatus=NULL WHERE JobId=@jobid END FETCH NEXT FROM job_cursor INTO @jobid, @status; END CLOSE job_cursor; DEALLOCATE job_cursor; DECLARE @LanguageSelected XML SELECT @LanguageSelected = (SELECT [langId] AS "@LanguageId", LangName AS "@LanguageName", [Enable] AS "@Enable" FROM Tbl_Ocr_Language WHERE enable = 1 FOR xml PATH(''language''), root(''languages'')) --Requeue TIFF OCR Job set @Query= ''UPDATE OGT WITH(ROWLOCK) SET [Status]= 0, ProcessingInstanceID = '''''''', UpdatedDate=GETDATE(), CreatedDate=GETDATE(), RetryCount=0, PageNumberList = {0}, LanguageSelected = @LanguageSelected FROM Tbl_jb_ocrGeneratedTiff OGT INNER JOIN #RelaunchFileList RF ON OGT.FileId = RF.FileId'' if(@HASPAGENUMBERLISTCOLUMN = 1) set @Query= REPLACE(@Query,''{0}'',''RF.PageNumberList'') else set @Query= REPLACE(@Query,''{0}'','''''''''''') EXECUTE sp_executesql @query, N''@LanguageSelected XML'', @LanguageSelected=@LanguageSelected --Update Tiff OCR fulltext UPDATE FT WITH(ROWLOCK) SET TiffOCRFulltextFileLocation = NULL, TiffOCRErrored = NULL, TiffOCRErrorType = NULL, GeneratedTiffOCRFulltextSize = NULL FROM tbl_ft_imagefulltext FT INNER JOIN #relaunchfilelist RT ON FT.fileid = RT.fileid --AND FT.PAGENUMBER IN (SELECT * FROM DBO.F_SPLIT(RT.PAGENUMBERLIST, '','')) AND FT.PageNumber IN (SELECT p.value (''.'', ''int'') from #RelaunchFileList cross apply PageNumberList.nodes(''/FileId/PageNumber'') t(p) where fileid = ft.FileID) --Update fileinfo table UPDATE FI WITH(ROWLOCK) SET IsNoText=1 FROM #RelaunchFileList RF LEFT JOIN tbl_ft_FullTextMaster FM WITH(NOLOCK) ON RF.FileId = FM.FileId, tbl_ex_FileInfo FI WHERE ISNULL(FM.DefaultPreference, (SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY Priority ASC)) = ''TIFF_OCR'' AND FI.FILEID=RF.FILEID --Update IndexStatus Log DELETE FROM IG FROM #RelaunchFileList RF LEFT JOIN tbl_ft_FullTextMaster FM WITH(NOLOCK) ON RF.FileId = FM.FileId, tbl_ex_IndexStatusLog IG WHERE ISNULL(FM.DefaultPreference,(SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY Priority ASC)) = ''REDACTED_OCR'' AND RF.FileId = IG.FileId --Update Status and Priority for all the jobs DECLARE @JobPriority BIGINT IF(@ProjectJobGroupId > 0 AND @ProjectJobGroupId IS NOT NULL) BEGIN UPDATE J WITH(ROWLOCK) SET J.ProjectJobGroupId = @ProjectJobGroupId FROM tbl_ds_ProjectJobInfo J, @DependedJob T WHERE T.JOBID=J.JOBID SELECT @JobPriority =[Priority] FROM tbl_ds_jobinfo WITH(NOLOCK) WHERE jobid=@ProjectJobGroupId and projectid=@ProjectId END IF(@JobPriority IS NULL) SET @JobPriority = DATEDIFF(SS, ''1/1/1970'', GETDATE()) UPDATE J WITH(ROWLOCK) SET J.DisplayRemarks = ''OCR Redacted Tiff - (Depends on JobId: ''+SUBSTRING(T.DependedJobCommaSeperated,0,LEN(T.DependedJobCommaSeperated)-1) +'')'' FROM tbl_ds_ProjectJobInfo J, (SELECT M.JobId, (SELECT DISTINCT CAST(DependedOnJobId AS nvarchar(MAX))+'','' FROM @DependedJob WHERE JobId=M.JobId FOR XML PATH ('''')) AS DependedJobCommaSeperated FROM @DependedJob M WHERE M.DependedOnJobId IS NOT NULL)T WHERE T.JOBID=J.JOBID UPDATE J WITH(ROWLOCK) SET J.[Status] = 0, J.Priority = @JobPriority, J.DisplayRemarks=P.DisplayRemarks FROM tbl_ds_JobInfo J, @DependedJob T, tbl_ds_ProjectJobInfo P WITH(NOLOCK) WHERE J.projectId = @ProjectId AND T.JOBID=J.JOBID AND J.JobId=P.JobId --After updating status for all files, updating Queueing Status in ProjectJobInfo table UPDATE PJ WITH(ROWLOCK) SET IsQueuingCompleted = 1 FROM tbl_ds_ProjectJobInfo PJ, @DependedJob T where PJ.JobId =T.JOBID IF(@JobId = -1) BEGIN --LogId #4 SET @Query=''SELECT @JobId = ISNULL(Max(ogt.jobid),-1) FROM tbl_ex_fileinfo FI WITH(nolock) INNER JOIN '' + @tempTableName + '' tmp --temp table mistakenly hard coded, RajanM, 13 Aug 2014 ON fi.fileid = tmp.fileid INNER JOIN tbl_tiff_shadow sh WITH(nolock) ON sh.fileid = tmp.fileid LEFT JOIN tbl_jb_ocrgeneratedtiff ogt WITH (nolock) ON ogt.fileid=sh.fileid WHERE ogt.fileid IS NOT NULL '' + @addWhereClause EXEC sp_executesql @Query,N''@JobId BIGINT OUTPUT'', @JobId = @JobId OUTPUT END DROP TABLE #RelaunchFileList END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_rep_OcrSucessReport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_rep_OcrSucessReport'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rep_OcrSucessReport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE PROCEDURE [dbo].[sp_rep_OcrSucessReport] ( @MediaList NVARCHAR(MAX) ) AS BEGIN DECLARE @DefaultLanguageSetting XML SET @DefaultLanguageSetting = CAST('''' AS XML) IF OBJECT_ID(''tempdb..#tmpMediaList'') IS NOT NULL DROP TABLE #tmpMediaList CREATE TABLE #tmpMediaList(MediaId int) DECLARE @query NVARCHAR(MAX) = ''INSERT INTO #tmpMediaList SELECT [MediaId] FROM tbl_ex_Media WHERE [MediaId] in ('' + @MediaList + '')'' EXECUTE sp_executesql @query SELECT t1.FileId , t1.[FileName] , t1.Extension , t2.FullTextLocation , t2.LastProcessedPage AS [PageCount] , t2.TotalPageCount , ISNULL(t2.LanguageSelected, @DefaultLanguageSetting) AS LanguageSelected FROM tbl_ex_FileInfo t1 WITH(NOLOCK) , tbl_ocr_shadow t2 WITH(NOLOCK) , #tmpMediaList ml WHERE t1.FileId = t2.FileId AND t1.MediaId = ml.MediaId AND t2.ProcessingFlag = 2 AND ErrorType IS NULL AND LEN(isnull(PageErrors, '''')) = 0 END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ig_ValidateChildCount] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ig_ValidateChildCount'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ig_ValidateChildCount]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*======================================== --Created By: Bishal --Created Date: 2012-04-10 --Modified Date: 2012-07-05 --Modified Date: 2012-12-28 --Modified Cause: added filter for pwd protected archives that doesn''t require password for reading but requires password for extracting --Description: Finds files with missing child and inserts these records to Warning Log. --ChangeLog; -- 1. Bhuwan, 24 Dec, 2014 , alter table variable to temp table -- 2. RajanM, 20 Jan, 2016 , Filtered system and denist files while validating child count. 3. RajanM, 13 Feb, 2019 , FIxed the issue of removing all the warning logs while reprocessing in same media --========================================*/ CREATE PROCEDURE [dbo].[sp_ig_ValidateChildCount] @MediaId BIGINT, @FilesReprocessedTempTable nvarchar(max)= null AS BEGIN DECLARE @QUERY nvarchar(max) SET @QUERY = ''DELETE FROM T1 FROM tbl_ig_WarningLog T1 {SelectedFileInTempTable} WHERE T1.mediaid = @MediaId AND T1.[TYPE] = ''''CHILD_MISSING'''''' IF(@FilesReprocessedTempTable is null) BEGIN SET @QUERY = REPLACE(@QUERY,''{SelectedFileInTempTable}'','' '') END else BEGIN SET @QUERY = REPLACE(@QUERY,''{SelectedFileInTempTable}'','' INNER JOIN ''+@FilesReprocessedTempTable+'' tmp ON T1.FileId =tmp.FileId '') END EXEC sp_executesql @QUERY, N''@MediaId BIGINT'', @MediaId = @MediaId -- ChangeLog #1 Bhuwan IF OBJECT_ID(''tempdb..#child_count'') IS NOT NULL DROP TABLE #child_count CREATE TABLE #child_count (parentfileid bigint primary key, CHILDCOUNT bigint) INSERT INTO #child_count (parentfileid,CHILDCOUNT) SELECT A.ParentFileID, count(*) ChildCount FROM ( SELECT ParentFileID FROM tbl_ex_FileInfo WHERE MediaId = @MediaId UNION ALL SELECT ParentFileId from tbl_ig_EmbeddedFilteredFiles where MediaId = @MediaId UNION All SELECT FileInfoParentFileId ParentFileID FROM tbl_ex_FilteredDocs WHERE MediaId = @MediaId UNION ALL SELECT DF.ParentFileId FROM Tbl_Del_DeletedFile DF Inner Join Tbl_Del_DeletedMedia DM On DM.BatchId = DF.BatchId Where DF.ParentFileID > 0 ) A GROUP BY A.ParentFileID IF OBJECT_ID(''tempdb..#MissingChilds'') IS NOT NULL DROP TABLE #MissingChilds CREATE TABLE #MissingChilds (FileId BIGINT PRIMARY KEY, MissingCount BIGINT) set @QUERY=''INSERT INTO #MissingChilds ( FileId , MissingCount ) SELECT T1.FileID, Isnull(( T1.ChildCount - Isnull(T2.ChildCount, 0) ), 0) AS MissingCount FROM tbl_ex_FileInfo T1 LEFT JOIN #child_count T2 ON t1.fileid = t2.ParentFileID {SelectedFileInTempTable} WHERE t1.ChildCount > Isnull(T2.ChildCount, 0) AND T1.MediaId=@MediaId AND (T1.IsPasswordprotected=0 OR (T1.IsPasswordprotected = 1 AND IsPasswordDecrypted = 1)) AND T1.isDeNIST = 0 AND T1.IsSystem = 0'' IF(@FilesReprocessedTempTable is null) SET @QUERY=REPLACE(@QUERY,''{SelectedFileInTempTable}'','' '') ELSE SET @QUERY=REPLACE(@QUERY,''{SelectedFileInTempTable}'','' INNER JOIN ''+@FilesReprocessedTempTable+'' tmp ON T1.FileId =tmp.FileId '') EXEC sp_executesql @QUERY, N''@MediaId BIGINT'', @MediaId=@MediaId INSERT INTO tbl_ig_WarningLog ([CustodianId], [MediaId], [FileId], [Type], [Message], [LoggedDate]) SELECT T1.CustodianId, T1.MediaId, T1.FileID, ''CHILD_MISSING'', ''Item missing for '' + T1.OriginalFilePath + ''.Missing count: '' + CAST(T2.MissingCount AS NVARCHAR) AS Missing , getdate() FROM tbl_ex_FileInfo T1 , #MissingChilds T2 WHERE T1.FileId = t2.FileId UPDATE T1 SET T1.IsNonProcessed = 1 , T1.IsProcessingError = 1 FROM tbl_ex_FileInfo T1 , #MissingChilds T2 WHERE T1.FileId = t2.FileId END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ig_PopulateFamilyCount] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ig_PopulateFamilyCount'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ig_PopulateFamilyCount]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' --- ============================================= -- Author: Sudeep K.C. -- Create date: Dec 11, 2009 -- Description: Populate tbl_ig_familycount table -- Last Modified By : -- Last Modified On : -- ============================================= CREATE PROCEDURE [dbo].[sp_ig_PopulateFamilyCount] @MediaId bigint, @FilesReprocessedTempTable nvarchar(max)= null AS BEGIN SET NOCOUNT ON; DECLARE @QUERY nvarchar(max) -- DROP ALL ENTRIES IF ALREADY EXISTS IF(@FilesReprocessedTempTable is null) BEGIN IF EXISTS ( SELECT TOP(1) groupid FROM tbl_ig_familycount WITH(NOLOCK) WHERE MediaId = @MediaId ) BEGIN DELETE FROM tbl_ig_familycount WHERE MediaId = @MediaId END END ELSE BEGIN SET @QUERY =''DELETE FROM F FROM tbl_ig_familycount F, ''+@FilesReprocessedTempTable+'' T WHERE T.GroupId =F.GroupId'' print @QUERY EXEC SP_EXECUTESQL @QUERY END -- INSERT INTO TABLE set @QUERY=''INSERT INTO tbl_ig_familycount SELECT FI.CustodianId, FI.MediaId, FI.GroupId, COUNT(*) FROM tbl_ex_fileinfo FI WITH (NOLOCK) {SelectedFileInTempTable} WHERE MediaId = @MediaId AND IsArchive != 1 GROUP BY FI.GroupId, MediaId, CustodianId'' IF(@FilesReprocessedTempTable is null) SET @QUERY=REPLACE(@QUERY,''{SelectedFileInTempTable}'','' '') ELSE SET @QUERY=REPLACE(@QUERY,''{SelectedFileInTempTable}'','' INNER JOIN (select distinct groupid from ''+@FilesReprocessedTempTable+'' ) tmp ON FI.GroupId =tmp.GroupId'') print @QUERY EXEC sp_executesql @QUERY, N''@MediaId BIGINT'', @MediaId=@MediaId END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_JB_GetExportStatus] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_GetExportStatus'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_GetExportStatus]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: -- Create date: <23 December 2013> -- Description: -- Change Log : -- 1. RajanM/Sudeep (24 Dec 2013) - Added new fields/renamed to integrated to desktop app. -- 2. RajanM (7 Jan 2014) - Fixed Bug 663(Redmine) job status for export: Completed % is 0.00% where status is completed -- 3. Bhuwan (25 Feb 2014) - Removed status parameter and always return whole export data. Should be filtered from front End. -- 4. Gaurav (03 Jun 2014) - Fetched the number of documents to be exported from Total file Count column -- 5. Sudhir (03 Jul 2014) - In percent calculation, when totalfilecount is null, its value set to 1. This will prevent divide by zero exception -- 6. Sudhir (28 Aug 2014) - Total and Not Started count is set to ''N/A'' instead of 0 when TotalFileCount value is NULL -- 7. Jasmeen (05 Nov 2014) Redmine #3391 - fetch exportedFromVoD value -- 8. Bhuwan (01 Sept 2016) Redmine #12490 - handle divide by 0 error -- 9. Sudhir 20th Jan 2017,Redmine #14529 - Summary is shown for fulltext, native and image separately. -- 10. Jasmeen (06-MAR-2017) Redmine #15267,15302, searchtemptable passed -- 11. Baglung (14 Jul 2017) #17004 Add IsReExport in select list -- ============================================= CREATE PROCEDURE [dbo].[SP_JB_GetExportStatus] @ExportId bigint, @SearchTempTable nvarchar(max)=null AS BEGIN DECLARE @query nvarchar(max) Declare @IsExportSplitedByVolume bit select @IsExportSplitedByVolume=ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/SplitVolume/SplitVolumes)[1]'', ''bit''),cast(''0'' as bit)) FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID = @ExportId IF OBJECT_ID(''tempdb..#ExportsTable'') IS NOT NULL DROP TABLE #ExportsTable CREATE TABLE #ExportsTable (ExportId BIGINT PRIMARY KEY, ExportFulltext BIT, ExportNative BIT, ExportTiff BIT, ExportPDF BIT,ImageType NVARCHAR(100),IsExportedFilesDeleted BIT, IsPreservedImagesDeleted BIT) IF(@ExportId<>-1) BEGIN IF(@IsExportSplitedByVolume =1) BEGIN INSERT INTO #ExportsTable (ExportId,ExportFulltext,ExportNative,ExportTiff,ExportPDF,IsExportedFilesDeleted, IsPreservedImagesDeleted) SELECT V.ExportId ,e.ExportFulltext,e.ExportNative,E.ExportTiff, CASE WHEN E.ExportImageType=''NonSearchablePDF'' OR E.ExportImageType=''SearchablePDF'' THEN 1 ELSE 0 END ,E.IsExportedFilesDeleted, E.IsPreservedImagesDeleted FROM Tbl_Ep_ExportVolumes V with(nolock) , (SELECT ExportID, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/FullText)[1]'', ''bit''),cast(''0'' as bit)) AS ExportFulltext, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/Native)[1]'', ''bit''),cast(''0'' as bit)) AS ExportNative, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/ExportTiff)[1]'', ''bit''),cast(''0'' as bit)) AS ExportTiff, ExportOptions.value(''(/ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ImageExportOption)[1]'', ''nvarchar(100)'') AS ExportImageType ,IsExportedFilesDeleted, IsPreservedImagesDeleted FROM tbl_ep_Exports WITH (NOLOCK)) E WHERE ExportGroupId = @ExportId AND V.ExportId=E.ExportID END ELSE BEGIN INSERT INTO #ExportsTable (ExportId,ExportFulltext,ExportNative,ExportTiff,ExportPDF,IsExportedFilesDeleted, IsPreservedImagesDeleted) SELECT ExportId ,e.ExportFulltext,e.ExportNative,E.ExportTiff, CASE WHEN E.ExportImageType=''NonSearchablePDF'' OR E.ExportImageType=''SearchablePDF'' THEN 1 ELSE 0 END ,E.IsExportedFilesDeleted, E.IsPreservedImagesDeleted FROM (SELECT ExportID, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/FullText)[1]'', ''bit''),cast(''0'' as bit)) AS ExportFulltext, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/Native)[1]'', ''bit''),cast(''0'' as bit)) AS ExportNative, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/ExportTiff)[1]'', ''bit''),cast(''0'' as bit)) AS ExportTiff, ExportOptions.value(''(/ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ImageExportOption)[1]'', ''nvarchar(100)'') AS ExportImageType ,IsExportedFilesDeleted, IsPreservedImagesDeleted FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID=@ExportId)E END END ELSE INSERT INTO #ExportsTable (ExportId,ExportFulltext,ExportNative,ExportTiff,ExportPDF,IsExportedFilesDeleted, IsPreservedImagesDeleted) SELECT ExportId ,e.ExportFulltext,e.ExportNative,E.ExportTiff, CASE WHEN E.ExportImageType=''NonSearchablePDF'' OR E.ExportImageType=''SearchablePDF'' THEN 1 ELSE 0 END ,E.IsExportedFilesDeleted, E.IsPreservedImagesDeleted FROM (SELECT ExportID, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/FullText)[1]'', ''bit''),cast(''0'' as bit)) AS ExportFulltext, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/Native)[1]'', ''bit''),cast(''0'' as bit)) AS ExportNative, ISNULL(ExportOptions.value(''(/ExportTemplateSettings/FileOption/ExportTiff)[1]'', ''bit''),cast(''0'' as bit)) AS ExportTiff, ExportOptions.value(''(/ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ImageExportOption)[1]'', ''nvarchar(100)'') AS ExportImageType ,IsExportedFilesDeleted, IsPreservedImagesDeleted FROM tbl_ep_Exports WITH (NOLOCK))E SET @query='' select ES.*, e.ExportID as JobId, e.ExportName, e.CompressedExportedFilesFlag IsZipped, ISNULL(ea.ManualArchiveLocation,ea.OriginalArchiveLocation) CompressedFileLocation, e.ExportStartDate, e.ExportEndDate, e.ExportCreatedDate ExportCreatedOn, (SELECT FullName FROM tbl_PJ_userinfo WITH (NOLOCK)WHERE userid = ExportedBy) AS [ExportedBy], (SELECT FullName FROM tbl_PJ_userinfo WITH (NOLOCK)WHERE userid = ExportCreatedBy) AS [CreatedBy], e.ProcessingMachineName, CASE WHEN ExportStartDate IS NULL THEN ''''Not Started'''' WHEN ExportEndDate IS NULL THEN ''''In Progress'''' ELSE ''''Completed'''' END AS [STATUS], CASE WHEN ExportedFromVoD = 1 THEN ''''Yes'''' Else ''''No'''' END AS [ExportedFromVoD], CASE WHEN IsReExport = 1 THEN ''''Yes'''' Else ''''No'''' END AS [IsReExport] ,e.IsExportedFilesDeleted, e.IsPreservedImagesDeleted FROM ( SELECT E.ExportId, tmp.ExportFulltext, tmp.ExportNative, tmp.ExportTiff, case when ExportFulltext=1 then cast(ISNULL(SUM(CASE WHEN T1.Status =2 THEN 1 ELSE 0 END), 0) As nvarchar(20)) else ''''Fulltext not exported'''' End FulltextCompleted, case when ExportNative=1 then cast(ISNULL(SUM(CASE WHEN T2.Status =2 THEN 1 ELSE 0 END), 0) As nvarchar(20)) else ''''Native not exported'''' End NativeCompleted, COUNT(distinct p.FILE_ID_PK) TotalDocumentCount, case when ExportTiff=1 then cast(ISNULL(SUM(TP.ImagePageCount), 0) As nvarchar(20)) else ''''Image not exported'''' End TotalPageCount, case when ExportTiff=1 and ExportPdf =0 then cast(ISNULL(SUM(CASE WHEN T3.Status =2 THEN TP.ImagePageCount ELSE 0 END), 0)As nvarchar(20)) when ExportTiff=1 and ExportPdf =1 then cast(ISNULL(SUM(CASE WHEN T4.Status =2 THEN TP.ImagePageCount ELSE 0 END), 0)As nvarchar(20)) else ''''N/A'''' End ImageCompleted FROM tbl_ep_Exports E WITH(NOLOCK) INNER JOIN #ExportsTable tmp on E.ExportID = tmp.ExportId LEFT JOIN tbl_ep_ExportPrimaryTable P WITH(NOLOCK) ON P.ExportID = e.ExportID LEFT JOIN (select t1.ExportID,T1.File_id_pk ,COUNT(1)ImagePageCount from tbl_ep_ExportTiffPrimaryTable t1 WITH(NOLOCK) INNER JOIN #ExportsTable t2 ON t1.ExportID =t2.ExportId {SEARCH IMAGE FILETER} group by t1.ExportID,T1.File_Id_PK )TP ON P.ExportID=TP.ExportID AND P.FILE_ID_PK=TP.File_Id_PK Left Join Tbl_Ep_FulltextDetails T1 With(NoLock) On P.ExportId = T1.ExportId ANd P.File_Id_Pk = T1.FileId Left Join Tbl_Ep_NativeDetails T2 With(NoLock) On P.ExportId = T2.ExportId ANd P.File_Id_Pk = T2.FileId Left Join Tbl_Ep_TiffDetails T3 With(NoLock) On P.ExportId = T3.ExportId ANd P.File_Id_Pk = T3.FileId Left Join Tbl_Ep_PdfDetails T4 With(NoLock) On P.ExportId = T4.ExportId ANd P.File_Id_Pk = T4.FileId {SEARCH FILTER} {REEXPORT CONDITION} GROUP BY E.ExportID,ExportFulltext,ExportNative,ExportTiff,ExportPDF )ES INNER JOIN tbl_ep_exports e on es.ExportId=e.ExportId LEFT JOIN tbl_ep_exportArchiveInfo EA with(nolock) on ES.exportId=EA.ExportId ORDER BY ExportID DESC'' IF(@SearchTempTable IS NOT NULL AND @SearchTempTable != '''') BEGIN SET @query= REPLACE (@query,''{SEARCH IMAGE FILETER}'',''INNER JOIN ''+@SearchTempTable+'' tempTable ON tempTable.FileId=t1.File_Id_PK'') SET @query= REPLACE (@query,''{SEARCH FILTER}'',''INNER JOIN ''+@SearchTempTable+'' tempTable ON tempTable.Fileid=p.FILE_ID_PK'') SET @query= REPLACE (@query,''{REEXPORT CONDITION}'','' AND E.IsReExport=0 '') END ELSE BEGIN SET @query= REPLACE (@query,''{SEARCH IMAGE FILETER}'','''') SET @query= REPLACE (@query,''{SEARCH FILTER}'','''') SET @query= REPLACE (@query,''{REEXPORT CONDITION}'','''') END EXEC sp_executesql @query END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query -------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_TAGSPAMDOCUMENTS] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_TAGSPAMDOCUMENTS'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_TAGSPAMDOCUMENTS]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: SUNIL CHAUDHARY -- Create date: APRIL 5 2010 -- Description: GET SPAM FILES IDS -- ChangeLog: CL1 : Date: 19/06/2014 -- Description: Distinct term added while selecting fileids to insert into temptable -- Media Restriction Handled -- ============================================= CREATE PROCEDURE [dbo].[SP_TAGSPAMDOCUMENTS] @tagdoctype varchar(200), @p_medialist nvarchar(max), @p_tagid int, @p_TaggedOrUntaggedBy bigint, @p_status varchar(4000) output, @p_duplicatePropagationcount int output, @p_selectDocCount int output, @p_pcSetPropagationCount int output, @p_tagname nvarchar(200) output, @p_isExclusive bit, @p_emailthreadPropagationCount int output, @p_IncludePCset bit, --1 ALL PCSET, 0 Do not propagate @p_DuplicatePropagationOption int, --0 default (prop to all), 1 prop cust level, 2 do not prop @p_comment nvarchar(1000), @p_NddPropagationOption int, -- 0 (default) do not propagate, 1 propagate to selected scope, 2 propagate to all @p_NddPropagationCount int Output AS BEGIN DECLARE @v_query nvarchar(max) -- CREATE TEMP TABLE... CREATE TABLE #spamtagdoclist (fileid bigint primary key ,groupid bigint ,directhit bit) IF(@tagdoctype =''DOMAIN'') SET @v_query =''INSERT INTO #spamtagdoclist SELECT DISTINCT fi.FileId, fi.GroupId, 1 as DirectHit FROM ( SELECT DISTINCT fileid FROM ( SELECT DISTINCT emailaddressid FROM dbo.tbl_pj_spamdomain T1 WITH(NOLOCK), tbl_Ex_emailaddresslist T2 WITH(NOLOCK) WHERE T1.domainname = T2.domainname ) R1, tbl_EX_emailaddresses R2 WHERE R1.emailaddressid = R2.senderid ) hit, tbl_ex_fileinfo fi WITH(NOLOCK) WHERE (hit.FileId=fi.FileId OR hit.fileid =fi.originalgroupid) AND fi.IsParent=1 AND mediaid IN (''+@p_medialist+'')'' ELSE IF(@tagdoctype =''EMAIL_ADDRESS'') SET @v_query =''INSERT INTO #spamtagdoclist SELECT DISTINCT fi.FileId, fi.GroupId, 1 as DirectHit FROM ( SELECT DISTINCT fileid FROM ( SELECT DISTINCT emailaddressid FROM dbo.tbl_pj_spamemailaddress T1 WITH(NOLOCK), tbl_Ex_emailaddresslist T2 WITH(NOLOCK) WHERE T1.emailaddress = T2.emailaddress ) R1, tbl_EX_emailaddresses R2 WHERE R1.emailaddressid = R2.senderid ) hit, tbl_ex_fileinfo fi WITH(NOLOCK) WHERE (hit.FileId=fi.FileId OR hit.fileid =fi.originalgroupid) AND fi.IsParent=1 AND mediaid IN (''+@p_medialist+'')'' ELSE SET @v_query =''INSERT INTO #spamtagdoclist SELECT DISTINCT fi.FileId, fi.GroupId, 1 as DirectHit FROM ( SELECT DISTINCT fileid FROM ( SELECT DISTINCT emailaddressid AS [emailaddressid] FROM dbo.tbl_pj_spamemailaddress T1 WITH(NOLOCK), tbl_Ex_emailaddresslist T2 WITH(NOLOCK) WHERE T1.emailaddress = T2.emailaddress UNION SELECT DISTINCT emailaddressid AS [emailaddressid] FROM dbo.tbl_pj_spamdomain T3 WITH(NOLOCK), tbl_Ex_emailaddresslist T4 WITH(NOLOCK) WHERE T3.domainname = T4.domainname ) R1, tbl_EX_emailaddresses R2 WHERE R1.emailaddressid = R2.senderid ) hit, tbl_ex_fileinfo fi WITH(NOLOCK) WHERE (hit.FileId=fi.FileId OR hit.fileid =fi.originalgroupid) AND fi.IsParent=1 AND mediaid IN (''+@p_medialist+'')'' -- FILL TEMP TABLE... EXEC sp_executesql @v_query --Media Restriction Info DECLARE @IsDocRestricted bit=0; DECLARE @RestrictedList nvarchar(max)='''' SELECT @IsDocRestricted=ISNULL(GI.IsDocRestricted ,0) FROM tbl_pj_GroupInfo GI WITH (NOLOCK) INNER JOIN tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) ON GI.GroupId=GUA.GroupId WHERE GUA.USERID=@p_TaggedOrUntaggedBy If(@IsDocRestricted=1) select @RestrictedList = dbo.fn_sh_getprocessedmedialist(0,@p_TaggedOrUntaggedBy) EXEC [dbo].[SP_sh_TagDocuments] ''SPAM_TAG'', ''#spamtagdoclist'', -1, @tagdoctype, -1, @p_medialist, @p_tagid, @p_isExclusive, 0, 1, 0, NULL, NULL, @p_TaggedOrUntaggedBy, @p_tagname OUTPUT, @p_status OUTPUT, @p_duplicatePropagationcount OUTPUT, @p_selectDocCount OUTPUT, @p_pcSetPropagationCount OUTPUT, @p_emailthreadPropagationCount OUTPUT, 0, @p_comment, -1, @p_IncludePCset, @p_DuplicatePropagationOption, -1, null, null, ''media'', @p_medialist, @IsDocRestricted, --@p_IsRestrictedUserGroup @RestrictedList, --@p_RestrictedFoldersList null, -- cluster name null, -- unselected temp table null, -- not reviewed only 0, -- is reivew @p_NddPropagationOption, @p_NddPropagationCount OUTPUT DROP TABLE #spamtagdoclist END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_tg_ConflictResolution] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_tg_ConflictResolution'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_tg_ConflictResolution]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- =========================================================== -- Author: DIPESH -- Create date: 23 NOVEMBER 2011 -- Description: STORED PROCEDURE FOR CONFLICT RESOLUTION -- =========================================================== CREATE PROCEDURE [dbo].[sp_tg_ConflictResolution] @ReTagDocuments bit, @ReTagID bigint, @NewTagIDInGroup bigint, @TagGroupID bigint, @p_TaggedOrUntaggedBy bigint, @p_medialist nvarchar(max), @p_tagemailthread bit, @p_Comment nvarchar(1000), @p_duplicatePropagationcount bigint output, @p_selectDocCount bigint output, @p_pcSetPropagationCount bigint output, @p_emailthreadPropagationCount int output, @p_nddPropagationCount int output AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; ----------------------------------------------------------------------------------- --NOW DO THE WORK OF TAGGING THE DOCUMENTS. ----------------------------------------------------------------------------------- DECLARE @v_query nvarchar(max) DECLARE @v_queryemailthread nvarchar(max) DECLARE @v_datefilterclause nvarchar(max) DECLARE @v_totaltagaffectedcount bigint --IT MAY BE EITHER TOTAL TAGGED COUNT OR TOTAL UNTAGGED COUNT CREATE TABLE #tmp_tagresultlist_conflict(fileid bigint primary key,directhit bit, isduplicate bit,isparent bit, groupid bigint, IsDerivedData bit) CREATE TABLE #tmp_groupid_list_conflict(groupid bigint) CREATE TABLE #tmp_taglist_conflict(tagid bigint) CREATE TABLE #tmp_actionlogoutput (BatchID bigint, TagID bigint) CREATE TABLE #tmp_deletedtags(FileID bigint, TagID bigint, DirectHit bit) CREATE TABLE #tmp_deletedcount (DuplicateFileCount bigint, ParentFileCount bigint, TotalAffectedCount bigint, TagID bigint) ----------------------------------------------------------------------------------- --CREATE A TABLE WITH A LIST OF ALL THE TAGS. ----------------------------------------------------------------------------------- INSERT INTO #tmp_taglist_conflict SELECT DISTINCT TagID FROM tbl_ex_Tag WITH(NOLOCK) WHERE TagID IN ( SELECT TagID FROM tbl_tg_TagGroupAssociation WITH(NOLOCK) WHERE TagGroupID=@TagGroupID ) OR TagID=@NewTagIDInGroup ----------------------------------------------------------------------------------- --QUERY TO FIND THE GROUP ID OF ALL THE CONFLICTING FILES. ----------------------------------------------------------------------------------- INSERT INTO #tmp_tagresultlist_conflict SELECT A.FileID, A.DirectHit, Fi.IsDuplicate, fi.IsParent, fi.GroupId, 0 FROM (SELECT * FROM tbl_ex_FileTagAssociation FTA1 WITH(NOLOCK) WHERE FTA1.TagID=@NewTagIDInGroup) A, (SELECT distinct FTA.FileID FROM tbl_ex_FileTagAssociation FTA WITH(NOLOCK), tbl_tg_TagGroupAssociation TGA WITH(NOLOCK) WHERE TGA.TagGroupID=@TagGroupID AND FTA.TagID=TGA.TagID) B, tbl_ex_FileInfo FI WITH(NOLOCK) WHERE A.FileID = B.FileID AND A.FileID = FI.FileID ----------------------------------------------------------------------------------- --UNTAG CONFLICTING DOCUMENTS ----------------------------------------------------------------------------------- DELETE FROM tbl_Ex_filetagassociation OUTPUT DELETED.FileID, DELETED.TagID, DELETED.DirectHit INTO #tmp_deletedtags FROM tbl_Ex_filetagassociation T1, #tmp_tagresultlist_conflict T2 WHERE T1.fileid = T2.fileid AND T1.tagid IN (SELECT TagID FROM #tmp_taglist_conflict WHERE TagID<>@ReTagID ) ----------------------------------------------------------------------------------- --GET COUNT FOR THE TAGGED DOCUMENTS ----------------------------------------------------------------------------------- INSERT INTO #tmp_deletedcount (DuplicateFileCount, ParentFileCount, TotalAffectedCount, TagID) SELECT 0, 0, ISNULL(COUNT(DC.FILEID),0) AS TotalAffectedCount, DC.TAGID FROM #tmp_deletedtags DC, tbl_ex_FileInfo FI WITH(NOLOCK) WHERE DC.FileID = FI.FileID GROUP BY DC.TagID ----------------------------------------------------------------------------------- --INSERT COUNT INTO tbl_Ex_TagActionLog ----------------------------------------------------------------------------------- INSERT INTO [dbo].[tbl_Ex_TagActionLog] ([TagOrUntagType] ,[TagedOrUntaggedFromModule] ,[IsTagOperation] ,[TaggedOrUntaggedObject] ,[TaggedOrUntaggedObjectValue] ,[ApplyDateFilter] ,[SearchID] ,[DateFilterStartDateTime] ,[DateFilterEndDateTime] ,[MediaList] ,[TagID] ,[TagAppliedDate] ,[TagOrUntaggedBy] ,[TotalTaggedOrUntaggedCount] ,[TotalDuplicateCount] ,[ParentFileCount] ,[Comment] ,[PCSetPropagationCount] ,[DupeOptionFromSearch] ,[SelectedCount] ,[EmailThreadCount] ,[NddPropagationCount]) OUTPUT INSERTED.BatchID, INSERTED.TagID INTO #tmp_actionlogoutput SELECT 0 ,''TAG MANAGEMENT'' ,0 ,''TAG_MANAGEMENT_CONFLICT_RESOLVE'' ,'''' ,0 ,-1 ,GETDATE() ,GETDATE() ,@p_medialist ,TagID ,GETDATE() ,@p_TaggedOrUntaggedBy ,TotalAffectedCount ,DuplicateFileCount ,NULL ,@p_Comment ,@p_pcSetPropagationCount ,NULL ,@p_selectDocCount ,@p_emailthreadPropagationCount ,@p_nddPropagationCount FROM #tmp_deletedcount ----------------------------------------------------------------------------------- --INSERT DATA INTO [tbl_ex_taghistory] ----------------------------------------------------------------------------------- INSERT INTO [dbo].[tbl_ex_taghistory] ([batchid], [Tagid], [DirectHit], [Custodianid], [Mediaid], [fileid] ) SELECT T4.BatchID, T3.TagID, T3.DirectHit, T1.custodianid, T1.mediaid, T3.fileid FROM tbl_ex_fileinfo T1, #tmp_deletedtags T3, #tmp_actionlogoutput T4 WHERE T3.FileID = T1.FileID AND T3.TagID = T4.TagID SET @v_totaltagaffectedcount = (SELECT COUNT(DISTINCT fileid) from #tmp_tagresultlist_conflict) SET @p_duplicatePropagationcount = 0 SET @p_pcSetPropagationCount = 0 SET @p_selectDocCount = @v_totaltagaffectedcount SET @p_emailthreadPropagationCount = 0 DECLARE @p_tagname varchar(400) DECLARE @p_status varchar(4000) DECLARE @p_alreadytaggedcount BIGINT ----------------------------------------------------------------------------------- --TAG DOCUMENTS IF RETAG IS REQUIRED. ----------------------------------------------------------------------------------- IF(@ReTagDocuments = 1) BEGIN DECLARE @p_isExclusive BIT SELECT @p_isExclusive=TG1.Isexclusive FROM TBL_EX_TAG TG WITH(NOLOCK), TBL_TG_TAGGROUP TG1 WITH(NOLOCK), TBL_TG_TAGGROUPASSOCIATION TGA WITH(NOLOCK) WHERE TGA.TAGID=TG.TAGID AND TGA.TAGGROUPID=TG1.TAGGROUPID AND TG.TAGID=@ReTagID Declare @p_ClusterName nvarchar(max) = null Declare @p_UnSelectedFile_TempTable nvarchar(1000)=null Declare @p_NotReviewedOnly BIT =NULL Declare @p_IsReview BIT=0 EXEC [dbo].[SP_sh_TagDocuments] ''TAG_MANAGEMENT'', ''#tmp_tagresultlist_conflict'', -1, ''TAG_MANAGEMENT_CONFLICT_RESOLVE'', -1, '''', @ReTagID, @p_isExclusive, 0, 1, 0, NULL, NULL, @p_TaggedOrUntaggedBy, @p_tagname OUTPUT, @p_status OUTPUT, @p_duplicatePropagationcount OUTPUT, @p_selectDocCount OUTPUT, @p_pcSetPropagationCount OUTPUT, @p_emailthreadPropagationCount OUTPUT, 0, @p_Comment, -1, 0, 2, -1, null, null, ''media'', '''', 0, ''-1'', @p_ClusterName, -- = null @p_UnSelectedFile_TempTable, -- = null @p_NotReviewedOnly, -- = null @p_IsReview, -- = 0 0, -- do not propagate to near duplicates @p_nddPropagationCount Output end ----------------------------------------------------------------------------------- --DROP TABLES ----------------------------------------------------------------------------------- DROP TABLE #tmp_tagresultlist_conflict DROP TABLE #tmp_groupid_list_conflict DROP TABLE #tmp_actionlogoutput DROP TABLE #tmp_taglist_conflict DROP TABLE #tmp_deletedtags DROP TABLE #tmp_deletedcount END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_VAR_FlushPredictionData] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_VAR_FlushPredictionData'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_VAR_FlushPredictionData]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- =================================================================================================== -- Author: Deepak Shrestha -- Create date: 14 january 2014 -- Description: flush prediction data -- ChangeLog : -- 1. Rabindra, 14 March 2014 :- Added script to flush the documents in the jobs to re-predict -- the documents eithier due to re-training of the model or the -- fulltext preference modification for the documents in the job -- ChangeLog : -- 2. Bipin, 29 July 2014 :- Preserve the predicted documents to compare the prediction in different jobs -- While re-predicting the documents in new jobs, just flush the auto tags, but preserve records in other table -- so that the prediction of the documents can be compared in the multiple prediction jobs. -- ChangeLog : -- 3. Bipin, 11 Sept 2014 :- While re-predicting the documents in new jobs, flush uncategorize i.e predictedbelowthreshold tags -- 4. Anuj, 19 June 2018 :- Handle flush case in CAL, flush all prediction and predicted below threshold tags, unlike in VAR where it preserves prediction of training docs -- 5. Jasmeen,26 NOV 2018 : Insert the summary of the prediction result into the tbl_var_predictionresultsummary for specific profileid''s old jobs -- Delete those data from tbl_var_prediction_reuslt table for specific profile -- Redmine TKt 20214 -- 6.Jasmeen,13 DEC 2018: Insert the summary of the prediction shadow into tbl_var_prediction_shadow_summary for spedific profile completed jobs -- 7.Jasmeen,31 DEC 2018: Handle ISNULL in ErrorType, Insert 0 incase ErrorType is null while inserting into tbl_var_prediction_shadow_summary. Redmine 20736 -- 8.Anuj,31 DEC 2018: Move the task of inserting records in prediciton shadow from web to DS(proc). If CAL, reuse old shadow records by updating necessary fields. -- 9.Jasmeen,21 JAN 2019: Failed to predict documents to be removed in next iteration of Prediction. Redmine 20817 -- ISNULL(ErrorType,0)=0 condition added while updating the table tbl_var_prediction_shadow -- 10.Deepak,04-FEB-2019: QUERY OPTIMIZE implement table variable, Decrease transaction scope -- 11. Jasmeen,05-FEB-2019,Redmine 20980, Implement new table tbl_VAR_Prediction_shadow_error_docs for storing errors docs and then deleteing those records from tbl_VAR_Prediction_shadow -- 12. Jasmeen,13-FEB-2019,Redmine 20980, Removed unnecessary conditions as suggested during code review -- 13. Jasmeen,21-FEB-2019,Redmine 21105, Based on the flag RepredictPastErroredFiles add errored prediction docs in next prediction queue -- 14. Jasmeen,27-FEB_2019,Redmine 21105,NULL JOBID Issue handled -- 15. Jasmeen,21-MAR-2019,Redmine 20839, Eliminate the unnecessary documents from being listed for Prediction -- Logic Implement:(Get the FIles from the Batch that is not started UNION Get the files with CS tag from the batch completed and in progress) -- that is equivalent to skipping the documents of the training set from the batch with status inprogress and completed -- 16. Jasmeen,27-MAR-2019,Redmine 21225, Retain prediction last prediction score in tbl_VAR_PredictionResult -- 17. Jasmeen,21-MAY-2019,Redmine 21571, Newly Added documents should reflect in the predictionresult table -- 18. Jasmeen,21-MAY-2019,Redmine 21571, Primary Key Voilation Issue in shadow table handled -- 19. Jasmeen,18-JUN-2019,Redmine 21809, Distinct FileId Added -- 20. Jasmeen,12-AUG-2019,Redmine 22207, Remove the constraint on/off in table tbl_var_prediction_shadow as it was locking table tbl_ds_projectjobInfo.Remove Transaction since it is already called outside of the procedure call -- =================================================================================================== CREATE PROCEDURE [dbo].[SP_VAR_FlushPredictionData] @ProfileId BIGINT, @ProjectId BIGINT, @UserId BIGINT, @SearchGlobalTempTable nvarchar(1000), @PredictionParameter nvarchar(max), @PredictType int, @PredictionJobID int, @RePredictAllInJob Bit AS BEGIN DECLARE @Date DATETIME DECLARE @TagId BIGINT DECLARE @Tagname NVARCHAR(400) DECLARE @Status NVARCHAR(4000) DECLARE @DuplicatePropagationcount INT DECLARE @SelectDocCount INT DECLARE @PcSetPropagationCount INT DECLARE @EmailthreadPropagationCount INT DECLARE @RemoveFromTrainingItems BIT DECLARE @NddPropagationCount INT Declare @p_ClusterName nvarchar(max) = null Declare @p_UnSelectedFile_TempTable nvarchar(1000)=null Declare @p_NotReviewedOnly BIT =NULL Declare @p_IsReview BIT=0 DECLARE @QRY NVARCHAR(MAX) DECLARE @PredictionResultSummary TABLE (ProfileId BIGINT,CategoryId BIGINT,FloorPredictionScore INT,JobId BIGINT,CountFileId BIGINT,IsPredicted BIGINT) DECLARE @Prediction_shadow_summary TABLE (ProfileId BIGINT,JobId BIGINT,countFileId BIGINT,ProcessingFlag INT,ErrorType INT) -- For Cal, just flush all prediction tag and predicted below threshold tag from all review set docs contained in the temp table IF EXISTS (SELECT TOP 1 1 FROM tbl_var_profileinfo WITH(NOLOCK) WHERE profileid = @ProfileId and IsCalProfile = 1) BEGIN INSERT INTO @PredictionResultSummary(ProfileId,CategoryId,FloorPredictionScore,JobId,CountFileId,IsPredicted) SELECT @ProfileID AS ProfileId ,CategoryID,FloorPredictionScore,JobID,PredictedDocsCount,IsPredicted FROM( SELECT CategoryID,FloorPredictionScore,JobId,COUNT(1) AS PredictedDocsCount,IsPredicted FROM ( SELECT CategoryID ,JobId,IsPredicted,FLOOR(PredictionScore * 100) AS FloorPredictionScore FROM tbl_VAR_PredictionResult WITH(NOLOCK) WHERE ProfileID = @ProfileID AND JobID<@PredictionJobID ) S1 GROUP BY CategoryID ,JobId,FloorPredictionScore,IsPredicted )S2 WHERE NOT EXISTS (SELECT TOP 1 1 FROM tbl_var_PredictionResultSummary WITH(NOLOCK) WHERE ProfileID=@ProfileId AND CategoryId=S2.CategoryID AND JobId=S2.JobID ) ORDER BY CategoryID,JobID,FloorPredictionScore INSERT INTO @Prediction_shadow_summary SELECT ProfileId,JobId,countFileId,ProcessingFlag,ErrorType FROM (SELECT s.ProfileId,s.JobId,count(s.fileid) as countfileid,s.ProcessingFlag,IsNull(s.ErrorType,0) as ErrorType from tbl_VAR_Prediction_shadow s with(nolock), tbl_ds_ProjectJobInfo PJI with(nolock), tbl_VAR_ProfileJobAssociation PJA with(nolock) where s.ProfileId=PJA.Profileid AND s.JobID=pja.Jobid and PJI.JobId = PJA.Jobid and PJA.Profileid = @ProfileId and PJI.Name=''Predict'' and PJA.JobId < @PredictionJobID and PJI.Status = 2 group By s.Profileid,s.Jobid,s.ProcessingFlag,IsNull(s.ErrorType,0) )S2 WHERE NOT EXISTS (SELECT TOP 1 1 FROM tbl_VAR_Prediction_shadow_summary WITH(NOLOCK) WHERE ProfileID=@ProfileId AND JobId=S2.JobID) -- Insert or Update in prediction shadow table Declare @ReviewSetId bigint = 0 Declare @projectPriority varchar(100) = '''' Declare @active_trainingmodel varchar(50) = '''' DECLARE @ControlSetTagId bigint=0 Select @ReviewSetId = IsNull(ReviewSetID , 0) from tbl_VAR_ProfileReviewSetAssociation with(nolock) where ProfileID = @ProfileId SELECT TOP 1 @projectPriority = FullTextType FROM tbl_pj_FullTextPriority WITH(nolock) ORDER BY Priority ASC Select top 1 @active_trainingmodel = trainingmodelid from tbl_VAR_TrainingLog with(nolock) where profileid = @ProfileId order by TrainingLogID desc SELECt @ControlSetTagId=ControlSetFlagTagID FROM tbl_VAR_ProfileInfo with(nolock) where Profileid=@ProfileId IF OBJECT_ID(''tempdb..#tbl_var_prediction_shadow'') IS NOT NULL DROP TABLE #tbl_var_prediction_shadow CREATE TABLE #tbl_var_prediction_shadow (FileId BIGINT,ProcessingFlag INT, ProcessingID NVARCHAR(2000),ErrorType INT,JobId BIGINT, ProfileId BIGINT, CreatedDate DATETIME, UpdatedDate DATETIME,FulltextType NVARCHAR(40)) --Temp table that will store the fileid that to be sent for prediction IF OBJECT_ID(''tempdb..#tbl_var_fileIdsForPrediction'') IS NOT NULL DROP TABLE #tbl_var_fileIdsForPrediction CREATE TABLE #tbl_var_fileIdsForPrediction (FileId BIGINT) INSERT INTO #tbl_var_fileIdsForPrediction SELECT BFA.fileid FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK), tbl_rev_reviewBatch RB WITH(NOLOCK) WHERE BFA.BatchId = RB.BatchId AND RB.ReviewSetId = @ReviewSetId AND RB.BatchStatus =0 UNION SELECT BFA.fileid FROM tbl_rev_BatchFileAssociation BFA WITH(NOLOCK), tbl_rev_reviewBatch RB WITH(NOLOCK) WHERE BFA.BatchId = RB.BatchId AND RB.ReviewSetId = @ReviewSetId AND RB.BatchStatus <> 0 AND EXISTS (SELECT TOP 1 1 FROM tbl_ex_filetagassociation fta WITH(NOLOCK) WHERE fta.tagid = @ControlSetTagId AND fta.fileid=bfa.FileId) IF NOT EXISTS (SELECT TOP 1 1 FROM tbl_var_prediction_shadow WITH(NOLOCK) WHERE ProfileId = @ProfileID) OR EXISTS(SELECT TOP 1 1 FROM tbl_VAR_ProfileInfo with(nolock) where ProfileID=@ProfileId and IsMoreDocsAdded=1) BEGIN INSERT INTO #tbl_var_prediction_shadow (FileId,ProcessingFlag, ProcessingID,ErrorType,JobId, ProfileId, CreatedDate, UpdatedDate,FulltextType) SELECT t1.fileid,0, null,0, @PredictionJobID , @ProfileID , GETDATE(), NULL, isnull(t2.DefaultPreference,@projectPriority) FROM #tbl_var_fileIdsForPrediction t1 LEFT JOIN tbl_ft_FullTextMaster t2 with(nolock) ON t1.fileid = t2.fileid END INSERT INTO tbl_var_PredictionResultSummary SELECT * FROM @PredictionResultSummary INSERT INTO tbl_var_Prediction_shadow_summary SELECT * FROM @Prediction_shadow_summary IF NOT EXISTS (SELECT TOP 1 1 FROM tbl_var_prediction_shadow WITH(NOLOCK) WHERE ProfileId = @ProfileID) BEGIN INSERT INTO tbl_var_prediction_shadow (FileId,ProcessingFlag, ProcessingID,ErrorType,JobId, ProfileId, CreatedDate, UpdatedDate,FulltextType) SELECT FileId,ProcessingFlag, ProcessingID,ErrorType,JobId, ProfileId, CreatedDate, UpdatedDate,FulltextType FROM #tbl_var_prediction_shadow END ELSE BEGIN DECLARE @RepredictPastErroredFiles bit=0; SELECT @RepredictPastErroredFiles=RepredictPastErroredFiles FROM tbl_VAR_ProfileInfo WITH(NOLOCK) WHERE ProfileId=@ProfileID IF(@RepredictPastErroredFiles=1) BEGIN IF EXISTS (SELECT TOP 1 1 FROM tbl_var_prediction_shadow_error_docs WITH(NOLOCK) WHERE ProfileId = @ProfileID) BEGIN IF OBJECT_ID(''tempdb..#PredictionErrorDocs'') IS NOT NULL DROP TABLE #PredictionErrorDocs CREATE TABLE #PredictionErrorDocs ( [FileId] [bigint], [ProfileId] [int], [FulltextType] [varchar](50) ); DELETE FROM tbl_var_prediction_shadow_error_docs OUTPUT DELETED.FileId,DELETED.ProfileId,DELETED.FulltextType INTO #PredictionErrorDocs WHERE ProfileId = @ProfileID --Once the Error docs (of old job) are inserted in the #PredictionErrorDocs remove those files from the shadow table DELETE PS WITH(ROWLOCK) FROM tbl_var_prediction_shadow PS, #PredictionErrorDocs PED WHERE PS.FileId = PED.FileId AND PS.ProfileId = PED.ProfileId AND PS.ProfileId = @ProfileId INSERT INTO tbl_var_prediction_shadow (FileId,ErrorType, ProfileId,FulltextType,JobId) SELECT DISTINCT FileId,0, @ProfileID,FulltextType,@PredictionJobID FROM #PredictionErrorDocs WHERE ProfileId = @ProfileID END END ELSE BEGIN --INSERT INTO NEW TABLE WHERE ERRORTYPE<>0 INSERT INTO tbl_var_prediction_shadow_error_docs(FileId,ProcessingFlag,ProcessingId,ErrorType,JobId,ProfileId,CreatedDate,UpdatedDate,RetryCount,FulltextType) SELECT FileId,ProcessingFlag,ProcessingId,ErrorType,JobId,ProfileId,CreatedDate,UpdatedDate,RetryCount,FulltextType FROM tbl_var_prediction_shadow WITH(NOLOCK) WHERE ErrorType<>0 AND ProfileId = @ProfileID DELETE FROM tbl_var_prediction_shadow WITH(ROWLOCK) WHERE ErrorType<>0 AND ProfileId = @ProfileID --AND JobId < @PredictionJobID END Update PS Set ProcessingFlag = 0, ProcessingID = null, ErrorType = 0, JobId = @PredictionJobID, CreatedDate = GETDATE(), UpdatedDate = null FROM #tbl_var_fileIdsForPrediction t INNER JOIN tbl_var_prediction_shadow PS with(rowlock) ON PS.ProfileId=@ProfileId AND t.FileId=PS.FileId --Need to delete from prediction shadow since all files that are in shadow table may not be in temp table during another round of prediction --however this code may need to be removed while addressing future enhancement tkts DELETE FROM tbl_var_prediction_shadow WHERE ProfileId=@ProfileId AND JobID<>@PredictionJobID --Handle add more documents case IF EXISTS(SELECT TOP 1 1 FROM tbl_VAR_ProfileInfo with(nolock) where ProfileID=@ProfileId and IsMoreDocsAdded=1) BEGIN INSERT INTO tbl_var_prediction_shadow (FileId,ProcessingFlag, ProcessingID,ErrorType,JobId, ProfileId, CreatedDate, UpdatedDate,FulltextType) SELECT T.FileId,T.ProcessingFlag, T.ProcessingID,T.ErrorType,T.JobId, T.ProfileId, T.CreatedDate, T.UpdatedDate,T.FulltextType FROM #tbl_var_prediction_shadow T LEFT JOIN tbl_var_prediction_shadow P WITH(NOLOCK) ON P.jobid=@PredictionJobID AND T.FileId=P.FileId LEFT JOIN tbl_var_prediction_shadow_error_docs er WITH(NOLOCK) ON er.ProfileId=@ProfileId AND T.FileId=er.FileId WHERE P.FileId IS NULL AND ER.FileId IS NULL Update tbl_VAR_ProfileInfo with(rowlock) set IsMoreDocsAdded=0 where ProfileID=@ProfileId and IsMoreDocsAdded=1 END END End Else Begin --COLLECT FILES FOR UNTAGING DECLARE @Active_Training_Model varchar(20) SELECT TOP 1 @Active_Training_Model = trainingmodelid FROM tbl_VAR_TrainingLog WITH(NOLOCK) WHERE profileid=@ProfileId ORDER BY TrainingLogID DESC IF OBJECT_ID(''tempdb..#TempProfileTagFilesWithoutTrainingItems'') IS NOT NULL DROP TABLE #TempProfileTagFilesWithoutTrainingItems CREATE TABLE #TempProfileTagFilesWithoutTrainingItems (FileId BIGINT) DECLARE @QUERY NVARCHAR(MAX) SET @QUERY = '' SELECT DISTINCT FTA.FILEID FROM tbl_ex_filetagassociation FTA WITH(NOLOCK), tbl_var_categoryinfo C WITH(NOLOCK), '' +@SearchGlobalTempTable + '' src WHERE C.ProfileID=@ProfileId AND C.predictiontagid=FTA.TagID AND FTA.FileID = src.FileID AND NOT EXISTS (SELECT TOP 1 1 FROM tbl_VAR_TrainingItems WITH(NOLOCK) WHERE ProfileID=@ProfileId and FileID= FTA.FileID ) AND NOT EXISTS(SELECT TOP 1 1 FROM tbl_var_prediction_shadow WITH(NOLOCK), tbl_var_PredictionTrainingModelAssociation T3 where jobid = t3.predictionjobid and T3.TrainingModelID = @Active_Training_Model and T3.profileid = @ProfileId and T3.PredictionJobID<>@PredictionJobID and fileid = FTA.fileid) '' IF @PredictType = 1 SET @QUERY = @QUERY + '' AND src.FileID IN ('' + @PredictionParameter + '')''; ELSE IF @PredictType = 2 SET @QUERY = @QUERY + '' AND src.FileID NOT IN ('' + @PredictionParameter + '')''; INSERT INTO #TempProfileTagFilesWithoutTrainingItems EXEC sp_executesql @QUERY,N''@ProfileID INT, @Active_Training_Model varchar(20),@PredictionJobID int'',@ProfileID=@ProfileID,@Active_Training_Model = @Active_Training_Model,@PredictionJobID=@PredictionJobID IF OBJECT_ID(''tempdb..#TempProfileTagFiles'') IS NOT NULL DROP TABLE #TempProfileTagFiles CREATE TABLE #TempProfileTagFiles (FileId BIGINT) INSERT INTO #TempProfileTagFiles SELECT FTA.FILEID FROM tbl_ex_filetagassociation FTA WITH(NOLOCK), tbl_var_profileinfo P WITH(NOLOCK) WHERE P.ProfileID=@ProfileId AND P.PredictedBelowThresholdTagID=FTA.TagID -- change log 3 DECLARE tag_cursor CURSOR FOR SELECT PredictionTagID,0 FROM tbl_var_categoryinfo WHERE ProfileID=@ProfileId UNION SELECT PredictedBelowThresholdTagID,1 FROM tbl_var_profileinfo WHERE ProfileID=@ProfileId -- change log 3 OPEN tag_cursor FETCH NEXT FROM tag_cursor INTO @TagId,@RemoveFromTrainingItems WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @TmpTable NVARCHAR(100) SET @TmpTable=CASE WHEN @RemoveFromTrainingItems=1 THEN ''#TempProfileTagFiles'' ELSE ''#TempProfileTagFilesWithoutTrainingItems''END SELECT @Date=GETDATE() EXEC [dbo].[SP_sh_TagDocuments] ''VAR'', @TmpTable, -1, '''', -1, '''', @Tagid, 0, 0, 0, 0, NULL, NULL, @UserId, @Tagname OUTPUT, @Status OUTPUT, @DuplicatePropagationcount OUTPUT, @SelectDocCount OUTPUT, @PcSetPropagationCount OUTPUT, @EmailthreadPropagationCount OUTPUT, 0, ''UNTAGED WHEN FLUSHING PROFILE'', -1, 0, 2, -1, null, 1, ''media'', '''', 0, ''-1'', @p_ClusterName, -- = null @p_UnSelectedFile_TempTable, -- = null @p_NotReviewedOnly, -- = null @p_IsReview, -- = 0 0, -- do not propagate to near duplicates @NddPropagationCount OUTPUT FETCH NEXT FROM tag_cursor INTO @TagId,@RemoveFromTrainingItems; END CLOSE tag_cursor; DEALLOCATE tag_cursor; INSERT into tbl_var_prediction_shadow (FileId,ProcessingFlag, ProcessingID,ErrorType,JobId, ProfileId, CreatedDate, UpdatedDate,FulltextType) SELECT t1.fileid,0, null,0, @PredictionJobID , @ProfileID , GETDATE(), NULL, isnull(t2.DefaultPreference,@projectPriority) FROM ( Select FileId from tbl_rev_BatchFileAssociation BFA with(nolock), tbl_rev_ReviewBatch RB with(nolock), tbl_var_profilereviewsetassociation PRSA with(nolock), tbl_var_ProfileInfo ProfI with(nolock) Where PRSA.ReviewSetTypeId = 4 And RB.BatchId = BFA.BatchId And PRSA.ReviewSetId = RB.ReviewSetId And PRSA.IsActive = 1 And PRSA.ProfileId = ProfI.ProfileId And ProfI.ProfileID = @ProfileID )t1 LEFT JOIN tbl_ft_FullTextMaster t2 with(nolock) ON t1.fileid = t2.fileid WHERE NOT EXISTS(select top 1 1 from tbl_var_prediction_shadow with(nolock), tbl_var_PredictionTrainingModelAssociation T3 with(nolock) where T3.profileid = @ProfileId and t3.predictionjobid =jobid and T3.TrainingModelID = @active_trainingmodel and fileid = t1.fileid ) End END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_VAR_FlushTrainingData] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_VAR_FlushTrainingData'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_VAR_FlushTrainingData]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /****** Object: StoredProcedure [dbo].[sp_VAR_FlushTrainingData] Script Date: 12/11/2013 18:01:05 ***** ChangeLog :- 1. Rabindra, 2013/12/11 : Flush Auto categorization tag from the training documents while re-training the profile 2. Anuj, 2018/07/11 : TF optimization, delete tf files conditionally, to avoid recomputation of TF files if they exist 3. Jasmeen Bajracharya,24-MAR-2019,Redmine 20839,Moved the untagging portion in DS in CG postprocessing 4. Jasmeen Bajracharya,27-MAY-2019,Redmine 21492,If CAL profile, insert old data to tbl_VAR_TF_CG_shadow_summary before deleting, JobId Parameter added to summarize the data of old jobs of that profile */ CREATE PROCEDURE [dbo].[sp_VAR_FlushTrainingData] @ProfileID int, @JobID int AS BEGIN -- ChangeLog 1 Begins DECLARE @PredictionTagID INT DECLARE @DocQry NVARCHAR(MAX) DECLARE @p_lowerdatevalue datetime DECLARE @p_upperdatevalue datetime DECLARE @p_tagname varchar(400) DECLARE @p_status varchar(4000) DECLARE @p_duplicatePropagationcount int DECLARE @p_selectDocCount int DECLARE @p_pcSetPropagationCount int DECLARE @p_emailthreadPropagationCount int Declare @p_ClusterName nvarchar(max) = null Declare @p_UnSelectedFile_TempTable nvarchar(1000)=null Declare @p_NotReviewedOnly BIT =NULL Declare @p_IsReview BIT=0 DECLARE @p_nddPropagationCount Int /* SET @p_lowerdatevalue = GETDATE() SET @p_upperdatevalue = GETDATE() SET @DocQry = ''SELECT T1.FileID,1 directhit,T1.GroupID FROM TBL_EX_FILEINFO T1,tbl_VAR_TrainingItems T2 WHERE T1.FileID = T2.FileID AND T2.ProfileID='' + CAST(@ProfileID AS VARCHAR(38)) DECLARE PredictionTag_Cursor CURSOR FOR SELECT PredictionTagID FROM tbl_var_categoryinfo WITH(NOLOCK) WHERE Profileid=@ProfileID OPEN PredictionTag_Cursor FETCH NEXT FROM PredictionTag_Cursor INTO @PredictionTagID WHILE @@FETCH_STATUS = 0 BEGIN EXEC [dbo].[SP_sh_TagDocuments] ''VAR_AUTOTAG'', @DocQry, -1, ''REMOVED_VAR_AUTO_CATEGORIZATION_TAG'', -1, -1, @PredictionTagID, 0, 0, 0, 0, @p_lowerdatevalue, @p_upperdatevalue, -1, @p_tagname OUTPUT, @p_status OUTPUT, @p_duplicatePropagationcount OUTPUT, @p_selectDocCount OUTPUT, @p_pcSetPropagationCount OUTPUT, @p_emailthreadPropagationCount OUTPUT, 0, ''REMOVED_VAR_AUTO_CATEGORIZATION_TAG'', -1, 0, 2, -1, NULL, NULL, ''media'', '''', 0, ''-1'', @p_ClusterName, -- = null @p_UnSelectedFile_TempTable, -- = null @p_NotReviewedOnly, -- = null @p_IsReview, -- = 0 0, -- do not propagate to near duplicates @p_nddPropagationCount OUTPUT FETCH NEXT FROM PredictionTag_Cursor INTO @PredictionTagID END CLOSE PredictionTag_Cursor; DEALLOCATE PredictionTag_Cursor;*/ --ChangeLog 1 ends -- IF EXISTS (SELECT TOP 1 1 FROM tbl_var_profileinfo WITH(NOLOCK) WHERE profileid = @ProfileID and IsCalProfile = 1) BEGIN INSERT INTO [tbl_VAR_TF_CG_shadow_summary] (PROFILEID,PROFILE,JOBID,JOB,JOBTYPE,TOTAL_COUNT,NOTSTARTED,IN_PROGRESS,COMPLETED,FAILED,POSTPONED,[STATUS],POSTPROCESSINGSTATUS,REQUESTEDBY,ETA,PERCENT_,REQUESTEDID) exec [sp_VAR_GetSummaryOfTFAndCG] @ProfileID,@JobID END DELETE FROM tbl_var_model_files WHERE ProfileID=@ProfileID DELETE FROM tbl_VAR_TrainingSetValidationResult WHERE ProfileID=@ProfileID DELETE FROM tbl_VAR_BestTrainingParameter WHERE ProfileID=@ProfileID DELETE FROM tbl_VAR_CG_Shadow WHERE ProfileID=@ProfileID DELETE FROM tbl_var_problem_files WHERE ProfileID=@ProfileID DELETE FROM tbl_var_DF_files WHERE ProfileID=@ProfileID DELETE FROM tbl_VAR_RejectedTrainingItems WHERE ProfileID=@ProfileID If Exists( Select top 1 1 from tbl_var_ProfileInfo with(nolock) where Profileid = @ProfileID and IsNull(IsRecomputeTFOnRetraining,0)=1) Begin DELETE FROM tbl_VAR_TF_files WHERE ProfileID=@ProfileID End DELETE FROM tbl_VAR_TF_Shadow WHERE ProfileID=@ProfileID END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_VAR_GetTrainingItemsForTF] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_VAR_GetTrainingItemsForTF'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_VAR_GetTrainingItemsForTF]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' --=========================================================================================================================== -- ChangeLog :- -- 1. Rabindra, 7 March 2014 : Removed TrainingFilePath and included FileID in the select query to implement fulltext -- preferences in VAR Training. -- 2. Rabindra, 11 March 2014 : Fetched FileId from tbl_var_tf_shadow itself instead of tbl_var_TrainingItems -- 3. Anuj, 22 June 2018 : Avoid TF re-computation in repeat training -- 4. Jasmeen Bajracharya,07-JAN-2019,Redmine 20700,Default Preference and FullTextPathLocation is also returned -- 5. Jasmeen,29-AUG-2019,Redmine 22058, MediaId added in the query for imperisnation purpose -- 6. Jasmeen,17-OCT-2019,Redmine 22538,Order By added to handle job crash case --=========================================================================================================================== CREATE PROCEDURE [dbo].[sp_VAR_GetTrainingItemsForTF] ( @BATCHSIZE INT, @JOBID BIGINT, @PROCESSINGID NVARCHAR(500) ) AS BEGIN SET NOCOUNT ON DECLARE @SELECTEDTRAININGITEMS TABLE ( TRAININGITEMID NVARCHAR(200), FILEID BIGINT, CATEGORYID INT, CATEGORYNAME VARCHAR(500), PROCESSINGFLAG INT, PROCESSINGID NVARCHAR(500) ) BEGIN TRANSACTION INSERT INTO @SELECTEDTRAININGITEMS (TRAININGITEMID,FILEID,CATEGORYID,CATEGORYNAME,PROCESSINGFLAG,PROCESSINGID) SELECT TOP (@BatchSize) PT.TRAININGITEMID, PT.FILEID, PT.CATEGORYID, CT.CATEGORYNAME, PT.PROCESSINGFLAG, PT.PROCESSINGID FROM TBL_VAR_TF_SHADOW PT WITH (UPDLOCK,READPAST),TBL_VAR_CATEGORYINFO CT WHERE ISNULL(PT.PROCESSINGFLAG,0) IN (0,-1) AND PT.JOBID=@JOBID AND PT.CATEGORYID=CT.CATEGORYID UPDATE TBL_VAR_TF_SHADOW SET PROCESSINGFLAG=1, PROCESSINGID=@PROCESSINGID ,UPDATEDDATE=GETDATE() WHERE TRAININGITEMID IN (SELECT TRAININGITEMID FROM @SELECTEDTRAININGITEMS) COMMIT --SELECT * FROM @SELECTEDTRAININGITEMS SELECT STI.*, Tff.TrainingItemID as Available_TF_For_TrainingItemID , ISNULL(ftmaster.DefaultPreference,'''') as DefaultPreference,ISNULL(ft.fulltextfilelocation,'''') as TrainingFilePath,ft.MediaID as MediaID FROM @SELECTEDTRAININGITEMS STI left join tbl_VAR_TF_files TFf WITH(NOLOCK) on TFf.TrainingItemId = STI.TrainingItemId and TFf.ProfileID = (Select ProfileId from tbl_var_profilejobassociation with(nolock) where jobId = @JOBID) LEFT JOIN tbl_ft_FullTextMaster ftmaster WITH(NOLOCK) ON STI.FILEID=ftmaster.FileId LEFT JOIN tbl_ex_FulltextFileLocation ft WITH(NOLOCK) ON STI.FILEID=ft.fileId ORDER BY STI.FILEID END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_VAR_CreateCGBatches] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_VAR_CreateCGBatches'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_VAR_CreateCGBatches]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' --============================================================================================================== --Change Log -- CL1. Rabindra, 03 March 2014 :- Corrected C batches calculation. -- Iterated the C value through Min. to Max. values instead of Max. -- to Min. value, inserted the CG batches into temp table and finally -- inserted the value into CG queue table in reverse order. -- CL2. Anuj, Feb 15, 2018 :- Check multiple entries for CG batches set (of 12) for same profile and job combination --=============================================================================================================== CREATE PROCEDURE [dbo].[sp_VAR_CreateCGBatches] @JOBID BIGINT, @PROFILEID INT, @MIN_C INT, @MAX_C INT, @CSTEP INT, @MIN_GAMMA INT, @MAX_GAMMA INT, @GAMMASTEP INT AS BEGIN DECLARE @TEMP_MIN_C INT DECLARE @TEMP_MAX_C INT DECLARE @GAMMA_LOOP INT CREATE TABLE #tmpCGBatches ( MinC INT, MaxC INT, CStep INT, MinG INT, MaxG INT, GStep Int ) SET @TEMP_MIN_C = @MIN_C WHILE(@TEMP_MIN_C<=@Max_C) BEGIN SET @TEMP_MAX_C = @TEMP_MIN_C --+ 1 * @CSTEP SET @GAMMA_LOOP = @MIN_GAMMA WHILE(@GAMMA_LOOP<=@MAX_GAMMA) BEGIN INSERT INTO #tmpCGBatches (MINC,MAXC,CSTEP,MING,MAXG,GSTEP) VALUES(@TEMP_MIN_C,@TEMP_MAX_C,@CSTEP,@GAMMA_LOOP,@GAMMA_LOOP,@GAMMASTEP) SET @GAMMA_LOOP = @GAMMA_LOOP + @GAMMASTEP END SET @TEMP_MIN_C = @TEMP_MAX_C + @CSTEP END IF NOT EXISTS (Select top 1 1 from TBL_VAR_CG_SHADOW with(nolock) where PROFILEID = @PROFILEID AND JOBID = @JOBID) Begin INSERT INTO TBL_VAR_CG_SHADOW(JOBID,PROFILEID,MINC,MAXC,CSTEP,MING,MAXG,GSTEP,ProcessingFlag,ErrorType,ResultAccuracy,BestCInBatch,BestGInBatch,CREATEDDATE) SELECT @JOBID,@PROFILEID,MINC,MAXC,CSTEP,MING,MAXG,GSTEP,0,0,0,0,0,GETDATE() FROM #tmpCGBatches ORDER BY MinC DESC End DROP TABLE #tmpCGBatches END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_QueueProductionData] ---------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_QueueProductionData'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_QueueProductionData]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE PROCEDURE [dbo].[sp_ep_QueueProductionData]( @ExportId Bigint ) AS BEGIN SET XACT_ABORT ON BEGIN TRY Declare @ExportFulltext Bit, @ExportNative Bit, @ExportImage Bit Select @ExportFulltext = ExportOptions.value(''(ExportTemplateSettings/FileOption/FullText)[1]'', ''Bit''), @ExportNative = ExportOptions.value(''(ExportTemplateSettings/FileOption/Native)[1]'', ''Bit''), @ExportImage = ExportOptions.value(''(ExportTemplateSettings/FileOption/ExportTiff)[1]'',''Bit'') From Tbl_Ep_Exports With(NoLock) Where ExportId = @ExportId Declare @Query Nvarchar(max) if @ExportFulltext = 1 Begin Set @Query = ''Insert Into Tbl_Ep_FulltextDetails (ExportId, FileId) Select ExportId, File_Id_Pk FileId From Tbl_Ep_ExportPrimaryTable With(NoLock) Where ExportId = @ExportId '' Execute sp_ExecuteSql @Query, N''@ExportId BigInt'', @ExportId = @ExportId End if @ExportNative = 1 Begin Set @Query = ''Insert Into Tbl_Ep_NativeDetails (ExportId, FileId) Select ExportId, File_Id_Pk FileId From Tbl_Ep_ExportPrimaryTable With(NoLock) Where ExportId = @ExportId '' Execute sp_ExecuteSql @Query, N''@ExportId BigInt'', @ExportId = @ExportId End if @ExportImage = 1 Begin Set @Query = ''Insert Into Tbl_Ep_TIffDetails (ExportId, FileId) Select ExportId, File_Id_Pk FileId From Tbl_Ep_ExportPrimaryTable With(NoLock) Where ExportId = @ExportId '' Execute sp_ExecuteSql @Query, N''@ExportId BigInt'', @ExportId = @ExportId Declare @ImageJobType Nvarchar(200) Select @ImageJobType = ExportOptions.value(''(ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ImageExportOption/text())[1]'', ''Nvarchar(200)'') From Tbl_Ep_Exports With(NoLock) Where ExportId = @ExportId if @ImageJobType = ''NonSearchablePDF'' Or @ImageJobType = ''SearchablePdf'' Begin Set @Query = ''Insert Into Tbl_Ep_PdfDetails (ExportId, FileId, GroupId) Select ExportId, File_Id_Pk FileId, GroupId From Tbl_Ep_ExportPrimaryTable With(NoLock) Where ExportId = @ExportId '' Execute sp_ExecuteSql @Query, N''@ExportId BigInt'', @ExportId = @ExportId End End END TRY BEGIN CATCH DECLARE @ErrorSeverity INT, @ErrorMessage VARCHAR(4000), @xstate INT, @ErrorState INT SELECT @ErrorSeverity = ERROR_SEVERITY(), @ErrorMessage = ERROR_MESSAGE(), @xstate = XACT_STATE(), @ErrorState = ERROR_STATE() IF @xstate=-1 ROLLBACK RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState) END CATCH END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_QueueExportFiles'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_QueueExportFiles]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_QueueExportFiles] ---------------------------------------------------------------------- SET @v_query = N' -- =============================================================== -- Author:Sudhir Maharjan -- CREATED DATE: 27 OCT 2015 -- Description: Queue files that are to be exported. -- 1. Deepak Shrestha, 28 feb 2016, This script is executed only once for the export. So check if entry of same exportId already exists -- 2. Sudhir Maharjan, 26 May 2016, Added fields to store the values of original export -- ChangeLog3: 24 Jan 2017, Gaurav, Maintain original control -- ChangeLog4: 6th April 2017, Sudhir,Inser entries to tbl_ep_TiffExportDetails when tiff is not selected but bates fields are required in export. -- ChangeLog5: 2nd Nov 2017, Add Original_Has_Redaction field in export primary table. -- ChangeLog6: May 15 2018, #18901, Sudhir - Compute OriginalFilePath for export when ''UseOriginalFilePath'' option is selected. -- ChangeLog7: December 11 2019, #22678, Sudhir - Populate custom field for control number when option is selected. -- ChangeLog8: June 4, 2020 - Redmine #24290 Anuj - Remove G.IsParent = 1 in where clause so that in split volume export of childern without parent, the family control numbers do not break. -- =============================================================== CREATE PROCEDURE [dbo].[sp_ep_QueueExportFiles] ( @ExportId BigInt, @GlobalTempTable nvarchar(200), @SecondaryTempTable nvarchar(200), @GlobalTiffTempTable nvarchar(200), @SecondaryTiffTempTable nvarchar(200), @ExportTiff bit, @IsReExport bit, @SplitOnVolumes Bit, @VolumeId BigInt, @IsBatesFieldRequired bit ) As BEGIN IF EXISTS (SELECT TOP 1 1 FROM tbl_ep_ExportPrimaryTable WITH(NOLOCK) WHERE ExportID=@ExportId) --cl 1 RETURN Declare @query nvarchar(max) if(@IsReExport=0) BEGIN SET @query = '' Insert into tbl_ep_ExportPrimaryTable (ExportID ,SEQ_NO ,FILE_ID_PK ,GROUPID , CONTROLNUMBER ,DERIVEDDATA, FOLDER_SEQ_NO, IsParent, OriginalControlNumber,OriginalFilePath) Select ''+ cast(@ExportID as nvarchar(max)) +'',SEQ_NO ,FILE_ID_PK ,GROUPID , CONTROLNUMBER ,DERIVEDDATA, FOLDER_SEQ_NO, IsParent, OriginalControlNumber,OriginalFilePath from ''+@GlobalTempTable+'''' If(@SplitOnVolumes = 1) Set @query = @query + '' Where VolumeId = '' + Cast(@VolumeId as Nvarchar(Max)) EXECUTE SP_EXECUTESQL @query SET @query = '' Insert into tbl_ep_ExportSecondaryTable(ExportId ,GroupId ,BegAtt ,EndAtt ,BegFamily ) Select ''+ cast(@ExportID as nvarchar(max)) +'', S.GroupId, BegAtt, EndAtt, BegFamily from ''+@SecondaryTempTable+'' S '' If(@SplitOnVolumes = 1) Set @query = @query + '' where exists(select top 1 1 from ''+ @GlobalTempTable +'' G where S.GroupId = G.GroupId And VolumeId = '' + Cast(@VolumeId as Nvarchar(Max)) +'' )'' EXECUTE SP_EXECUTESQL @query if(@ExportTiff = 1 OR @IsBatesFieldRequired = 1) Begin SET @query = '' Insert into tbl_ep_ExportTiffPrimaryTable (ExportID ,Seq_No ,File_Id_PK ,GroupId ,BatesNumber ,Image_Path ,Page_Number,Redacted_Image_Path,FolderId ) Select ''+ cast(@ExportID as nvarchar(max)) +'', T.Seq_No, T.File_Id_PK, T.GroupId, T.BatesNumber, T.Image_Path, T.Page_Number, T.Redacted_Image_Path, T.FolderId from ''+@GlobalTiffTempTable+'' T'' If(@SplitOnVolumes = 1) Set @query = @query + '', '' + @GlobalTempTable +'' G Where T.File_Id_Pk = G.File_Id_Pk And G.VolumeId = ''+ Cast(@VolumeId As Nvarchar(Max)) EXECUTE SP_EXECUTESQL @query SET @query = '' Insert into tbl_ep_ExportTiffSecondaryTable (ExportID ,FileId ,BeginBates ,EndBates ,BeginFamBates ,BeginAttBates ,EndAttBates ) Select ''+ cast(@ExportID as nvarchar(max)) +'', T.FileId, T.BeginBates, T.EndBates, T.BeginFamBates, T.BeginAttBates, T.EndAttBates from ''+@SecondaryTiffTempTable+'' T'' If(@SplitOnVolumes = 1) Set @query = @query + '', '' + @GlobalTempTable +'' G Where T.FileId = G.File_Id_Pk And G.VolumeId = ''+ Cast(@VolumeId As Nvarchar(Max)) EXECUTE SP_EXECUTESQL @query End if(@ExportTiff = 0 AND @IsBatesFieldRequired = 1) Begin SET @query = '' Insert into tbl_ep_TiffExportDetails (ExportID,FileID,BatesNumber,PageNumber,PreservedExportLocation,IsExcludedTiff,IsPlaceholderTiff,TiffFieldDetails,ImageSize,ImagePageCount) Select ''+ cast(@ExportID as nvarchar(max)) +'', T.File_Id_PK, T.BatesNumber, T.Page_Number, '''''''', 0, 0,Cast('''''''' as xml),0,0 from ''+@GlobalTiffTempTable+'' T'' If(@SplitOnVolumes = 1) Set @query = @query + '', '' + @GlobalTempTable +'' G Where T.File_Id_Pk = G.File_Id_Pk And G.VolumeId = ''+ Cast(@VolumeId As Nvarchar(Max)) EXECUTE SP_EXECUTESQL @query End End ELSE BEGIN SET @query = '' Insert into tbl_ep_ExportPrimaryTable (ExportID ,SEQ_NO ,FILE_ID_PK ,GROUPID , CONTROLNUMBER ,DERIVEDDATA, Original_Export_Native_Path,Original_Export_Fulltext_Path, IsParent,Original_Export_File_Name,Original_Export_Fulltext_Type,Original_Image_Page_Count,Original_Is_Native_Missing, ORIGINALCONTROLNUMBER, ORIGINAL_HAS_REDACTION, OriginalFilePath ) Select ''+ cast(@ExportID as nvarchar(max)) +'',SEQ_NO ,FILE_ID_PK ,GROUPID , CONTROLNUMBER ,DERIVEDDATA, ORIGINAL_EXPORT_NATIVE_PATH,ORIGINAL_EXPORT_FULLTEXT_PATH, IsParent,ORIGINAL_EXPORT_FILE_NAME ,ORIGINAL_EXPORT_FULLTEXT_TYPE, ORIGINAL_IMAGE_PAGE_COUNT, ORIGINAL_IS_NATIVE_MISSING , ORIGINALCONTROLNUMBER, ORIGINAL_HAS_REDACTION, OriginalFilePath from ''+@GlobalTempTable+'''' EXECUTE SP_EXECUTESQL @query SET @query = '' Insert into tbl_ep_ExportSecondaryTable(ExportId ,GroupId ,BegAtt ,EndAtt ,BegFamily ) Select ''+ cast(@ExportID as nvarchar(max)) +'',GroupId ,BegAtt ,EndAtt , BegFamily from ''+@SecondaryTempTable+'''' EXECUTE SP_EXECUTESQL @query IF(@ExportTiff = 1 OR @IsBatesFieldRequired = 1) BEGIN SET @query = '' Insert into tbl_ep_ExportTiffPrimaryTable (ExportID ,Seq_No ,File_Id_PK ,GroupId ,BatesNumber ,Image_Path ,Page_Number,Redacted_Image_Path,FolderId,Original_Export_Image_Path ) Select ''+ cast(@ExportID as nvarchar(max)) +'' ,Seq_No ,File_Id_PK ,GroupId ,BatesNumber ,Image_Path ,Page_Number,Redacted_Image_Path,FolderId,ORIGINAL_EXPORT_IMAGE_PATH from ''+@GlobalTiffTempTable+'''' EXECUTE SP_EXECUTESQL @query SET @query = '' Insert into tbl_ep_ExportTiffSecondaryTable (ExportID ,FileId ,BeginBates ,EndBates ,BeginFamBates ,BeginAttBates ,EndAttBates ) Select ''+ cast(@ExportID as nvarchar(max)) +'' ,FileId ,BeginBates ,EndBates ,BeginFamBates ,BeginAttBates ,EndAttBates from ''+@SecondaryTiffTempTable+'''' EXECUTE SP_EXECUTESQL @query End IF(@ExportTiff = 0 AND @IsBatesFieldRequired = 1) BEGIN SET @query = '' Insert into tbl_ep_TiffExportDetails (ExportID,FileID,BatesNumber,PageNumber,PreservedExportLocation,IsExcludedTiff,IsPlaceholderTiff,TiffFieldDetails,ImageSize,ImagePageCount) Select ''+ cast(@ExportID as nvarchar(max)) +'', T.File_Id_PK, T.BatesNumber, T.Page_Number, '''''''', 0, 0,Cast('''''''' as xml),0,0 from ''+@GlobalTiffTempTable+'' T'' EXECUTE SP_EXECUTESQL @query END End -- This will queue the data to individual tables Execute sp_ep_QueueProductionData @ExportId Declare @CreateControlNumberCustomField bit =0 IF ( SELECT TOP 1 ExportOptions.exist(''(ExportTemplateSettings/CustomFieldOption/ControlNumber/CreateCustomField)'') FROM tbl_ep_Exports WITH (NOLOCK) WHERE ExportID=@ExportId ) = 1 BEGIN SELECT @CreateControlNumberCustomField = ExportOptions.value(''(ExportTemplateSettings/CustomFieldOption/ControlNumber/CreateCustomField)[1]'',''bit'') FROM tbl_ep_Exports where ExportID=@ExportId IF(@CreateControlNumberCustomField =1) BEGIN DECLARE @ControlNumberFieldName nvarchar(200) SELECT @ControlNumberFieldName = ExportOptions.value(''(ExportTemplateSettings/CustomFieldOption/ControlNumber/FieldName)[1]'',''nvarchar(200)'') FROM tbl_ep_Exports where ExportID=@ExportId IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ''tbl_rev_CustomField'' AND COLUMN_NAME = @ControlNumberFieldName ) BEGIN SET @query='' UPDATE rev SET ['' +@ControlNumberFieldName+''] =ep.ControlNumber FROM tbl_rev_CustomField rev WITH(NOLOCK) ,tbl_ep_ExportPrimaryTable ep WITH(NOLOCK) Where rev.FileId=ep.FILE_ID_PK AND ep.ExportID=@ExportId'' exec sp_executesql @query,N''@ExportId bigint'', @ExportId END END END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_GetProductionBatchData] ---------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_GetProductionBatchData'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GetProductionBatchData]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE PROCEDURE [dbo].[sp_ep_GetProductionBatchData] --@SelectedFileTempTable nvarchar(200), @FamilyFileTempTable nvarchar(200), @ExportId BIGINT, @JobType VARCHAR(50), @BatchSize BIGINT, @ProcessingInstanceId VARCHAR(2000) AS BEGIN SET NOCOUNT ON; BEGIN TRANSACTION IF OBJECT_ID(''tempdb..#Tmp_SelectedFiles_Production'') IS NOT NULL DROP TABLE Tmp_SelectedFiles_Production DECLARE @Query NVARCHAR(MAX) CREATE TABLE #Tmp_SelectedFiles_Production ( FILEID BIGINT PRIMARY KEY, ExportId BIGINT, GroupId BIGINT, Seq_No BIGINT, ControlNumber NVARCHAR(4000), DerivedData BIT, Folder_Seq_No INT, Original_Export_Native_Path NVARCHAR(4000), Original_Export_Fulltext_Path NVARCHAR(4000), IsParent BIT ) Declare @TableName NVarchar(100) Select @TableName = case When @JobType = ''Fulltext'' Then ''Tbl_Ep_FulltextDetails'' When @JobType = ''Native'' Then ''Tbl_Ep_NativeDetails'' When @JobType = ''Image'' Then ''Tbl_Ep_TiffDetails'' When @JobType = ''PDFConversion'' Then ''Tbl_Ep_PdfDetails'' End --Get the files to be exported. SET @Query = '' INSERT INTO #Tmp_SelectedFiles_Production (ExportId, FILEID, GroupId, Seq_No, ControlNumber, DerivedData, Folder_Seq_No, Original_Export_Native_Path, Original_Export_Fulltext_Path, IsParent) SELECT TOP (@BatchSize) EPT.ExportID, EPT.FILE_ID_PK, EPT.GroupId, EPT.SEQ_NO, EPT.CONTROLNUMBER, EPT.DERIVEDDATA, EPT.FOLDER_SEQ_NO, EPT.Original_Export_Native_Path, EPT.Original_Export_Fulltext_Path, EPT.IsParent FROM ''+@TableName+'' TT WITH(UPDLOCK, READPAST) INNER JOIN Tbl_Ep_ExportPrimaryTable EPT WITH(NOLOCK) ON TT.ExportId = EPT.ExportId AND TT.FileId = EPT.File_Id_PK WHERE TT.ExportID = @ExportId And TT.Status IN (0, -1) Order By EPT.SEQ_NO '' if @JobType = ''Copy'' Begin SET @Query = '' INSERT INTO #Tmp_SelectedFiles_Production (ExportId, FILEID, GroupId, Seq_No, ControlNumber, DerivedData, Folder_Seq_No, Original_Export_Native_Path, Original_Export_Fulltext_Path, IsParent) SELECT TOP (@BatchSize) ExportID, FILE_ID_PK, GroupId, SEQ_NO, CONTROLNUMBER, DERIVEDDATA, FOLDER_SEQ_NO, Original_Export_Native_Path, Original_Export_Fulltext_Path, IsParent FROM Tbl_Ep_ExportPrimaryTable EPT WITH(UPDLOCK, READPAST) WHERE EPT.ExportID = @ExportId And EPT.CopyStatus IN (0, -1) Order By EPT.SEQ_NO'' End EXEC SP_EXECUTESQL @Query, N''@BatchSize BigInt, @ExportId BigInt'', @BatchSize, @ExportId Declare @V_DROP_QRY Nvarchar(max) SET @V_DROP_QRY = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@FamilyFileTempTable+'''''')''+ '' DROP TABLE '' + @FamilyFileTempTable ; EXEC SP_EXECUTESQL @V_DROP_QRY set @Query=''CREATE TABLE ''+@FamilyFileTempTable+'' (FileId bigint Primary Key WITH (IGNORE_DUP_KEY = ON))'' EXEC SP_EXECUTESQL @Query -- get the records for fulltext/native/image/pdf jobs Set @Query = ''Insert Into '' + @FamilyFileTempTable + '' Select FileId From #Tmp_SelectedFiles_Production '' -- get pc set together if pdf conversion and parent child as single pdf if @jobType = ''PdfConversion'' Begin Declare @PCasSinglePdf bit = 1 Select @PCasSinglePdf = ExportOptions.value(''(ExportTemplateSettings/FileOption/AdditionalTiffOptions/TiffOptions/ExportParentChildAsSinglePDF)[1]'', ''Bit'') From Tbl_Ep_Exports With(NoLock) Where ExportId = @ExportId if @PCasSinglePdf = 1 Begin Set @Query = ''Insert Into '' + @FamilyFileTempTable + '' Select A.FileId From Tbl_Ep_PdfDetails A With(UpdLock, ReadPast) Inner Join #Tmp_SelectedFiles_Production B On A.ExportId = @ExportId And A.GroupId = B.GroupId Where A.Status In (0, -1) '' End End -- get records for copy job if @JobType = ''Copy'' Begin Set @Query= ''Insert Into ''+@FamilyFileTempTable+'' Select A.File_Id_Pk FROM Tbl_Ep_ExportPrimaryTable A with(updlock, ReadPast) Inner Join #Tmp_SelectedFiles_Production S ON A.EXPORTID = @ExportId AND A.GroupId = S.GroupId WHERE CopyStatus IN (0, -1) '' End EXEC SP_EXECUTESQL @Query, N''@ExportId BigInt'',@ExportId --Update status for each file SET @Query = '' UPDATE A WITH(ROWLOCK) SET [Status] = 1 , [ProcessingInstanceId] = @ProcessingInstanceId FROM [Table1] A, ''+@FamilyFileTempTable+'' B WHERE A.EXPORTID = @ExportId AND A.[FileId] = B.FileId '' if @jobType = ''Copy'' Begin Set @Query = REPLACE(@Query, ''[Status]'', ''[CopyStatus]'') Set @Query = REPLACE(@Query, ''[ProcessingInstanceId]'', ''[CopyProcessingInstanceId]'') Set @Query = REPLACE(@Query, ''[Table1]'', ''Tbl_Ep_ExportPrimaryTable'') Set @Query = REPLACE(@Query, ''[FileId]'', ''[File_Id_Pk]'') End Else Begin Set @Query = REPLACE(@Query, ''[Table1]'', @TableName) End EXEC SP_EXECUTESQL @Query, N''@ExportId BigInt, @ProcessingInstanceId varchar(2000)'', @ExportId, @ProcessingInstanceId COMMIT END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [Sp_Jb_GetExportJobsStatus] ---------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].Sp_Jb_GetExportJobsStatus'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[Sp_Jb_GetExportJobsStatus]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*--------------------------------- MODIFIED BY:DEEPAK SHRESTHA MODIFIED DATE: 2017 March 08 MODIFICATION: Improve performance ----------------------------------*/ CREATE PROCEDURE [dbo].[Sp_Jb_GetExportJobsStatus] AS BEGIN If Object_Id(''Tempdb..#productionTemp'') Is Not Null Drop Table #productionTemp Create Table #productionTemp (ExportId Bigint Not Null, Status Int, FileCount Bigint, JobName Nvarchar(200)) Insert Into #productionTemp Select ExportId, Status, Count(1) FileCount, ''Production-Fulltext'' JobName From Tbl_Ep_FulltextDetails With(NoLock) Group By ExportId, Status Union Select ExportId, Status, Count(1) FileCount, ''Production-Native'' JobName From Tbl_Ep_NativeDetails With(NoLock) Group By ExportId, Status Union Select ExportId, Status, Count(1) FileCount, ''Production-Image'' JobName From Tbl_Ep_TiffDetails With(NoLock) Group By ExportId, Status Union Select ExportId, Status, Count(1) FileCount, ''Production-PDFConversion'' JobName From Tbl_Ep_PdfDetails With(NoLock) Group By ExportId, Status Union Select ExportId, CopyStatus, COUNT(1) AS FileCount, ''Production-Copy'' JobName FROM Tbl_Ep_ExportPrimaryTable With(NoLock) Group By ExportId, CopyStatus Update #productionTemp Set Status = 0 Where Status = -1 SELECT *, A.Progress AS [CompletedPercentage], CASE WHEN [PROGRESS] IS NULL OR [progress]= 0.0 OR [progress] = 100.0 THEN ''00:00:00'' ELSE CAST( CAST(((Datediff(ss, StartedOn, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)/3600 AS NVARCHAR) +'':''+ RIGHT(''00'' + CAST( CAST(((Datediff(ss, StartedOn, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)%3600/60 AS NVARCHAR), 2)+'':''+ RIGHT(''00'' + CAST( CAST(((Datediff(ss, StartedOn, Getdate()) / [PROGRESS]) * (100.0-[PROGRESS]) ) as BIGINT)%60 AS NVARCHAR), 2) END [ETA] FROM ( SELECT *, CASE WHEN Z.JobStatus IN (1,-1) THEN CASE WHEN Z.total>0 THEN CAST(([Failed] + [Completed])*100.00/Cast([Total] AS FLOAT) AS DECIMAL(5,2)) ELSE CAST(0.00 AS DECIMAL(5,2))END WHEN Z.JobStatus IN (2,-2) THEN CAST(100.00 AS DECIMAL(5,2)) ELSE CAST(0.00 AS DECIMAL(5,2)) END AS [Progress] FROM ( Select ExportName, ExportId, JobId, Job, Total, StartedOn, CompletedOn, Status, JobStatus, Sum(NotStarted) NotStarted, Sum(InProgress) InProgress, Sum(Completed) Completed, IsPaused, Sum(Failed) Failed From ( Select E.ExportName, E.ExportId, J.JobId, J.Name Job, E.TotalFileCount Total, Convert(Varchar(100), J.StartedOn , 121) StartedOn, Convert(Varchar(100), J.CompletedOn , 121) CompletedOn, Case When JJ.IsPaused = 1 And J.Status In (0, 1, -1) Then ''Paused'' Else Case J.Status When 0 Then ''Not Started'' When 1 Then ''In Progress'' When -1 Then ''In Progress'' When 2 Then ''Completed'' When -2 Then ''Completed With Error'' End End Status, J.Status JobStatus, Case When J.Name = ''Production-PrepareData'' And J.Status = 0 Then E.TotalFileCount Else Case When T.Status = 0 Then IsNull(T.FileCount, 0) Else 0 End End NotStarted, Case When J.Name = ''Production-PrepareData'' And J.Status = 1 Then E.TotalFileCount Else Case When T.Status = 1 Then IsNull(T.FileCount, 0) Else 0 End End InProgress, Case When J.Name = ''Production-PrepareData'' And J.Status = 2 Then E.TotalFileCount Else Case When T.Status = 2 Then IsNull(T.FileCount, E.TotalFileCount) Else 0 End End Completed, IsNull(JJ.IsPaused, 0) IsPaused, Case When J.Name = ''Production-PrepareData'' And J.Status = -2 Then E.TotalFileCount Else Case When T.Status = -2 Then IsNull(T.FileCount, E.TotalFileCount) Else 0 End End Failed From Tbl_Ep_Exports E With(NoLock) Inner Join Tbl_Ds_ProjectJobInfo J With(NoLock) On E.ExportId = J.OtherSettings.value(''(OtherSettings/ExportId)[1]'', ''Bigint'') Inner Join ( SELECT JobId, OtherSettings.value(''(/OtherSettings/IsJobPaused/node())[1]'', ''BIT'') IsPaused FROM Tbl_Ds_ProjectJobInfo WITH(NOLOCK) Where Name In (''Production-Fulltext'',''Production-Native'',''Production-Image'',''Production-PDFConversion'',''Production-Copy'',''Production-PrepareData'') )JJ On J.JobId = JJ.JobId Left Join #productionTemp T On T.ExportId = E.ExportId And T.JobName = J.Name )T Group By ExportName, ExportId, JobId, Job, Total, StartedOn, CompletedOn, Status, JobStatus, IsPaused )Z )A ORDER BY JobId END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_DeriveDataForExport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_DeriveDataForExport'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_DeriveDataForExport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Sudeep K.C. -- Create date: June 16, 2011 -- Description: Pre-populate data for export -- ChangeLog 1: June 28 2017, Gaurav - Include non email archive as parent -- ChangeLog 2: 29th August 2017, Sudhir - TreatOrphanAsParent option not working. -- ChangeLog 3: 19th December 2018, Sudhir, Add option to include archive processing level -- Puru,Archive handling option made project level so use value of Key ARCHIVE_HANDLING_LEVEL from tbl_pj_ProjectSetting, REDMINE #23479 CREATE PROCEDURE [dbo].[sp_ep_DeriveDataForExport] @GlobalTempName nvarchar(100), @GlobalTempTiffTable nvarchar(100), @MediaList nvarchar(MAX), @MainExportQuery nvarchar(max), @TiffExportQuery nvarchar(max), @DupsOption nvarchar(100), -- PROJECT_LEVEL_DEDUP, CUSTODIAN_LEVEL_DEDUP, NO_DEDUP @IncludeThread bit, @IncludeTiff bit, @IncludePC bit, @ExportId bigint, @TotalCount bigint output, @TiffCount bigint output, @IncludeNonEmailArchiveasParent Bit, @TreatOrphanasParent Bit, @IncludeArchiveFromExport bit AS BEGIN DECLARE @query nvarchar(MAX) SElECT @query = N''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@GlobalTempName+'''''')''+ '' DROP TABLE '' + @GlobalTempName + '' CREATE TABLE ''+@GlobalTempName+ '' (FileId BIGINT NOT NULL PRIMARY KEY, DerivedData BIT NOT NULL, GroupId bigint, IsParent BIT)'' EXEC sp_executesql @query DECLARE @includeArchives INT = 0 Declare @archiveFilterQuery nvarchar(max)='''' SELECT @includeArchives = [Value] FROM tbl_pj_ProjectSetting WITH(NOLOCK) WHERE [Key] = ''ARCHIVE_HANDLING_LEVEL'' IF(@IncludeArchiveFromExport=1) BEGIN SET @archiveFilterQuery = @archiveFilterQuery END ELSE IF(@includeArchives=0) BEGIN SET @archiveFilterQuery = '' AND R2.ISARCHIVE=0 '' END ELSE IF(@includeArchives=2) BEGIN SET @archiveFilterQuery = '' AND ( R2.IsARCHIVE=0 OR (R2.GroupId<>-1 AND ((R2.ISSYSTEM=0 AND R2.ISDENIST=0 AND R2.ISARCHIVE=1 AND R2.IsNonProcessed=1) OR (R2.ISSYSTEM=0 AND R2.ISDENIST=0 AND R2.ISARCHIVE=1 AND R2.IsCorrupted=1) OR ( R2.ISSYSTEM=0 AND R2.ISDENIST=0 AND R2.ISARCHIVE=1 AND R2.IsPasswordprotected=1 AND R2.IsPasswordDecrypted =0)))) '' END Declare @newMainExportQuery nvarchar(max) = Replace(@MainExportQuery, ''{excludeArchiveClause}'', @archiveFilterQuery) SELECT @query = ''INSERT INTO '' +@GlobalTempName+ '' (FileId, DerivedData, GroupId) SELECT FileId,0,GroupId FROM (''+ @newMainExportQuery + '') T1''; EXEC sp_executesql @query SELECT @TotalCount = @@ROWCOUNT print @totalcount IF(@IncludeNonEmailArchiveasParent = 1) BEGIN -- get non email archives in temporary table -- remove archive filter clause from main export query Declare @newExportQuery Nvarchar(max) = Replace(@MainExportQuery, ''{excludeArchiveClause}'' , '' '') DECLARE @NewTotalCount BIGINT = 0 CREATE TABLE #TEMPTABLE (FILEID BIGINT NOT NULL PRIMARY KEY) SET @query = ''INSERT INTO #TEMPTABLE SELECT T1.Fileid FROM TBL_EX_FILEINFO T1 WITH(NOLOCK), TBL_PJ_FILETYPESDESCRIPTION T2 WITH(NOLOCK) WHERE T1.FileId In (Select FileId From (''+ @newExportQuery + '') Tx ) AND T1.ParentFileId = -1 AND T1.IsParent IS NULL AND T1.FileType = T2.ToolsDisplayName AND T2.IsEmailArchive = 0 '' Execute Sp_ExecuteSql @query SELECT @NewTotalCount = @@ROWCOUNT print @NewTotalCount -- Process only if there are non email archive present IF(@NewTotalCount > 0) BEGIN -- insert the non email archives SET @query = '' INSERT INTO '' +@GlobalTempName +'' SELECT T1.FileId, 0, T1.FileId, 1 FROM #TEMPTABLE T1 LEFT OUTER JOIN '' + @GlobalTempName +'' T2 ON T1.FileId = T2.FileId WHERE T2.FileId IS NULL '' Execute Sp_ExecuteSql @query SELECT @NewTotalCount = @@ROWCOUNT -- set new groupid for children of non email archives SET @query = ''UPDATE T3 SET T3.GroupId = T1.FileId, T3.IsParent = 0 FROM #TEMPTABLE T1 INNER JOIN TBL_EX_FILEINFO T2 WITH(NOLOCK) ON T1.FileId = T2.ParentFileId RIGHT JOIN ''+ @GlobalTempName + '' T3 ON T3.GroupId = T2.GroupId WHERE T2.GroupId IS NOT NULL '' Execute Sp_ExecuteSql @query --set the total number of records Set @TotalCount = @TotalCount + @NewTotalCount END -- Drop temporary table SET @query = ''DROP TABLE #TEMPTABLE '' Execute Sp_ExecuteSql @query END IF (@IncludeThread = 1) BEGIN -- GET ALL THREADS SELECT @query = '' SELECT DISTINCT T1.GroupId AS GroupId,T1.FileId FROM tbl_ex_Fileinfo t1 WITH(NOLOCK), tbl_ex_EmailConversationId t2 WITH(NOLOCK), ( SELECT DISTINCT LEFT(ConversationId,44) as ConversationId FROM ''+@GlobalTempName+'' tmp WITH(NOLOCK) INNER JOIN tbl_ex_EmailConversationId ec WITH(NOLOCK) ON tmp.FileId = ec.FileId WHERE ec.ConversationId <>'''''''' )t3 WHERE t1.FileId = t2.FileId AND t2.ConversationId <> '''''''' AND LEFT(t2.ConversationId,44)=t3.Conversationid'' IF @DupsOption = ''PROJECT_LEVEL_DEDUP'' SELECT @query = @query + '' AND t1.IsDuplicate=0'' ELSE IF @DupsOption = ''CUSTODIAN_LEVEL_DEDUP'' SELECT @query = @query + '' AND t1.IsDuplicateCustodianLevel=0'' SELECT @query = ''INSERT INTO '' +@GlobalTempName+ '' (FileId, DerivedData, GroupId) ''+ ''SELECT fi.FileId, 1, fi.GroupId FROM (''+@query+'') gid, tbl_ex_fileinfo fi WITH(NOLOCK) WHERE gid.fileid = fi.FileId AND fi.IsArchive=0 AND NOT EXISTS(SELECT TOP 1 1 FROM ''+@GlobalTempName+'' WITH(NOLOCK) WHERE FileId=fi.FileId)'' EXEC sp_executesql @query SELECT @TotalCount = @TotalCount + @@ROWCOUNT END IF(@IncludePC=1) BEGIN SELECT @query='' INSERT INTO ''+@GlobalTempName+'' (FileId, DerivedData, GroupId) SELECT distinct fi.FILEID, 1, fi.GroupId FROM TBL_EX_FILEINFO fi LEFT JOIN (SELECT GROUPID,1 AS FILTER FROM ''+@GlobalTempName+'' ) T2 ON fi.GroupId=T2.GroupID WHERE t2.FILTER IS NOT NULL AND fi.ISARCHIVE=0 AND NOT EXISTS(SELECT TOP 1 1 FROM ''+@GlobalTempName+'' WITH(NOLOCK) WHERE FileId=fi.FileId) '' IF @DupsOption = ''PROJECT_LEVEL_DEDUP'' SELECT @query = @query + '' AND fi.IsDuplicate=0'' ELSE IF @DupsOption = ''CUSTODIAN_LEVEL_DEDUP'' SELECT @query = @query + '' AND fi.IsDuplicateCustodianLevel=0'' EXEC sp_executesql @query SELECT @TotalCount = @TotalCount + @@ROWCOUNT END -- Update GroupId|IsParent for rest of the docs not effected by including archives Set @query = ''UPDATE T1 SET GroupId = CASE WHEN NOT EXISTS(SELECT 1 FROM '' +@GlobalTempName+ '' WHERE FileId = t2.GroupId) AND T2.GroupId <> -1 AND ''+ CAST(@TreatOrphanasParent AS nvarchar(10)) + '' = 1 Then T1.FileId ELSE T2.GroupId END, IsParent = CASE WHEN NOT EXISTS(SELECT 1 FROM '' +@GlobalTempName+ '' WHERE FileId = t2.GroupId) AND T2.GroupId <> -1 AND ''+ CAST(@TreatOrphanasParent AS nvarchar(10)) + '' = 1 Then 1 ELSE T2.IsParent END FROM ''+@GlobalTempName +'' T1 INNER JOIN Tbl_Ex_FileInfo T2 WITH(NOLOCK) ON T1.FileId = T2.FileId WHERE T1.IsParent IS NULL '' Execute Sp_ExecuteSql @query IF(@IncludeTiff = 1) BEGIN SElECT @query = N''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@GlobalTempTiffTable+'''''')''+ '' DROP TABLE '' + @GlobalTempTiffTable + '' CREATE TABLE ''+@GlobalTempTiffTable+ '' (FileId BIGINT NOT NULL)'' EXEC sp_executesql @query DECLARE @TiffQuery nvarchar(max) SET @TiffQuery= ''INSERT INTO ''+@GlobalTempTiffTable+ ''(FileId) ''+'' SELECT FileId FROM ''+@GlobalTempName+'' ''+@TiffExportQuery EXEC sp_executesql @TiffQuery SET @TiffQuery=''SELECT @TiffCount=(SELECT COUNT(*) FROM (SELECT TI.FileId FROM ''+@GlobalTempTiffTable+ '' TT LEFT JOIN TBL_TIFF_IMAGES TI ON TT.FileId=TI.FileId ) T1)'' EXEC sp_executesql @TiffQuery, N''@TiffCount BIGINT OUTPUT'',@TiffCount output END SELECT @TIFFCOUNT=ISNULL(@TIFFCOUNT,0) END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_ComputeOriginalFilePath] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_ComputeOriginalFilePath'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_ComputeOriginalFilePath]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Sudhir Maharjan -- Create date: May 15, 2018 -- Description: Compute the original file path for export -- Modified: Anuj, Jan 18 2020, vts 12700 Path (for partition by clause) is computed based on if "Include original file extension" is unchecked (to exclude orig file extn) (ie @IncludeOriginalFileExtension is false) -- Reason of change: If two files have same name but different extension in same source location (eg Messi.pdf and Messi.docx), there was chance of file loss in FT and Image folders upon export since both would result Messi.tif for image, Messi.txt for FT. -- ============================================= CREATE PROCEDURE [dbo].[sp_ep_ComputeOriginalFilePath] ( @GlobalTempTable nvarchar(200) ,@IncludeOriginalFileExtension Bit = 1 -- default value includes original file extn as was before. ) As BEGIN DECLARE @SQL nvarchar(max) CREATE Table #tmpParentFiles (GroupId bigint, RelativeFileFolder nvarchar(2000), ParentFileName nvarchar(500)) SET @SQL ='' INSERT INTO #tmpParentFiles SELECT DISTINCT ISNULL(NULLIF(t.GroupId,-1),t.file_id_pk), REVERSE(SUBSTRING(REVERSE(RTRIM(fi.RelativeFilePath)),Len(RTRIM(fi.FileName)) +2, LEN(RTRIM(fi.RelativeFilePath)))) as RelativeFileFolder, REVERSE(SUBSTRING(REVERSE(FileName), CHARINDEX(''''.'''', REVERSE(FileName)) + 1, LEN([FileName]))) as ParentFileName FROM ''+@GlobalTempTable+'' as t LEFT JOIN tbl_ex_FileInfo fi ON ISNULL(NULLIF(t.GroupId,-1),t.file_id_pk)=fi.FileId '' exec sp_executesql @Sql /* considering following Earlier Default = 1 (ie use original file NAME AND use/include original EXTENSION) Modified setting = 0 (ie use original file NAME BUT drop/exclude original EXTENSION) */ declare @PartitionFactor varchar(max) Set @PartitionFactor = ''Case When ''+Cast(@IncludeOriginalFileExtension as varchar(10))+'' = 1 Then Path When ''+Cast(@IncludeOriginalFileExtension as varchar(10))+'' = 0 And Len(OriginalFileExtension)>0 then SubString(Path,1,Len(Path)-Len(OriginalFileExtension)-1) -- additional -1 for removing dot before extension --When ''+Cast(@IncludeOriginalFileExtension as varchar(10))+'' = 0 And Len(OriginalFileExtension)=0 then Path End Else Path End ''; SET @SQL ='' UPDATE T1 SET OriginalFilePath = CASE WHEN rn>1 then REVERSE(SUBSTRING(REVERSE(RTRIM([Path])),Len(RTRIM(OriginalFileExtension)) + 2 , LEN(RTRIM([Path])))) +''''_''''+ CAST(rn AS NVARCHAR(100)) +''''.''''+OriginalFileExtension ELSE PATH END FROM ( Select ROW_NUMBER() over(partition by ''+@PartitionFactor+'' order by FileId) rn,* FROM( Select CASE WHEN f.GroupId=-1 THEN parent.RelativeFileFolder +''''\'''' + f.FileName +''''_'''' + f.FileName WHEN t1.FILE_ID_PK=t1.GroupId THEN parent.RelativeFileFolder +''''\'''' + f.FileName WHEN EXISTS (SELECT 1 FROM ''+ @GlobalTempTable +'' WHERE FILE_ID_PK=t1.GroupId) THEN parent.RelativeFileFolder +''''\''''+ parent.parentfilename + ''''_''''+ f.FileName ELSE parent.RelativeFileFolder +''''\''''+ f.FileName END as Path, f.FileId,OriginalFileExtension FROM ''+@GlobalTempTable+'' t1 INNER JOIN tbl_ex_FileInfo f WITH(NOLOCK) on t1.FILE_ID_PK =f.FileId LEFT JOIN #tmpParentFiles parent ON ISNULL(NULLIF(t1.GroupId,-1),t1.file_id_pk) =parent.GroupId )T INNER JOIN ''+@GlobalTempTable+'' T1 ON T.FileId =T1.File_Id_PK )T INNER JOIN ''+@GlobalTempTable+'' T1 ON T.FILE_ID_PK =T1.File_Id_PK '' EXEC SP_EXECUTESQL @Sql END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------ --CREATE PROCEDURE [sp_ep_GenerateControlNumbers] ------------------------------------------------------------------ SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ep_GenerateControlNumbers]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GenerateControlNumbers]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'CREATE PROCEDURE [dbo].[sp_ep_GenerateControlNumbers] @SourceTableName Nvarchar(1000), @ControlFieldColumnName Nvarchar(100), @GUID Nvarchar(50), @Prefix NVARCHAR(100), @PadChar NChar, @PadLength Int, @StartControlNumber Bigint, @ControlTableName Nvarchar(1000) OUTPUT AS BEGIN DECLARE @SQL NVARCHAR(MAX) SET @ControlTableName = ''##TEMP_CONTROL_NUMBER_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)) SET @SQL = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ''''''+@ControlTableName+'''''') DROP TABLE '' + @ControlTableName EXECUTE SP_EXECUTESQL @SQL; SET @SQL = ''CREATE TABLE ''+@ControlTableName+'' (File_Id_Pk Bigint, ''+@ControlFieldColumnName +'' Bigint, ControlNumberField Nvarchar(2000))'' EXECUTE SP_EXECUTESQL @SQL IF OBJECT_ID(''tempdb..#Temp_Controls'') IS NOT NULL DROP TABLE #Temp_Controls CREATE TABLE #Temp_Controls (File_Id_Pk BIGINT, ControlField BIGINT, PadLength INT) SET @SQL = ''INSERT INTO #Temp_Controls SELECT File_Id_Pk, '' + @ControlFieldColumnName + '' + @StartControlNumber, @PadLength - LEN('' + @ControlFieldColumnName + '' + @StartControlNumber) FROM ''+ @SourceTableName +'' UPDATE #Temp_Controls SET PadLength = 0 WHERE PadLength < 0 '' Execute Sp_ExecuteSql @Sql, N''@PadLength Int, @ControlFieldColumnName Nvarchar(100), @StartControlNumber BigInt, @SourceTableName Nvarchar(1000)'', @PadLength = @PadLength, @ControlFieldColumnName = @ControlFieldColumnName, @StartControlNumber = @StartControlNumber, @SourceTableName = @SourceTableName SET @SQL = ''INSERT INTO ''+ @ControlTableName +'' SELECT File_Id_Pk, ControlField - @StartControlNumber, @Prefix + REPLICATE(@PadChar, PadLength) + CAST((ControlField ) as nvarchar(100)) ControlNumber FROM #Temp_Controls '' Execute Sp_ExecuteSql @Sql, N''@ControlTableName Nvarchar(1000), @StartControlNumber Bigint, @Prefix Nvarchar(100), @PadChar NChar'', @ControlTableName = @ControlTableName, @StartControlNumber = @StartControlNumber, @Prefix = @Prefix , @PadChar = @PadChar DROP TABLE #Temp_Controls SET @SQL = ''CREATE NONCLUSTERED INDEX idx_File_Id_Pk_''+@ControlTableName+'' ON ''+@ControlTableName+''(File_Id_Pk) INCLUDE(ControlNumberField)'' EXEC SP_EXECUTESQL @SQL END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------ --CREATE PROCEDURE [sp_ep_GenerateBatesNumbers] ------------------------------------------------------------------ SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ep_GenerateBatesNumbers]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GenerateBatesNumbers]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' --Change log --1. Anuj: April 10, 2020 -> VTS 20939, Redmine 23783: Change behaviour of taking page number - Instead of actual image page number, -- take sequential page number (eg applicable when blank or bad tiffs are excluded for export). CREATE PROCEDURE [dbo].[sp_ep_GenerateBatesNumbers] @SourceTableName Nvarchar(1000), @FieldColumnName Nvarchar(100), @GUID Nvarchar(50), @PadChar Nvarchar(10), @PadLength Int, @SeparatorChar NVarchar(10), @StartWithFirstPage Bit, @StartSecondPageByOne Bit, @BatesTableName Nvarchar(1000) OUTPUT AS BEGIN DECLARE @SQL Nvarchar(max) SET @BatesTableName = ''##TEMP_BATES_NUMBER_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)) SET @SQL = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ''''''+@BatesTableName+'''''') DROP TABLE '' + @BatesTableName EXECUTE SP_EXECUTESQL @SQL; SET @SQL = ''CREATE TABLE ''+@BatesTableName+'' (File_Id_Pk BigInt, PageNumber Int, ''+ @FieldColumnName +'' Nvarchar(2000), BatesNumberField Nvarchar(2000))'' EXECUTE SP_EXECUTESQL @SQL IF OBJECT_ID(''tempdb..#Temp_Controls'') IS NOT NULL DROP TABLE #Temp_Controls CREATE TABLE #Temp_Controls (File_Id_Pk Bigint, PageNumber Int,page_seq_no Int, PadLength Int, FieldColumn Nvarchar(max)) SET @SQL = ''INSERT INTO #Temp_Controls SELECT File_Id_Pk, PageNumber, page_seq_no, @PadLength - LEN(page_seq_no) PadLength, ''+ @FieldColumnName +'' As BatesNumber FROM ''+ @SourceTableName +'' UPDATE #Temp_Controls SET PadLength = 0 WHERE PadLength < 0 '' Execute Sp_ExecuteSql @Sql, N''@PadLength Int, @FieldColumnName Nvarchar(100), @SourceTableName Nvarchar(100)'', @PadLength = @PadLength, @FieldColumnName = @FieldColumnName, @SourceTableName = @SourceTableName IF(@StartWithFirstPage = 1) BEGIN SET @SQL = ''INSERT INTO '' + @BatesTableName + '' SELECT File_Id_Pk, PageNumber, FieldColumn, Cast(FieldColumn as Nvarchar(100)) + @SeparatorChar + REPLICATE(@PadChar, PadLength) + CAST(page_seq_no AS Nvarchar(100)) FROM #Temp_Controls '' Execute Sp_ExecuteSql @Sql, N''@BatesTableName Nvarchar(1000), @SeparatorChar Nvarchar(10), @PadChar Nvarchar(10)'', @BatesTableName = @BatesTableName, @SeparatorChar = @SeparatorChar, @PadChar = @PadChar END ELSE BEGIN SET @SQL = ''INSERT INTO '' + @BatesTableName + '' SELECT File_Id_Pk, PageNumber, FieldColumn, FieldColumn FROM #Temp_Controls WHERE page_seq_no = 1 '' Execute Sp_ExecuteSql @Sql IF(@StartSecondPageByOne = 0) BEGIN SET @SQL = ''INSERT INTO '' + @BatesTableName + '' SELECT File_Id_Pk, PageNumber, FieldColumn, FieldColumn + @SeparatorChar + REPLICATE(@PadChar, PadLength) + CAST(page_seq_no as Nvarchar(100)) FROM #Temp_Controls WHERE page_seq_no > 1 '' Execute Sp_ExecuteSql @Sql, N''@BatesTableName Nvarchar(1000), @SeparatorChar Nvarchar(10), @PadChar Nvarchar(10)'', @BatesTableName = @BatesTableName, @SeparatorChar = @SeparatorChar, @PadChar = @PadChar END ELSE BEGIN SET @SQL = ''TRUNCATE TABLE #Temp_Controls INSERT INTO #Temp_Controls SELECT File_Id_Pk, PageNumber - 1, page_seq_no - 1, @PadLength - LEN(page_seq_no - 1) PadLength, '' + @FieldColumnName + '' FROM '' + @SourceTableName + '' WHERE page_seq_no > 1 UPDATE #Temp_Controls SET PadLength = 0 WHERE PadLength < 0 '' Execute Sp_ExecuteSql @Sql, N''@PadLength Int, @FieldColumnName Nvarchar(100), @SourceTableName Nvarchar(1000)'', @PadLength = @PadLength, @FieldColumnName = @FieldColumnName, @SourceTableName = @SourceTableName SET @SQL = ''INSERT INTO '' + @BatesTableName + '' SELECT File_Id_Pk, PageNumber + 1, FieldColumn, FieldColumn + @SeparatorChar + REPLICATE(@PadChar, PadLength) + CAST(page_seq_no AS Nvarchar(100)) FROM #Temp_Controls '' Execute Sp_ExecuteSql @Sql, N''@BatesTableName Nvarchar(1000), @SeparatorChar Nvarchar(10), @PadChar Nvarchar(10)'', @BatesTableName = @BatesTableName, @SeparatorChar = @SeparatorChar, @PadChar = @PadChar END END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------ --CREATE PROCEDURE [sp_ep_GenerateCustomControlNumbers] ------------------------------------------------------------------ SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ep_GenerateCustomControlNumbers]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GenerateCustomControlNumbers]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE Procedure [dbo].[sp_ep_GenerateCustomControlNumbers] @CustomField Nvarchar(500), @Guid Nvarchar(50), @TempTable Nvarchar(Max), @TempTableImage Nvarchar(Max), @ControlBatesNumberTable Nvarchar(1000) OUTPUT As Begin if object_ID(''Tempdb..#CustomBatesNumber'') Is Not Null Drop Table #CustomBatesNumber Create Table #CustomBatesNumber (SeqNo BigInt, FileId Bigint, CustomField Nvarchar(2000), PageNumber Int, ReverseField Nvarchar(2000), RequiredField Nvarchar(2000), ComputedField Nvarchar(2000)) Declare @Sql Nvarchar(max) Set @Sql = '' Insert into #CustomBatesNumber(SeqNo, FileId, CustomField, PageNumber) Select T2.Tiff_Seq_No, T1.File_Id_Pk, T3.''+ @CustomField +'', T2.PageNumber From ''+@TempTable+'' T1 Inner Join ''+@TempTableImage+'' T2 On T1.File_Id_Pk = T2.File_Id_Pk Inner Join Tbl_Rev_CustomField T3 On T1.File_Id_Pk = T3.FileId Order by T1.Seq_No, T2.Tiff_Seq_No '' Execute sp_ExecuteSql @Sql Update #CustomBatesNumber Set ReverseField = REVERSE(CustomField) Update #CustomBatesNumber Set RequiredField = REVERSE(SUBSTRING(ReverseField, 0, PatIndex(''%[^0-9]%'', ReverseField))) Update T1 Set ComputedField = SUBSTRING(CustomField, 0, Len(CustomField) - Len(RequiredField) + 1) + RIGHT(REPLICATE(''0'', Len(RequiredField)) + CAST(RequiredField + PageNumber - 1 as Nvarchar(200)), Len(RequiredField)) From #CustomBatesNumber T1 Update #CustomBatesNumber Set ComputedField = ''NA_'' + Cast(FileId As Nvarchar(100)) + ''_'' + Cast(PageNumber As Nvarchar(100)) Where ComputedField Is Null Set @ControlBatesNumberTable = ''##TempControlBatesNumbers''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)) Set @Sql = ''If Exists(Select Table_Name From Tempdb.Information_Schema.Tables Where Table_Name = ''''''+@ControlBatesNumberTable+'''''') Drop Table '' + @ControlBatesNumberTable Execute sp_ExecuteSql @Sql Set @Sql = ''Create Table ''+@ControlBatesNumberTable+''(File_Id_Pk Bigint, PageNumber Int, BatesNumberField Nvarchar(2000))'' Execute sp_ExecuteSql @Sql Set @Sql = ''Insert Into ''+ @ControlBatesNumberTable + '' Select FileId, PageNumber, Case When Rn = 1 Then ComputedField Else ComputedField + ''''_'''' + Cast(Rn as nvarchar(10)) End From ( Select Row_Number() Over(partition by ComputedField Order by SeqNo) Rn, * From ( Select SeqNo, FileId, PageNumber, ComputedField From #CustomBatesNumber Union All Select 0, T2.File_Id_PK, T2.Page_Number, BatesNumber From Tbl_Ep_Exports T1 With(NoLock), Tbl_Ep_ExportTiffPrimaryTable T2 With(NoLock) Where T1.ExportId = T2.ExportId And T1.IsReExport = 0 ) T )TT Where SeqNo <> 0 Order by FileId, PageNumber, SeqNo '' Execute sp_ExecuteSql @Sql End ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------ --CREATE PROCEDURE [sp_ep_GenerateSourceControlNumbers] ------------------------------------------------------------------ SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ep_GenerateSourceControlNumbers]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GenerateSourceControlNumbers]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' CREATE Procedure [dbo].[sp_ep_GenerateSourceControlNumbers] @ExportId BigInt, @Guid Nvarchar(50), @TempTableName Nvarchar(max), @IsForSummary bit, @ControlBatesTable nvarchar(1000) OutPut As Begin Declare @source Nvarchar(200) Declare @Sql Nvarchar(Max) Set @ControlBatesTable = ''##TempControlBates_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)) Set @Sql = ''if Exists(Select Table_Name From TEMPDB.INFORMATION_SCHEMA.TABLES Where Table_Name = ''''''+@ControlBatesTable+'''''') Drop Table '' + @ControlBatesTable Execute sp_Executesql @sql Set @Sql = ''Create Table ''+@ControlBatesTable+'' (SeqNo Bigint, File_Id_Pk Bigint, ControlNumberField Nvarchar(2000))'' Execute sp_Executesql @sql Declare @TableName Nvarchar(500) = ''Tbl_Ep_SourceNumbers'' Set @Sql = ''Select Top 1 @source = SourceType from ''+@TableName + '' Where ExportId = @ExportId '' if @IsForSummary = 1 Begin Set @TableName = ''##Global_Export_Source_Temp_'' + @Guid Set @Sql = ''Select Top 1 @source = SourceType from ''+@TableName End Execute Sp_ExecuteSql @Sql, N''@ExportId Bigint, @source Nvarchar(200) output'', @ExportId = @ExportId, @source = @source Output if @source Is Null Return if @source = ''Custodian'' begin Set @Sql = '' Select Row_Number() Over(Partition by T2.FileId Order by T7.DataId) RowId, T1.Seq_No SeqNo, T2.FileId, T7.DataId From ''+@TempTableName+'' T1 Inner Join Tbl_Ex_FileInfo T2 With(NoLock) On T1.File_Id_Pk = T2.FileId Inner Join Tbl_Ex_Custodian T3 With(NoLock) On T2.CustodianId = T3.CustodianId Inner Join ''+@TableName+'' T7 On T3.CustodianId = T7.DataId '' end Else if @source = ''Tag'' Begin Set @Sql = '' Select Row_Number() Over(Partition by T2.FileId Order by T7.DataId) RowId, T1.Seq_No SeqNo, T2.FileId, T7.DataId From ''+@TempTableName+'' T1 Inner Join Tbl_Ex_FileInfo T2 With(NoLock) On T1.File_Id_Pk = T2.FileId Inner Join Tbl_Ex_FileTagAssociation T3 With(NoLock) On T2.FileId = T3.FileId Inner Join Tbl_Ex_Tag T4 With(NoLock) On T4.TagId = T3.TagId Inner Join ''+@TableName+'' T7 On T4.TagId = T7.DataId '' end else if @source = ''Folder'' Begin Set @Sql = '' Select Row_Number() Over(Partition by T2.FileId Order by T7.DataId) RowId, T1.Seq_No SeqNo, T2.FileId, T7.DataId From ''+@TempTableName+'' T1 Inner Join Tbl_Ex_FileInfo T2 With(NoLock) On T1.File_Id_Pk = T2.FileId Inner Join Tbl_Fd_FolderFilesAssociation T3 With(NoLock) On T2.FileId = T3.FileId Inner Join Tbl_Fd_FolderHierarchy T4 With(NoLock) On T4.FolderId = T3.FolderId Inner Join ''+@TableName+'' T7 On T4.FolderId = T7.DataId '' End if @IsForSummary = 0 Set @Sql = @Sql + '' Where T7.ExportId = @ExportId '' if Object_Id(''Tempdb..#SourceOptionControlNumbers'') Is Not Null Drop Table #SourceOptionControlNumbers Create Table #SourceOptionControlNumbers(OldSeqNo Bigint Not Null, SeqNo Bigint, FileId BigInt Not Null, DataId BigInt, ControlNumber Nvarchar(2000)) Set @Sql = ''Insert Into #SourceOptionControlNumbers (OldSeqNo, FileId, DataId) Select SeqNo, FileId, DataId From ( ''+ @Sql + '') x Where RowId = 1 Order by SeqNo '' Execute sp_ExecuteSql @Sql, N''@ExportId Bigint'', @ExportId = @ExportId -- Reset sequence numbers for different prefix Update T1 Set SeqNo = OldSeqNo - MinVal From #SourceOptionControlNumbers T1 Inner Join (Select DataId, Min(OldSeqNo) - 1 MinVal from #SourceOptionControlNumbers Group By DataId) T2 On T1.DataId = T2.DataId -- get control number based on different prefix Set @Sql = '' Update T1 Set ControlNumber = T2.Prefix + REPLICATE(''''0'''', T2.Padding - Len(T1.SeqNo + T2.StartNumber - 1)) + Cast(T1.SeqNo + T2.StartNumber - 1 as nvarchar(100)) From #SourceOptionControlNumbers T1 Inner Join ''+@TableName +'' T2 On T1.DataId = T2.DataId '' if @IsForSummary = 0 Set @Sql = @Sql + '' Where T2.ExportId = @ExportId '' Execute sp_ExecuteSql @Sql, N''@ExportId Bigint'', @ExportId = @ExportId Set @Sql = ''Insert Into ''+@ControlBatesTable+'' Select SeqNo, FileId, ControlNumber From #SourceOptionControlNumbers '' Execute Sp_ExecuteSql @Sql Drop Table #SourceOptionControlNumbers End ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_PrepareDataForExport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_PrepareDataForExport'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_PrepareDataForExport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- =============================================================== -- Author: sudeep -- MODIFIED BY: -- CREATED DATE: 27 Jan 2011 -- Description: Create Temp Table for Export -- Modified Date: April 29 2014 -- Description : Multiple column Sorting -- ChangeLog1: 31st July 2014, Sudhir Maharjan, -- Issue Fixed: TotalPageCount value should be taken from tbl_tiff_shadow but it was calculated from tbl_qc_images -- ChangeLog2: 12th Sept 2014, Sudhir Maharjan -- Option added to sort the export data by custom fields -- ChangeLog3: 17th Oct 2014, Sudhir Maharjan, #3159 -- Parent child not together when export with order by Original file folder -- ChangeLog4: 20th Oct 2014, Sudhir Maharjan, #3179 -- For control number fields mapping changed. -- ChangeLog5: 5th Jan 2015, Sudhir Maharjan, #4065 -- Sort order not sorted correctly when ''Original_File_Folder'' sorting is selected. -- ChangeLog6: 12th Jan 2015, Sudhir Maharjan, #4134 -- BEGIN_ATTACHMENT_CONTROL_NUMBER,BEGIN_ATTACHMENT_BATES_NUMBER,control.bates number range fields etc fields are not populated correctly. -- ChangeLog7: 11th March 2015, Sudhir Maharjan, #4737 -- Parent child not together when export with order by Original file folder. -- ChangeLog8: 6th April 2015, Sudhir Maharjan, #4989 -- Added option to user system bates. -- ChangeLog9: 24th April 2015, Sudhir, #5238, Exclude the page count of excluded files (placeholder option is ''do not export anything'' for not exported) -- from total tiff count as they are not exported. -- ChangeLog10: 26 June 2015, Gaurav, #5720 - Parameter added for bates as control number -- ChangeLog11: 7th Aug 2015, Sudhir, Issue Fixed: Secondary temp table of control number not populated when tiff is not selected -- ChangeLog12: 12th July 2015, Sudhir Maharjan, Custom fields are enclosed with [] when export sorting is custom field -- ChangeLog13: 12th Aug 2015, Nvarchar size of control number fields increased to 2000 -- ChangeLog14: 2nd Dec 2015, GM, Null/Empty Filename handled if control number generated from file name -- ChangeLog15 :27th Oct 2015, Sudhir, Export multiple loadfile support changes -- ChangeLog16: 11th Nov 2016, #13125, Sudhir Maharjan, Added option to include bad images -- ChangeLog17: 16th Nov 2016, #13325, Sudhir Maharjan, Generate sequential number as suffix while some pages are marked as blank when generating bates_number -- ChangeLog18: Jan 11 2017, Gaurav: Allow to use any field to generate control number -- ChangeLog19: Feb 17 2017, Gaurav: Maintain original control number -- ChangeLog20: Mar 30 2017, Gaurav: Parameters added for padding from first/second page + second page padding start from 1/2 -- ChangeLog21: 10th April 2017, Sudhir- white spaces are trimmed when using subtring function -- ChangeLog22: 13th April 2015, Sudhir, When Image is not exported but bates fields are available then generate bates for single page only. -- ChangeLog23: June 28 2017, Gaurav - Include non email archive as parent -- ChangeLog24: July 25 2017, Gaurav - Sort order original file name added -- ChnageLog25: October 26 2017, Sudhir - Added option to include/exclude image by tag. -- ChangeLog26: January29 2018, Sudhir - Do not compute folder id for tiff when called for summary in console. -- ChangeLog27: May 7th 2018, #19535, Export with System bates not working when tiffed with error. -- ChangeLog28: May 15 2018, #18901, Sudhir - Compute OriginalFilePath for export when ''UseOriginalFilePath'' option is selected. -- ChangeLog29: May 29 2018, #19424, Gaurav - Compute bad tiffs query optimized -- ChangeLog30: June 14 2018, #15855, Gaurav - Generate control/bates number optimized - Export error - query timing out due to FN_EN_GETEXPORTDOCID() -- ChangeLog31: July 20 2018, #15855, Gaurav - Sort Documents by custodian name -- ChangeLog32: January 2 2019, #20735, Sudhir - Child documents are not sorted properly -- ChangeLog33: May 17 2019, #21561, Sudhir - Parent documents are not sorted properly with second/third sorting order -- ChangeLog34: April 17 2020, #23846, Anuj - RELATIVE_FILE_PATH socrt issue -- ChangeLog35: Sep 22 2020, #26141, Jasmeen - MEDIA_NAME Added in Export Sort -- ChangeLog36: Dec 28 2020, vts 21968, Anuj - Bates number should be assigned irrespective of the placeholder setting, including Do not export anything option -- ChangeLog37: Jan 14 2021, vts 21829, 21884, 21885, Anuj - Numeric custom field sorts like text - Issue fixed -- ============================================================================================ CREATE PROCEDURE [dbo].[sp_ep_PrepareDataForExport] ( @GlobalTempTable NVARCHAR(MAX), @GlobalTempTiffTable NVARCHAR(MAX), @ControlNumberPrefix NVARCHAR(100), @ControlNumberPadLength BIGINT, @StartControlNumber BIGINT, @ExportFileCount INT OUTPUT, @MainExportQuery NVARCHAR(MAX), @MediaList nvarchar(MAX), @DupsOption nvarchar(100), -- PROJECT_LEVEL_DEDUP, CUSTODIAN_LEVEL_DEDUP, NO_DEDUP @IncludeThread bit, @TiffEnable bit, @BatesNumberPrefix NVARCHAR(100), @BatesNumberPadLength BIGINT, @StartBatesNumber BIGINT, @TagIdList NVARCHAR(MAX), @FileTypeList NVARCHAR(MAX), @ExcludeTiffFiles bit, @IncludePC bit, @BatesType nvarchar(50), -- ''BATES_SEQUENTIAL'': sequential bates number, ''BATES_FROM_CONTROL_NUMBER'': bates number is to generate from control number, ''BATES_SYSTEM'': System Bates @ExportId bigint, -- EXPORT ID THAT IS STARTED FROM JOB STATUS UI @GUID nvarchar(50), -- GUID TO CONCAT WITH TEMP TABLES TO MAKE THE TEMP TABLES UNIQUE @TotalTiffCount bigint output, @SORTBY1 NVARCHAR(100), -- MULTIPLE COLUMN SORTING @SORTBY2 NVARCHAR(100), @SORTBY3 NVARCHAR(100), @SORTORDER1 NVARCHAR(100), @SORTORDER2 NVARCHAR(100), @SORTORDER3 NVARCHAR(100), @ControlNumberByFileName bit, @DoNotExportAnything_Excluded bit, --CL9 -True when file is excluded and placeholder option is "do not export anything" @GenerateControlNumberFromBates bit, --CL10 @IncludeCustodian bit, @IncludeMedia bit, @NativeFilesPerFolder int, @FulltextFilesPerFolder int, @TiffFilesPerFolder int, @PagesTogether bit, @TreatOrphanAsParent bit, @FamilyTogether bit, @StartFolderByOne bit, @StartFolderNo int, @MultipageTiff bit, @IsVolumeBased Bit, @BatesControlSeparator Nvarchar(10), @IncludeBadTiff bit, @ControlNumberField Nvarchar(1000), @IsDefaultControlNumber Bit, @PadFromFirstPage Bit, -- starts padding page number from :1=> first page :0=> second page @PadStartNumberByOne Bit, -- pads second page starting with :1=> 1 :0=> 2 @IsBatesFieldRequired Bit, @IncludeNonEmailArchiveasParent Bit, @TagExcludeType nvarchar(30), @ForSummary bit =0, @UseOriginalFileName bit, @IncludeOriginalFileExtension bit = 1, @SortByCustodian Bit = 1, @CustodianSortOrder Nvarchar(100), @IncludeArchiveFromExport bit, @ControlNumberFromSource bit ) AS BEGIN DECLARE @V_DROP_QRY NVARCHAR(MAX); DECLARE @V_CREATE_QRY NVARCHAR(MAX); DECLARE @QUERY nvarchar(max) DECLARE @V_TMP_TABLE NVARCHAR(1000); DECLARE @V_INS_QRY NVARCHAR(MAX) DECLARE @PreLoadTempTable NVARCHAR(100) DECLARE @OrderedInsertQuery NVARCHAR(MAX) DECLARE @TiffCount BIGINT Declare @orderClause nvarchar(max) SET @PreLoadTempTable = ''##TEMP_EXPORT_PRE_LOAD_''+@GUID+''_'' + CAST(@@SPID AS VARCHAR(32)); EXEC sp_ep_DeriveDataForExport @PreLoadTempTable, '''', @MediaList, @MainExportQuery, '''', @DupsOption, @IncludeThread, 0, @IncludePC, @ExportId, @ExportFileCount OUTPUT, @TiffCount OUTPUT, @IncludeNonEmailArchiveasParent, @TreatOrphanAsParent, @IncludeArchiveFromExport select @TotalTiffCount=ISNULL(@TiffCount,0) SET @V_TMP_TABLE=''##TEMP_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)); SET @V_CREATE_QRY = '' IF OBJECT_ID(''''tempdb..''+@V_TMP_TABLE +'''''') IS NOT NULL DROP TABLE ''+@V_TMP_TABLE +'' CREATE TABLE '' + @V_TMP_TABLE + '' ( SEQ_NO BIGINT IDENTITY(1,1) , FILE_ID_PK BIGINT, DERIVEDDATA BIT, GROUPID BIGINT, ISPARENT BIT, CONSTRAINT [PK_'' + @V_TMP_TABLE + '' ] PRIMARY KEY CLUSTERED ([SEQ_NO] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] '' ; EXECUTE SP_EXECUTESQL @V_CREATE_QRY ; DECLARE @ParentSortedTempTable nvarchar(max) =''##tmpParentSorted_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)); SET @V_CREATE_QRY ='' IF OBJECT_ID(''''tempdb..''+@ParentSortedTempTable +'''''') IS NOT NULL DROP TABLE ''+@ParentSortedTempTable +'' CREATE TABLE ''+@ParentSortedTempTable +'' ( SEQ_NO BIGINT IDENTITY(1,1), FileID BIGINT, GroupId BIGINT, IsParent BIT, CONSTRAINT [PK_''+@ParentSortedTempTable+''] PRIMARY KEY CLUSTERED ([SEQ_NO] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] '' EXECUTE SP_EXECUTESQL @V_CREATE_QRY ; DECLARE @ParentSortQuery nvarchar(max) SET @ParentSortQuery=''SELECT T1.FileId,T1.GroupId,T1.IsParent FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK) LEFT JOIN tbl_ex_fileinfo T2 WITH(NOLOCK) ON t1.FileId=T2.FileId '' SET @OrderedInsertQuery = ''SELECT T1.FileId, T1.DerivedData, T1.GroupId, T1.IsParent FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK) LEFT JOIN tbl_ex_fileinfo T2 WITH(NOLOCK) ON t1.FileId=t2.FileId LEFT JOIN tbl_rev_CustomField custom on t1.FileId=custom.FileId LEFT JOIN ''+@ParentSortedTempTable+'' tsorted ON t1.GroupId =tsorted.GroupId '' IF @SORTBY1 = ''ORIGINAL_FOLDER_PATH'' OR @SORTBY2 = ''ORIGINAL_FOLDER_PATH'' OR @SORTBY3 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @orderClause = '' ORDER BY '' set @query=''select @output = Case when ''''''+@SortBy1+''''''=''''ORIGINAL_FOLDER_PATH'''' then ''''FileFolder ''+@SORTORDER1+ '''''' when ''''''+@SortBy2+''''''=''''ORIGINAL_FOLDER_PATH'''' then ''''FileFolder ''+@SORTORDER2+ '''''' when ''''''+@SortBy3+''''''=''''ORIGINAL_FOLDER_PATH'''' then ''''FileFolder ''+@SORTORDER3+ '''''' else ''''FileFolder'''' end '' DECLARE @output nvarchar(max) EXECUTE SP_EXECUTESQL @QUERY,N''@output nvarchar(100) output'', @output = @output output ; CREATE TABLE #TMPFILEFOLDER (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, ORIGINALFILEFOLDER NVARCHAR(MAX)) SET @QUERY ='' -- case statement not required as only the parents are fetched from the table by the clause {ISPARENT=1 } -- get the groupId from PRE LOAD TEMP TABLE -- get the parent from PRE LOAD TEMP TABLE [Parent => {FileId = GroupId}] -- same for relative file path just below this INSERT INTO #TMPFILEFOLDER SELECT T1.GroupId, REVERSE(SUBSTRING(REVERSE(RTRIM([OriginalFilePath])),Len(RTRIM(FileName)) + 2 , LEN(RTRIM([OriginalFilePath])))) [FileFolder] FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_fileinfo finfo {custodianTable} WHERE T1.Fileid=finfo.Fileid and T1.IsParent=1 {custodianClause} {orderClause} '' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' CASE IsEdocs WHEN 1 THEN 1 ELSE 0 END DESC, ''+@output+'', FINFO.GroupDate, T1.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXECUTE SP_EXECUTESQL @QUERY; SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpFileFolder T3 ON T1.GroupId =T3.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #TMPFILEFOLDER T3 ON T1.GroupId = T3.GroupId '' END IF @SORTBY1 = ''RELATIVE_FILE_PATH'' OR @SORTBY2 = ''RELATIVE_FILE_PATH'' OR @SORTBY3 = ''RELATIVE_FILE_PATH'' BEGIN SET @orderClause = '' ORDER BY '' SET @query=''SELECT @outputRelativePath = CASE WHEN ''''''+@SortBy1+''''''=''''RELATIVE_FILE_PATH'''' THEN ''''FileFolder ''+@SORTORDER1+ '', FileName ''+@SORTORDER1+ '''''' WHEN ''''''+@SortBy2+''''''=''''RELATIVE_FILE_PATH'''' THEN ''''FileFolder ''+@SORTORDER2+ '', FileName ''+@SORTORDER2+'''''' WHEN ''''''+@SortBy3+''''''=''''RELATIVE_FILE_PATH'''' THEN ''''FileFolder ''+@SORTORDER3+ '', FileName ''+@SORTORDER3+'''''' ELSE ''''FileFolder, FileName'''' END '' DECLARE @outputRelativePath nvarchar(max) EXECUTE SP_EXECUTESQL @QUERY,N''@outputRelativePath NVARCHAR(100) output'', @outputRelativePath= @outputRelativePath output ; CREATE TABLE #TMPFILEFOLDERRELATIVEPATH (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, ORIGINALFILEFOLDER NVARCHAR(MAX)) SET @QUERY ='' INSERT INTO #TMPFILEFOLDERRELATIVEPATH SELECT T1.GroupId, REVERSE(SUBSTRING(REVERSE(RTRIM(RelativeFilePath)),Len(RTRIM(FileName)) +2, LEN(RTRIM(RelativeFilePath)))) [FileFolder] FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), TBL_EX_FILEINFO FI {custodianTable} WHERE T1.FILEID=FI.FILEID AND T1.ISPARENT=1 {custodianClause} {orderClause} '' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = fi.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' ''+@outputRelativePath+'', T1.GROUPID '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXECUTE SP_EXECUTESQL @QUERY; SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #TMPFILEFOLDERRELATIVEPATH T5 ON T1.GroupId =T5.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #TMPFILEFOLDERRELATIVEPATH T5 ON T1.GroupId = T5.GroupId '' END IF @SORTBY1 = ''EMAIL_THREAD'' OR @SORTBY2 = ''EMAIL_THREAD'' OR @SORTBY3 = ''EMAIL_THREAD'' BEGIN CREATE TABLE #TMPCONVID (GroupId BIGINT PRIMARY KEY, CONVID NVARCHAR(MAX)) SET @QUERY = '' INSERT INTO #TMPCONVID (GroupId, CONVID) SELECT GroupId, ConversationId FROM ( SELECT T1.GroupId, ConversationId, ROW_NUMBER() OVER(PARTITION BY T1.GroupId ORDER BY T2.FileId ASC) AS PrefId FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_fileinfo T2 WITH(NOLOCK), tbl_ex_emailconversationid T3 WITH(NOLOCK) WHERE T1.FileId = T2.FileId AND T2.FileId = T3.FileId AND T3.ConversationId<>'''''''' )ZZ WHERE ZZ.PrefId = 1'' EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #TMPCONVID T4 ON T1.GroupId =T4.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #TMPCONVID T4 WITH(NOLOCK) ON T1.GroupId = T4.GroupId '' END IF @SORTBY1 = ''ORIGINAL_FILE_NAME'' OR @SORTBY2 = ''ORIGINAL_FILE_NAME'' OR @SORTBY3 = ''ORIGINAL_FILE_NAME'' BEGIN SET @orderClause = '' ORDER BY '' CREATE TABLE #tmpFileName (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, OriginalFileName NVARCHAR(MAX)) SET @QUERY = '' INSERT INTO #tmpFileName SELECT T1.GroupId, finfo.FileName FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_FileInfo finfo {custodianTable} WHERE T1.FileId=finfo.FileId and T1.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' finfo.FileName,finfo.GroupDate, T1.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpFileName tfilename ON T1.GroupId =tfilename.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpFileName tfilename WITH(NOLOCK) ON T1.GroupId = tfilename.GroupId '' END IF @SORTBY1 = ''MEDIA_NAME'' OR @SORTBY2 = ''MEDIA_NAME'' OR @SORTBY3 = ''MEDIA_NAME'' BEGIN SET @orderClause = '' ORDER BY '' CREATE TABLE #tmpMediaName (SEQ_NO BIGINT IDENTITY(1,1), MediaId BIGINT ,GroupId Bigint,FileId bigint, Media_Name NVARCHAR(200)) SET @QUERY = '' INSERT INTO #tmpMediaName SELECT M.MediaId, T1.GroupId, T1.Fileid, M.MediaName FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_Media M with(nolock), tbl_ex_FileInfo finfo with(nolock) {custodianTable} WHERE T1.FileId=finfo.FileId and finfo.MediaId=M.MediaId {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' M.MediaName,M.MediaId,T1.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpMediaName tMediaName ON T1.FileId =tMediaName.FileId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpMediaName tMediaName WITH(NOLOCK) ON T1.FileId = tMediaName.FileId '' END IF(@SORTBY1<>''EMAIL_THREAD'' AND @SORTBY1<>''RELATIVE_FILE_PATH'' AND @SORTBY1<>''ORIGINAL_FOLDER_PATH'' AND @SORTBY1<>''GROUP_DATE'' AND @SORTBY1<>''INGESTION_ORDER'' AND @SORTBY1<>''ORIGINAL_FILE_NAME'' AND @SORTBY1<>''MEDIA_NAME'') BEGIN SET @orderClause = '' ORDER BY '' CREATE TABLE #tmpCustom1 (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, CustomField1 NVARCHAR(MAX)) SET @QUERY = '' INSERT INTO #tmpCustom1 SELECT T1.GroupId, cf.''+ @SORTBY1 +'' [CustomField1] FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_FileInfo finfo, tbl_rev_CustomField cf {custodianTable} WHERE T1.Fileid=cf.Fileid and T1.FileId=finfo.FileId and T1.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' CustomField1,finfo.GroupDate, T1.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpCustom1 tcustom1 ON T1.GroupId =tcustom1.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpCustom1 tcustom1 WITH(NOLOCK) ON T1.GroupId = tcustom1.GroupId '' END IF(@SORTBY2<>'''' AND @SORTBY2<>''EMAIL_THREAD'' AND @SORTBY2<>''RELATIVE_FILE_PATH'' AND @SORTBY2<>''ORIGINAL_FOLDER_PATH'' AND @SORTBY2<>''GROUP_DATE'' AND @SORTBY2<>''INGESTION_ORDER'' AND @SORTBY2<>''ORIGINAL_FILE_NAME'' AND @SORTBY2<>''MEDIA_NAME'') BEGIN CREATE TABLE #tmpCustom2 (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, CustomField2 NVARCHAR(MAX)) SET @orderClause ='' Order by '' SET @QUERY = '' INSERT INTO #tmpCustom2 SELECT T1.GroupId, cf.''+ @SORTBY2 +'' [CustomField2] FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_FileInfo finfo, tbl_rev_CustomField cf {custodianTable} WHERE T1.Fileid=cf.Fileid and T1.FileId=finfo.FileId and T1.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause =@orderClause + '' CustomField2,finfo.GroupDate, T1.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpCustom2 tcustom2 ON T1.GroupId =tcustom2.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpCustom2 tcustom2 WITH(NOLOCK) ON T1.GroupId = tcustom2.GroupId '' END IF(@SORTBY3<>'''' AND @SORTBY3<>''EMAIL_THREAD'' AND @SORTBY3<>''RELATIVE_FILE_PATH'' AND @SORTBY3<>''ORIGINAL_FOLDER_PATH'' AND @SORTBY3<>''GROUP_DATE'' AND @SORTBY3<>''INGESTION_ORDER'' AND @SORTBY3<>''ORIGINAL_FILE_NAME'' AND @SORTBY3<>''MEDIA_NAME'') BEGIN CREATE TABLE #tmpCustom3 (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, CustomField3 NVARCHAR(MAX)) SET @orderClause ='' Order by '' SET @QUERY = '' INSERT INTO #tmpCustom3 SELECT T1.GroupId, cf.''+ @SORTBY3 +'' [CustomField3] FROM ''+@PreLoadTempTable+'' T1 WITH(NOLOCK), tbl_ex_FileInfo finfo, tbl_rev_CustomField cf {custodianTable} WHERE T1.Fileid=cf.Fileid and T1.FileId=finfo.FileId and T1.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause =@orderClause + '' CustomField3,finfo.GroupDate, T1.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpCustom3 tcustom3 ON T1.GroupId =tcustom3.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpCustom3 tcustom3 WITH(NOLOCK) ON T1.GroupId = tcustom3.GroupId '' END IF @SortByCustodian = 1 BEGIN SET @ParentSortQuery=@ParentSortQuery + '' INNER JOIN Tbl_Ex_Custodian TC WITH(NOLOCK) On TC.CustodianId = T2.CustodianId WHERE T1.IsParent =1 ORDER BY TC.CUSTODIANNAME '' + @CustodianSortOrder SET @OrderedInsertQuery = @OrderedInsertQuery + '' INNER JOIN Tbl_Ex_Custodian TC WITH(NOLOCK) On TC.CustodianId = T2.CustodianId ORDER BY TC.CUSTODIANNAME '' + @CustodianSortOrder END ELSE BEGIN SET @ParentSortQuery =@ParentSortQuery + '' WHERE T1.IsParent =1 ORDER BY (SELECT NULL) '' SET @OrderedInsertQuery = @OrderedInsertQuery + '' ORDER BY ( SELECT NULL) '' END SET @OrderedInsertQuery = @OrderedInsertQuery + '', tsorted.SEQ_NO,T1.IsParent desc'' IF @SORTBY1 = ''GROUP_DATE'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GROUPDATE, 120),120) ''+ @SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER1 END ELSE IF @SORTBY1 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T3.OriginalFileFolder ''+@SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T3.SEQ_NO,T3.OriginalFileFolder ''+@SORTORDER1 END ELSE IF @SORTBY1 = ''EMAIL_THREAD'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T4.CONVID ''+ @SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.CONVID ''+ @SORTORDER1 END ELSE IF @SORTBY1 = ''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T5.ORIGINALFILEFOLDER ''+@SORTORDER1 + '', T2.[RelativeFilePath]'' +@SORTORDER1 +'', T2.[Filename]'' +@SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T5.SEQ_NO,T5.ORIGINALFILEFOLDER ''+@SORTORDER1 + '', T2.[RelativeFilePath]'' +@SORTORDER1 +'', T2.[Filename] '' +@SORTORDER1 END ELSE IF @SORTBY1 = ''ORIGINAL_FILE_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T2.FileName ''+@SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tfilename.SEQ_NO,T2.FileName ''+@SORTORDER1 END ELSE IF @SORTBY1 = ''MEDIA_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tMediaName.Media_Name ''+@SORTORDER1+'',tMediaName.MediaId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', tMediaName.SEQ_NO,tMediaName.Media_Name ''+@SORTORDER1+'',tMediaName.MediaId'' END ELSE IF @SORTBY1 = ''INGESTION_ORDER'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T1.GroupId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T1.GroupId, T2.FileId '' END ELSE IF @SORTBY1 <> ''INGESTION_ORDER'' AND lEN(@SORTBY1)>0 BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tcustom1.SEQ_NO ''+ @SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tcustom1.SEQ_NO ,custom.''+@SORTBY1 + '' ''+ @SORTORDER1 END IF @SORTBY2 = ''GROUP_DATE'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER2 END ELSE IF @SORTBY2 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T3.OriginalFileFolder ''+@SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T3.SEQ_NO,T3.OriginalFileFolder ''+@SORTORDER2 END ELSE IF @SORTBY2 = ''EMAIL_THREAD'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T4.CONVID ''+ @SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.CONVID ''+ @SORTORDER2 END ELSE IF @SORTBY2 = ''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T5.ORIGINALFILEFOLDER ''+@SORTORDER2 + '', T2.[RelativeFilePath]'' +@SORTORDER2 +'', T2.[Filename] '' +@SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T5.SEQ_NO,T5.ORIGINALFILEFOLDER ''+@SORTORDER2 + '', T2.[RelativeFilePath]'' +@SORTORDER2 +'', T2.[Filename] '' +@SORTORDER2 END ELSE IF @SORTBY2 = ''ORIGINAL_FILE_NAME'' BEGIN IF @SORTBY1<>''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T2.FileName ''+@SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tfilename.SEQ_NO,T2.FileName ''+@SORTORDER2 END END ELSE IF @SORTBY2 = ''INGESTION_ORDER'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T1.GroupId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T1.GroupId, T2.FileId '' END ELSE IF @SORTBY2 = ''MEDIA_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tMediaName.Media_Name ''+@SORTORDER2+'',tMediaName.MediaId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', tMediaName.SEQ_NO,tMediaName.Media_Name ''+@SORTORDER2+'',tMediaName.MediaId'' END ELSE IF @SORTBY2 <> ''INGESTION_ORDER'' AND lEN(@SORTBY2)>0 BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tcustom2.SEQ_NO ,tcustom2.CustomField2 ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tcustom2.SEQ_NO ,custom.''+@SORTBY2 + '' ''+ @SORTORDER2 END IF @SORTBY3 = ''GROUP_DATE'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER3 END ELSE IF @SORTBY3 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T3.OriginalFileFolder '' +@SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T3.SEQ_NO,T3.OriginalFileFolder '' +@SORTORDER3 END ELSE IF @SORTBY3 = ''EMAIL_THREAD'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T4.CONVID ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.CONVID ''+ @SORTORDER3 END ELSE IF @SORTBY3 = ''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T5.ORIGINALFILEFOLDER ''+@SORTORDER3 + '', T2.[RelativeFilePath]'' +@SORTORDER3 +'', T2.[Filename] '' +@SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T5.SEQ_NO,T5.ORIGINALFILEFOLDER ''+@SORTORDER3 + '', T2.[RelativeFilePath]'' +@SORTORDER3 +'', T2.[Filename] '' +@SORTORDER3 END ELSE IF @SORTBY3 = ''ORIGINAL_FILE_NAME'' BEGIN IF @SORTBY1<>''RELATIVE_FILE_PATH'' AND @SORTBY2<>''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T2.FileName ''+@SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tfilename.SEQ_NO,T2.FileName ''+@SORTORDER3 END END ELSE IF @SORTBY3 = ''INGESTION_ORDER'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T1.GroupId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T1.GroupId, T2.FileId '' END ELSE IF @SORTBY3 = ''MEDIA_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tMediaName.Media_Name ''+@SORTORDER3+'',tMediaName.MediaId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', tMediaName.SEQ_NO,tMediaName.Media_Name ''+@SORTORDER3+'',tMediaName.MediaId'' END ELSE IF @SORTBY3 <> ''INGESTION_ORDER'' AND lEN(@SORTBY3)>0 BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tcustom3.SEQ_NO ,tcustom3.CustomField3 ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tcustom3.SEQ_NO ,custom.''+@SORTBY3 + '' ''+ @SORTORDER3 END IF(@SORTBY1<>''INGESTION_ORDER'' AND @SORTBY2<>''INGESTION_ORDER'' AND @SORTBY3<>''INGESTION_ORDER'' AND @SORTBY1<>''EMAIL_THREAD'') BEGIN SET @ParentSortQuery = @ParentSortQuery + '', T1.GroupId, T2.FileId '' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T1.GroupId, T2.FileId '' END SET @V_INS_QRY = '' INSERT INTO ''+@ParentSortedTempTable+'' (FileId, GroupId, IsParent) '' +@ParentSortQuery EXECUTE sp_executesql @V_INS_QRY ; SET @V_INS_QRY = '' INSERT INTO '' + @V_TMP_TABLE + '' (FILE_ID_PK, DERIVEDDATA, GROUPID, ISPARENT) '' +@OrderedInsertQuery EXECUTE sp_executesql @V_INS_QRY ; SET @V_CREATE_QRY = ''CREATE NONCLUSTERED INDEX idx_file_id_pk_''+@V_TMP_TABLE+'' ON ''+@V_TMP_TABLE+''(FILE_ID_PK)'' EXEC sp_executesql @V_CREATE_QRY IF EXISTS (SELECT * FROM tempdb.dbo.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#TMPFILEFOLDER'')) DROP TABLE #TMPFILEFOLDER; IF EXISTS (SELECT * FROM tempdb.dbo.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#TMPFILEFOLDERRELATIVEPATH'')) DROP TABLE #TMPFILEFOLDERRELATIVEPATH; IF EXISTS (SELECT * FROM tempdb.dbo.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#TMPCONVID'')) DROP TABLE #TMPCONVID; SELECT @query = N''DROP TABLE '' + @PreLoadTempTable EXEC sp_executesql @query SELECT @query = N''DROP TABLE '' + @ParentSortedTempTable EXEC sp_executesql @query SET @StartControlNumber=@StartControlNumber-1; DECLARE @SQL nvarchar(max) --DROP GLOBAL-TEMP-TABLE IS ALREADY EXIST / WORKING WITH EXCEPTION SET @V_DROP_QRY = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@GlobalTempTable+'''''') DROP TABLE '' + @GlobalTempTable ; EXECUTE SP_EXECUTESQL @V_DROP_QRY ; SET @SQL=''CREATE TABLE ''+@GlobalTempTable+'' ( SEQ_NO BIGINT PRIMARY KEY, FILE_ID_PK BIGINT, GROUPID BIGINT, CONTROLNUMBER NVARCHAR(2000), ORIGINALCONTROLNUMBER NVARCHAR(2000), DERIVEDDATA BIT, FOLDER_SEQ_NO INT, IsParent Bit, VolumeId BigInt Not Null Default(1), OriginalFilePath nvarchar(2000) ) '' EXECUTE SP_EXECUTESQL @SQL IF(@ControlNumberByFileName=0) BEGIN Declare @PartitionQuery nvarchar(max) if(@IncludeMedia = 1) set @PartitionQuery = '' MediaId '' else if(@IncludeCustodian =1) set @PartitionQuery = '' CustodianId '' else set @PartitionQuery = '' FileId '' DECLARE @ControlNumbersTempTable NVARCHAR(1000) if @ControlNumberFromSource = 1 begin -- control number from source Execute sp_ep_GenerateSourceControlNumbers @ExportId, @Guid, @V_TMP_TABLE, @ForSummary, @ControlNumbersTempTable OutPut end Else Begin Execute[dbo].[sp_ep_GenerateControlNumbers] @V_TMP_TABLE, ''SEQ_NO'', @GUID, @ControlNumberPrefix, ''0'', @ControlNumberPadLength, @StartControlNumber, @ControlNumbersTempTable OUTPUT End SET @SQL='' INSERT INTO ''+@GlobalTempTable+'' SELECT T1.SEQ_NO, T1.FILE_ID_PK, T1.GroupId, --(SELECT DBO.FN_EP_GETEXPORTDOCID (''''''+@ControlNumberPrefix+'''''',''+CAST(@ControlNumberPadLength AS VARCHAR(64))+'',''''0'''',T1.SEQ_NO+''+ CAST(@StartControlNumber AS VARCHAR(64)) +'')) AS CONTROLNUMBER, --(SELECT DBO.FN_EP_GETEXPORTDOCID (''''''+@ControlNumberPrefix+'''''',''+CAST(@ControlNumberPadLength AS VARCHAR(64))+'',''''0'''',T1.SEQ_NO+''+ CAST(@StartControlNumber AS VARCHAR(64)) +'')) AS ORIGINALCONTROLNUMBER, T3.ControlNumberField AS CONTROLNUMBER, T3.ControlNumberField AS ORIGINALCONTROLNUMBER, T1.DERIVEDDATA, ROW_NUMBER() OVER (partition by ''+ @PartitionQuery+'' order by ''+@PartitionQuery+'' ), T1.IsParent, 1 As VolumeId, '''''''' OriginalFilePath FROM ''+@V_TMP_TABLE+'' T1, TBL_EX_FILEINFO T2, ''+@ControlNumbersTempTable+'' T3 WHERE T1.FILE_ID_PK=T2.FILEID AND T1.File_Id_Pk = T3.File_Id_Pk '' EXECUTE SP_EXECUTESQL @SQL; SET @SQL = ''If Exists(select 1 From tempdb.INFORMATION_SCHEMA.TABLES where TABLE_NAME = ''''''+ @ControlNumbersTempTable + '''''') Drop Table ''+@ControlNumbersTempTable EXECUTE SP_EXECUTESQL @SQL; END ELSE BEGIN DECLARE @CUSTOMQUERY NVARCHAR(max) IF(@ControlNumberField = ''FILENAME'') BEGIN SET @CUSTOMQUERY = '' SELECT F.FileId, CASE WHEN ISNULL(DBO.[fn_ReplaceInvalidFileNameChars](REVERSE(SUBSTRING(REVERSE(RTRIM(F.[FileName])), CHARINDEX(''''.'''', REVERSE(RTRIM(F.[FileName]))) + 1, LEN(RTRIM(F.[FileName]))))) , '''''''') = '''''''' THEN ''''NA_''''+ CAST(F.FileId as varchar(100)) ELSE DBO.[fn_ReplaceInvalidFileNameChars](REVERSE(SUBSTRING(REVERSE(RTRIM(F.[FileName])), CHARINDEX(''''.'''', REVERSE(RTRIM(F.[FileName]))) + 1, LEN(RTRIM(F.[FileName]))))) END CUSTOMFIELD FROM ''+@V_TMP_TABLE+'' T LEFT JOIN TBL_EX_FILEINFO F with(nolock) on F.FileId = T.File_Id_pk'' END ELSE BEGIN SET @CUSTOMQUERY = '' SELECT F.FileId, CASE WHEN ISNULL(DBO.[fn_ReplaceInvalidFileNameChars](C.''+@ControlNumberField+'') , '''''''') = '''''''' THEN ''''NA_''''+ CAST(F.FileId as varchar(100)) ELSE DBO.[fn_ReplaceInvalidFileNameChars](C.''+@ControlNumberField+'') END CUSTOMFIELD FROM ''+@V_TMP_TABLE+'' T LEFT JOIN TBL_EX_FILEINFO F with(nolock) on F.FileId = T.File_Id_pk LEFT JOIN TBL_REV_CUSTOMFIELD C on C.FileId = T.File_Id_pk'' END DECLARE @CustomTableName Nvarchar(1000) IF OBJECT_ID(''tempdb..#TEMP_CUSTOMTABLE'') IS NOT NULL DROP TABLE #TEMP_CUSTOMTABLE CREATE TABLE #TEMP_CUSTOMTABLE (FileId Bigint Not Null, CustomField Nvarchar(2000)) SET @SQL = ''INSERT INTO #TEMP_CUSTOMTABLE ''+ @CUSTOMQUERY EXECUTE SP_EXECUTESQL @SQL; CREATE NONCLUSTERED INDEX idx_FileId_#TEMP_CUSTOMTABLE ON #TEMP_CUSTOMTABLE (FileId) SET @SQL='' INSERT INTO ''+@GlobalTempTable+'' SELECT TT.Seq_No, TT.File_Id_Pk, TT.GroupId, CASE WHEN rn=1 THEN ControlNumber else ControlNumber+''''_''''+CAST(rn AS NVARCHAR(10)) END AS ControlNumber, ORIGINALCONTROLNUMBER, DerivedData, 0, TT.IsParent, 1 As VolumeId, '''''''' OriginalFilePath FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY T.CONTROLNUMBER ORDER BY seq_no) AS rn, * FROM ( SELECT T1.seq_no AS Seq_No, FI.FileId AS File_Id_Pk, T1.GroupId, T2.CUSTOMFIELD as ControlNumber, T2.CUSTOMFIELD as OriginalControlNumber, t1.DerivedData AS DerivedData, T1.IsParent FROM ''+@V_TMP_TABLE+'' T1 LEFT JOIN dbo.tbl_ex_FileInfo fi ON t1.file_id_pk=fi.FileId LEFT JOIN #TEMP_CUSTOMTABLE T2 On T1.File_id_Pk = T2.FileId UNION ALL SELECT 0 AS Seq_No, ed.File_Id_Pk AS File_Id_Pk, -1 AS GroupId, IsNull(ED.ORIGINALCONTROLNUMBER, ED.ControlNumber) CONTROLNUMBER, '''''''' as ORIGINALCONTROLNUMBER, ed.DERIVEDDATA AS DerivedData, Cast(0 as BIT) IsParent FROM dbo.tbl_ep_ExportPrimaryTable ed,dbo.tbl_ep_Exports e, TBL_EX_FILEINFO FI where ed.ExportID=e.ExportID AND e.IsReExport=0 AND FI.FILEID = ED.FILE_ID_PK )T )TT WHERE seq_no<>0 '' EXECUTE SP_EXECUTESQL @SQL ; IF OBJECT_ID(''tempdb..#TEMP_CUSTOMTABLE'') IS NOT NULL DROP TABLE #TEMP_CUSTOMTABLE END IF(@UseOriginalFileName = 1 AND @ForSummary = 0) EXEC sp_ep_ComputeOriginalFilePath @GlobalTempTable, @IncludeOriginalFileExtension SET @SQL = ''CREATE NONCLUSTERED INDEX idx_file_id_pk_''+@GlobalTempTable+'' ON ''+@GlobalTempTable+''(FILE_ID_PK)'' EXEC sp_executesql @SQL IF(@IsDefaultControlNumber = 1) BEGIN SET @SQL = ''UPDATE ''+@GlobalTempTable +'' SET CONTROLNUMBER = ORIGINALCONTROLNUMBER WHERE CONTROLNUMBER <> ORIGINALCONTROLNUMBER'' EXEC SP_EXECUTESQL @SQL END DECLARE @Secondary_tmp_table_name nvarchar(1000) SELECT @Secondary_tmp_table_name=@GlobalTempTable + ''_BEGATT_ENDATT'' SET @V_DROP_QRY = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@Secondary_tmp_table_name+'''''') DROP TABLE '' + @Secondary_tmp_table_name ; EXECUTE SP_EXECUTESQL @V_DROP_QRY ; set @SQL=''CREATE TABLE ''+@Secondary_tmp_table_name+'' ( GroupId BIGINT PRIMARY KEY, BegAtt nvarchar(2000), EndAtt nvarchar(2000), BegFamily nvarchar(2000) )'' EXECUTE SP_EXECUTESQL @SQL IF(@IsBatesFieldRequired =1) BEGIN SET @V_DROP_QRY = '' IF EXISTS(SELECT table_name FROM tempdb.information_schema.tables WHERE table_name=''''''+@GlobalTempTiffTable+'''''') DROP TABLE '' + @GlobalTempTiffTable ; EXECUTE SP_EXECUTESQL @V_DROP_QRY ; SET @SQL=''CREATE TABLE ''+@GlobalTempTiffTable+'' ( Seq_No bigint, File_Id_PK bigint, GroupId bigint, BatesNumber Nvarchar(2000), Image_Path nvarchar(max), Page_Number INT, Redacted_Image_Path nvarchar(MAX), FolderId int PRIMARY KEY (FILE_ID_PK,page_number) ) '' EXECUTE SP_EXECUTESQL @SQL End IF(@IsBatesFieldRequired =1 AND @TiffEnable =0) BEGIN SET @SQL='' INSERT INTO ''+@GlobalTempTiffTable+'' select Seq_No, File_Id_Pk, groupid, ControlNumber as batesnumber, NULL, 1, NULL, NULL from ''+@GlobalTempTable+'' T2 Order by seq_no '' EXECUTE SP_EXECUTESQL @SQL END ELSE IF(@TiffEnable=1) BEGIN SET @StartBatesNumber=@StartBatesNumber-1; DECLARE @BatesNumTempTable nvarchar(50) = ''##TEMP_CONTROL_NUMBER_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)); SET @V_DROP_QRY = '' IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@BatesNumTempTable+'''''') DROP TABLE '' + @BatesNumTempTable ; EXECUTE SP_EXECUTESQL @V_DROP_QRY ; SET @query=''CREATE TABLE ''+@BatesNumTempTable+'' ( Tiff_Seq_No bigint identity(1,1), File_Id_PK bigint, Page_Number int, Image_Path nvarchar(max), Redacted_Image_Path nvarchar(max), SystemBatesNumber nvarchar(2000) PRIMARY KEY (File_Id_PK, Page_Number) ) '' EXECUTE SP_EXECUTESQL @query if(@IncludeBadTiff = 0) Begin CREATE TABLE #BADTIFFS (FILEID BigInt) SET @QUERY = '' IF OBJECT_ID(''''TEMPDB..#Temp'''') IS NOT NULL DROP TABLE #Temp CREATE TABLE #Temp (FileID BIGINT PRIMARY KEY, TotalPage INT DEFAULT 0) INSERT INTO #Temp (FileID, TotalPage) SELECT V.File_ID_PK, MAX(I.PageNumber) FROM ''+ @V_TMP_TABLE+'' V, Tbl_Tiff_Images I WITH(NOLOCK) WHERE V.File_ID_PK = I.FileId GROUP BY V.File_ID_PK DELETE FROM T FROM #Temp T, Tbl_QC_Document D WITH(NOLOCK) WHERE T.FileID = D.FileId AND D.IsTiffBad = 1 IF OBJECT_ID(''''tempdb..#tempBadTiff'''') IS NOT NULL DROP TABLE #tempBadTiff CREATE TABLE #tempBadTiff (FileId BIGINT, PageNumber BIGINT, PRIMARY KEY(FILEID, PAGENUMBER) WITH (IGNORE_DUP_KEY = ON)) INSERT INTO #tempBadTiff SELECT T.FileID, I.PageNumber FROM #Temp T, Tbl_QC_Image I WITH(NOLOCK) WHERE T.FileID = I.FileId AND I.IsTiffBad = 1 INSERT INTO #tempBadTiff SELECT T.FileID, I.PageNumber FROM #Temp T, Tbl_QC_PreQCImage I WITH(NOLOCK) WHERE T.FileID = I.FileId AND I.IsBlank = 1 INSERT INTO #BADTIFFS SELECT I.FileID FROM (SELECT FileId, COUNT(1) PageCounts FROM #tempBadTiff GROUP BY FileId) I , #Temp T WHERE I.FileId=T.FileId AND I.PageCounts= T.TotalPage '' EXECUTE SP_EXECUTESQL @QUERY CREATE NONCLUSTERED INDEX IDX_#BADTIFFS_FILEID On #BADTIFFS(FileId) End DECLARE @Insert_Query NVARCHAR (MAX) SET @Insert_Query='' INSERT INTO '' + @BatesNumTempTable + '' (FILE_ID_PK, Page_Number,Image_Path,Redacted_Image_Path,SystemBatesNumber) '' SET @V_INS_QRY = '' SELECT T1.FILE_ID_PK,ISNULL(T2.PageNumber,1) PageNumber ,T2.ImagePath ImagePath, T2.RedactedImagePath, T1.Seq_No, case when ISNULL(T2.SystemBatesNumber,'''''''')='''''''' then ( select dbo.fn_ep_getexportdocid (Ts.BatesPrefix, Cast(Ts.BatesPadding as Nvarchar(64)),''''0'''', Cast(Ts.BatesStartNumber as Nvarchar(64))) + + ''''_''''+ RIGHT(''''000''''+CAST(isnull(t2.PageNumber,1) AS VARCHAR(5)),4) ) else T2.SystembatesNumber END AS SystembatesNumber FROM ''+ @V_TMP_TABLE+'' T1 LEFT JOIN tbl_tiff_Shadow Ts with(nolock) ON t1.File_ID_PK =ts.FileId LEFT JOIN tbl_tiff_images T2 ON T1.FILE_ID_PK=T2.FileId'' declare @badTiffExcludeQuery nvarchar(max) = '''' if(@IncludeBadTiff =0) SET @badTiffExcludeQuery = '' LEFT JOIN tbl_qc_image qci ON t2.fileid=qci.fileid and t2.pagenumber=qci.pagenumber LEFT JOIN tbl_qc_document qcd ON qci.fileid=qcd.fileid LEFT JOIN ( select fileid, 1 as donotpull from tbl_qc_document m2 where isnull(istiffbad,0)=1 )k ON k.fileid = t1.file_id_pk Left Join Tbl_QC_PreQCImage PQI On T1.File_Id_Pk = PQI.FileId And T2.FileId = PQI.FileId And PQI.PageNumber = T2.PageNumber '' SET @V_INS_QRY = @V_INS_QRY + @badTiffExcludeQuery DECLARE @tagQuery NVARCHAR(MAX) DECLARE @filetypeQuery NVARCHAR(MAX) DECLARE @fileTypeWhereQuery NVARCHAR(MAX) DECLARE @tagWhereQuery NVARCHAR(MAX) DECLARE @filterQuery NVARCHAR(MAX) DECLARE @whereQuery nvarchar(max) SET @tagQuery='' LEFT JOIN tbl_ex_FileTagAssociation T3 ON T1.FILE_ID_PK=T3.FileId AND T3.TagId in (''+@TagIdList+'') '' SET @filetypeQuery='' INNER JOIN tbl_ex_fileinfo T4 ON T1.FILE_ID_PK=T4.FileId '' SET @tagWhereQuery ='' AND T3.FileId IS NULL '' IF(@TagExcludeType = ''EXPORT_SELECTED_ONLY'') SET @tagWhereQuery ='' AND T3.FileId IS NOT NULL '' SET @whereQuery='' WHERE 1=1 '' SET @fileTypeWhereQuery='' AND T4.FileType NOT IN (''+@FileTypeList+'') '' if(@IncludeBadTiff =0) SET @whereQuery= @whereQuery + ''AND isnull(qcd.istiffbad,0)<>1 and isnull(qci.istiffbad,0) <> 1 AND donotpull IS NULL And IsNull(PQI.IsBlank, 0) <> 1 '' IF(LEN(@TagIdList)>0) SET @whereQuery= @whereQuery + @tagWhereQuery IF(LEN(@FileTypeList)>0) SET @whereQuery=@whereQuery + @fileTypeWhereQuery IF(LEN(@TagIdList)>0) SET @V_INS_QRY=@V_INS_QRY + @tagQuery IF(LEN(@FileTypeList)>0) SET @V_INS_QRY=@V_INS_QRY + @filetypeQuery IF(LEN(@WhereQuery)>0) SET @V_INS_QRY=@V_INS_QRY + @whereQuery if(@IncludeBadTiff =0) SET @V_INS_QRY= @V_INS_QRY+ '' UNION SELECT FILE_ID_PK, 1 as pagenumber, ''''EXCLUDED_FILE'''' as ImagePath, '''''''' as RedactedImagePath, sub.Seq_No as seq_no, '''''''' as SystemBatesNumber from ''+@V_TMP_TABLE+'' sub Inner join tbl_qc_document qcdoc on sub.File_Id_Pk=qcdoc.fileid and qcdoc.IsTiffBad=1 UNION Select FILE_ID_PK, pagenumber, ImagePath, RedactedImagePath, Seq_No, '''''''' as SystemBatesNumber from ( SELECT FILE_ID_PK, 1 as PageNumber, ''''EXCLUDED_FILE'''' as ImagePath ,'''''''' as RedactedImagePath, sub.Seq_No as seq_no , row_number() over ( partition by sub.file_id_pk order by sub.file_id_pk) rownum FROM ''+@V_TMP_TABLE+'' sub INNER JOIN #BADTIFFS BT On BT.FILEID = SUB.FILE_ID_PK )TT where rownum=1 '' DECLARE @ExcludeQuery nvarchar(max) SET @ExcludeQuery='''' IF(@ExcludeTiffFiles=1) BEGIN IF(LEN(@TagIdList)>0 OR LEN(@FileTypeList)>0) BEGIN DECLARE @tagExQuery NVARCHAR(MAX) DECLARE @filetypeExQuery NVARCHAR(MAX) DECLARE @fileTypeWhereExQuery NVARCHAR(MAX) DECLARE @tagWhereExQuery NVARCHAR(MAX) DECLARE @filterExQuery NVARCHAR(MAX) DECLARE @whereExQuery nvarchar(max) SET @ExcludeQuery='' UNION SELECT FILE_ID_PK,''''1'''' PageNumber,''''EXCLUDED_FILE'''' ImagePath, '''''''' as RedactedImagePath, Tx1.Seq_No,'''''''' as SystemBatesNumber FROM ''+@V_TMP_TABLE+'' Tx1'' SET @filetypeExQuery='' LEFT JOIN tbl_ex_fileinfo Tx4 ON Tx1.FILE_ID_PK=Tx4.FileId '' SET @tagWhereExQuery='' OR EXISTS ( SELECT TOP 1 1 FROM tbl_ex_FileTagAssociation WHERE TagId IN (''+@TagIdList+'') AND FILEID=TX1.FILE_ID_pk)'' IF(@TagExcludeType = ''EXPORT_SELECTED_ONLY'') SET @tagWhereExQuery='' OR NOT EXISTS ( SELECT TOP 1 1 FROM tbl_ex_FileTagAssociation WHERE TagId IN (''+@TagIdList+'') AND FILEID=TX1.FILE_ID_pk)'' SET @whereExQuery='' WHERE (1=0 '' SET @fileTypeWhereExQuery='' OR Tx4.FILETYPE IN (''+@FileTypeList+'') '' IF(LEN(@TagIdList)>0) SET @whereExQuery = @whereExQuery + @tagWhereExQuery IF(LEN(@FileTypeList)>0) SET @whereExQuery=@whereExQuery + @fileTypeWhereExQuery IF(LEN(@FileTypeList)>0) SET @ExcludeQuery=@ExcludeQuery + @filetypeExQuery if(@IncludeBadTiff =0) Set @badTiffExcludeQuery ='' And NOT EXISTS (SELECT TOP 1 1 FROM #BADTIFFS BB WHERE BB.FILEID = Tx1.File_ID_PK )'' else Set @badTiffExcludeQuery ='''' SET @whereExQuery = @whereExQuery + '')'' + @badTiffExcludeQuery SET @ExcludeQuery=@ExcludeQuery + @whereExQuery END SET @V_INS_QRY= ''SELECT FILE_ID_PK,ISNULL(PageNumber,1) PageNumber,ImagePath,RedactedImagePath,SystemBatesNumber FROM ( ''+ @V_INS_QRY + @ExcludeQuery + '')z'' END ELSE BEGIN SET @V_INS_QRY= ''SELECT FILE_ID_PK,ISNULL(PageNumber,1) PageNumber,ImagePath, RedactedImagePath, SystemBatesNumber FROM ( ''+ @V_INS_QRY + '')z'' END SET @V_INS_QRY=@Insert_Query + @V_INS_QRY + '' ORDER BY SEQ_NO, PageNumber ASC'' EXECUTE SP_EXECUTESQL @V_INS_QRY ; IF EXISTS (SELECT * FROM tempdb.dbo.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#BADTIFFS'')) DROP TABLE #BADTIFFS; DECLARE @GlobalTiffTemporaryTable nvarchar(100) = ''##GLOBAL_TIFF_TEMP_TABLE_''+@GUID+''_'' + CAST(@@SPID AS VARCHAR(32)) SET @SQL = '' IF EXISTS(SELECT 1 FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @GlobalTiffTemporaryTable + '''''' ) DROP TABLE ''+@GlobalTiffTemporaryTable EXECUTE SP_EXECUTESQL @SQL SET @SQL = ''CREATE TABLE ''+@GlobalTiffTemporaryTable+'' ( Tiff_Seq_No BigInt Not Null, File_Id_PK BigInt Not Null, GroupId BigInt, Page_Seq_No BigInt, Image_Path Nvarchar(Max), PageNumber Int, Redacted_Image_Path Nvarchar(Max), ControlNumber Nvarchar(2000), SystemBatesNumber Nvarchar(2000) )'' EXECUTE SP_EXECUTESQL @SQL SET @SQL = ''INSERT INTO ''+@GlobalTiffTemporaryTable+'' SELECT T1.Tiff_Seq_No, T1.File_Id_PK, T2.groupid, Row_Number() over(partition by t1.File_id_pk order by t1.page_number) page_seq_no, T1.image_path, isnull(T1.page_number,1) page_number, T1.redacted_image_path, t2.ControlNumber, t1.SystemBatesNumber FROM ''+@BatesNumTempTable+'' T1, ''+@GlobalTempTable+'' T2 WHERE T1.file_id_pk=T2.file_id_pk '' EXECUTE SP_EXECUTESQL @SQL DECLARE @BatesNumbersTemporaryTable NVARCHAR(1000) IF(@BATESTYPE = ''BATES_SEQUENTIAL'') BEGIN EXECUTE [dbo].[sp_ep_GenerateControlNumbers] @GlobalTiffTemporaryTable, ''Tiff_Seq_No'', @GUID, @BatesNumberPrefix, ''0'', @BatesNumberPadLength, @StartBatesNumber, @BatesNumbersTemporaryTable OUTPUT SET @SQL = ''INSERT INTO ''+@GlobalTempTiffTable+'' SELECT T1.Tiff_Seq_No, T1.File_Id_Pk, T1.GroupId, T2.ControlNumberField, T1.Image_Path, T1.PageNumber, T1.Redacted_Image_Path, Null FROM ''+@GlobalTiffTemporaryTable+'' T1, ''+@BatesNumbersTemporaryTable+'' T2 WHERE T1.File_Id_Pk = T2.File_Id_Pk AND T1.Tiff_Seq_No = T2.Tiff_Seq_No ORDER BY T1.TIFF_SEQ_NO '' EXECUTE SP_EXECUTESQL @SQL END ELSE IF (@BatesType = ''BATES_FROM_CONTROL_NUMBER'') BEGIN EXECUTE [dbo].[sp_ep_GenerateBatesNumbers] @GlobalTiffTemporaryTable, ''ControlNumber'', @GUID, ''0'', @BatesNumberPadLength, @BatesControlSeparator, @PadFromFirstPage, @PadStartNumberByOne, @BatesNumbersTemporaryTable OUTPUT SET @SQL = ''INSERT INTO ''+@GlobalTempTiffTable+'' SELECT T1.Tiff_Seq_No, T1.File_Id_Pk, T1.GroupId, T2.BatesNumberField, T1.Image_Path, T1.PageNumber, T1.Redacted_Image_Path, Null FROM ''+@GlobalTiffTemporaryTable+'' T1, ''+@BatesNumbersTemporaryTable+'' T2 WHERE T1.File_Id_Pk = T2.File_Id_Pk AND T1.PageNumber = T2.PageNumber ORDER BY T1.TIFF_SEQ_NO '' EXECUTE SP_EXECUTESQL @SQL END ELSE if (@BatesType = ''Bates_System'') -- BATESTYPE == BATES_SYSTEM BEGIN SET @SQL = ''INSERT INTO ''+@GlobalTempTiffTable+'' SELECT T1.Tiff_Seq_No, T1.File_Id_Pk, T1.GroupId, T1.SystemBatesNumber, T1.Image_Path, T1.PageNumber, T1.Redacted_Image_Path, Null FROM ''+@GlobalTiffTemporaryTable+'' T1 ORDER BY T1.TIFF_SEQ_NO '' EXECUTE SP_EXECUTESQL @SQL END Else -- bates from field Begin -- Generate bates number by incrementing the value in selected custom field -- not for filename field Execute [dbo].[sp_ep_GenerateCustomControlNumbers] @ControlNumberField, @Guid, @GlobalTempTable, @GlobalTiffTemporaryTable, @BatesNumbersTemporaryTable OutPut Set @sql = ''INSERT INTO ''+@GlobalTempTiffTable+'' SELECT T1.Tiff_Seq_No, T1.File_Id_Pk, T1.GroupId, T2.BatesNumberField, T1.Image_Path, T1.PageNumber, T1.Redacted_Image_Path, Null FROM ''+@GlobalTiffTemporaryTable+'' T1, ''+@BatesNumbersTemporaryTable+'' T2 WHERE T1.File_Id_Pk = T2.File_Id_Pk AND T1.PageNumber = T2.PageNumber ORDER BY T1.TIFF_SEQ_NO '' execute sp_executesql @sql End SET @SQL = '' IF EXISTS(SELECT 1 FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @GlobalTiffTemporaryTable + '''''' ) DROP TABLE ''+@GlobalTiffTemporaryTable EXECUTE SP_EXECUTESQL @SQL SET @SQL='' INSERT INTO ''+@GlobalTempTiffTable+'' SELECT Tiff_Seq_No, File_Id_Pk, GroupId, CASE WHEN ''''''+ CAST(@BatesType AS NVARCHAR(50)) +''''''=''''BATES_FROM_CONTROL_NUMBER'''' THEN (SELECT DBO.FN_EP_GETBATESNUMBER (T.ControlNumber, ''+CAST(@BatesNumberPadLength AS VARCHAR(64))+'', ''''0'''', ISNULL(T.page_seq_no,1), ''''''+ @BatesControlSeparator + '''''', ''+CAST(@PadFromFirstPage AS VARCHAR(64))+'', ''+CAST(@PadStartNumberByOne AS VARCHAR(64))+'')) WHEN ''''''+ CAST(@BatesType AS NVARCHAR(50)) +''''''=''''BATES_SYSTEM'''' THEN T.SystemBatesNumber ELSE (SELECT DBO.FN_EP_GETEXPORTDOCID (''''''+@BatesNumberPrefix+'''''',''+CAST(@BatesNumberPadLength AS VARCHAR(64))+'',''''0'''',t.TIFF_SEQ_NO+''+ CAST(@StartBatesNumber AS VARCHAR(64)) +'')) END AS BatesNumber, Image_Path, Page_Number, Redacted_Image_Path, Null FROM (SELECT T1.Tiff_Seq_No, T1.File_Id_PK, T2.groupid, Row_Number() over(partition by t1.File_id_pk order by t1.page_number) page_seq_no, T1.image_path, isnull(T1.page_number,1) page_number, T1.redacted_image_path, t2.ControlNumber, t1.SystemBatesNumber FROM ''+@BatesNumTempTable+'' T1, ''+@GlobalTempTable+'' T2 WHERE T1.file_id_pk=T2.file_id_pk )t ORDER BY TIFF_SEQ_NO '' SET @V_DROP_QRY = ''DROP TABLE '' + @BatesNumTempTable; EXECUTE SP_EXECUTESQL @V_DROP_QRY IF( NOT (@IsVolumeBased = 1 OR @ForSummary = 1)) BEGIN exec sp_ep_ComputeExportFolderIdForTiff @IncludeCustodian , @IncludeMedia , @TiffFilesPerFolder , @PagesTogether, @GlobalTempTiffTable, @FamilyTogether , @StartFolderByOne , @StartFolderNo , @MultipageTiff , @GlobalTempTable END declare @tiff_count_return bigint END IF(@IsBatesFieldRequired=1) Begin --IF(@DoNotExportAnything_Excluded=1) -- SET @SQL=''SELECT @TotalTiffCount=COUNT(1) from [''+@GlobalTempTiffTable+''] where Image_Path<>''''EXCLUDED_FILE'''''' --Else SET @SQL=''SELECT @TotalTiffCount=COUNT(1) from [''+@GlobalTempTiffTable+'']'' EXEC sp_executesql @SQL,N''@TotalTiffCount bigint output'',@TotalTiffCount= @tiff_count_return OUTPUT set @TotalTiffCount=@tiff_count_return SET @SQL = ''CREATE NONCLUSTERED INDEX idx_non_group_id_''+@GlobalTempTiffTable+'' ON ''+@GlobalTempTiffTable+''(GROUPID)'' EXEC sp_executesql @SQL DECLARE @TiffSecondaryTable nvarchar(200), @TiffBatesTable nvarchar(2000) SELECT @TiffSecondaryTable = @GlobalTempTiffTable + N''_BATES'' SELECT @TiffBatesTable = @GlobalTempTiffTable+N''_BBATES_EBATES'' SET @SQL= ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@TiffSecondaryTable+'''''') DROP TABLE '' + @TiffSecondaryTable +'' CREATE TABLE ''+@TiffSecondaryTable +'' ( FileId BIGINT PRIMARY KEY, BeginBates nvarchar(2000), EndBates nvarchar(2000), BeginFamBates nvarchar(2000), BeginAttBates nvarchar(2000), EndAttBates nvarchar(2000) ) IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@TiffBatesTable+'''''') DROP TABLE '' + @TiffBatesTable +'' CREATE TABLE ''+@TiffBatesTable+'' ( FileId BIGINT PRIMARY KEY, BeginBates nvarchar(2000), EndBates nvarchar(2000) )'' EXECUTE SP_EXECUTESQL @SQL SELECT @SQL = ''INSERT INTO ''+@TiffBatesTable+'' SELECT T1.FileID, (SELECT top 1 BATESNUMBER FROM ''+@GlobalTempTiffTable+'' WHERE FILE_ID_PK=t1.FileID and PAGE_NUMBER=t1.MinPageNo), (SELECT top 1 BATESNUMBER FROM ''+@GlobalTempTiffTable+'' WHERE FILE_ID_PK=t1.FileID and PAGE_NUMBER=t1.MaxPageNo) FROM ( SELECT FILE_ID_PK [FileId], MIN(PAGE_NUMBER) MinPageNo, MAX(PAGE_NUMBER) MaxPageNo FROM ''+@GlobalTempTiffTable+'' GROUP BY FILE_ID_PK ) t1'' EXECUTE SP_EXECUTESQL @SQL SELECT @SQL = ''INSERT INTO ''+@TiffSecondaryTable+'' SELECT T1.FileID, (SELECT top 1 BeginBates FROM ''+@TiffBatesTable+'' WHERE FileId=t1.FileID), (SELECT top 1 EndBates FROM ''+@TiffBatesTable+'' WHERE FileId=t1.FileID), (SELECT top 1 BeginBates FROM ''+@TiffBatesTable+'' WHERE FileId=t1.GroupId), BegAttachBates, EndAttachBates FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY t1.FILE_ID_PK ORDER BY PAGE_NUMBER asc) rn, t1.FILE_ID_PK [FileId], t1.GroupId, MIN(CASE WHEN t1.FILE_ID_PK != t1.GroupId THEN BatesNumber END) over (PARTITION BY t1.groupid) BegAttachBates, MAX(CASE WHEN t1.FILE_ID_PK != t1.GroupId THEN BatesNumber END) over (PARTITION BY t1.groupid) EndAttachBates FROM ''+@GlobalTempTiffTable+'' t1 ) t1 WHERE rn=1 '' EXECUTE SP_EXECUTESQL @SQL IF(@GenerateControlNumberFromBates = 1 AND @TiffEnable=1) Begin SET @SQL = ''Update ctrl Set ControlNumber=bates.BatesNumber from ''+@GlobalTempTable+'' ctrl, ''+@GlobalTempTiffTable+'' bates where ctrl.file_id_pk=bates.file_id_pk and bates.page_number=(SELECT min(page_number) FROM ''+@GlobalTempTiffTable+'' bates2 WHERE bates2.file_id_pk = ctrl.file_id_pk)'' exec sp_executesql @sql End SELECT @SQL = ''DROP TABLE ''+@TiffBatesTable EXECUTE SP_EXECUTESQL @SQL End SET @SQL = '' INSERT INTO ''+@Secondary_tmp_table_name+'' (GroupId,BegAtt,EndAtt,BegFamily) select groupid, (SELECT controlnumber from ''+@GlobalTempTable+'' where seq_no= A.begatt) AS BEGATT, (SELECT controlnumber from ''+@GlobalTempTable+'' where seq_no= A.endatt) AS ENDATT, (SELECT controlnumber from ''+@GlobalTempTable+'' where file_id_pk= A.GroupId) AS BEGFAMILY from ( select min(seq_no) as begatt, max(seq_no) as endatt, groupid from ''+@GlobalTempTable+'' t1 WITH(NOLOCK) WHERE FILE_ID_PK != GroupId and groupid!=-1 group by groupid ) A'' EXEC sp_executesql @sql SET @V_DROP_QRY = ''DROP TABLE '' + @V_TMP_TABLE ; EXECUTE SP_EXECUTESQL @V_DROP_QRY END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_PrepareDataForReExport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_PrepareDataForReExport'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_PrepareDataForReExport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Sudeep K.C. -- Create date: July 25, 3011 -- Description: Prepare data for re-export -- ChangeLog1: 5th Feb 2014, Sudhir Maharjan, Re-export changes to include tiff even when tiff not included in original tiff. -- ChangeLog2: 5th June 2014, Sudhir Maharjan, Re-export changes to include multi level sort option. -- ChangeLog3: 31st July 2014, Sudhir Maharjan, Issue Fixed: TotalPageCount value should be taken from tbl_tiff_shadow but it was calculated from tbl_qc_images -- ChangeLog4: 12th Sept 2014, Sudhir Maharjan, Option added to sort the export data by custom fields -- ChangeLog5: 17th Oct 2014, Sudhir Maharjan, #3159 -- Parent child not together when export with order by Original file folder -- ChangeLog6: 20th Oct 2014, Sudhir Maharjan, #3179 -- For control number fields mapping changed. -- ChangeLog7: 4th Nov 2014, Sudhir Maharjan, Added original export paths in global temp tables. -- ChangeLog8: 5th Jan 2015, Sudhir Maharjan, #4065 -- Sort order not sorted correctly when ''Original_File_Folder'' sorting is selected. -- ChangeLog9: 12th Jan 2015, Sudhir Maharjan, #4134 -- BEGIN_ATTACHMENT_CONTROL_NUMBER,BEGIN_ATTACHMENT_BATES_NUMBER,control.bates number range fields etc fields are not populated correctly. -- ChangeLog10: 6th March 2015, Sudhir Maharjan, #4737 -- Parent child not together when export with order by Original file folder. -- ChangeLog11: 19th March 2015, Sudhir Maharjan, #4768 -- Excluded files need to have ''EXCLUDED_FILE'' in IMAGE_PATH when variable @GenerateBatesNum = 0. So, this was causing to export the excluded tiff files as well during re-export. -- ChangeLog12: 24th March 2015, Sudhir Maharjan, #5238, Exclude the page count of excluded files (placeholder option is ''do not export anything'' for not exported) -- from total tiff count as they are not exported. -- ChangeLog13: 12th Aug 2015, Sudhir Maharjan, Custom fields are enclosed with [] when export sorting is custom field -- ChangeLog14: 12th Aug 2015, Nvarchar size of control number fields increased to 2000 -- ChangeLog15: 28th Oct 2015, When parent file is not exported, all children are treated as parent. -- ChangeLog16: 26th May 2016,Sudhir Maharjan, Added fields to store the values of original export -- ChangeLog17: 11th Nov 2016, #13125, Sudhir Maharjan, Added option to include bad images -- ChangeLog18: 16th Nov 2016, #13325, Sudhir Maharjan, Generate sequential number as suffix while some pages are marked as blank when generating bates_number -- ChangeLog19: 18th Nov 2016, Sudhir Maharjan, Removed the query the get the values individually from xml field ''FieldDetails'' for empty fields. Instead get those values in bulk. -- ChangeLog20: 2 JAN 2017, Gaurav, Get Folder Id from table when reexported with original export having tiff -- Compute/Get FolderId only in case of tiff export -- ChangeLog21: 17 Feb 2017, Gaurav, Maintain original control number -- ChangeLog22: 22nd March 2017, Sudhir Maharjan, Query optimization as @mainquery is used in multiple places though its rows are already inserted to temp table ''''@V_TMP_TABLE -- ChangeLog23: March 31 2017, Gaurav: Parameters added for padding from first/second page + second page padding start from 1/2 -- ChangeLog24: July 25 2017, Gaurav: Sort order original file name added -- ChnageLog25: October 26 2017, Sudhir - Added option to include/exclude image by tag. -- ChangeLog26: October 26 2017, Gaurav - Include non email archive as parent. -- ChangeLog27: November 2 2017, Sudhir - Changes after adding ''HAS_REDACTION'' field to show value of original export when re-export does not include image export. -- ChangeLog28: May 15 2018, #18901, Sudhir - Compute OriginalFilePath for export when ''UseOriginalFilePath'' option is selected. -- ChangeLog29: May 29 2018, #19424, Gaurav - Compute bad tiff query optimized -- ChangeLog31: July 20 2018, #15855, Gaurav - Sort Documents by custodian name -- ChangeLog32: January 2 2019, #20735, Sudhir - Child documents are not sorted properly -- ChangeLog33: May 17 2019, #21561, Sudhir - Parent documents are not sorted properly with second/third sorting order -- ChangeLog34: June 26 2019, #21776, Sudhir - Bates and control number fields are not correct when sort order is changed. -- ChangeLog35: April 17 2020, #23846, Anuj - RELATIVE_FILE_PATH socrt issue -- ChangeLog36: Sep 22 2020, #26141, Jasmeen - MEDIA_NAME Added in Export Sort -- ChangeLog37: Dec 28 2020, vts 21968, Anuj - Bates number should be assigned irrespective of the placeholder setting, including Do not export anything option -- ========== =================================== CREATE PROCEDURE [dbo].[sp_ep_PrepareDataForReExport] @GlobalTempTable nvarchar(100), @GlobalSecTempTable nvarchar(100), @GlobalTempTiffTable nvarchar(100), @ExportId bigint, @DupsOption nvarchar(100), @TiffEnable bit, @MainQuery nvarchar(max), @TagIdList NVARCHAR(MAX), @FileTypeList NVARCHAR(MAX), @ExcludeTiffFiles bit, @GenerateBatesNum bit, -- Boolean value to check if bates number need to be generated or use existing bates number @GUID nvarchar(50), -- GUID TO CONCAT WITH TEMP TABLES TO MAKE THE TEMP TABLES UNIQUE @ExportFileCount bigint OUTPUT, @TotalTiffCount bigint Output, @SORTBY1 NVARCHAR(100), -- MULTIPLE COLUMN SORTING @SORTBY2 NVARCHAR(100), @SORTBY3 NVARCHAR(100), @SORTORDER1 NVARCHAR(100), @SORTORDER2 NVARCHAR(100), @SORTORDER3 NVARCHAR(100), @DoNotExportAnything_Excluded bit, -- CL12 -True when file is excluded and placeholder option is "do not export anything" @TreatOrphanAsParent bit, @BatesControlSeparator Nvarchar(10), @IncludeCustodian bit, @IncludeMedia bit, @TiffFilesPerFolder int, @PagesTogether bit, @FamilyTogether bit , @StartFolderByOne bit , @StartFolderNo int, @MultipageTiff bit, @IncludeBadTiff bit, @BatesNumberPadLength int, @PadFromFirstPage Bit, @PadStartNumberByOne Bit, @TagExcludeType nvarchar(30), @IncludeNonEmailArchiveAsParent Bit, @UseOriginalFileName Bit, @IncludeOriginalFileExtension Bit = 1, @SortByCustodian Bit = 1, @CustodianSortOrder Nvarchar(100) AS BEGIN DECLARE @query nvarchar(max) DECLARE @OrderedInsertQuery nvarchar(max) DECLARE @orderClause nvarchar(max) SET @query = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@GlobalTempTable+'''''') BEGIN DROP TABLE '' + @GlobalTempTable +'' END IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@GlobalSecTempTable+'''''') BEGIN DROP TABLE '' + @GlobalSecTempTable +'' END CREATE TABLE ''+@GlobalTempTable+'' ( SEQ_NO BIGINT IDENTITY(1,1) PRIMARY KEY, FILE_ID_PK BIGINT, GROUPID BIGINT, CONTROLNUMBER NVARCHAR(2000), ORIGINALCONTROLNUMBER NVARCHAR(2000), DERIVEDDATA BIT, ORIGINAL_EXPORT_NATIVE_PATH NVARCHAR(MAX), ORIGINAL_EXPORT_FULLTEXT_PATH NVARCHAR(MAX), IsParent bit, ORIGINAL_EXPORT_FILE_NAME NVARCHAR(MAX), ORIGINAL_EXPORT_FULLTEXT_TYPE NVARCHAR(MAX), ORIGINAL_IMAGE_PAGE_COUNT INT, ORIGINAL_IS_NATIVE_MISSING NVARCHAR(MAX), VolumeId BigInt Not Null Default(1), ORIGINAL_HAS_REDACTION bit, OriginalFilePath nvarchar(2000), OriginalSeqNo BIGINT ) ; CREATE TABLE ''+@GlobalSecTempTable+'' ( GroupId BIGINT PRIMARY KEY, BegAtt nvarchar(2000), EndAtt nvarchar(2000), BegFamily nvarchar(2000) ) ; ''; EXEC sp_executesql @query Declare @V_TMP_TABLE nvarchar(200) SET @V_TMP_TABLE=''##TEMP_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)); Declare @V_CREATE_QRY nvarchar(max) SET @V_CREATE_QRY = '' CREATE TABLE '' + @V_TMP_TABLE + '' ( FileId BigInt, GroupId BigInt, IsParent Bit )''; EXECUTE SP_EXECUTESQL @V_CREATE_QRY ; Declare @newMainQuery nvarchar(max) = Replace(@MainQuery, ''{excludeArchiveClause}'', '' and IsArchive != 1 '') SET @query='' INSERT into ''+@V_TMP_TABLE+'' (FileId, GroupId) select T2.FileId, T2.GroupId FROM tbl_ep_ExportDetails T1 WITH(NOLOCK) INNER JOIN ''+ @newMainQuery +'' T2 ON T1.FILEID=T2.FILEID AND T1.ExportId=''+CAST(@ExportId as nvarchar(max))+'''' EXECUTE SP_EXECUTESQL @query ; IF(@IncludeNonEmailArchiveAsParent = 1) BEGIN SET @newMainQuery = REPLACE(@MainQuery, ''{excludeArchiveClause}'', '' '') CREATE TABLE #TEMPTABLE (FILEID BIGINT NOT NULL PRIMARY KEY) DECLARE @NewTotalCount BIGINT SET @query = ''INSERT INTO #TEMPTABLE Select T1.FileId From Tbl_Ex_FileInfo T1 With(NoLock), Tbl_Pj_FileTypesDescription T2 With(NoLock) Where T1.FileId In (Select FileId From ('' + @newMainQuery +'') Tx ) And T1.ParentFileId = -1 AND T1.IsParent IS NULL AND T1.FileType = T2.ToolsDisplayName AND T2.IsEmailArchive = 0 '' EXECUTE SP_EXECUTESQL @query SELECT @NewTotalCount = @@ROWCOUNT IF(@NewTotalCount > 0) BEGIN SET @query = '' INSERT INTO '' + @V_TMP_TABLE + '' SELECT T1.FileId, T1.FileId, 1 FROM #TEMPTABLE T1 LEFT OUTER JOIN '' + @V_TMP_TABLE + '' T2 ON T1.FileId = T2.FileId WHERE T2.FileId IS NULL '' EXECUTE SP_EXECUTESQL @Query SET @query = '' Update T1 SET T1.GroupId = T1.FileId, T1.IsParent = 1 From '' + @V_TMP_TABLE + '' T1, #TempTable T2 Where T1.FileId = T2.FileId '' EXECUTE SP_EXECUTESQL @query SET @query = ''UPDATE T3 SET T3.GroupId = T1.FileId, T3.IsParent = 0 FROM #TEMPTABLE T1 INNER JOIN TBL_EX_FILEINFO T2 WITH(NOLOCK) ON T1.FileId = T2.ParentFileId RIGHT JOIN ''+ @V_TMP_TABLE + '' T3 ON T3.GroupId = T2.GroupId WHERE T2.GroupId IS NOT NULL '' EXECUTE SP_EXECUTESQL @query END DROP TABLE #TEMPTABLE END -- Reset GroupId/IsParent for rest of the records SET @query = ''UPDATE T1 SET GroupId = CASE WHEN NOT EXISTS(SELECT 1 FROM '' +@V_TMP_TABLE+ '' WHERE FileId = t2.GroupId) AND T2.GroupId <> -1 AND ''+ CAST(@TreatOrphanasParent AS nvarchar(10)) + '' = 1 Then T1.FileId ELSE T2.GroupId END, IsParent = CASE WHEN NOT EXISTS(SELECT 1 FROM '' +@V_TMP_TABLE+ '' WHERE FileId = t2.GroupId) AND ''+ CAST(@TreatOrphanasParent AS nvarchar(10)) + '' = 1 Then 1 ELSE T2.IsParent END FROM ''+@V_TMP_TABLE +'' T1 INNER JOIN Tbl_Ex_FileInfo T2 WITH(NOLOCK) ON T1.FileId = T2.FileId WHERE T1.IsParent IS NULL '' EXECUTE SP_EXECUTESQL @query ; Set @TotalTiffCount=0 IF(@TiffEnable=1) BEGIN SET @query = '' IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@GlobalTempTiffTable+'''''')''+ '' DROP TABLE '' + @GlobalTempTiffTable ; EXECUTE SP_EXECUTESQL @query ; SET @query=''CREATE TABLE ''+@GlobalTempTiffTable+'' ( SEQ_NO BIGINT IDENTITY(1,1), FILE_ID_PK BIGINT, GROUPID BIGINT, BATESNUMBER NVARCHAR(2000), IMAGE_PATH NVARCHAR(MAX), PAGE_NUMBER INT, REDACTED_IMAGE_PATH NVARCHAR(MAX), ORIGINAL_EXPORT_IMAGE_PATH NVARCHAR(MAX), --CL7 FolderId int PRIMARY KEY (FILE_ID_PK, PAGE_NUMBER) )'' EXECUTE SP_EXECUTESQL @query --ChangeLog 1 starts IF(@GenerateBatesNum=0) -- No need to generate bates number BEGIN SET @query = ''INSERT INTO ''+@GlobalTempTiffTable+'' (FILE_ID_PK,GROUPID,BATESNUMBER,IMAGE_PATH,PAGE_NUMBER,REDACTED_IMAGE_PATH,ORIGINAL_EXPORT_IMAGE_PATH, FolderId) SELECT t2.FileID, --t2.GroupId, --case when not exists(select 1 from ''+@V_TMP_TABLE+'' where FileId=t2.GroupId) and ''+Cast(@TreatOrphanAsParent as nvarchar(10))+''=1 and t2.GroupId<>-1 then T1.FileId else T2.groupid end as GroupId, T5.GroupId, T6.BatesNumber, --CL11 case when t1.IsExcludedTiff = 1 then ''''EXCLUDED_FILE'''' when T6.Image_Path = ''''EXCLUDED_FILE'''' then ''''EXCLUDED_FILE'''' else t3.ImagePath end as ImagePath, T6.Page_Number, t3.RedactedImagePath, --CL7 t1.TiffFieldDetails.value(''''(Fields/Field[@Name=''''''''ImagePath'''''''']/text())[1]'''', ''''nvarchar(max)'''') as TiffExportPath, T6.FolderId FROM tbl_ep_ExportTiffPrimaryTable T6 WITH(NOLOCK) INNER JOIN tbl_ex_fileinfo t2 WITH(NOLOCK) ON T6.File_Id_PK=t2.FileId INNER JOIN ''+@V_TMP_TABLE+'' T5 ON T6.File_Id_PK=t5.FileId LEFT JOIN tbl_tiff_Images t3 WITH(NOLOCK) ON T6.File_Id_PK=t3.FileID AND T6.Page_Number=t3.PageNumber INNER JOIN tbl_ep_ExportDetails t4 WITH(NOLOCK) ON T6.File_Id_PK=t4.FileID AND T6.ExportID=t4.ExportID LEFT JOIN tbl_ep_TiffExportDetails t1 WITH(NOLOCK) On T6.File_Id_pk = T1.FileId and T6.Page_Number = T1.PageNumber and T1.ExportId = ''+CAST(@ExportId as nvarchar(max)) +'' WHERE t6.ExportId=''+CAST(@ExportId as nvarchar(max)) EXEC sp_executesql @query END ELSE -- Process to generate bates number in re-export starts. BEGIN DECLARE @V_INS_QRY NVARCHAR(MAX) DECLARE @V_DROP_QRY NVARCHAR(MAX) DECLARE @SQL NVARCHAR(MAX) DECLARE @BatesNumTempTable nvarchar(50) SET @BatesNumTempTable =''##TEMP_CONTROL_NUMBER_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)); SET @query = ''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@BatesNumTempTable+'''''') BEGIN DROP TABLE '' + @BatesNumTempTable +'' END'' exec sp_executesql @query SET @query=''CREATE TABLE ''+@BatesNumTempTable+'' ( TIFF_SEQ_NO BIGINT IDENTITY(1,1), FILE_ID_PK BIGINT, PAGE_NUMBER INT, IMAGE_PATH NVARCHAR(MAX), CONTROLNUMBER NVARCHAR(MAX), REDACTED_IMAGE_PATH NVARCHAR(MAX), ORIGINAL_EXPORT_IMAGE_PATH NVARCHAR(MAX) --CL7 PRIMARY KEY (FILE_ID_PK, PAGE_NUMBER) ) '' EXECUTE SP_EXECUTESQL @query if(@IncludeBadTiff =0) Begin CREATE TABLE #BADTIFFS (FILEID BigInt) SET @QUERY = ''IF OBJECT_ID(''''tempdb..#Temp'''') IS NOT NULL DROP TABLE #Temp CREATE TABLE #Temp (FileID BIGINT PRIMARY KEY, TotalPage INT DEFAULT 0, BadCount INT DEFAULT 0) INSERT INTO #Temp (FileID, TotalPage) SELECT V.FileID, MAX(I.PageNumber) "TotalPages" FROM ''+ @V_TMP_TABLE+'' V JOIN Tbl_Tiff_Images I WITH(NOLOCK) ON V.FileID = I.FileId GROUP BY V.FileID DELETE FROM T FROM #Temp T JOIN Tbl_QC_Document D WITH(NOLOCK) ON T.FileID = D.FileId WHERE D.IsTiffBad = 1 UPDATE T SET BadCount = Derived.BadCount FROM #Temp T JOIN (SELECT T.FileID, COUNT(*) "BadCount" FROM #Temp T JOIN Tbl_QC_Image I WITH(NOLOCK) ON T.FileID = I.FileId WHERE I.IsTiffBad = 1 GROUP BY T.FileID ) Derived ON T.FileID = Derived.FileID UPDATE T SET BadCount = T.BadCount + Derived.BadCount FROM #Temp T JOIN (SELECT T.FileID, COUNT(*) "BadCount" FROM #Temp T JOIN Tbl_QC_PreQCImage I WITH(NOLOCK) ON T.FileID = I.FileId WHERE I.IsBlank = 1 GROUP BY T.FileID ) Derived ON T.FileID = Derived.FileID INSERT INTO #BADTIFFS SELECT FileID FROM #Temp WHERE TotalPage = BadCount'' EXECUTE SP_EXECUTESQL @QUERY CREATE NONCLUSTERED INDEX IDX_#BADTIFFS_FILEID On #BADTIFFS(FileId) End DECLARE @Insert_Query NVARCHAR (MAX) SET @Insert_Query='' INSERT INTO '' + @BatesNumTempTable + '' (FILE_ID_PK, PAGE_NUMBER,IMAGE_PATH,CONTROLNUMBER,REDACTED_IMAGE_PATH) '' SET @V_INS_QRY = '' SELECT T1.FILE_ID_PK,ISNULL(T2.PAGENUMBER,1) PAGENUMBER ,T2.IMAGEPATH IMAGEPATH, CONTROLNUMBER,T2.REDACTEDIMAGEPATH FROM (Select FileID as FILE_ID_PK, CONTROLNUMBER from tbl_ep_exportDetails where exportId=''+ CAST(@ExportId as nvarchar(max)) +'' ) T1 INNER JOIN ''+@V_TMP_TABLE+'' t5 ON t5.FileId=t1.File_Id_PK LEFT JOIN TBL_TIFF_IMAGES T2 ON T1.FILE_ID_PK=T2.FILEID '' declare @badTiffExcludeQuery nvarchar(max) ='''' if(@IncludeBadTiff =0) set @badTiffExcludeQuery = '' LEFT JOIN tbl_qc_image qci ON t2.fileid=qci.fileid and t2.pagenumber=qci.pagenumber LEFT JOIN tbl_qc_document qcd ON qci.fileid=qcd.fileid LEFT JOIN ( select fileid, 1 as donotpull from tbl_qc_document m2 where isnull(istiffbad,0)=1 )k ON k.fileid = t1.file_id_pk Left Join Tbl_QC_PreQCImage PQI On T1.File_Id_Pk = PQI.FileId And T2.FileId = PQI.FileId And PQI.PageNumber = T2.PageNumber '' SET @V_INS_QRY = @V_INS_QRY + @badTiffExcludeQuery DECLARE @tagQuery NVARCHAR(MAX) DECLARE @filetypeQuery NVARCHAR(MAX) DECLARE @fileTypeWhereQuery NVARCHAR(MAX) DECLARE @tagWhereQuery NVARCHAR(MAX) DECLARE @filterQuery NVARCHAR(MAX) DECLARE @whereQuery nvarchar(max) SET @tagQuery='' LEFT JOIN tbl_ex_FileTagAssociation T3 ON T1.FILE_ID_PK=T3.FILEID AND T3.TagId in (''+@TagIdList+'') '' SET @filetypeQuery='' INNER JOIN TBL_EX_FILEINFO T4 ON T1.FILE_ID_PK=T4.FILEID '' SET @tagWhereQuery='' AND T3.FileId IS NULL '' IF(@TagExcludeType = ''EXPORT_SELECTED_ONLY'') SET @tagWhereQuery ='' AND T3.FileId IS NOT NULL '' SET @whereQuery='' Where 1=1 '' SET @fileTypeWhereQuery='' AND T4.FILETYPE NOT IN (''+@FileTypeList+'') '' if(@IncludeBadTiff =0) SET @whereQuery= @whereQuery + ''AND isnull(qcd.istiffbad,0)<>1 and isnull(qci.istiffbad,0) <> 1 AND donotpull IS NULL And IsNull(PQI.IsBlank, 0) <> 1 '' IF(LEN(@TagIdList)>0) SET @whereQuery= @whereQuery + @tagWhereQuery IF(LEN(@FileTypeList)>0) SET @whereQuery=@whereQuery + @fileTypeWhereQuery IF(LEN(@TagIdList)>0) SET @V_INS_QRY=@V_INS_QRY + @tagQuery IF(LEN(@FileTypeList)>0) SET @V_INS_QRY=@V_INS_QRY + @filetypeQuery IF(LEN(@WhereQuery)>0) SET @V_INS_QRY=@V_INS_QRY + @whereQuery if(@IncludeBadTiff =0) SET @V_INS_QRY= @V_INS_QRY+ '' UNION SELECT FILE_ID_PK,1 as PAGENUMBER, ''''EXCLUDED_FILE'''' as IMAGEPATH, CONTROLNUMBER,'''''''' as REDACTEDIMAGEPATH FROM (Select FileID as FILE_ID_PK, CONTROLNUMBER from tbl_ep_exportDetails where exportId=''+ CAST(@ExportId as nvarchar(max)) +'' ) sub Inner join tbl_qc_document qcdoc on sub.File_Id_Pk=qcdoc.fileid and qcdoc.IsTiffBad=1 UNION Select FILE_ID_PK,PAGENUMBER,IMAGEPATH,CONTROLNUMBER,REDACTEDIMAGEPATH from ( select FILE_ID_PK,1 as PAGENUMBER, ''''EXCLUDED_FILE'''' as IMAGEPATH,CONTROLNUMBER,'''''''' as REDACTEDIMAGEPATH, row_number() over ( partition by sub.file_id_pk order by sub.file_id_pk) rownum FROM (Select FileID as FILE_ID_PK, CONTROLNUMBER from tbl_ep_exportDetails where exportId=''+ CAST(@ExportId as nvarchar(max)) +'' ) sub INNER JOIN #BADTIFFS BT ON BT.FILEID = SUB.FILE_ID_PK )TT where rownum=1 '' DECLARE @ExcludeQuery nvarchar(max) SET @ExcludeQuery='''' IF(@ExcludeTiffFiles=1) BEGIN IF(LEN(@TagIdList)>0 OR LEN(@FileTypeList)>0) BEGIN DECLARE @tagExQuery NVARCHAR(MAX) DECLARE @filetypeExQuery NVARCHAR(MAX) DECLARE @fileTypeWhereExQuery NVARCHAR(MAX) DECLARE @tagWhereExQuery NVARCHAR(MAX) DECLARE @filterExQuery NVARCHAR(MAX) DECLARE @whereExQuery nvarchar(max) SET @ExcludeQuery='' UNION SELECT FILE_ID_PK,''''1'''' PAGENUMBER,''''EXCLUDED_FILE'''' IMAGEPATH, CONTROLNUMBER, '''''''' as REDACTEDIMAGEPATH FROM (Select FileID as FILE_ID_PK, ControlNumber from tbl_ep_exportDetails where exportId=''+ CAST(@ExportId as nvarchar(max)) +'' ) Tx1'' SET @filetypeExQuery='' LEFT JOIN TBL_EX_FILEINFO Tx4 ON Tx1.FILE_ID_PK=Tx4.FILEID '' SET @tagWhereExQuery='' OR EXISTS ( SELECT TOP 1 1 FROM TBL_EX_FILETAGASSOCIATION WHERE TAGID IN (''+@TagIdList+'') AND FILEID=TX1.FILE_ID_pk)'' IF(@TagExcludeType = ''EXPORT_SELECTED_ONLY'') SET @tagWhereExQuery='' OR NOT EXISTS ( SELECT TOP 1 1 FROM TBL_EX_FILETAGASSOCIATION WHERE TAGID IN (''+@TagIdList+'') AND FILEID=TX1.FILE_ID_pk)'' SET @whereExQuery='' Where (1=0 '' SET @fileTypeWhereExQuery='' OR Tx4.FILETYPE IN (''+@FileTypeList+'') '' IF(LEN(@TagIdList)>0) SET @whereExQuery = @whereExQuery + @tagWhereExQuery IF(LEN(@FileTypeList)>0) begin SET @whereExQuery=@whereExQuery + @fileTypeWhereExQuery end IF(LEN(@FileTypeList)>0) SET @ExcludeQuery=@ExcludeQuery + @filetypeExQuery if(@IncludeBadTiff =0) Set @badTiffExcludeQuery ='' And NOT EXISTS (SELECT TOP 1 1 FROM #BADTIFFS BB WHERE BB.FILEID = Tx1.File_ID_PK )'' else Set @badTiffExcludeQuery ='''' SET @whereExQuery = @whereExQuery + '')'' + @badTiffExcludeQuery SET @ExcludeQuery=@ExcludeQuery + @whereExQuery END SET @V_INS_QRY= ''SELECT FILE_ID_PK,ISNULL(PAGENUMBER,1) PAGENUMBER,IMAGEPATH, CONTROLNUMBER,REDACTEDIMAGEPATH FROM ( ''+ @V_INS_QRY + @ExcludeQuery + '')z'' END ELSE BEGIN SET @V_INS_QRY= ''SELECT FILE_ID_PK,ISNULL(PAGENUMBER,1) PAGENUMBER,IMAGEPATH,CONTROLNUMBER, REDACTEDIMAGEPATH FROM ( ''+ @V_INS_QRY + '')z'' END SET @V_INS_QRY=@Insert_Query + @V_INS_QRY + '''' EXECUTE SP_EXECUTESQL @V_INS_QRY ; SET @SQL='' INSERT INTO ''+@GlobalTempTiffTable+'' select FILE_ID_PK, GroupId, (SELECT DBO.FN_EP_GETBATESNUMBER (T.ControlNumber, ''+CAST(@BatesNumberPadLength AS VARCHAR(64))+'', ''''0'''', ISNULL(T.page_seq_no,1), ''''''+ @BatesControlSeparator + '''''', ''+CAST(@PadFromFirstPage AS VARCHAR(64))+'', ''+CAST(@PadStartNumberByOne AS VARCHAR(64))+'')) AS BATESNUMBER, IMAGE_PATH, PAGE_NUMBER, REDACTED_IMAGE_PATH, NULL, -- CL7, Original Export tiff path is null when bates number has to be generated. Because tiff is not exported in original export NULL from( SELECT Tiff_Seq_No, T1.FILE_ID_PK, --case when not exists(select 1 from ''+@V_TMP_TABLE+'' where FileId=t2.GroupId) and ''+Cast(@TreatOrphanAsParent as nvarchar(10))+''=1 and t2.GroupId<>-1 then T1.File_Id_Pk else T2.groupid end as GroupId, T3.GroupId, Row_Number() over (partition by t1.File_Id_Pk order by t1.page_number) page_seq_no, T1.IMAGE_PATH, isnull(T1.PAGE_NUMBER,1) PAGE_NUMBER, T1.REDACTED_IMAGE_PATH, T1.ControlNumber FROM ''+@BatesNumTempTable+'' T1, TBL_EX_FILEINFO T2, ''+ @V_TMP_TABLE + '' T3 WHERE T1.FILE_ID_PK=T2.FILEID AND T1.FILE_ID_PK = T3.FileId )t ORDER BY t.TIFF_SEQ_NO '' EXECUTE SP_EXECUTESQL @SQL ; SET @V_DROP_QRY = ''DROP TABLE '' + @BatesNumTempTable ; EXECUTE SP_EXECUTESQL @V_DROP_QRY IF EXISTS (SELECT * FROM tempdb.dbo.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#BADTIFFS'')) DROP TABLE #BADTIFFS; --End of generating bates number --ChangeLog 1 ends END declare @tiff_count_return bigint --IF(@DoNotExportAnything_Excluded=1) --CL12 start --Begin -- SET @SQL=''SELECT @TotalTiffCount=COUNT(*) from [''+@GlobalTempTiffTable+''] where Image_Path<>''''EXCLUDED_FILE'''''' --End --Else --Begin SET @SQL=''SELECT @TotalTiffCount=COUNT(*) from [''+@GlobalTempTiffTable+'']'' --End --CL12 end exec sp_executesql @SQL,N''@TotalTiffCount bigint output'',@TotalTiffCount= @tiff_count_return OUTPUT set @TotalTiffCount=@tiff_count_return SET @query = ''CREATE NONCLUSTERED INDEX idx_non_group_id_''+@GlobalTempTiffTable+'' ON ''+@GlobalTempTiffTable+''(GROUPID)'' EXEC sp_executesql @query END create table #tmpEmptyTable( FileId bigint, ExportId bigint, EXPORT_NATIVE_PATH nvarchar(2000), EXPORT_FULLTEXT_PATH nvarchar(2000), EXPORT_NATIVE_FILE_NAME nvarchar(400), EXPORT_FULLTEXT_TYPE nvarchar(50), IMAGE_PAGE_COUNT bigint, IS_NATIVE_MISSING nvarchar(10), HasRedaction bit ) EXEC [sp_ep_GetFieldValuesForEmptyFields] @ExportId,''#tmpEmptyTable'' DECLARE @ParentSortedTempTable nvarchar(max) =''##tmpParentSorted_''+@GUID+''_''+CAST(@@SPID AS VARCHAR(32)); SET @OrderedInsertQuery ='' INSERT INTO ''+@GlobalTempTable+'' (OriginalSeqNo, FILE_ID_PK, GROUPID,CONTROLNUMBER, ORIGINALCONTROLNUMBER, DERIVEDDATA,ORIGINAL_EXPORT_NATIVE_PATH,ORIGINAL_EXPORT_FULLTEXT_PATH, IsParent, ORIGINAL_EXPORT_FILE_NAME ,ORIGINAL_EXPORT_FULLTEXT_TYPE, ORIGINAL_IMAGE_PAGE_COUNT, ORIGINAL_IS_NATIVE_MISSING, ORIGINAL_HAS_REDACTION)--CL7 SELECT T1.Seq_No, t2.FileID, --case when not exists(select 1 from ''+@V_TMP_TABLE+'' where FileId=t2.GroupId) and ''+Cast(@TreatOrphanAsParent as nvarchar(10))+''=1 and t2.GroupId<>-1 then T1.File_Id_pk else T2.groupid end as GroupId, T4.GroupId, t1.ControlNumber, T1.ORIGINALCONTROLNUMBER, t1.DerivedData, et.EXPORT_NATIVE_PATH NativeExportPath, et.EXPORT_FULLTEXT_PATH FulltextExportPath, --CAST( CASE WHEN NOT EXISTS(SELECT 1 FROM ''+@V_TMP_TABLE+'' where FileId=t2.GroupId) and ''+Cast(@TreatOrphanAsParent as nvarchar(10))+''=1 THEN 1 ELSE t2.IsParent END AS BIT) IsParent, T4.IsParent, et.EXPORT_NATIVE_FILE_NAME ExportFileName, et.EXPORT_FULLTEXT_TYPE FulltextType, et.IMAGE_PAGE_COUNT ImagePageCount, et.IS_NATIVE_MISSING IsNativeMissing, et.HasRedaction FROM tbl_ep_ExportPrimarytable t1 WITH(NOLOCK) INNER Join tbl_ep_Exports ex with(nolock) ON t1.ExportId=ex.ExportId INNER JOIN tbl_ex_fileinfo t2 WITH(NOLOCK) ON t1.File_Id_pk=t2.FileID AND t1.ExportId=''+CAST(@ExportId as nvarchar(max))+'' INNER JOIN ''+@V_TMP_TABLE+'' T4 ON T2.FILEID=T4.FILEID INNER JOIN #tmpEmptyTable et ON et.FileId=t1.File_Id_pk LEFT JOIN tbl_rev_CustomField custom ON custom.FileId=t2.FileId LEFT JOIN ''+@ParentSortedTempTable+'' tsorted ON T4.GroupId=tsorted.GroupId '' SET @V_CREATE_QRY ='' IF OBJECT_ID(''''tempdb..''+@ParentSortedTempTable +'''''') IS NOT NULL DROP TABLE ''+@ParentSortedTempTable +'' CREATE TABLE ''+@ParentSortedTempTable +'' ( SEQ_NO BIGINT IDENTITY(1,1), FileID BIGINT, GroupId BIGINT, IsParent BIT, CONSTRAINT [PK_''+@ParentSortedTempTable+''] PRIMARY KEY CLUSTERED ([SEQ_NO] ASC) WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] '' EXECUTE SP_EXECUTESQL @V_CREATE_QRY ; DECLARE @ParentSortQuery nvarchar(max) SET @ParentSortQuery=''SELECT T1.FileId,T1.GroupId,T1.IsParent FROM ''+@V_TMP_TABLE+'' T1 WITH(NOLOCK) INNER JOIN tbl_ex_fileinfo T2 WITH(NOLOCK) ON t1.FileId=T2.FileId '' IF @SORTBY1 = ''ORIGINAL_FOLDER_PATH'' OR @SORTBY2 = ''ORIGINAL_FOLDER_PATH'' OR @SORTBY3 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @orderClause = '' ORDER BY '' SET @query=''select @output = Case when ''''''+@SortBy1+''''''=''''ORIGINAL_FOLDER_PATH'''' then ''''FileFolder ''+@SORTORDER1+ '''''' when ''''''+@SortBy2+''''''=''''ORIGINAL_FOLDER_PATH'''' then ''''FileFolder ''+@SORTORDER2+ '''''' when ''''''+@SortBy3+''''''=''''ORIGINAL_FOLDER_PATH'''' then ''''FileFolder ''+@SORTORDER3+ '''''' else ''''FileFolder'''' end '' DECLARE @output nvarchar(max) EXECUTE SP_EXECUTESQL @QUERY,N''@output nvarchar(100) output'', @output= @output output ; CREATE TABLE #TMPFileFolder (SEQ_NO BIGINT IDENTITY(1,1), GroupId BIGINT PRIMARY KEY, OriginalFileFolder nvarchar(max)) SET @Query='' INSERT INTO #TMPFileFolder SELECT T3.GroupId, REVERSE(SUBSTRING(REVERSE(RTRIM([OriginalFilePath])),Len(RTRIM(FileName)) + 2 , LEN(RTRIM([OriginalFilePath])))) [FileFolder] FROM tbl_ep_exportdetails T1 WITH(NOLOCK), tbl_ex_fileinfo FINFO, ''+@V_TMP_TABLE +'' T3 {custodianTable} where T1.FileId=FINFO.FileId AND T3.IsParent = 1 AND T1.FileId = T3.FileId AND t1.ExportId=''+CAST(@ExportId as nvarchar(max))+'' {custodianClause} {orderClause} '' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',TBL_EX_CUSTODIAN T4 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T4.CUSTODIANID = FINFO.CUSTODIANID'') SET @orderClause += '' T4.CUSTODIANNAME '' + @CustodianSortOrder + '','' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause += '' CASE IsEdocs WHEN 1 THEN 1 ELSE 0 END desc,''+@output+'',finfo.GroupDate, T3.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXECUTE SP_EXECUTESQL @Query; SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpFileFolder T3 ON T1.GroupId =T3.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #TMPFILEFOLDER T3 ON T4.GROUPID = T3.GROUPID '' END IF @SORTBY1 = ''RELATIVE_FILE_PATH'' OR @SORTBY2 = ''RELATIVE_FILE_PATH'' OR @SORTBY3 = ''RELATIVE_FILE_PATH'' BEGIN SET @orderClause = '' ORDER BY '' SET @query=''SELECT @outputRelativePath = CASE WHEN ''''''+@SortBy1+''''''=''''RELATIVE_FILE_PATH'''' THEN ''''FileFolder ''+@SORTORDER1+ '', FileName ''+@SORTORDER1+'''''' WHEN ''''''+@SortBy2+''''''=''''RELATIVE_FILE_PATH'''' THEN ''''FileFolder ''+@SORTORDER2+ '', FileName ''+@SORTORDER2+'''''' WHEN ''''''+@SortBy3+''''''=''''RELATIVE_FILE_PATH'''' THEN ''''FileFolder ''+@SORTORDER3+ '', FileName ''+@SORTORDER3+'''''' ELSE ''''FileFolder, FileName '''' END '' DECLARE @outputRelativePath nvarchar(max) EXECUTE SP_EXECUTESQL @QUERY,N''@outputRelativePath NVARCHAR(100) output'', @outputRelativePath= @outputRelativePath output ; CREATE TABLE #TMPFILEFOLDERRELATIVEPATH (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, ORIGINALFILEFOLDER NVARCHAR(MAX)) SET @QUERY ='' INSERT INTO #TMPFILEFOLDERRELATIVEPATH SELECT T3.GROUPID, REVERSE(SUBSTRING(REVERSE(RTRIM(RelativeFilePath)),Len(RTRIM(FileName)) +2, LEN(RTRIM(RelativeFilePath)))) [FileFolder] FROM TBL_EP_EXPORTDETAILS T1 WITH(NOLOCK), TBL_EX_FILEINFO FI, ''+@V_TMP_TABLE +'' T3 {custodianTable} WHERE T1.FILEID = FI.FILEID AND T3.ISPARENT = 1 AND T1.FILEID = T3.FILEID AND T1.EXPORTID=''+CAST(@ExportId as nvarchar(max))+'' {custodianClause} {orderClause} '' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',TBL_EX_CUSTODIAN T4 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T4.CUSTODIANID = FI.CUSTODIANID'') SET @orderClause += '' T4.CUSTODIANNAME '' + @CustodianSortOrder + '','' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause += @outputRelativePath+'',T3.GROUPID '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXECUTE SP_EXECUTESQL @QUERY; SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #TMPFILEFOLDERRELATIVEPATH T6 ON T1.GroupId =T6.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #TMPFILEFOLDERRELATIVEPATH T6 ON T4.GroupId = T6.GroupId '' END IF @SORTBY1 = ''EMAIL_THREAD'' OR @SORTBY2 = ''EMAIL_THREAD'' OR @SORTBY3 = ''EMAIL_THREAD'' BEGIN CREATE TABLE #TMPConvID (GroupId BIGINT PRIMARY KEY, ConvId nvarchar(max)) SELECT @Query = '' INSERT INTO #TMPConvID (GroupId, ConvId) SELECT GroupId, ConversationID FROM ( SELECT T4.GroupId, ConversationId, ROW_NUMBER() OVER(PARTITION BY T4.GroupId ORDER BY T2.FileId ASC) as PrefId FROM tbl_ep_ExportDetails t1 WITH(NOLOCK), tbl_ex_fileinFo t2 WITH(NOLOCK), tbl_ex_EmailConversationId t3 WITH(NOLOCK), ''+@V_TMP_TABLE +'' T4 WHERE t1.FileId = t2.FileId AND t2.FileId=t3.FileID AND T1.FileId = T4.FileId AND t1.ExportId = ''+CAST(@ExportId as nvarchar(max))+'' AND t3.ConversationId<>'''''''' )zz WHERE zz.PrefId = 1'' EXEC sp_executesql @query SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #TMPCONVID T5 ON T1.GroupId =T5.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #TMPCONVID T5 WITH(NOLOCK) ON T4.GROUPID = T5.GROUPID '' END IF @SORTBY1 = ''ORIGINAL_FILE_NAME'' OR @SORTBY2 = ''ORIGINAL_FILE_NAME'' OR @SORTBY3 = ''ORIGINAL_FILE_NAME'' BEGIN SET @orderClause = '' ORDER BY '' CREATE TABLE #tmpFileName (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, OriginalFileName NVARCHAR(MAX)) SET @QUERY = '' INSERT INTO #tmpFileName SELECT T3.GroupId, finfo.FileName FROM TBL_EP_EXPORTDETAILS T1 WITH(NOLOCK), TBL_EX_FILEINFO finfo, ''+@V_TMP_TABLE +'' T3 {custodianTable} WHERE T1.FileId=finfo.FileId and t1.FileId=T3.FileId AND T1.EXPORTID=''+CAST(@ExportId as nvarchar(max))+'' AND T3.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' finfo.FileName,finfo.GroupDate, T3.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpFileName tfilename ON T1.GroupId =tfilename.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpFileName tfilename WITH(NOLOCK) ON T4.GroupId = tfilename.GroupId '' END IF @SORTBY1 = ''MEDIA_NAME'' OR @SORTBY2 = ''MEDIA_NAME'' OR @SORTBY3 = ''MEDIA_NAME'' BEGIN SET @orderClause = '' ORDER BY '' CREATE TABLE #tmpMediaName (SEQ_NO BIGINT IDENTITY(1,1), MediaId BIGINT ,GroupId Bigint,FileId bigint, Media_Name NVARCHAR(200)) SET @QUERY = '' INSERT INTO #tmpMediaName SELECT M.MediaId, T3.GroupId, finfo.FileId, M.MediaName FROM TBL_EP_EXPORTDETAILS T1 WITH(NOLOCK), TBL_EX_FILEINFO finfo WITH(NOLOCK), tbl_ex_Media M with(nolock), ''+@V_TMP_TABLE +'' T3 {custodianTable} WHERE T1.FileId=finfo.FileId and t1.FileId=T3.FileId AND T1.EXPORTID=''+CAST(@ExportId as nvarchar(max))+'' AND finfo.MediaId=M.MediaId {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' M.MediaName,M.MediaId,T3.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpMediaName tMediaName ON T1.FileId =tMediaName.FileId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpMediaName tMediaName WITH(NOLOCK) ON T4.FileId = tMediaName.FileId '' END IF(@SORTBY1<>''EMAIL_THREAD'' AND @SORTBY1<>''RELATIVE_FILE_PATH'' AND @SORTBY1<>''ORIGINAL_FOLDER_PATH'' AND @SORTBY1<>''GROUP_DATE'' AND @SORTBY1<>''INGESTION_ORDER'' AND @SORTBY1<>''ORIGINAL_FILE_NAME'' AND @SORTBY1<>''MEDIA_NAME'') BEGIN SET @orderClause = '' ORDER BY '' CREATE TABLE #tmpCustom1 (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, CustomField1 NVARCHAR(MAX)) SET @QUERY = '' INSERT INTO #tmpCustom1 SELECT T3.GroupId, cf.''+ @SORTBY1 +'' [CustomField1] FROM TBL_EP_EXPORTDETAILS T1 WITH(NOLOCK), TBL_EX_FILEINFO finfo, ''+@V_TMP_TABLE +'' T3, tbl_rev_CustomField cf {custodianTable} WHERE T1.Fileid=cf.Fileid and T1.FileId=finfo.FileId and T1.FileId=t3.FileId and T1.ExportId =''+CAST(@ExportId as nvarchar(max))+'' AND T3.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause +='' CustomField1,finfo.GroupDate, T3.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpCustom1 tcustom1 ON T1.GroupId =tcustom1.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpCustom1 tcustom1 WITH(NOLOCK) ON T4.GroupId = tcustom1.GroupId '' END IF(@SORTBY2<>'''' AND @SORTBY2<>''EMAIL_THREAD'' AND @SORTBY2<>''RELATIVE_FILE_PATH'' AND @SORTBY2<>''ORIGINAL_FOLDER_PATH'' AND @SORTBY2<>''GROUP_DATE'' AND @SORTBY2<>''INGESTION_ORDER'' AND @SORTBY2<>''ORIGINAL_FILE_NAME'' AND @SORTBY2<>''MEDIA_NAME'') BEGIN CREATE TABLE #tmpCustom2 (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, CustomField2 NVARCHAR(MAX)) SET @orderClause ='' Order by '' SET @QUERY = '' INSERT INTO #tmpCustom2 SELECT T3.GroupId, cf.''+ @SORTBY2 +'' [CustomField2] FROM TBL_EP_EXPORTDETAILS T1 WITH(NOLOCK), tbl_ex_FileInfo finfo, ''+@V_TMP_TABLE +'' T3, tbl_rev_CustomField cf {custodianTable} WHERE T1.Fileid=cf.Fileid and T1.FileId=finfo.FileId and T1.FileId=t3.FileId and T1.ExportId =''+CAST(@ExportId as nvarchar(max))+'' AND T3.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause =@orderClause + '' CustomField2,finfo.GroupDate, T3.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpCustom2 tcustom2 ON T1.GroupId =tcustom2.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpCustom2 tcustom2 WITH(NOLOCK) ON T4.GroupId = tcustom2.GroupId '' END IF(@SORTBY3<>'''' AND @SORTBY3<>''EMAIL_THREAD'' AND @SORTBY3<>''RELATIVE_FILE_PATH'' AND @SORTBY3<>''ORIGINAL_FOLDER_PATH'' AND @SORTBY3<>''GROUP_DATE'' AND @SORTBY3<>''INGESTION_ORDER'' AND @SORTBY3<>''ORIGINAL_FILE_NAME'' AND @SORTBY3<>''MEDIA_NAME'') BEGIN CREATE TABLE #tmpCustom3 (SEQ_NO BIGINT IDENTITY(1,1), GROUPID BIGINT PRIMARY KEY, CustomField3 NVARCHAR(MAX)) SET @orderClause ='' Order by '' SET @QUERY = '' INSERT INTO #tmpCustom3 SELECT T3.GroupId, cf.''+ @SORTBY3 +'' [CustomField3] FROM TBL_EP_EXPORTDETAILS T1 WITH(NOLOCK), tbl_ex_FileInfo finfo, ''+@V_TMP_TABLE +'' T3, tbl_rev_CustomField cf {custodianTable} WHERE T1.Fileid=cf.Fileid and T1.FileId=finfo.FileId and T1.FileId=t3.FileId and T1.ExportId =''+CAST(@ExportId as nvarchar(max))+'' AND T3.IsParent=1 {custodianClause} {orderClause}'' IF @SortByCustodian = 1 BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','',Tbl_Ex_Custodian T2 WITH(NOLOCK)'') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'',''AND T2.CustodianId = finfo.CustodianId'') SET @orderClause += '' t2.CustodianName ''+@CustodianSortOrder + '', '' END ELSE BEGIN SET @QUERY=REPLACE(@QUERY,''{custodianTable}'','' '') SET @QUERY=REPLACE(@QUERY,''{custodianClause}'','' '') END SET @orderClause =@orderClause + '' CustomField3,finfo.GroupDate, T3.GroupId '' SET @QUERY = REPLACE(@QUERY,''{orderClause}'', @orderClause) EXEC SP_EXECUTESQL @QUERY SET @ParentSortQuery =@ParentSortQuery + '' INNER JOIN #tmpCustom3 tcustom3 ON T1.GroupId =tcustom3.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + ''LEFT JOIN #tmpCustom3 tcustom3 WITH(NOLOCK) ON T4.GroupId = tcustom3.GroupId '' END IF @SortByCustodian = 1 BEGIN SET @ParentSortQuery=@ParentSortQuery + '' INNER JOIN Tbl_Ex_Custodian TC WITH(NOLOCK) On TC.CustodianId = T2.CustodianId WHERE T1.IsParent =1 ORDER BY TC.CUSTODIANNAME '' + @CustodianSortOrder SET @OrderedInsertQuery = @OrderedInsertQuery + '' INNER JOIN Tbl_Ex_Custodian TC On TC.CustodianId = T2.CustodianId ORDER BY TC.CUSTODIANNAME '' + @CustodianSortOrder END ELSE BEGIN SET @ParentSortQuery =@ParentSortQuery + '' WHERE T1.IsParent =1 ORDER BY (SELECT NULL) '' SET @OrderedInsertQuery = @OrderedInsertQuery + '' ORDER BY ( SELECT NULL) '' END SET @OrderedInsertQuery = @OrderedInsertQuery + '', tsorted.SEQ_NO,T4.IsParent desc'' IF @SORTBY1 = ''GROUP_DATE'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GROUPDATE, 120),120) ''+ @SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GROUPDATE, 120),120) ''+ @SORTORDER1 END ELSE IF @SORTBY1 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T3.OriginalFileFolder ''+@SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T3.SEQ_NO,T3.OriginalFileFolder ''+@SORTORDER1 END ELSE IF @SORTBY1 = ''EMAIL_THREAD'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T5.CONVID ''+ @SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T5.CONVID ''+ @SORTORDER1 END ELSE IF @SORTBY1 = ''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T6.ORIGINALFILEFOLDER ''+@SORTORDER1 + '', T2.[RelativeFilePath]'' +@SORTORDER1 +'', T2.[Filename]'' +@SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T6.SEQ_NO,T6.ORIGINALFILEFOLDER ''+@SORTORDER1 + '', T2.[RelativeFilePath]'' +@SORTORDER1 +'', T2.[Filename]'' +@SORTORDER1 END ELSE IF @SORTBY1 = ''ORIGINAL_FILE_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T2.FileName ''+@SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tfilename.SEQ_NO,T2.FileName ''+@SORTORDER1 END ELSE IF @SORTBY1 = ''MEDIA_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tMediaName.Media_Name ''+@SORTORDER1+'',tMediaName.MediaId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', tMediaName.SEQ_NO,tMediaName.Media_Name ''+@SORTORDER1+'',tMediaName.MediaId'' END ELSE IF @SORTBY1 = ''INGESTION_ORDER'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T1.GroupId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.GROUPID, T2.FILEID'' END ELSE IF @SORTBY1 <> ''INGESTION_ORDER'' AND lEN(@SORTBY1)>0 BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tcustom1.CustomField1 ''+ @SORTORDER1 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tcustom1.SEQ_NO,custom.''+@SORTBY1 + '' ''+ @SORTORDER1 END IF @SORTBY2 = ''GROUP_DATE'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GROUPDATE, 120),120) ''+ @SORTORDER2 END ELSE IF @SORTBY2 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T3.OriginalFileFolder ''+@SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T3.SEQ_NO,T3.OriginalFileFolder ''+@SORTORDER2 END ELSE IF @SORTBY2 = ''EMAIL_THREAD'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T5.CONVID ''+ @SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T5.CONVID ''+ @SORTORDER2 END ELSE IF @SORTBY2 = ''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T6.ORIGINALFILEFOLDER ''+@SORTORDER2 + '', T2.[RelativeFilePath]'' +@SORTORDER2 +'', T2.[Filename]'' +@SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T6.SEQ_NO,T6.ORIGINALFILEFOLDER ''+@SORTORDER2 + '', T2.[RelativeFilePath]'' +@SORTORDER2 +'', T2.[Filename]'' +@SORTORDER2 END ELSE IF @SORTBY2 = ''ORIGINAL_FILE_NAME'' BEGIN IF @SORTBY1<>''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T2.FileName ''+@SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tfilename.SEQ_NO,T2.FileName ''+@SORTORDER2 END END ELSE IF @SORTBY2 = ''MEDIA_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tMediaName.Media_Name ''+@SORTORDER2+'',tMediaName.MediaId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', tMediaName.SEQ_NO,tMediaName.Media_Name ''+@SORTORDER2+'',tMediaName.MediaId'' END ELSE IF @SORTBY2 = ''INGESTION_ORDER'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T1.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.GROUPID, T2.FILEID'' END ELSE IF @SORTBY2 <> ''INGESTION_ORDER'' AND lEN(@SORTBY2)>0 BEGIN SET @ParentSortQuery =@ParentSortQuery + '' ,tcustom2.SEQ_NO ,tcustom2.CustomField2 ''+ @SORTORDER2 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tcustom2.SEQ_NO,custom.''+@SORTBY2 + '' ''+ @SORTORDER2 END IF @SORTBY3 = ''GROUP_DATE'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GroupDate, 120),120) ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', CONVERT(DATETIME, CONVERT(VARCHAR, T2.GROUPDATE, 120),120) ''+ @SORTORDER3 END ELSE IF @SORTBY3 = ''ORIGINAL_FOLDER_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T3.OriginalFileFolder ''+@SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T3.SEQ_NO,T3.OriginalFileFolder ''+@SORTORDER3 END ELSE IF @SORTBY3 = ''EMAIL_THREAD'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '', T5.CONVID ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T5.CONVID ''+ @SORTORDER3 END ELSE IF @SORTBY3 = ''RELATIVE_FILE_PATH'' BEGIN IF @SORTBY1<>''RELATIVE_FILE_PATH'' AND @SORTBY2<>''RELATIVE_FILE_PATH'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T6.ORIGINALFILEFOLDER ''+@SORTORDER3 + '', T2.[RelativeFilePath]'' +@SORTORDER3 +'', T2.[Filename]'' +@SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', T6.SEQ_NO,T6.ORIGINALFILEFOLDER ''+@SORTORDER3 + '', T2.[RelativeFilePath]'' +@SORTORDER3 +'', T2.[Filename]'' +@SORTORDER3 END END ELSE IF @SORTBY3 = ''ORIGINAL_FILE_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T2.FileName ''+@SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '', tfilename.SEQ_NO,T2.FileName ''+@SORTORDER3 END ELSE IF @SORTBY3 = ''INGESTION_ORDER'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',T1.GroupId '' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.GROUPID, T2.FILEID'' END ELSE IF @SORTBY3 = ''MEDIA_NAME'' BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tMediaName.Media_Name ''+@SORTORDER3+'',tMediaName.MediaId'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', tMediaName.SEQ_NO,tMediaName.Media_Name ''+@SORTORDER3+'',tMediaName.MediaId'' END ELSE IF @SORTBY3 <> ''INGESTION_ORDER'' AND lEN(@SORTBY3)>0 BEGIN SET @ParentSortQuery =@ParentSortQuery + '',tcustom3.SEQ_NO ,tcustom3.CustomField3 ''+ @SORTORDER3 SET @OrderedInsertQuery = @OrderedInsertQuery + '' , tcustom3.SEQ_NO,custom.''+@SORTBY3 + '' ''+ @SORTORDER3 END IF(@SORTBY1<>''INGESTION_ORDER'' AND @SORTBY2<>''INGESTION_ORDER'' AND @SORTBY3<>''INGESTION_ORDER'' AND @SORTBY1<>''EMAIL_THREAD'' ) BEGIN SET @ParentSortQuery = @ParentSortQuery + '', T2.GROUPID, T2.FILEID'' SET @OrderedInsertQuery = @OrderedInsertQuery + '', T4.GROUPID, T2.FILEID'' END SET @V_INS_QRY = '' INSERT INTO ''+@ParentSortedTempTable+'' (FileId, GroupId, IsParent) '' +@ParentSortQuery EXECUTE sp_executesql @V_INS_QRY ; EXEC sp_executesql @OrderedInsertQuery SET @ExportFileCount = @@ROWCOUNT IF(@UseOriginalFileName =1) EXEC sp_ep_ComputeOriginalFilePath @GlobalTempTable, @IncludeOriginalFileExtension IF EXISTS (SELECT * FROM TEMPDB.DBO.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#TMPFILEFOLDER'')) DROP TABLE #TMPFILEFOLDER; IF EXISTS (SELECT * FROM tempdb.dbo.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#TMPFILEFOLDERRELATIVEPATH'')) DROP TABLE #TMPFILEFOLDERRELATIVEPATH; IF EXISTS (SELECT * FROM TEMPDB.DBO.SYSOBJECTS O WHERE O.XTYPE IN (''U'') AND O.ID = OBJECT_ID(N''TEMPDB..#TMPCONVID'')) DROP TABLE #TMPCONVID; --End of Change Log 2 SET @query = ''CREATE NONCLUSTERED INDEX idx_file_id_pk_''+@GlobalTempTable+'' ON ''+@GlobalTempTable+''(FILE_ID_PK)'' EXEC sp_executesql @query --CL6 --CL9 SELECT @query = ''INSERT INTO '' + @GlobalSecTempTable + ''(GroupId,BegAtt,EndAtt,BegFamily) SELECT groupid, (SELECT controlnumber from '' + @GlobalTempTable + '' where OriginalSeqNo= A.begatt) AS BEGATT, (SELECT controlnumber from '' + @GlobalTempTable + '' where OriginalSeqNo= A.endatt) AS ENDATT, (SELECT controlnumber from ''+@GlobalTempTable+'' where file_id_pk= A.GroupId) AS BEGFAMILY FROM ( select min(OriginalSeqNo) as begatt,max(OriginalSeqNo) as endatt,groupid from '' + @GlobalTempTable + '' t1 WITH(NOLOCK) WHERE FILE_ID_PK != GroupId and groupid!=-1 group by groupid ) A''; EXEC sp_executesql @query IF(@TiffEnable=1) Begin IF(@GenerateBatesNum =1) Begin exec sp_ep_ComputeExportFolderIdForTiff @IncludeCustodian , @IncludeMedia , @TiffFilesPerFolder , @PagesTogether, @GlobalTempTiffTable, @FamilyTogether , @StartFolderByOne , @StartFolderNo , @MultipageTiff , @GlobalTempTable END DECLARE @TiffSecondaryTable nvarchar(200), @TiffBatesTable nvarchar(2000) SELECT @TiffSecondaryTable = @GlobalTempTiffTable + N''_BATES'' SELECT @TiffBatesTable = @GlobalTempTiffTable+N''_BBATES_EBATES'' set @query=''IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@TiffSecondaryTable+'''''')''+ '' DROP TABLE '' + @TiffSecondaryTable +'' CREATE TABLE ''+@TiffSecondaryTable+'' ( FileId BIGINT PRIMARY KEY, BeginBates nvarchar(2000), EndBates nvarchar(2000), BeginFamBates nvarchar(2000), BeginAttBates nvarchar(2000), EndAttBates nvarchar(2000) ) IF EXISTS(SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=''''''+@TiffBatesTable+'''''')''+ '' DROP TABLE '' + @TiffBatesTable +'' CREATE TABLE ''+@TiffBatesTable+'' ( FileId BIGINT PRIMARY KEY, BeginBates nvarchar(2000), EndBates nvarchar(2000) )'' EXECUTE SP_EXECUTESQL @query SELECT @query = ''INSERT INTO ''+@TiffBatesTable+'' SELECT T1.FileID, (SELECT top 1 BATESNUMBER FROM ''+@GlobalTempTiffTable+'' WHERE FILE_ID_PK=t1.FileID and PAGE_NUMBER=t1.MinPageNo), (SELECT top 1 BATESNUMBER FROM ''+@GlobalTempTiffTable+'' WHERE FILE_ID_PK=t1.FileID and PAGE_NUMBER=t1.MaxPageNo) FROM ( SELECT FILE_ID_PK [FileId], MIN(PAGE_NUMBER) MinPageNo, MAX(PAGE_NUMBER) MaxPageNo FROM ''+@GlobalTempTiffTable+'' GROUP BY FILE_ID_PK ) t1'' EXECUTE SP_EXECUTESQL @query --CL9 SELECT @query = '' INSERT INTO ''+@TiffSecondaryTable+'' SELECT T1.FileID, (SELECT top 1 BeginBates FROM ''+@TiffBatesTable+'' WHERE FileId=t1.FileID), (SELECT top 1 EndBates FROM ''+@TiffBatesTable+'' WHERE FileId=t1.FileID), (SELECT top 1 BeginBates FROM ''+@TiffBatesTable+'' WHERE FileId=t1.GroupId), BegAttachBates, EndAttachBates FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY t1.FILE_ID_PK ORDER BY PAGE_NUMBER asc) rn, t1.FILE_ID_PK [FileId], t1.GroupId, MIN(CASE WHEN FILE_ID_PK != GroupId THEN BatesNumber END) over (PARTITION BY groupid) BegAttachBates, MAX(CASE WHEN FILE_ID_PK != GroupId THEN BatesNumber END) over (PARTITION BY groupid) EndAttachBates FROM ''+@GlobalTempTiffTable+'' t1 ) t1 WHERE rn=1'' EXECUTE SP_EXECUTESQL @query SELECT @query = ''DROP TABLE ''+@TiffBatesTable EXECUTE SP_EXECUTESQL @query SET @V_DROP_QRY = ''DROP TABLE '' + @V_TMP_TABLE ; EXECUTE SP_EXECUTESQL @V_DROP_QRY End END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_ep_GetFieldValuesForEmptyFields ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_GetFieldValuesForEmptyFields'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GetFieldValuesForEmptyFields]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ChangeLog 1: 2nd Nov 2017, Sudhir Maharjan, Select ''Has_Redaction'' field from tbl_ep_TiffExportDetails -- ChangeLog 2: 8th Dec 2017, Sudhir Maharjan, #18353, Total export file count shown 0 though files are available for export. -- ChangeLog 3: 2nd March 2018, Sudhir Maharjan, Get field values of empty fields from phyical column instead of xml field Create Procedure [dbo].[sp_ep_GetFieldValuesForEmptyFields] ( @ExportId BigInt, @tempTable nvarchar(200) ) As Begin DECLARE @SQL NVARCHAR(MAX) = '' INSERT INTO '' +@tempTable + ''( FileId, ExportId, EXPORT_NATIVE_PATH, EXPORT_FULLTEXT_PATH, EXPORT_NATIVE_FILE_NAME, EXPORT_FULLTEXT_TYPE, IMAGE_PAGE_COUNT, IS_NATIVE_MISSING, HasRedaction ) Select P.FILE_ID_PK FileId, P.ExportId, N.ExportNativePath, F.ExportFulltextPath, N.ExportNativeFileName, F.ExportFulltextType, T.IMAGEPAGECOUNT IMAGE_PAGE_COUNT, N.IsNativeMissing, T.HasRedaction From tbl_ep_ExportPrimaryTable P with(nolock) Left Join tbl_ep_NativeDetails N with(nolock) on P.File_Id_Pk=N.FileId and P.ExportId=N.ExportId Left Join tbl_ep_FulltextDetails F with(nolock) on P.File_Id_Pk=F.FileId and P.ExportId=F.ExportId Left Join ( select * from ( select T.FileID, T.ImagePageCount, T.PageNumber, T.ExportID, ROW_NUMBER() over (partition by T.FileId order by ISNULL(T.HasRedaction,0) desc) rn, ISNULL(T.HasRedaction,0) HasRedaction from Tbl_ep_TiffExportDetails T with(nolock) Where T.ExportID =@ExportId)t where rn = 1 )T on P.File_Id_Pk=T.FileId and P.ExportId=T.ExportId Where P.ExportId = @ExportId order by p.SEQ_NO '' EXEC SP_EXECUTESQL @SQL, N''@ExportId BigInt'',@ExportId End ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ep_GetFieldValuesOfImageFields] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ep_GetFieldValuesOfImageFields'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_GetFieldValuesOfImageFields]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- =============================================================== -- Author: Sudhir Maharjan -- CREATED DATE: 27 OCT 2015 -- Description: Get all image field values for post processing -- ChangeLog: 27th Feb 2017, Handle the archive export when family in single pdf option is selected for pdf. -- ChangeLog: Sudhir, 18th May 2017 -> IsColorImage is fetched from tbl_qc_preQCImage table. -- ChangeLog: 2nd March 2018, Sudhir Maharjan, Get field values of image fields from phyical column instead of xml field -- =============================================================== CREATE Procedure [dbo].[sp_ep_GetFieldValuesOfImageFields] ( @ExportId bigint, @LowerLimit Bigint, @UpperLimit Bigint ) As Begin select s.FileId,s.PageNumber ,s.BatesNumber, s.ImagePath, s.Volume,s.PageNumberForFamilyHandling, p.PdfPath ,b.Seq_No, ISNULL(NULLIF(b.GroupId,-1),b.FILE_ID_PK) as GroupId, IsNull(q.IsColorImage,IsNull(i.IsColoredTiff,0)) [IsColoredTiff] from tbl_ep_TiffExportDetails s with(nolock) left join tbl_tiff_images i with(nolock) on s.FileId=i.FileId and s.PageNumber=i.PageNumber left join tbl_qc_PreQCImage q with(nolock) on s.FileId=q.FileId and s.PageNumber=q.PageNumber left join tbl_ep_ExportPrimaryTable b with(nolock) on s.FileId=b.FILE_ID_PK and b.ExportId=@ExportId left join Tbl_Ep_pdfDetails p with(nolock) on p.ExportId = @ExportId And p.FileId = s.FileID where S.ExportId = @ExportId AND b.SEQ_NO BETWEEN @LowerLimit AND @UpperLimit order by b.SEQ_NO asc, s.pagenumber asc END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE sp_db_DashBoardFromSearch ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_db_DashBoardFromSearch'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_db_DashBoardFromSearch]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: MANISH -- Create date: JUNE 6,2012 -- Description: THIS IS THE PROCEDURE FOR GENERATING THE DASBBOARD FROM SEARCH RESULTS, HAVING 9 DIFFERENT PAREMETER --ChangeLog -- 1. , <2014 FEB 28> : -- Description: THIS IS THE PROCEDURE FOR GENERATING THE DASBBOARD FROM SEARCH RESULTS, HAVING 9 DIFFERENT PAREMETER --MODIFIED BY: DEEPAK SHRESTHA --MODIFIED DATE: 11 APRIL 2014 --MODIFICATION: LOG 1. CHANGEING TIMELINE MONTH TO YEAR --ChangeLog -- 2.,<2014 AUG 8>:Make Document count similar with Project Details #2511 -- 3. Bhuwan, 2015-06-28, #6037, Filter out Unknown Domain Name -- 4. Abhishek, 2016, july 15, Added LOTUS NOTES DOCUMENT filetype while loading from search to dashboard. redmine Bug #11935 -- 5. Jasmeen, 16-SEP-2016, Redmine 12839,For email to, cc, bcc, sender, recipient charts, display email name, but search with email address -- 6. Jasmeen, 13-DEC-2016,Redmine 13771, Exception Files condition added -- 7. Anuj, April 7, 2017, VTS 10830 Show lotus notes document as Email file type group -- 8. Satish Sahani, 14 July 2017, VTS 11341 Show the saved search widget -- 9. Satish Sahani, 17 July 2017, VTS 11338 Create the widget for custodian/medai. -- 10.Jasmeen,17-JAN-2018,Redmine #18608,Enable Sorting In Name As well in Count Column -- 11.Jasmeen,12-FEB-2018,REdmine #18671, Filtering added -- 12.Puru,Archive handling option made project level so use value of Key ARCHIVE_HANDLING_LEVEL from tbl_pj_ProjectSetting, REDMINE #23479 -- 13. Sudhir, #24120, Sort data by count for ondemand analyze widgets. -- ============================================= CREATE PROC [dbo].[sp_db_DashBoardFromSearch] ( @TYPE VARCHAR(200), @PageSize int,--PageSize set as -1, for getting total count @PageNo int, @GROUPID BIGINT, @searchtemptable varchar(200), @StartDate DATETIME =NULL, @EndDate datetime =NULL, @SortField VARCHAR(200)='''', @SortOrder VARCHAR(100)='''', @Filter NVARCHAR(max)='''', @TempTableName NVARCHAR(max)=NULL --It will alwyas have value from web dashboard ) AS BEGIN DECLARE @start int DECLARE @query nvarchar(max) DECLARE @queryTemp nvarchar(max) SET @start = ((@PageNo - 1) * @PageSize) IF(@TYPE=''SUMMARY''AND @GROUPID > 0) BEGIN DECLARE @includeArchives INT = 0 Declare @archiveFilterQuery nvarchar(max)='''' SELECT @includeArchives = [Value] FROM tbl_pj_ProjectSetting WITH(NOLOCK) WHERE [Key] = ''ARCHIVE_HANDLING_LEVEL'' IF(@includeArchives=0) BEGIN SET @archiveFilterQuery = '' t1.ISARCHIVE=0 AND'' END ELSE IF(@includeArchives=2) BEGIN SET @archiveFilterQuery = '' ( t1.IsARCHIVE=0 OR (t1.GroupId<>-1 AND ((t1.ISSYSTEM=0 AND t1.ISDENIST=0 AND t1.ISARCHIVE=1 AND t1.IsNonProcessed=1) OR (t1.ISSYSTEM=0 AND t1.ISDENIST=0 AND t1.ISARCHIVE=1 AND t1.IsCorrupted=1) OR ( t1.ISSYSTEM=0 AND t1.ISDENIST=0 AND t1.ISARCHIVE=1 AND t1.IsPasswordprotected=1 AND t1.IsPasswordDecrypted =0)))) AND '' END SET @query='' SELECT count(distinct(custodianid)) AS CUSTODIANCOUNT, count(distinct(mediaid)) AS MEDIACOUNT, isnull(SUM(case when {archiveClause} t1.IsSystem=0 and t1.isDeNIST=0 then 1 else 0 end),0) as DOCUMENTCOUNT, --CL2 isnull(SUM(case when t1.IsDuplicate=1 then 1 else 0 end),0) as DUPLICATECOUNT, isnull(SUM(case when t1.ISArchive=1 then 1 else 0 end),0) as ARCHIVECOUNT, (SELECT COUNT(FINFO.FILEID) FROM TBL_EX_FILEINFO FINFO WITH (NOLOCK), ''+@searchtemptable+'' TEMP, (SELECT DISTINCT FILEID FROM TBL_EX_FILETAGASSOCIATION FTA WITH (NOLOCK), TBL_TG_TAGPROJECTGROUPASSOCIATION TPGA WITH(NOLOCK ,index(idx_tbl_tg_TagProjectGroupAssociation_tagid_groupid)) WHERE TPGA.GROUPID= ''+ CAST(@GROUPID AS VARCHAR)+'' AND TPGA.READPERMISSION=1 AND TPGA.TAGID=FTA.TAGID)T WHERE T.FILEID = FINFO.FILEID AND FINFO.FILEID=TEMP.FILEID ) AS TOTALTAGGED FROM tbl_ex_fileinfo t1 WITH (NOLOCK),''+@searchtemptable+'' temp WHERE t1.fileid=temp.fileid '' Set @query = REPLACE(@query,''{archiveClause}'',@archiveFilterQuery) EXEC sp_executesql @query END ELSE IF(@TYPE=''SCAN/INGEST'') BEGIN SET @query ='' SELECT (SELECT COUNT(DISTINCT(custodianid)) FROM ''+@searchtemptable+'' temp , tbl_ex_fileinfo b WITH (NOLOCK) WHERE temp.fileid = b.fileid ) as ''''CUSTODIANCOUNT'''', COUNT(*) AS ''''TOTALCOUNT'''', ISNULL(SUM( CASE WHEN scanstatus=2 THEN 1 ELSE 0 END ),0) AS ''''SCANNEDCOUNT'''', ISNULL(SUM( CASE WHEN mediastatus = ''''PROCESSED'''' THEN 1 ELSE 0 END ),0) ''''INGESTEDCOUNT'''' FROM tbl_ex_media m WITH (NOLOCK), (SELECT DISTINCT(mediaid) FROM ''+@searchtemptable+'' temp , tbl_ex_fileinfo b WITH (NOLOCK) WHERE temp.fileid = b.fileid ) t WHERE m.mediaid=t.mediaid'' EXEC sp_executesql @query END ELSE IF(@TYPE=''EDOC_CHART'') BEGIN SET @query = '' SELECT ''''Original'''' as doctype, count (1) as doccount from tbl_ex_fileinfo t1 WITH (NOLOCK), ''+@searchtemptable+'' temp where t1.fileid = temp.fileid and t1.isduplicate=0 and ParentDocType=''''EDOC'''' UNION SELECT ''''Duplicate'''', count (*) from tbl_ex_fileinfo t1 WITH (NOLOCK), ''+@searchtemptable+'' temp where t1.fileid = temp.fileid and t1.isduplicate=1 and ParentDocType=''''EDOC'''' order by doccount '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_CHART'') BEGIN SET @query = '' SELECT ''''Email'''' as doctype,count(1) as doccount FROM tbl_ex_fileinfo t1 WITH (NOLOCK),''+ @searchtemptable+'' temp WHERE t1.fileid = temp.fileid and ParentDocType=''''EMAIL'''' and t1.isparent=1 and t1.isduplicate=0 UNION ALL SELECT ''''Attachment'''',count(1) FROM tbl_ex_fileinfo t1 WITH (NOLOCK),''+ @searchtemptable+'' temp WHERE t1.fileid = temp.fileid and isattachment=1 and t1.isduplicate=0 and ParentDocType=''''EMAIL'''' UNION ALL SELECT ''''Duplicate'''',count(1) FROM tbl_ex_fileinfo t1 WITH (NOLOCK),''+ @searchtemptable+'' temp WHERE t1.fileid = temp.fileid and t1.parentdoctype = ''''EMAIL'''' and t1.isduplicate=1 ORDER BY doccount '' EXEC sp_executesql @query END ELSE IF(@TYPE=''FUNNEL''AND @GROUPID > 0) BEGIN SET @query = '' SELECT * FROM (SELECT t1.FileTypeRestrictedCount, t1.FileExtensionRestrictedCount, t1.DateRestrictedCount, t2.DeNISTCount, t2.SystemFilesCount, t1.FileTypeRestrictedCount+t1.FileExtensionRestrictedCount+t1.DateRestrictedCount+t2.DeNISTCount+t2.SystemFilesCount as Filtered, t2.PasswordProtectedArchiveCount, t2.CorruptedArchiveCount, t2.NonProcessedArchiveCount, t2.ProcessedArchiveCount, t2.Archive, t2.ExceptionCorrupted+t2.ExceptionPasswordProtected+t2.ExceptionUnknown+t2.ExceptionProcessingError+ExceptionUnSupported+ExceptionZeroByte as Exception, t2.ExceptionPasswordProtected, t2.ExceptionCorrupted, t2.ExceptionUnknown, t2.ExceptionProcessingError, t2.ExceptionZeroByte, --changelog:1 t2.ExceptionUnSupported, --changelog:1 t2.Duplicate, t2.DuplicateProcessed, t2.DuplicateException, t2.Processed FROM (SELECT isnull(SUM(case when tb.FILTERTYPE = ''''FILETYPE'''' then 1 else 0 end),0) AS FileTypeRestrictedCount, isnull(SUM(case when tb.FILTERTYPE = ''''FILEEXTENSION'''' then 1 else 0 end),0) AS FileExtensionRestrictedCount, isnull(SUM(case when tb.FILTERTYPE = ''''DATELIMIT'''' then 1 else 0 end),0) AS DateRestrictedCount FROM tbl_ex_filtereddocs tb WITH (NOLOCK),''+@searchtemptable+'' temp WHERE tb.fileid=temp.fileid ) t1, (SELECT isnull(SUM(case when tb.isDeNIST = 1 then 1 else 0 end),0) AS DeNISTCount, isnull(SUM(case when tb.isDeNIST = 0 AND tb.IsSystem = 1 then 1 else 0 end),0) AS SystemFilesCount, isnull(SUM(case when tb.isDeNIST = 0 AND tb.IsSystem = 0 AND tb.IsArchive = 1 AND tb.IsPasswordprotected = 1 then 1 else 0 end),0) AS PasswordProtectedArchiveCount, isnull(SUM(case when tb.isDeNIST = 0 AND tb.IsSystem = 0 AND tb.IsArchive = 1 AND tb.IsPasswordprotected = 0 and tb.IsCorrupted=1 then 1 else 0 end),0) AS CorruptedArchiveCount, isnull(SUM(case when tb.isDeNIST = 0 AND tb.IsSystem = 0 AND tb.IsArchive = 1 AND tb.IsPasswordprotected = 0 and tb.IsCorrupted=0 and tb.IsNonProcessed=1 then 1 else 0 end),0) AS NonProcessedArchiveCount, isnull(SUM(case when tb.isDeNIST = 0 AND tb.IsSystem = 0 AND tb.IsArchive = 1 AND tb.IsPasswordprotected = 0 and tb.IsCorrupted=0 and tb.IsNonProcessed=0 then 1 else 0 end),0) AS ProcessedArchiveCount, isnull(SUM(case when tb.IsArchive = 1 then 1 else 0 end),0) AS Archive, isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 1 then 1 else 0 end),0) AS ExceptionCorrupted, isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 1 then 1 else 0 end),0) AS ExceptionPasswordProtected, --changelog:1 isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and IsZeroByte=1 then 1 else 0 end),0) AS ExceptionZeroByte , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS ExceptionUnknown , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS ExceptionUnSupported , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0)=0 and IsProcessingError=1 then 1 else 0 end),0) AS ExceptionProcessingError , isnull(SUM(case when tb.isduplicate = 1 then 1 else 0 end),0) AS Duplicate, isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsNonProcessed = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and tb.IsDuplicate = 1 and (tb.filetype <> ''''unknown'''' and tb.filetype <> ''''none'''') then 1 else 0 end),0) AS DuplicateProcessed, isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and (tb.IsCorrupted= 1 or tb.IsNonProcessed= 1 or tb.IsPasswordprotected= 1) and tb.IsDuplicate = 1 then 1 else 0 end),0) AS DuplicateException, isnull(SUM(case when tb.IsDuplicate=0 and tb.IsArchive =0 and tb.IsNonProcessed=0 and tb.isDeNIST=0 and tb.IsSystem = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted=0 and (tb.FILETYPE <> ''''UNKNOWN'''' OR tb.FILETYPE <> ''''NONE'''') then 1 else 0 end),0) AS Processed FROM tbl_Ex_fileinfo tb WITH (NOLOCK),''+@searchtemptable+'' temp WHERE tb.fileid=temp.fileid ) t2 )TS, (SELECT ISNULL(SUM( CASE WHEN IsArchive=0 AND IsSystem=0 AND IsDenist=0 AND IsDuplicate=0 AND (IsCorrupted=1 OR IsNonProcessed=1 OR IsPasswordProtected=1 OR FileType IN (''''UNKNOWN'''',''''NONE'''')) THEN 1 ELSE 0 END ),0) [TaggedExceptionFiles], ISNULL(SUM( CASE WHEN IsArchive=0 AND IsSystem=0 AND IsDenist=0 AND IsDuplicate=1 THEN 1 ELSE 0 END ),0) [TaggedDuplicateFiles], ISNULL(SUM( CASE WHEN IsArchive=0 AND IsSystem=0 AND IsDenist=0 AND IsDuplicate=0 AND NOT (IsCorrupted=1 OR IsNonProcessed=1 OR IsPasswordProtected=1 OR FileType IN (''''UNKNOWN'''',''''NONE'''')) THEN 1 ELSE 0 END ),0) [TaggedProcessedFiles] FROM tbl_ex_FileInfo fi WITH(NOLOCK) INNER JOIN (SELECT FINFO.fileid [FileId] FROM tbl_ex_fileINFO FINFO WITH(NOLOCK), ''+@searchtemptable+'' temp, (SELECT DISTINCT FILEID FROM tbl_ex_filetagassociation FTA WITH(NOLOCK), TBL_TG_TAGPROJECTGROUPASSOCIATION TPGA WITH(NOLOCK ,index(idx_tbl_tg_TagProjectGroupAssociation_tagid_groupid)) WHERE TPGA.GROUPID= ''+ CAST(@GROUPID AS VARCHAR)+'' AND TPGA.READPERMISSION=1 AND TPGA.TAGID=FTA.TAGID )T WHERE T.FILEID = FINFO.FILEID AND FINFO.fileid=temp.fileid ) tg ON tg.FileID = fi.FileId ) t3'' exec sp_executesql @query END ELSE IF(@TYPE=''FILE_TYPE'')--changelog 4 BEGIN SET @query='' SELECT {top} FILETYPE, FILECOUNT FROM ( SELECT FILETYPE,FILECOUNT, ROW_NUMBER() OVER (ORDER BY FILECOUNT DESC) AS Seq_No FROM ( SELECT filetypegroupid, (SELECT FileTypeGroup FROM tbl_pj_FileTypesGroup FTG WITH(NOLOCK) WHERE FTG.FileTypeGroupId=FTD.FileTypeGroupId) as FILETYPE, COUNT(*) AS FILECOUNT FROM ''+ @searchtemptable+'' temp, tbl_ex_fileinfo t2 WITH (NOLOCK), tbl_pj_fileTypesDescription FTD WITH(NOLOCK) WHERE temp.fileid = t2.fileid and t2.FILETYPE=FTD.ToolsDisplayName GROUP BY FTD.fileTypeGroupId ) t1 )A WHERE Seq_No > @startvalue order by Seq_No desc'' END ELSE IF(@TYPE=''DOMAIN'') BEGIN SET @query = ''SELECT {top} DomainName, Count FROM (SELECT DomainName,[Count],ROW_NUMBER() OVER (ORDER BY [COUNT] DESC) AS Seq_No FROM (SELECT DomainName, count(fileid) as [Count] FROM ( SELECT DISTINCT t1.fileid, domainname as DomainName FROM tbl_Ex_emailaddresses T1 WITH (NOLOCK), tbl_ex_emailaddresslist T2 WITH (NOLOCK), ''+ @searchtemptable+'' temp where T1.senderid = t2.emailaddressid and T1.fileid = temp.fileid AND T2.domainname <>''''UNKNOWN'''' UNION SELECT DISTINCT t1.fileid, domainname AS DomainName FROM tbl_Ex_emailaddresses T1 WITH (NOLOCK), tbl_ex_emailaddresslist T2 WITH (NOLOCK), ''+ @searchtemptable+'' temp WHERE T1.recepientid = t2.emailaddressid and T1.fileid = temp.fileid AND T2.domainname <>''''UNKNOWN'''' ) A GROUP BY DOMAINNAME )t1 )A1 WHERE Seq_No > @startvalue'' END ELSE IF(@TYPE=''LANGUAGE'') BEGIN SET @query = ''SELECT {top} FILELANGUAGE,COUNT FROM (SELECT FILELANGUAGE,[Count], ROW_NUMBER() OVER (ORDER BY [COUNT] DESC) AS Seq_No FROM ( SELECT t1.filelanguage AS FILELANGUAGE,COUNT(*) as COUNT FROM tbl_ex_filelanguage t1 WITH (NOLOCK),''+@searchtemptable+'' temp WHERE t1.fileid = temp.fileid GROUP BY t1.filelanguage )t1 )A WHERE Seq_No > @startvalue'' END ELSE IF(@TYPE=''TAGINFO'' AND @GROUPID > 0) BEGIN SET @query = '' SELECT {top} TAGNAME, TAGGEDCOUNT FROM ( SELECT TAGNAME,TAGGEDCOUNT, ROW_NUMBER() OVER (ORDER BY TAGGEDCOUNT DESC) AS Seq_No FROM ( SELECT FTA.TAGID, (Select top 1 tagname from tbl_ex_tag with(nolock) where tagid = FTA.tagid) TAGNAME, COUNT(*) AS TAGGEDCOUNT FROM TBL_EX_FILEINFO FINFO WITH (NOLOCK), TBL_EX_FILETAGASSOCIATION FTA WITH (NOLOCK) , TBL_TG_TAGPROJECTGROUPASSOCIATION TPGA WITH (NOLOCK ,index(idx_tbl_tg_TagProjectGroupAssociation_tagid_groupid)), ''+@searchtemptable+'' TEMP WHERE --FINFO.ISDUPLICATE=0 AND TPGA.GROUPID= ''+ CAST(@GROUPID AS VARCHAR)+'' AND TPGA.READPERMISSION = 1 AND TPGA.TAGID=FTA.TAGID AND FTA.FILEID = TEMP.FILEID AND FTA.FILEID = FINFO.FILEID GROUP BY FTA.TAGID )t1 )A where Seq_No > @startvalue order by seq_no desc '' END ELSE IF(@TYPE=''REVIEWINFO'') BEGIN SET @query='' DECLARE @REVIEWSETFILECOUNT BIGINT SELECT @REVIEWSETFILECOUNT=COUNT(DISTINCT RS.FILEID) FROM TBL_REV_REVIEWSET RS WITH(NOLOCK),''+@searchtemptable+'' TEMP WHERE RS.FILEID = TEMP.FILEID SELECT ''''In reviewset'''' AS REVIEWTYPE, @REVIEWSETFILECOUNT AS FILECOUNT UNION (SELECT ''''Not in reviewset'''' AS REVIEWTYPE ,(COUNT(FI.FILEID)-@REVIEWSETFILECOUNT) AS FILECOUNT FROM TBL_EX_FILEINFO FI WITH(NOLOCK), ''+@searchtemptable+'' TEMP WHERE FI.FILEID = TEMP.FILEID AND FI.ISDENIST=0 AND FI.ISSYSTEM=0 AND FI.ISARCHIVE=0 )'' EXEC sp_executesql @query END ELSE IF(@TYPE=''TIMELINEINFO'') BEGIN --LOG 1 SET @query='' SELECT SUM(CASE WHEN FI.PARENTDOCTYPE=''''EMAIL'''' THEN 1 ELSE 0 END) AS EMAILCOUNT, SUM(CASE WHEN FI.PARENTDOCTYPE=''''EDOC'''' THEN 1 ELSE 0 END) AS EDOCCOUNT, DATENAME(YYYY, FI.GROUPDATE) AS YEAR, CAST(DATENAME(YYYY, FI.GROUPDATE) AS NVARCHAR(4)) AS DATE FROM TBL_EX_FILEINFO FI WITH(NOLOCK), ''+@searchtemptable+'' temp WHERE FI.ISARCHIVE=0 AND FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.GROUPDATE IS NOT NULL AND FI.FILEID = TEMP.FILEID {TimeCondition} GROUP BY DATENAME(YYYY, FI.GROUPDATE) ORDER BY YEAR ASC '' IF(@StartDate IS NULL OR @EndDate IS NULL) SET @query=REPLACE(@query,''{TimeCondition}'','''') else SET @query=REPLACE(@query,''{TimeCondition}'','' AND CONVERT(nVARCHAR(10),GROUPDATE, 112)>=''+CONVERT(nVARCHAR(10),@StartDate, 112)+'' AND CONVERT(nVARCHAR(10),GROUPDATE, 112)<=''+CONVERT(nVARCHAR(10),@EndDate, 112)) EXEC sp_executesql @query END ELSE IF(@TYPE=''TIMELINEINFO_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' SELECT CONVERT(DATE,groupdate) AS [DATE], SUM(CASE WHEN FI.PARENTDOCTYPE=''''EMAIL'''' THEN 1 ELSE 0 END) AS EMAILCOUNT, SUM(CASE WHEN FI.PARENTDOCTYPE=''''EDOC'''' THEN 1 ELSE 0 END) AS EDOCCOUNT FROM TBL_EX_FILEINFO FI WITH(NOLOCK), ''+@searchtemptable+'' temp WHERE FI.ISARCHIVE=0 AND FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.GROUPDATE IS NOT NULL AND FI.FILEID = TEMP.FILEID {TimeCondition} GROUP BY CONVERT(DATE,groupdate) ORDER BY Min(groupdate) ASC'' IF(@StartDate IS NULL OR @EndDate IS NULL) SET @query=REPLACE(@query,''{TimeCondition}'','''') else SET @query=REPLACE(@query,''{TimeCondition}'','' AND CONVERT(nVARCHAR(10),GROUPDATE, 112)>=''+CONVERT(nVARCHAR(10),@StartDate, 112)+'' AND CONVERT(nVARCHAR(10),GROUPDATE, 112)<=''+CONVERT(nVARCHAR(10),@EndDate, 112)) EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_TO_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query=''SELECT Count(1) as ToRecipientMailCount, (SELECT TOP 1 EmailName FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as ToRecipientMail, (SELECT TOP 1 EmailAddress FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as ToRecipientMailAddress FROM (SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.RecepientID = eal.EmailAddressID And ea.Category = 2) A Group By A.EmailAddressID Order By ToRecipientMailCount DESC, ToRecipientMail ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_CC_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query=''SELECT Count(1) as CCRecipientMailCount, (SELECT TOP 1 EmailName FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as CCRecipientMail, (SELECT TOP 1 EmailAddress FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as CCRecipientMailAddress FROM (SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.RecepientID = eal.EmailAddressID And ea.Category = 3) A Group By A.EmailAddressID Order By CCRecipientMailCount DESC, CCRecipientMail ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_BCC_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query=''SELECT Count(1) as BCCRecipientMailCount, (SELECT TOP 1 EmailName FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as BCCRecipientMail, (SELECT TOP 1 EmailAddress FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as BCCRecipientMailAddress FROM (SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.RecepientID = eal.EmailAddressID And ea.Category = 4) A Group By A.EmailAddressID Order By BCCRecipientMailCount DESC, BCCRecipientMail ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_RECIPIENT_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query=''SELECT Count(1) as RecipientMailCount, (SELECT TOP 1 EmailName FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as RecipientMail, (SELECT TOP 1 EmailAddress FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as RecipientMailAddress FROM (SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.RecepientID = eal.EmailAddressID And ea.Category in (2,3,4)) A Group By A.EmailAddressID Order By RecipientMailCount DESC, RecipientMail ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_SENDER_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query=''SELECT Count(1) as SenderMailCount, (SELECT TOP 1 EmailName FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as SenderMail, (SELECT TOP 1 EmailAddress FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as SenderMailAddress FROM (SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.SenderID = eal.EmailAddressID) A Group By A.EmailAddressID Order By SenderMailCount DESC, SenderMail ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query=''SELECT Count(1) as MailCount, (SELECT TOP 1 EmailName FROM tbl_ex_emailaddresslist WITH(NOLOCK) WHERE EmailAddressID=A.EmailAddressID) as Mail FROM (SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.SenderID = eal.EmailAddressID UNION ALL SELECT Distinct ea.FileID, eal.EmailAddressID FROM tbl_ex_emailaddresslist eal WITH (NOLOCK), tbl_ex_emailaddresses ea WITH (NOLOCK), ''+ @searchtemptable +'' temp Where ea.[FileId] = temp.[FileId] AND ea.RecepientID = eal.EmailAddressID and ea.Category in (2, 3, 4) ) A Group By A.EmailAddressID Order By MailCount DESC, Mail ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE = ''ORIGINAL_FILE_EXTENSION_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query = '' SELECT t1.OriginalFileExtension, COUNT(t2.fileid) as [Count] FROM tbl_ex_fileInfo T1 WITH(NOLOCK), ''+ @searchtemptable +'' T2 WHERE T1.fileid=T2.fileid GROUP BY OriginalFileExtension ORDER BY [Count] desc, OriginalFileExtension ASC '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_SENSITIVITY_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select Count( em.fileid) as SensitivityCount, em.Sensitivity AS ''''Sensitivity'''' From tbl_ex_emailmeta em WITH (NOLOCK), ''+ @searchtemptable +'' temp Where em.[FileId] = temp.[FileId] And IsNull(em.Sensitivity,'''''''')<>'''''''' Group By Sensitivity Order By SensitivityCount Desc '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_IMPORTANCE_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select Count( em.fileid) as ImportanceCount, em.Importance AS ''''Importance'''' From tbl_ex_emailmeta em WITH (NOLOCK), ''+ @searchtemptable +'' temp Where em.[FileId] = temp.[FileId] And IsNull(em.Importance,'''''''')<>'''''''' Group By Importance Order By ImportanceCount Desc '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EMAIL_MESSAGECLASS_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select Count( em.fileid) as MessageClassCount, em.MessageClass AS ''''MessageClass'''' From tbl_ex_emailmeta em WITH (NOLOCK), ''+ @searchtemptable +'' temp Where em.[FileId] = temp.[FileId] And IsNull(em.MessageClass,'''''''')<>'''''''' Group By MessageClass Order By MessageClassCount Desc '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EDOC_LASTAUTHOR_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select Count( em.fileid) as LastAuthorCount, em.LastAuthor AS ''''LastAuthor'''' From tbl_Ex_edocmeta em WITH (NOLOCK), ''+ @searchtemptable +'' temp Where em.[FileId] = temp.[FileId] And IsNull(em.LastAuthor,'''''''')<>'''''''' Group By LastAuthor Order By LastAuthorCount Desc, LastAuthor '' EXEC sp_executesql @query END ELSE IF(@TYPE=''EDOC_COMPANY_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select Count( em.fileid) as CompanyCount, em.Company AS ''''Company'''' From tbl_Ex_edocmeta em WITH (NOLOCK), ''+ @searchtemptable +'' temp Where em.[FileId] = temp.[FileId] And IsNull(em.Company,'''''''')<>'''''''' Group By Company Order By CompanyCount Desc, Company '' EXEC sp_executesql @query END ELSE IF(@TYPE=''CUSTODIAN_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select (select top 1 [CustodianName] from tbl_ex_Custodian cust with(nolock) WHERE CustodianId=fi.CustodianId) as CustodianName, Count(1) as [Count] From tbl_ex_FileInfo fi WITH (NOLOCK), ''+ @searchtemptable +'' temp Where fi.[FileId] = temp.[FileId] Group By fi.CustodianId Order By [Count] desc '' EXEC sp_executesql @query END -- 16992 ELSE IF(@TYPE=''CUSTODIAN_MEDIA_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' Select (select top 1 C.[CustodianName] + ''''/'''' + M.MediaName from tbl_ex_Custodian C with(nolock) WHERE CustodianId=fi.CustodianId) as CustodianMediaName, Count(1) as [Count] From tbl_ex_FileInfo fi WITH (NOLOCK), ''+ @searchtemptable +'' temp, tbl_ex_Media M Where fi.[FileId] = temp.[FileId] and fi.[MediaId] = M.MediaId Group By fi.CustodianId, fi.MediaId, M.MediaName Order By [Count] desc '' EXEC sp_executesql @query END -- 17071 ELSE IF(@TYPE=''SAVED_SEARCH_VOD_ANALYZE_DASHBOARD'') BEGIN SET @query='' SELECT COUNT( DISTINCT SSR.[Fileid] ) AS COUNT, SL.[SearchName] AS SAVEDSEARCHTERM FROM tbl_ex_SavedSearchResults SSR WITH (NOLOCK), tbl_ex_searchlog SL WITH (NOLOCK) , ''+ @searchtemptable +'' temp WHERE temp.[FileID] = SSR.[Fileid] AND SSR.[SearchID] = SL.[SearchID] GROUP BY SL.[SearchName] '' EXEC sp_executesql @query END -- 13771 ELSE IF(@TYPE=''EXCEPTION_FILES_VOD_ANALYZE_DASHBOARD''AND @GROUPID > 0) BEGIN SET @query = '' SELECT isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 1 then 1 else 0 end),0) AS ExceptionCorrupted, isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 1 then isnull(tb.FileSize,0) else 0 end),0) AS ExceptionCorruptedFileSize, -- for size isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 1 then 1 else 0 end),0) AS ExceptionPasswordProtected, isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 1 then isnull(tb.FileSize,0) else 0 end),0) AS ExceptionPasswordProtectedFileSize, --changelog:1 isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and IsZeroByte=1 then 1 else 0 end),0) AS ExceptionZeroByte , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and IsZeroByte=1 then isnull(tb.FileSize,0) else 0 end),0) AS ExceptionZeroByteFileSize , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then 1 else 0 end),0) AS ExceptionUnknown , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and IsUnknownFile=1 then isnull(tb.FileSize,0) else 0 end),0) AS ExceptionUnknownFileSize , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then 1 else 0 end),0) AS ExceptionUnSupported , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and IsUnSupportedFileType=1 then isnull(tb.FileSize,0) else 0 end),0) AS ExceptionUnSupportedFileSize , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0) =0 and IsProcessingError=1 then 1 else 0 end),0) AS ExceptionProcessingError , isnull(SUM(case when tb.isDeNIST = 0 and tb.IsSystem = 0 and tb.IsArchive= 0 and tb.IsDuplicate = 0 and tb.IsPasswordprotected = 0 and tb.IsCorrupted = 0 and ISNULL(ISZEROBYTE,0)=0 and ISNULL(IsUnknownFile,0)=0 and ISNULL(IsUnSupportedFileType,0) =0 and IsProcessingError=1 then isnull(tb.FileSize,0) else 0 end),0) AS ExceptionProcessingErrorFileSize FROM tbl_Ex_fileinfo tb WITH (NOLOCK),''+@searchtemptable+'' temp WHERE tb.fileid=temp.fileid '' exec sp_executesql @query END IF(@TYPE=''FILE_TYPE'' OR @TYPE=''DOMAIN'' OR @TYPE=''LANGUAGE'' OR (@TYPE=''TAGINFO'' AND @GROUPID > 0)) BEGIN IF @TempTableName IS NOT NULL BEGIN print @query SET @query=REPLACE(@query,''{top}'','''') SET @queryTemp=N''IF NOT EXISTS (SELECT TOP 1 1 FROM ''+@TempTableName+'') INSERT INTO ''+@TempTableName+'' ''+@query print @queryTemp exec sp_executesql @queryTemp, N''@startvalue int'', @startvalue = @start SET @query= '' SELECT {top} * from (SELECT *, ROW_NUMBER() OVER(ORDER BY ''+@SortField+'' ''+@SortOrder+'') AS Seq_No FROM ''+@TempTableName+'' ''+@Filter+'' )A where Seq_No > @startvalue'' IF(@PageSize=-1) SET @query=REPLACE(@query,''{top}'','''') ELSE SET @query=REPLACE(@query,''{top}'',''TOP '' + CAST(@PageSize AS VARCHAR)) exec sp_executesql @query, N''@startvalue int'', @startvalue = @start END ELSE BEGIN print @query IF(@PageSize=-1) SET @query=REPLACE(@query,''{top}'','''') ELSE SET @query=REPLACE(@query,''{top}'',''TOP '' + CAST(@PageSize AS VARCHAR)) exec sp_executesql @query, N''@startvalue int'', @startvalue = @start END END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CHANGE PROCEDURE [SP_ep_DeleteExport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_ep_DeleteExport'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_ep_DeleteExport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Bipin Baglung -- Create date: March 16, 2017 -- Description: Delete Export related info from database -- If export has been re-exported then delete re-export too -- Modified - Anuj, Nov 27, 2019. Redmine #22679 Delete export records in chunk -- ============================================= CREATE PROCEDURE [dbo].[SP_ep_DeleteExport] @ExportId BIGINT , @ProjectId BIGINT AS BEGIN SET XACT_ABORT ON DECLARE @ExportTmp TABLE (ExportId BIGINT) INSERT INTO @ExportTmp SELECT ExportId FROM tbl_ep_exports WITH (NOLOCK) WHERE OriginalExportId = @exportid OR ExportId = @exportid Declare @TmpDelExportSessionTable nvarchar(max) DECLARE @Query NVARCHAR(MAX) SET @TmpDelExportSessionTable=''##TmpDelExportSessionTable_''+CAST(@ProjectId AS NVARCHAR(20))+''_''+CAST(@ExportId AS NVARCHAR(20)) SET @Query=''IF OBJECT_ID(''''tempdb..''+@TmpDelExportSessionTable+'''''') IS NOT NULL BEGIN DROP TABLE ''+@TmpDelExportSessionTable+'' END CREATE TABLE ''+@TmpDelExportSessionTable+'' (TotalRowsToDelete bigint, DeletedRows bigint, DateOfEntry datetime, Remarks varchar(200)) '' EXEC SP_EXECUTESQL @Query Declare @GrandTotalRowsToDelete bigint = 0 SET @Query=''INSERT INTO ''+@TmpDelExportSessionTable+'' SELECT @GrandTotalRowsToDelete, 0, getdate(),''''init'''' '' EXEC SP_EXECUTESQL @Query, N''@GrandTotalRowsToDelete BIGINT'', @GrandTotalRowsToDelete=@GrandTotalRowsToDelete --Total row to delete identification START -- DeleteMode = File Level Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_nativedetails N WITH (NOLOCK), @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_fulltextdetails N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM Tbl_Ep_TiffDetails N WITH (NOLOCK), @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM Tbl_Ep_PdfDetails N WITH (NOLOCK), @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_TiffExportDetails N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_ExportTiffSecondaryTable N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_ExportSecondaryTable N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_ExportTiffPrimaryTable N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_ExportPrimaryTable N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_jb_ExportData N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_OverlayDuplicateCustodian N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_ExportDetails N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID -- DeleteMode = Export Level (except tbl_ds_JobDependency) Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM Tbl_Ep_ExportVolumes N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ep_Exports N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ds_jobinfo WHERE projectid = @projectid AND jobid IN ( SELECT N.jobid FROM tbl_ds_ProjectJobInfo N WITH (NOLOCK), @ExportTmp E WHERE otherSettings.value(''(/OtherSettings/ExportId)[1]'', ''int'') = E.ExportID) Select @GrandTotalRowsToDelete = @GrandTotalRowsToDelete + Count(1) FROM tbl_ds_ProjectJobInfo N WITH (NOLOCK) , @ExportTmp E WHERE otherSettings.value(''(/OtherSettings/ExportId)[1]'', ''int'') = E.ExportID --Total row to delete identification END SET @Query=''INSERT INTO ''+@TmpDelExportSessionTable+'' SELECT @GrandTotalRowsToDelete, 0, getdate(),''''total deletable rows computed'''' '' EXEC SP_EXECUTESQL @Query, N''@GrandTotalRowsToDelete BIGINT'', @GrandTotalRowsToDelete=@GrandTotalRowsToDelete -- IF @GrandTotalRowsToDelete = 0, no need to drop the @TmpDelExportSessionTable table before returning, since remarks total deletable rows computed is to be checked to identify if no deletable entries identfied If(@GrandTotalRowsToDelete=0) return; -- Temp table Main IF OBJECT_ID(''tempdb..#TempExportFilesToDelete'') IS NOT NULL BEGIN DROP TABLE #TempExportFilesToDelete END create table #TempExportFilesToDelete (FileId bigint, MediaId bigint, GroupId bigint, RankByGroupId bigint) INSERT INTO #TempExportFilesToDelete (FileId, MediaId, GroupId, RankByGroupId) SELECT t.FILE_ID_PK, fi.MediaId, fi.GroupId,DENSE_RANK() OVER (ORDER BY fi.groupId) as rankByGroupId FROM tbl_ep_ExportPrimaryTable t with(nolock), tbl_ex_FileInfo fi with(nolock) where t.FILE_ID_PK = fi.FileId and exists (select top 1 1 from @ExportTmp where ExportId=t.ExportId) and fi.GroupId >0 -- Temp table Chunk IF OBJECT_ID(''tempdb..#TempChunkOfExportFilesToDelete'') IS NOT NULL BEGIN DROP TABLE #TempChunkOfExportFilesToDelete END create table #TempChunkOfExportFilesToDelete (FileId bigint, MediaId bigint, GroupId bigint) /* Loop test script Declare @CountOfGroupId bigint Declare @CountOfChunkOfGroupId bigint Set @CountOfGroupId = 1001 -- Set value here if (@CountOfGroupId <= 100) Set @CountOfChunkOfGroupId = 1 else if (@CountOfGroupId > 100 AND @CountOfGroupId <=10000) Set @CountOfChunkOfGroupId = @CountOfGroupId / 100; --Select 299/100 else Set @CountOfChunkOfGroupId = 100 -- Identify begin and end groupid rank for between x and y clause (between @J and @endJ) Declare @endJ bigint = 0 Declare @J bigint = 1 While(@J <= @CountOfGroupId) -- 1 <= 299 Begin SET @endJ = @J+@CountOfChunkOfGroupId-1 if(@endJ > @CountOfGroupId) begin Set @endJ = @CountOfGroupId end -- DO all chunk work here START --truncate table #TempChunkOfExportFilesToDelete -- DO all chunk work here END Print cast(@J as varchar(100)) + '' to '' + cast(@endJ as varchar(100)) Set @J = @endJ Set @J = @J + 1 End */ -- Delete export in loop in chunk of groupId Declare @CountOfGroupId bigint Declare @CountOfChunkOfGroupId bigint select @CountOfGroupId = max(RankByGroupId) from #TempExportFilesToDelete if (@CountOfGroupId <= 100) Set @CountOfChunkOfGroupId = 1 else if (@CountOfGroupId > 100 AND @CountOfGroupId <=10000) Set @CountOfChunkOfGroupId = @CountOfGroupId / 100; --Select 299/100 else Set @CountOfChunkOfGroupId = 100 -- TEMP for test purpose set chunk size as low as 1 only --Set @CountOfChunkOfGroupId = 5 -- Identify begin and end groupid rank for between x and y clause (between @J and @endJ) Declare @endJ bigint = 0 Declare @J bigint = 1 While(@J <= @CountOfGroupId) -- 1 <= 299 Begin SET @endJ = @J+@CountOfChunkOfGroupId-1 if(@endJ > @CountOfGroupId) begin Set @endJ = @CountOfGroupId end -- DO all chunk work here START -- Populate chunk group id table truncate table #TempChunkOfExportFilesToDelete insert into #TempChunkOfExportFilesToDelete (FileId, MediaId, GroupId) Select FileId, MediaId, GroupId from #TempExportFilesToDelete where RankByGroupId between @J and @endJ Declare @FileLevelRowsDeleted bigint = 0 BEGIN TRANSACTION -- DeleteMode = File Level DELETE N FROM tbl_ep_nativedetails N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_fulltextdetails N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM Tbl_Ep_TiffDetails N WITH (NOLOCK), @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM Tbl_Ep_PdfDetails N WITH (NOLOCK), @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_TiffExportDetails N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_ExportTiffSecondaryTable N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_ExportSecondaryTable N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.GroupId = tmpChunk.GroupId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_ExportTiffPrimaryTable N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.File_Id_PK = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_ExportPrimaryTable N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FILE_ID_PK = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_jb_ExportData N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_OverlayDuplicateCustodian N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_ExportDetails N WITH (NOLOCK) , @ExportTmp E, #TempChunkOfExportFilesToDelete tmpChunk WHERE N.ExportID = E.ExportID AND N.FileId = tmpChunk.FileId Set @FileLevelRowsDeleted = @FileLevelRowsDeleted + @@ROWCOUNT --insert into ##DelExportSession values(@GrandTotalRowsToDelete , @FileLevelRowsDeleted); SET @Query=''INSERT INTO ''+@TmpDelExportSessionTable+'' SELECT @GrandTotalRowsToDelete, @FileLevelRowsDeleted, getdate(),''''in progress'''' '' EXEC SP_EXECUTESQL @Query, N''@GrandTotalRowsToDelete BIGINT, @FileLevelRowsDeleted BIGINT'', @GrandTotalRowsToDelete=@GrandTotalRowsToDelete, @FileLevelRowsDeleted=@FileLevelRowsDeleted COMMIT -- DO all chunk work here END Set @J = @endJ Set @J = @J + 1 End -- DeleteMode = Export Level Declare @ExportLevelRowsDeleted bigint = 0 BEGIN TRANSACTION DELETE N FROM Tbl_Ep_ExportVolumes N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Set @ExportLevelRowsDeleted = @ExportLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ep_Exports N WITH (NOLOCK) , @ExportTmp E WHERE N.ExportID = E.ExportID Set @ExportLevelRowsDeleted = @ExportLevelRowsDeleted + @@ROWCOUNT DELETE FROM tbl_ds_JobDependency where ProjectId=@ProjectId and JobId In( SELECT N.jobid FROM tbl_ds_ProjectJobInfo N WITH (NOLOCK) , @ExportTmp E WHERE otherSettings.value(''(/OtherSettings/ExportId)[1]'', ''int'') = E.ExportID ) DELETE FROM tbl_ds_JobDependency where ProjectId=@ProjectId and dependonjobid In( SELECT N.jobid FROM tbl_ds_ProjectJobInfo N WITH (NOLOCK) , @ExportTmp E WHERE otherSettings.value(''(/OtherSettings/ExportId)[1]'', ''int'') = E.ExportID ) DELETE FROM tbl_ds_jobinfo WHERE projectid = @projectid AND jobid IN ( SELECT N.jobid FROM tbl_ds_ProjectJobInfo N WITH (NOLOCK) , @ExportTmp E WHERE otherSettings.value(''(/OtherSettings/ExportId)[1]'', ''int'') = E.ExportID ) Set @ExportLevelRowsDeleted = @ExportLevelRowsDeleted + @@ROWCOUNT DELETE N FROM tbl_ds_ProjectJobInfo N WITH (NOLOCK) , @ExportTmp E WHERE otherSettings.value(''(/OtherSettings/ExportId)[1]'', ''int'') = E.ExportID Set @ExportLevelRowsDeleted = @ExportLevelRowsDeleted + @@ROWCOUNT --insert into ##DelExportSession values(@GrandTotalRowsToDelete , @ExportLevelRowsDeleted); SET @Query=''INSERT INTO ''+@TmpDelExportSessionTable+'' SELECT @GrandTotalRowsToDelete, @ExportLevelRowsDeleted, getdate(),''''done'''' '' EXEC SP_EXECUTESQL @Query, N''@GrandTotalRowsToDelete BIGINT, @ExportLevelRowsDeleted BIGINT'', @GrandTotalRowsToDelete=@GrandTotalRowsToDelete, @ExportLevelRowsDeleted=@ExportLevelRowsDeleted COMMIT END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CREATE PROCEDURE [sp_sh_ProductionDownloadInvitation] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_sh_ProductionDownloadInvitation'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sh_ProductionDownloadInvitation]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: -- Create date: <7-July-2017> -- Description: -- Jasmeen, 08_AUG-2019,Redmine 22195,Handle scope identity null for multiple db server project -- ============================================= CREATE PROCEDURE [dbo].[sp_sh_ProductionDownloadInvitation] @ProductionDownloadInstruction nvarchar(max), @ProductionDownloadLinkExpirationPeriod int, @InvitedBy bigint, @RecipientUserIds nvarchar(max), @InvitedExternalUserEmails nvarchar(max), @ProductionDownloadInvitationInfoId BIGINT OUTPUT, @ProjectId bigint AS BEGIN SET XACT_ABORT ON BEGIN TRANSACTION DECLARE @qry nvarchar(MAX) DECLARE @tblExtUsrEmail table(Email nvarchar(max)) DECLARE @GlobalRoleId bigint DECLARE @GroupId bigint DECLARE @ExternalUserId bigint IF OBJECT_ID(''tempdb..#TMPExtUserID'') IS NOT NULL DROP TABLE #TMPExtUserID CREATE TABLE #TMPExtUserID (UserId bigint) declare @IsPCDServer BIT =1 SELECT @IsPCDServer =IsPCDServer FROM tbl_pj_ProjectSetup P WITH(NOLOCK), tbl_pj_DatabaseServerInfo D WITH(NOLOCK) WHERE P.DatabaseInstanceName=DB_NAME() AND P.DSID=D.DSID declare @datetime DATETIME =GETDATE() INSERT INTO [tbl_VOD_ProductionShareInfo] ( [ProjectId] , [ProductionDownloadLinkExpirationPeriod] , [InvitedBy] , [InvitedOn] , [ProductionDownloadInstruction] ) VALUES ( @ProjectId , @ProductionDownloadLinkExpirationPeriod , @InvitedBy , @datetime , @ProductionDownloadInstruction ) SET @ProductionDownloadInvitationInfoId=SCOPE_IDENTITY() IF(@IsPCDServer =0) SELECT @ProductionDownloadInvitationInfoId= ProductionDownloadInvitationID FROM [tbl_VOD_ProductionShareInfo] with(nolock) WHERE ProjectId =@ProjectId and InvitedBy=@InvitedBy AND InvitedOn= @datetime and ProductionDownloadInstruction=@ProductionDownloadInstruction AND ProductionDownloadLinkExpirationPeriod=@ProductionDownloadLinkExpirationPeriod IF LEN(@InvitedExternalUserEmails) > 0 BEGIN Select @GlobalRoleId=GlobalRoleid from tbl_pj_GlobalRole with(nolock) where GlobalRoleName like ''%External User%'' print @GlobalRoleId Select @GroupId=GroupId from tbl_pj_GroupInfo with(nolock) where GroupName like ''%External User Group%'' INSERT INTO @tblExtUsrEmail SELECT * FROM [dbo].[f_split] (@InvitedExternalUserEmails,'','') INSERT INTO tbl_sh_ExternalUserInfo([ExternalUserEmailAddress],[CreatedOn],[CreatedBy],[GlobalRoleId]) SELECT Email,GETDATE(),@InvitedBy,@GlobalRoleId FROM @tblExtUsrEmail WHERE Email NOT IN (SELECT ExternalUserEmailAddress FROM tbl_sh_ExternalUserInfo with(nolock)) if(@GroupId is not null) BEGIN INSERT INTO tbl_pj_GroupUserAssociation(ExternalUserId,GroupId) Select eui.ExternalUserId,@GroupId FROM tbl_sh_ExternalUserInfo eui with(nolock) INNER JOIN @tblExtUsrEmail extEmails ON eui.ExternalUserEmailAddress=extEmails.Email LEFT JOIN tbl_pj_GroupUserAssociation gua with(nolock) on gua.ExternalUserId=eui.ExternalUserId where gua.ExternalUserId is null END INSERT INTO #TMPExtUserID(UserId) Select eui.ExternalUserId from tbl_sh_ExternalUserInfo eui with(nolock), @tblExtUsrEmail eue WHERE eui.ExternalUserEmailAddress=eue.Email SET @qry= ''INSERT INTO [dbo].[tbl_VOD_ProductionShareDetail] ([ExternalUserId] ,[ProductionDownloadInvitationID]) SELECT eui.ExternalUserId,@ProductionDownloadInvitationInfoId FROM tbl_sh_ExternalUserInfo eui WITH(NOLOCK) INNER JOIN #TMPExtUserID tblExtUser WITH(NOLOCK) ON tblExtUser.UserId=eui.ExternalUserId'' EXEC SP_EXECUTESQL @qry, N''@ProductionDownloadInvitationInfoId BIGINT'',@ProductionDownloadInvitationInfoId=@ProductionDownloadInvitationInfoId END IF LEN(@RecipientUserIds) > 0 BEGIN SET @qry= ''INSERT INTO [dbo].[tbl_VOD_ProductionShareDetail] ([UserId] ,[ProductionDownloadInvitationID]) SELECT UserId,@ProductionDownloadInvitationInfoId FROM tbl_pj_UserInfo WITH(NOLOCK) WHERE UserId IN (''+@RecipientUserIds+'')'' EXEC SP_EXECUTESQL @qry, N''@ProductionDownloadInvitationInfoId BIGINT'', @ProductionDownloadInvitationInfoId=@ProductionDownloadInvitationInfoId END COMMIT END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CREATE PROCEDURE [sp_jb_queueFilesForInclusiveEmail] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_jb_queueFilesForInclusiveEmail'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_jb_queueFilesForInclusiveEmail]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'-- ============================================= -- Author: Deepak Shrestha -- Create date: 3 Jan 2017 -- Description: Queue Files for inclusive email -- ============================================= CREATE PROCEDURE [dbo].[sp_jb_queueFilesForInclusiveEmail] @UserId BIGINT, @ProjectId BIGINT, @ProjectJobGroupId BIGINT, @TempTable NVARCHAR(MAX), @MediaId NVARCHAR(MAX), @IsSopeLevelJob BIGINT AS BEGIN DECLARE @Query NVARCHAR(MAX) IF OBJECT_ID(''tempdb..#Tmp_CollectedEmailFiles'') IS NOT NULL BEGIN DROP TABLE #Tmp_CollectedEmailFiles END CREATE TABLE #Tmp_CollectedEmailFiles (fileid BIGINT PRIMARY KEY, BaseConversationId VARCHAR(100), ConversationId NVARCHAR(MAX)) IF(@IsSopeLevelJob=1) -- COLLECT ALL EMAIL IN THE EMAIL THREAD OF SOURCE EMAIL FOR INCLUSIVE EMAIL BEGIN SET @Query=''INSERT INTO #Tmp_CollectedEmailFiles SELECT E.FileId, E.BaseConversationId,E.BaseConversationId FROM {TEMPTABLE} tbl_ex_FileInfo FI WITH(NOLOCK) {TEMPTABLE_JOIN_CLAUSE} INNER JOIN tbl_ex_EmailConversationId E WITH(NOLOCK) ON FI.FileId=E.FileId AND FI.ISDuplicate=0 {MEDIA_CLAUSE} '' IF(@TempTable IS NOT NULL) BEGIN SET @Query=REPLACE(@Query,''{TEMPTABLE}'',@TempTable+'' T INNER JOIN '' ) SET @Query=REPLACE(@Query,''{TEMPTABLE_JOIN_CLAUSE}'','' ON T.FileId=FI.FileId '') SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' '') END ELSE BEGIN IF(@MediaId IS NOT NULL) SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' AND FI.MediaID IN(''+@MediaId+'') '') ELSE SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' '') SET @Query=REPLACE(@Query,''{TEMPTABLE}'','' '') SET @Query=REPLACE(@Query,''{TEMPTABLE_JOIN_CLAUSE}'','' '') END EXEC SYS.SP_EXECUTESQL @Query END ELSE --COLLECT ALL THE EMAIL AND IT''S PARENT EMAIL IN EMAIL THREAD FOR INCLUSIVE EMAIL BEGIN IF OBJECT_ID(''tempdb..#Tmp_CollectedConversationId'') IS NOT NULL BEGIN DROP TABLE #Tmp_CollectedConversationId END CREATE TABLE #Tmp_CollectedConversationId (fileid BIGINT PRIMARY KEY, ConversationId NVARCHAR(MAX), BaseConversationId VARCHAR(100)) SET @Query=''INSERT INTO #Tmp_CollectedConversationId SELECT E.FileId, E.ConversationId,E.BaseConversationId FROM {TEMPTABLE} tbl_ex_FileInfo FI WITH(NOLOCK) {TEMPTABLE_JOIN_CLAUSE} INNER JOIN tbl_ex_EmailConversationId E WITH(NOLOCK) ON FI.FileId=E.FileId {MEDIA_CLAUSE} '' IF(@TempTable IS NOT NULL) BEGIN SET @Query=REPLACE(@Query,''{TEMPTABLE}'',@TempTable+'' T INNER JOIN '' ) SET @Query=REPLACE(@Query,''{TEMPTABLE_JOIN_CLAUSE}'','' ON T.FileId=FI.FileId '') SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' '') END ELSE BEGIN IF(@MediaId IS NOT NULL) SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' AND FI.MediaID IN(''+@MediaId+'') '') ELSE SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' '') SET @Query=REPLACE(@Query,''{TEMPTABLE}'','' '') SET @Query=REPLACE(@Query,''{TEMPTABLE_JOIN_CLAUSE}'','' '') END EXEC SYS.SP_EXECUTESQL @Query IF OBJECT_ID(''tempdb..#Tmp_CollectedEmilFileOnlyFileId'') IS NOT NULL BEGIN DROP TABLE #Tmp_CollectedEmilFileOnlyFileId END CREATE TABLE #Tmp_CollectedEmilFileOnlyFileId (fileid BIGINT PRIMARY KEY WITH ( IGNORE_DUP_KEY = ON)) INSERT INTO #Tmp_CollectedEmilFileOnlyFileId SELECT TH.FileId FROM tbl_ex_FileInfo THO WITH(NOLOCK) INNER JOIN tbl_ex_EmailConversationId TH WITH(NOLOCK) ON TH.FileId=THO.FileId AND THO.IsDuplicate=0 INNER JOIN #Tmp_CollectedConversationId B ON TH.BaseConversationId!='''' AND B.BaseConversationId=TH.BaseConversationId AND b.ConversationId like th.ConversationId+''%'' INSERT INTO #Tmp_CollectedEmailFiles SELECT E.FileId,E.BaseConversationId,E.ConversationId FROM #Tmp_CollectedEmilFileOnlyFileId T, tbl_ex_EmailConversationId E WHERE T.fileid=E.FileId INSERT INTO #Tmp_CollectedEmailFiles SELECT E.FileId,E.BaseConversationId,E.ConversationId FROM #Tmp_CollectedConversationId E INNER JOIN tbl_ex_FileInfo F WITH(NOLOCK) ON E.fileid=F.FileId AND F.IsDuplicate=0 LEFT JOIN #Tmp_CollectedEmailFiles I ON F.FileId=I.fileid WHERE I.fileid IS NULL --SET @Query=''INSERT INTO #Tmp_CollectedEmailFiles -- SELECT FI.FileId, '''''''','''''''' -- FROM {TEMPTABLE} -- tbl_ex_FileInfo FI WITH(NOLOCK) -- {TEMPTABLE_JOIN_CLAUSE} -- INNER JOIN -- tbl_ex_EmailConversationId EC WITH(NOLOCK) -- ON EC.FILEID =FI.FIleId -- LEFT JOIN -- #Tmp_CollectedEmailFiles E WITH(NOLOCK) -- ON E.FileId=FI.FileId -- WHERE {MEDIA_CLAUSE} FI.IsDuplicate=0 AND E.FileId IS NULL -- '' --IF(@TempTable IS NOT NULL) --BEGIN -- SET @Query=REPLACE(@Query,''{TEMPTABLE}'',@TempTable+'' T INNER JOIN '' ) -- SET @Query=REPLACE(@Query,''{TEMPTABLE_JOIN_CLAUSE}'','' ON T.FileId=FI.FileId '') -- SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' '') --END --ELSE --BEGIN -- IF(@MediaId IS NOT NULL) -- SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' FI.MediaID IN(''+@MediaId+'') AND '') -- ELSE -- SET @Query=REPLACE(@Query,''{MEDIA_CLAUSE}'','' '') -- SET @Query=REPLACE(@Query,''{TEMPTABLE}'','' '') -- SET @Query=REPLACE(@Query,''{TEMPTABLE_JOIN_CLAUSE}'','' '') --END --EXEC SYS.SP_EXECUTESQL @Query END CREATE INDEX IDX_#Tmp_CollectedEmailFiles_FileId_BaseConversationId ON #Tmp_CollectedEmailFiles (FileId, BaseConversationId) CREATE INDEX IDX_#Tmp_CollectedEmailFiles_BaseConversationId ON #Tmp_CollectedEmailFiles ( BaseConversationId) INCLUDE (FileId, ConversationId) BEGIN TRANSACTION DELETE FROM J FROM tbl_jb_InclusiveEmail J WITH(NOLOCK), #Tmp_CollectedEmailFiles T WHERE J.FileId=T.fileid DELETE FROM I FROM tbl_ex_InclusiveEmailDetails I WITH(NOLOCK), #Tmp_CollectedEmailFiles T WHERE I.FileId= T.FileID DELETE FROM I FROM tbl_ex_InclusiveNonInclusiveEmailAssociation I WITH(NOLOCK), #Tmp_CollectedEmailFiles T WHERE I.NonInclusiveFileId=T.FileID IF OBJECT_ID(''tempdb..#DeletedNonInclusiveFile'') IS NOT NULL BEGIN DROP TABLE #DeletedNonInclusiveFile END CREATE TABLE #DeletedNonInclusiveFile(FileId BIGINT) DELETE FROM I OUTPUT deleted.NonInclusiveFileId INTO #DeletedNonInclusiveFile FROM tbl_ex_InclusiveNonInclusiveEmailAssociation I WITH(NOLOCK), #Tmp_CollectedEmailFiles T WHERE I.InclusiveFileId=T.FileID DELETE FROM I FROM tbl_jb_InclusiveEmail I WITH(NOLOCK) INNER JOIN #DeletedNonInclusiveFile T WITH(NOLOCK) ON I.FileId= T.FileId LEFT JOIN tbl_ex_InclusiveNonInclusiveEmailAssociation NI WITH(NOLOCK) ON T.FileId=NI.NonInclusiveFileId WHERE NI.NonInclusiveFileId IS NULL -- GET ALL THE EMAIL THREAD FILES IF OBJECT_ID(''tempdb..#Tmp_CollectedEmailThreadLevel1'') IS NOT NULL BEGIN DROP TABLE #Tmp_CollectedEmailThreadLevel1 END CREATE TABLE #Tmp_CollectedEmailThreadLevel1 (Id BIGINT IDENTITY PRIMARY KEY, FileId BIGINT, ConId VARCHAR(MAX)) INSERT INTO #Tmp_CollectedEmailThreadLevel1 (FileId, ConId) SELECT fileid, Conversationid FROM #Tmp_CollectedEmailFiles FI WITH(NOLOCK) WHERE BaseConversationId!='''' UNION ALL SELECT I.FileId,E.ConversationId FROM tbl_ex_InclusiveEmailDetails I WITH(NOLOCK), tbl_ex_EmailConversationId E WITH(NOLOCK), (SELECT DISTINCT BaseConversationId FROM #Tmp_CollectedEmailFiles WHERE BaseConversationId!='''') T WHERE I.FileId=E.FileId AND I.IsLeafNode =1 AND T.BaseConversationId=E.BaseConversationId ORDER BY conversationid ASC INSERT INTO tbl_ex_InclusiveEmailDetails(FileId, IsLeafNode,AttachmentHashValue) SELECT C.fileId, 1,ISNULL((SELECT (CAST(isnull(CFI.HashValue+'';'','''') AS NVARCHAR(250))) FROM tbl_Ex_fileinfo CFI WITH(NOLOCK) WHERE CFI.ParentFileID=C.FileId ORDER BY CFI.HashValue FOR XML PATH ('''') ),'''') FROM #Tmp_CollectedEmailFiles C LEFT JOIN tbl_ex_InclusiveEmailDetails I WITH(NOLOCK) ON I.FileId=C.fileId WHERE I.FileId IS NULL AND C.BaseConversationId='''' INSERT INTO tbl_ex_InclusiveEmailDetails(FileId, IsLeafNode,AttachmentHashValue) SELECT T1.fileId,1,ISNULL((SELECT (CAST(isnull(CFI.HashValue+'';'','''') AS NVARCHAR(250))) FROM tbl_Ex_fileinfo CFI WITH(NOLOCK) WHERE CFI.ParentFileID=T1.FileId ORDER BY CFI.HashValue FOR XML PATH ('''') ),'''') FROM #Tmp_CollectedEmailThreadLevel1 t1 LEFT JOIN #Tmp_CollectedEmailThreadLevel1 t2 ON t1.id + 1 = t2.id LEFT JOIN tbl_ex_InclusiveEmailDetails I WITH(NOLOCK) ON I.FileId=T1.fileId WHERE I.FileId IS NULL AND t2.id IS NULL INSERT INTO tbl_ex_InclusiveEmailDetails(FileId, IsLeafNode,AttachmentHashValue) SELECT T1.fileId,1,ISNULL((SELECT (CAST(isnull(CFI.HashValue+'';'','''') AS NVARCHAR(250))) FROM tbl_Ex_fileinfo CFI WITH(NOLOCK) WHERE CFI.ParentFileID=T1.FileId ORDER BY CFI.HashValue FOR XML PATH ('''') ),'''') FROM #Tmp_CollectedEmailThreadLevel1 t1 LEFT JOIN #Tmp_CollectedEmailThreadLevel1 t2 ON t1.id + 1 = t2.id LEFT JOIN tbl_ex_InclusiveEmailDetails I WITH(NOLOCK) ON I.FileId=T1.fileId WHERE I.FileId IS NULL AND LEFT(t2.conId, len(t1.conId)) != t1.conId DECLARE @JobId BIGINT DECLARE @DisplayRemarks NVARCHAR(MAX)=''Inclusive Email Identification - ''+CONVERT(VARCHAR(12), GETDATE(), 107) DECLARE @OtherSettings NVARCHAR(MAX) =''{MediaId}{IsSopeLevelJob}'' IF(@MediaId IS NOT NULL AND @MediaId>0) BEGIN SET @OtherSettings = REPLACE(@OtherSettings ,''{MediaId}'',''''+@MediaId+'''') END ELSE BEGIN SET @OtherSettings = REPLACE(@OtherSettings ,''{MediaId}'','''') END IF(@IsSopeLevelJob = 1 ) BEGIN SET @OtherSettings = REPLACE(@OtherSettings ,''{IsSopeLevelJob}'',''1'') END ELSE BEGIN SET @OtherSettings = REPLACE(@OtherSettings ,''{IsSopeLevelJob}'',''0'') END INSERT INTO tbl_ds_ProjectJobInfo ( [Name] ,[Status] ,[IsQueuingCompleted] ,[QueuedOn] ,[Startedon] ,[CompletedOn] ,[QueuedBy] ,[BulkProcessingInstanceId] ,[BulkProcessingStatus] ,[OtherSettings] ,[DisplayRemarks] ,[ProjectJobGroupId] ) VALUES ( ''Inclusive Email Identification'', 0, 1, GETDATE(), null, null, @UserId, null, '''', @Othersettings, @DisplayRemarks, @ProjectJobGroupId ) SELECT @JobId=SCOPE_IDENTITY() IF @ProjectJobGroupId IS NULL UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET ProjectJobGroupId=@JobId WHERE JOBID=@JobId INSERT INTO [tbl_jb_InclusiveEmail]([JobId] ,[FileId] ,[Status] ,[ProcessingInstanceId] ,[CreatedOn] ,[LastUpdatedOn] ,[ReTryCount] ) SELECT @Jobid,T.fileId,CASE WHEN I.FileID IS NOT NULL AND I.IsLeafNode=1 THEN 2 ELSE 0 END,NULL,GETDATE(),GETDATE(),0 FROM #Tmp_CollectedEmailFiles T LEFT JOIN tbl_ex_InclusiveEmailDetails I with (REPEATABLEREAD) ON T.FILEID=I.FILEID LEFT JOIN [tbl_jb_InclusiveEmail] J with (REPEATABLEREAD) ON T.fileId=J.FileID WHERE J.FILEID IS NULL DECLARE @Priority BIGINT SET @Priority = DATEDIFF(SS, ''1/1/1970'', GETDATE()) IF(@ProjectJobGroupId IS NOT NULL) SELECT @Priority=Priority FROM TBL_DS_JOBINFO WITH(NOLOCK) WHERE JOBID=@ProjectJobGroupId AND PROJECTID=@ProjectId INSERT INTO tbl_ds_JobInfo (projectid, jobid, name, [status], priority,[DisplayRemarks]) VALUES(@projectid, @JobId, ''Inclusive Email Identification'',0,@Priority,@DisplayRemarks) COMMIT END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CREATE PROCEDURE [SP_JB_QueueForNearDuplicates] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_JB_QueueForNearDuplicates'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_JB_QueueForNearDuplicates]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'-- ===================================================================================== -- Author: DEEPAK SHRESTHA -- Create date: <2013 DECEMBER 5> -- Description: QUEUE FOR NEAR DUPLICATES ---===================================================================================== -- ChangeLogs ---===================================================================================== --Modified By: Deepak Shrestha --Modified Date:25 March 2014 --Modification: Log 1 Adding Project Job GroupId --: Log 2 Adding column when inserting value in projectJobInfo Table ---===================================================================================== -- Date: 2014 April 28 -- Descripton: Modified the query to account the fulltext changed for all kind of -- preferred docs ---===================================================================================== -- Modified by:Deepak Shrestha -- Modifed date:25 JUNE 2014 -- Modification : log 3 - ADDING XACT_ABORT ON ---===================================================================================== -- Modifed Date : 22 October 2014 -- Modification : Log 4 : Query changed to get the docs to be queued ---===================================================================================== -- Modifed Date : 28 October 2014 -- Modification : Log 5 : Query changed to filter the replaced docs that will not be -- deleteed from the table ---===================================================================================== ---===================================================================================== -- Modifed Date : 6 JULY 2017 -- Modification : Log 6 : ADD Scope NDD ---===================================================================================== CREATE PROCEDURE [dbo].[SP_JB_QueueForNearDuplicates] @UserId BIGINT, @DisplayRemarks NVARCHAR(400), @IsForceQueue BIT, @TempTable VARCHAR(500), @ProjectJobGroupId BIGINT, --Log 1 @JobId BIGINT OUTPUT, @IsScopeLevelJob BIT, --logid 6 @OtherSettings NVARCHAR(MAX) ='''' AS BEGIN SET XACT_ABORT ON --LOG 3 DECLARE @Query NVARCHAR (MAX) DECLARE @ProjectId BIGINT SET @JobId = 0 --GET THE PROJECTID SELECT @ProjectId=ProjectId FROM Tbl_pj_ProjectSetUp WITH(NOLOCK) WHERE DataBaseInstanceName=DB_NAME() --GET THE MINIMUM CHARACTERS AND DISCLAIMERS LAST UPDATED ON DECLARE @MINCHAR BIGINT DECLARE @LASTUPDATED DATETIME SELECT @MINCHAR = [NDDSettings].value(''(/NDDSettings//MinCharacters/node())[1]'', ''nvarchar(max)''), @LASTUPDATED = NDDSETTINGS.value(''(/NDDSettings/LastUpdatedOn/node())[1]'', ''DATETIME'') FROM (SELECT CAST(NDDSettings AS XML) AS NDDSettings FROM tbl_pj_ProjectSetup WITH(NOLOCK) WHERE ProjectID= @ProjectId )A SELECT @LASTUPDATED = ISNULL(@LASTUPDATED, ISNULL(UpdatedDate, CreatedDate)) FROM tbl_pj_ProjectSetup WHERE ProjectID= @ProjectId SET @MINCHAR = @MINCHAR * 2 + 2 --CREATE TEMPORARY TABLE TO HOLD THE FILEIDS THAT WILL BE QUEUED IF OBJECT_ID(''tempdb..#Tmp_NDDJobTable'') IS NOT NULL BEGIN DROP TABLE #Tmp_NDDJobTable END CREATE TABLE #Tmp_NDDJobTable (FileId BIGINT ) IF (@IsForceQueue = 1 OR @IsScopeLevelJob=1) BEGIN IF(LEN(@TempTable) > 0) BEGIN --INSERT INTO TEMPORARY TABLES SET @Query = ''SELECT XX.FILEID FROM ( SELECT X.FILEID, ISNULL((CASE WHEN NOTEXT = 1 THEN 0 WHEN FULLTEXTPREFERENCE = ''''EXTRACTED'''' THEN (SELECT FULLTEXTFILESIZE FROM TBL_EX_FULLTEXTFILELOCATION WITH(NOLOCK) WHERE FILEID = X.FILEID) WHEN FULLTEXTPREFERENCE = ''''TIFF_OCR'''' THEN (SELECT SUM(GENERATEDTIFFOCRFULLTEXTSIZE) FROM TBL_FT_IMAGEFULLTEXT WITH(NOLOCK) WHERE FILEID = X.FILEID) ELSE (SELECT SUM(REDACTEDTIFFOCRFULLTEXTSIZE) FROM TBL_FT_IMAGEFULLTEXT WITH(NOLOCK) WHERE FILEID = X.FILEID) END), 0) AS FILESIZE FROM ( SELECT DISTINCT FI.FILEID, CASE WHEN FI.ISNOTEXT = 1 THEN 1 ELSE 0 END AS [NOTEXT], TC.FULLTEXTPREFERENCE FROM TBL_EX_FILEINFO FI WITH(NOLOCK) CROSS APPLY DBO.GETFULLTEXTLOCATIONBYPREFERENCE(FI.FILEID, 1) AS TC INNER JOIN '' + @TempTable + '' MT ON FI.FILEID = MT.FILEID ) X )XX WHERE FILESIZE > '' + CAST(@MINCHAR AS VARCHAR(500))+ '''' INSERT INTO #Tmp_NDDJobTable EXEC (@Query) END END ELSE BEGIN INSERT INTO #Tmp_NDDJobTable SELECT DISTINCT FILEID FROM ( SELECT XX.FILEID, XX.NOTEXT, CASE WHEN FILESIZE < @MINCHAR THEN 1 ELSE 0 END AS LESSCHAR, FULLTEXTPREFERENCE, FILESIZE, CASE WHEN JB.FILEID IS NULL THEN 0 ELSE 1 END AS PROCESSED, CASE WHEN JB.LASTUPDATEDON < @LASTUPDATED THEN 1 ELSE 0 END AS DISCLAIMERCHANGED, CASE WHEN Z.FILEID IS NULL THEN 0 ELSE 1 END AS PREFERREDTEXTCHANGED, CASE WHEN FILESIZE > @MINCHAR THEN CASE WHEN FULLTEXTPREFERENCE = ''EXTRACTED'' THEN ISNULL(CAST((SELECT DISTINCT LG.FILEID FROM tbl_ex_FulltextFileLocation LG WITH(NOLOCK), TBL_JB_NDDJOB JB WITH(NOLOCK) WHERE LG.FILEID = XX.FILEID AND LG.FILEID = JB.FILEID AND LG.UpdatedDate > @LASTUPDATED AND LG.UpdatedDate > JB.LASTUPDATEDON ) AS BIT) , 0) WHEN FULLTEXTPREFERENCE = ''REDACTED_OCR'' THEN ISNULL(CAST ((SELECT DISTINCT FI.FILEID FROM TBL_FT_IMAGEFULLTEXT FI WITH(NOLOCK) , TBL_JB_NDDJOB JB WITH(NOLOCK) WHERE FI.FILEID = XX.FILEID AND FI.FILEID = JB.FILEID AND FI.REDACTEDOCRREDACTEDDATE > @LASTUPDATED AND FI.REDACTEDOCRREDACTEDDATE > JB.LASTUPDATEDON) AS BIT), 0) ELSE ISNULL(CAST ((SELECT DISTINCT FI.FILEID FROM TBL_FT_IMAGEFULLTEXT FI WITH(NOLOCK), TBL_JB_NDDJOB JB WITH(NOLOCK) WHERE FI.FILEID = XX.FILEID AND FI.FILEID = JB.FILEID AND FI.GENERATEDOCRDATE > @LASTUPDATED AND FI.GENERATEDOCRDATE > JB.LASTUPDATEDON ) AS BIT), 0) END ELSE 0 END AS FULLTEXTCHANGED FROM ( SELECT X.*, ISNULL( CASE WHEN NOTEXT = 1 THEN 0 WHEN FULLTEXTPREFERENCE = ''EXTRACTED'' THEN (SELECT FULLTEXTFILESIZE FROM TBL_EX_FULLTEXTFILELOCATION WITH(NOLOCK) WHERE FILEID = X.FILEID) WHEN FULLTEXTPREFERENCE = ''TIFF_OCR'' THEN (SELECT SUM(GENERATEDTIFFOCRFULLTEXTSIZE) FROM TBL_FT_IMAGEFULLTEXT WITH(NOLOCK) WHERE FILEID = X.FILEID) ELSE (SELECT SUM(REDACTEDTIFFOCRFULLTEXTSIZE) FROM TBL_FT_IMAGEFULLTEXT WITH(NOLOCK) WHERE FILEID = X.FILEID) END , 0) AS FILESIZE FROM ( SELECT DISTINCT FI.FILEID AS [FILEID], CASE WHEN FI.ISNOTEXT = 1 THEN 1 ELSE 0 END AS [NOTEXT], TC.FULLTEXTPREFERENCE FROM TBL_EX_FILEINFO FI WITH(NOLOCK) CROSS APPLY DBO.GETFULLTEXTLOCATIONBYPREFERENCE(FI.FILEID, 1) AS TC ) X ) XX LEFT JOIN TBL_JB_NDDJOB JB ON XX.FILEID = JB.FILEID AND JB.Status!=-2 LEFT JOIN ( SELECT DISTINCT JB.FILEID FROM TBL_JB_NDDJOB JB WITH(NOLOCK), TBL_FT_FULLTEXTMASTER FT WITH(NOLOCK) WHERE JB.FILEID = FT.FILEID AND JB.FULLTEXTTYPE != FT.DEFAULTPREFERENCE) Z ON Z.FILEID = JB.FILEID ) XXX WHERE NOTEXT = 0 AND LESSCHAR = 0 AND (PROCESSED = 0 OR (DISCLAIMERCHANGED + FULLTEXTCHANGED + PREFERREDTEXTCHANGED) > 0 ) END -- CHECK IF ANY RECORDS EXISTS -- RETURN IF NOT IF NOT EXISTS(SELECT TOP 1 1 FROM #Tmp_NDDJobTable) BEGIN DROP TABLE #Tmp_NDDJobTable SET @JobId = -1 RETURN END IF OBJECT_ID(''tempdb..#Tmp_Centroid'') IS NOT NULL DROP TABLE #Tmp_Centroid CREATE TABLE #Tmp_Centroid (CentroidGroupId BIGINT PRIMARY KEY) INSERT #Tmp_Centroid (CentroidGroupId) SELECT DISTINCT J.GroupID FROM tbl_jb_NDDJob J WITH(NOLOCK), #Tmp_NDDJobTable T WHERE J.FileId=T.FileId AND J.IsCentroid=1 --DELETE THE OLD FILES THAT WILL BE RE-QUEUED FOR HASH SIGNATURE GENERATION DELETE FROM NDD FROM tbl_jb_NDDJob NDD, #Tmp_NDDJobTable TMP WHERE NDD.FileId = TMP.FileId DECLARE @ProjectJobGroupIdOfParent BIGINT --LOG 1 SELECT @ProjectJobGroupIdOfParent=ISNULL(ProjectJobGroupId,@ProjectJobGroupId) FROM tbl_ds_ProjectJobInfo WITH(NOLOCK) WHERE JobId=@ProjectJobGroupId IF @OtherSettings IS NULL OR @OtherSettings ='''' SET @OtherSettings='''' -- INSERT THE JOB IN PROJECT JOB INFO TABLE INSERT INTO tbl_ds_ProjectJobInfo ( [Name], [Status], [IsQueuingCompleted], [QueuedOn], [Startedon], [CompletedOn], [QueuedBy], [BulkProcessingInstanceId], [BulkProcessingStatus], [DisplayRemarks], [ProjectJobGroupId], [PostProcessingStatus], [OtherSettings]) SELECT ''Near Duplicates'', 0, 1, GETDATE(), NULL, NULL, @UserId, NULL, 0, @DisplayRemarks, @ProjectJobGroupIdOfParent, --Log 1 NULL, --Log 2 CAST(@OtherSettings AS XML) --GET THE NEW JOB ID SET @JobId = SCOPE_IDENTITY() UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET OtherSettings.modify(''insert into (/OtherSettings)[1]'') Where JobId=@JobId UPDATE tbl_ds_ProjectJobInfo WITH(ROWLOCK) SET OtherSettings.modify(''insert text {sql:variable("@IsScopeLevelJob")} into (/OtherSettings/IsScopeLevelJob)[1]'') Where JobId=@JobId --Log 1 DECLARE @Priority bigint SET @Priority = DATEDIFF(SS, ''1/1/1970'', GETDATE()) IF(@ProjectJobGroupId IS NOT NULL) BEGIN SELECT @Priority=Priority FROM tbl_ds_ProjectJobInfo P WITH(NOLOCK), tbl_ds_jobinfo J WITH(NOLOCK) WHERE P.ProjectJobGroupId=@ProjectJobGroupId AND P.JobId=J.JobId AND J.ProjectId=@ProjectId END DECLARE @ErrorMessage NVARCHAR(4000),@ErrorSeverity INT, @ErrorState INT BEGIN TRY --INSERT INTO NEAR DUPLICATES QUEUE TABLE FROM THE TEMPORARY TABLE INSERT INTO TBL_JB_NDDJOB ( [JOBID], [FILEID], [STATUS], [SIGNATURE], [PROCESSINGINSTANCEID], [CREATEDON], [LASTUPDATEDON], [RETRYCOUNT], [FULLTEXTTYPE]) SELECT @JobId, TT.FILEID, 0, NULL, NULL, GETDATE(), NULL, 0, CASE WHEN MA.FileId IS NOT NULL THEN MA.DefaultPreference ELSE (SELECT TOP 1 FullTextType FROM tbl_pj_FullTextPriority WITH(NOLOCK) ORDER BY PRIORITY ASC) END FROM #Tmp_NDDJobTable TT LEFT JOIN tbl_ft_FullTextMaster MA ON MA.FileId = TT.FileId LEFT JOIN tbl_jb_nddJob NDD WITH(NOLOCK) ON TT.FileId=NDD.FileId WHERE NDD.FileId IS NULL UPDATE N SET GroupId=NULL FROM tbl_jb_NDDJob N WITH(ROWLOCK), #Tmp_Centroid T WHERE T.CentroidGroupId=N.GroupID END TRY BEGIN CATCH SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(); END CATCH -- INSERT INTO JOB INFO TABLE INSERT INTO tbl_ds_jobinfo ( [PROJECTID], [JOBID], [NAME], [STATUS], [PRIORITY], [DISPLAYREMARKS] ) VALUES ( @ProjectId, @JobId, ''Near Duplicates'', 0, @Priority, @DisplayRemarks) -- DROP THE TEMPORARY TABLE IF OBJECT_ID(''tempdb..#Tmp_NDDJobTable'') IS NOT NULL DROP TABLE #Tmp_NDDJobTable IF OBJECT_ID(''tempdb..#Tmp_Centroid'') IS NOT NULL DROP TABLE #Tmp_Centroid IF @ErrorMessage IS NOT NULL RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CREATE PROCEDURE [sp_jb_GetFilesForInclusiveEmail] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_jb_GetFilesForInclusiveEmail'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_jb_GetFilesForInclusiveEmail]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* ============================================= -- Author: Deepak Shrestha -- Create date: 02 jan 2016 -- Description: procedure to get file to compare text for inclusive email -- =============================================*/ CREATE PROCEDURE [dbo].[sp_jb_GetFilesForInclusiveEmail] @JobId INT, @BatchSize INT, @ProcessingInstanceId NVARCHAR(2000) AS BEGIN DECLARE @SelectedFiles TABLE (FileId BIGINT PRIMARY KEY,GroupConversationId NVARCHAR(45)) BEGIN TRANSACTION IF OBJECT_ID(''tempdb..#Tmp_With_GroupConversationId'') IS NOT NULL BEGIN DROP TABLE #Tmp_With_GroupConversationId END CREATE TABLE #Tmp_With_GroupConversationId (fileId BIGINT PRIMARY KEY, GroupConversationId NVARCHAR(MAX)) INSERT INTO #Tmp_With_GroupConversationId (fileId , GroupConversationId) SELECT C.FileId,left(ConversationId,44) AS GroupConversationId FROM tbl_jb_InclusiveEmail I WITH (UPDLOCK), tbl_ex_EmailConversationId C WITH(NOLOCK) WHERE I.JobId =@JobId AND I.[Status] IN (0,-1) AND I.FileId=C.FileId INSERT INTO @SelectedFiles (FileId,GroupConversationId) SELECT TOP (@BATCHSIZE) with ties I.FileId,T.GroupConversationId FROM tbl_jb_InclusiveEmail I WITH(NOLOCK), #Tmp_With_GroupConversationId T WHERE I.JobId =@JobId AND I.[Status] IN (0,-1) AND I.FileId=T.fileId ORDER BY T.GroupConversationId UPDATE J WITH (ROWLOCK) SET [Status] = 1, ProcessingInstanceId = @ProcessingInstanceId, LastUpdatedOn = GETDATE() FROM tbl_jb_InclusiveEmail J, @SelectedFiles T WHERE J.FileId= T.FileId AND J.JobId=@JobId COMMIT SELECT T.FileId,FI.MediaId, E.ConversationId ,F.FulltextFileLocation, (SELECT (CAST(isnull(CFI.HashValue+'';'','''') AS NVARCHAR(250))) FROM tbl_Ex_fileinfo CFI WITH(NOLOCK) WHERE CFI.ParentFileID=T.FileId ORDER BY CFI.HashValue FOR XML PATH ('''') ) AS AttachmentHashValue, CAST(CASE WHEN FileLanguageDetails LIKE ''%Chinese%'' THEN 1 WHEN FileLanguageDetails LIKE ''%Korean%'' THEN 1 WHEN FileLanguageDetails LIKE ''%Japanese%'' THEN 1 ELSE 0 END AS BIT) AS HasCJK FROM tbl_jb_InclusiveEmail t INNER JOIN tbl_ex_FileInfo FI WITH(NOLOCK) ON T.FileId = FI.FileId LEFT JOIN tbl_ex_EmailConversationId E WITH(NOLOCK) ON T.FileId=E.FileId LEFT JOIN tbl_ex_FulltextFileLocation F WITH(NOLOCK) ON T.FileId=F.FileID LEFT JOIN tbl_ex_filelanguage FLA WITH(NOLOCK) ON t.FileId=FLA.FileID WHERE T.JobId=@JobId AND STATUS =1 AND T.ProcessingInstanceId = @ProcessingInstanceId ORDER BY E.ConversationId DESC, T.FileId DESC END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CREATE PROCEDURE [[sp_rev_PrepareDataForReviewBatch]] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_rev_PrepareDataForReviewBatch]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rev_PrepareDataForReviewBatch]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Sudeep K.C. -- Create date: Jan. 09, 2011 -- Description: Prepare data for review batch -- Modified By : Pabitra Bajracharya -- Modified Date: 19th June 2014 -- Description: Change query to handle review field sorting after field change (Redmine Bug #1795) -- Modified By : Deepak Shrestha -- Modified Date: 12/6/2015 -- Modification : 1. Optimization of query -- 2. add filter -- Modified By : Bipin Shakya -- Modified Date: july 20 2017 -- Modification : Allow Filtering in custom field #17149 -- Modified By : Jasmeen Bajracharya -- Modified Date: March 6,2018 -- Modification : FamilyCount added #18919 -- Modified By : Jasmeen Bajracharya -- Modified Date: April 5,2019 -- Modification : Order BY newid used instead of tbl_rev_ReviewSet.ReviewSetFileOrderId ASC ,Redmine #21417 -- Modified By : Jasmeen Bajracharya -- Modified Date: April 15,2019 -- Modification : Order BY newid to be used only in case of cal profile ,Redmine #21417 --Modified By : BIpin/Deepak -- Date: May 24, 2019 --MOdification: Support filtering and sorting across batch for all fields in review.RM #21588 --Modification:Fixed Review Batch Sort By Email To ,Redmine #22739 --Add Is_Parent column in Global temp table to make same code work for sorting results works with sorting results in search in vod. -- ============================================= CREATE PROCEDURE [dbo].[sp_rev_PrepareDataForReviewBatch] @ReviewSetId BIGINT, @UserId bigint, @GlobalTempTable nvarchar(100), @MainQuery NVARCHAR(MAX), @Filter nvarchar(1000), @SortBy nvarchar(1000), @TotalFiles bigint output AS BEGIN SET NOCOUNT ON; DECLARE @Query nvarchar(MAX) DECLARE @ParentChild bit Select @ParentChild=ISNULL(SortKeepPCTogether,0) from tbl_rev_ReviewerSettings where ReviewSetId=@ReviewSetId and UserId=@UserId declare @V_TMP_TABLE nvarchar(250) SET @V_TMP_TABLE=''##TEMP''+CAST(@@SPID AS VARCHAR(32)); SELECT @Query =N''INSERT INTO {TempTableName} SELECT {FileId} TEMP.__groupid, {FamilyCount},__isparent FROM (''+@MainQuery+'')TEMP {tbl_rev_reviewSetInfo} {ParentChildTogether} {TableFamilyCount} {Filter} {SortBy} '' SET @Query = Replace(@Query,''{Filter}'' , @Filter) IF(@ParentChild=1) BEGIN Declare @Query1 nvarchar(max) SELECT @Query1 =N''CREATE TABLE ''+ @V_TMP_TABLE+N'' (SEQ_NO BIGINT IDENTITY(1,1), GroupId BIGINT PRIMARY KEY, FAMILYCOUNT BIGINT) '' EXECUTE SP_EXECUTESQL @Query1 SET @Query = Replace(@Query,''{FileId}'' , '' '') SET @Query = Replace(@Query,''{TempTableName}'' , @V_TMP_TABLE ) END ELSE BEGIN SET @Query = Replace(@Query,''{TempTableName}'' , @GlobalTempTable ) SET @Query = Replace(@Query,''{FileId}'' , ''TEMP.__FileId,'') SET @Query = Replace(@Query,''{ParentChildTogether}'' , '' '') END IF(@SortBy ='''') BEGIN IF EXISTS(SELECT TOP 1 1 FROM tbl_var_profileinfo pInfo WITH(NOLOCK) INNER JOIN tbl_VAR_ProfileReviewSetAssociation pRSA WITH(NOLOCK) ON pInfo.ProfileID=pRsa.ProfileID AND pInfo.IsCalProfile=1 WHERE pRSA.ReviewSetID=@ReviewSetId) BEGIN SET @Query = Replace(@Query,''{SortBy}'' , ''ORDER BY newid()'') SET @Query = Replace(@Query,''{tbl_rev_reviewSetInfo}'' , '' '') END ELSE BEGIN SET @Query = Replace(@Query,''{tbl_rev_reviewSetInfo}'' , '' INNER JOIN tbl_rev_ReviewSet tbl_rev_ReviewSet WITH(NOLOCK) ON tbl_rev_ReviewSet.ReviewSetId=''+CAST(@ReviewSetId AS NVARCHAR(MAX)) +'' AND TEMP.__FileId=tbl_rev_ReviewSet.FileID '') SET @Query = Replace(@Query,''{SortBy}'' , ''ORDER BY tbl_rev_ReviewSet.ReviewSetFileOrderId ASC'') IF(@ParentChild=1) BEGIN SET @Query = Replace(@Query,''{ParentChildTogether}'' , '' AND TEMP.__IsParent=1 '') END END END ELSE BEGIN SET @Query = Replace(@Query,''{tbl_rev_reviewSetInfo}'' , '' '') SET @Query = Replace(@Query,''{SortBy}'' , @SortBy) END --Family Count included in the filder IF (CHARINDEX(''FAMILYCOUNT'',@Filter)>0 OR CHARINDEX(''FAMILYCOUNT'',@SortBy) > 0) BEGIN SET @Query = Replace(@Query,''{FamilyCount}'' , ''tbl_ig_familycount.FamilyCount'' ) SET @Query = Replace(@Query,''{TableFamilyCount}'' , ''inner join tbl_ig_FamilyCount tbl_ig_familycount WITH(NOLOCK) ON tbl_ig_familycount.GroupId=TEMP.__GroupId'' ) IF(@ParentChild=1) BEGIN SET @Query = Replace(@Query,''{ParentChildTogether}'' , '' AND TEMP.__IsParent=1 '') END END ELSE BEGIN SET @Query = Replace(@Query,''{FamilyCount}'' , ''NULL'' ) SET @Query = Replace(@Query,''{TableFamilyCount}'' , '' '' ) END IF(@ParentChild=1) BEGIN SET @Query = Replace(@Query,''{ParentChildTogether}'' , '' WHERE TEMP.__IsParent=1 '') END EXEC sp_executesql @query IF(@ParentChild=1) BEGIN SELECT @Query = N''IF EXISTS (SELECT TOP(1) 1 FROM tempdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @GlobalTempTable + '''''') BEGIN INSERT INTO ''+@GlobalTempTable + N'' (FileId,GroupId) SELECT TEMP.__fileid, TEMP.__groupid FROM ''+ @V_TMP_TABLE + N'' TP , (''+@MainQuery+'')TEMP WHERE TP.groupid=TEMP.__groupid {filter} ORDER BY tp.seq_no,TEMP.__fileid END '' SET @Query = Replace(@Query,''{Filter}'' , @Filter) EXEC SP_EXECUTESQL @query SELECT @query = N''DROP TABLE '' + @V_TMP_TABLE EXEC SP_EXECUTESQL @query END SELECT @query='' select @TotalFiles =COUNT(1) from ''+@GlobalTempTable+'''' EXEC SP_EXECUTESQL @Query , N''@TotalFiles BIGINT OUTPUT'' , @TotalFiles=@TotalFiles OUTPUT SELECT @TotalFiles END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CREATE PROCEDURE [sp_sh_PopulateTagCount] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_sh_PopulateTagCount]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sh_PopulateTagCount]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ================================================ -- THIS PROCEDURE RETURNS THE ORIGINAL AND TOTAL TAG COUNT FOR THE SPECIFIED MEDIA SCOPE -- CHANGELOG --1. Abhishek , June 16, 2014 , Added changes for showing the tag count for Folder/reviewset Navigation (internal ticket#1535) --2. Suman Karki, 16th DEC 2015, Added Parent Tagid to display tag in tree view and fix sort order. --3. Bhuwan Poudyal, Feb 04, 2016, Added parameter ParentSeperator(Default .) to seperate parents with required seperator --4. Deepak, march 21 2016, added source filter for export, tkt #9830 --5. Gaurav, July 26 2017: added include archive option for export --6. Gaurav, August 3 2017: do not filter for archive files --7. Gaurav, August 23 2017: filter archives based on flag in control settings table --8. Sudhir, 19th December 2018, Add option to include archive processing level --9. Purushottam, 10th September 2019, Return aditional field as IsExclusive,REDMINE 22324 --10.Redmine 23218,Taggroupid is fetched instead of hardcoded -1,TAGGROUPSORTORDER added in order by condition --11.Puru,Archive handling option made project level so use value of Key ARCHIVE_HANDLING_LEVEL from tbl_pj_ProjectSetting, REDMINE #23479 -- ================================================ CREATE PROCEDURE [dbo].[sp_sh_PopulateTagCount] @columntotalcount varchar (100), @groupid bigint, @NavigationList NVARCHAR(max), @NavigationBy Nvarchar(max), @ParentSeperator NVARCHAR(10)=''.'', @filterClause nvarchar(max)=null, @includeArchiveFromExport bit =0 AS BEGIN --CL1 DECLARE @NavigationClause nvarchar(max) SET @NavigationClause = '''' IF (@NavigationBy = ''MEDIA'') BEGIN SET @NavigationClause = '' WHERE FI.MediaID IN ( '' + @NavigationList + '') AND ISSYSTEM=0 AND ISDENIST=0 '' END ELSE IF (@NavigationBy = ''REVIEWSET'') BEGIN SET @NavigationClause = '' INNER JOIN (SELECT Distinct fileid FROM tbl_rev_reviewset WITH (NOLOCK) WHERE ReviewSetId IN ( '' + @NavigationList + '' )) FI1 ON FI1.fileid = FI.fileid WHERE ISSYSTEM=0 AND ISDENIST=0 '' END ELSE IF (@NavigationBy = ''FOLDER'') BEGIN SET @NavigationClause = '' INNER JOIN (SELECT Distinct fileid FROM tbl_fd_FolderFilesAssociation WITH (NOLOCK) WHERE FolderId IN ('' + @NavigationList + '')) FI1 ON FI1.fileid = FI.fileid WHERE ISSYSTEM=0 AND ISDENIST=0 '' END IF(@filterClause IS NOT NULL) BEGIN SET @NavigationClause = '' INNER JOIN (''+@filterClause+'') FILT ON FILT.fileid = FI.fileid WHERE ISSYSTEM=0 AND ISDENIST=0 '' END DECLARE @archiveFilterClause nvarchar(max) DECLARE @includeArchives INT = 0 SELECT @includeArchives = [Value] FROM tbl_pj_ProjectSetting WITH(NOLOCK) WHERE [Key] = ''ARCHIVE_HANDLING_LEVEL'' IF(@includeArchiveFromExport=1) BEGIN SET @NavigationClause = @NavigationClause END ELSE IF(@includeArchives=0) BEGIN SET @NavigationClause = @NavigationClause + '' AND FI.ISARCHIVE=0 '' END ELSE IF(@includeArchives=2) BEGIN SET @NavigationClause = @NavigationClause + '' AND ( FI.IsARCHIVE=0 OR (FI.GroupId<>-1 AND ((FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.ISARCHIVE=1 AND FI.IsNonProcessed=1) OR (FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.ISARCHIVE=1 AND FI.IsCorrupted=1) OR ( FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.ISARCHIVE=1 AND FI.IsPasswordprotected=1 AND FI.IsPasswordDecrypted =0)))) '' END IF OBJECT_ID(''TEMPDB..#TMP_AVAILABLETAGS'') IS NOT NULL BEGIN DROP TABLE #TMP_AVAILABLETAGS END CREATE TABLE #TMP_AVAILABLETAGS ( TAGNAME NVARCHAR(250), TAGID BIGINT, TAGGROUPNAME NVARCHAR(250), TAGGROUPID BIGINT, TAGSORTORDER BIGINT, TAGGROUPSORTORDER BIGINT, ParentTagId BIGINT, ISEXCLUSIVE BIT ) DECLARE @v_query NVARCHAR(MAX) INSERT INTO #TMP_AVAILABLETAGS SELECT DISTINCT T.TagName, TGA.TagID,TG.TagGroupName, TGA.TagGroupID, T.SORTORDER,TG.SORTORDER AS TAGGROUPSORTORDER, T.ParentTagId,TG.IsExclusive FROM tbl_tg_TagProjectGroupAssociation TPGA WITH(NOLOCK), tbl_tg_TagGroupAssociation TGA WITH(NOLOCK), tbl_tg_TagGroup TG WITH(NOLOCK), tbl_ex_Tag T WITH(NOLOCK) WHERE T.TagID=TGA.TagID AND T.TagID=TPGA.TagID AND TG.TagGroupID=TGA.TagGroupID AND TPGA.GroupID=@groupid SET @v_query = '' SELECT ID, ParentID, Name, CASE WHEN IsGroup=0 AND TotalTagCount IS NULL THEN 0 ELSE TotalTagCount END AS ['' + @columntotalcount + ''], A.TagID, IsGroup, TagGroupID, IsExclusive FROM (SELECT DISTINCT TagGroupName AS ID, '''''''' AS ParentID, TagGroupName AS Name, CAST(1 AS BIT) AS IsGroup, -2 AS TagID, TagGroupID, TAGGROUPSORTORDER AS TAGGROUPSORTORDER, TAGGROUPSORTORDER AS TAGORDER, TAGGROUPID AS IDtoSort, IsExclusive FROM #TMP_AVAILABLETAGS UNION SELECT TagGroupName+''''.''''+TagName AS ID, CASE WHEN ParentTagId=-1 THEN TagGroupName ELSE (SELECT TagGroupName+''''''+@ParentSeperator+''''''+TT.TagName FROM tbl_ex_Tag TT WITH(NOLOCK) WHERE TT.TagId=Y.ParentTagId) END AS ParentID, TagName AS Name, CAST(0 AS BIT) AS IsGroup, TagID, TagGroupID as TagGroupID, TAGGROUPSORTORDER AS TAGGROUPSORTORDER, TAGSORTORDER AS TAGORDER, TAGID AS IDtoSort, IsExclusive FROM #TMP_AVAILABLETAGS Y UNION SELECT ''''Not Tagged'''' AS ID, '''''''' AS ParentID, ''''Not Tagged'''' AS Name, CAST(0 AS BIT) AS IsGroup, -1 AS TagID, -1 AS TagGroupID, -1 AS TAGGROUPSORTORDER, -1 AS TAGORDER, -1 AS IDtoSort, CAST( 0 AS BIT) AS IsExclusive ) A LEFT JOIN (SELECT ISNULL(T1.TagID,-1) AS TagId, COUNT(FI.FileID) AS TotalTagCount FROM (#TMP_AVAILABLETAGS T1 INNER JOIN tbl_ex_FileTagAssociation FTA WITH(NOLOCK) ON FTA.TAGID=T1.TAGID) RIGHT JOIN TBL_EX_FILEINFO FI WITH(NOLOCK) ON FI.FILEID=FTA.FILEID '' + @NavigationClause +'' GROUP BY T1.TagID) B ON A.TagID=B.TagID ORDER BY IsGroup DESC,TAGGROUPSORTORDER, A.TAGORDER,A.IDtoSort'' EXEC sp_executesql @v_query DROP TABLE #TMP_AVAILABLETAGS END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CREATE PROCEDURE [sp_ep_PopulateTagCountForReExport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ep_PopulateTagCountForReExport]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_PopulateTagCountForReExport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ================================================ -- THIS PROCEDURE RETURNS THE SUBSET COUNT FOR ORIGINAL AND TOTAL TAG FOR RE-EXPORT -- ChangeLog 1, Deepak, Jan 27 2016, Rewrite the query for populating tag for re-export and fixed sort order, tkt #8730 -- ChangeLog 2, Deepak, march 21 2016, added source filter for export, tkt #9830 -- ChangeLog 3, Gaurav, July 26 2017: added include archive option for export -- 4. Gaurav, August 3 2014: do not filter for archive files -- 5. Sudhir, 19th December 2018, Add option to include archive processing level --6. Purushottam, 10th September 2019, Return aditional field as IsExclusive,REDMINE 22324 --7. Jasmeen,04-MAR-2020, redmine 23394, Medialist added --8. Puru,Archive handling option made project level so use value of Key ARCHIVE_HANDLING_LEVEL from tbl_pj_ProjectSetting, REDMINE #23479 -- ================================================ CREATE PROCEDURE [dbo].[sp_ep_PopulateTagCountForReExport] @columntotalcount varchar (100), @ExportId bigint, @Groupid bigint, @filterClause nvarchar(max)=null, @includeArchiveFromExport bit, @MediaList nvarchar(max)=null AS BEGIN IF OBJECT_ID(''TEMPDB..#TMP_AVAILABLETAGS'') IS NOT NULL BEGIN DROP TABLE #TMP_AVAILABLETAGS END CREATE TABLE #TMP_AVAILABLETAGS ( TAGNAME NVARCHAR(250), TAGID BIGINT, TAGGROUPNAME NVARCHAR(250), TAGGROUPID BIGINT, TAGSORTORDER BIGINT, GROUPSORTORDER BIGINT, ISEXCLUSIVE BIT , PARENTTAGID BIGINT ) DECLARE @v_query NVARCHAR(MAX) INSERT INTO #TMP_AVAILABLETAGS SELECT DISTINCT T.TagName, TGA.TagID,TG.TagGroupName, TGA.TagGroupID,T.SortOrder ,TG.SortOrder,TG.IsExclusive, T.ParentTagId FROM tbl_tg_TagProjectGroupAssociation TPGA WITH(NOLOCK), tbl_tg_TagGroupAssociation TGA WITH(NOLOCK), tbl_tg_TagGroup TG WITH(NOLOCK), tbl_ex_Tag T WITH(NOLOCK) WHERE TPGA.GroupID=@GROUPID AND TPGA.TagID=TGA.TagID AND TG.TagGroupID=TGA.TagGroupID AND T.TagID=TGA.TagID DECLARE @FilterQuery NVARCHAR(MAX)='''' IF @FilterClause IS NOT NULL SET @Filterquery= '' INNER JOIN (''+@FilterClause+'')FILT ON FI.FILEID=FILT.FILEID '' DECLARE @MediaListQuery nvarchar(max)='''' If(@MediaList is not null) SET @MediaListQuery='' AND FI.MediaID IN ( '' + @MediaList + '')'' IF OBJECT_ID(''TEMPDB..#TMP_TagCounts'') IS NOT NULL BEGIN DROP TABLE #TMP_TagCounts END CREATE TABLE #TMP_TagCounts ( TotalTagCount BIGINT, TAGID BIGINT, ParentTagId BIGINT ) SET @v_query = '' INSERT INTO #TMP_TagCounts SELECT COUNT(FI.FILEID) AS TotalTagCount, ISNULL(T1.TagID,-1) AS TagId , T1.ParentTagId FROM tbl_ex_FileInfo FI WITH(NOLOCK) INNER JOIN tbl_ep_ExportDetails ED WITH(NOLOCK) ON ExportID=''+CAST(@ExportId AS NVARCHAR)+'' AND FI.FileID=ED.FileID ''+@Filterquery+@MediaListQuery+'' INNER JOIN tbl_ex_FileTagAssociation FTA WITH(NOLOCK) ON FI.FILEID=FTA.FILEID INNER JOIN #TMP_AVAILABLETAGS T1 ON FTA.TagID=T1.TagID WHERE FI.IsSystem=0 AND FI.IsDeNIST=0 {0} GROUP BY T1.TagID, T1.ParentTagId'' DECLARE @includeArchives INT = 0 Declare @archiveFilterQuery nvarchar(max)='''' SELECT @includeArchives = [Value] FROM tbl_pj_ProjectSetting WITH(NOLOCK) WHERE [Key] = ''ARCHIVE_HANDLING_LEVEL'' IF(@includeArchiveFromExport=1) BEGIN SET @archiveFilterQuery = @archiveFilterQuery END ELSE IF(@includeArchives=0) BEGIN SET @archiveFilterQuery = '' AND FI.ISARCHIVE=0 '' END ELSE IF(@includeArchives=2) BEGIN SET @archiveFilterQuery = '' AND ( FI.IsARCHIVE=0 OR (FI.GroupId<>-1 AND ((FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.ISARCHIVE=1 AND FI.IsNonProcessed=1) OR (FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.ISARCHIVE=1 AND FI.IsCorrupted=1) OR ( FI.ISSYSTEM=0 AND FI.ISDENIST=0 AND FI.ISARCHIVE=1 AND FI.IsPasswordprotected=1 AND FI.IsPasswordDecrypted =0)))) '' END Set @v_query=REPLACE(@v_query,''{0}'',@archiveFilterQuery) EXEC sp_executesql @v_query ;WITH CTE AS ( SELECT TagId, ParentTagId FROM #TMP_TagCounts UNION ALL SELECT T.TagId, T.ParentTagId FROM CTE T1, #TMP_AVAILABLETAGS T WHERE T1.ParentTagId=T.TAGID ) INSERT INTO #TMP_TagCounts SELECT 0, T.TagId, T.ParentTagId FROM CTE T LEFT JOIN #TMP_TagCounts TM ON T.TAGID=TM.TAGID WHERE TM.TAGID IS NULL SET @v_query = '' SELECT ID, ParentID, Name, TotalTagCount AS ['' + @columntotalcount + ''], A.TagID, IsGroup, TagGroupID, IsExclusive FROM(SELECT TagGroupName AS ID, '''''''' AS ParentID, TagGroupName AS Name, CAST(1 AS BIT) AS IsGroup, -2 AS TagID, TagGroupID, TAGGROUPID AS IDtoSort, GROUPSORTORDER AS SORTORDER, IsExclusive , 0 AS TotalTagCount FROM #TMP_AVAILABLETAGS T, #TMP_TagCounts TC WHERE T.TagId =TC.TagId UNION SELECT T.TagGroupName+''''.''''+T.TagName AS ID, ISNULL(TP.TagGroupName+''''.''''+TP.TagName, T.TagGroupName) AS ParentID, T.TagName AS Name, CAST(0 AS BIT) AS IsGroup, T.TagID, -1 as TagGroupID, T.TAGID AS IDtoSort, T.TAGSORTORDER AS SORTORDER, T.IsExclusive, TotalTagCount FROM #TMP_AVAILABLETAGS T INNER JOIN #TMP_TagCounts TC ON TC.TagId=T.TagId LEFT JOIN #TMP_AVAILABLETAGS TP ON TC.ParentTagId=TP.TagId UNION SELECT ''''Not Tagged'''' AS ID, '''''''' AS ParentID, ''''Not Tagged'''' AS Name, CAST(0 AS BIT) AS IsGroup, -1 AS TagID, -1 AS TagGroupID, -1 AS IDtoSort, -1 AS SORTORDER, CAST(0 AS BIT) AS IsExclusive , 0 AS TotalTagCount ) A ORDER BY IsGroup DESC,A.SORTORDER,A.IDtoSort '' EXEC sp_executesql @v_query DROP TABLE #TMP_AVAILABLETAGS END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CREATE PROCEDURE [sp_sh_PopulateFolderCount] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_sh_PopulateFolderCount]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sh_PopulateFolderCount]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ================================================ -- THIS PROCEDURE RETURNS THE ORIGINAL AND TOTAL FOLDERS COUNT FOR THE SPECIFIED MEDIA SCOPE --CHANGELOG --1. Abhishek , June 13, 2014 , Added changes for showing the folder count for Folder/reviewset Navigation (internal ticket#1535) --2. Abhishek , July 14, 2014 , Parameters added so that this sp could be called for navigation by folder in web #1937 --3. Abhishek , July 29, 2014 , Modification done For document not restricted user group all folders are restricted #1937 --4. Bhuwan , Sept 23, 2014 , Removed Original File Count #2915 --5. Gaurav, July 26 2017: added include archive option for export --6. Gaurav, August 3 2017: do not filter for archive files --7. Gaurav, August 23 2017: filter archives based on flag in control settings table --8. Sudhir, 19th December 2018, Add option to include archive processing level --9. Puru,Archive handling option made project level so use value of Key ARCHIVE_HANDLING_LEVEL from tbl_pj_ProjectSetting, REDMINE #23479 -- ================================================ CREATE PROCEDURE [dbo].[sp_sh_PopulateFolderCount] @NavigationList NVARCHAR(max), @NavigationBy NVARCHAR(max), @ProjectLandingPage BIT = 0, @ProjectId BIGINT = NULL, @UserId BIGINT = NULL, @includeArchiveFromExport bit =0 AS BEGIN DECLARE @NavigateQuery NVARCHAR(max) DECLARE @GroupRestricted BIT --CL2 DECLARE @SelectStatement NVARCHAR(800) DECLARE @Join NVARCHAR(800) DECLARE @v_query NVARCHAR(max) --CL1 IF (LOWER(@NavigationBy) = ''media'') BEGIN SET @NavigateQuery = '' tbl_ex_fileinfo'' END ELSE IF (LOWER(@NavigationBy) = ''reviewset'') BEGIN SET @NavigateQuery = '' (SELECT F1.fileid,F1.GroupId, F1.isarchive, F1.isdenist, F1.issystem, F1.isduplicate, F1.IsNonProcessed,F1.IsCorrupted, F1.IsPasswordProtected,F1.IsPasswordDecrypted FROM tbl_ex_Fileinfo F1 WITH(NOLOCK), (SELECT Distinct fileid FROM tbl_rev_reviewset WITH (NOLOCK) WHERE ReviewSetId IN ( '' + @NavigationList + '' ))rev WHERE F1.fileid = rev.fileid)'' END ELSE IF (LOWER(@NavigationBy) = ''folder'') BEGIN SET @NavigateQuery = '' (SELECT F1.fileid,F1.GroupId, F1.isarchive, F1.isdenist, F1.issystem, F1.IsNonProcessed, F1.isduplicate, F1.IsCorrupted,F1.IsPasswordProtected,F1.IsPasswordDecrypted FROM tbl_ex_Fileinfo F1 WITH(NOLOCK), (SELECT Distinct fileid FROM tbl_fd_FolderFilesAssociation WITH (NOLOCK) WHERE FolderId IN ('' + @NavigationList + '')) fd WHERE F1.fileid = fd.fileid)'' END IF (@ProjectLandingPage = 1) BEGIN --CL3 SELECT @GroupRestricted = IsDocRestricted FROM tbl_pj_GroupInfo WITH (NOLOCK) WHERE groupid IN ( SELECT GroupId FROM tbl_pj_GroupUserAssociation WHERE UserId = + CAST(@UserId AS VARCHAR) ) IF (@GroupRestricted = 1) SET @SelectStatement = ''A.ProjectName, ISNULL(IsRestricted,0) IsRestricted, '' ELSE SET @SelectStatement = ''A.ProjectName, 1 AS IsRestricted, '' IF (@GroupRestricted = 1) SET @Join = '' LEFT JOIN (SELECT FolderId, 1 as [IsRestricted] FROM tbl_pj_GroupRestrictFolderAssociation b WHERE b.GroupId IN (SELECT GroupId FROM tbl_pj_GroupUserAssociation WHERE UserId='' + CAST(@UserId AS VARCHAR) + '')) m1 ON m1.FolderId = tg.FolderID , tbl_PJ_projectsetup a WHERE A.projectid='' + CAST(@ProjectId AS VARCHAR) ELSE SET @Join = '', tbl_PJ_projectsetup a WHERE A.projectid='' + CAST(@ProjectId AS VARCHAR) END ELSE BEGIN SET @SelectStatement = '''' SET @Join = '' '' END --ChangeLog #4 SET @v_query = '' SELECT '' + @SelectStatement + '' tg.FolderName [FolderName], tg.FolderID as ID, tg.FolderID as FolderID, tg.ParentFolderId as ParentID, isnull(tcount.[Total File count],0) [Total File Count], tg.FolderLineage, tg.AccessType, tg.IsSystemFolder AS SystemFolder FROM ( SELECT Foldername, FolderID, ParentFolderID, FolderLineage, AccessType, CASE WHEN IsSystemFolder = 1 THEN ''''Yes'''' ELSE ''''No'''' END AS IsSystemFolder FROM tbl_fd_FolderHierarchy ) tg LEFT JOIN (SELECT COUNT(*) as [Total File count], ISNULL(t2.FolderID,-1) as FolderId FROM '' + @NavigateQuery + '' t1 LEFT JOIN tbl_fd_FolderFilesAssociation t2 WITH(NOLOCK) ON t1.fileid = t2.fileid WHERE t1.IsSystem=0 and t1.isDeNIST=0 '' IF (@NavigationBy != ''-1'' AND @NavigationBy = ''media'') SET @v_query = @v_query + '' and t1.MediaId in ('' + @NavigationList + '') '' DECLARE @includeArchives INT = 0 SELECT @includeArchives = [Value] FROM tbl_pj_ProjectSetting WITH(NOLOCK) WHERE [Key] = ''ARCHIVE_HANDLING_LEVEL'' IF(@includeArchiveFromExport =1) BEGIN SET @v_query=@v_query END ELSE IF(@includeArchives=0) BEGIN SET @v_query = @v_query + '' AND T1.ISARCHIVE=0 '' END ELSE IF(@includeArchives=2) BEGIN SET @v_query = @v_query + '' AND ( T1.IsArchive=0 OR (T1.GroupId<>-1 AND ((T1.ISSYSTEM=0 AND T1.ISDENIST=0 AND T1.ISARCHIVE=1 AND T1.IsNonProcessed=1) OR (T1.ISSYSTEM=0 AND T1.ISDENIST=0 AND T1.ISARCHIVE=1 AND T1.IsCorrupted=1) OR ( T1.ISSYSTEM=0 AND T1.ISDENIST=0 AND T1.ISARCHIVE=1 AND T1.IsPasswordprotected=1 AND T1.IsPasswordDecrypted =0)))) '' END SET @v_query = @v_query + '' group by t2.FolderID) tcount ON tg.FolderID = tcount.FolderID '' + @Join EXEC sp_executesql @v_query END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------ --CREATE PROCEDURE [sp_ep_PopulateFolderCountForReExport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ep_PopulateFolderCountForReExport]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ep_PopulateFolderCountForReExport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ================================================ -- THIS PROCEDURE RETURNS THE SUBSET COUNT OF ORIGINAL AND TOTAL FOLDER FILE COUNT IN RE-EXPORT -- 1. Gaurav, July 26 2017: added include archive option for export -- 2. Gaurav, August 3 2014: do not filter for archive files -- 3. Sudhir, 19th December 2018, Add option to include archive processing level -- 4.Jasmeen,24-FEB-2020,Redmine 23394, MediaList parameter added -- 5.Puru,Archive handling option made project level so use value of Key ARCHIVE_HANDLING_LEVEL from tbl_pj_ProjectSetting, REDMINE #23479 -- ================================================ CREATE PROCEDURE [dbo].[sp_ep_PopulateFolderCountForReExport] @ExportId bigint, @includeArchiveFromExport bit, @MediaList nvarchar(max)='''' AS BEGIN Declare @MediaListQuery nvarchar(max)='''' if(@MediaList is not null) SET @MediaListQuery='' AND t1.MediaID IN ( '' + @MediaList + '')'' DECLARE @v_query nvarchar(max) SET @v_query = '' SELECT tg.FolderName [FolderName], tg.FolderID as ID, tg.FolderID as FolderID, tg.ParentFolderId as ParentID, ISNULL(tcount.[Original File Count],0) [Original File Count], isnull(tcount.[Total File count],0) [Total File Count], tg.FolderLineage, tg.AccessType, tg.IsSystemFolder FROM ( SELECT Foldername, FolderID, ParentFolderID, FolderLineage, AccessType, IsSystemFolder FROM tbl_fd_FolderHierarchy ) tg LEFT JOIN (SELECT SUM(case t1.IsDuplicate when 0 then 1 else 0 end) [Original File Count], COUNT(*) as [Total File count], ISNULL(t2.FolderID,-1) as FolderId FROM tbl_ex_FileInfo t1 WITH(NOLOCK) inner join (select fileid from tbl_ep_exportdetails with (nolock) where exportid=''+cast(@ExportId as nvarchar)+'')t3 ON t1.FileId=t3.FileId ''+@MediaListQuery+'' LEFT JOIN tbl_fd_FolderFilesAssociation t2 WITH(NOLOCK) ON t1.fileid = t2.fileid WHERE t1.IsSystem=0 and t1.isDeNIST=0 {0} group by t2.FolderID) tcount ON tg.FolderID = tcount.FolderID where tcount.[Total File count]>0'' DECLARE @includeArchives INT = 0 Declare @archiveFilterQuery nvarchar(max) ='''' SELECT @includeArchives = [Value] FROM tbl_pj_ProjectSetting WITH(NOLOCK) WHERE [Key] = ''ARCHIVE_HANDLING_LEVEL'' IF(@includeArchiveFromExport=1) BEGIN SET @archiveFilterQuery = @archiveFilterQuery END ELSE IF(@includeArchives=0) BEGIN SET @archiveFilterQuery = '' AND t1.ISARCHIVE=0 '' END ELSE IF(@includeArchives=2) BEGIN SET @archiveFilterQuery = '' AND ( t1.IsARCHIVE=0 OR (t1.GroupId<>-1 AND ((t1.ISSYSTEM=0 AND t1.ISDENIST=0 AND t1.ISARCHIVE=1 AND t1.IsNonProcessed=1) OR (t1.ISSYSTEM=0 AND t1.ISDENIST=0 AND t1.ISARCHIVE=1 AND t1.IsCorrupted=1) OR ( t1.ISSYSTEM=0 AND t1.ISDENIST=0 AND t1.ISARCHIVE=1 AND t1.IsPasswordprotected=1 AND t1.IsPasswordDecrypted =0)))) '' END Set @v_query=REPLACE(@v_query,''{0}'',@archiveFilterQuery) EXEC sp_executesql @v_query END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ---------------------------------------------------------------------- --CREATE PROCEDURE [SP_TIFF_TIFFSTAUS] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[SP_TIFF_TIFFSTAUS]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_TIFF_TIFFSTAUS]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'/* ============================================= -- Author: -- Create date: <1012 oct 31> -- Description: --ChangeLog -- 1. , <2013 Dec 22> : -- 2. , <2014 Jan 9> : -- 3. , <2014 Jan 9> : -- 4. Bhuwan , 09 Jan 2014 : Remove 2 digits only in ETA Hour -- 5., <28 feb 2014>: Fixing status for older version. As there is no tiff qc job in old project -- 6. Binay , 20 Jan 2014 : Correct eta while requeue -- 7. Bhuwan , 11 Aug 2014 : Set requested user as N/A for autoqueued job with queuedby =-1 -- 8. Deepak, 15 oct 2014 : bug when joining query ticketid #3126 -- 9. deepak , 15 oct 2014 : eta don''t display when progress_eta is null or 0 ticketid #3126 -- 10. Bhuwan , 16 oct 2014 : pending Pre-QC regarded as completed for Jobs created by OCR Generated Tiff ticketid #3152 -- 11. Sujan , 17th November 2014 : Files with status -1 are counted in the not started category -- 12. Santosh, 8th April 2015: Added Status for Job Paused -- 13. RajanM, Used TiffJobId instead of ProjectJobGroupId while considering tiff Pre-QC, ticket #8660 -- 14. Deepak Shrestha, Performance tuning -- 15. Deepak Shrestha, 22 oct 2019, Added canceling and cancelled status -- 16.Deepak, 18 March 2020: Filter media restriction ref#22879 -- =============================================*/ CREATE PROCEDURE [dbo].[SP_TIFF_TIFFSTAUS] @ViewBy NVARCHAR(20), -- BY BATCH OR BY MEDIA @Level NVARCHAR(20), --DETAIL OR MASTER @UserId BIGINT AS BEGIN IF(@ViewBy=''BATCH'') BEGIN IF(@Level=''MASTER'') BEGIN SELECT A.BATCHID, CASE WHEN [PROGRESS] is null or [progress]=0.0 or [progress]=100.0 OR [PROGRESS_ETA] IS NULL OR [PROGRESS_ETA] =0 THEN ''00:00:00'' --log 9 ELSE cast( CAST(((Datediff(ss, PJI.STARTEDON, Getdate()) / [PROGRESS_ETA]) * (100.0-[PROGRESS_ETA]) ) as BIGINT)/3600 AS NVARCHAR)+'':''+ --ChangeLog #4 right(''00'' + cast( CAST(((Datediff(ss, PJI.STARTEDON, Getdate()) / [PROGRESS_ETA]) * (100.0-[PROGRESS_ETA]) ) as BIGINT)%3600/60 AS NVARCHAR), 2)+'':''+ right(''00'' + cast( CAST(((Datediff(ss, PJI.STARTEDON, Getdate()) / [PROGRESS_ETA]) * (100.0-[PROGRESS_ETA]) ) as BIGINT)%60 AS NVARCHAR), 2) END [ETA], isnull(PROGRESS,0) AS PERCENT_, CASE WHEN EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo with (nolock) WHERE JobId = A.BATCHID AND OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'',''bit'') = 1) AND a.[Status] NOT IN (-2,2) THEN ''Paused'' WHEN NOT_PROCESSED = TOTALCOUNT THEN ''Not-Processed'' ELSE CASE WHEN A.Status IN (2,-2) THEN CASE WHEN PREQC_JOB.JobId IS NOT NULL AND EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo WITH (NOLOCK) WHERE JobId = PREQC_JOB.JobId AND OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'',''bit'') = 1) AND PREQC_JOB.[Status] NOT IN (-2,2) THEN ''Tiff Pre-QC Paused'' WHEN PREQC_JOB.JobId IS NOT NULL AND EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo WITH (NOLOCK) WHERE JobId = PREQC_JOB.JobId AND OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'',''bit'') = 1) THEN CASE WHEN (PREQC_JOB.Status = 2 OR PREQC_JOB.Status = -2) THEN ''Tiff Pre-QC Canceled'' ELSE ''Tiff Pre-QC Canceling'' END WHEN PREQC_JOB.Status NOT IN (2,-2) THEN ''Pending Pre-QC'' WHEN EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo with (nolock) WHERE JobId = A.BATCHID AND OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'',''bit'') = 1) THEN ''Canceled'' WHEN A.Status=-2 OR PREQC_JOB.Status = -2 THEN ''Completed with Error'' WHEN PREQC_JOB.Status = 2 AND A.Status= 2 THEN ''Completed'' END ELSE CASE WHEN EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo with (nolock) WHERE JobId = A.BATCHID AND OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'',''bit'') = 1) THEN ''Canceling'' ELSE ''In-progress'' END END END AS TIFFSTATUS, TOTALCOUNT,NOT_PROCESSED,IN_PROGRESS,TIFFED_FILE_COUNT, ERROR_FILE_COUNT,TIFF_QC_COMPLETED,ISNULL(U.FullName,''N/A'') AS TIFF_REQUEST_BY ,TIFF_PAGE_COUNT FROM (SELECT SH.BATCHID, PS.[Status], COUNT(1) AS ''TOTALCOUNT'', --ChangeLog #7 Bhuwan PS.QueuedBy, SUM( CASE WHEN SH.PROCESSINGFLAG = 1 THEN 1 ELSE 0 --ChangeLog #11 END ) ''IN_PROGRESS'', SUM( CASE WHEN (SH.ERRORTYPE IS NULL OR ERRORTYPE=0 ) THEN 0 ELSE 1 END ) ''ERROR_FILE_COUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG=2 AND (SH.ERRORTYPE IS NULL OR SH.ERRORTYPE=0) THEN 1 ELSE 0 END ) ''TIFFED_FILE_COUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG in (0,-1) THEN 1 ELSE 0 END)AS NOT_PROCESSED,--ChangeLog #11 SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END)AS COMPLETED, CAST((ISNULL(SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END), 0)*100.00)/NULLIF(COUNT(*),0) AS DECIMAL(5,2)) [PROGRESS],-- chaneglog #1 SUM(CASE WHEN TP.STATUS IN (2,-2) THEN 1 ELSE 0 END) AS TIFF_QC_COMPLETED, ISNULL(SUM(I1.PAGE_COUNT),0) AS TIFF_PAGE_COUNT FROM TBL_TIFF_SHADOW SH WITH(NOLOCK) INNER JOIN dbo.fn_getAccessibleMediaId(@UserId) M ON SH.MediaId=M.MediaId LEFT JOIN (SELECT COUNT(1) AS PAGE_COUNT,FILEID FROM TBL_TIFF_IMAGES WITH(NOLOCK) GROUP BY fileid)I1 ON I1.FILEID=SH.FILEID LEFT JOIN TBL_JB_TIFFPREQC TP WITH(NOLOCK) ON tp.fileid=sh.fileid, TBL_DS_PROJECTJOBINFO PS WITH(NOLOCK) WHERE SH.BATCHID=PS.JOBID GROUP BY SH.BATCHID,PS.QueuedBy,PS.[Status] ) A INNER JOIN --ChangeLog #10 Bhuwan // Joined on ProjectJobGroupId instead of batchId (SELECT SH.BATCHID,ProjectJobGroupId, CAST((ISNULL(SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END), 0)*100.00)/NULLIF(COUNT(*),0) AS DECIMAL(5,2)) [PROGRESS_ETA], min(PS.STARTEDON) STARTEDON FROM tbl_ds_ProjectJobInfo PS WITH(NOLOCK), TBL_TIFF_SHADOW SH WITH(NOLOCK), dbo.fn_getAccessibleMediaId(@UserId) M WHERE SH.BATCHID=PS.JOBID AND M.MediaId=SH.MediaId AND SH.CREATEDDATE>= PS.QUEUEDON GROUP BY SH.BATCHID,ProjectJobGroupId )PJI ON A.BATCHID=PJI.BATCHID LEFT JOIN tbl_ds_ProjectJobInfo PREQC_JOB WITH(NOLOCK) --log 5 ON PREQC_JOB.Name=''TIFF Pre-QC'' AND PREQC_JOB.OtherSettings.value(''(/OtherSettings/TiffJobId)[1]'',''Bigint'') = PJI.BatchId LEFT JOIN tbl_pj_userinfo U WITH(NOLOCK) ON U.UserId=A.QueuedBy END ELSE BEGIN SELECT BATCHID,[MEDIANAME],MEDIAID,CUSTODIANNAME, CASE WHEN COMPLETED=TOTALCOUNT AND (TIFF_QC_COMPLETED=TIFFED_FILE_COUNT OR PreqcStatus IN (2,-2) OR PreqcStatus IS NULL) THEN ''Completed'' --log 5 ELSE ''Incomplete'' END AS TIFFSTATUS, TOTALCOUNT,NOT_PROCESSED,IN_PROGRESS,TIFFED_FILE_COUNT, ERROR_FILE_COUNT,A.[STATUS],TIFF_QC_COMPLETED,TIFF_PAGE_COUNT FROM --ChangeLog #10 Bhuwan // Joined on ProjectJobGroupId instead of batchId (SELECT SH.BATCHID, (SELECT TOP 1 [MEDIANAME] FROM TBL_EX_MEDIA WITH(NOLOCK) WHERE MEDIAID=SH.MEDIAID) AS [MEDIANAME], SH.MEDIAID, (SELECT TOP 1 CUSTODIANNAME FROM TBL_Ex_CUSTODIAN WITH(NOLOCK) WHERE CUSTODIANID=SH.CUSTODIANID) AS CUSTODIANNAME, COUNT(1) AS ''TOTALCOUNT'', SUM(CASE WHEN SH.PROCESSINGFLAG = 1 THEN 1 ELSE 0 END ) ''IN_PROGRESS'', --ChangeLog #11 SUM( CASE WHEN (SH.ERRORTYPE IS NULL OR ERRORTYPE=0 ) THEN 0 ELSE 1 END ) ''ERROR_FILE_COUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG=2 AND (SH.ERRORTYPE IS NULL OR SH.ERRORTYPE=0) THEN 1 ELSE 0 END ) ''TIFFED_FILE_COUNT'', PS.[STATUS], SUM( CASE WHEN SH.PROCESSINGFLAG in (0,-1) THEN 1 ELSE 0 END)AS NOT_PROCESSED,--ChangeLog #11 SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END)AS COMPLETED, SUM(CASE WHEN TP.STATUS IN (2,-2) THEN 1 ELSE 0 END) AS TIFF_QC_COMPLETED, ISNULL(SUM(I1.PAGE_COUNT),0) AS TIFF_PAGE_COUNT , MIN(CASE WHEN TP.Status =-2 THEN 2 WHEN TP.Status=-1 THEN 1 ELSE TP.Status END) AS PreqcStatus FROM TBL_TIFF_SHADOW SH WITH(NOLOCK) INNER JOIN dbo.fn_getAccessibleMediaId(@UserId) M ON SH.MediaId=M.MediaId LEFT JOIN (SELECT COUNT(FILEID) AS PAGE_COUNT,FILEID FROM TBL_TIFF_IMAGES WITH(NOLOCK) group by fileid)I1 ON I1.FILEID=SH.FILEID LEFT JOIN TBL_DS_PROJECTJOBINFO PJ WITH(NOLOCK) ON SH.BATCHID=PJ.jobid LEFT JOIN TBL_JB_TIFFPREQC TP WITH(NOLOCK) ON tp.fileid=sh.fileid, TBL_DS_PROJECTJOBINFO PS WITH(NOLOCK) WHERE SH.BATCHID=PS.JOBID GROUP BY SH.BATCHID, PS.ProjectJobGroupId, PS.[STATUS],SH.CustodianId,SH.MEDIAID )A ORDER BY Batchid,CUSTODIANNAME,[MEDIANAME] END END ELSE BEGIN IF(@Level=''MASTER'') BEGIN SELECT CUSTODIANNAME, [MEDIANAME], MEDIAID, CASE WHEN COMPLETED =TOTALCOUNT AND (TOTALCOUNT=TIFF_QC_COMPLETED_FOR_INERNAL_CALCULATION OR A.[statusPreQC] IN (2,-2) OR A.statusPreQC IS NULL) THEN ''Completed'' --log 5 ELSE ''Incomplete'' END AS TIFFSTATUS, CASE WHEN COMPLETED=TOTALCOUNT THEN 1 ELSE 0 END AS TIFF_STATUS_VAL, TOTALCOUNT,NOT_PROCESSED,IN_PROGRESS,TIFFED_FILE_COUNT,ERROR_FILE_COUNT,TIFF_QC_COMPLETED,TIFF_PAGE_COUNT FROM (SELECT (SELECT TOP 1 CustodianName FROM tbl_ex_Custodian WITH(NOLOCK) WHERE CustodianId= SH.CustodianId) AS CUSTODIANNAME, (SELECT TOP 1 MediaName FROM tbl_ex_Media WITH(NOLOCK) WHERE MediaId=SH.MEDIAID) AS [MEDIANAME], SH.MEDIAID, COUNT(1) AS ''TOTALCOUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG = 1 THEN 1 ELSE 0 --ChangeLog #11 END ) ''IN_PROGRESS'', SUM( CASE WHEN (SH.ERRORTYPE IS NULL OR SH.ERRORTYPE=0 ) THEN 0 ELSE 1 END ) ''ERROR_FILE_COUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG IN (0,-1) THEN 1 ELSE 0 --ChangeLog #11 END ) ''NOT_PROCESSED'', SUM( CASE WHEN SH.PROCESSINGFLAG=2 AND (SH.ERRORTYPE IS NULL OR SH.ERRORTYPE=0) THEN 1 ELSE 0 END ) ''TIFFED_FILE_COUNT'', MIN(CASE WHEN PREQC_JOB.Status =-2 THEN 2 WHEN PREQC_JOB.Status=-1 THEN 1 ELSE PREQC_JOB.Status END) AS [statusPreQC], SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END)AS COMPLETED, SUM(CASE WHEN TP.STATUS IN (2,-2) THEN 1 ELSE 0 END) AS TIFF_QC_COMPLETED, SUM(CASE WHEN PREQC_JOB.JobId IS NULL THEN CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END ELSE CASE WHEN TP.STATUS IN (2,-2) OR SH.ERRORTYPE IS NOT NULL THEN 1 ELSE 0 END END) AS TIFF_QC_COMPLETED_FOR_INERNAL_CALCULATION, --log 5 ISNULL(SUM(I1.PAGE_COUNT),0) AS TIFF_PAGE_COUNT FROM TBL_TIFF_SHADOW SH WITH(NOLOCK) INNER JOIN dbo.fn_getAccessibleMediaId(@UserId) M ON SH.MediaId=M.MediaId LEFT JOIN (SELECT COUNT(FileId) AS PAGE_COUNT,FileId FROM Tbl_tiff_Images WITH(NOLOCK) GROUP BY FileId)I1 ON I1.FILEID=SH.FILEID LEFT JOIN TBL_DS_PROJECTJOBINFO PJ WITH(NOLOCK) ON SH.BATCHID=PJ.jobid LEFT JOIN TBL_JB_TIFFPREQC TP WITH(NOLOCK) ON tp.fileid=sh.fileid , TBL_DS_PROJECTJOBINFO PS WITH(NOLOCK) LEFT JOIN tbl_ds_ProjectJobInfo PREQC_JOB WITH(NOLOCK) ON PREQC_JOB.Name=''TIFF Pre-QC'' AND PREQC_JOB.OtherSettings.value(''(/OtherSettings/TiffJobId)[1]'',''Bigint'') = ISNULL(PS.JobId,PS.ProjectJobGroupId) WHERE SH.BATCHID=PS.JOBID --AND PREQC_JOB.JobId IS NOT NULL GROUP BY SH.CustodianId,SH.MEDIAID )A ORDER BY CUSTODIANNAME END ELSE BEGIN SELECT A.BATCHID,A.[MEDIANAME],A.MEDIAID, CASE WHEN [PROGRESS] is null or [progress]=0.0 or [progress]=100.0 OR [PROGRESS_ETA] IS NULL THEN ''00:00:00'' --log 9 ELSE cast( CAST(((Datediff(ss, PJI.STARTEDON, Getdate()) / [PROGRESS_ETA]) * (100.0-[PROGRESS_ETA]) ) as BIGINT)/3600 AS NVARCHAR)+'':''+ --ChangeLog #4 right(''00'' + cast( CAST(((Datediff(ss, PJI.STARTEDON, Getdate()) / [PROGRESS_ETA]) * (100.0-[PROGRESS_ETA]) ) as BIGINT)%3600/60 AS NVARCHAR), 2)+'':''+ right(''00'' + cast( CAST(((Datediff(ss, PJI.STARTEDON, Getdate()) / [PROGRESS_ETA]) * (100.0-[PROGRESS_ETA]) ) as BIGINT)%60 AS NVARCHAR), 2) END [ETA], isnull(PROGRESS,0) AS PERCENT_, CASE WHEN IsJobPaused = 1 AND A.[TIFF_STATUS_VAL] NOT IN (-2,2) THEN ''Paused'' WHEN NOT_PROCESSED= TOTALCOUNT THEN ''Not-Processed'' ELSE CASE WHEN A.TIFF_STATUS_VAL IN (2,-2) THEN CASE WHEN PREQC_JOB.JobId IS NOT NULL AND ISNULL(PREQC_JOB.OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'',''bit''),0) = 1 AND PREQC_JOB.[Status] NOT IN (-2,2) THEN ''Tiff Pre-QC Paused'' WHEN PREQC_JOB.JobId IS NOT NULL AND EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo WITH (NOLOCK) WHERE JobId = PREQC_JOB.JobId AND OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'',''bit'') = 1) THEN CASE WHEN (PREQC_JOB.Status = 2 OR PREQC_JOB.Status = -2) THEN ''Tiff Pre-QC Canceled'' WHEN TIFF_QC_COMPLETED!=TIFFED_FILE_COUNT OR PREQC_JOB.Status NOT IN(2,-2) THEN ''Tiff Pre-QC Canceling'' END WHEN (TIFF_STATUS_VAL =-2 AND (PREQC_JOB.Status =2 OR PREQC_JOB.Status IS NULL OR TIFF_QC_COMPLETED=TIFFED_FILE_COUNT)) OR (TIFF_STATUS_VAL =2 AND PREQC_JOB.Status =-2) THEN ''Completed with Error'' WHEN ((TIFF_STATUS_VAL =2) AND (PREQC_JOB.Status =2 OR PREQC_JOB.Status IS NULL OR TIFF_QC_COMPLETED=TIFFED_FILE_COUNT )) THEN ''Completed'' WHEN TIFF_QC_COMPLETED!=TIFFED_FILE_COUNT OR PREQC_JOB.Status NOT IN(2,-2) THEN ''Pending Pre-QC'' WHEN EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo with (nolock) WHERE JobId = A.BATCHID AND OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'',''bit'') = 1) THEN ''Canceled'' END ELSE CASE WHEN EXISTS(SELECT top 1 1 FROM tbl_ds_ProjectJobInfo with (nolock) WHERE JobId = A.BATCHID AND OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'',''bit'') = 1) THEN ''Canceling'' ELSE ''In-progress'' END END END AS TIFFSTATUS, TOTALCOUNT,NOT_PROCESSED,IN_PROGRESS,TIFFED_FILE_COUNT, ERROR_FILE_COUNT,TIFF_QC_COMPLETED,ISNULL(U.FullName,''N/A'') AS TIFF_REQUEST_BY , TIFF_PAGE_COUNT FROM (SELECT SH.BATCHID, (SELECT TOP 1 [MEDIANAME] FROM tbl_ex_Media WITH(NOLOCK) WHERE MediaId=SH.MediaId) AS [MEDIANAME],SH.MediaId, ISNULL((SELECT top 1 OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'',''bit'') FROM tbl_ds_ProjectJobInfo WITH (NOLOCK) WHERE JobId = SH.BatchId),0) AS [IsJobPaused], COUNT(1) AS ''TOTALCOUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG = 1 THEN 1 ELSE 0 --ChangeLog #11 END ) ''IN_PROGRESS'', SUM( CASE WHEN SH.PROCESSINGFLAG IN (0,-1) THEN 1 ELSE 0 --ChangeLog #11 END ) ''NOT_PROCESSED'', SUM( CASE WHEN (SH.ERRORTYPE IS NULL OR SH.ERRORTYPE=0 ) THEN 0 ELSE 1 END ) ''ERROR_FILE_COUNT'', SUM( CASE WHEN SH.PROCESSINGFLAG=2 AND (SH.ERRORTYPE IS NULL OR SH.ERRORTYPE=0) THEN 1 ELSE 0 END ) ''TIFFED_FILE_COUNT'', PS.[STATUS] AS ''TIFF_STATUS_VAL'', ISNULL( SUM(SH.TotalPageCount),0) AS ''TOTAL_PAGE_COUNT'', SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END)AS COMPLETED, CAST((ISNULL(SUM(CASE WHEN SH.PROCESSINGFLAG =2 THEN 1 ELSE 0 END), 0)*100.00)/NULLIF(COUNT(*),0) AS DECIMAL(5,2)) [PROGRESS],-- chaneglog #1 SUM(CASE WHEN TP.STATUS IN (2,-2) THEN 1 ELSE 0 END) AS TIFF_QC_COMPLETED, ISNULL(SUM(I1.PAGE_COUNT),0) AS TIFF_PAGE_COUNT, PS.QueuedBy FROM TBL_TIFF_SHADOW SH WITH(NOLOCK) INNER JOIN dbo.fn_getAccessibleMediaId(@UserId) M ON SH.MediaId=M.MediaId INNER JOIN TBL_DS_PROJECTJOBINFO PS WITH(NOLOCK) ON SH.BATCHID=PS.JOBID LEFT JOIN (SELECT COUNT(FILEID) AS PAGE_COUNT,FILEID FROM TBL_TIFF_IMAGES WITH(NOLOCK) group by fileid)I1 ON I1.FILEID=SH.FILEID LEFT JOIN TBL_DS_PROJECTJOBINFO PJ WITH(NOLOCK) ON SH.BATCHID=PJ.jobid LEFT JOIN TBL_JB_TIFFPREQC TP WITH(NOLOCK) ON tp.fileid=sh.fileid GROUP BY SH.BATCHID,SH.MEDIAID,PS.STATUS, PS.QueuedBy )A --log 8 LEFT JOIN (SELECT SH.batchid,ProjectJobGroupId, MD.mediaid, NULLIF( Cast(( Isnull(Sum(CASE WHEN SH.processingflag = 2 THEN 1 ELSE 0 END), 0) * 100.00 ) / NULLIF(Count(*), 0) AS DECIMAL(5, 2)),0) [PROGRESS_ETA], MIN(PS.STARTEDON) STARTEDON FROM tbl_ds_projectjobinfo PS WITH(nolock), tbl_ex_media MD WITH(nolock), TBL_TIFF_SHADOW SH WITH(nolock) WHERE SH.batchid = PS.jobid AND MD.mediaid = SH.mediaid AND SH.CREATEDDATE>= PS.QUEUEDON GROUP BY SH.batchid,MD.mediaid , ProjectJobGroupId )PJI ON A.BATCHID=PJI.batchid and A.mediaid=PJI.mediaid LEFT JOIN tbl_ds_ProjectJobInfo PREQC_JOB WITH(NOLOCK) --log 5 --ChangeLog #10 Bhuwan // Joined on ProjectJobGroupId instead of batchId ON PREQC_JOB.Name=''TIFF Pre-QC'' AND PREQC_JOB.OtherSettings.value(''(/OtherSettings/TiffJobId)[1]'',''Bigint'') = PJI.BatchId LEFT JOIN tbl_pj_UserInfo U WITH(NOLOCK) ON U.UserId=A.QueuedBy END END END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------ --CREATE PROCEDURE [sp_rep_AttachmentEmailMissingReport] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_rep_AttachmentEmailMissingReport]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rep_AttachmentEmailMissingReport]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*-------------------------------------------------------------------- -- CREATED BY : Sajjan Dahal -- CREATED ON : 28 Aug 2012 -- Query moved to backend --CL1. Abhishek , July 18, 2014 , Added ispasswordprotectedfilter (Redmine ticket Bug #2234) --CL2. SumanK , Feb 5, 2016 , Warning Log table is used to retrieve child missing count files. --CL3. Deepak Shrestha, Feb 10, 2016 , change in creating @v_WhereClause. -- Puru, REDMINE 22877,22878 Media restriction report changes -----------------------------------------------------------------------*/ CREATE PROCEDURE [dbo].[sp_rep_AttachmentEmailMissingReport] ( @TYPE nvarchar(200), @ISARCHIVE bit, @ISEMAIL bit, @ISEDOCS bit, @AvailableMedia NVARCHAR(MAX), @UserId BIGINT ) AS BEGIN DECLARE @v_WhereClause NVARCHAR(MAX) DECLARE @Query NVARCHAR(MAX) if(@AvailableMedia IS NULL) EXEC sp_GetAvailableMedia @UserId, @AvailableMedia OUTPUT --CL 1 SET @v_WhereClause=''WHERE (ispasswordprotected =0 OR IsPasswordDecrypted=1) AND IsSystem = 0 AND IsDenist=0'' --Added IsDenist=0 to filter out denist file, #6065 IF(@ISARCHIVE=0) BEGIN SET @v_WhereClause = @v_WhereClause+'' AND ISARCHIVE = 0'' END IF(@ISEMAIL=0) BEGIN SET @v_WhereClause = @v_WhereClause+'' AND ISEMAIL = 0'' END IF(@ISEDOCS = 0) BEGIN SET @v_WhereClause = @v_WhereClause+'' AND ISEDOCS = 0'' END IF(@TYPE=''missing_child_count_detail'') BEGIN SELECT @Query = N'' SELECT T1.FILEID, T1.ORIGINALFILEPATH FILEPATH, (SELECT CUSTODIANNAME FROM TBL_EX_CUSTODIAN WHERE CUSTODIANID = T1.CUSTODIANID) AS CUSTODIANNAME, (SELECT MEDIANAME FROM TBL_EX_MEDIA WHERE MEDIAID = T1.MEDIAID) AS MEDIANAME, CAST( ISNULL((T1.CHILDCOUNT - ISNULL(T2.CHILDCOUNT , 0)),0) AS NVARCHAR) AS MISSING FROM ( SELECT FI.FILEID, FI.CUSTODIANID, FI.MEDIAID, ORIGINALFILEPATH, CHILDCOUNT, ISEMAIL, ISARCHIVE FROM TBL_EX_FILEINFO FI, tbl_ig_WarningLog WL '' + @v_WhereClause +'' AND FI.FileId=WL.FileId AND WL.Type=''''CHILD_MISSING'''' )T1 LEFT JOIN ( SELECT A.PARENTFILEID,COUNT(*) CHILDCOUNT FROM ( SELECT PARENTFILEID FROM TBL_EX_FILEINFO UNION ALL SELECT FILEINFOPARENTFILEID PARENTFILEID FROM TBL_EX_FILTEREDDOCS ) A GROUP BY A.PARENTFILEID ) T2 ON T1.FILEID = T2.PARENTFILEID WHERE T1.CHILDCOUNT > ISNULL(T2.CHILDCOUNT , 0) AND T1.MediaID IN (''+@AvailableMedia+'')'' END ELSE IF(@TYPE=''missing_child_count_summary'') BEGIN SELECT @Query=N'' SELECT C.CUSTODIANNAME, M.MEDIANAME, MD.FILECOUNT, MD.MISSINGCOUNT FROM ( SELECT T1.MEDIAID, ISNULL(COUNT(T1.FILEID),0) FILECOUNT, ISNULL(SUM(T1.CHILDCOUNT - ISNULL(T2.CHILDCOUNT, 0)), 0) MISSINGCOUNT FROM ( SELECT FI.FILEID, WL.MEDIAID, FI.CHILDCOUNT FROM TBL_EX_FILEINFO FI, tbl_ig_WarningLog WL '' + @v_WhereClause +'' AND FI.FileId=WL.FileId AND WL.Type=''''CHILD_MISSING'''' )T1 LEFT JOIN ( SELECT A.PARENTFILEID, COUNT(*) CHILDCOUNT FROM ( SELECT PARENTFILEID FROM TBL_EX_FILEINFO UNION ALL SELECT FILEINFOPARENTFILEID PARENTFILEID FROM TBL_EX_FILTEREDDOCS ) A GROUP BY A.PARENTFILEID ) T2 ON T1.FILEID = T2.PARENTFILEID WHERE T1.CHILDCOUNT > ISNULL(T2.CHILDCOUNT, 0) GROUP BY T1.MEDIAID ) MD, TBL_EX_MEDIA M, TBL_EX_CUSTODIAN C WHERE MD.MEDIAID = M.MEDIAID AND M.CUSTODIANID = C.CUSTODIANID AND M.MediaID IN (''+@AvailableMedia+'') '' END EXEC SP_EXECUTESQL @Query END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------ --CREATE PROCEDURE [sp_rep_Warning] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_rep_Warning]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_rep_Warning]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /*================================================= -- CREATED BY : Sajjan Dahal -- CREATED ON: 20 Nov 2012 -- Change Log -- 1. Bishal,Dec 18 2013 : Duplicate documents are also included in warning log counts. -- 2. , <2014 FEB 28> : -- 3. Count was incorrect in the case of multiple warning for a single file. -- 4. Grouping Result of warning reports by custodian and media -- 5. Review OCR text document - View warning count, report count, search result count -- 6. Remove double entry from exception report -- 7. bug in where clause. --=================================================*/ CREATE PROCEDURE [dbo].[sp_rep_Warning] ( @TYPE VARCHAR(200), @DOCTYPE varchar(200), @AvailableMediaId NVARCHAR(MAX), @IsArchive bit, @IsEmail bit, @IsEDocs bit, @IsNonProcessedZeroByte bit =0, @IsNonProcessedUnknown bit= 0, @IsNonProcessedUnSupported bit= 0, @IsNonProcessedProcessingError bit= 0 ) AS BEGIN DECLARE @Query NVARCHAR(MAX) DECLARE @WhereClause NVARCHAR(MAX)=N'''' IF(@IsArchive = 0) SET @WhereClause = N'' AND FI.ISARCHIVE = 0'' IF(@IsEmail = 0) SET @WhereClause = @WhereClause + N'' AND FI.ISEMAIL = 0'' IF(@IsEDocs = 0) SET @WhereClause = @WhereClause + N'' AND FI.ISEDOCS = 0'' IF(@DOCTYPE = ''EDOCS_ARCHIVE_EMAIL'') BEGIN SELECT @Query = N'' SELECT WL.FileID, FI.FILENAME, WL.Message AS Description FROM tbl_ig_WarningLog WL WITH (NOLOCK), tbl_ex_Fileinfo FI WITH(NOLOCK) WHERE WL.MediaID IN ('' + @AvailableMediaId + '') AND WL.TYPE='''''' + @TYPE + '''''' AND FI.FILEID = WL.FILEID AND FI.ISDUPLICATE = 0 AND FI.ISSYSTEM = 0 AND FI.ISDENIST = 0 '' SET @Query = @Query + @WhereClause EXEC sp_executesql @Query END IF(@DOCTYPE = ''EDOCS_ARCHIVE_EMAIL_FC_FAIL'') BEGIN SELECT @Query = N'' SELECT WL.CustodianId , C.CustodianName , WL.MediaId , M.MediaName , WL.FileID , FI.FileName , WL.Message AS Description FROM tbl_ig_WarningLog WL WITH (NOLOCK) , tbl_ex_Fileinfo FI WITH(NOLOCK) , tbl_ex_Custodian C WITH(NOLOCK) , tbl_ex_Media M WITH(NOLOCK) WHERE WL.MediaID IN ('' + @AvailableMediaId + '') AND WL.TYPE='''''' + @TYPE + '''''' AND FI.FILEID = WL.FILEID AND WL.MediaId = M.MediaId AND WL.CustodianId = C.CustodianId AND FI.ISSYSTEM = 0 AND FI.ISDENIST = 0 '' SET @Query = @Query + @WhereClause EXEC sp_executesql @Query END ELSE IF (@DOCTYPE=''COUNTS'') BEGIN --LogId=3 SELECT @Query=N'' SELECT COUNT(WarningType) as [Count], WarningType FROM( SELECT WL.type as WarningType, FI.FILEID FROM tbl_ig_WarningLog WL WITH(NOLOCK), tbl_ex_FileInfo FI WITH(NOLOCK) WHERE WL.FileID=FI.FileID AND FI.MediaID IN (''+@AvailableMediaId+'') AND FI.IsSystem=0 AND FI.IsDenist=0 GROUP BY WL.type, FI.FILEID )A GROUP BY WarningType '' EXEC sp_executesql @Query END ELSE IF (@DOCTYPE=''COUNTS_FC_FAIL'') BEGIN SELECT @Query=N'' SELECT WL.type as WarningType, count(WL.Type) as [Count] FROM tbl_ig_WarningLog WL WITH(NOLOCK), tbl_ex_FileInfo FI WITH(NOLOCK) WHERE WL.FileID=FI.FileID AND FI.MediaID IN (''+@AvailableMediaId+'') AND FI.IsSystem=0 AND FI.IsDenist=0 AND WL.Type=''''FILE_COPY_FAILED'''' GROUP BY WL.type '' EXEC sp_executesql @Query END --changelog 5 added isindexed =1 to remove non indexable file count from apprearing in the UI ELSE IF (@DOCTYPE=''OCRCOUNT'') BEGIN declare @OCRCount bigint SET @Query = ''select @OCRCount= count(1) from tbl_ocr_shadow with (nolock) where processingflag!=2 and mediaID IN (''+@AvailableMediaId+'')''; exec sp_executesql @Query,N''@OCRCount bigint OUTPUT'',@OCRCount = @OCRCount OUTPUT if (@OCRCount =0) BEGIN SET @Query=N''select @OCRCount=(OCRed - OCRIndexed) from ( select count(*) as OCRed from tbl_ocr_shadow F1 with (nolock), tbl_Ex_Fileinfo F2 WITH(NOLOCK) where F1.fileid = f2.fileid AND isindexed =1 AND F1.mediaid in (''+@AvailableMediaId+'') AND (ErrorType=0 or ErrorType is null) ) A, ( SELECT COUNT(*) OCRIndexed from (SELECT fileID from tbl_ex_indexstatuslog WITH (NOLOCK) where mediaid in (''+@AvailableMediaId+'')) ifid, (SELECT fileID from tbl_ocr_shadow WITH (NOLOCK) where mediaid in (''+@AvailableMediaId+'') AND (ErrorType=0 or ErrorType is null)) ofid WHERE ifid.fileid=ofid.fileid ) B'' exec sp_executesql @Query,N''@OCRCount bigint OUTPUT'',@OCRCount = @OCRCount OUTPUT END SELECT @OCRCount as OCRCount END ELSE IF (@DOCTYPE=''NON_PROCESSED'') --ChangeLog:2 --changelog 6 added filter by message in where clause as well for unknown and unsupported files Ticket#6050 BEGIN SELECT @Query = N'' SELECT C.CustodianId ,C.CustodianName ,M.MediaId ,M.MediaName ,WL.FileID ,FI.FileName ,WL.Message AS Description, CASE WHEN FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND FI.IsZeroByte = 1 THEN ''''Zero Byte Files'''' WHEN FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND ISNULL(FI.IsZeroByte,0)=0 AND FI.IsUnknownFile = 1 THEN ''''Unknown Files'''' WHEN FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND ISNULL(FI.IsZeroByte,0)=0 AND ISNULL(FI.IsUnknownFile,0)=0 AND FI.IsUnSupportedFileType = 1 THEN ''''Unsupported File'''' WHEN FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND ISNULL(FI.IsZeroByte,0)=0 AND ISNULL(FI.IsUnknownFile,0)=0 AND ISNULL(FI.IsUnSupportedFileType,0)=0 AND FI.IsProcessingError = 1 THEN ''''Processing Error Files'''' ELSE '''''''' END AS [Type_] FROM tbl_ig_WarningLog WL WITH (NOLOCK) ,tbl_ex_Fileinfo FI WITH(NOLOCK) ,tbl_ex_media M WITH(NOLOCK) , tbl_ex_Custodian C WITH(NOLOCK) WHERE WL.MediaID IN ('' + @AvailableMediaId + N'') AND WL.TYPE=''''NOT_PROCESSED'''' AND FI.FILEID = WL.FILEID AND WL.MediaId = M.MediaId AND WL.CustodianId = C.CustodianId AND FI.ISSYSTEM = 0 AND FI.ISDENIST = 0 '' --CONCATENATE NON PROCESSED FILE DECLARE @v_WhereClause NVARCHAR(MAX) ='''' IF(@IsNonProcessedZeroByte = 1) BEGIN SET @v_WhereClause = N'' (FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND FI.IsZeroByte = 1 AND WL.Message LIKE ''''%could not be processed.Zero byte file.'''')'' --LogId=3 END IF(@IsNonProcessedUnknown = 1) BEGIN IF(LEN(@v_WhereClause)>0) BEGIN SET @v_WhereClause = @v_WhereClause + N'' OR '' END SET @v_WhereClause = @v_WhereClause+N'' (FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND ISNULL(FI.IsZeroByte,0)=0 AND FI.IsUnknownFile = 1 AND WL.Message LIKE ''''%Unknown file%'''')'' END IF(@IsNonProcessedUnSupported = 1) BEGIN IF(LEN(@v_WhereClause)>0) BEGIN SET @v_WhereClause = @v_WhereClause + N'' OR '' END SET @v_WhereClause = @v_WhereClause+N'' (FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND ISNULL(FI.IsZeroByte,0)=0 AND ISNULL(FI.IsUnknownFile,0)=0 AND FI.IsUnSupportedFileType = 1 AND WL.Message LIKE ''''%Unsupported file%'''')'' END IF(@IsNonProcessedProcessingError = 1) BEGIN IF(LEN(@v_WhereClause)>0) BEGIN SET @v_WhereClause = @v_WhereClause + N'' OR '' END SET @v_WhereClause = @v_WhereClause+N'' (FI.ISPASSWORDPROTECTED = 0 AND FI.ISCORRUPTED = 0 AND ISNULL(FI.IsZeroByte,0)=0 AND ISNULL(FI.IsUnknownFile,0)=0 AND ISNULL(FI.IsUnSupportedFileType,0)=0 AND FI.IsProcessingError = 1)'' END SET @Query = @Query + @WhereClause IF(LEN(@v_WhereClause)>0) SET @Query = @Query +N'' AND (''+ @v_WhereClause+N'')'' EXEC sp_executesql @Query END END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------ --CREATE PROCEDURE [sp_sh_ComputeSearchResult] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_sh_ComputeSearchResult]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sh_ComputeSearchResult]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Bipin Baglung -- Create date: August 07, 2017 -- Description: This procedure compute the search hits based on the deduplication/include PC options and stores to given table -- ============================================= CREATE PROCEDURE [dbo].[sp_sh_ComputeSearchResult] @p_GUID nvarchar(2000) = NULL, @p_mediaList nvarchar(max), @p_includeParentChild BIT, @p_searchDuplicateOption int, @p_currentResultTempName nvarchar(1000), @p_finalResultTempName nvarchar(1000), @p_NavigationBy Nvarchar(100) = NULL, @p_NavigationList Nvarchar(100) = NULL, @p_totalHitCount BIGINT OUTPUT, @p_status VARCHAR(8000) OUTPUT AS BEGIN SET @p_totalhitcount = 0 DECLARE @v_temp_table_name NVARCHAR(max) DECLARE @v_removeddups NVARCHAR(max) DECLARE @v_query NVARCHAR(MAX) if (@p_GUID IS null) SET @p_GUID = '''' DECLARE @p_sessionid varchar(200) SET @p_sessionid = cast(@@spid AS VARCHAR(100)) SET @v_temp_table_name = ''##tmp_search_results_'' + @p_GUID + @p_sessionid SET @v_query = ''IF EXISTS (SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @v_temp_table_name + '''''') DROP TABLE '' + @v_temp_table_name EXEC sp_executesql @v_query SET @v_query = '' CREATE TABLE '' + @v_temp_table_name + '' ( seq_no BIGINT IDENTITY(1,1), fileid BIGINT PRIMARY KEY, isparent bit, groupid bigint )'' EXEC sp_executesql @v_query SET @v_removeddups = ''##tmp_computed_search_'' + @p_GUID + @p_sessionid SET @v_query = ''IF EXISTS (SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @v_removeddups + '''''') DROP TABLE '' + @v_removeddups EXEC sp_executesql @v_query SET @v_query = '' CREATE TABLE '' + @v_removeddups + '' ( fileid BIGINT , isparent bit, groupid bigint, custodianid bigint, mediaid bigint, Score float, Termid int, PRIMARY KEY(fileid, termid) WITH (IGNORE_DUP_KEY = ON) )'' EXEC sp_executesql @v_query BEGIN TRY DECLARE @cl_query NVARCHAR(2000) BEGIN --FOR "Show only one instance in the selected scope (DynamicDeDupe™) / HIDE_ALL_DUPS_DYNAMIC" IF (@p_searchduplicateoption = 0) BEGIN BEGIN TRY SELECT @cl_query = ''CREATE NONCLUSTERED INDEX idx_2_'' + @p_currentResultTempName + '' ON '' + @p_currentResultTempName + ''(filterid, hashvalue, isparent)'' EXEC sp_executesql @cl_query END TRY BEGIN CATCH END CATCH SET @v_query = ''INSERT INTO '' + @v_removeddups + '' select T1.fileid,T1.isparent, T1.groupid,T1.custodianid, T1.mediaid, score, termid FROM '' + @p_currentResultTempName + '' T1, (SELECT fileid FROM (SELECT fileid, ROW_NUMBER() OVER (partition by filterid, hashvalue, isparent order by groupid, fileid) rn FROM '' + @p_currentResultTempName + '' with (NOLOCK,index(idx_2_'' + @p_currentResultTempName + '')) WHERE ISNULL(HASHVALUE,'''''''') <> '''''''')r WHERE rn=1)t2 WHERE t1.fileid = t2.fileid UNION ALL select fileid,isparent, groupid,custodianid, mediaid, score, termid FROM '' + @p_currentResultTempName + '' where ISNULL(HASHVALUE,'''''''') = '''''''''' EXEC sp_executesql @v_query SET @v_query = ''INSERT INTO '' + @v_removeddups + '' select f2.fileid,f2.isparent, f2.groupid,f2.custodianid, f2.mediaid, score, termid FROM (SELECT k1.fileid, k1.isparent, k1.groupid, k1.custodianid, k1.mediaid, k2.hashvalue FROM '' + @v_removeddups + '' k1, '' + @p_currentResultTempName + '' k2 where k1.fileid = k2.fileid) f1, '' + @p_currentResultTempName + '' f2 WHERE f2.groupid = f1.groupid AND f1.groupid <>-1 AND f1.hashvalue = f2.hashvalue AND f1.isparent = f2.isparent AND NOT EXISTS (SELECT fileid from '' + @v_removeddups + '' where fileid = f2.fileid)'' EXEC sp_executesql @v_query END --FOR "Show only one instance per custodian in the selected scope (DynamicDeDupe™) / HIDE_CUSTODIAN_LEVEL_DUPS_DYNAMIC" IF (@p_searchduplicateoption = 2) BEGIN BEGIN TRY SELECT @cl_query = ''CREATE NONCLUSTERED INDEX idx_2_'' + @p_currentResultTempName + '' ON '' + @p_currentResultTempName + ''(filterid, hashvalue, isparent)'' EXEC sp_executesql @cl_query END TRY BEGIN CATCH END CATCH SET @v_query = ''INSERT INTO '' + @v_removeddups + '' select T1.fileid,T1.isparent, T1.groupid,T1.custodianid, T1.mediaid, score, termid FROM '' + @p_currentResultTempName + '' T1, (SELECT fileid from (SELECT fileid, ROW_NUMBER() OVER (partition by filterid,hashvalue, isparent, CUSTODIANID order by groupid,fileid) rn FROM '' + @p_currentResultTempName + '' with (NOLOCK,index(idx_2_'' + @p_currentResultTempName + '')) WHERE ISNULL(HASHVALUE,'''''''') <> '''''''')r WHERE rn=1)t2 WHERE t1.fileid = t2.fileid UNION ALL select fileid,isparent, groupid,custodianid, mediaid, score, termid FROM '' + @p_currentResultTempName + '' where ISNULL(HASHVALUE,'''''''') = '''''''''' EXEC sp_executesql @v_query SET @v_query = ''INSERT INTO '' + @v_removeddups + '' select f2.fileid,f2.isparent, f2.groupid,f2.custodianid, f2.mediaid, score, termid FROM (select k1.fileid, k1.isparent, k1.groupid, k1.custodianid, k1.mediaid, k2.hashvalue FROM '' + @v_removeddups + '' k1, '' + @p_currentResultTempName + '' k2 where k1.fileid = k2.fileid) f1, '' + @p_currentResultTempName + '' f2 WHERE f2.groupid = f1.groupid and f1.groupid <>-1 AND f1.hashvalue = f2.hashvalue AND f1.isparent = f2.isparent AND NOT EXISTS (SELECT fileid from '' + @v_removeddups + '' where fileid = f2.fileid)'' EXEC sp_executesql @v_query END --FOR "Hide project level duplicates (StaticDeDupe™) / HIDE_PROJECT_LEVEL_DUPS_STATIC" IF (@p_searchduplicateoption = 3) BEGIN SET @v_query = ''INSERT INTO '' + @v_removeddups + '' SELECT T1.fileid,T1.isparent, T1.groupid,T1.custodianid, T1.mediaid, score, termid FROM '' + @p_currentResultTempName + '' T1, tbl_Ex_Fileinfo T2 WITH (NOLOCK, index(PK_tbl_ex_ExtractionInfo)) WHERE t1.fileid = t2.fileid AND isduplicate=0'' EXEC sp_executesql @v_query END --FOR "Hide custodian level duplicates (StaticDeDupe™) / HIDE_CUSTODIAN_LEVEL_DUPS_STATIC" IF (@p_searchduplicateoption = 4) BEGIN SET @v_query = ''INSERT INTO '' + @v_removeddups + '' SELECT T1.fileid,T1.isparent, T1.groupid,T1.custodianid, T1.mediaid, score, termid FROM '' + @p_currentResultTempName + '' T1, tbl_Ex_Fileinfo T2 WITH (NOLOCK, index(PK_tbl_ex_ExtractionInfo)) WHERE t1.fileid = t2.fileid AND IsDuplicateCustodianLevel = 0'' EXEC sp_executesql @v_query END --FOR "Show all hits in the selected scope (No DeDupe) / SHOW_ALL_DUPS" IF (@p_searchduplicateoption = 1) BEGIN SET @v_query = '' INSERT INTO '' + @v_removeddups + '' SELECT fileid,isparent, groupid ,custodianid, mediaid, score, termid FROM '' + @p_currentResultTempName EXEC sp_executesql @v_query END DECLARE @NavigateQuery Nvarchar(max) DECLARE @NavigateFilter Nvarchar(1000) IF (LOWER(@p_NavigationBy) = ''reviewset'') SET @NavigateQuery = '', (SELECT fileid FROM tbl_rev_reviewset WITH(NOLOCK) WHERE ReviewSetId IN ( '' + @p_NavigationList + '' ))T3'' ELSE IF (LOWER(@p_NavigationBy) = ''folder'') SET @NavigateQuery = '', (SELECT fileid FROM tbl_fd_FolderFilesAssociation WITH(NOLOCK) WHERE FolderId IN ('' + @p_NavigationList + '')) T3'' ELSE SET @NavigateQuery = '''' IF (@p_NavigationBy = ''reviewset'' OR @p_NavigationBy = ''folder'') SET @NavigateFilter = '' AND T3.fileid = T2.fileid '' ELSE SET @NavigateFilter = '''' --INSERT PARENT/CHILD IF (@p_includeparentchild = 1) BEGIN SET @v_query = ''INSERT INTO '' + @v_removeddups + '' SELECT T2.fileid,T2.isparent, T2.groupid ,T2.custodianid, T2.mediaid, CASE WHEN T1.HasScore IS NOT NULL THEN 0 ELSE NULL END AS score, t1.termid FROM (SELECT groupid, termid, MAX(score) AS HasScore FROM '' + @v_removeddups + '' GROUP BY termid, GROUPID) T1, tbl_Ex_fileinfo T2 '' + @NavigateQuery + '' WHERE T1.groupid = T2.groupid '' + @NavigateFilter EXEC sp_executesql @v_query END END --GET UNIQUE FILEIDS FOR SEARCH RESULTS. SET @v_query = ''INSERT INTO '' + @p_finalResultTempName + '' SELECT DISTINCT fileid, score FROM '' + @v_removeddups + '' ORDER BY FILEID'' EXEC sp_executesql @v_query SET @p_totalhitcount = @@rowcount; SET @p_status = ''SUCCESS'' END TRY BEGIN CATCH SET @p_status = ( SELECT ERROR_MESSAGE() ) SET @p_totalhitcount = 0 END CATCH BEGIN TRY SET @v_query = ''IF EXISTS (SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @v_temp_table_name + '''''') DROP TABLE '' + @v_temp_table_name EXEC sp_executesql @v_query SET @v_query = ''IF EXISTS (SELECT TABLE_NAME FROM TEMPDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '''''' + @v_removeddups + '''''') DROP TABLE '' + @v_removeddups EXEC sp_executesql @v_query END TRY BEGIN CATCH END CATCH END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE sp_fd_GetDynamicFolders ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_fd_GetDynamicFolders]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_fd_GetDynamicFolders]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' --============================================================== --Created Date : 2017-07-06 --Description : return all dynamicfolders with permission set as show --Jasmeen,16-JAN-2018,Redmine 18612, Issue in New Group not showing global and local fixed --Jasmeen,18-MAY-2018,Redmine 19380, Permission added in where clause --Jasmeen,12-JUN-2018,Redmine 19529, Permission modified to Search,Search and Edit and None --Jasmeen,07-JAN-2020,Redmine 22984, Global And Local permission will be editable --============================================================== CREATE PROCEDURE [dbo].[sp_fd_GetDynamicFolders] @UserId bigint AS BEGIN DECLARE @DynamicFolder TABLE (SortOrder BIGINT IDENTITY(1,1),DynamicFolderId BIGINT, DynamicFolderName NVARCHAR(400), ParentDynamicFolderId BIGINT, IsPlaceHolder BIT, Permission NVARCHAR(100), IsGlobal BIT) INSERT INTO @DynamicFolder (DynamicFolderId , DynamicFolderName , ParentDynamicFolderId , IsPlaceHolder , Permission, IsGlobal) SELECT DynamicFolderId ,DynamicFolderName ,ParentDynamicFolderId ,IsPlaceHolder ,DynamicFolderPermission ,ISGlobal FROM (SELECT DF.DynamicFolderId ,DF.DynamicFolderName ,DF.ParentDynamicFolderId ,DF.IsPlaceHolder ,DFPGA.DynamicFolderPermission ,DF.ISGlobal ,SortOrder FROM tbl_fd_dynamicfolder DF WITH(NOLOCK), tbl_fd_DynamicFolderPrjGrpAsso DFPGA WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) WHERE DF.IsGlobal=1 AND DF.DynamicFolderId = DFPGA.DynamicFolderId AND DFPGA.GroupId = GUA.GroupId AND DF.IsGlobal=DFPGA.IsGlobal AND GUA.UserId=@UserId )A ORDER BY SortOrder INSERT INTO @DynamicFolder (DynamicFolderId , DynamicFolderName , ParentDynamicFolderId , IsPlaceHolder , Permission,IsGlobal) SELECT DynamicFolderId ,DynamicFolderName ,ParentDynamicFolderId ,IsPlaceHolder ,DynamicFolderPermission ,ISGlobal FROM ( SELECT DF.DynamicFolderId ,DF.DynamicFolderName ,DF.ParentDynamicFolderId ,DF.IsPlaceHolder ,DFPGA.DynamicFolderPermission ,0 as IsGlobal ,SortOrder FROM tbl_fd_Projectdynamicfolder DF WITH(NOLOCK), tbl_fd_DynamicFolderPrjGrpAsso DFPGA WITH(NOLOCK), tbl_pj_GroupUserAssociation GUA WITH(NOLOCK) WHERE DF.DynamicFolderId = DFPGA.DynamicFolderId AND DFPGA.GroupId = GUA.GroupId AND DFPGA.IsGlobal=0 AND GUA.UserId=@UserId )A ORDER BY SortOrder ;WITH CTE(DynamicFolderId , DynamicFolderName , ParentDynamicFolderId , IsPlaceHolder , Permission ,SortOrder,IsGlobal) AS ( SELECT DynamicFolderId , DynamicFolderName , ParentDynamicFolderId , IsPlaceHolder , Permission ,SortOrder,IsGlobal FROM @DynamicFolder P WHERE ParentDynamicFolderId =-1 AND P.Permission in (''Search'',''Search and Edit'') UNION ALL SELECT T.DynamicFolderId , T.DynamicFolderName , T.ParentDynamicFolderId , T.IsPlaceHolder , CASE WHEN CTE.Permission=''Search and Edit'' THEN T.Permission ELSE CTE.Permission END,T.SortOrder,T.IsGlobal FROM @DynamicFolder T INNER JOIN CTE ON CTE.DynamicFolderId=T.ParentDynamicFolderId and T.Permission in (''Search'',''Search and Edit'') AND CTE.IsGlobal=T.IsGlobal ) SELECT DynamicFolderId, DynamicFolderName, ParentDynamicFolderId, IsPlaceHolder, Permission, IsGlobal, CASE WHEN IsGlobal=1 THEN ''G_''+CAST(DynamicFolderId AS NVARCHAR(100)) ELSE ''L_''+CAST(DynamicFolderId AS NVARCHAR(100)) END AS ID, CASE WHEN ParentDynamicFolderId=-1 THEN CAST(-1 AS NVARCHAR(100)) ELSE CASE WHEN IsGlobal=1 THEN ''G_''+CAST(ParentDynamicFolderId AS NVARCHAR(100)) ELSE ''L_''+CAST(ParentDynamicFolderId AS NVARCHAR(100)) END END AS ParentID FROM CTE ORDER BY SortOrder,DynamicFolderId END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [Sp_Jb_FileReplacementStatus] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[Sp_Jb_FileReplacementStatus]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[Sp_Jb_FileReplacementStatus]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'/* ============================================= -- Author: -- Create date: -- Edited date: -- Edited date: -- Description: -- Change Log: -- 3. binay , 22 Dec 2013 : Added ETA (HH:MM:SS) / progress Percent 000.00 -- 4. Bhuwan , 09 Jan 2014 : Remove 2 digits only in ETA Hour -- 5. Santosh, April 9, 2015 : Added Job Paused Status to File Replacement/Reprocess -- 6. Deepak, 6 Nov 2019: Optimize query and add canceling and canceled status -- 7.Deepak, 18 March 2020: Filter media restriction ref#22879 -- ============================================== */ CREATE PROCEDURE [dbo].[Sp_Jb_FileReplacementStatus] @Level NVARCHAR(20)--DETAIL OR MASTER ,@ViewBy NVARCHAR(20) --BY JOB OR MEDIA ,@UserId BIGINT AS BEGIN IF (@ViewBy = ''MEDIA'') BEGIN IF (@Level = ''DETAIL'') BEGIN SELECT C.CUSTODIANID , C.CUSTODIANNAME , A.* ,A.STATUS AS JobStatus FROM TBL_EX_CUSTODIAN C WITH (NOLOCK) , ( SELECT ING.JOBTYPE , ING.JOB , ING.MEDIAID , ING.MEDIANAME , ING.CUSTODIANID , ING.PROJECTJOBGROUPID , ING.JOBID , CONVERT(VARCHAR, ING.TOTAL_COUNT) AS TOTAL_COUNT , CONVERT(VARCHAR, ING.NOTSTARTED + ING.POSTPONED) AS NOTSTARTED , CONVERT(VARCHAR, ING.IN_PROGRESS) AS IN_PROGRESS , CONVERT(VARCHAR, ING.COMPLETED) AS COMPLETED , CONVERT(VARCHAR, ING.FAILED) AS FAILED , CONVERT(VARCHAR, ING.POSTPONED) AS POSTPONED , CASE WHEN IsJobPaused = 1 THEN ''Paused'' WHEN [IsCanceled]=1 THEN CASE WHEN (NOTSTARTED + IN_PROGRESS + POSTPONED + COMPLETED + FAILED = 0 AND PROJECTJOBGROUPSTATUS = 2) OR (TOTAL_COUNT = COMPLETED+FAILED AND PROJECTJOBGROUPSTATUS = 2) THEN ''Canceled'' ELSE ''Canceling'' END WHEN NOTSTARTED + IN_PROGRESS + POSTPONED + COMPLETED + FAILED = 0 THEN ''Completed'' WHEN NOTSTARTED = TOTAL_COUNT THEN ''Not Started'' WHEN IN_PROGRESS > 0 THEN ''In Progress'' WHEN POSTPONED > 0 THEN ''Postponed'' WHEN FAILED > 0 THEN ''Completed With Error'' WHEN TOTAL_COUNT = COMPLETED THEN ''Completed'' END AS STATUS , -- chaneglog #1 CASE WHEN PROJECTJOBGROUPSTATUS IN (2, - 2) THEN 100.0 ELSE [PROGRESS] END [PROGRESS] , CASE WHEN [PROGRESS] IS NULL OR [progress] = 0.0 OR [progress] = 100.0 THEN ''00:00:00'' ELSE cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) / 3600 AS NVARCHAR) + '':'' + --ChangeLog #4 right(''00'' + cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) % 3600 / 60 AS NVARCHAR), 2) + '':'' + right(''00'' + cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) % 60 AS NVARCHAR), 2) END [ETA] FROM ( SELECT 1 AS JOBTYPE , ''Ingestion'' AS JOB , M.MEDIAID , M.MEDIANAME , M.CUSTODIANID , PJ.IsJobPaused , PJ.IsCanceled , CONVERT(NVARCHAR, PJ.PROJECTJOBGROUPID) + '',('' + pj.DisplayRemarks + '')'' AS PROJECTJOBGROUPID , PJ.JOBID ,ISNULL(TOTAL_COUNT,0) AS TOTAL_COUNT ,ISNULL(NOTSTARTED,0) AS NOTSTARTED ,ISNULL(IN_PROGRESS,0) AS IN_PROGRESS ,ISNULL(POSTPONED,0) AS POSTPONED ,ISNULL(COMPLETED,0) AS COMPLETED ,ISNULL(FAILED,0) AS FAILED , CAST(((ISNULL(COMPLETED, 0)+ISNULL(FAILED, 0)) * 100.00) / ISNULL(TOTAL_COUNT, 1) AS DECIMAL(5, 2)) [PROGRESS] -- chaneglog #1 , PJ.STATUS AS PROJECTJOBGROUPSTATUS , pj.startedOn -- chaneglog #1 FROM dbo.fn_getAccessibleMediaId(@UserId) M INNER JOIN (SELECT PJ.JobId, pj.ProjectJobGroupId, pj.Status,pj.Startedon,pj.DisplayRemarks , PJ.OTHERSETTINGS.value(''(/OtherSettings/MediaId)[1]'', ''bigint'') AS MediaId , ISNULL(OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'', ''bit''), 0) AS [IsJobPaused] , ISNULL(OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'', ''bit''), 0) AS [IsCanceled] FROM [TBL_DS_PROJECTJOBINFO] PJ WITH (NOLOCK) WHERE Name=''Ingestion For File Replacement'') PJ ON pj.MediaId= M.MEDIAID LEFT JOIN (SELECT COUNT(1) AS TOTAL_COUNT , ISNULL(SUM(CASE WHEN STATUS = 0 THEN 1 ELSE 0 END), 0) AS NOTSTARTED , ISNULL(SUM(CASE WHEN STATUS = 1 THEN 1 ELSE 0 END), 0) AS IN_PROGRESS , ISNULL(SUM(CASE WHEN STATUS = - 1 THEN 1 ELSE 0 END), 0) AS POSTPONED , ISNULL(SUM(CASE WHEN STATUS = 2 THEN 1 ELSE 0 END), 0) AS COMPLETED , ISNULL(SUM(CASE WHEN STATUS = - 2 THEN 1 ELSE 0 END), 0) AS FAILED ,JobId FROM tbl_jb_Ingestion WITH (NOLOCK) GROUP BY JobId)JB ON PJ.JOBID = JB.JOBID ) ING UNION SELECT IDX.JOBTYPE , IDX.JOB , IDX.MEDIAID , IDX.MEDIANAME , IDX.CUSTODIANID , IDX.PROJECTJOBGROUPID , IDX.JOBID , CONVERT(VARCHAR, IDX.TOTAL_COUNT) AS TOTAL_COUNT , CONVERT(VARCHAR, IDX.NOTSTARTED + IDX.POSTPONED) AS NOTSTARTED , CONVERT(VARCHAR, IDX.IN_PROGRESS) AS IN_PROGRESS , CONVERT(VARCHAR, IDX.COMPLETED) AS COMPLETED , CONVERT(VARCHAR, IDX.FAILED) AS FAILED , CONVERT(VARCHAR, IDX.POSTPONED) AS POSTPONED , CASE WHEN IsJobPaused = 1 THEN ''Paused'' WHEN [IsCanceled]=1 THEN CASE WHEN (NOTSTARTED + IN_PROGRESS + POSTPONED + COMPLETED + FAILED = 0 AND PROJECTJOBGROUPSTATUS = 2) OR (TOTAL_COUNT = COMPLETED+FAILED AND PROJECTJOBGROUPSTATUS = 2) THEN ''Canceled'' ELSE ''Canceling'' END WHEN NOTSTARTED + IN_PROGRESS + POSTPONED + COMPLETED + FAILED = 0 AND PROJECTJOBGROUPSTATUS = 2 THEN ''Completed'' WHEN NOTSTARTED = TOTAL_COUNT THEN ''Not Started'' WHEN IN_PROGRESS > 0 THEN ''In Progress'' WHEN POSTPONED > 0 THEN ''Postponed'' WHEN FAILED > 0 THEN ''Completed With Error'' WHEN (TOTAL_COUNT = COMPLETED AND PROJECTJOBGROUPSTATUS = 2) THEN ''Completed'' ELSE ''In Progress'' END AS STATUS , -- chaneglog #1 CASE WHEN PROJECTJOBGROUPSTATUS IN (2, - 2) THEN 100.0 ELSE [PROGRESS] END [PROGRESS] , CASE WHEN [PROGRESS] IS NULL OR [progress] = 0.0 OR [progress] = 100.0 THEN ''00:00:00'' ELSE cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) / 3600 AS NVARCHAR) + '':'' + --ChangeLog #4 right(''00'' + cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) % 3600 / 60 AS NVARCHAR), 2) + '':'' + right(''00'' + cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) % 60 AS NVARCHAR), 2) END [ETA] FROM ( SELECT 2 AS JOBTYPE , ''Indexing'' AS JOB , M.MEDIAID , M.MEDIANAME , M.CUSTODIANID , PJI.JOBID , PJI.IsJobPaused , PJI.IsCanceled , CONVERT(NVARCHAR, PJI.PROJECTJOBGROUPID) + '',('' + PJI.DisplayRemarks + '')'' AS PROJECTJOBGROUPID ,ISNULL(TOTAL_COUNT,0) AS TOTAL_COUNT ,ISNULL(NOTSTARTED,0) AS NOTSTARTED ,ISNULL(IN_PROGRESS,0) AS IN_PROGRESS ,ISNULL(POSTPONED,0) AS POSTPONED ,ISNULL(COMPLETED,0) AS COMPLETED ,ISNULL(FAILED,0) AS FAILED , CAST(((ISNULL(COMPLETED, 0) + ISNULL(FAILED, 0)) * 100.00) / ISNULL(TOTAL_COUNT, 1) AS DECIMAL(5, 2)) [PROGRESS] -- chaneglog #1 , PJI.startedOn -- chaneglog #l , PROJECTJOBGROUPSTATUS FROM dbo.fn_getAccessibleMediaId(@UserId) M INNER JOIN ( SELECT JobId, ProjectJobGroupId, MIN(Status) AS PROJECTJOBGROUPSTATUS,Startedon,DisplayRemarks, MediaId,IsJobPaused,IsCanceled FROM (SELECT PJ.JobId, pj.ProjectJobGroupId, pj.Status,pj.Startedon,pj.DisplayRemarks , PJ.OTHERSETTINGS.value(''(/OtherSettings/MediaId)[1]'', ''bigint'') AS MediaId , ISNULL(PJ.OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'', ''bit''), 0) AS [IsJobPaused] , ISNULL(PJ.OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'', ''bit''), 0) AS [IsCanceled] FROM [TBL_DS_PROJECTJOBINFO] PJ WITH (NOLOCK), [TBL_DS_PROJECTJOBINFO] PJI WITH (NOLOCK) WHERE PJ.Name=''Indexing'' AND PJI.Name=''Ingestion For File Replacement'' AND PJ.ProjectJobGroupId=PJI.ProjectJobGroupId)A GROUP BY JobId, ProjectJobGroupId,Startedon,DisplayRemarks, MediaId,IsJobPaused,IsCanceled ) PJI ON PJI.MediaId= M.MEDIAID LEFT JOIN (SELECT COUNT(1) AS TOTAL_COUNT , ISNULL(SUM(CASE WHEN STATUS = 0 THEN 1 ELSE 0 END), 0) AS NOTSTARTED , ISNULL(SUM(CASE WHEN STATUS = 1 THEN 1 ELSE 0 END), 0) AS IN_PROGRESS , ISNULL(SUM(CASE WHEN STATUS = - 1 THEN 1 ELSE 0 END), 0) AS POSTPONED , ISNULL(SUM(CASE WHEN STATUS = 2 THEN 1 ELSE 0 END), 0) AS COMPLETED , ISNULL(SUM(CASE WHEN STATUS = - 2 THEN 1 ELSE 0 END), 0) AS FAILED ,JobId FROM Tbl_ex_IndexStatusLog WITH (NOLOCK) GROUP BY JobId)I ON I.JobId = PJI.JobId ) IDX UNION SELECT LI.JOBTYPE , LI.JOB , LI.MEDIAID , LI.MEDIANAME , LI.CUSTODIANID , LI.PROJECTJOBGROUPID , LI.JOBID , CONVERT(VARCHAR, LI.TOTAL_COUNT) AS TOTAL_COUNT , CONVERT(VARCHAR, LI.NOTSTARTED + LI.POSTPONED) AS NOTSTARTED , CONVERT(VARCHAR, LI.IN_PROGRESS) AS IN_PROGRESS , CONVERT(VARCHAR, LI.COMPLETED) AS COMPLETED , CONVERT(VARCHAR, LI.FAILED) AS FAILED , CONVERT(VARCHAR, LI.POSTPONED) AS POSTPONED , CASE WHEN IsJobPaused = 1 THEN ''Paused'' WHEN [IsCanceled]=1 THEN CASE WHEN (NOTSTARTED + IN_PROGRESS + POSTPONED + COMPLETED + FAILED = 0 AND PROJECTJOBGROUPSTATUS = 2) OR (TOTAL_COUNT = COMPLETED+FAILED AND PROJECTJOBGROUPSTATUS = 2) THEN ''Canceled'' ELSE ''Canceling'' END WHEN NOTSTARTED + IN_PROGRESS + POSTPONED + COMPLETED + FAILED = 0 AND PROJECTJOBGROUPSTATUS = 2 THEN ''Completed'' WHEN NOTSTARTED = TOTAL_COUNT THEN ''Not Started'' WHEN IN_PROGRESS > 0 THEN ''In Progress'' WHEN POSTPONED > 0 THEN ''Postponed'' WHEN FAILED > 0 THEN ''Completed With Error'' WHEN (TOTAL_COUNT = COMPLETED AND PROJECTJOBGROUPSTATUS = 2) THEN ''Completed'' ELSE ''In Progress'' END AS STATUS , -- chaneglog #1 CASE WHEN PROJECTJOBGROUPSTATUS IN (2, - 2) THEN 100.0 ELSE [PROGRESS] END [PROGRESS] , CASE WHEN [PROGRESS] IS NULL OR [progress] = 0.0 OR [progress] = 100.0 THEN ''00:00:00'' ELSE cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) / 3600 AS NVARCHAR) + '':'' + --ChangeLog #4 right(''00'' + cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) % 3600 / 60 AS NVARCHAR), 2) + '':'' + right(''00'' + cast(CAST(((Datediff(ss, startedon, Getdate()) / [PROGRESS]) * (100.0 - [PROGRESS])) AS BIGINT) % 60 AS NVARCHAR), 2) END [ETA] FROM ( SELECT 3 AS JOBTYPE , ''Language Identification'' AS JOB , M.MEDIAID , M.MEDIANAME , M.CUSTODIANID , PJI.JOBID , PJI.IsJobPaused , PJI.[IsCanceled] , CONVERT(NVARCHAR, PJI.PROJECTJOBGROUPID) + '',('' + PJI.DisplayRemarks + '')'' AS PROJECTJOBGROUPID ,ISNULL(TOTAL_COUNT,0) AS TOTAL_COUNT ,ISNULL(NOTSTARTED,0) AS NOTSTARTED ,ISNULL(IN_PROGRESS,0) AS IN_PROGRESS ,ISNULL(POSTPONED,0) AS POSTPONED ,ISNULL(COMPLETED,0) AS COMPLETED ,ISNULL(FAILED,0) AS FAILED , CAST(((ISNULL(COMPLETED, 0) + ISNULL(FAILED, 0)) * 100.00) / ISNULL(TOTAL_COUNT, 1) AS DECIMAL(5, 2)) [PROGRESS] -- chaneglog #1 , PJI.startedOn -- chaneglog #1 , PROJECTJOBGROUPSTATUS FROM dbo.fn_getAccessibleMediaId(@UserId) M INNER JOIN ( SELECT JobId, ProjectJobGroupId, MIN(Status) AS PROJECTJOBGROUPSTATUS,Startedon,DisplayRemarks, MediaId,IsJobPaused,IsCanceled FROM (SELECT PJ.JobId, pj.ProjectJobGroupId, pj.Status,pj.Startedon,pj.DisplayRemarks , PJ.OTHERSETTINGS.value(''(/OtherSettings/MediaId)[1]'', ''bigint'') AS MediaId , ISNULL(PJ.OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'', ''bit''), 0) AS [IsJobPaused] , ISNULL(PJ.OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'', ''bit''), 0) AS [IsCanceled] FROM [TBL_DS_PROJECTJOBINFO] PJ WITH (NOLOCK), [TBL_DS_PROJECTJOBINFO] PJI WITH (NOLOCK) WHERE PJ.Name=''Language Identification'' AND PJI.Name=''Ingestion For File Replacement'' AND PJ.ProjectJobGroupId=PJI.ProjectJobGroupId)A GROUP BY JobId, ProjectJobGroupId,Startedon,DisplayRemarks, MediaId,IsJobPaused,IsCanceled ) PJI ON PJI.MediaId= M.MEDIAID LEFT JOIN (SELECT COUNT(1) AS TOTAL_COUNT , ISNULL(SUM(CASE WHEN G.STATUS = 0 THEN 1 ELSE 0 END), 0) AS NOTSTARTED , ISNULL(SUM(CASE WHEN G.STATUS = 1 THEN 1 ELSE 0 END), 0) AS IN_PROGRESS , ISNULL(SUM(CASE WHEN G.STATUS = - 1 THEN 1 ELSE 0 END), 0) AS POSTPONED , ISNULL(SUM(CASE WHEN G.STATUS = 2 THEN 1 ELSE 0 END), 0) AS COMPLETED , ISNULL(SUM(CASE WHEN G.STATUS = - 2 THEN 1 ELSE 0 END), 0) AS FAILED ,G.JobId FROM tbl_jb_GenericJobDetail G WITH (NOLOCK), [tbl_ds_ProjectJobInfo] LP WITH(NOLOCK) WHERE LP.Name=''Language Identification'' AND G.JobId=LP.JobId GROUP BY G.JobId)I ON I.JobId = PJI.JobId ) LI UNION SELECT 4 AS JOBTYPE , ''Email Analysis'' AS JOB , MEDIAID , MEDIANAME , CUSTODIANID , CONVERT(NVARCHAR, PJI.PROJECTJOBGROUPID) + '',('' + PJI.DisplayRemarks + '')'' AS PROJECTJOBGROUPID , PJ.JOBID , ''N/A'' AS TOTAL_COUNT , ''N/A'' AS NOTSTARTED , ''N/A'' AS IN_PROGRESS , ''N/A'' AS COMPLETED , ''N/A'' AS FAILED , ''N/A'' AS POSTPONED , CASE WHEN IsJobPaused = 1 THEN ''Paused'' WHEN IsJobCanceled = 1 AND MIN(PJ.Status) IN (0,1,-1) THEN ''Canceling'' WHEN IsJobCanceled = 1 AND MIN(PJ.Status) IN (2,-2) THEN ''Canceled'' WHEN MIN(PJ.[STATUS]) = 0 THEN ''Not Started'' WHEN MIN(PJ.[STATUS]) = 1 THEN ''In Progress'' WHEN MIN(PJ.[STATUS]) = -1 THEN ''Postponed'' WHEN MIN(PJ.[STATUS]) = 2 THEN ''Completed'' END AS STATUS , CASE WHEN MIN(PJ.[STATUS]) = 2 THEN 100.0 ELSE 0.0 END [PROGRESS] , CASE WHEN MIN(PJ.[STATUS]) = 2 THEN ''00:00:00'' ELSE ''N/A'' END [ETA] FROM dbo.fn_getAccessibleMediaId(@UserId) M , TBL_DS_PROJECTJOBINFO PJI WITH (NOLOCK) INNER JOIN ( SELECT PJ.*, ISNULL(OtherSettings.value(''(/OtherSettings/IsJobPaused)[1]'', ''bit''), 0) AS [IsJobPaused], ISNULL(OtherSettings.value(''(/OtherSettings/IsCancelled)[1]'', ''bit''), 0) AS [IsJobCanceled] FROM [TBL_DS_PROJECTJOBINFO] PJ WITH (NOLOCK) WHERE PJ.NAME = ''Email Analysis'' ) PJ ON PJI.PROJECTJOBGROUPID = PJ.PROJECTJOBGROUPID WHERE M.MEDIAID = PJI.OtherSettings.value(''(/OtherSettings/MediaId)[1]'', ''bigint'') AND PJI.NAME = ''Ingestion For File Replacement'' GROUP BY MEDIAID , MEDIANAME , CUSTODIANID , PJI.PROJECTJOBGROUPID , PJ.JOBID , PJI.DISPLAYREMARKS , PJ.IsJobPaused , PJ.IsJobCanceled ) A WHERE C.CUSTODIANID = A.CUSTODIANID ORDER BY C.CUSTODIANNAME , A.MEDIANAME , A.PROJECTJOBGROUPID , A.JOBTYPE END ELSE BEGIN SELECT C.CUSTODIANNAME , C.CUSTODIANID , M.MEDIANAME , M.MEDIAID FROM dbo.fn_getAccessibleMediaId(@UserId) M , TBL_EX_CUSTODIAN C WITH (NOLOCK) , TBL_JB_INGESTION JB WITH (NOLOCK) , tbl_ps_ScanFileInfo SFI WITH (NOLOCK) WHERE M.CUSTODIANID = C.CUSTODIANID AND SFI.MediaId = M.MediaId AND JB.ScanFileId = SFI.ScanFileId GROUP BY M.MediaID , C.CUSTODIANID , C.CUSTODIANNAME , M.MEDIANAME END END END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ex_ProjectPieChart] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].[sp_ex_ProjectPieChart]'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ex_ProjectPieChart]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* ============================================= --CREATED BY: SURAJ BABU MALLA --Modified By: DIPESH --Modified By: Sushil on 2013-12-9 --CREATED DATE: 2009-09-01 10:12:33.920 --MODIFIED DATE: MARCH 11,2010 --DESCRIPTION: THIS IS THE PROCEDURE FOR GENERATING THE DASBBOARD, HAVING 9 DIFFERENT PAREMETER --ChangeLog -- 1. , <2014 FEB 28> : , <2014-May-02> : -- 3. , <4 march 2016> : -- 4. , <22 SEPT 2016> : ============================================= */ CREATE procedure [dbo].[sp_ex_ProjectPieChart] @NavType nvarchar(max)=Null, @MediaList nvarchar(max), @ReviewSetList nvarchar(max)=Null, @FolderList nvarchar(max)=Null, @Type nvarchar(50) AS BEGIN DECLARE @query nvarchar(max) IF (@NavType = ''FOLDER'') BEGIN --CODE FOR FOLDER IF (@Type = ''PIE'') BEGIN SELECT @query = N'' select isnull(SUM(case when EF.isDeNIST = 1 then 1 else 0 end),0) As [De-Nist], isnull(SUM(case when isDeNIST = 0 AND issystem = 1 then 1 else 0 end),0) AS [System Files], isnull(SUM(case when EF.IsDuplicate = 1 then 1 else 0 end),0)AS [Duplicate], isnull(SUM(case when EF.IsEmail = 1 AND EF.IsDuplicate = 0 AND IsAttachment =0 then 1 else 0 end),0) AS [Email], isnull(SUM(case when EF.IsAttachment = 1 AND EF.IsDuplicate = 0 then 1 else 0 end),0) AS [Attachment], isnull(SUM(case when EF.IsEdocs = 1 AND EF.IsDuplicate = 0 AND IsAttachment =0 then 1 else 0 end),0) AS [Edoc] FROM tbl_Ex_fileinfo ef WITH (NOLOCK), (SELECT DISTINCT fileid FROM tbl_fd_FolderFilesAssociation WITH (NOLOCK) WHERE FolderID IN (''+@FolderList+'')) fld WHERE ef.fileid = fld.fileid''; END ELSE BEGIN SELECT @query = N'' select (SELECT createddate FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjCreatedDate, (SELECT ProjectName FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjectName, ISNULL(count(fld.FileId),0) AS TotalDocCount, isnull(SUM(case when EF.IsDuplicate = 1 then 1 else 0 end),0)AS [Duplicate] FROM tbl_Ex_fileinfo ef WITH (NOLOCK), (SELECT DISTINCT fileid FROM tbl_fd_FolderFilesAssociation WITH (NOLOCK) WHERE FolderID IN (''+@FolderList+'')) fld WHERE ef.fileid = fld.fileid''; END END ELSE IF (@NavType = ''REVIEW'') BEGIN IF (@Type = ''PIE'') BEGIN SELECT @query = N'' select isnull(SUM(case when EF.isDeNIST = 1 then 1 else 0 end),0) As [De-Nist], isnull(SUM(case when isDeNIST = 0 AND issystem = 1 then 1 else 0 end),0) AS [System Files], isnull(SUM(case when EF.IsDuplicate = 1 then 1 else 0 end),0)AS [Duplicate], isnull(SUM(case when EF.IsEmail = 1 AND EF.IsDuplicate = 0 AND IsAttachment =0 then 1 else 0 end),0) AS [Email], isnull(SUM(case when EF.IsAttachment = 1 AND EF.IsDuplicate = 0 then 1 else 0 end),0) AS [Attachment], isnull(SUM(case when EF.IsEdocs = 1 AND EF.IsDuplicate = 0 AND IsAttachment =0 then 1 else 0 end),0) AS [Edoc] FROM tbl_Ex_fileinfo ef WITH (NOLOCK), (SELECT DISTINCT fileid FROM tbl_rev_ReviewSet WITH (NOLOCK) WHERE reviewsetid IN (''+@ReviewSetList+'')) rev WHERE ef.fileid = rev.fileid''; END ELSE BEGIN SELECT @query = N'' select (SELECT createddate FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjCreatedDate, (SELECT ProjectName FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjectName, ISNULL(count( rev.FileId),0) AS TotalProcessedCount, isnull(SUM(case when EF.isDeNIST = 1 then 1 else 0 end),0) As [De-Nist], isnull(SUM(case when isDeNIST = 0 AND issystem = 1 then 1 else 0 end),0) AS [System Files], isnull(SUM(case when EF.IsDuplicate = 1 then 1 else 0 end),0)AS [Duplicate], isnull(SUM(case when EF.IsEmail = 1 AND EF.IsDuplicate = 0 then 1 else 0 end),0) AS [Email], isnull(SUM(case when EF.IsAttachment = 1 AND EF.IsDuplicate = 0 then 1 else 0 end),0) AS [Attachment], isnull(SUM(case when EF.IsEdocs = 1 AND EF.IsDuplicate = 0 then 1 else 0 end),0) AS [Edoc] FROM tbl_Ex_fileinfo ef WITH (NOLOCK), (SELECT DISTINCT fileid FROM tbl_rev_ReviewSet WITH (NOLOCK) WHERE reviewsetid IN (''+@ReviewSetList+'')) rev WHERE ef.fileid = rev.fileid''; END END ELSE BEGIN --Custodian/Media IF (@Type = ''PIE'') BEGIN IF (@MediaList is not null AND len(@MediaList) > 0) BEGIN SELECT @query = N'' SELECT ISNULL(SUM(DeNISTCount),0) As [De-Nist], ISNULL(SUM(SystemFilesCount),0) AS [System Files], isnull(SUM(DuplicateProcessedEmailCount+DuplicateProcessedAttachmentCount + DuplicateProcessedEdocCount+DuplicateProcessedEmbeddedEdocCount + DuplicatePasswordProtectedEmailCount+DuplicatePasswordProtectedAttachmentCount + DuplicatePasswordProtectedEdocCount+DuplicatePasswordProtectedEmbeddedEdocCount + DuplicateCorruptedEmailCount+DuplicateCorruptedAttachmentCount + DuplicateCorruptedEdocCount+DuplicateCorruptedEmbeddedEdocCount + DuplicateUnknownEmailCount+DuplicateUnknownAttachmentCount + DuplicateUnknownEdocCount+DuplicateUnknownEmbeddedEdocCount + DuplicateProcessingErrorEmailCount+DuplicateProcessingErrorAttachmentCount + DuplicateProcessingErrorEdocCount+DuplicateProcessingErrorEmbeddedEdocCount + DuplicateZeroByteEmailCount +DuplicateZeroByteAttachmentCount +DuplicateZeroByteEdocCount +DuplicateZeroByteEmbeddedCount + --changelog:1 DuplicateUnSupportedEmailCount +DuplicateUnSupportedAttachmentCount +DuplicateUnSupportedEdocCount +DuplicateUnSupportedEmbeddedCount --changelog:1 ),0) AS [Duplicate], isnull(SUM(FileExtensionRestrictedCount),0) AS [File Extension Restriction], isnull(SUM(FileTypeRestrictedCount),0) AS [File Type Restriction], isnull(SUM(DateRestrictedCount),0) AS [Date Restriction], ISNULL(SUM(PasswordProtectedArchiveCount + CorruptedArchiveCount + NonProcessedArchiveCount+ProcessedArchiveCount),0) AS [Archive Files], ISNULL(SUM(OriginalProcessedEmailCount+ OriginalPasswordProtectedEmailCount + OriginalCorruptedEmailCount+ OriginalUnknownEmailCount+ OriginalProcessingErrorEmailCount + OriginalZeroByteEmailCount + --changelog:1 OriginalUnSupportedEmailCount --changelog:1 ),0) AS [Email], ISNULL(SUM(OriginalProcessedAttachmentCount+ OriginalPasswordProtectedAttachmentCount + OriginalCorruptedAttachmentCount+ OriginalUnknownAttachmentCount+ OriginalProcessingErrorAttachmentCount + OriginalZeroByteAttachmentCount + --changelog:1 OriginalUnSupportedAttachmentCount --changelog:1 ),0) AS [Attachment], ISNULL(SUM(OriginalProcessedEdocCount + OriginalProcessedEmbeddedEdocCount + OriginalPasswordProtectedEdocCount + OriginalPasswordProtectedEmbeddedEdocCount + OriginalCorruptedEdocCount + OriginalCorruptedEmbeddedEdocCount + OriginalUnknownEdocCount + OriginalUnknownEmbeddedEdocCount + OriginalProcessingErrorEdocCount + OriginalProcessingErrorEmbeddedEdocCount + OriginalZeroByteEdocCount + OriginalZeroByteEmbeddedCount + --changelog:1 OriginalUnSupportedEdocCount + OriginalUnSupportedEmbeddedCount --changelog:1 ),0) AS [Edoc] FROM tbl_ex_media M WITH(NOLOCK) --logId 4 LEFT JOIN tbl_su_MediaLevelCountSummary S WITH (NOLOCK) ON M.MediaId=S.MediaId AND M.Parsed=2 WHERE M.MediaId IN(''+@MediaList+'')'' END ELSE BEGIN SELECT @query = N''SELECT ISNULL(SUM(DeNISTCount),0) As [De-Nist], ISNULL(SUM(SystemFilesCount),0) AS [System Files], isnull(SUM(DuplicateProcessedEmailCount+DuplicateProcessedAttachmentCount + DuplicateProcessedEdocCount+DuplicateProcessedEmbeddedEdocCount + DuplicatePasswordProtectedEmailCount+DuplicatePasswordProtectedAttachmentCount + DuplicatePasswordProtectedEdocCount+DuplicatePasswordProtectedEmbeddedEdocCount + DuplicateCorruptedEmailCount+DuplicateCorruptedAttachmentCount + DuplicateCorruptedEdocCount+DuplicateCorruptedEmbeddedEdocCount + DuplicateUnknownEmailCount+DuplicateUnknownAttachmentCount + DuplicateUnknownEdocCount+DuplicateUnknownEmbeddedEdocCount + DuplicateProcessingErrorEmailCount+DuplicateProcessingErrorAttachmentCount + DuplicateProcessingErrorEdocCount+DuplicateProcessingErrorEmbeddedEdocCount + DuplicateZeroByteEmailCount +DuplicateZeroByteAttachmentCount +DuplicateZeroByteEdocCount +DuplicateZeroByteEmbeddedCount + --changelog:1 DuplicateUnSupportedEmailCount +DuplicateUnSupportedAttachmentCount +DuplicateUnSupportedEdocCount +DuplicateUnSupportedEmbeddedCount --changelog:1 ),0) AS [Duplicate], isnull(SUM(FileExtensionRestrictedCount),0) AS [File Extension Restriction], isnull(SUM(FileTypeRestrictedCount),0) AS [File Type Restriction], isnull(SUM(DateRestrictedCount),0) AS [Date Restriction], ISNULL(SUM(PasswordProtectedArchiveCount + CorruptedArchiveCount + NonProcessedArchiveCount+ProcessedArchiveCount),0) AS [Archive Files], ISNULL(SUM(OriginalProcessedEmailCount+ OriginalPasswordProtectedEmailCount + OriginalCorruptedEmailCount+ OriginalUnknownEmailCount+ OriginalProcessingErrorEmailCount + OriginalZeroByteEmailCount + --changelog:1 OriginalUnSupportedEmailCount --changelog:1 ),0) AS [Email], ISNULL(SUM(OriginalProcessedAttachmentCount+ OriginalPasswordProtectedAttachmentCount + OriginalCorruptedAttachmentCount+ OriginalUnknownAttachmentCount+ OriginalProcessingErrorAttachmentCount + OriginalZeroByteAttachmentCount + --changelog:1 OriginalUnSupportedAttachmentCount --changelog:1 ),0) AS [Attachment], ISNULL(SUM(OriginalProcessedEdocCount + OriginalProcessedEmbeddedEdocCount + OriginalPasswordProtectedEdocCount + OriginalPasswordProtectedEmbeddedEdocCount + OriginalCorruptedEdocCount + OriginalCorruptedEmbeddedEdocCount + OriginalUnknownEdocCount + OriginalUnknownEmbeddedEdocCount + OriginalProcessingErrorEdocCount + OriginalProcessingErrorEmbeddedEdocCount + OriginalZeroByteEdocCount + OriginalZeroByteEmbeddedCount + --changelog:1 OriginalUnSupportedEdocCount + OriginalUnSupportedEmbeddedCount --changelog:1 ),0) AS [Edoc] FROM tbl_ex_media M WITH(NOLOCK) --logId 4 LEFT JOIN tbl_su_MediaLevelCountSummary S WITH (NOLOCK) ON M.MediaId=S.MediaId AND M.Parsed=2 '' END END ELSE BEGIN IF (@MediaList is not null AND len(@MediaList) > 0) BEGIN SELECT @query = N''SELECT (SELECT createddate FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjCreatedDate, (SELECT ProjectName FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjectName, Count(Distinct M.custodianid) as CustCount, Count(M.MediaId) AS MedCount, ISNULL(SUM(FileTypeRestrictedCount+FileExtensionRestrictedCount+DateRestrictedCount + TotalProcessedCount),0) as DocCount, ISNULL(SUM(OriginalProcessedEmailCount + OriginalPasswordProtectedEmailCount + OriginalCorruptedEmailCount+ OriginalUnknownEmailCount+ OriginalProcessingErrorEmailCount + OriginalZeroByteEmailCount + --changelog:1 OriginalUnSupportedEmailCount + --changelog:1 OriginalProcessedAttachmentCount+ OriginalPasswordProtectedAttachmentCount + OriginalCorruptedAttachmentCount+ OriginalUnknownAttachmentCount+ OriginalProcessingErrorAttachmentCount+ OriginalZeroByteAttachmentCount + --changelog:1 OriginalUnSupportedAttachmentCount + --changelog:1 OriginalProcessedEdocCount + OriginalProcessedEmbeddedEdocCount + OriginalPasswordProtectedEdocCount + OriginalPasswordProtectedEmbeddedEdocCount + OriginalCorruptedEdocCount + OriginalCorruptedEmbeddedEdocCount + OriginalUnknownEdocCount + OriginalUnknownEmbeddedEdocCount + OriginalProcessingErrorEdocCount + OriginalProcessingErrorEmbeddedEdocCount + OriginalZeroByteEdocCount + OriginalZeroByteEmbeddedCount + --changelog:1 OriginalUnSupportedEdocCount + OriginalUnSupportedEmbeddedCount --changelog:1 ),0) as [SearchCount], isnull(SUM(DuplicateProcessedEmailCount+DuplicateProcessedAttachmentCount + DuplicateProcessedEdocCount+DuplicateProcessedEmbeddedEdocCount + DuplicatePasswordProtectedEmailCount+DuplicatePasswordProtectedAttachmentCount + DuplicatePasswordProtectedEdocCount+DuplicatePasswordProtectedEmbeddedEdocCount + DuplicateCorruptedEmailCount+DuplicateCorruptedAttachmentCount + DuplicateCorruptedEdocCount+DuplicateCorruptedEmbeddedEdocCount + DuplicateUnknownEmailCount+DuplicateUnknownAttachmentCount + DuplicateUnknownEdocCount+DuplicateUnknownEmbeddedEdocCount + DuplicateProcessingErrorEmailCount+DuplicateProcessingErrorAttachmentCount + DuplicateProcessingErrorEdocCount+DuplicateProcessingErrorEmbeddedEdocCount + DuplicateZeroByteEmailCount + DuplicateZeroByteAttachmentCount + DuplicateZeroByteEdocCount +DuplicateZeroByteEmbeddedCount + --changelog:1 DuplicateUnSupportedEmailCount + DuplicateUnSupportedAttachmentCount + DuplicateUnSupportedEdocCount + DuplicateUnSupportedEmbeddedCount --changelog:1 ),0) as [SearchDupCount], isnull(SUM(CustodianDuplicateProcessedEmailCount+CustodianDuplicateProcessedAttachmentCount + CustodianDuplicateProcessedEdocCount+CustodianDuplicateProcessedEmbeddedEdocCount + CustodianDuplicatePasswordProtectedEmailCount+CustodianDuplicatePasswordProtectedAttachmentCount + CustodianDuplicatePasswordProtectedEdocCount+CustodianDuplicatePasswordProtectedEmbeddedEdocCount + CustodianDuplicateCorruptedEmailCount+CustodianDuplicateCorruptedAttachmentCount + CustodianDuplicateCorruptedEdocCount+CustodianDuplicateCorruptedEmbeddedEdocCount + CustodianDuplicateUnknownEmailCount+CustodianDuplicateUnknownAttachmentCount + CustodianDuplicateUnknownEdocCount+CustodianDuplicateUnknownEmbeddedEdocCount + CustodianDuplicateProcessingErrorEmailCount+CustodianDuplicateProcessingErrorAttachmentCount + CustodianDuplicateProcessingErrorEdocCount+CustodianDuplicateProcessingErrorEmbeddedEdocCount + CustodianDuplicateZeroByteEmailCount + CustodianDuplicateZeroByteAttachmentCount + CustodianDuplicateZeroByteEdocCount + CustodianDuplicateZeroByteEmbeddedCount + --changelog:1 CustodianDuplicateUnSupportedEmailCount + CustodianDuplicateUnSupportedAttachmentCount + CustodianDuplicateUnSupportedEdocCount + CustodianDuplicateUnSupportedEmbeddedCount --changelog:1 ),0) as [CustodianSearchDupCount], ISNULL(SUM([ProcessedDocumentSize]),0) AS [ProcessedDocumentSize] FROM tbl_ex_media M WITH(NOLOCK) --logId 4 LEFT JOIN tbl_su_MediaLevelCountSummary S WITH (NOLOCK) ON M.MediaId=S.MediaId AND M.Parsed=2 WHERE M.MediaId IN(''+@MediaList+'')''; END ELSE BEGIN SELECT @query = N''SELECT (SELECT createddate FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjCreatedDate, (SELECT ProjectName FROM tbl_pj_projectsetup WITH (NOLOCK) WHERE DatabaseInstanceName = db_name()) as ProjectName, Count(Distinct M.custodianid) as CustCount, Count(M.MediaId) AS MedCount, ISNULL(SUM(FileTypeRestrictedCount+FileExtensionRestrictedCount+DateRestrictedCount + TotalProcessedCount),0) as DocCount, ISNULL(SUM(OriginalProcessedEmailCount + OriginalPasswordProtectedEmailCount + OriginalCorruptedEmailCount+ OriginalUnknownEmailCount+ OriginalProcessingErrorEmailCount + OriginalZeroByteEmailCount + --changelog:1 OriginalUnSupportedEmailCount + --changelog:1 OriginalProcessedAttachmentCount+ OriginalPasswordProtectedAttachmentCount + OriginalCorruptedAttachmentCount+ OriginalUnknownAttachmentCount+ OriginalProcessingErrorAttachmentCount+ OriginalZeroByteAttachmentCount + --changelog:1 OriginalUnSupportedAttachmentCount + --changelog:1 OriginalProcessedEdocCount + OriginalProcessedEmbeddedEdocCount + OriginalPasswordProtectedEdocCount + OriginalPasswordProtectedEmbeddedEdocCount + OriginalCorruptedEdocCount + OriginalCorruptedEmbeddedEdocCount + OriginalUnknownEdocCount + OriginalUnknownEmbeddedEdocCount + OriginalProcessingErrorEdocCount + OriginalProcessingErrorEmbeddedEdocCount + OriginalZeroByteEdocCount + OriginalZeroByteEmbeddedCount + --changelog:1 OriginalUnSupportedEdocCount + OriginalUnSupportedEmbeddedCount --changelog:1 ),0) as [SearchCount], isnull(SUM(DuplicateProcessedEmailCount+DuplicateProcessedAttachmentCount + DuplicateProcessedEdocCount+DuplicateProcessedEmbeddedEdocCount + DuplicatePasswordProtectedEmailCount+DuplicatePasswordProtectedAttachmentCount + DuplicatePasswordProtectedEdocCount+DuplicatePasswordProtectedEmbeddedEdocCount + DuplicateCorruptedEmailCount+DuplicateCorruptedAttachmentCount + DuplicateCorruptedEdocCount+DuplicateCorruptedEmbeddedEdocCount + DuplicateUnknownEmailCount+DuplicateUnknownAttachmentCount + DuplicateUnknownEdocCount+DuplicateUnknownEmbeddedEdocCount + DuplicateProcessingErrorEmailCount+DuplicateProcessingErrorAttachmentCount + DuplicateProcessingErrorEdocCount+DuplicateProcessingErrorEmbeddedEdocCount + DuplicateZeroByteEmailCount + DuplicateZeroByteAttachmentCount + DuplicateZeroByteEdocCount +DuplicateZeroByteEmbeddedCount + --changelog:1 DuplicateUnSupportedEmailCount + DuplicateUnSupportedAttachmentCount + DuplicateUnSupportedEdocCount + DuplicateUnSupportedEmbeddedCount --changelog:1 ),0) as [SearchDupCount], isnull(SUM(CustodianDuplicateProcessedEmailCount+CustodianDuplicateProcessedAttachmentCount + CustodianDuplicateProcessedEdocCount+CustodianDuplicateProcessedEmbeddedEdocCount + CustodianDuplicatePasswordProtectedEmailCount+CustodianDuplicatePasswordProtectedAttachmentCount + CustodianDuplicatePasswordProtectedEdocCount+CustodianDuplicatePasswordProtectedEmbeddedEdocCount + CustodianDuplicateCorruptedEmailCount+CustodianDuplicateCorruptedAttachmentCount + CustodianDuplicateCorruptedEdocCount+CustodianDuplicateCorruptedEmbeddedEdocCount + CustodianDuplicateUnknownEmailCount+CustodianDuplicateUnknownAttachmentCount + CustodianDuplicateUnknownEdocCount+CustodianDuplicateUnknownEmbeddedEdocCount + CustodianDuplicateProcessingErrorEmailCount+CustodianDuplicateProcessingErrorAttachmentCount + CustodianDuplicateProcessingErrorEdocCount+CustodianDuplicateProcessingErrorEmbeddedEdocCount + CustodianDuplicateZeroByteEmailCount + CustodianDuplicateZeroByteAttachmentCount + CustodianDuplicateZeroByteEdocCount + CustodianDuplicateZeroByteEmbeddedCount + --changelog:1 CustodianDuplicateUnSupportedEmailCount + CustodianDuplicateUnSupportedAttachmentCount + CustodianDuplicateUnSupportedEdocCount + CustodianDuplicateUnSupportedEmbeddedCount --changelog:1 ),0) as [CustodianSearchDupCount], ISNULL(SUM([ProcessedDocumentSize]),0) AS [ProcessedDocumentSize] FROM tbl_ex_media M WITH(NOLOCK) --logId 4 LEFT JOIN tbl_su_MediaLevelCountSummary S WITH (NOLOCK) ON M.MediaId=S.MediaId AND M.Parsed=2 '' END END END EXEC SP_EXECUTESQL @query END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_jb_GetLangFiles] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_jb_GetLangFiles'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_jb_GetLangFiles]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'-- ============================================= -- Author: Sudeep -- Create date: Jan 18, 2013 -- Description: Get Prefect Files -- ============================================= CREATE PROCEDURE [dbo].[sp_jb_GetLangFiles] @JobId bigint, @BatchSize int, @ProcessingInstanceId varchar(250) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF(OBJECT_ID(''tempdb..#SelectedFile'') is not null) DROP TABLE #SelectedFile CREATE TABLE #SelectedFile (FileId bigint primary key) BEGIN TRANSACTION INSERT INTO #SelectedFile (FileId) SELECT TOP (@BatchSize) FileID FROM tbl_jb_GenericJobDetail WITH(UPDLOCK,READPAST) WHERE JobId = @JobId AND [Status] IN (0,-1) UPDATE t1 WITH(ROWLOCK) SET ProcessingInstanceId = @ProcessingInstanceId, [Status] = 1, [LastUpdatedOn] = GETDATE() FROM tbl_jb_GenericJobDetail t1, #SelectedFile t2 WHERE t1.FileId = t2.FileID AND t1.JobId=@JobId COMMIT SELECT fi.CustodianId, fi.MediaId, t.FileId, ISNULL(fi.FulltextFileLocation,'''') AS FulltextFileLocation, fi.FulltextFilesize,ISNULL(FG.[FileTypeGroup],'''') AS [FileTypeGroup] FROM #SelectedFile t LEFT JOIN tbl_ex_FulltextFileLocation fi WITH(NOLOCK) ON t.fileid = fi.fileid LEFT JOIN [tbl_ex_FileInfo] F WITH(NOLOCK) ON t.fileid = F.fileid LEFT JOIN [tbl_pj_FileTypesDescription] FD WITH(NOLOCK) ON FD.ToolsDisplayName = F.FileType LEFT JOIN [tbl_pj_FileTypesGroup] FG WITH(NOLOCK) ON FG.FileTypeGroupID = FD.FileTypeGroupID ORDER BY fi.FileId END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_sh_FilterSearchResult] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_sh_FilterSearchResult'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sh_FilterSearchResult]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= -- Author: Bipin Shakya -- Create date: 1 August, 2008 -- Updated By: Rupesh Acharya -- Updated Date:1 sept, 2011 -- Description: THIS PROCEDURE SEARCHES THE FULLTEXT AND POPULATES THE GLOBAL TEMPORARY TABLE -- ALSO IT UPDATES THE SEARCH AND TAG LOG INFORMATION IN THE LOG TABLES. -- ============================================= CREATE PROCEDURE [dbo].[sp_sh_FilterSearchResult] @p_filterclause NVARCHAR(max), @p_sessionid varchar(200), @p_totalhitcount BIGINT OUTPUT, @p_status VARCHAR(8000) OUTPUT , @IsFromWeb bit=1 AS BEGIN DECLARE @v_temp_table_name varchar(200) DECLARE @v_query nvarchar(max) IF(@p_sessionid is null) set @p_sessionid = cast(@@spid as varchar(100)) SET @v_temp_table_name = ''##tmp_filter_search_results_'' + @p_sessionid SET @v_query='' CREATE TABLE ##DirectHits_By_Filter_Search ( {seqId} fileid bigint primary key, isparent bit, groupid bigint ) '' if(@IsFromWeb=1) begin set @v_query= REPLACE(@v_query,''{seqId}'','''') end else begin set @v_query= REPLACE(@v_query,''{seqId}'',''seq_no bigint,'') end exec sp_executesql @v_query SET @v_query = ''INSERT INTO ##DirectHits_By_Filter_Search '' + @p_filterclause exec sp_executesql @v_query --redmine 15270 SET @v_query = ''TRUNCATE TABLE '' + @v_temp_table_name EXEC sp_executesql @v_query SET @v_query = ''INSERT INTO '' + @v_temp_table_name + '' SELECT fileid, isparent, groupid FROM ##DirectHits_By_Filter_Search {orderClause}'' if(@IsFromWeb=1) begin set @v_query= REPLACE(@v_query,''{orderClause}'','''') end else begin set @v_query= REPLACE(@v_query,''{orderClause}'',''order by seq_no'') end EXEC sp_executesql @v_query set @p_totalhitcount = @@rowcount SET @p_status = ''SUCCESS'' --NOW DROP THE TEMPORARY TABLE THAT CONTAINS THE DIRECT HIT DOCUMENTS and temp filter search DROP TABLE ##DirectHits_By_Filter_Search END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ig_ManualIndexing] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ig_ManualIndexing'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ig_ManualIndexing]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'/** ============================================= -- Author: Deepak Shrestha -- Create date: 14 March 2014 -- Description: Manual Indexing Data -- ChangeLog: 1. Sujan Tiwari - 28th March, 2014 : Changed Query to show the count of the number of file whose fullText preference is changed in a media 2. Sujan Tiwari - 25th April, 2014 : Changed Query to include the function GetFulltextLocationByPreference for correct FullTextPreference Changed number 3. Deepak Shrestha 25th April 2014 log 3.1: Changed Join of table log 3.2: Changed in job completed case. 4. Deepak Shrestha 24th July 2014 : Change qry to return data of all selected mediaid, EnableIndex added as a flag to notify whether media can be manually indexed or not #2138 5. Deepak Shrestha 19 feb 2015: Optimizing query. using bulk query redmin ticketid #3205 6. Deepak Shrestha 26/07/2016 : Simplifying query redmine #12109 7. Deepak Shrestha 4 sept 2014: filte isIndex in notstarted, inprogress and completed files count 8. Deepak Shrestha 14 ocr 2019: mark in progress if Status = 1 OR (if status =2 then IsMergedToMainIndex=0 OR I.IndexedStatus=0) redmine#5474 -- ============================================= **/ CREATE PROCEDURE [dbo].[sp_ig_ManualIndexing] @MediaId NVARCHAR(MAX) AS BEGIN DECLARE @Query NVARCHAR(MAX) DECLARE @DefuleFulltextPreference1 NVARCHAR(50)=NULL,@DefuleFulltextPreference2 NVARCHAR(50)=NULL,@DefuleFulltextPreference3 NVARCHAR(50)=NULL SELECT TOP 1 @Defulefulltextpreference1= FullTextType FROM tbl_pj_FullTextPriority WITH(nolock) ORDER BY Priority ASC SELECT @Defulefulltextpreference2= FullTextType FROM tbl_pj_FullTextPriority WITH(nolock) WHERE Priority=2 SELECT TOP 1 @Defulefulltextpreference3= FullTextType FROM tbl_pj_FullTextPriority WITH(nolock) ORDER BY Priority DESC SET @Query=''IF OBJECT_ID(''''tempdb..#TMP'''') IS NOT NULL BEGIN DROP TABLE #TMP END CREATE TABLE #TMP(FileId BIGINT PRIMARY KEY, FullTextPreference NVARCHAR(25)) INSERT INTO #TMP (FileId,FullTextPreference) SELECT FI.FileID, Isnull(CASE WHEN M.DefaultPreference IS NOT NULL THEN M.DefaultPreference {1} {2} {3} END,''''''+@DefuleFulltextPreference1+'''''') AS FulltextPreference FROM tbl_ex_FileInfo FI WITH(NOLOCK) LEFT JOIN tbl_ft_FullTextMaster M WITH(NOLOCK) ON FI.FileID=M.FileId LEFT JOIN tbl_ex_FulltextFileLocation F WITH(NOLOCK) ON FI.FileId=F.FileID LEFT JOIN (SELECT DISTINCT F1.fileid from tbl_ex_FileInfo F1 WITH(NOLOCK), tbl_ft_ImageFullText I1 WITH(NOLOCK) WHERE F1.MediaId IN (''+@MediaId+'') AND F1.FILEID =I1.FILEID AND TiffOCRFulltextFileLocation IS NOT NULL) T ON FI.FileId=T.FileID LEFT JOIN tbl_ann_NativeRedactionDetail NR WITH(NOLOCK) ON FI.FileId=NR.FileID LEFT JOIN (SELECT DISTINCT F1.fileid from tbl_ex_FileInfo F1 WITH(NOLOCK), tbl_ft_ImageFullText I1 WITH(NOLOCK) WHERE F1.MediaId IN (''+@MediaId+'') AND F1.FILEID =I1.FILEID AND RedactedOCRFulltextFileLocation IS NOT NULL) R ON FI.FileId=R.FileID WHERE FI.MediaId IN (''+@MediaId+'') CREATE INDEX IDX_Tmp_ManualIndex ON #TMP (FileId,FullTextPreference) DECLARE @TblCount TABLE (MediaId BIGINT PRIMARY KEY,TotalFileCount BIGINT,IndexableFiles BIGINT, NotStarted BIGINT,InProgress BIGINT,Completed BIGINT,JobCompleted BIGINT,FullTextPreferenceChanged BIGINT) INSERT INTO @TblCount (MediaId,TotalFileCount ,IndexableFiles , NotStarted ,InProgress ,Completed ,JobCompleted ,FullTextPreferenceChanged ) SELECT FI.MediaId, ISNULL(COUNT(FI.FileId),0) AS TotalFileCount, ISNULL(SUM(CASE WHEN FI.IsIndexed=1 THEN 1 ELSE 0 END),0) AS IndexableFiles, ISNULL(SUM(CASE WHEN FI.ISINDEXED =1 AND (I.Status IN (0,-1) OR I.FILEID IS NULL) THEN 1 ELSE 0 END),0) AS NotStarted, ISNULL(SUM(CASE WHEN FI.ISINDEXED =1 AND (I.Status =1 OR (I.Status =2 AND (IsMergedToMainIndex=0 OR I.IndexedStatus=0))) THEN 1 ELSE 0 END),0) AS InProgress, ISNULL(SUM(CASE WHEN I.Status=2 AND I.IsMergedToMainIndex=1 AND I.IndexedStatus=1 AND FI.ISINDEXED =1 THEN 1 ELSE 0 END),0) AS Completed, ISNULL(MIN(CASE WHEN PJ.Status IN(-2,2) THEN 1 WHEN PJ.STATUS IS NULL THEN 4 ELSE 0 END),0) AS JobCompleted, --log 3.2 ISNULL(SUM(CASE WHEN I.IndexedStatus = 1 AND I.FullTextType <> T.FullTextPreference THEN 1 ELSE 0 END),0) AS FullTextPreferenceChanged FROM tbl_ex_FileInfo FI LEFT JOIN #TMP T ON FI.FileId=T.FileId LEFT JOIN tbl_ex_IndexStatusLog I WITH(NOLOCK) ON I.FileId=FI.FileId LEFT JOIN tbl_ds_projectJobInfo PJ WITH(NOLOCK) ON PJ.JOBID=I.JOBID WHERE FI.MediaId IN (''+@MediaId+'') GROUP BY FI.MediaId SELECT C.CUSTODIANNAME, C.CUSTODIANID, M.MEDIANAME, M.MEDIAID, ISNULL(TC.TotalFileCount, 0) AS TOTALFILECOUNT, ISNULL(TC.IndexableFiles, 0) AS INDEXABLEFILES, ISNULL(TC.NotStarted, 0) AS NOTSTARTED, ISNULL(TC.InProgress, 0) AS INPROGRESS, ISNULL(TC.Completed, 0) AS COMPLETED, ISNULL((TC.IndexableFiles-TC.NotStarted-TC.InProgress-TC.Completed), 0) AS ERRORED, ISNULL(FullTextPreferenceChanged, 0) AS FULLTEXTPREFERENCECHANGED, CASE WHEN TC.NotStarted=TC.IndexableFiles OR (TC.InProgress=0 AND TC.NotStarted>0) OR TC.NotStarted IS NULL THEN ''''Not Started'''' WHEN TC.InProgress>0 OR TC.JobCompleted=0 THEN ''''In Progress'''' WHEN TC.Completed=TC.IndexableFiles THEN ''''Completed'''' WHEN (TC.IndexableFiles-TC.NotStarted-TC.InProgress-TC.Completed)>0 THEN ''''Completed With Error'''' WHEN TC.NotStarted>0 THEN ''''Remaining to be Queued'''' END AS [STATUS], ''''Resume'''' AS ACTION, CAST(0 AS BIT) AS SELECTMEDIA,--log 4 CASE WHEN M.ScanStatus=2 AND M.MediaLocked=0 THEN 1 ELSE 0 END AS ENABLEINDEX --log 4 FROM Tbl_ex_Custodian C WITH(NOLOCK), Tbl_ex_Media M WITH(NOLOCK) LEFT JOIN --log 4 @TblCount TC ON M.MediaId=TC.MediaId WHERE M.CustodianId=C.CustodianId AND M.MediaId IN (''+@MediaId+'')--log 4 ORDER BY C.CustodianName, M.MediaName '' -- SET FIRST PREFERENCE IF(@Defulefulltextpreference1=''EXTRACTED'') SET @Query=REPLACE(@Query,''{1}'','' WHEN F.FileId IS NOT NULL THEN ''''EXTRACTED'''''') ELSE IF(@Defulefulltextpreference1=''TIFF_OCR'') SET @Query=REPLACE(@Query,''{1}'','' WHEN T.FileId IS NOT NULL THEN ''''TIFF_OCR'''''') ELSE SET @Query=REPLACE(@Query,''{1}'','' WHEN NR.FileID IS NOT NULL THEN ''''REDACTED_OCR'''' WHEN R.FileID IS NOT NULL THEN ''''REDACTED_OCR'''''') -- SET SECOND PREFERENCE IF(@Defulefulltextpreference2=''EXTRACTED'') SET @Query=REPLACE(@Query,''{2}'','' WHEN F.FileId IS NOT NULL THEN ''''EXTRACTED'''''') ELSE IF(@Defulefulltextpreference2=''TIFF_OCR'') SET @Query=REPLACE(@Query,''{2}'','' WHEN T.FileId IS NOT NULL THEN ''''TIFF_OCR'''''') ELSE SET @Query=REPLACE(@Query,''{2}'','' WHEN NR.FileID IS NOT NULL THEN ''''REDACTED_OCR'''' WHEN R.FileId IS NOT NULL THEN ''''REDACTED_OCR'''''') -- SET THIRD PREFERENCE IF(@Defulefulltextpreference3=''EXTRACTED'') SET @Query=REPLACE(@Query,''{3}'','' WHEN F.FileId IS NOT NULL THEN ''''EXTRACTED'''''') ELSE IF(@Defulefulltextpreference3=''TIFF_OCR'') SET @Query=REPLACE(@Query,''{3}'','' WHEN T.FileId IS NOT NULL THEN ''''TIFF_OCR'''''') ELSE SET @Query=REPLACE(@Query,''{3}'','' WHEN NR.FileID IS NOT NULL THEN ''''REDACTED_OCR'''' WHEN R.FileId IS NOT NULL THEN ''''REDACTED_OCR'''''') exec sp_executesql @Query END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [Sp_bak_SQLDatabaseBackup] 6509 ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].Sp_bak_SQLDatabaseBackup'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[Sp_bak_SQLDatabaseBackup]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' -- ============================================= --Author: Deepak Shrestha --Created On: 5th sept 2017 --Description: Procedure takes the sql backup of database. -- ============================================= CREATE PROCEDURE [Sp_bak_SQLDatabaseBackup] @DatabaseBackupFileName nvarchar(500),--location where bak file is created @DatabaseName nvarchar(200)--name of the source project AS BEGIN if not exists(select 1 from sys.databases WITH(NOLOCK) where name=@DatabaseName) BEGIN SELECT ''Project database does not exist. Please provide correct project Name.'' RETURN END BACKUP DATABASE @DatabaseName TO DISK = @DatabaseBackupFileName WITH INIT; END ' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [SP_GetEmailCount] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].SP_GetEmailCount'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[SP_GetEmailCount]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'-- ============================================= -- Author: Rupesh Acharya / SURAJ BABU MALLA -- Create date: 30 November -- Description: -- LAST UPDATED DATE: 2009-08-04 16:27:43.140 -- LAST UPDATE DESCRIPTION: TUNNING -- UPDATE DATE: 2014-05-16 -- UPDATED BY: BIPIN -- DESCRIPTION: DYNAMIC MEDIAID CLAUSE FOR NAVIGATION BY CUST/MEDIA,REVIEWSET AND FOLDER. MEDIAID CLAUSE WILL BE NULL FOR NAVIGATION BY REVIEWSET,FOLDER -- ChangeLog 1: Remove IsDuplicate filter. As there is no any duplicate filter in sender, recevier and diagram data. -- ChangeLog 2: Remove IsParent filter. As there is no any Isparent filter in sender, recevier and diagram data.ref #17563 -- ============================================= CREATE PROCEDURE [dbo].[SP_GetEmailCount] @p_medialist nvarchar(max) = null, @p_start_date datetime, @p_end_date datetime, @p_groupby varchar(20), @p_isfromsearch bit, @p_search_tmp_table varchar(100), @isFromGlobalSearch BIT, @GlobalEmailAddressId VARCHAR(MAX)--SENDERID OR RECEPIENTID AS BEGIN DECLARE @V_WHERECLAUSE NVARCHAR(MAX) --DECLARE @V_DUPLICATECLAUSE NVARCHAR(200) SET @V_WHERECLAUSE=''''; --SET @V_DUPLICATECLAUSE = ''T2.isduplicate = 0 AND''; IF(@isFromGlobalSearch=1) BEGIN SET @V_WHERECLAUSE='' T2.FILEID IN (SELECT DISTINCT FILEID FROM tbl_ex_EmailAddresses WHERE SENDERID IN (''+@GlobalEmailAddressId+'') OR RECEPIENTID IN (''+@GlobalEmailAddressId+'')) AND ''; END DECLARE @v_query nvarchar(max) DECLARE @v_tmp_qry nvarchar(max) set @v_tmp_qry = '' tbl_ex_fileinfo T2 '' IF(@p_isfromsearch = 1) BEGIN set @v_tmp_qry = '' '' + @p_search_tmp_table + '' T1 LEFT JOIN tbl_ex_fileinfo T2 ON T1.fileid = T2.fileid '' --SET @V_DUPLICATECLAUSE = '''' END SET @v_query = ''(SELECT CONVERT(VARCHAR(12),GroupDate,101) as [DayConcat], SUBSTRING(convert(varchar(7), GroupDate, 113),3,7) + cast(DatePart(YEAR, GroupDate) as varchar(4)) as [MonthConcat], ''''Wk '''' + case when len(DatePart(WK, GroupDate)) = 1 then ''''0'''' + cast(DatePart(WK, GroupDate) as varchar(1)) else '''''''' + cast(DatePart(WK, GroupDate) as varchar(2)) end + '''','''' + cast(DatePart(YEAR, GroupDate) as varchar(4)) as [WeekConcat], GroupDate as [Date], DatePart(YEAR, GroupDate) as [YEAR], count(T2.FileId) as [Count] from '' + @v_tmp_qry + '' where {whereclause} {mediaIdClause} -- T2.Isparent=1 AND T2.isemail = 1 AND -- {duplicateclause} T2.GroupDate between @p_start_date and @p_end_date group by DatePart(YEAR, T2.GroupDate), DatePart(MONTH, T2.GroupDate), DatePart(WK, T2.GroupDate), DatePart(DAY, T2.GroupDate), T2.GroupDate) AS T '' --SET @v_query= REPLACE(@v_query, ''{duplicateclause}'',@V_DUPLICATECLAUSE) IF(@p_groupby = ''YEAR'') SET @v_query = ''select year as ByDate, sum(count) as Count from '' + @v_query + '' group by year order by cast(year as int)'' ELSE IF(@p_groupby = ''MONTH'') SET @v_query = ''select [MonthConcat] as ByDate, sum(count) as Count from '' + @v_query + '' group by [MonthConcat] order by cast([MonthConcat] as datetime)'' ELSE IF(@p_groupby = ''WEEK'') SET @v_query = ''select [WeekConcat] as ByDate, sum(count) as Count from '' + @v_query + '' group by [WeekConcat] order by SUBSTRING([WeekConcat], 7,11), SUBSTRING([WeekConcat], 4,7)'' ELSE IF(@p_groupby = ''DAY'') SET @v_query = ''select [DayConcat] as ByDate, sum(count) as Count from '' + @v_query + '' group by [DayConcat] order by CONVERT(datetime,[DayConcat],101)'' ELSE SET @v_query = ''select year as ByDate, sum(count) as Count from '' + @v_query + '' group by year order by year'' SET @v_query= REPLACE(@v_query, ''{whereclause}'',@V_WHERECLAUSE) IF(@p_medialist IS NOT NULL) SET @v_query= REPLACE(@v_query, ''{mediaIdClause}'',''T2.mediaid IN (''+ @p_medialist +'') AND'') ELSE SET @v_query= REPLACE(@v_query, ''{mediaIdClause}'','''')--FOR REVIEWSET/FOLDER NAVIGATION EXEC sp_executesql @v_query,N''@p_start_date datetime,@p_end_date datetime'',@p_start_date,@p_end_date END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_ig_InsertFileInfoReplacementLog] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_ig_InsertFileInfoReplacementLog'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_ig_InsertFileInfoReplacementLog]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N'/* ============================================= -- Description: Insert replacement log -- ChangeLog 1. Sudeep, Feb 26, 2014 : Added ScanFileId 2. Deepak Shrestha, 27 FEB 2014 : REMOVE FROM TABLE :TBL_EX_EMAILADDRESSES tbl_ft_ImageFullText tbl_jb_OcrRedactedTiff tbl_jb_ocrGeneratedTiff tbl_jb_NDDJob tbl_VAR_Prediction_shadow PS tbl_VAR_PredictionResult PR dbo.tbl_VAR_TrainingItems TI 3. Sudeep , March 10, 2014 : Added IsZeroByte, IsUnSupported, IsUnknown, IsProcessingError 4. Bishal, April 21 2014 : Removed entry from table tbl_ft_FullTextMaster 5. Bhuwan, June 18 2014 : Removed entry from table tbl_rev_ReviewSet, tbl_rev_BatchFileAssociation and tbl_rev_FileInfo 6. RajanM, v5300, July 31 2014 : Added fields ChildCount,OriginalAccessPath,FSLastAccessDateTimeGMT,FSCreatedDateTimeGMT,FSModifiedDateTimeGMT,GroupDateGMT,IsZeroByte in tbl_ex_FileInfoReplacementLog in insertion query 7. RajanM, August 19 2014 : added RelativeIndexPathForQC tkt 2518 8. RajanM, August 20 2014 : delete tbl_ig_InvalidDate log table before deleting from fileinfo table tkt #1305 9. RajanM, Sep 12 2014 : re order the delete statements and delete log for tbl_tiff_shadow and tbl_tiff_images 10. SumanKarki, 15 Oct 2014, #3127 : Added delete statements for tables: tbl_ep_exportdetails, tbl_cmt_CommentFileReference, tbl_cmt_Comment, tbl_lg_AutoCollectedFileLog, tbl_ig_NSFUserIdFileLocation, tbl_ex_EmailConversationId, tbl_fd_FolderFilesAssociation, and tbl_ex_HTMLFileLocation. 11. SumanKarki, 4 NOV 2014 : Added IsPasswordDecrypted and IsPasswordDecryptionSupported in tbl_ig_FileInfoReplacementLog 12. Deepak Shrestha, 10 NOV 2014 : remove file from tbl_ig_NSFView 13. RajanM, 2 Dec 2014: remove file from tbl_ig_PasswordReprocessLog table 14. Bhuwan, 24 Dec, 2014 , alter table variable to temp table 15. Bipin, Jan 12, 2015 ,remove file from coding history table 16. Santosh, Feb 2, 2015, Added IsReprocess flag 17. Bhuwan, 2015-04-22, #5219 : Delete from tbl_jb_SkippedJobFiles. 18. RajanM, 2015-06-24, deleted from tbl_ep_TiffExportDetails. 19. Rajan, 2015 07 03: delete from tbl_ocr_partial_text 20. SumanK, Sept 22 2015: Added new column HashValueSecondary 21 Deepak Shrestha, 2016-nov-17, update groupid and iscentroid in ndd if its centroid file is delete 22 Deepak Shrestha, 2017-March-29, delet from only warning and error log when reprocess vts 10771 redmine #15625 23 Deepak Shrestha, 2017-March-29, added missing table tbl_ex_tag, tbl_ex_taghistory redmine #15625 24 Deepak Shrestha, 2017 may 1, DELETE INCLUSIVE EMAIL INFORMATION REF #15868 25 RajanM, 2018 March 23, Copied OriginalGroupId during file replacement. 26 Balmukunda Shrestha, 16 May 2018, Delete from tbl_ig_ArchiveAsEdocs 27 Deepak Shrestha, 2018 May 10, Adding group hash value in replacementlog table -- ============================================= */ CREATE PROCEDURE [dbo].[sp_ig_InsertFileInfoReplacementLog] @OldFileId bigint, @NewFileId bigint, @ReplacementType nvarchar(100), @ReplacementId bigint OUTPUT, @IsReprocess BIT = 0 AS BEGIN SET NOCOUNT ON; BEGIN TRANSACTION IF EXISTS (SELECT IsParent FROM tbl_ex_fileinfo WHERE FileId=@OldFileId AND IsParent = 1) BEGIN -- THIS IS THE CASE WHERE REPLACING(NEW) FILE WAS DEDUPED WITH REPLACED(OLD) FILE -- HAPPEN WHEN OLD FILE AND NEW FILE ARE SAME IF EXISTS(SELECT TOP(1) 1 FROM tbl_ex_fileinfo WHERE Fileid=@NewFileId AND IsDuplicate=1 AND OriginalGroupId=@OldFileId) UPDATE tbl_ex_fileinfo SET IsDuplicate=0, OriginalGroupId=-1 WHERE GroupId=@NewFileId OR FileId=@NewFileId -- REMAP ORIGINAL GROUPID TO NEW GROUPID UPDATE tbl_ex_fileinfo SET OriginalGroupId=@NewFileId WHERE OriginalGroupId=@OldFileId END --PROPAGATE TAGS UPDATE tbl_ex_filetagassociation SET FileID=@NewFileId WHERE FileId=@OldFileId DECLARE @ProjectID BIGINT SELECT @ProjectID =PROJECTID FROM TBL_PJ_PROJECTSETUP WITH(NOLOCK) WHERE DATABASEINSTANCENAME=DB_NAME() -- LOG DETAILS INSERT INTO tbl_ex_FileInfoReplacementLog ([CustodianId] ,[MediaId] ,[FileId] ,[FileName] ,[AbsoluteFilePath] ,[RelativeFilePath] ,[GroupId] ,[IsParent] ,[HashValue] ,[IsDuplicate] ,[IsDuplicateCustodianLevel] ,[OriginalGroupId] ,[AccessPath] ,[LogicalPath] ,[FileSize] ,[FileType] ,[IsArchive] ,[IsSystem] ,[IsEdocs] ,[IsEmail] ,[IsAttachment] ,[IsEmbedded] ,[ParentDocType] ,[Extension] ,[IsPasswordprotected] ,[IsCorrupted] ,[IsNonProcessed] ,[IsDedupProcessed] ,[IsIndexed] ,[isDeNIST] ,[GroupDate] ,[Createdon] ,[LastUpdateOn] ,[ParentFileID] ,[ElaspedTime] ,[HasHiddenObject] ,[ReplacementType] ,[ReplacedOn] ,[OriginalFilePath] ,[ReplacedFileId] ,[FSLastAccessDateTime] ,[FSCreatedDateTime] ,[FSModifiedDateTime] ,[OriginalFileExtension] ,[IsNoText] --LogId #6 ,[ChildCount] ,[OriginalAccessPath] ,[FSLastAccessDateTimeGMT] ,[FSCreatedDateTimeGMT] ,[FSModifiedDateTimeGMT] ,[GroupDateGMT] ,[ScanFileid] ,[IsUnknownFile] ,[IsUnSupportedFiletype] ,[IsProcessingError] ,[IsZeroByte] ,[RelativeIndexpathForQC] --LogId #7 ,[IsPasswordDecrypted] --LogId #11 ,[IsPasswordDecryptionSupported] --LogId #11 ,[HashValueSecondary] ,[IsWriteProtected] ,[GroupHashValue] ,[MetaDataExtractionSAFEerror] ,[HAS_EMBEDDED_IMAGE] ) SELECT fi.[CustodianId] ,fi.[MediaId] ,fi.[FileId] ,fi.[FileName] ,fi.[AbsoluteFilePath] ,fi.[RelativeFilePath] ,fi.[GroupId] ,fi.[IsParent] ,fi.[HashValue] ,fi.[IsDuplicate] ,fi.[IsDuplicateCustodianLevel] ,fi.[OriginalGroupId] ,fi.[AccessPath] ,fi.[LogicalPath] ,fi.[FileSize] ,fi.[FileType] ,fi.[IsArchive] ,fi.[IsSystem] ,fi.[IsEdocs] ,fi.[IsEmail] ,fi.[IsAttachment] ,fi.[IsEmbedded] ,fi.[ParentDocType] ,fi.[Extension] ,fi.[IsPasswordprotected] ,fi.[IsCorrupted] ,fi.[IsNonProcessed] ,fi.[IsDedupProcessed] ,fi.[IsIndexed] ,fi.[isDeNIST] ,fi.[GroupDate] ,fi.[Createdon] ,fi.[LastUpdateOn] ,fi.[ParentFileID] ,fi.[ElaspedTime] ,fi.[HasHiddenObject] ,@ReplacementType ,getdate() ,fi.[OriginalFilePath] ,@NewFileId ,fi.[FSLastAccessDateTime] ,fi.[FSCreatedDateTime] ,fi.[FSModifiedDateTime] ,fi.[OriginalFileExtension] ,fi.[IsNoText] --LogId #6 ,fi.[ChildCount] ,fi.[OriginalAccessPath] ,fi.[FSLastAccessDateTimeGMT] ,fi.[FSCreatedDateTimeGMT] ,fi.[FSModifiedDateTimeGMT] ,fi.[GroupDateGMT] ,fi.[ScanFileid] ,fi.[IsUnknownFile] ,fi.[IsUnSupportedFiletype] ,fi.[IsProcessingError] ,fi.[IsZeroByte] ,fi.[RelativeIndexpathForQC] --LogId #7 ,fi.IsPasswordDecrypted --LogId #11 ,fi.IsPasswordDecryptionSupported --LogId #11 ,fi.HashValueSecondary ,fi.[IsWriteProtected] ,fi.[GroupHashValue] ,fi.[MetaDataExtractionSAFEerror] ,fi.[HAS_EMBEDDED_IMAGE] FROM tbl_ex_fileinfo fi WITH(NOLOCK) WHERE fileid=@OldFileId SELECT @ReplacementId=scope_identity() DELETE FROM tbl_ig_WarningLog WHERE Fileid=@OldFileId DELETE FROM tbl_ex_errorlog WHERE FileId=@OldFileId -- Santosh -- Feb 2 2015 -- If it is not file reprocess then, delete from emailmeta, edocmeta and fileinfo -- In case of file reprocess emailmeta, edocmeta and fileinfo will be updated. IF @IsReprocess = 0 BEGIN DELETE FROM tbl_ex_IndexStatusLog WHERE FileId=@OldFileId DELETE FROM tbl_jb_SkippedJobFiles WHERE FileId=@OldFileId DELETE FROM tbl_ocr_Shadow WHERE FileId=@OldFileId DELETE FROM tbl_ex_filelanguage WHERE FileId=@OldFileId DELETE FROM tbl_ex_fulltextfilelocation WHERE FileId=@OldFileId DELETE FROM tbl_ex_hiddenfulltextfilelocation WHERE FileId=@OldFileId --CUSTOM FIELD DELETE tbl_rev_customfield WHERE FileId=@OldFileId DELETE FROM tbl_tiff_skipInformation WHERE FileId = @OldFileId --remove from tbl_qc_DocSetFileAssociation DELETE FROM [tbl_qc_DocSetFileAssociation] WHERE FileId=@OldFileId DELETE FROM tbl_jb_GenericJobDetail WHERE fileid=@OldFileId --remove from tbl_jb_RTFJob DELETE FROM tbl_jb_RTFJob WHERE FileId =@OldFileId --LogId #9 --remove from tbl_TIFF_shadow DELETE FROM tbl_TIFF_shadow WHERE FileId=@OldFileId --remove from tbl_TIFF_images DELETE FROM tbl_TIFF_images WHERE FileId=@OldFileId --remove from tbl_jb_TiffpreQc DELETE FROM tbl_jb_TiffpreQc WHERE FileId =@OldFileId --remove from tbl_qc_PreQcImage DELETE FROM tbl_qc_PreQcImage WHERE FileId=@OldFileId --remove from tbl_qc_Image DELETE FROM tbl_qc_Image WHERE FileId=@OldFileId --remove from tbl_qc_Document DELETE FROM tbl_qc_Document WHERE FileId=@OldFileId --remove from tbl_qc_note DELETE FROM tbl_qc_note WHERE FileId=@OldFileId --remove from tbl_ex_RTFFileLocation DELETE FROM tbl_ex_RTFFileLocation WHERE FileId= @OldFileId --remove from tbl_ex_printlog-- --DELETE FROM tbl_ex_printlog --WHERE FileId=@OldFileId --Begin LogId=10 --remove from tbl_ep_exportdetails DELETE FROM tbl_ep_exportdetails WHERE FileID=@OldFileId DELETE FROM tbl_ep_TiffExportDetails WHERE FileID=@OldFileId --remove from tbl_cmt_CommentFileReference DELETE FROM tbl_cmt_CommentFileReference WHERE FileID=@OldFileId --remove from tbl_cmt_Comment DELETE FROM tbl_cmt_Comment WHERE FileID=@OldFileId --remove from tbl_lg_AutoCollectedFileLog DELETE FROM tbl_lg_AutoCollectedFileLog WHERE FileID=@OldFileId --remove from tbl_ig_NSFUserIdFileLocation DELETE FROM tbl_ig_NSFUserIdFileLocation WHERE FileID=@OldFileId DECLARE @query nvarchar(200)=''(select '' + cast(@OldFileId as nvarchar(180)) + '' as fileid)'' EXEC sp_ex_RemoveInclusiveEmailInfo @query --remove from tbl_ex_EmailConversationId DELETE FROM tbl_ex_EmailConversationId WHERE FileID=@OldFileId --remove from tbl_fd_FolderFilesAssociation DELETE FROM tbl_fd_FolderFilesAssociation WHERE FileID=@OldFileId DELETE FROM TBL_EX_FileTagAssociation where fileid=@OldFileId DELETE FROM tbl_ex_TagHistory WHERE FILEID=@OldFileId --remove from tbl_ex_HTMLFileLocation DELETE FROM tbl_ex_HTMLFileLocation WHERE FileID=@OldFileId --End LogId=10 --remove from tbl_ex_HTMLFileParts DELETE FROM tbl_ex_HTMLFileParts WHERE FileID=@OldFileId --remove from tbl_ex_FullTextFileParts DELETE FROM tbl_ex_FullTextFileParts WHERE FileID=@OldFileId --LOG1 --remove from TBL_EX_EMAILADDRESSES DELETE FROM TBL_EX_EMAILADDRESSES WHERE FileId=@OldFileId --remove from tbl_ft_ImageFullText DELETE FROM tbl_ft_ImageFullText WHERE FileId=@OldFileId --remove from tbl_jb_ocrGeneratedTiff DELETE FROM tbl_jb_ocrGeneratedTiff WHERE FileId =@OldFileId --remove from tbl_jb_OcrRedactedTiff DELETE FROM tbl_jb_OcrRedactedTiff WHERE FileId =@OldFileId --remove from tbl_ann_AnnotationDetail DELETE FROM tbl_ann_AnnotationDetail WHERE FileId = @OldFileId --remove from tbl_ann_NativeRedactionDetail DELETE FROM tbl_ann_NativeRedactionDetail WHERE FileId = @OldFileId --remove from tbl_ann_NativeRedactionLog DELETE FROM tbl_ann_NativeRedactionLog WHERE FileId = @OldFileId --remove from tbl_jb_FulltextGeneration DELETE FROM tbl_jb_FulltextGeneration WHERE FileId = @OldFileId --remove from tbl_ft_FullTextMaster DELETE FROM tbl_ft_FullTextMaster WHERE FileId =@OldFileId --remove from tbl_ig_ArchiveAsEdocs DELETE FROM tbl_ig_ArchiveAsEdocs WHERE FileId =@OldFileId --remove from tbl_jb_NDDJob --log 21 DECLARE @ROWAFFECTED BIGINT UPDATE NDD WITH(ROWLOCK) SET IsCentroid= 0 , GROUPID=NULL FROM tbl_jb_NDDJob NDD, tbl_jb_NDDJob ND WITH(NOLOCK) WHERE ND.fileid=@OldFileId AND ND.IsCentroid=1 AND ND.GROUPID=NDD.GROUPID SET @ROWAFFECTED =@@Rowcount DELETE FROM tbl_jb_NDDJob WHERE FileId =@OldFileId IF(@ROWAFFECTED >0) BEGIN IF NOT EXISTS(SELECT TOP 1 1 FROM TBL_DS_PROJECTJOBINFO WITH(NOLOCK) WHERE NAME=''Near Duplicates'' AND [bulkprocessingstatus] IN (0)) BEGIN DECLARE @JOBID BIGINT DECLARE @DISPLAYREMARKS NVARCHAR(500)=''Near Duplicates - Auto Queue to fix centroid group'' INSERT INTO TBL_DS_PROJECTJOBINFO ( [Name], [Status], [IsQueuingCompleted], [QueuedOn], [Startedon], [CompletedOn], [QueuedBy], [BulkProcessingInstanceId], [BulkProcessingStatus], [DisplayRemarks], [ProjectJobGroupId], [PostProcessingStatus]) VALUES ( ''Near Duplicates'', 0, 1, GETDATE(), NULL, NULL, 1, NULL, 0, @DISPLAYREMARKS, NULL, NULL) SET @JOBID = SCOPE_IDENTITY() UPDATE TBL_DS_PROJECTJOBINFO WITH(ROWLOCK) SET [ProjectJobGroupId]=@JOBID WHERE JOBID=@JOBID INSERT INTO TBL_DS_JOBINFO ( [PROJECTID], [JOBID], [NAME], [STATUS], [PRIORITY], [DISPLAYREMARKS] ) VALUES ( @ProjectID, @JOBID, ''Near Duplicates'', 0, DATEDIFF(SS, ''1/1/1970'', GETDATE()) , @DISPLAYREMARKS) END END -- ChangeLog #14 Bhuwan IF OBJECT_ID(''tempdb..#VarFiles'') IS NOT NULL DROP TABLE #VarFiles CREATE TABLE #VarFiles (TRAININGITEMID Varchar(47), PROFILEID int, CATEGORYID int,FILEID BIGINT ) INSERT INTO #VarFiles SELECT TRAININGITEMID,PROFILEID , CATEGORYID ,T.FILEID FROM TBL_VAR_TRAININGITEMS T WITH(NOLOCK) WHERE T.FileID=@OldFileId DELETE FROM dbo.tbl_VAR_Prediction_shadow WHERE FileId=@OldFileId DELETE FROM dbo.tbl_VAR_PredictionResult WHERE FileId=@OldFileId DELETE FROM dbo.tbl_VAR_TrainingItems WHERE FileId=@OldFileId DECLARE @p_userid BIGINT SELECT @p_userid =P.QueuedBy FROM tbl_ds_ProjectJobInfo P WITH(NOLOCK), tbl_ex_ReplacementJob R WITH(NOLOCK) WHERE P.JobId=R.JobId AND R.FileId=@OldFileId INSERT INTO tbl_VAR_TrainingItemLog ([TrainingITemID] ,[FileID],[Action] ,[ProfileID] ,[CategoryID],[CreatedBy],[CreatedOn]) SELECT TrainingItemID,FileID,''REMOVED'',ProfileID,CategoryID,@p_userid,GETDATE() FROM #VarFiles --ChangeLog #5 Bhuwan DELETE FROM tbl_rev_ReviewSet WHERE FileId=@OldFileId DELETE FROM tbl_rev_BatchFileAssociation WHERE FileId=@OldFileId DELETE FROM tbl_rev_FileInfo WHERE FileId=@OldFileId --ChangeLog #8 RajanM DELETE FROM tbl_ig_InvalidDate WHERE FileId=@OldFileId --remove entry from [tbl_ig_NSFView] logid 12 DELETE FROM tbl_ig_NSFView WHERE SourceNSFFileId =@OldFileId --DELETE FROM tbl_ex_CodingHistory ChangeLog #15 DELETE FROM tbl_ex_CodingHistory WHERE FileId = @OldFileId --delete from tbl_ocr_partial_text DELETE FROM tbl_ocr_Partial_Text WHERE FileId = @OldFileId --DELETE FROM tbl_ig_PasswordReprocessLog ChangeLog #13 DELETE FROM PRL FROM tbl_ig_PasswordReprocessLog PRL, tbl_ex_FileInfo fi WITH (NOLOCK) WHERE fi.fileid = PRL.FileId and fi.FileId = @OldFileId ----DELETE PROMOTE FILES FROM JOB AND tbl_pr_FileInfoPromoteFileAssociation IF OBJECT_ID(''tempdb..#Temp_PromoteFile'') IS NOT NULL DROP TABLE #Temp_PromoteFile CREATE TABLE #Temp_PromoteFile(SourceFileId BIGINT, SourceProjectId BIGINT) INSERT INTO #Temp_PromoteFile (SourceFileId,SourceProjectId) SELECT PF.SourceFileId,PF.SourceProjectId FROM tbl_pr_FileInfoPromoteFileAssociation PF WITH(NOLOCK) WHERE PF.FileId= @OldFileId IF EXISTS(SELECT TOP 1 1 FROM #Temp_PromoteFile) BEGIN CREATE NONCLUSTERED INDEX #idx_Temp_PromoteFile ON #Temp_PromoteFile (SourceFileId,SourceProjectId) DELETE J FROM tbl_jb_PromoteDocumentInformation J , tbl_ds_ProjectJobInfo PJ WITH(NOLOCK), tbl_pr_PromoteInfo PR WITH(NOLOCK), #Temp_PromoteFile T WHERE PJ.JobId= J.JobId AND PJ.OtherSettings.value(''(OtherSettings/PromoteId)[1]'',''BIGINT'')= PR.PromoteId AND PR.SourceProjectId=T.SourceProjectId AND J.SourceFileId=T.SourceFileId DELETE J FROM tbl_jb_PromoteFileCopy J , tbl_ds_ProjectJobInfo PJ WITH(NOLOCK), tbl_pr_PromoteInfo PR WITH(NOLOCK), #Temp_PromoteFile T WHERE PJ.JobId= J.JobId AND PJ.OtherSettings.value(''(OtherSettings/PromoteId)[1]'',''BIGINT'')= PR.PromoteId AND PR.SourceProjectId=T.SourceProjectId AND J.SourceFileId=T.SourceFileId DELETE J FROM tbl_jb_PromoteWorkProduct J , tbl_ds_ProjectJobInfo PJ WITH(NOLOCK), tbl_pr_PromoteInfo PR WITH(NOLOCK), #Temp_PromoteFile T WHERE PJ.JobId= J.JobId AND PJ.OtherSettings.value(''(OtherSettings/PromoteId)[1]'',''BIGINT'')= PR.PromoteId AND PR.SourceProjectId=T.SourceProjectId AND J.SourceFileId=T.SourceFileId DELETE J FROM #Temp_PromoteFile T , tbl_pr_FileInfoPromoteFileAssociation J WHERE J.SourceFileId=T.SourceFileId AND T.SourceProjectId=J.SourceProjectId END DELETE FROM tbl_ex_emailmeta WHERE FileID=@OldFileId DELETE FROM tbl_ex_edocmeta WHERE Fileid=@OldFileId DELETE FROM tbl_ex_metadata WHERE fileid=@OldFileId DELETE FROM tbl_ex_fileinfo WHERE fileid=@OldFileId -- NOW COPY SOME ORIGINAL DATA (ref. ticket#2161) UPDATE tbl_ex_fileinfo SET GroupDate= t2.GroupDate, HashValue =Case When t2.HashValue is not null AND t2.HashValue != '''' Then t2.HashValue Else t1.HashValue END, HashValueSecondary = Case When t2.HashValueSecondary is not null AND t2.HashValueSecondary != '''' Then t2.HashValueSecondary Else t1.HashValueSecondary END, [filename] = t2.[FileName], Extension = t2.Extension, AbsoluteFilePath = t2.AbsoluteFilePath, RelativeFilePath = t2.RelativeFilePath, LogicalPath = t2.LogicalPath, OriginalFilePath = t2.OriginalFilePath, Filesize = Case When t2.FileSize is not null AND t2.FileSize != 0 Then t2.FileSize Else t1.FileSize END, FSLastAccessDateTime = t2.FSLastAccessDateTime, FSCreatedDateTime = t2.FSCreatedDateTime, FSModifiedDateTime = t2.FSModifiedDateTime, OriginalFileExtension = t2.OriginalFileExtension, IsDuplicate = t2.IsDuplicate, OriginalGroupId = T2.OriginalGroupId, IsDuplicateCustodianLevel = t1.IsDuplicateCustodianLevel, IsDedupProcessed = t1.IsDedupProcessed, GroupHashValue=t1.GroupHashValue FROM tbl_ex_fileinfo t1, tbl_ex_FileInfoReplacementLog t2 WHERE t1.FileId = @NewFileId AND t1.FileId = t2.ReplacedFileId AND t1.ParentFileID=t2.ParentFileID DROP TABLE #VarFiles END COMMIT END' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query ------------------------------------------------------------------------------- --CHANGE PROCEDURE [sp_sh_GetTiffPages] ------------------------------------------------------------------------------- SET @v_query = N' IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].sp_sh_GetTiffPages'') AND type in (N''P'', N''PC'')) DROP PROCEDURE [dbo].[sp_sh_GetTiffPages]' SET @v_query=Replace(@v_query, '''','''''') SET @v_query = ' EXEC '+@DBName+'.dbo.sp_executesql @statement = N''' + @v_query + '''' SET @v_query=Replace(@v_query, '''','''''') SET @v_query=Replace(@v_qeury_with_linkServer_Execution, '{query}',@v_query) EXEC SP_executesql @v_query SET @v_query = N' /* ============================================= -- Author: -- Create date: -- Description: