'AdvanceSearchPro'

USE [Hydra_Mig]
-- time convert: Hours-->Minutes
IF EXISTS (SELECT name FROM sysobjects WHERE name='timeCast' AND type='FN')
 DROP FUNCTION dbo.timeCast
GO
CREATE FUNCTION dbo.timeCast(@timeStr varchar(50))
returns varchar(50)
AS
BEGIN
 DECLARE @timeValue varchar(50)
 IF charindex('Day',@timeStr) > 0
  SET @timeValue = convert(varchar(50),
      convert(numeric(31,8),substring(@timeStr,0,len(@timeStr)-6))*86400);
 IF charindex('Hour',@timeStr) > 0
  SET @timeValue = convert(varchar(50),
      convert(numeric(31,8),substring(@timeStr,0,len(@timeStr)-6))*3600);
 IF charindex('Minute(s)',@timeStr) > 0
  SET @timeValue = substring(@timeStr,0,len(@timeStr)-9);

 RETURN @timeValue
END
GO
----string split
IF EXISTS (SELECT name FROM sysobjects WHERE name='strSplitToTable' AND type='TF')
 DROP FUNCTION dbo.strSplitToTable
GO
CREATE FUNCTION dbo.strSplitToTable
(
@str   VARCHAR(300)
)
RETURNS   @retab   table(id   VARCHAR(100))
AS
BEGIN
 DECLARE @spli   VARCHAR(5)
 SET @spli = ','
    DECLARE   @i  INT
    DECLARE   @splen   INT
    SELECT   @splen=len(@spli),@i=charindex(@spli,@str)
    WHILE   @i>0
    BEGIN
        INSERT INTO   @retab   
        VALUES(left(@str,@i-1))
        SELECT   @str=substring(@str,@i+@splen,300)
        SELECT   @i=charindex(@spli,@str)
    END
    IF @str <>' ' INSERT INTO @retab VALUES(@str)
    RETURN
END
GO
--if this procedure is exist,we will drop it
IF OBJECT_ID( 'AdvanceSearchPro','P') IS NOT NULL
DROP PROCEDURE AdvanceSearchPro;
GO

CREATE PROCEDURE [projectcenter].[AdvanceSearchPro]  --create advance search procedure
--input parameters
(
@page_count int OUTPUT
,@xmlParams varchar(max) = null
)
--WITH RECOMPILE 
AS
BEGIN
SET   NOCOUNT   ON

----xml params
DECLARE @idoc int
DECLARE @ParamsTable TABLE
(
 id int NOT NULL,
 pId int,
 pKey varchar(50) NOT NULL,
 pType varchar(50),
 pContent nvarchar(max) COLLATE Chinese_PRC_CI_AS
)
EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlParams
insert into @ParamsTable
SELECT id,pId,pKey,pType,pContent  FROM OPENXML (@idoc, '/root/defect/param', 1)     
WITH (id int,pId int,pKey varchar(50),pType varchar(50),pContent ntext'text()')
exec sp_xml_removedocument @idoc

DECLARE @orderBy varchar(100)
SELECT @orderBy = pContent FROM @ParamsTable WHERE pKey='orderBy'
DECLARE @ascDesc varchar(100)
SELECT @ascDesc = pContent FROM @ParamsTable WHERE pKey='ascDesc'
DECLARE @project_group_id Numeric(19, 0)
SELECT @project_group_id = pContent FROM @ParamsTable WHERE pKey='projectGroupId'
DECLARE @user_id numeric(19,0)
SELECT @user_id = pContent FROM @ParamsTable WHERE pKey='userId'
DECLARE @page_index int
SELECT @page_index = pContent FROM @ParamsTable WHERE pKey='pageIndex'

DECLARE @id varchar(50)
SELECT @id=pContent FROM @ParamsTable WHERE pId=1

DECLARE @summary varchar(50)
SELECT @summary=pContent FROM @ParamsTable WHERE pId=2

DECLARE @ticket_type_id varchar(50)
SELECT @ticket_type_id=pContent FROM @ParamsTable WHERE pId=3

DECLARE @status_id VARCHAR(50)
SELECT @status_id=pContent FROM @ParamsTable WHERE pId=4

