
-- 质量管理_质检明细_查询
CREATE PROCEDURE [dbo].[质量管理_质检明细_查询]
    @质检类型 nvarchar(4000) = '10',  -- 修改为字符串类型，因为传入的是字符串
    @开始日期 datetime = NULL,
    @结束日期 datetime = NULL,
    @订单号 nvarchar(4000) = '0',     -- 修改为字符串类型，避免类型转换问题
    @合同号 nvarchar(4000) = '0',
    @零件编码 nvarchar(4000) = '0',
    @零件名称 nvarchar(4000) = '0',
    @PageCurrent int = 1,             -- 要显示的页码
    @PageSize int = 20,                -- 每页的大小(记录数)
    @PageCount int OUTPUT,             -- 总页数
    @ItemCount int OUTPUT              -- 数据总数
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @tbname sysname = ' [dbo].[View_质检明细] '           -- 要分页显示的表名
    DECLARE @fieldkey sysname = ' '                       -- 用于定位记录的主键(惟一键)字段
    DECLARE @where nvarchar(4000)                                 -- 查询条件
    DECLARE @fieldshow nvarchar(1000)                             -- 要显示的字段列表
    DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC '        -- 排序字段

    -- 构建查询条件（使用参数化方式，避免SQL注入）
    SET @where = ' (1=1) '

    -- 质检类型过滤
    IF @质检类型 = '10'  -- 全部
        SET @where = @where + ' AND (1=1) '
    ELSE IF @质检类型 = '0'
        SET @where = @where + ' AND 质检类型 = ''收检'' '
    ELSE IF @质检类型 = '1'
        SET @where = @where + ' AND 质检类型 = ''终检'' '
    ELSE IF @质检类型 = '2'
        SET @where = @where + ' AND 质检类型 = ''来料检验'' '
    ELSE IF @质检类型 = '3'
        SET @where = @where + ' AND 质检类型 = ''退库检验'' '

    -- 订单号过滤条件（修正：使用LIKE时加引号）
    IF @订单号 <> '0'
        SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '

    -- 合同号过滤条件
    --IF @合同号 <> '0'
    --    SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' '

    -- 零件编码过滤条件
    IF @零件编码 <> '0'
        SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '

    -- 零件名称过滤条件
    IF @零件名称 <> '0'
        SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '

    -- 日期范围过滤（如果提供了日期参数）
    IF @开始日期 IS NOT NULL
        SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '

    IF @结束日期 IS NOT NULL
        SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '

    SET @fieldshow = '
          [QT_AID]
          ,[质检类型]
          ,[零件编码]
          ,[零件名称]
          ,[内部合同号]
          ,[计划号]
          ,[工序名称]
          ,[检验数量]
          ,[合格数]
          ,[不合格数]
          ,[检测人]
          ,[检测时间]
          ,[检测说明]
          ,[工位名称]
          ,[订单类型]'

    -- 调试用（可以注释掉）
    PRINT @where

    -- 执行分页存储过程
    EXEC [dbo].[sp_xt_pagesplit]
        @tbname,
        @fieldkey,
        @where,
        @fieldshow,
        @fieldOrder,
        @PageCurrent,
        @PageSize,
        @PageCount OUTPUT,
        @ItemCount OUTPUT
END
