更新人事/采购/销售/精工/仓储/技术等模块,新增出库单/PDA采购入库页面,补充生产计划需求文档及多项SQL脚本
This commit is contained in:
@@ -16,6 +16,7 @@ AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-11 10:09:42; 合同查询改为按合同去重,并将合同编号前缀匹配优先,避免BH开头合同被同合同多订单记录挤出列表。
|
||||
SELECT TOP 50
|
||||
p.项目流水号,
|
||||
p.合同编号,
|
||||
@@ -28,8 +29,23 @@ BEGIN
|
||||
FROM dbo.PDM_项目名称 AS p
|
||||
LEFT JOIN dbo.客户关系管理系统_客户名称 AS c
|
||||
ON p.客户流水号 = c.客户流水号
|
||||
LEFT JOIN dbo.合同管理_订单信息_基础表 AS o
|
||||
ON p.项目流水号 = o.项目流水号
|
||||
OUTER APPLY (
|
||||
SELECT TOP 1
|
||||
oi.订单流水号,
|
||||
oi.订单编号,
|
||||
oi.完成期限
|
||||
FROM dbo.合同管理_订单信息_基础表 AS oi
|
||||
WHERE oi.项目流水号 = p.项目流水号
|
||||
AND (ISNULL(@关键字, N'') = N''
|
||||
OR ISNULL(oi.订单编号, N'') LIKE N'%' + @关键字 + N'%'
|
||||
OR p.合同编号 LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(c.客户名称, N'') LIKE N'%' + @关键字 + N'%'
|
||||
OR ISNULL(c.简称, N'') LIKE N'%' + @关键字 + N'%')
|
||||
AND (ISNULL(@订单编号, N'') = N'' OR ISNULL(oi.订单编号, N'') LIKE N'%' + @订单编号 + N'%')
|
||||
ORDER BY
|
||||
CASE WHEN ISNULL(@关键字, N'') <> N'' AND ISNULL(oi.订单编号, N'') LIKE @关键字 + N'%' THEN 0 ELSE 1 END,
|
||||
oi.订单流水号 DESC
|
||||
) AS o
|
||||
WHERE ISNULL(p.是否启用, 1) = 1
|
||||
AND ISNULL(p.合同编号, N'') <> N''
|
||||
AND (ISNULL(@关键字, N'') = N''
|
||||
@@ -40,7 +56,10 @@ BEGIN
|
||||
AND (ISNULL(@合同编号, N'') = N'' OR p.合同编号 LIKE N'%' + @合同编号 + N'%')
|
||||
AND (ISNULL(@客户, N'') = N'' OR ISNULL(c.客户名称, N'') LIKE N'%' + @客户 + N'%' OR ISNULL(c.简称, N'') LIKE N'%' + @客户 + N'%')
|
||||
AND (ISNULL(@订单编号, N'') = N'' OR ISNULL(o.订单编号, N'') LIKE N'%' + @订单编号 + N'%')
|
||||
ORDER BY p.项目流水号 DESC, o.订单流水号 DESC;
|
||||
ORDER BY
|
||||
CASE WHEN ISNULL(@关键字, N'') <> N'' AND p.合同编号 LIKE @关键字 + N'%' THEN 0 ELSE 1 END,
|
||||
CASE WHEN ISNULL(@合同编号, N'') <> N'' AND p.合同编号 LIKE @合同编号 + N'%' THEN 0 ELSE 1 END,
|
||||
p.项目流水号 DESC;
|
||||
END;
|
||||
GO
|
||||
|
||||
@@ -71,6 +90,8 @@ BEGIN
|
||||
DECLARE @仓库备货合同编号 NVARCHAR(50);
|
||||
DECLARE @补货类型名称 NVARCHAR(50);
|
||||
DECLARE @订单类型 INT = 3;
|
||||
DECLARE @补货锁资源 NVARCHAR(255);
|
||||
DECLARE @补货锁结果 INT;
|
||||
|
||||
IF @补货期限 IS NULL
|
||||
BEGIN
|
||||
@@ -108,6 +129,41 @@ BEGIN
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-11 09:42:28; 同一类补货提交加事务级应用锁,避免重复点击或并发请求消费同一份补货单生成多张订单。
|
||||
SET @补货锁资源 = N'报缺补货_提交_关联合同_' + CASE WHEN @是否外购 = 1 THEN N'外购' ELSE N'自制' END;
|
||||
EXEC @补货锁结果 = sys.sp_getapplock
|
||||
@Resource = @补货锁资源,
|
||||
@LockMode = 'Exclusive',
|
||||
@LockOwner = 'Transaction',
|
||||
@LockTimeout = 10000;
|
||||
|
||||
IF @补货锁结果 < 0
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'补货单正在提交,请稍后重试' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
-- 修改人:Ld 修改时间:2026-08-11 09:42:28; 获得锁后重新检查中间表,第一笔提交删除后,后续重复请求不再继续创建订单。
|
||||
IF @是否外购 = 1
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.外购件补货明细中间表 WITH (UPDLOCK, HOLDLOCK))
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'外购补货单为空' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM dbo.自制件补货明细中间表 WITH (UPDLOCK, HOLDLOCK))
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'自制补货单为空' AS message;
|
||||
ROLLBACK TRANSACTION;
|
||||
RETURN;
|
||||
END;
|
||||
END;
|
||||
|
||||
IF @来源类型 = N'仓库备货'
|
||||
BEGIN
|
||||
-- 仓库备货每次创建独立CKBH合同,编号规则按补货单日期+三位序号生成;修改人:Ld 修改时间:2026-08-04 08:29:13;
|
||||
|
||||
Reference in New Issue
Block a user