DECLARE @resolution_id varchar(100)
SELECT @resolution_id=pContent FROM @ParamsTable WHERE pId=5

DECLARE @description varchar(max)
SELECT @description=pContent FROM @ParamsTable WHERE pId=6

DECLARE @priority_id varchar(100)  --priority_id
SELECT @priority_id=pContent FROM @ParamsTable WHERE pId=7

DECLARE @severity_id varchar(100)     --severity_id
SELECT @severity_id=pContent FROM @ParamsTable WHERE pId=8

DECLARE @assigned_user_id VARCHAR(100)   -- assigned_user_id
SELECT @assigned_user_id=pContent FROM @ParamsTable WHERE pId=9

DECLARE @reviewer_user_id VARCHAR(100)   --reviewer_user_id
SELECT @reviewer_user_id=pContent FROM @ParamsTable WHERE pId=10

DECLARE @detectd_by_user_id VARCHAR(100)
SELECT @detectd_by_user_id=pContent FROM @ParamsTable WHERE pId=11

DECLARE @due_date_from VARCHAR(100)  --due_date
SELECT @due_date_from=pContent FROM @ParamsTable WHERE pId=12 AND pKey='from'

DECLARE @due_date_to   VARCHAR(100)   --due_date
SELECT @due_date_to=pContent FROM @ParamsTable WHERE pId=12 AND pKey='to'

DECLARE @response_time_from VARCHAR(100)  --response_time
SELECT @response_time_from=pContent FROM @ParamsTable WHERE pId=13 AND pKey='from'

DECLARE @response_time_to VARCHAR(100)  --response_time
SELECT @response_time_to=pContent FROM @ParamsTable WHERE pId=13 AND pKey='to'

DECLARE @resolution_time_from VARCHAR(100)
SELECT @resolution_time_from=pContent FROM @ParamsTable WHERE pId=14 AND pKey='from'

DECLARE @resolution_time_to VARCHAR(100)
SELECT @resolution_time_to=pContent FROM @ParamsTable WHERE pId=14 AND pKey='to'

DECLARE @estimated_size_from VARCHAR(100)  --estimated_size
SELECT @estimated_size_from=pContent FROM @ParamsTable WHERE pId=15 AND pKey='from'

DECLARE @estimated_size_to VARCHAR(100)  --estimated_size
SELECT @estimated_size_to=pContent FROM @ParamsTable WHERE pId=15 AND pKey='to'

DECLARE @actual_size_from VARCHAR(100)   --actual_size
SELECT @actual_size_from=pContent FROM @ParamsTable WHERE pId=16 AND pKey='from'

DECLARE @actual_size_to VARCHAR(100)   --actual_size
SELECT @actual_size_to=pContent FROM @ParamsTable WHERE pId=16 AND pKey='to'

DECLARE @planned_start_from VARCHAR(100)  --planned_start
SELECT @planned_start_from=pContent FROM @ParamsTable WHERE pId=17 AND pKey='from'

DECLARE @planned_start_to VARCHAR(100) --planned_start
SELECT @planned_start_to=pContent FROM @ParamsTable WHERE pId=17 AND pKey='to'

DECLARE @planned_finish_from VARCHAR(100) --planned_finish
SELECT @planned_finish_from=pContent FROM @ParamsTable WHERE pId=18 AND pKey='from'

DECLARE @planned_finish_to VARCHAR(100) --planned_finish
SELECT @planned_finish_to=pContent FROM @ParamsTable WHERE pId=18 AND pKey='to'

DECLARE @duration_from VARCHAR(100)   --duration
SELECT @duration_from=pContent FROM @ParamsTable WHERE pId=19 AND pKey='from'

DECLARE @duration_to VARCHAR(100)    --duration
SELECT @duration_to=pContent FROM @ParamsTable WHERE pId=19 AND pKey='to'

DECLARE @actual_start_from VARCHAR(100)
SELECT @actual_start_from=pContent FROM @ParamsTable WHERE pId=20 AND pKey='from'

DECLARE @actual_start_to VARCHAR(100)
SELECT @actual_start_to=pContent FROM @ParamsTable WHERE pId=20 AND pKey='to'

