CREATE PROCEDURE [dbo].[订单信息_查询数据_加收货人] @买方名称_check bit=null, @客户 nvarchar(50)= null, @创建人_check bit=null, @创建人 nvarchar(50)= null, @订单编号_check bit=null, @订单流水号 int=null, @下单日期_check bit=null, @开始时间 datetime=null, @结束时间 datetime=null, @订单状态_check bit=null, @订单状态 nvarchar(50)=null AS BEGIN SET NOCOUNT ON; DECLARE @selectStr nvarchar(max); DECLARE @selectStrWhere nvarchar(max); -- 修改人:Ld 修改时间:2026-09-21 15:13:20; 合同编号优先显示补货来源关联的销售合同号,普通订单显示自身项目合同号。 SET @selectStr = N' select PDM_订单信息_视图.*, COALESCE(来源项目.合同编号, 当前项目.合同编号) AS 合同编号, A.暂停原因数量 from PDM_订单信息_视图 LEFT JOIN dbo.[补货订单来源关联] AS 补货来源 ON 补货来源.补货订单流水号 = PDM_订单信息_视图.订单流水号 AND ISNULL(补货来源.是否有效, 1) = 1 LEFT JOIN dbo.PDM_项目名称 AS 来源项目 ON 补货来源.来源项目流水号 = 来源项目.项目流水号 LEFT JOIN dbo.PDM_项目名称 AS 当前项目 ON PDM_订单信息_视图.项目流水号 = 当前项目.项目流水号 LEFT JOIN ( select PDM_订单信息_视图.订单流水号, ISNULL(COUNT([车间装配管理_暂停装配_记录表].暂停原因), 0) AS 暂停原因数量 FROM PDM_订单信息_视图 LEFT join PDM_机床名称 on PDM_订单信息_视图.项目流水号 = PDM_机床名称.项目流水号 LEFT join [dbo].[PDM_组件名称] on PDM_机床名称.机床流水号 = PDM_组件名称.机床流水号 LEFT join [dbo].[车间装配管理_装配任务] on PDM_组件名称.组件流水号 = 车间装配管理_装配任务.组件流水号 LEFT join [dbo].[车间装配管理_暂停装配_记录表] on [dbo].[车间装配管理_暂停装配_记录表].装配任务流水号 = 车间装配管理_装配任务.装配任务流水号 group by PDM_订单信息_视图.订单流水号 ) AS A ON A.订单流水号 = PDM_订单信息_视图.订单流水号 '; SET @selectStrWhere = N'where 是否提交 <> 0 '; IF(@买方名称_check = 1) SET @selectStrWhere = @selectStrWhere + N' and 买方 + isnull(收货人,'''') like + ''%'' + @客户 + ''%'' '; IF(@创建人_check = 1) SET @selectStrWhere = @selectStrWhere + N' and isnull(创建人,'''') like + ''%'' + @创建人 + ''%'' '; IF(@订单编号_check = 1) SET @selectStrWhere = @selectStrWhere + N' and PDM_订单信息_视图.订单流水号 = @订单流水号 '; IF(@下单日期_check = 1) SET @selectStrWhere = @selectStrWhere + N' and 创建日期 >= @开始时间 and 创建日期 <= @结束时间 '; IF(@订单状态_check = 1) SET @selectStrWhere = @selectStrWhere + N' and 订单状态 = @订单状态 '; SET @selectStr = @selectStr + @selectStrWhere + N'order by 合同操作日期 DESC'; PRINT @selectStr; EXEC sp_executesql @selectStr, N'@客户 nvarchar(50),@创建人 nvarchar(50),@订单流水号 int,@开始时间 datetime,@结束时间 datetime,@订单状态 nvarchar(50)', @客户,@创建人,@订单流水号,@开始时间,@结束时间,@订单状态; END;