更新人事/采购/销售/精工/仓储/技术等模块,新增出库单/PDA采购入库页面,补充生产计划需求文档及多项SQL脚本

This commit is contained in:
Developer
2026-09-14 07:56:15 +08:00
parent 9fc3aae3e9
commit ffac9fcc61
40 changed files with 6762 additions and 181 deletions

View File

@@ -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;