DECLARE @actual_finish_from VARCHAR(100)
SELECT @actual_finish_from=pContent FROM @ParamsTable WHERE pId=21 AND pKey='from'

DECLARE @actual_finish_to VARCHAR(100)
SELECT @actual_finish_to=pContent FROM @ParamsTable WHERE pId=21 AND pKey='to'

--DECLARE @project_module_id VARCHAR(100)
--SELECT @project_module_id=pContent FROM @ParamsTable WHERE pId='22'
-----
DECLARE @created_time_from VARCHAR(100)
SELECT @created_time_from=pContent FROM @ParamsTable WHERE pId=26 AND pKey='from'

DECLARE @created_time_to VARCHAR(100)
SELECT @created_time_to=pContent FROM @ParamsTable WHERE pId=26 AND pKey='to'

DECLARE @update_time_from VARCHAR(100)
SELECT @update_time_from=pContent FROM @ParamsTable WHERE pId=27 AND pKey='from'

DECLARE @update_time_to VARCHAR(100)
SELECT @update_time_to = pContent FROM @ParamsTable WHERE pId=27 AND pKey='to'

DECLARE @original_estimated_effort_from VARCHAR(100) --original_estimated_effort
SELECT @original_estimated_effort_from=pContent FROM @ParamsTable WHERE pId=28 AND pKey='from'

DECLARE @original_estimated_effort_to VARCHAR(100)
SELECT @original_estimated_effort_to=pContent FROM @ParamsTable WHERE pId=28 AND pKey='to'

DECLARE @latest_estimated_effort_from VARCHAR(100)  --latest_estimated_effort
SELECT @latest_estimated_effort_from=pContent FROM @ParamsTable WHERE pId=29 AND pKey='from'

DECLARE @latest_estimated_effort_to VARCHAR(100)
SELECT @latest_estimated_effort_to=pContent FROM @ParamsTable WHERE pId=29 AND pKey='to'

DECLARE @CustomizedColumn int
select @CustomizedColumn= count(pId) from @ParamsTable where  pId>33 or pId in (22,23,24,25)

DECLARE @project_id numeric(19,0)
select @project_id = p.id from projectcenter.project p where p.group_id = @project_group_id

DECLARE @actual_effort_fix VARCHAR(100)
SELECT @actual_effort_fix=pContent FROM @ParamsTable WHERE pId='30'

DECLARE @review_comments_no VARCHAR(100)
SELECT @review_comments_no=pContent FROM @ParamsTable WHERE pId='33'

DECLARE @newId NVARCHAR(100)
SET @newId = newId()

IF (@CustomizedColumn > 0)
Begin

DECLARE @optionsStr NVARCHAR(1000)
DECLARE @modules NVARCHAR(1000)
DECLARE @version NVARCHAR(1000)
DECLARE @option_id_temp NVARCHAR(1000)
DECLARE @defect_field_name_id NVARCHAR(1000)

SET @optionsStr = ''
SET @modules = ''
SET @version = ''
SET @option_id_temp = ''
SET @defect_field_name_id = ''

DECLARE option_cursor CURSOR FOR
select par.pContent, par.pId  from @ParamsTable par
where par.pType = 'list'
and (par.pId > 33 or par.pId in (22,23,24,25))

OPEN option_cursor;
FETCH NEXT from option_cursor into @option_id_temp, @defect_field_name_id
WHILE(@@FETCH_STATUS = 0)
BEGIN 
 IF(@defect_field_name_id=22)
  IF (@modules = '')
   SET @modules = @option_id_temp;
  ELSE
   SET @modules = @modules+','+@option_id_temp
  
 ELSE IF(@defect_field_name_id in (23,24,25))
  IF (@version = '')
   SET @version = @option_id_temp;
  ELSE
   SET @version = @version+','+@option_id_temp
 ELSE
  IF (@optionsStr = '')
   SET @optionsStr = @option_id_temp;
  ELSE
   SET @optionsStr = @optionsStr+','+@option_id_temp
 FETCH NEXT from option_cursor into @option_id_temp, @defect_field_name_id
END
CLOSE option_cursor
deallocate option_cursor

Declare @optionTable Table(
 option_name nvarchar(200) COLLATE Chinese_PRC_CI_AS,
 type varchar(10),
 field_info_id int
)
IF @modules <> ''
BEGIN
 SET @modules = N'select pgm.name,''mo'',null from projectcenter.project_group_module pgm where pgm.id in (' +@modules+')';
 insert into @optionTable EXEC sp_executesql @modules
END
IF @version <> ''
BEGIN
 SET @version = N'select pgv.name, ''ve'', null from projectcenter.project_group_version pgv where pgv.id in (' +@version+')';
 insert into @optionTable EXEC sp_executesql @version
END

IF @optionsStr <> ''
BEGIN
 SET @optionsStr = N'select op.name ,''opt'',op.defect_field_info_id from projectcenter.options op where op.id in (' +@optionsStr+')';
 insert into @optionTable  EXEC sp_executesql @optionsStr
END

insert into projectcenter.defect_id_temp (defect_id,juid)
SELECT defect.id, @newId
FROM projectcenter.defect AS defect
LEFT JOIN (select defect_id,max(changed_time) as changed_time from projectcenter.defect_change_log group by defect_id ) AS defect_change_log on defect.id = defect_change_log.defect_id
WHERE defect.project_id = @project_id and
(isnull(@id,null) IS  NULL OR id like @id) AND
(isnull(@summary,null) IS NULL OR summary like @summary) AND
(isnull(@ticket_type_id,null) IS NULL OR exists
 (select 1 FROM projectcenter.ticket_type tt where tt.id=ticket_type_id and tt.name in
  (select distinct ticket_type.name from projectcenter.ticket_type WHERE ticket_type.id in (select 1 from dbo.strSplitToTable(@ticket_type_id) ) )
    )
) AND
(isnull(@status_id,null) IS NULL OR status_id = @status_id) AND  --List
(isnull(@resolution_id,null) IS NULL OR resolution_id in
 (
  select opt.id
  FROM projectcenter.options AS opt
  WHERE
  exists (
    SELECT 1
    FROM projectcenter.options AS opt1
    WHERE opt1.id in (select id from dbo.strSplitToTable(@resolution_id)) and
    opt1.name=opt.name AND opt1.defect_field_info_id=opt.defect_field_info_id
  )
 )
) AND  ---List
(isnull(@description,null) IS NULL OR [description] like @description) AND
(isnull(@priority_id,null) IS NULL OR priority_id IN
 (
  select opt.id
  FROM projectcenter.options AS opt
  WHERE
  exists (
    SELECT 1
    FROM projectcenter.options AS opt1
    WHERE opt1.id in (select id from dbo.strSplitToTable(@priority_id)) and
    opt1.name=opt.name AND opt1.defect_field_info_id=opt.defect_field_info_id
  )
 )
 ) AND
(isnull(@severity_id,null) IS NULL OR severity_id IN
  (
  select opt.id
  FROM projectcenter.options AS opt
  WHERE
  exists (
    SELECT 1
    FROM projectcenter.options AS opt1
    WHERE opt1.id in (select id from dbo.strSplitToTable(@severity_id)) and
    opt1.name=opt.name AND opt1.defect_field_info_id=opt.defect_field_info_id
  )
 )
) AND
(isnull(@assigned_user_id,null) IS NULL OR assigned_user_id=@assigned_user_id ) AND
(isnull(@reviewer_user_id,null) IS NULL OR reviewer_user_id=@reviewer_user_id ) AND
(isnull(@detectd_by_user_id,null) IS NULL OR detectd_by_user_id=@detectd_by_user_id ) AND
(isnull(@due_date_from,null) IS NULL OR due_date>=CAST(@due_date_from AS datetime) ) AND
(isnull(@due_date_to,null) IS NULL OR due_date<=CAST(@due_date_to AS datetime) ) AND
(isnull(@response_time_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(response_time))>=convert(numeric(31,8),dbo.timeCast(@response_time_from)) ) AND
(isnull(@response_time_to,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(response_time))<=convert(numeric(31,8),dbo.timeCast(@response_time_to ))) AND
(isnull(@resolution_time_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(resolution_time))>=convert(numeric(31,8),dbo.timeCast(@resolution_time_from ))) AND
(isnull(@resolution_time_to,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(resolution_time))<=convert(numeric(31,8),dbo.timeCast(@resolution_time_to))) AND
(isnull(@estimated_size_from,null) IS NULL OR convert(int,estimated_size)>=convert(int,@estimated_size_from)) AND
(isnull(@estimated_size_to,null) IS NULL OR convert(int,estimated_size)<=convert(int,@estimated_size_to)) AND
(isnull(@actual_size_from,null) IS NULL OR convert(int,estimated_size)>=convert(int,@estimated_size_from)) AND
(isnull(@actual_size_to,null) IS NULL OR convert(int,estimated_size)<=convert(int,@estimated_size_to)) AND
(isnull(@planned_start_from,null) IS NULL OR planned_start>=CAST(@planned_start_from AS datetime)) AND
(isnull(@planned_start_to,null) IS NULL OR planned_start<=CAST(@planned_start_to AS datetime)) AND
(isnull(@planned_finish_from,null) IS NULL OR planned_finish>=CAST(@planned_finish_from AS datetime)) AND
(isnull(@planned_finish_to,null) IS NULL OR planned_finish<=CAST(@planned_finish_to AS datetime)) AND
(isnull(@duration_from,null) IS NULL OR convert(int,duration)>=convert(int,@duration_from)) AND
(isnull(@duration_to,null) IS NULL OR convert(int,duration)<=convert(int,@duration_to)) AND
(isnull(@actual_start_from,null) IS NULL OR actual_start<=CAST(@actual_start_from AS datetime)) AND
(isnull(@actual_start_to,null) IS NULL OR actual_start<=CAST(@actual_start_to AS datetime)) AND
(isnull(@actual_finish_from,null) IS NULL OR actual_finish=CAST(@actual_finish_from AS datetime)) AND
(isnull(@actual_finish_to,null) IS NULL OR actual_finish=CAST(@actual_finish_to AS datetime)) AND
(isnull(@created_time_from,null) IS NULL OR created_time>=CAST(@created_time_from AS datetime)) AND
(isnull(@created_time_to,null) IS NULL OR created_time<=CAST(@created_time_to AS datetime)) AND
(isnull(@update_time_from,null) IS NULL OR changed_time>=CAST(@update_time_from AS datetime)) AND
(isnull(@update_time_to,null) IS NULL OR changed_time<=CAST(@update_time_to AS datetime)) AND
(isnull(@original_estimated_effort_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(original_estimated_effort))>=convert(numeric(31,8),dbo.timeCast(@original_estimated_effort_from))) AND
(isnull(@original_estimated_effort_to,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(original_estimated_effort))<=convert(numeric(31,8),dbo.timeCast(@original_estimated_effort_to))) AND
(isnull(@latest_estimated_effort_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(latest_estimated_effort))>=convert(numeric(31,8),dbo.timeCast(@latest_estimated_effort_from)))
intersect
select vv.defect, @newId
from @ParamsTable par
inner join projectcenter.defect_field_info dfi on dfi.defect_field_name_id = par.pId
left join projectcenter.defect_extra_field_info defi on defi.id = dfi.id
inner join projectcenter.variable_value vv on vv.extra_field_id =dfi.id
left join projectcenter.options options on options.id = vv.option_id
inner join projectcenter.defect d on d.id = vv.defect and d.project_id = @project_id
where (par.pId >33 or par.pId in (22,23,24,25))--need inprovement
and (isnull(par.pContent,null) IS NULL or
(
(dtype = 'DateValue' and isdate(vv.date_value)>0 and isdate(par.pContent)>0 and ((par.pKey like '%From' and convert(varchar(50),vv.date_value, 120) >= convert(varchar(50),par.pContent, 120))  or (par.pKey like '%To' and convert(varchar(50),vv.date_value, 101) <= convert(varchar(50),par.pContent, 120))))
or
(dtype = 'LongValue' and defi.type <> 'MemberPicker' and par.pId not in(22,23,24,25) and isnumeric(par.pContent)>0 and ((par.pKey like '%From' and vv.long_value >= convert(numeric(19,0), par.pContent)) or (par.pKey like '%To' and vv.long_value <= convert(numeric(19,0), par.pContent))))
or
(dtype = 'StringVale' and vv.string_value like par.pContent)
or
(dtype = 'FloatValue' and isnumeric(par.pContent)>0 and ((par.pKey like '%From' and isnumeric(par.pContent)>0 and vv.float_value > cast(par.pContent as float)) or (par.pKey like '%To' and isnumeric(par.pContent)>0 and vv.float_value < cast(par.pContent as float))))
or
(dtype = 'MemoValue' and vv.memo_value like par.pContent)
or
(dtype = 'LongValue' and par.pId = 22 and exists (select 1 from projectcenter.project_group_module pgm inner join @optionTable ot on ot.option_name =pgm.name and ot.type = 'mo'and pgm.project_group_id = @project_group_id and vv.long_value = pgm.id))
or
(dtype = 'LongValue' and defi.type = 'MemberPicker' and isnumeric(par.pContent)>0 and cast(par.pContent as numeric(19,0))= vv.long_value)
or
(dtype = 'ListValue' and exists(select 1 from @optionTable ot where ot.type='opt' and ot.option_name = options.name))
))
group by vv.defect
having count(distinct vv.extra_field_id) >= (select count(distinct par1.pId) from @ParamsTable par1 where par1.pId > 33 or par1.pId  in (22,23,24,25))
END
ELSE
BEGIN

insert into projectcenter.defect_id_temp (defect_id,juid)
SELECT defect.id, @newId
FROM projectcenter.defect AS defect
LEFT JOIN (select defect_id,max(changed_time) as changed_time from projectcenter.defect_change_log group by defect_id ) AS defect_change_log on defect.id = defect_change_log.defect_id
WHERE defect.project_id = @project_id and
(isnull(@id,null) IS  NULL OR id like @id) AND
(isnull(@summary,null) IS NULL OR summary like @summary) AND
(isnull(@ticket_type_id,null) IS NULL OR exists
 (select 1 FROM projectcenter.ticket_type tt where tt.id=ticket_type_id and tt.name in
  (select distinct ticket_type.name from projectcenter.ticket_type WHERE ticket_type.id in (select 1 from dbo.strSplitToTable(@ticket_type_id) ) )
    )
) AND
(isnull(@status_id,null) IS NULL OR status_id = @status_id) AND  --List
(isnull(@resolution_id,null) IS NULL OR resolution_id in
 (
  select opt.id
  FROM projectcenter.options AS opt
  WHERE
  exists (
    SELECT 1
    FROM projectcenter.options AS opt1
    WHERE opt1.id in (select id from dbo.strSplitToTable(@resolution_id)) and
    opt1.name=opt.name AND opt1.defect_field_info_id=opt.defect_field_info_id
  )
 )
) AND  ---List
(isnull(@description,null) IS NULL OR [description] like @description) AND
(isnull(@priority_id,null) IS NULL OR priority_id IN
 (
  select opt.id
  FROM projectcenter.options AS opt
  WHERE
  exists (
    SELECT 1
    FROM projectcenter.options AS opt1
    WHERE opt1.id in (select id from dbo.strSplitToTable(@priority_id)) and
    opt1.name=opt.name AND opt1.defect_field_info_id=opt.defect_field_info_id
  )
 )
 ) AND
(isnull(@severity_id,null) IS NULL OR severity_id IN
  (
  select opt.id
  FROM projectcenter.options AS opt
  WHERE
  exists (
    SELECT 1
    FROM projectcenter.options AS opt1
    WHERE opt1.id in (select id from dbo.strSplitToTable(@severity_id)) and
    opt1.name=opt.name AND opt1.defect_field_info_id=opt.defect_field_info_id
  )
 )
) AND
(isnull(@assigned_user_id,null) IS NULL OR assigned_user_id=@assigned_user_id ) AND
(isnull(@reviewer_user_id,null) IS NULL OR reviewer_user_id=@reviewer_user_id ) AND
(isnull(@detectd_by_user_id,null) IS NULL OR detectd_by_user_id=@detectd_by_user_id ) AND
(isnull(@due_date_from,null) IS NULL OR due_date>=CAST(@due_date_from AS datetime) ) AND
(isnull(@due_date_to,null) IS NULL OR due_date<=CAST(@due_date_to AS datetime) ) AND
(isnull(@response_time_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(response_time))>=convert(numeric(31,8),dbo.timeCast(@response_time_from)) ) AND
(isnull(@response_time_to,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(response_time))<=convert(numeric(31,8),dbo.timeCast(@response_time_to ))) AND
(isnull(@resolution_time_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(resolution_time))>=convert(numeric(31,8),dbo.timeCast(@resolution_time_from ))) AND
(isnull(@resolution_time_to,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(resolution_time))<=convert(numeric(31,8),dbo.timeCast(@resolution_time_to))) AND
(isnull(@estimated_size_from,null) IS NULL OR convert(int,estimated_size)>=convert(int,@estimated_size_from)) AND
(isnull(@estimated_size_to,null) IS NULL OR convert(int,estimated_size)<=convert(int,@estimated_size_to)) AND
(isnull(@actual_size_from,null) IS NULL OR convert(int,estimated_size)>=convert(int,@estimated_size_from)) AND
(isnull(@actual_size_to,null) IS NULL OR convert(int,estimated_size)<=convert(int,@estimated_size_to)) AND
(isnull(@planned_start_from,null) IS NULL OR planned_start>=CAST(@planned_start_from AS datetime)) AND
(isnull(@planned_start_to,null) IS NULL OR planned_start<=CAST(@planned_start_to AS datetime)) AND
(isnull(@planned_finish_from,null) IS NULL OR planned_finish>=CAST(@planned_finish_from AS datetime)) AND
(isnull(@planned_finish_to,null) IS NULL OR planned_finish<=CAST(@planned_finish_to AS datetime)) AND
(isnull(@duration_from,null) IS NULL OR convert(int,duration)>=convert(int,@duration_from)) AND
(isnull(@duration_to,null) IS NULL OR convert(int,duration)<=convert(int,@duration_to)) AND
(isnull(@actual_start_from,null) IS NULL OR actual_start<=CAST(@actual_start_from AS datetime)) AND
(isnull(@actual_start_to,null) IS NULL OR actual_start<=CAST(@actual_start_to AS datetime)) AND
(isnull(@actual_finish_from,null) IS NULL OR actual_finish=CAST(@actual_finish_from AS datetime)) AND
(isnull(@actual_finish_to,null) IS NULL OR actual_finish=CAST(@actual_finish_to AS datetime)) AND
(isnull(@created_time_from,null) IS NULL OR created_time>=CAST(@created_time_from AS datetime)) AND
(isnull(@created_time_to,null) IS NULL OR created_time<=CAST(@created_time_to AS datetime)) AND
(isnull(@update_time_from,null) IS NULL OR changed_time>=CAST(@update_time_from AS datetime)) AND
(isnull(@update_time_to,null) IS NULL OR changed_time<=CAST(@update_time_to AS datetime)) AND
(isnull(@original_estimated_effort_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(original_estimated_effort))>=convert(numeric(31,8),dbo.timeCast(@original_estimated_effort_from))) AND
(isnull(@original_estimated_effort_to,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(original_estimated_effort))<=convert(numeric(31,8),dbo.timeCast(@original_estimated_effort_to))) AND
(isnull(@latest_estimated_effort_from,null) IS NULL OR convert(numeric(31,8),dbo.timeCast(latest_estimated_effort))>=convert(numeric(31,8),dbo.timeCast(@latest_estimated_effort_from)))
END
select @page_count=count(1) from defect_id_temp where juid=@newId

EXEC [projectcenter].[pageOrderTicketList] @newId, @orderBy, @ascDesc, @page_index ,20, @newId OUTPUT
EXEC [projectcenter].[show_ticket_list] @project_group_id, @user_id, @newId

END

GO
DECLARE @page_count int
EXEC AdvanceSearchPro @page_count=@page_count OUTPUT,
  @xmlParams ='
     <root><defect><param id="1" pType="Int" pKey="pageIndex" >1</param>
     <param id="3" pType="String" pKey="userId" >3203</param>
     <param id="4" pType="String" pKey="projectGroupId" >322</param>
     <param id="5" pType="String" pKey="orderBy">10</param>
     <param id="6" pType="String" pKey="ascDesc">asc</param></defect></root>
       '
       select @page_count

你可能感兴趣的:(JOIN,Date,Module,user,null,insert)