更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本

This commit is contained in:
Developer
2026-08-05 08:13:08 +08:00
parent 33549c3787
commit fd84f9d3ca
94 changed files with 14531 additions and 345 deletions

View File

@@ -0,0 +1,5 @@
Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : Encryption not supported on the client..
Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : SSL Provider:
.
Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : Client unable to establish connection.
Sqlcmd: Error: Microsoft ODBC Driver 11 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

View File

@@ -0,0 +1,97 @@
USE [ERPTOOL_JY]
GO
DECLARE @sql NVARCHAR(MAX)
DECLARE @anchor NVARCHAR(500)
DECLARE @new NVARCHAR(MAX)
DECLARE @pos INT
SELECT @sql = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_确认更改新'))
SET @new = CAST(N'
-- 修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床,已领料机床保留,避免误删已领料数据
IF EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 WHERE 项目流水号 = @项目流水号)
BEGIN
DELETE r FROM 车间装配管理_装配任务 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_装配执行_临时领料明细 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_领料单明细 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
' AS NVARCHAR(MAX)) + CAST(N'
DELETE r FROM 车间装配管理_领料单 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM PDM_零件明细表_基本件 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM PDM_零件明细表_标准件和外购件 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE c FROM PDM_组件名称 c
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE m FROM PDM_机床名称 m
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c WHERE c.机床流水号 = m.机床流水号 AND ISNULL(c.是否领料, 0) <> 0)
END
' AS NVARCHAR(MAX))
SET @anchor = N'delete from PDM_机床名称_修改记录_临时表 where 项目流水号 = @项目流水号'
IF @sql IS NULL
BEGIN
RAISERROR(N'未找到存储过程 PDM_组件名称_确认更改新', 16, 1)
RETURN
END
IF CHARINDEX(N'修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床', @sql) > 0
BEGIN
PRINT N'测试库过程已包含本次删除机床加固逻辑,无需重复修改'
RETURN
END
SET @sql = REPLACE(@sql, N'CREATE PROCEDURE', N'ALTER PROCEDURE')
SET @pos = CHARINDEX(@anchor, @sql)
IF @pos = 0
BEGIN
RAISERROR(N'未找到预期插入位置,未执行修改', 16, 1)
RETURN
END
SET @sql = STUFF(@sql, @pos, 0, @new)
EXEC sp_executesql @sql
GO

View File

@@ -0,0 +1,97 @@
USE [ERPTOOL_JY_20250826Back]
GO
DECLARE @sql NVARCHAR(MAX)
DECLARE @anchor NVARCHAR(500)
DECLARE @new NVARCHAR(MAX)
DECLARE @pos INT
SELECT @sql = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_确认更改新'))
SET @new = CAST(N'
-- 修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床,已领料机床保留,避免误删已领料数据
IF EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 WHERE 项目流水号 = @项目流水号)
BEGIN
DELETE r FROM 车间装配管理_装配任务 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_装配执行_临时领料明细 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_领料单明细 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
' AS NVARCHAR(MAX)) + CAST(N'
DELETE r FROM 车间装配管理_领料单 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM PDM_零件明细表_基本件 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM PDM_零件明细表_标准件和外购件 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE c FROM PDM_组件名称 c
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE m FROM PDM_机床名称 m
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c WHERE c.机床流水号 = m.机床流水号 AND ISNULL(c.是否领料, 0) <> 0)
END
' AS NVARCHAR(MAX))
SET @anchor = N'delete from PDM_机床名称_修改记录_临时表 where 项目流水号 = @项目流水号'
IF @sql IS NULL
BEGIN
RAISERROR(N'未找到存储过程 PDM_组件名称_确认更改新', 16, 1)
RETURN
END
IF CHARINDEX(N'修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床', @sql) > 0
BEGIN
PRINT N'测试库过程已包含本次删除机床加固逻辑,无需重复修改'
RETURN
END
SET @sql = REPLACE(@sql, N'CREATE PROCEDURE', N'ALTER PROCEDURE')
SET @pos = CHARINDEX(@anchor, @sql)
IF @pos = 0
BEGIN
RAISERROR(N'未找到预期插入位置,未执行修改', 16, 1)
RETURN
END
SET @sql = STUFF(@sql, @pos, 0, @new)
EXEC sp_executesql @sql
GO

View File

@@ -0,0 +1,102 @@
$ErrorActionPreference = 'Stop'
$server = '192.168.1.27'
$db = 'ERPTOOL_JY_20250826Back'
$user = 'sa'
$pwd = '126.com'
$connStr = "Server=$server;Database=$db;User ID=$user;Password=$pwd;TrustServerCertificate=True;"
$conn = New-Object System.Data.SqlClient.SqlConnection $connStr
$conn.Open()
try {
$cmd = $conn.CreateCommand()
$cmd.CommandText = "SELECT OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_确认更改新'))"
$sql = [string]$cmd.ExecuteScalar()
if ([string]::IsNullOrEmpty($sql)) {
throw '未找到存储过程 PDM_组件名称_确认更改新'
}
if ($sql.Contains('修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床')) {
Write-Output '测试库过程已包含本次删除机床加固逻辑,无需重复修改'
exit 0
}
$anchor = 'delete from PDM_机床名称_修改记录_临时表 where 项目流水号 = @项目流水号'
$alter = [regex]::Replace($sql, '^CREATE\s+PROCEDURE', 'ALTER PROCEDURE')
$pos = $alter.IndexOf($anchor, [System.StringComparison]::Ordinal)
if ($pos -lt 0) {
throw '未找到预期插入位置,未执行修改'
}
$new = @'
-- 修改人:Ld 修改时间:2026-07-23 允许合同修改时删除未领料机床,已领料机床保留,避免误删已领料数据
IF EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 WHERE 项目流水号 = @项目流水号)
BEGIN
DELETE r FROM 车间装配管理_装配任务 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_装配执行_临时领料明细 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_领料单明细 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM 车间装配管理_领料单 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM PDM_零件明细表_基本件 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE r FROM PDM_零件明细表_标准件和外购件 r
INNER JOIN PDM_组件名称 c ON c.组件流水号 = r.组件流水号
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE c FROM PDM_组件名称 c
INNER JOIN PDM_机床名称 m ON m.机床流水号 = c.机床流水号
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c2 WHERE c2.机床流水号 = m.机床流水号 AND ISNULL(c2.是否领料, 0) <> 0)
DELETE m FROM PDM_机床名称 m
WHERE m.项目流水号 = @项目流水号
AND NOT EXISTS (SELECT 1 FROM PDM_机床名称_修改记录_临时表 t WHERE t.项目流水号 = @项目流水号 AND t.机床流水号 = m.机床流水号)
AND NOT EXISTS (SELECT 1 FROM PDM_组件名称 c WHERE c.机床流水号 = m.机床流水号 AND ISNULL(c.是否领料, 0) <> 0)
END
'@
$alter = $alter.Insert($pos, $new)
$cmd = $conn.CreateCommand()
$cmd.CommandTimeout = 120
$cmd.CommandText = $alter
[void]$cmd.ExecuteNonQuery()
Write-Output '测试库 PDM_组件名称_确认更改新 修改完成'
}
finally {
$conn.Close()
}

View File

@@ -0,0 +1,29 @@
/*
修改人:Ld 修改时间:2026-07-31 08:43:08;
合同查询编辑合同信息支持修改提成类型。
*/
ALTER PROCEDURE [dbo].[PDM_项目名称_修改客户]
@ int,
@ nvarchar(50)=null,
@ int = null,
@ int = null,
@ int = null,
@ float = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-31 08:43:08; 合同查询编辑合同信息同步保存提成类型。
UPDATE [dbo].[PDM_项目名称]
SET [] = @,
[] = @,
[] = @,
[] = @,
[] = @,
[] = @
WHERE = @;
SELECT CAST(1 AS int) AS result;
END;
GO

View File

@@ -0,0 +1,189 @@
-- 修改人:Ld 修改时间:2026-07-28 15:26:14; 销售绩效组件测试数据,合同编号统一使用 TEST-JX- 前缀。
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION;
DECLARE @ TABLE ( int PRIMARY KEY);
INSERT INTO @ ()
SELECT
FROM dbo.PDM_项目名称
WHERE LIKE N'TEST-JX-%';
DELETE r
FROM dbo._收款记录 r
INNER JOIN @ p ON r. = p.;
DELETE p
FROM dbo.PDM_项目名称 p
INNER JOIN @ d ON p. = d.;
DECLARE @ TABLE
(
nvarchar(50) NOT NULL,
int NOT NULL
);
INSERT INTO dbo.PDM_项目名称
(
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
)
OUTPUT N'跨月达标模块首单', inserted. INTO @(, )
VALUES
(
N'TEST-JX-202607-A',
2507,
100000,
2,
N'销售绩效测试6月回款40%7月累计达到90%8月尾款。',
'2026-06-20',
'2026-08-20',
273,
N'销售绩效测试数据,可按 TEST-JX- 前缀清理。',
1,
GETDATE(),
1,
273,
0.13,
273,
'2026-06-20',
N'罗伟',
N'付款后30日',
1,
273,
GETDATE(),
N'销售绩效测试合同',
1,
0,
'2026-08-12',
N'首单提成(模块)'
);
INSERT INTO dbo.PDM_项目名称
(
, , , , , , , ,
, , , , , , , , ,
, , , , , , , ,
)
OUTPUT N'当月达标专机首单', inserted. INTO @(, )
VALUES
(
N'TEST-JX-202607-B', 2506, 200000, 2, N'销售绩效测试7月全额回款。',
'2026-07-02', '2026-09-02', 5, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。',
1, GETDATE(), 2, 5, 0.13, 5, '2026-07-02', N'最高管理员', N'付款后45日',
1, 5, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-07-21', N'首单提成(专机)'
);
INSERT INTO dbo.PDM_项目名称
(
, , , , , , , ,
, , , , , , , , ,
, , , , , , , ,
)
OUTPUT N'复购当月达标', inserted. INTO @(, )
VALUES
(
N'TEST-JX-202608-C', 2505, 50000, 2, N'销售绩效测试8月达到90%。',
'2026-08-03', '2026-09-15', 28, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。',
1, GETDATE(), 1, 28, 0.13, 28, '2026-08-03', N'章乐红', N'付款后20日',
1, 28, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-08-28', N'复购提成'
);
INSERT INTO dbo.PDM_项目名称
(
, , , , , , , ,
, , , , , , , , ,
, , , , , , , ,
)
OUTPUT N'退款扣回绩效', inserted. INTO @(, )
VALUES
(
N'TEST-JX-202608-D', 2504, 80000, 2, N'销售绩效测试8月达标9月退款扣回。',
'2026-08-10', '2026-10-10', 273, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。',
1, GETDATE(), 2, 273, 0.13, 273, '2026-08-10', N'罗伟', N'付款后30日',
1, 273, GETDATE(), N'销售绩效测试合同', 1, 0, '2026-09-05', N'转介绍提成(专机)'
);
INSERT INTO dbo.PDM_项目名称
(
, , , , , , , ,
, , , , , , , , ,
, , , , , , , ,
)
OUTPUT N'未达90不计绩效', inserted. INTO @(, )
VALUES
(
N'TEST-JX-202609-E', 2503, 120000, 2, N'销售绩效测试只回款60%,不应进入绩效。',
'2026-09-01', '2026-11-01', 5, N'销售绩效测试数据,可按 TEST-JX- 前缀清理。',
1, GETDATE(), 1, 5, 0.13, 5, '2026-09-01', N'最高管理员', N'付款后30日',
1, 5, GETDATE(), N'销售绩效测试合同', 1, 48000, '2026-09-18', N'转介绍提成(模块)'
);
INSERT INTO dbo._收款记录 (, , , )
SELECT , 40000, '2026-06-25T10:00:00', N'销售绩效测试首付款40%' FROM @ WHERE = N'跨月达标模块首单'
UNION ALL SELECT , 50000, '2026-07-10T15:30:00', N'销售绩效测试累计达到90%' FROM @ WHERE = N'跨月达标模块首单'
UNION ALL SELECT , 10000, '2026-08-12T09:20:00', N'销售绩效测试尾款10%' FROM @ WHERE = N'跨月达标模块首单'
UNION ALL SELECT , 120000, '2026-07-08T11:00:00', N'销售绩效测试第一笔回款60%' FROM @ WHERE = N'当月达标专机首单'
UNION ALL SELECT , 80000, '2026-07-21T16:45:00', N'销售绩效测试第二笔回款40%' FROM @ WHERE = N'当月达标专机首单'
UNION ALL SELECT , 45000, '2026-08-28T14:10:00', N'销售绩效测试复购达到90%' FROM @ WHERE = N'复购当月达标'
UNION ALL SELECT , 72000, '2026-08-18T10:10:00', N'销售绩效测试转介绍专机达到90%' FROM @ WHERE = N'退款扣回绩效'
UNION ALL SELECT , -8000, '2026-09-05T13:40:00', N'销售绩效测试:退款扣回绩效' FROM @ WHERE = N'退款扣回绩效'
UNION ALL SELECT , 72000, '2026-09-18T09:35:00', N'销售绩效测试未达到90%,不计绩效' FROM @ WHERE = N'未达90不计绩效';
COMMIT TRANSACTION;
SELECT
t.,
p.,
p.,
p.,
p.,
v.,
v. AS
FROM @ t
INNER JOIN dbo.PDM_项目名称 p ON t. = p.
LEFT JOIN dbo.PDM_项目名称_视图 v ON p. = v.
ORDER BY p.;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
-- 修改人:Ld 修改时间:2026-07-28 15:26:14; 测试库 SQL Server 兼容旧版本错误抛出方式。
DECLARE @ nvarchar(4000);
DECLARE @ int;
DECLARE @ int;
SELECT
@ = ERROR_MESSAGE(),
@ = ERROR_SEVERITY(),
@ = ERROR_STATE();
RAISERROR(@, @, @);
END CATCH;

View File

@@ -0,0 +1,178 @@
-- 库存查询需求量明细排除待发货且部件全完成订单
-- 修改人:Ld 修改时间:2026-07-24 15:57:46;
ALTER PROCEDURE [dbo].[_报缺补货_需求量明细_查询]
@ INT = 15448
AS
BEGIN
SET NOCOUNT ON;
;WITH AS
(
SELECT o.
FROM dbo._订单信息_基础表 o
INNER JOIN dbo.PDM_项目名称 p ON o. = p.
INNER JOIN dbo.PDM_组件名称_视图 c ON p. = c.
WHERE ISNULL(o., 0) = 5
GROUP BY o.
HAVING SUM(CASE WHEN ISNULL(c., 0) = 4 OR ISNULL(c., 0) >= ISNULL(c., 0) THEN 1 ELSE 0 END) = COUNT(*)
),
AS
(
SELECT
c.,
o.,
c.,
o.,
o.,
p.,
ISNULL(k., '') AS
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN dbo.PDM_项目名称 p ON m. = p.
INNER JOIN dbo._订单信息_基础表 o ON p. = o.
LEFT JOIN dbo._客户名称 k ON p. = k.
WHERE NOT EXISTS (SELECT 1 FROM x WHERE x. = o.) -- 修改人:Ld 修改时间:2026-07-24 15:57:46; 待发货且部件全完成的订单平掉库存需求明细
),
AS
(
SELECT
co.,
b.,
b.,
SUM(ISNULL(b., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细不显示已完成订单
AND (@ IS NULL OR b. = @)
GROUP BY co., b., b.
UNION ALL
SELECT
co.,
s.,
s.,
SUM(ISNULL(s., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细不显示已完成订单
AND (@ IS NULL OR s. = @)
GROUP BY co., s., s.
UNION ALL
SELECT
co.,
t.,
t.,
SUM(ISNULL(t., 0)) AS ,
N'临时领料需求' AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t. = co.
WHERE t. IS NOT NULL
AND co. IS NOT NULL
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时领料明细不显示已完成订单
AND (@ IS NULL OR t. = @)
GROUP BY co., t., t.
),
AS
(
SELECT
co.,
b.,
b.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l. = b.
INNER JOIN co ON b. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR b. = @)
GROUP BY co., b., b.
UNION ALL
SELECT
co.,
s.,
s.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
INNER JOIN co ON s. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR s. = @)
GROUP BY co., s., s.
UNION ALL
SELECT
co.,
l.,
l.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l. = co.
WHERE l. IS NOT NULL
AND ISNULL(l., 0) <> 0
AND ISNULL(l., 0) = 0
AND ISNULL(l., 0) = 0
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时件明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR l. = @)
GROUP BY co., l., l.
),
AS
(
SELECT , , , SUM() AS
FROM
GROUP BY , ,
),
AS
(
SELECT
d.,
d.,
d.,
d.,
ISNULL(l., 0) AS ,
CASE WHEN d. > ISNULL(l., 0) THEN d. - ISNULL(l., 0) ELSE 0 END AS ,
d.
FROM d
LEFT JOIN l
ON d. = l.
AND d. = l.
AND ISNULL(d., '') = ISNULL(l., '')
)
SELECT
d.,
d.,
d.,
d.,
d.,
d.,
ISNULL(co., '') AS ,
d.
FROM d
LEFT JOIN co ON d. = co.
ORDER BY d., d., d.;
;WITH AS
(
SELECT ,
FROM dbo._需求量_视图
WHERE (@ IS NULL OR = @)
)
SELECT
,
AS ,
0 AS ,
AS
FROM
ORDER BY ;
END;

View File

@@ -1,322 +1,306 @@
-- 库存查询需求量性能优化:直连基础表判断订单完成状态,减少重视图展开
-- 修改人:Ld 修改时间:2026-07-14 16:35:00;
-- 搴撳瓨鏌ヨ闇€姹傞噺鎬ц兘浼樺寲锛氱洿杩炲熀纭€琛ㄥ垽鏂鍗曞畬鎴愮姸鎬侊紝鍑忓皯閲嶈鍥惧睍寮€
-- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00;
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_零件基本件_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.PDM_零件明细表_基本件'))
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_闆朵欢鍩烘湰浠禵鐗╂枡缁勪欢_20260714' AND object_id = OBJECT_ID(N'dbo.PDM_闆朵欢鏄庣粏琛╛鍩烘湰浠?))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_零件基本件_物料组件_20260714
ON dbo.PDM_零件明细表_基本件 (, )
INCLUDE (, );
CREATE NONCLUSTERED INDEX IX_Ld_闆朵欢鍩烘湰浠禵鐗╂枡缁勪欢_20260714
ON dbo.PDM_闆朵欢鏄庣粏琛╛鍩烘湰浠?(鐗╂枡娴佹按鍙? 缁勪欢娴佹按鍙?
INCLUDE (闆朵欢鏁伴噺, 宸查鏁伴噺);
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_零件标准外购_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.PDM_零件明细表_标准件和外购件'))
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_闆朵欢鏍囧噯澶栬喘_鐗_20260714' AND object_id = OBJECT_ID(N'dbo.PDM_闆朵欢鏄庣粏琛?))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_零件标准外购_物料组件_20260714
ON dbo.PDM_零件明细表_标准件和外购件 (, )
INCLUDE (, );
CREATE NONCLUSTERED INDEX IX_Ld_闆朵欢鏍囧噯澶栬喘_鐗_20260714
ON dbo.PDM_闆朵欢鏄庣粏琛?(? ?
INCLUDE (, );
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_临时领料_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_装配执行_临时领料明细'))
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_涓存椂棰嗘枡_鐗╂枡缁勪欢_20260714' AND object_id = OBJECT_ID(N'dbo.杞﹂棿瑁呴厤绠悊_瑁呴厤鎵ц_涓存椂棰嗘枡鏄庣粏'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_临时领料_物料组件_20260714
ON dbo._装配执行_临时领料明细 (, )
INCLUDE ();
CREATE NONCLUSTERED INDEX IX_Ld_涓存椂棰嗘枡_鐗_20260714
ON dbo._瑁呴厤鎵ц_涓存椂棰嗘枡鏄庣粏 (? ?
INCLUDE (?;
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_领料明细_基本件_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_领料单明细'))
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_棰嗘枡鏄庣粏_鍩烘湰浠禵20260714' AND object_id = OBJECT_ID(N'dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_领料明细_基本件_20260714
ON dbo._领料单明细 ()
INCLUDE ();
CREATE NONCLUSTERED INDEX IX_Ld_棰嗘枡鏄庣粏_鍩烘湰浠禵20260714
ON dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?(鍩烘湰浠舵祦姘村彿)
INCLUDE (宸查鏁伴噺);
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_领料明细_标准外购_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_领料单明细'))
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_棰嗘枡鏄庣粏_鏍囧噯澶栬喘_20260714' AND object_id = OBJECT_ID(N'dbo._棰嗘枡鍗曟槑缁?))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_领料明细_标准外购_20260714
ON dbo._领料单明细 ()
INCLUDE ();
CREATE NONCLUSTERED INDEX IX_Ld_棰嗘枡鏄庣粏_鏍囧噯澶栬喘_20260714
ON dbo._棰嗘枡鍗曟槑缁?(彿)
INCLUDE ();
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_领料明细_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_领料单明细'))
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_棰嗘枡鏄庣粏_鐗╂枡缁勪欢_20260714' AND object_id = OBJECT_ID(N'dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_领料明细_物料组件_20260714
ON dbo._领料单明细 (, )
INCLUDE ();
CREATE NONCLUSTERED INDEX IX_Ld_棰嗘枡鏄庣粏_鐗╂枡缁勪欢_20260714
ON dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?(鐗╂枡娴佹按鍙? 缁勪欢娴佹按鍙?
INCLUDE (宸查鏁伴噺);
END;
GO
ALTER VIEW dbo._需求量_视图
ALTER VIEW dbo.鐗╂枡绠悊_闇€姹傞噺_瑙嗗浘
AS
WITH AS
WITH 待发货且部件全完成订单 AS
(
SELECT o.订单编号
FROM dbo.合同管理_订单信息_基础表 o
INNER JOIN dbo.PDM_项目名称 p ON o.项目流水号 = p.项目流水号
INNER JOIN dbo.PDM_组件名称_视图 c ON p.项目流水号 = c.项目流水号
WHERE ISNULL(o.是否提交, 0) = 5
GROUP BY o.订单编号
HAVING SUM(CASE WHEN ISNULL(c.产品状态, 0) = 4 OR ISNULL(c.完成数量, 0) >= ISNULL(c.数量, 0) THEN 1 ELSE 0 END) = COUNT(*)
),
组件订单 AS
(
SELECT
c.,
c.,
o.,
o.,
p.
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN dbo.PDM_项目名称 p ON m. = p.
INNER JOIN dbo._订单信息_基础表 o ON p. = o.
c.缁勪欢娴佹按鍙?,
c.鏄惁鍒嗛厤,
o.璁㈠崟绫诲瀷,
o.鏄惁鎻愪氦,
p.鏄惁鍚敤
FROM dbo.PDM_缁勪欢鍚嶇О c
INNER JOIN dbo.PDM_鏈哄簥鍚嶇О m ON c.鏈哄簥娴佹按鍙?= m.鏈哄簥娴佹按鍙? INNER JOIN dbo.PDM_椤圭洰鍚嶇О p ON m.椤圭洰娴佹按鍙?= p.椤圭洰娴佹按鍙? INNER JOIN dbo.鍚堝悓绠悊_璁㈠崟淇℃伅_鍩虹琛?o ON p.椤圭洰娴佹按鍙?= o.椤圭洰娴佹按鍙?
WHERE NOT EXISTS (SELECT 1 FROM 待发货且部件全完成订单 x WHERE x.订单编号 = o.订单编号) -- 修改人:Ld 修改时间:2026-07-24 14:12:57; 待发货且部件全完成的订单平掉库存需求
),
AS
闇€姹?AS
(
SELECT b., SUM(ISNULL(b., 0)) AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 直接用基础字段排除已完成订单
GROUP BY b.
SELECT b.鐗╂枡娴佹按鍙? SUM(ISNULL(b.闆朵欢鏁伴噺, 0)) AS 闇€姹傞噺
FROM dbo.PDM_闆朵欢鏄庣粏琛╛鍩烘湰浠?b
INNER JOIN 缁勪欢璁㈠崟 co ON b.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE co.鏄惁鍒嗛厤 = 1
AND co.璁㈠崟绫诲瀷 <> 3
AND NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鐩存帴鐢ㄥ熀纭€瀛楁鎺掗櫎宸插畬鎴愯鍗? GROUP BY b.鐗╂枡娴佹按鍙?
UNION ALL
SELECT s., SUM(ISNULL(s., 0)) AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 直接用基础字段排除已完成订单
GROUP BY s.
SELECT s.鐗╂枡娴佹按鍙? SUM(ISNULL(s.闆朵欢鏁伴噺, 0)) AS 闇€姹傞噺
FROM dbo.PDM_闆朵欢鏄庣粏琛╛鏍囧噯浠跺拰澶栬喘浠?s
INNER JOIN 缁勪欢璁㈠崟 co ON s.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE co.鏄惁鍒嗛厤 = 1
AND co.璁㈠崟绫诲瀷 <> 3
AND NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鐩存帴鐢ㄥ熀纭€瀛楁鎺掗櫎宸插畬鎴愯鍗? GROUP BY s.鐗╂枡娴佹按鍙?
UNION ALL
SELECT t., SUM(ISNULL(t., 0)) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t. = co.
WHERE t. IS NOT NULL
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时领料同口径排除已完成订单
GROUP BY t.
),
AS
SELECT t.鐗╂枡娴佹按鍙? SUM(ISNULL(t.瀹為鏁? 0)) AS 闇€姹傞噺
FROM dbo.杞﹂棿瑁呴厤绠悊_瑁呴厤鎵ц_涓存椂棰嗘枡鏄庣粏 t
LEFT JOIN 缁勪欢璁㈠崟 co ON t.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE t.鐗╂枡娴佹按鍙?IS NOT NULL
AND NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 涓存椂棰嗘枡鍚屽彛寰勬帓闄ゅ凡瀹屾垚璁㈠崟
GROUP BY t.鐗╂枡娴佹按鍙?),
闇€姹傛眹鎬?AS
(
SELECT , SUM() AS
FROM
GROUP BY
),
AS
SELECT 鐗╂枡娴佹按鍙? SUM(闇€姹傞噺) AS 闇€姹傞噺
FROM 闇€姹? GROUP BY 鐗╂枡娴佹按鍙?),
宸查 AS
(
SELECT b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l. = b.
INNER JOIN co ON b. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 扣减已领数时同步排除已完成订单
GROUP BY b.
SELECT b.鐗╂枡娴佹按鍙? SUM(ISNULL(l.宸查鏁伴噺, 0)) AS 宸查鏁? FROM dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?l
INNER JOIN dbo.PDM_闆朵欢鏄庣粏琛╛鍩烘湰浠?b ON l.鍩烘湰浠舵祦姘村彿 = b.鍩烘湰浠舵祦姘村彿
INNER JOIN 缁勪欢璁㈠崟 co ON b.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鎵e噺宸查鏁版椂鍚屾鎺掗櫎宸插畬鎴愯鍗? GROUP BY b.鐗╂枡娴佹按鍙?
UNION ALL
SELECT s., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
INNER JOIN co ON s. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 扣减已领数时同步排除已完成订单
GROUP BY s.
SELECT s.鐗╂枡娴佹按鍙? SUM(ISNULL(l.宸查鏁伴噺, 0)) AS 宸查鏁? FROM dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?l
INNER JOIN dbo.PDM_闆朵欢鏄庣粏琛╛鏍囧噯浠跺拰澶栬喘浠?s ON l.鏍囧噯浠跺拰澶栬喘浠舵祦姘村彿 = s.鏍囧噯浠跺拰澶栬喘浠舵祦姘村彿
INNER JOIN 缁勪欢璁㈠崟 co ON s.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鎵e噺宸查鏁版椂鍚屾鎺掗櫎宸插畬鎴愯鍗? GROUP BY s.鐗╂枡娴佹按鍙?
UNION ALL
SELECT l., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l. = co.
WHERE l. IS NOT NULL
AND ISNULL(l., 0) <> 0
AND ISNULL(l., 0) = 0
AND ISNULL(l., 0) = 0
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时件扣减已领数时同步排除已完成订单
GROUP BY l.
),
AS
SELECT l.鐗╂枡娴佹按鍙? SUM(ISNULL(l.宸查鏁伴噺, 0)) AS 宸查鏁? FROM dbo.杞﹂棿瑁呴厤绠悊_棰嗘枡鍗曟槑缁?l
LEFT JOIN 缁勪欢璁㈠崟 co ON l.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE l.鐗╂枡娴佹按鍙?IS NOT NULL
AND ISNULL(l.鐗╂枡娴佹按鍙? 0) <> 0
AND ISNULL(l.鍩烘湰浠舵祦姘村彿, 0) = 0
AND ISNULL(l.鏍囧噯浠跺拰澶栬喘浠舵祦姘村彿, 0) = 0
AND NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 涓存椂浠舵墸鍑忓凡棰嗘暟鏃跺悓姝ユ帓闄ゅ凡瀹屾垚璁㈠崟
GROUP BY l.鐗╂枡娴佹按鍙?),
宸查姹囨€?AS
(
SELECT , SUM() AS
FROM
GROUP BY
)
SELECT 鐗╂枡娴佹按鍙? SUM(宸查鏁? AS 宸查鏁? FROM 宸查
GROUP BY 鐗╂枡娴佹按鍙?)
SELECT
d.,
CASE WHEN d. > ISNULL(l., 0) THEN d. - ISNULL(l., 0) ELSE 0 END AS
FROM d
LEFT JOIN l ON d. = l.;
d.鐗╂枡娴佹按鍙?
CASE WHEN d.闇€姹傞噺 > ISNULL(l.宸查鏁? 0) THEN d.闇€姹傞噺 - ISNULL(l.宸查鏁? 0) ELSE 0 END AS 闇€姹傞噺
FROM 闇€姹傛眹鎬?d
LEFT JOIN 宸查姹囨€?l ON d.鐗╂枡娴佹按鍙?= l.鐗╂枡娴佹按鍙?
GO
ALTER PROCEDURE [dbo].[_需求量_更新]
ALTER PROCEDURE [dbo].[鐗╂枡绠悊_闇€姹傞噺_鏇存柊]
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM dbo._需求量;
DELETE FROM dbo.鐗╂枡绠悊_闇€姹傞噺;
INSERT INTO dbo._需求量
SELECT ,
FROM dbo._需求量_视图
WHERE > 0;
INSERT INTO dbo.鐗╂枡绠悊_闇€姹傞噺
SELECT 鐗╂枡娴佹按鍙? 闇€姹傞噺
FROM dbo.鐗╂枡绠悊_闇€姹傞噺_瑙嗗浘
WHERE 闇€姹傞噺 > 0;
END;
GO
ALTER PROCEDURE [dbo].[_报缺补货_需求量明细_查询]
@ INT = 15448
ALTER PROCEDURE [dbo].[浠撳偍绠悊_鎶ョ己琛ヨ揣_闇€姹傞噺鏄庣粏_鏌ヨ]
@鐗╂枡娴佹按鍙?INT = 15448
AS
BEGIN
SET NOCOUNT ON;
;WITH AS
;WITH 待发货且部件全完成订单 AS
(
SELECT
c.,
o.,
c.,
o.,
o.,
p.,
ISNULL(k., '') AS
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN dbo.PDM_项目名称 p ON m. = p.
INNER JOIN dbo._订单信息_基础表 o ON p. = o.
LEFT JOIN dbo._客户名称 k ON p. = k.
SELECT o.订单编号
FROM dbo.合同管理_订单信息_基础表 o
INNER JOIN dbo.PDM_项目名称 p ON o.项目流水号 = p.项目流水号
INNER JOIN dbo.PDM_组件名称_视图 c ON p.项目流水号 = c.项目流水号
WHERE ISNULL(o.是否提交, 0) = 5
GROUP BY o.订单编号
HAVING SUM(CASE WHEN ISNULL(c.产品状态, 0) = 4 OR ISNULL(c.完成数量, 0) >= ISNULL(c.数量, 0) THEN 1 ELSE 0 END) = COUNT(*)
),
AS
组件订单 AS
(
SELECT
co.,
b.,
b.,
SUM(ISNULL(b., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细不显示已完成订单
AND (@ IS NULL OR b. = @)
GROUP BY co., b., b.
c.缁勪欢娴佹按鍙?,
o.璁㈠崟缂栧彿,
c.鏄惁鍒嗛厤,
o.璁㈠崟绫诲瀷,
o.鏄惁鎻愪氦,
p.鏄惁鍚敤,
ISNULL(k.绠€绉? '') AS 绠€绉?
FROM dbo.PDM_缁勪欢鍚嶇О c
INNER JOIN dbo.PDM_鏈哄簥鍚嶇О m ON c.鏈哄簥娴佹按鍙?= m.鏈哄簥娴佹按鍙?
INNER JOIN dbo.PDM_椤圭洰鍚嶇О p ON m.椤圭洰娴佹按鍙?= p.椤圭洰娴佹按鍙?
INNER JOIN dbo.鍚堝悓绠悊_璁㈠崟淇℃伅_鍩虹琛?o ON p.椤圭洰娴佹按鍙?= o.椤圭洰娴佹按鍙?
LEFT JOIN dbo.瀹㈡埛鍏崇郴绠悊绯荤粺_瀹㈡埛鍚嶇О k ON p.瀹㈡埛娴佹按鍙?= k.瀹㈡埛娴佹按鍙?
WHERE NOT EXISTS (SELECT 1 FROM 待发货且部件全完成订单 x WHERE x.订单编号 = o.订单编号) -- 修改人:Ld 修改时间:2026-07-24 14:12:57; 待发货且部件全完成的订单平掉库存需求
),
缁勪欢璁㈠崟 AS
(
SELECT
c.缁勪欢娴佹按鍙?
o.璁㈠崟缂栧彿,
c.鏄惁鍒嗛厤,
o.璁㈠崟绫诲瀷,
o.鏄惁鎻愪氦,
p.鏄惁鍚敤,
ISNULL(k.绠€绉? '') AS 绠€绉? FROM dbo.PDM_缁勪欢鍚嶇О c
INNER JOIN dbo.PDM_鏈哄簥鍚嶇О m ON c.鏈哄簥娴佹按鍙?= m.鏈哄簥娴佹按鍙? INNER JOIN dbo.PDM_椤圭洰鍚嶇О p ON m.椤圭洰娴佹按鍙?= p.椤圭洰娴佹按鍙? INNER JOIN dbo.鍚堝悓绠悊_璁㈠崟淇℃伅_鍩虹琛?o ON p.椤圭洰娴佹按鍙?= o.椤圭洰娴佹按鍙? LEFT JOIN dbo.瀹㈡埛鍏崇郴绠悊绯荤粺_瀹㈡埛鍚嶇О k ON p.瀹㈡埛娴佹按鍙?= k.瀹㈡埛娴佹按鍙? ),
闇€姹傛槑缁?AS
(
SELECT
co.璁㈠崟缂栧彿,
b.缁勪欢娴佹按鍙?
b.鐗╂枡娴佹按鍙?
SUM(ISNULL(b.闆朵欢鏁伴噺, 0)) AS 闇€姹傞噺,
N'? AS
FROM dbo.PDM_闆朵欢鏄庣粏琛?b
INNER JOIN co ON b.?= co.? WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鏄庣粏涓嶆樉绀哄凡瀹屾垚璁㈠崟
AND (@?IS NULL OR b.?= @?
GROUP BY co.彿, b.? b.?
UNION ALL
SELECT
co.,
s.,
s.,
SUM(ISNULL(s., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细不显示已完成订单
AND (@ IS NULL OR s. = @)
GROUP BY co., s., s.
co.彿,
s.?
s.?
SUM(ISNULL(s., 0)) AS ,
N'鐢熶骇璁㈠崟闇€姹? AS 鏉ユ簮
FROM dbo.PDM_闆朵欢鏄庣粏琛╛鏍囧噯浠跺拰澶栬喘浠?s
INNER JOIN 缁勪欢璁㈠崟 co ON s.缁勪欢娴佹按鍙?= co.缁勪欢娴佹按鍙? WHERE co.鏄惁鍒嗛厤 = 1
AND co.璁㈠崟绫诲瀷 <> 3
AND NOT (ISNULL(co.鏄惁鎻愪氦, 0) = 6 AND ISNULL(co.鏄惁鍚敤, 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鏄庣粏涓嶆樉绀哄凡瀹屾垚璁㈠崟
AND (@鐗╂枡娴佹按鍙?IS NULL OR s.鐗╂枡娴佹按鍙?= @鐗╂枡娴佹按鍙?
GROUP BY co.璁㈠崟缂栧彿, s.缁勪欢娴佹按鍙? s.鐗╂枡娴佹按鍙?
UNION ALL
SELECT
co.,
t.,
t.,
SUM(ISNULL(t., 0)) AS ,
N'临时领料需求' AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t. = co.
WHERE t. IS NOT NULL
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时领料明细不显示已完成订单
AND (@ IS NULL OR t. = @)
GROUP BY co., t., t.
),
AS
co.璁㈠崟缂栧彿,
t.缁勪欢娴佹按鍙?
t.鐗╂枡娴佹按鍙?
SUM(ISNULL(t.瀹為鏁? 0)) AS 闇€姹傞噺,
N'? AS
FROM dbo._瑁呴厤鎵ц_涓存椂棰嗘枡鏄庣粏 t
LEFT JOIN co ON t.?= co.? WHERE t.?IS NOT NULL
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 涓存椂棰嗘枡鏄庣粏涓嶆樉绀哄凡瀹屾垚璁㈠崟
AND (@?IS NULL OR t.?= @?
GROUP BY co.彿, t.? t.? ),
AS
(
SELECT
co.,
b.,
b.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l. = b.
INNER JOIN co ON b. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR b. = @)
GROUP BY co., b., b.
co.彿,
b.?
b.?
SUM(ISNULL(l., 0)) AS ? FROM dbo._棰嗘枡鍗曟槑缁?l
INNER JOIN dbo.PDM_闆朵欢鏄庣粏琛?b ON l.彿 = b.彿
INNER JOIN co ON b.?= co.? WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鏄庣粏鎵e噺宸查鏁版椂鍚屾鎺掗櫎宸插畬鎴愯鍗? AND (@鐗╂枡娴佹按鍙?IS NULL OR b.鐗╂枡娴佹按鍙?= @鐗╂枡娴佹按鍙?
GROUP BY co.彿, b.? b.?
UNION ALL
SELECT
co.,
s.,
s.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
INNER JOIN co ON s. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR s. = @)
GROUP BY co., s., s.
co.彿,
s.?
s.?
SUM(ISNULL(l., 0)) AS ? FROM dbo._棰嗘枡鍗曟槑缁?l
INNER JOIN dbo.PDM_闆朵欢鏄庣粏琛?s ON l.彿 = s.彿
INNER JOIN co ON s.?= co.? WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 鏄庣粏鎵e噺宸查鏁版椂鍚屾鎺掗櫎宸插畬鎴愯鍗? AND (@鐗╂枡娴佹按鍙?IS NULL OR s.鐗╂枡娴佹按鍙?= @鐗╂枡娴佹按鍙?
GROUP BY co.彿, s.? s.?
UNION ALL
SELECT
co.,
l.,
l.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l. = co.
WHERE l. IS NOT NULL
AND ISNULL(l., 0) <> 0
AND ISNULL(l., 0) = 0
AND ISNULL(l., 0) = 0
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时件明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR l. = @)
GROUP BY co., l., l.
),
AS
co.彿,
l.?
l.?
SUM(ISNULL(l., 0)) AS ? FROM dbo._棰嗘枡鍗曟槑缁?l
LEFT JOIN co ON l.?= co.? WHERE l.?IS NOT NULL
AND ISNULL(l.? 0) <> 0
AND ISNULL(l.彿, 0) = 0
AND ISNULL(l.彿, 0) = 0
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 淇敼浜?Ld 淇敼鏃堕棿:2026-07-14 16:35:00; 涓存椂浠舵槑缁嗘墸鍑忓凡棰嗘暟鏃跺悓姝ユ帓闄ゅ凡瀹屾垚璁㈠崟
AND (@?IS NULL OR l.?= @?
GROUP BY co.彿, l.? l.? ),
?AS
(
SELECT , , , SUM() AS
FROM
GROUP BY , ,
),
AS
SELECT 彿, ? ? SUM(? AS ? FROM
GROUP BY 彿, ? ? ),
AS
(
SELECT
d.,
d.,
d.,
d.,
ISNULL(l., 0) AS ,
CASE WHEN d. > ISNULL(l., 0) THEN d. - ISNULL(l., 0) ELSE 0 END AS ,
d.
FROM d
LEFT JOIN l
ON d. = l.
AND d. = l.
AND ISNULL(d., '') = ISNULL(l., '')
d.彿,
d.?
d.?
d.,
ISNULL(l.? 0) AS ?
CASE WHEN d. > ISNULL(l.? 0) THEN d. - ISNULL(l.? 0) ELSE 0 END AS ,
d.
FROM ?d
LEFT JOIN ?l
ON d.?= l.? AND d.?= l.? AND ISNULL(d.彿, '') = ISNULL(l.彿, '')
)
SELECT
d.,
d.,
d.,
d.,
d.,
d.,
ISNULL(co., '') AS ,
d.
FROM d
LEFT JOIN co ON d. = co.
ORDER BY d., d., d.;
d.彿,
d.?
d.?
d.,
d.?
d.,
ISNULL(co.? '') AS ?
d.
FROM d
LEFT JOIN co ON d.?= co.? ORDER BY d.彿, d.? d.;
;WITH AS
;WITH ?AS
(
SELECT ,
FROM dbo._需求量_视图
WHERE (@ IS NULL OR = @)
SELECT ?
FROM dbo.__瑙嗗浘
WHERE (@?IS NULL OR ?= @?
)
SELECT
,
AS ,
0 AS ,
AS
FROM
ORDER BY ;
?
AS ,
0 AS ,
AS
FROM ? ORDER BY ?
END;
GO

View File

@@ -0,0 +1,57 @@
-- 订单查询增加关联合同号列测试库脚本;修改人:Ld 修改时间:2026-08-03 17:02:31;
USE [ERPTOOL_JY_20250826Back];
GO
ALTER 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(4000);
DECLARE @selectStrWhere nvarchar(4000);
-- 订单查询主表追加项目合同编号,便于查看补货订单关联的销售合同;修改人:Ld 修改时间:2026-08-03 17:02:31;
SET @selectStr =
' select PDM_订单信息_视图.*, PDM_项目名称.合同编号 AS 合同编号, A.暂停原因数量 from PDM_订单信息_视图
LEFT JOIN dbo.PDM_项目名称 ON PDM_订单信息_视图.项目流水号 = 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 = 'where 是否提交 <> 0 ';
IF(@_check = 1)
SET @selectStrWhere = @selectStrWhere+' and 买方 + isnull(收货人,'''') like + ''%'' + @客户 + ''%'' ';
IF(@_check = 1)
SET @selectStrWhere = @selectStrWhere+' and isnull(创建人,'''') like + ''%'' + @创建人 + ''%'' ';
IF(@_check = 1)
SET @selectStrWhere = @selectStrWhere+' and PDM_订单信息_视图.订单流水号 = @订单流水号 ';
IF(@_check = 1)
SET @selectStrWhere = @selectStrWhere+' and 创建日期 >=@开始时间 and 创建日期 <=@结束时间 ';
IF(@_check = 1)
SET @selectStrWhere = @selectStrWhere+' and 订单状态 = @订单状态 ';
SET @selectStr = @selectStr+@selectStrWhere+'order by 合同操作日期 DESC';
PRINT @selectStr;
EXEC sp_executesql @selectStr,
N'@客户 nvarchar(50),@创建人 nvarchar(50),@订单流水号 int,@开始时间 datetime,@结束时间 datetime,@订单状态 nvarchar(50)',
@,@,@,@,@,@;
END;
GO

View File

@@ -0,0 +1,217 @@
-- 生产计划增加关联合同编号列测试库脚本;修改人:Ld 修改时间:2026-08-04 14:57:36;
USE [ERPTOOL_JY_20250826Back];
GO
ALTER PROCEDURE [dbo].[_生产计划_查询数据]
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@ nvarchar(50) = '2026-5'
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ nvarchar(50);
DECLARE @ nvarchar(50);
DECLARE @selectStr nvarchar(MAX);
DECLARE @selectStrWhere nvarchar(MAX);
IF CHARINDEX('-', @) > 0
BEGIN
SET @ = LEFT(@, CHARINDEX('-', @) - 1);
SET @ = SUBSTRING(@, CHARINDEX('-', @) + 1, LEN(@) - CHARINDEX('-', @));
END
ELSE
BEGIN
SET @ = LEFT(@, 4);
SET @ = RIGHT(@, 2);
END;
SELECT TOP (0) *
INTO #生产计划
FROM dbo._生产计划_视图_新;
SET @selectStr = N'INSERT INTO #生产计划 SELECT * FROM dbo.车间生产管理_生产计划_视图_新 ';
SET @selectStrWhere = N' WHERE 年 = @年 AND 月 = @月 ';
IF (@_check = 1 AND ISNULL(@, N'') <> N'')
SET @selectStrWhere += N' AND (零件名称 + ISNULL(零件图号, N'''')) LIKE N''%'' + @零件名称 + N''%'' ';
IF (@_check = 1 AND ISNULL(@, N'') <> N'')
SET @selectStrWhere += N' AND 订单号 LIKE N''%'' + @合同编号 + N''%'' ';
IF (@_check = 1 AND ISNULL(@, N'') <> N'')
SET @selectStrWhere += N' AND 产品名称 LIKE N''%'' + @产品名称 + N''%'' ';
IF (@_check = 1 AND ISNULL(@, N'') <> N'')
SET @selectStrWhere += N' AND 状态 LIKE N''%'' + @状态 + N''%'' ';
SET @selectStr += @selectStrWhere + N';';
EXEC sp_executesql
@selectStr,
N'@零件名称 nvarchar(50), @合同编号 nvarchar(50), @产品名称 nvarchar(50), @状态 nvarchar(50), @年 nvarchar(50), @月 nvarchar(50)',
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @;
CREATE TABLE #BHZZOrders (
int,
nvarchar(100),
nvarchar(500),
date,
nvarchar(50),
nvarchar(50)
);
CREATE TABLE #MKOrders (
int,
nvarchar(100),
nvarchar(500),
date,
nvarchar(50),
nvarchar(50)
);
CREATE TABLE #收货人信息 (
int,
nvarchar(100),
nvarchar(100),
nvarchar(500)
);
INSERT INTO #BHZZOrders
SELECT DISTINCT
o.,
o.,
o.,
CAST(o. AS date) AS ,
dbo.(o.) AS ,
dbo.(o.) AS
FROM dbo.PDM_订单信息_视图 o
WHERE o. LIKE N'BHZZ%'
AND EXISTS (
SELECT 1
FROM #生产计划 p
WHERE NULLIF(LTRIM(RTRIM(CONVERT(nvarchar(100), p.))), N'') = o.
);
INSERT INTO #MKOrders
SELECT
o.,
o.,
o.,
CAST(o. AS date) AS ,
dbo.(o.) AS ,
dbo.(o.) AS
FROM dbo.PDM_订单信息_视图 o
WHERE o. LIKE N'%MK%';
INSERT INTO #收货人信息
SELECT DISTINCT
o.,
o.,
c.,
c.
FROM dbo.PDM_订单信息_视图 o
LEFT JOIN dbo._客户名称 c ON o. = c.
WHERE o. LIKE N'%MK%'
OR EXISTS (SELECT 1 FROM #BHZZOrders b WHERE b.订单编号 = o.订单编号);
;WITH AllMatches AS (
SELECT
B. AS BHZZ订单流水号,
B. AS BHZZ订单编号,
B. AS BHZZ合同日期,
B. AS BHZZ订单备注,
B. AS BHZZ备注提取数字,
B. AS BHZZ备注提取人名,
M. AS MK订单流水号,
M. AS MK订单编号,
M. AS MK合同日期,
M. AS MK订单备注,
M. AS MK备注数字部分,
M. AS MK备注提取人名,
R. AS MK订单收货人,
R. AS MK订单收货地址,
DATEDIFF(DAY, M., B.) AS ,
CASE
WHEN B. IS NOT NULL AND M. IS NOT NULL
AND B. = M. THEN N'数字匹配'
WHEN B. IS NOT NULL AND CHARINDEX(B., M.) > 0 THEN N'订单编号包含数字'
WHEN B. IS NOT NULL AND M. IS NOT NULL
AND B. = M. THEN N'人名匹配'
WHEN B. IS NOT NULL AND R. IS NOT NULL
AND B. = R. THEN N'人名与收货人匹配'
WHEN M. IS NOT NULL AND R. IS NOT NULL
AND M. = R. THEN N'MK备注人名与收货人匹配'
ELSE N'其他关联'
END AS
FROM #BHZZOrders B
INNER JOIN #MKOrders M ON
(B. IS NOT NULL AND M. IS NOT NULL AND B. = M.)
OR (B. IS NOT NULL AND CHARINDEX(B., M.) > 0)
OR (B. IS NOT NULL AND M. IS NOT NULL AND B. = M.)
LEFT JOIN #收货人信息 R ON M.订单流水号 = R.订单流水号
),
RankedMatches AS (
SELECT
*,
ROW_NUMBER() OVER (
PARTITION BY BHZZ订单流水号
ORDER BY
CASE
WHEN = N'人名与收货人匹配' THEN 1
WHEN = N'数字匹配' THEN 2
WHEN = N'订单编号包含数字' THEN 3
WHEN = N'人名匹配' THEN 4
WHEN = N'MK备注人名与收货人匹配' THEN 5
ELSE 6
END,
ABS()
) AS rn
FROM AllMatches
)
SELECT *
INTO #ClosestMatches
FROM RankedMatches
WHERE rn = 1;
-- 优先返回方案一写入订单项目流水号关联到的合同编号没有时前端继续显示原MK提取关联值修改人:Ld 修改时间:2026-08-04 14:57:36;
EXEC sp_executesql N'
SELECT
p.*,
linkProject.合同编号 AS 关联合同编号,
c.BHZZ订单流水号,
c.BHZZ订单编号,
c.BHZZ合同日期,
c.BHZZ订单备注,
c.BHZZ备注提取数字,
c.BHZZ备注提取人名,
c.MK订单流水号,
c.MK订单编号,
c.MK合同日期,
c.MK订单备注,
c.MK备注数字部分,
c.MK备注提取人名,
c.MK订单收货人,
c.MK订单收货地址,
c.日期差天数,
c.关联类型
FROM #生产计划 p
LEFT JOIN #ClosestMatches c ON c.BHZZ订单编号 = CONVERT(nvarchar(100), p.订单号)
LEFT JOIN dbo.合同管理_订单信息_基础表 linkOrder
ON linkOrder.订单编号 = CONVERT(nvarchar(100), p.订单号)
LEFT JOIN dbo.PDM_项目名称 linkProject
ON linkOrder.项目流水号 = linkProject.项目流水号
ORDER BY p.订单号, p.工序顺序;';
END;
GO

View File

@@ -0,0 +1,56 @@
-- 恢复 BHZZ-20250707004 / JY-FA-830-14.01 到车间可加工状态
-- 修改人:Ld 修改时间:2026-07-31 16:45:00;
SET NOCOUNT ON;
SET XACT_ABORT ON;
-- 修复前快照,便于回溯。修改人:Ld 修改时间:2026-07-31 16:45:00;
IF OBJECT_ID(N'dbo.GPT_恢复可加工_4935_20260731_1645_工艺计划', N'U') IS NULL
SELECT *
INTO dbo.GPT_恢复可加工_4935_20260731_1645_工艺计划
FROM dbo._零件工艺计划
WHERE = 4935;
BEGIN TRAN;
IF NOT EXISTS (
SELECT 1
FROM dbo._零件工艺计划
WHERE = 4935
AND = N'JY-FA-830-14.01'
AND = 3
AND = 100
AND ISNULL(, 0) = 42
AND ISNULL(, 0) = 0
)
BEGIN
RAISERROR(N'工艺计划 4935 当前状态不符合恢复条件,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
-- 仅恢复工艺计划状态为加工中,保留已完成/已入库/到货等历史数量。修改人:Ld 修改时间:2026-07-31 16:45:00;
UPDATE dbo._零件工艺计划
SET = 2
WHERE = 4935;
COMMIT TRAN;
SELECT N'修复完成' AS ;
SELECT ,,,,,,,,,,
FROM dbo._零件工艺计划
WHERE = 4935;
EXEC dbo._车间派工_查询
@ = 14210,
@_check = 1,
@ = 23354,
@_check = 1,
@_check = 1,
@ = N'JY-FA-830-14.01',
@_check = 0,
@ = N'',
@_check = 0,
@ = N'',
@_check = 0,
@ = N'';

View File

@@ -0,0 +1,116 @@
-- 修复 WX-20260730001 / WX-20260730002 调拨明细归属异常
-- 修改人:Ld 修改时间:2026-07-31 15:56:00;
SET NOCOUNT ON;
SET XACT_ABORT ON;
-- 修复前快照,便于回溯。修改人:Ld 修改时间:2026-07-31 15:56:00;
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_单', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_单 FROM dbo._外协调拨单 WHERE IN (2369,2370);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_明细', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_明细 FROM dbo._外协调拨单明细 WHERE IN (2369,2370) OR IN (6325,6326,6327,6328,6329);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_工序', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_工序 FROM dbo._外协调拨单明细_工序 WHERE IN (2369,2370) OR IN (6325,6326,6327,6328,6329) OR IN (108349,81720,30967);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_零件工序', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_零件工序 FROM dbo._零件工序 WHERE IN (108349,81720,30967);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_任务分配', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_任务分配 FROM dbo._零件工序_任务分配 WHERE IN (39177,36624,38805) OR IN (108349,81720,30967);
BEGIN TRAN;
IF NOT EXISTS (SELECT 1 FROM dbo._外协调拨单 WHERE = 2369 AND = N'WX-20260730001')
BEGIN
RAISERROR(N'未找到 WX-20260730001 对应流水号 2369停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM dbo._外协调拨单 WHERE = 2370 AND = N'WX-20260730002')
BEGIN
RAISERROR(N'未找到 WX-20260730002 对应流水号 2370停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM dbo._外协调拨单明细 WHERE = 6328 AND = 2369 AND = 1724 AND = 1)
BEGIN
RAISERROR(N'未找到待移动明细 6328停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF EXISTS (SELECT 1 FROM dbo._外协调拨单明细 WHERE IN (6325,6326))
BEGIN
RAISERROR(N'原明细流水号 6325/6326 已存在,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM dbo._外协调拨单明细 WHERE = 6329 AND = 2369 AND = 4313 AND = 100)
BEGIN
RAISERROR(N'未找到待替换明细 6329停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
-- 将本应属于 WX-20260730002 的明细移到新单。修改人:Ld 修改时间:2026-07-31 15:56:00;
UPDATE dbo._外协调拨单明细
SET = 2370
WHERE = 6328;
UPDATE dbo._外协调拨单明细_工序
SET = 2370
WHERE = 6328;
-- 恢复 WX-20260730001 原明细流水号,避免保留误补流水号。修改人:Ld 修改时间:2026-07-31 15:56:00;
DELETE FROM dbo._外协调拨单明细_工序
WHERE = 6329;
DELETE FROM dbo._外协调拨单明细
WHERE = 6329;
SET IDENTITY_INSERT dbo._外协调拨单明细 ON;
INSERT INTO dbo._外协调拨单明细
(, , , , , , , , , )
VALUES
(6325, 2369, 5710, NULL, 171, 0, NULL, '2026-07-30T10:48:58.617', NULL, NULL),
(6326, 2369, 4313, NULL, 100, 0, NULL, '2026-07-30T10:49:29.737', NULL, NULL);
SET IDENTITY_INSERT dbo._外协调拨单明细 OFF;
SET IDENTITY_INSERT dbo._外协调拨单明细_工序 ON;
INSERT INTO dbo._外协调拨单明细_工序
(id, , , , , )
VALUES
(6325, 2369, 6325, 108349, NULL, '2026-07-30T10:48:58.617'),
(6326, 2369, 6326, 81720, NULL, '2026-07-30T10:49:29.737');
SET IDENTITY_INSERT dbo._外协调拨单明细_工序 OFF;
-- 修正工序和任务选中/加工状态,不重复累加已外协数。修改人:Ld 修改时间:2026-07-31 15:56:00;
UPDATE dbo._零件工序
SET = CASE WHEN = 30967 THEN 1 ELSE 0 END
WHERE IN (108349,81720,30967);
UPDATE dbo._零件工序_任务分配
SET = 1
WHERE IN (39177,36624,38805);
COMMIT TRAN;
SELECT N'修复完成' AS ;
SELECT o.,o.,o.,o.,o.
FROM dbo._外协调拨单 o
WHERE o. IN (2369,2370)
ORDER BY o.;
SELECT d.,d.,o.,d.,g.,d.,d.,d.,d.,d.,d.
FROM dbo._外协调拨单明细 d
LEFT JOIN dbo._外协调拨单 o ON d. = o.
LEFT JOIN dbo._外协调拨单明细_工序 g ON d. = g.
WHERE d. IN (2369,2370)
ORDER BY d.,d.;
SELECT ,,,,,,
FROM dbo._零件工序
WHERE IN (108349,81720,30967)
ORDER BY ;
SELECT ,,,,,
FROM dbo._零件工序_任务分配
WHERE IN (39177,36624,38805)
ORDER BY ;

View File

@@ -0,0 +1,229 @@
-- 方案一补货关联合同测试库增量脚本;修改人:Ld 修改时间:2026-08-03 16:06:00;
USE [ERPTOOL_JY_20250826Back];
GO
IF OBJECT_ID(N'[dbo].[仓储管理_补货关联合同_查询数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_补货关联合同_查询数据];
GO
-- 补货创建时查询可关联的销售合同/订单;修改人:Ld 修改时间:2026-08-03 16:06:00;
CREATE PROCEDURE [dbo].[_补货关联合同_查询数据]
@ NVARCHAR(100) = NULL,
@ NVARCHAR(100) = NULL,
@ NVARCHAR(100) = NULL,
@ NVARCHAR(100) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP 50
p.,
p.,
ISNULL(c., N'') AS ,
ISNULL(c., c.) AS ,
o.,
o.,
CONVERT(VARCHAR(10), p., 23) AS ,
CONVERT(VARCHAR(10), ISNULL(o., p.), 23) AS
FROM dbo.PDM_项目名称 AS p
LEFT JOIN dbo._客户名称 AS c
ON p. = c.
LEFT JOIN dbo._订单信息_基础表 AS o
ON p. = o.
WHERE ISNULL(p., 1) = 1
AND ISNULL(p., N'') <> N''
AND (ISNULL(@, N'') = N''
OR p. LIKE N'%' + @ + N'%'
OR ISNULL(c., N'') LIKE N'%' + @ + N'%'
OR ISNULL(c., N'') LIKE N'%' + @ + N'%'
OR ISNULL(o., N'') LIKE N'%' + @ + N'%')
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;
END;
GO
IF OBJECT_ID(N'[dbo].[报缺补货_提交_关联合同]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_提交_关联合同];
GO
-- 补货提交时挂到选定销售合同/订单或仓库备货合同不改原报缺补货_提交修改人:Ld 修改时间:2026-08-03 16:06:00;
-- 仓库备货提交时自动生成CKBH前缀合同号并写入仓库补货合同明细修改人:Ld 修改时间:2026-08-04 08:29:13;
CREATE PROCEDURE [dbo].[_提交_关联合同]
@ INT = NULL,
@ INT = NULL,
@ NVARCHAR(200) = NULL,
@ DATETIME = NULL,
@ NVARCHAR(20) = NULL,
@ INT = NULL,
@ INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @ VARCHAR(100);
DECLARE @ VARCHAR(20);
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ NVARCHAR(50);
DECLARE @ NVARCHAR(50);
DECLARE @ INT = 3;
IF @ IS NULL
BEGIN
SELECT '0' AS result, N'请选择补货期限' AS message;
RETURN;
END;
IF ISNULL(@, N'') = N''
BEGIN
SELECT '0' AS result, N'请选择补货来源' AS message;
RETURN;
END;
IF @ = 1
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.)
BEGIN
SELECT '0' AS result, N'外购补货单为空' AS message;
RETURN;
END;
SET @ = 'BHWG-';
SET @ = N'外购补货';
END
ELSE
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.)
BEGIN
SELECT '0' AS result, N'自制补货单为空' AS message;
RETURN;
END;
SET @ = 'BHZZ-';
SET @ = N'自制补货';
END;
BEGIN TRY
BEGIN TRANSACTION;
IF @ = N'仓库备货'
BEGIN
-- 仓库备货每次创建独立CKBH合同编号规则按补货单日期+三位序号生成;修改人:Ld 修改时间:2026-08-04 08:29:13;
SET @ = 1;
SET @ = N'CKBH-' + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @), 3);
WHILE EXISTS (SELECT 1 FROM dbo.PDM_项目名称 WITH (UPDLOCK, HOLDLOCK) WHERE = @)
BEGIN
SET @ = @ + 1;
SET @ = N'CKBH-' + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @), 3);
END;
INSERT INTO dbo.PDM_项目名称(, , , , , , , , , , , , , , )
VALUES(@, 3, @, 0.13, GETDATE(), @, 1, GETDATE(), 8, 1, N'仓库发起备货补货合同', 1, N'仓库', 0, 0);
SET @ = SCOPE_IDENTITY();
-- 合同明细视图规格品名来源于机床名称+详情此处写入仓库补货、单价0修改人:Ld 修改时间:2026-08-04 08:29:13;
INSERT INTO dbo.PDM_机床名称(, , , , )
VALUES(@, N'仓库补货', 1, 0, N'');
SET @ = SCOPE_IDENTITY();
END;
ELSE
BEGIN
IF @ IS NULL
BEGIN
SELECT '0' AS result, N'请选择关联销售合同' AS message;
ROLLBACK TRANSACTION;
RETURN;
END;
IF NOT EXISTS (SELECT 1 FROM dbo.PDM_项目名称 WHERE = @ AND ISNULL(, 1) = 1)
BEGIN
SELECT '0' AS result, N'关联销售合同不存在或已停用' AS message;
ROLLBACK TRANSACTION;
RETURN;
END;
END;
SET @ = 1;
SET @ = @ + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @), 3);
WHILE EXISTS (SELECT 1 FROM dbo._订单信息_基础表 WHERE = @)
BEGIN
SET @ = @ + 1;
SET @ = @ + CONVERT(VARCHAR(8), GETDATE(), 112) + RIGHT('000' + CONVERT(VARCHAR(10), @), 3);
END;
IF @ IS NULL
BEGIN
INSERT INTO dbo.PDM_机床名称()
VALUES(@);
SET @ = SCOPE_IDENTITY();
END;
INSERT INTO dbo.PDM_组件名称(, , , , , )
VALUES(@, 1, @, 0, 1, 1);
SET @ = SCOPE_IDENTITY();
IF @ = 1
BEGIN
INSERT INTO dbo._订单信息_基础表(, , , , , , , )
VALUES(@, @, @, 1, @, GETDATE(), @,
ISNULL(@, N'') + CASE WHEN ISNULL(@, N'') <> N'' THEN N';补货来源:' + @ ELSE N'' END);
INSERT INTO dbo.PDM_零件明细表_标准件和外购件(, , , , , )
SELECT @, , , 2, , @
FROM dbo.;
INSERT INTO dbo._图片(, [], [], [], [], [])
SELECT , [], [], [], _图片.[], []
FROM dbo._图片
INNER JOIN dbo.
ON dbo._图片. = dbo..
INNER JOIN dbo.PDM_零件明细表_标准件和外购件
ON dbo.. = dbo.PDM_零件明细表_标准件和外购件.
WHERE = @
AND = 1;
DELETE FROM dbo.;
DELETE FROM dbo._图片 WHERE = 1;
END;
ELSE
BEGIN
INSERT INTO dbo._订单信息_基础表(, , , , , , , )
VALUES(@, @, @, 1, @, GETDATE(), @,
ISNULL(@, N'') + CASE WHEN ISNULL(@, N'') <> N'' THEN N';补货来源:' + @ ELSE N'' END);
INSERT INTO dbo.PDM_零件明细表_基本件(, , , , , , , )
SELECT @, , , 3, , @, 1,
FROM dbo.;
INSERT INTO dbo._图片(, [], [], [], [], [])
SELECT , [], [], [], [], []
FROM dbo._图片
INNER JOIN dbo.
ON dbo._图片. = dbo..
INNER JOIN dbo.PDM_零件明细表_基本件
ON dbo.. = dbo.PDM_零件明细表_基本件.
WHERE = @
AND = 0;
DELETE FROM dbo.;
DELETE FROM dbo._图片 WHERE = 0;
END;
COMMIT TRANSACTION;
SELECT '1' AS result, @ AS , @ AS , @ AS , N'提交成功' AS message;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS message;
END CATCH;
END;
GO

View File

@@ -0,0 +1,456 @@
/*
修改人:Ld 修改时间:2026-07-27 12:00:00;
销售绩效与提成比例设置部署脚本,适用于测试库和正式库;正式库不插入测试合同数据。
*/
-- 修改人:Ld 修改时间:2026-07-29 09:20:00; 正式库同步时补充合同提成类型字段。
IF COL_LENGTH(N'dbo.PDM_项目名称', N'提成类型') IS NULL
BEGIN
ALTER TABLE dbo.PDM_项目名称 ADD nvarchar(50) NULL;
END;
GO
-- 修改人:Ld 修改时间:2026-07-29 09:20:00; 合同编辑保存提成类型。
ALTER PROCEDURE [dbo].[PDM_项目名称_编辑数据]
@ int,
@ int=null,
@ int=null,
@ nvarchar(50)=null,
@ nvarchar(200)=null,
@ int=null,
@ nvarchar(50)=null,
@ nvarchar(50)=null,
@ float=null,
@ nvarchar(50)=null,
@ nvarchar(50)=null
AS
update PDM_项目名称 set =@,=@,=@,=@,=@,=@,=@
,=@,=@,=@ where =@
GO
-- 修改人:Ld 修改时间:2026-07-29 09:20:00; 合同查询视图带出提成类型。
ALTER VIEW [dbo].[PDM_项目名称_视图]
AS
SELECT CASE WHEN PDM_项目名称. IS NULL AND
PDM_项目名称. = 1 THEN '未提交' WHEN PDM_项目名称. = 0 THEN '终止执行' WHEN PDM_项目名称.
IS NOT NULL AND PDM_项目名称. = 1 AND IS NULL
THEN '未创建' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND = 1 AND
= 0 THEN '未审批' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND
= 1 AND = 0 AND = 1 THEN '未投产' WHEN PDM_项目名称. IS NOT NULL AND
PDM_项目名称. = 1 AND = 1 AND = 1 AND
= 1 THEN '未审核' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND
= 2 THEN '已投产' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND
= 3 THEN '生产中' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND
= 4 THEN '装配中' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND
= 5 THEN '待发货' WHEN PDM_项目名称. IS NOT NULL AND PDM_项目名称. = 1 AND
= 6 THEN '已完成' END AS , dbo.PDM_项目名称., dbo._客户名称.,
dbo.PDM_项目名称., dbo._付款方式_基础表., CASE WHEN CONVERT(varchar(100),
dbo.PDM_项目名称., 23) = '1900-01-01' THEN NULL ELSE CONVERT(varchar(100),
dbo.PDM_项目名称., 23) END AS , dbo.PDM_项目名称., dbo.PDM_项目名称., dbo.PDM_项目名称.,
CASE WHEN CONVERT(varchar(100), dbo.PDM_项目名称., 23) = '1900-01-01' THEN NULL
ELSE CONVERT(varchar(100), dbo.PDM_项目名称., 23) END AS , CONVERT(varchar(100),
dbo.PDM_项目名称., 23) AS , dbo.PDM_项目名称., dbo.PDM_项目名称.,
dbo.PDM_项目名称., dbo.PDM_项目名称., dbo._人员名单. AS ,
ISNULL(dbo._订单信息_基础表., 0) AS , dbo.PDM_项目名称.,
dbo.PDM_项目名称., dbo._客户名称., dbo._省份表.,
CASE WHEN CONVERT(varchar(7), dbo.PDM_项目名称., 120) = '1900-01' THEN NULL
ELSE CONVERT(varchar(7), dbo.PDM_项目名称., 120) END AS , 1 AS ,
CASE WHEN CONVERT(varchar(4), dbo.PDM_项目名称., 120) = '1900' THEN NULL ELSE CONVERT(varchar(4),
dbo.PDM_项目名称., 120) END AS , dbo._客户名称.,
dbo._客户名称., dbo._客户名称.,
dbo._客户名称., dbo.PDM_项目机床_视图.,
ISNULL(dbo.PDM_项目是否存在修改., 0) AS , CASE WHEN IS NULL
THEN '' ELSE '付款后' + + '' END AS , CONVERT(nvarchar(50), dbo.PDM_项目名称. * 100)
+ N'%' AS , dbo.PDM_项目名称. AS , dbo.PDM_项目名称.,
CASE WHEN _合同留存信息_视图. IS NOT NULL THEN 1 ELSE 0 END AS ,
CASE WHEN _客户提供资料_视图. IS NOT NULL THEN 1 ELSE 0 END AS ,
ISNULL(dbo.PDM_项目是否可删_视图., 0) AS , dbo.PDM_项目名称.,
_人员名单_1. AS , CONVERT(varchar(10), dbo.PDM_项目名称., 23) AS ,
dbo.PDM_项目名称., dbo._客户名称., dbo.PDM_项目名称.,
dbo.PDM_项目名称., dbo.PDM_项目名称. AS , dbo.PDM_项目名称.,
dbo.PDM_项目名称., dbo._订单信息_基础表., CASE WHEN = 0 OR
= 0 THEN 0 ELSE CONVERT(int, CONVERT(decimal(18, 2), ( / )) * 100) END AS ,
dbo.PDM_项目名称.
FROM dbo._客户提供资料_视图 RIGHT OUTER JOIN
dbo.PDM_项目名称 INNER JOIN
dbo._人员名单 ON dbo.PDM_项目名称. = dbo._人员名单. LEFT OUTER JOIN
dbo._人员名单 AS _人员名单_1 ON
dbo.PDM_项目名称. = _人员名单_1. LEFT OUTER JOIN
dbo.PDM_项目是否可删_视图 ON dbo.PDM_项目名称. = dbo.PDM_项目是否可删_视图. ON
dbo._客户提供资料_视图. = dbo.PDM_项目名称. LEFT OUTER JOIN
dbo._合同留存信息_视图 ON
dbo.PDM_项目名称. = dbo._合同留存信息_视图. LEFT OUTER JOIN
dbo.PDM_项目是否存在修改 ON
dbo.PDM_项目名称. = dbo.PDM_项目是否存在修改. LEFT OUTER JOIN
dbo.PDM_项目机床_视图 ON dbo.PDM_项目名称. = dbo.PDM_项目机床_视图. LEFT OUTER JOIN
dbo._订单信息_基础表 ON
dbo.PDM_项目名称. = dbo._订单信息_基础表. LEFT OUTER JOIN
dbo._付款方式_基础表 ON
dbo.PDM_项目名称. = dbo._付款方式_基础表. LEFT OUTER JOIN
dbo._省份表 RIGHT OUTER JOIN
dbo._客户名称 ON dbo._省份表. = dbo._客户名称. ON
dbo.PDM_项目名称. = dbo._客户名称.
GO
IF OBJECT_ID(N'dbo.销售管理_提成比例设置', N'U') IS NULL
BEGIN
CREATE TABLE dbo._提成比例设置
(
ID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
nvarchar(50) NOT NULL,
decimal(9,4) NOT NULL CONSTRAINT DF_销售管理_提成比例设置_提成比例 DEFAULT(0),
int NOT NULL CONSTRAINT DF_销售管理_提成比例设置_是否启用 DEFAULT(1),
nvarchar(500) NULL,
int NULL,
datetime NOT NULL CONSTRAINT DF_销售管理_提成比例设置_操作日期 DEFAULT(GETDATE())
);
CREATE UNIQUE INDEX UX_销售管理_提成比例设置_提成类型 ON dbo._提成比例设置();
END;
GO
MERGE dbo._提成比例设置 AS target
USING
(
SELECT N'首单提成(专机)' AS UNION ALL
SELECT N'首单提成(模块)' UNION ALL
SELECT N'转介绍提成(专机)' UNION ALL
SELECT N'转介绍提成(模块)' UNION ALL
SELECT N'复购提成'
) AS source
ON target. = source.
WHEN NOT MATCHED THEN
INSERT(, , , , )
VALUES(source., 0, 1, N'初始化提成类型,请维护百分比', GETDATE());
GO
IF OBJECT_ID(N'dbo.销售管理_提成比例设置_查询数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._提成比例设置_查询数据;
GO
CREATE PROCEDURE dbo._提成比例设置_查询数据
@_check int = 0,
@ nvarchar(50) = NULL,
@ int = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-27 14:35:00; 提成比例设置仅允许人员编号5和273查看。
IF ISNULL(@, 0) NOT IN (5, 273)
BEGIN
SELECT CAST(0 AS int) AS result, N'无权查看提成比例设置' AS msg;
RETURN;
END;
SELECT ID, , CAST( AS float) AS , , ,
CONVERT(varchar(19), , 120) AS
FROM dbo._提成比例设置
WHERE (@_check = 0 OR = @)
ORDER BY ID;
END;
GO
IF OBJECT_ID(N'dbo.销售管理_提成比例设置_保存数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._提成比例设置_保存数据;
GO
CREATE PROCEDURE dbo._提成比例设置_保存数据
@ID int = NULL,
@ nvarchar(50) = NULL,
@ float = NULL,
@ int = 1,
@ nvarchar(500) = NULL,
@ int = NULL,
@ int = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-27 14:35:00; 保存时再次校验指定人员编号。
IF ISNULL(@, 0) NOT IN (5, 273)
BEGIN
SELECT CAST(0 AS int) AS result, N'无权维护提成比例设置' AS msg;
RETURN;
END;
IF ISNULL(LTRIM(RTRIM(@)), N'') = N''
BEGIN
SELECT CAST(0 AS int) AS result, N'提成类型不能为空' AS msg;
RETURN;
END;
IF ISNULL(@, -1) < 0
BEGIN
SELECT CAST(0 AS int) AS result, N'提成比例不能小于0' AS msg;
RETURN;
END;
IF EXISTS(SELECT 1 FROM dbo._提成比例设置 WHERE = @ AND ISNULL(ID, 0) <> ISNULL(@ID, 0))
BEGIN
SELECT CAST(0 AS int) AS result, N'提成类型已存在' AS msg;
RETURN;
END;
IF EXISTS(SELECT 1 FROM dbo._提成比例设置 WHERE ID = @ID)
BEGIN
UPDATE dbo._提成比例设置
SET = @,
= CAST(@ AS decimal(9,4)),
= ISNULL(@, 1),
= @,
= @,
= GETDATE()
WHERE ID = @ID;
END
ELSE
BEGIN
INSERT INTO dbo._提成比例设置(, , , , , )
VALUES(@, CAST(@ AS decimal(9,4)), ISNULL(@, 1), @, @, GETDATE());
END;
SELECT CAST(1 AS int) AS result, N'保存成功' AS msg;
END;
GO
IF OBJECT_ID(N'dbo.销售管理_提成比例设置_删除数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._提成比例设置_删除数据;
GO
CREATE PROCEDURE dbo._提成比例设置_删除数据
@ID int = NULL,
@ int = NULL,
@ int = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-27 12:00:00; 删除采用停用方式保留历史比例记录。
-- 修改人:Ld 修改时间:2026-07-27 14:35:00; 停用时再次校验指定人员编号。
IF ISNULL(@, 0) NOT IN (5, 273)
BEGIN
SELECT CAST(0 AS int) AS result, N'无权停用提成比例设置' AS msg;
RETURN;
END;
UPDATE dbo._提成比例设置
SET = 0, = @, = GETDATE()
WHERE ID = @ID;
SELECT CAST(1 AS int) AS result, N'停用成功' AS msg;
END;
GO
IF OBJECT_ID(N'dbo.销售管理_销售绩效_查询数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._销售绩效_查询数据;
GO
CREATE PROCEDURE dbo._销售绩效_查询数据
@ nvarchar(7) = NULL,
@_check int = 0,
@ nvarchar(50) = NULL,
@_check int = 0,
@ nvarchar(50) = NULL,
@_check int = 0,
@ nvarchar(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-27 12:00:00; 达到90%当月补算此前回款,退款按发生月份扣回绩效。
;WITH AS
(
SELECT
r.id,
r.,
CAST(ISNULL(r., 0) AS decimal(18,2)) AS ,
r.,
p.,
CAST(ISNULL(p., 0) AS decimal(18,2)) AS ,
v.,
ISNULL(v., N'') AS ,
ISNULL(p., N'') AS ,
CAST(ISNULL(s., 0) AS decimal(18,4)) AS
FROM dbo._收款记录 r
INNER JOIN dbo.PDM_项目名称 p ON r. = p.
LEFT JOIN dbo.PDM_项目名称_视图 v ON p. = v.
LEFT JOIN dbo._提成比例设置 s ON p. = s. AND s. = 1
WHERE ISNULL(p., 1) = 1
AND ISNULL(p., 0) > 0
AND ISNULL(p., N'') <> N''
),
AS
(
SELECT a.*,
(
SELECT ISNULL(SUM(b.), 0)
FROM b
WHERE b. = a.
AND (b. < a. OR (b. = a. AND b.id <= a.id))
) AS
FROM a
),
AS
(
SELECT , MIN() AS
FROM
WHERE >= * 0.9
GROUP BY
),
AS
(
SELECT
l.*,
d.,
CASE
WHEN l. <= d. THEN CONVERT(varchar(7), d., 120)
ELSE CONVERT(varchar(7), l., 120)
END AS
FROM l
INNER JOIN d ON l. = d.
),
AS
(
SELECT
,
,
,
,
,
,
,
,
SUM() AS ,
SUM( * / 100.0) AS
FROM
GROUP BY , , , , , , ,
)
SELECT
h.,
h.,
h.,
h.,
CAST(h. AS float) AS ,
CAST((SELECT ISNULL(SUM(r2.), 0) FROM dbo._收款记录 r2 WHERE r2. = h. AND CONVERT(varchar(7), r2., 120) <= h.) AS float) AS ,
CAST(h. AS float) AS ,
CAST(CASE WHEN h. = 0 THEN 0 ELSE (SELECT ISNULL(SUM(r2.), 0) FROM dbo._收款记录 r2 WHERE r2. = h. AND CONVERT(varchar(7), r2., 120) <= h.) / h. * 100 END AS decimal(18,2)) AS ,
h.,
CAST(h. AS float) AS ,
CAST(h. AS decimal(18,2)) AS ,
h.
FROM h
WHERE (@ IS NULL OR @ = N'' OR h. = @)
AND (@_check = 0 OR h. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR h. = @)
AND (@_check = 0 OR h. LIKE N'%' + @ + N'%')
ORDER BY h. DESC, h., h.;
END;
GO
IF OBJECT_ID(N'dbo.报表_销售管理_销售绩效_查询数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._销售管理_销售绩效_查询数据;
GO
IF OBJECT_ID(N'dbo.销售管理_销售绩效_回款明细_查询数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._销售绩效_回款明细_查询数据;
GO
CREATE PROCEDURE dbo._销售绩效_回款明细_查询数据
@ int = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-28 13:45:00; 销售绩效展开行查看合同回款明细。
SELECT
id AS ID,
,
CAST(ISNULL(, 0) AS float) AS ,
CONVERT(varchar(19), , 120) AS ,
FROM dbo._收款记录
WHERE = @
ORDER BY DESC, id DESC;
END;
GO
CREATE PROCEDURE dbo._销售管理_销售绩效_查询数据
@ nvarchar(7) = NULL,
@_check int = 0,
@ nvarchar(50) = NULL,
@_check int = 0,
@ nvarchar(50) = NULL,
@_check int = 0,
@ nvarchar(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-27 12:00:00; 销售绩效导出列宽和数据。
SELECT N'销售绩效_' + CONVERT(varchar(8), GETDATE(), 112) + N'-' + REPLACE(CONVERT(varchar(8), GETDATE(), 108), ':', '') AS tablename, N'07' AS tabletype;
SELECT
120 * 20 AS ,
100 * 20 AS ,
160 * 20 AS ,
220 * 20 AS ,
120 * 20 AS ,
120 * 20 AS ,
120 * 20 AS ,
100 * 20 AS ,
160 * 20 AS ,
100 * 20 AS ,
120 * 20 AS ;
EXEC dbo._销售绩效_查询数据
@ = @,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @;
END;
GO
-- 修改人:Ld 修改时间:2026-07-29 09:20:00; 正式库模块ID可能已占用按路径查找或自动分配空闲ID。
DECLARE @ID int;
DECLARE @ID int;
SELECT @ID = id
FROM dbo._模块信息
WHERE path = N'SalesManagement/SalesPerformance'
OR component = N'/SalesManagement/SalesPerformance'
OR name = N'SalesPerformance'
OR title = N'销售绩效';
IF @ID IS NULL
BEGIN
SET @ID = CASE WHEN NOT EXISTS(SELECT 1 FROM dbo._模块信息 WHERE id = 155) THEN 155 ELSE (SELECT ISNULL(MAX(id), 0) + 1 FROM dbo._模块信息) END;
SET IDENTITY_INSERT dbo._模块信息 ON;
INSERT INTO dbo._模块信息(id, path, component, redirect, name, title, icon, , , , dashboardIcon, )
VALUES(@ID, N'SalesManagement/SalesPerformance', N'/SalesManagement/SalesPerformance', NULL, N'SalesPerformance', N'销售绩效', N'ContractCapitalManagement', 0, NULL, NULL, NULL, 0);
SET IDENTITY_INSERT dbo._模块信息 OFF;
END;
SELECT @ID = id
FROM dbo._模块信息
WHERE path = N'SalesManagement/CommissionRateSetting'
OR component = N'/SalesManagement/CommissionRateSetting'
OR name = N'CommissionRateSetting'
OR title = N'提成比例设置';
IF @ID IS NULL
BEGIN
SET @ID = CASE WHEN NOT EXISTS(SELECT 1 FROM dbo._模块信息 WHERE id = 156) THEN 156 ELSE (SELECT ISNULL(MAX(id), 0) + 1 FROM dbo._模块信息) END;
SET IDENTITY_INSERT dbo._模块信息 ON;
INSERT INTO dbo._模块信息(id, path, component, redirect, name, title, icon, , , , dashboardIcon, )
VALUES(@ID, N'SalesManagement/CommissionRateSetting', N'/SalesManagement/CommissionRateSetting', NULL, N'CommissionRateSetting', N'提成比例设置', N'ProductMaintenance', 0, NULL, NULL, NULL, 0);
SET IDENTITY_INSERT dbo._模块信息 OFF;
END;
INSERT INTO dbo._角色模块信息(id, pid, , , , )
SELECT @ID, 10, @ID, v., 1, 32
FROM (VALUES(2),(3),(9),(11)) v()
WHERE NOT EXISTS(SELECT 1 FROM dbo._角色模块信息 WHERE id = @ID AND = v.);
INSERT INTO dbo._角色模块信息(id, pid, , , , )
SELECT @ID, 10, @ID, 2, 1, 33
WHERE NOT EXISTS(SELECT 1 FROM dbo._角色模块信息 WHERE id = @ID AND = 2);
SELECT @ID AS ID, @ID AS ID;
GO

View File

@@ -0,0 +1,243 @@
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 销售绩效从合同创建、收款到发货的测试库全流程验证,结束后清理测试数据。
SET NOCOUNT ON;
DECLARE @ nvarchar(50) = N'FLOW-JX-' + CONVERT(varchar(8), GETDATE(), 112) + N'-' + REPLACE(CONVERT(varchar(8), GETDATE(), 108), ':', '');
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
DECLARE @ nvarchar(50);
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
BEGIN TRY
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 先清理历史测试前缀,保证本次验证不留下测试数据。
DECLARE @ TABLE ( int PRIMARY KEY);
INSERT INTO @ ()
SELECT
FROM dbo.PDM_项目名称
WHERE LIKE N'FLOW-JX-%'
OR LIKE N'TEST-JX-%';
DELETE d
FROM dbo._发货单明细 d
INNER JOIN dbo._记录表 n ON d. = n.
INNER JOIN dbo.PDM_组件名称 c ON n. = c.
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN @ p ON m. = p.;
DELETE f
FROM dbo._发货单 f
WHERE f. LIKE N'FLOW-JX-%';
DELETE n
FROM dbo._记录表 n
INNER JOIN dbo.PDM_组件名称 c ON n. = c.
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN @ p ON m. = p.;
DELETE r
FROM dbo._收款记录 r
INNER JOIN @ p ON r. = p.;
DELETE o
FROM dbo._订单信息_基础表 o
INNER JOIN @ p ON o. = p.;
DELETE c
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN @ p ON m. = p.;
DELETE m
FROM dbo.PDM_机床名称 m
INNER JOIN @ p ON m. = p.;
DELETE p
FROM dbo.PDM_项目名称 p
INNER JOIN @ h ON p. = h.;
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 使用系统合同创建过程生成模块合同。
EXEC dbo.PDM_项目名称_增加数据 @ = 1, @ = 5;
SELECT TOP 1 @ =
FROM dbo.PDM_项目名称
WHERE = 1
AND = 5
ORDER BY DESC;
UPDATE dbo.PDM_项目名称
SET = @,
= 2507,
= N'10',
= N'销售绩效全流程验证',
= N'销售绩效全流程验证,验证后自动清理',
= N'测试收货人',
= N'首单提成(模块)',
= GETDATE(),
= 1,
= 0
WHERE = @;
SELECT TOP 1 @ =
FROM dbo.PDM_机床名称
WHERE = @
ORDER BY DESC;
EXEC dbo.PDM_组件名称_增加数据 @ = @, @ = 1;
SELECT TOP 1 @ =
FROM dbo.PDM_组件名称
WHERE = @
ORDER BY DESC;
UPDATE dbo.PDM_组件名称
SET = 0,
= N'销售绩效流程测试组件',
= 1,
= 10000,
= N'',
= 4,
= 1,
= 0,
= 0,
= 0
WHERE = @;
EXEC dbo.PDM_项目名称_提交数据 @ = @, @ = 1, @ = 5;
EXEC dbo.PDM_订单信息_增加数据 @ = @, @ = 1, @ = 5;
SELECT TOP 1 @ =
FROM dbo._订单信息_基础表
WHERE = @
ORDER BY DESC;
UPDATE dbo._订单信息_基础表
SET = 5,
= 1,
= 1,
= 0,
= 0,
= 0,
= GETDATE(),
= GETDATE()
WHERE = @;
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 使用系统收款过程写入回款达到90%绩效规则。
EXEC dbo._订单信息_收款 @ = @, @ = 9000, @ = N'销售绩效全流程验证回款90%';
SELECT @ = COUNT(1)
FROM
(
SELECT 1 AS n
FROM dbo._收款记录 r
INNER JOIN dbo.PDM_项目名称 p ON r. = p.
WHERE p. = @
AND p. = N'首单提成(模块)'
AND ISNULL(p., 0) > 0
GROUP BY p.
HAVING SUM(ISNULL(r., 0)) >= ISNULL(MAX(p.), 0) * 0.9
) x;
SELECT @ = COUNT(1)
FROM dbo._收款记录
WHERE = @;
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 使用系统发货通知和发货单过程完成发货。
EXEC dbo._通知发货 @ = @, @ = N'1', @ = @;
SELECT TOP 1 @ =
FROM dbo._记录表
WHERE = @
ORDER BY DESC;
SET @ = N'FLOW-JX-FH-' + CONVERT(varchar(8), GETDATE(), 112) + N'-' + REPLACE(CONVERT(varchar(8), GETDATE(), 108), ':', '');
EXEC dbo._发货单_增加
@ = @,
@ = NULL,
@ = N'测试收货人',
@ = N'测试地址',
@ = N'销售绩效全流程验证发货',
@ = N'FLOW-JX-LOGISTICS',
@ = 2507;
SELECT TOP 1 @ =
FROM dbo._发货单
WHERE = @
ORDER BY DESC;
EXEC dbo._发货单明细_增加 @ = @, @ = @, @ = 1;
SELECT TOP 1 @ =
FROM dbo._发货单明细
WHERE = @
ORDER BY DESC;
EXEC dbo._发货单_确认发货
@ = @,
@ = @,
@ = N'1';
SELECT @ = COUNT(1)
FROM dbo._订单信息_基础表
WHERE = @
AND = 6;
SELECT
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ,
@ AS ;
EXEC dbo._销售绩效_查询数据 @ = NULL, @_check = 1, @ = @;
EXEC dbo._销售绩效_回款明细_查询数据 @ = @;
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 验证后立即清理本次测试数据,不留下测试合同、回款和发货记录。
DELETE FROM dbo._发货单明细 WHERE = @;
DELETE FROM dbo._发货单 WHERE = @;
DELETE FROM dbo._记录表 WHERE = @;
DELETE FROM dbo._收款记录 WHERE = @;
DELETE FROM dbo._订单信息_基础表 WHERE = @;
DELETE FROM dbo.PDM_组件名称 WHERE = @;
DELETE FROM dbo.PDM_机床名称 WHERE = @;
DELETE FROM dbo.PDM_项目名称 WHERE = @;
SELECT
(SELECT COUNT(1) FROM dbo.PDM_项目名称 WHERE = @) AS ,
(SELECT COUNT(1) FROM dbo._收款记录 WHERE = @) AS ,
(SELECT COUNT(1) FROM dbo._发货单 WHERE = @) AS ;
END TRY
BEGIN CATCH
-- 修改人:Ld 修改时间:2026-07-30 08:10:00; 异常时也尽量清理已生成测试数据。
IF @ IS NOT NULL DELETE FROM dbo._发货单明细 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo._发货单 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo._记录表 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo._收款记录 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo._订单信息_基础表 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo.PDM_组件名称 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo.PDM_机床名称 WHERE = @;
IF @ IS NOT NULL DELETE FROM dbo.PDM_项目名称 WHERE = @;
DECLARE @ nvarchar(4000);
DECLARE @ int;
DECLARE @ int;
SELECT
@ = ERROR_MESSAGE(),
@ = ERROR_SEVERITY(),
@ = ERROR_STATE();
RAISERROR(@, @, @);
END CATCH;

View File

@@ -0,0 +1,129 @@
USE [ERPTOOL_JY]
GO
-- 库存查询采购中排除已入库数据;修改人:Ld 修改时间:2026-07-23 16:39:41;
ALTER PROCEDURE [dbo].[_库存查询_查询]
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@ int = null,
@ int = null
AS
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)
--(select _零件工艺计划_视图.,isnull(SUM() - SUM(_零件工艺计划_视图.) - SUM(P.),0) as from _零件工艺计划_视图 inner join (select , from dbo._零件工序 where dbo._零件工序. = 1) as n
-- 这是改动前
set @selectStr =
'Select 仓储管理_累计库存查询_视图.*,批次,isnull(需求量,0) as 需求量,毛坯库存,isnull(加工中,0) as 加工中,isnull(采购中,0) as 采购中,isnull(补货毛坯,0) as 补货毛坯 from 仓储管理_累计库存查询_视图
left join
(select count(*) as 批次,物料流水号 from 库存管理_物料与货位对照表 where 货位存量 > 0 group by 物料流水号)
as a on 仓储管理_累计库存查询_视图.物料流水号 = a.物料流水号 LEFT JOIN dbo.物料管理_需求量_视图 ON a.物料流水号 = dbo.物料管理_需求量_视图.物料流水号
left join
(select 车间生产管理_零件工艺计划_视图.物料流水号,isnull(SUM(数量) - SUM(车间生产管理_零件工艺计划_视图.入库数量) - ISNULL(SUM(P.报废数量),0),0) as 加工中 from 车间生产管理_零件工艺计划_视图 inner join (select 工艺计划流水号,工序流水号 from dbo.车间生产管理工艺_零件工序 where dbo.车间生产管理工艺_零件工序.工序顺序 = 1) as n
on 车间生产管理_零件工艺计划_视图.工艺计划流水号 = n.工艺计划流水号 inner join
(select SUM(ISNULL(已领数量,0)) as 数量,工序流水号 from 车间生产管理工艺_零件工序_任务分配 group by 工序流水号) as m on n.工序流水号 = m.工序流水号 left join
(select sum(报废数量) as 报废数量,工艺计划流水号 from 车间生产管理工艺_零件工艺计划_报废零件记录 group by 工艺计划流水号) as P on 车间生产管理_零件工艺计划_视图.工艺计划流水号 = P.工艺计划流水号 where 车间生产管理_零件工艺计划_视图.是否提交 < 5 and 车间生产管理_零件工艺计划_视图.考核状态 < 3
group by 物料流水号)
as D on 仓储管理_累计库存查询_视图.物料流水号 = D.物料流水号
left join
(select sum(isnull(采购数,0)-isnull(到货数,0)) as 采购中,物料流水号 from 采购管理_采购合同明细_全部_查询视图 where 是否滑台 <> 1 and 是否滑台 <> 2 and 已删 = 0 and 采购状态 <> ''已到'' and 采购状态 <> ''已入库''
GROUP BY 物料流水号)
as T on 仓储管理_累计库存查询_视图.物料流水号 = T.物料流水号
left join
(select isnull(sum(isnull(累计库存,0)),0) as 毛坯库存,库存管理_物料主文件_基本.代号,库存管理_物料主文件_基本.名称 from 库存管理_物料主文件_基本
left join 库存管理_外购件累计库存 on 库存管理_物料主文件_基本.物料流水号 = 库存管理_外购件累计库存.物料流水号 where 库存管理_物料主文件_基本.是否禁用 = 0 group by 库存管理_物料主文件_基本.代号,库存管理_物料主文件_基本.名称) as C on 仓储管理_累计库存查询_视图.图号或型号 + ''MP'' = C.代号 AND 仓储管理_累计库存查询_视图.物料名称 + ''MP'' = C.名称
left join
(SELECT dbo.库存管理_物料主文件_基本.名称, dbo.库存管理_物料主文件_基本.代号, isnull(SUM(dbo.采购管理_采购合同明细.数量 - dbo.采购管理_采购合同明细.已到货数量),0) AS 补货毛坯
FROM dbo.采购管理_采购合同明细 INNER JOIN
dbo.PDM_零件明细表_标准件和外购件 ON dbo.采购管理_采购合同明细.标准件和外购件流水号 = dbo.PDM_零件明细表_标准件和外购件.标准件和外购件流水号 INNER JOIN
dbo.库存管理_物料主文件_基本 ON dbo.PDM_零件明细表_标准件和外购件.物料流水号 = dbo.库存管理_物料主文件_基本.物料流水号
GROUP BY dbo.库存管理_物料主文件_基本.名称, dbo.库存管理_物料主文件_基本.代号) as E on 仓储管理_累计库存查询_视图.图号或型号 + ''MP'' = E.代号 AND 仓储管理_累计库存查询_视图.物料名称 + ''MP'' = E.名称 '
set @selectStrWhere = 'where 1 = 1 '
--2024-04-29isnull(SUM( - _零件工艺计划_视图. - P.),0) as
--isnull(SUM() - SUM(_零件工艺计划_视图.) - SUM(P.),0) as
if(@_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(物料名称,'''') like + ''%'' + @物料名称 + ''%'' '
if(@_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(物料编码,'''') like + ''%'' + @物料编码 + ''%'' '
if(@_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(图号或型号,'''') like + ''%'' + @图号 + ''%'' '
if(@_check = 1)
set @selectStrWhere = @selectStrWhere+' and 类型 = @类型 '
if(@_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(货位名称,'''') like + ''%'' + @库位 + ''%'' '
if @ = 1
begin
if @ = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料编码 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料编码 ASC'
end
end
else if @ = 2
begin
if @ = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料名称 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料名称 ASC'
end
end
else if @ = 3
begin
if @ = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 货位名称 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 货位名称 ASC'
end
end
else if @ = 4
begin
if @ = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 库存 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 库存 ASC'
end
end
else if @ = 5
begin
if @ = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 最低库存 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 最低库存 ASC'
end
end
else
begin
set @selectStr = @selectStr+@selectStrWhere
end
print @selectStr
EXEC sp_executesql @selectStr,N'@物料名称 nvarchar(50),@物料编码 nvarchar(50), @图号 nvarchar(50),@类型 nvarchar(50),@库位 nvarchar(50)',
@,@,@,@,@
GO

View File

@@ -0,0 +1,354 @@
USE [ERPTOOL_JY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 补齐正式库截图中的工价计算字段;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'工作时间(时)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_工作时间时] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'宽放时间(时)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_宽放时间时] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'日工资(元)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_日工资元] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'标准产能(件/天)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [(/)] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_标准产能件天] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'工价定额') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_工价定额] DEFAULT ((0));
GO
-- 保护正式库旧数据:按已有日产能和最终单价反推新公式输入字段;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE price
SET [s] = ISNULL([s], 0) + ISNULL([s], 0),
[(/)] = ISNULL([()], 0),
[] = ISNULL([(/)], 0),
[()] = CASE
WHEN ISNULL([()], 0) <> 0 THEN [()]
WHEN ISNULL([()], 0) <> 0 AND ISNULL([s], 0) + ISNULL([s], 0) <> 0
THEN ISNULL([()], 0) * (ISNULL([s], 0) + ISNULL([s], 0)) / 3600
ELSE 0
END,
[()] = CASE
WHEN ISNULL([()], 0) <> 0 THEN [()]
WHEN ISNULL([(/)], 0) <> 0 AND ISNULL([()], 0) <> 0
THEN ISNULL([(/)], 0) * ISNULL([()], 0)
ELSE 0
END
FROM [dbo].[_工序工价] price;
END
GO
-- 用完整字段公式触发器替代之前仅计算总时间的触发器;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算];
GO
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算];
GO
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]
ON [dbo].[_工序工价]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF TRIGGER_NESTLEVEL() > 1
RETURN;
;WITH FormulaSource AS (
SELECT
price.,
ISNULL(price.[s], 0) AS s,
ISNULL(price.[s], 0) AS s,
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS s,
-- 修改人:Ld 修改时间:2026-08-04 09:49:39; 前端编辑过程仍通过旧字段提交,优先按日产能反推工作时间。
CASE
WHEN ISNULL(price.[()], 0) <> 0 AND ISNULL(price.[s], 0) + ISNULL(price.[s], 0) <> 0
THEN ISNULL(price.[()], 0) * (ISNULL(price.[s], 0) + ISNULL(price.[s], 0)) / 3600
ELSE 0
END AS ,
ISNULL(price.[()], 0) AS ,
-- 修改人:Ld 修改时间:2026-08-04 09:49:39; 前端编辑过程仍通过旧字段提交,优先按工价定额和标准产能反推日工资。
CASE
WHEN ISNULL(price.[(/)], 0) <> 0 AND ISNULL(price.[()], 0) <> 0
THEN ISNULL(price.[(/)], 0) * ISNULL(price.[()], 0)
ELSE 0
END AS
FROM [dbo].[_工序工价] price
INNER JOIN inserted i ON price. = i.
),
FormulaResult AS (
SELECT
,
s,
,
,
,
CASE WHEN s <> 0 THEN * 3600 / s ELSE 0 END AS
FROM FormulaSource
)
UPDATE price
SET price.[s] = calc.s,
price.[()] = calc.,
price.[()] = calc.,
price.[()] = calc.,
price.[(/)] = calc.,
price.[] = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END,
-- 修改人:Ld 修改时间:2026-08-04 09:49:39; 旧字段继续同步,兼容现有页面和历史接口。
price.[()] = calc.,
price.[(/)] = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END,
price. = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END
FROM [dbo].[_工序工价] price
INNER JOIN FormulaResult calc ON price. = calc.;
END
GO
-- 触发一次计算,确保正式库现有数据按公式同步;修改人:Ld 修改时间:2026-08-04 09:49:39;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE [dbo].[_工序工价]
SET [s] = [s];
END
GO
-- 工序工价分页查询增加截图字段,并保留旧字段兼容前端;修改人:Ld 修改时间:2026-08-04 09:49:39;
ALTER PROCEDURE [dbo].[_工序工价_查询数据]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N'',
@PageCurrent INT = 1,
@PageSize INT = 1000
AS
BEGIN
SET NOCOUNT ON;
IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1;
IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 1000;
;WITH PlanData AS (
-- 与制定工艺组件订单、产品、零件选择保持同一工艺计划来源口径;修改人:Ld 修改时间:2026-08-04 09:49:39;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
),
ProcessData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC
) AS RowNum,
price.,
gx.,
gx.,
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS ,
ISNULL(price.[(/)], ISNULL(price.[()], 0)) AS [()],
ISNULL(price.[], ISNULL(price.[(/)], 0)) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
ISNULL(price., 1) AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
)
SELECT
,
,
,
,
,
,
,
,
,
,
,
,
[()],
,
[s],
[s],
[s],
[()],
[()],
[()],
[(/)],
,
[()],
[(/)],
,
,
,
,
,
,
,
FROM ProcessData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @);
END
GO
-- 工序工价导出增加截图字段;修改人:Ld 修改时间:2026-08-04 09:49:39;
ALTER PROCEDURE [dbo].[_工序工价_导出表格_查询]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N''
AS
BEGIN
SET NOCOUNT ON;
SELECT N'工序工价_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 20 AS ,
256 * 28 AS ,
256 * 16 AS [()],
256 * 18 AS [(/)],
256 * 16 AS [()],
256 * 16 AS [()],
256 * 14 AS [()],
256 * 16 AS [()],
256 * 16 AS [()],
256 * 14 AS [()],
256 * 20 AS [(/)],
256 * 14 AS ;
SELECT
0 AS ,
0 AS ,
1 AS [()],
1 AS [(/)],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [(/)],
1 AS ;
;WITH PlanData AS (
-- 页面查询同源工艺计划数据源,确保导出与列表一致;修改人:Ld 修改时间:2026-08-04 09:49:39;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
)
SELECT
base. AS ,
gp. + N' ' + gp. AS ,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [(/)],
ISNULL(price.[s], 0) AS [()],
ISNULL(price.[s], 0) AS [()],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC;
END
GO

View File

@@ -0,0 +1,350 @@
USE [ERPTOOL_JY_20250826Back]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 补齐截图中的工价计算字段;修改人:Ld 修改时间:2026-08-04 09:27:01;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'工作时间(时)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_工作时间时] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'宽放时间(时)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_宽放时间时] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'日工资(元)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [()] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_日工资元] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'标准产能(件/天)') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [(/)] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_标准产能件天] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL AND COL_LENGTH(N'[dbo].[车间生产管理工艺_工序工价]', N'工价定额') IS NULL
ALTER TABLE [dbo].[_工序工价] ADD [] DECIMAL(18, 4) NOT NULL CONSTRAINT [DF_车间生产管理工艺_工序工价_工价定额] DEFAULT ((0));
GO
-- 保护旧数据:按已有日产能和最终单价反推新公式输入字段;修改人:Ld 修改时间:2026-08-04 09:27:01;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE price
SET [s] = ISNULL([s], 0) + ISNULL([s], 0),
[(/)] = ISNULL([()], 0),
[] = ISNULL([(/)], 0),
[()] = CASE
WHEN ISNULL([()], 0) <> 0 THEN [()]
WHEN ISNULL([()], 0) <> 0 AND ISNULL([s], 0) + ISNULL([s], 0) <> 0
THEN ISNULL([()], 0) * (ISNULL([s], 0) + ISNULL([s], 0)) / 3600
ELSE 0
END,
[()] = CASE
WHEN ISNULL([()], 0) <> 0 THEN [()]
WHEN ISNULL([(/)], 0) <> 0 AND ISNULL([()], 0) <> 0
THEN ISNULL([(/)], 0) * ISNULL([()], 0)
ELSE 0
END
FROM [dbo].[_工序工价] price;
END
GO
-- 工序工价字段公式触发器E=C+DI=F*3600/EJ=H/I修改人:Ld 修改时间:2026-08-04 09:27:01;
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算];
GO
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_字段公式计算]
ON [dbo].[_工序工价]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF TRIGGER_NESTLEVEL() > 1
RETURN;
;WITH FormulaSource AS (
SELECT
price.,
ISNULL(price.[s], 0) AS s,
ISNULL(price.[s], 0) AS s,
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS s,
-- 修改人:Ld 修改时间:2026-08-04 09:39:18; 前端编辑过程仍通过旧字段提交,优先按日产能反推工作时间。
CASE
WHEN ISNULL(price.[()], 0) <> 0 AND ISNULL(price.[s], 0) + ISNULL(price.[s], 0) <> 0
THEN ISNULL(price.[()], 0) * (ISNULL(price.[s], 0) + ISNULL(price.[s], 0)) / 3600
ELSE 0
END AS ,
ISNULL(price.[()], 0) AS ,
-- 修改人:Ld 修改时间:2026-08-04 09:39:18; 前端编辑过程仍通过旧字段提交,优先按工价定额和标准产能反推日工资。
CASE
WHEN ISNULL(price.[(/)], 0) <> 0 AND ISNULL(price.[()], 0) <> 0
THEN ISNULL(price.[(/)], 0) * ISNULL(price.[()], 0)
ELSE 0
END AS
FROM [dbo].[_工序工价] price
INNER JOIN inserted i ON price. = i.
),
FormulaResult AS (
SELECT
,
s,
,
,
,
CASE WHEN s <> 0 THEN * 3600 / s ELSE 0 END AS
FROM FormulaSource
)
UPDATE price
SET price.[s] = calc.s,
price.[()] = calc.,
price.[()] = calc.,
price.[()] = calc.,
price.[(/)] = calc.,
price.[] = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END,
-- 修改人:Ld 修改时间:2026-08-04 09:27:01; 旧字段继续同步,兼容现有页面和历史接口。
price.[()] = calc.,
price.[(/)] = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END,
price. = CASE WHEN calc. <> 0 THEN calc. / calc. ELSE 0 END
FROM [dbo].[_工序工价] price
INNER JOIN FormulaResult calc ON price. = calc.;
END
GO
-- 触发一次计算,确保测试库现有数据按公式同步;修改人:Ld 修改时间:2026-08-04 09:27:01;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE [dbo].[_工序工价]
SET [s] = [s];
END
GO
-- 工序工价分页查询增加截图字段,并保留旧字段兼容前端;修改人:Ld 修改时间:2026-08-04 09:27:01;
ALTER PROCEDURE [dbo].[_工序工价_查询数据]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N'',
@PageCurrent INT = 1,
@PageSize INT = 1000
AS
BEGIN
SET NOCOUNT ON;
IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1;
IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 1000;
;WITH PlanData AS (
-- 与制定工艺组件订单、产品、零件选择保持同一工艺计划来源口径;修改人:Ld 修改时间:2026-08-04 09:27:01;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
),
ProcessData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC
) AS RowNum,
price.,
gx.,
gx.,
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS ,
ISNULL(price.[(/)], ISNULL(price.[()], 0)) AS [()],
ISNULL(price.[], ISNULL(price.[(/)], 0)) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
ISNULL(price., 1) AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
)
SELECT
,
,
,
,
,
,
,
,
,
,
,
,
[()],
,
[s],
[s],
[s],
[()],
[()],
[()],
[(/)],
,
[()],
[(/)],
,
,
,
,
,
,
,
FROM ProcessData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @);
END
GO
-- 工序工价导出增加截图字段;修改人:Ld 修改时间:2026-08-04 09:27:01;
ALTER PROCEDURE [dbo].[_工序工价_导出表格_查询]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N''
AS
BEGIN
SET NOCOUNT ON;
SELECT N'工序工价_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 20 AS ,
256 * 28 AS ,
256 * 16 AS [()],
256 * 18 AS [(/)],
256 * 16 AS [()],
256 * 16 AS [()],
256 * 14 AS [()],
256 * 16 AS [()],
256 * 16 AS [()],
256 * 14 AS [()],
256 * 20 AS [(/)],
256 * 14 AS ;
SELECT
0 AS ,
0 AS ,
1 AS [()],
1 AS [(/)],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [()],
1 AS [(/)],
1 AS ;
;WITH PlanData AS (
-- 页面查询同源工艺计划数据源,确保导出与列表一致;修改人:Ld 修改时间:2026-08-04 09:27:01;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
)
SELECT
base. AS ,
gp. + N' ' + gp. AS ,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [(/)],
ISNULL(price.[s], 0) AS [()],
ISNULL(price.[s], 0) AS [()],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC;
END
GO

View File

@@ -79,6 +79,14 @@ AND NOT EXISTS (
WHERE name = N'UX_车间生产管理工艺_工序工价_工序流水号'
AND object_id = OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]')
)
-- 修改人:Ld 修改时间:2026-07-31 10:53:08; 测试库存在历史重复工序流水号时跳过唯一索引创建,避免阻断存储过程部署
AND NOT EXISTS (
SELECT 1
FROM [dbo].[_工序工价]
WHERE IS NOT NULL
GROUP BY
HAVING COUNT(1) > 1
)
BEGIN
CREATE UNIQUE NONCLUSTERED INDEX [UX_车间生产管理工艺_工序工价_工序流水号]
ON [dbo].[_工序工价]([])
@@ -86,7 +94,7 @@ BEGIN
END
GO
-- 工序工价历史表,记录最终单价前后数据;修改人:Ld 修改时间:2026-07-06 09:27:09;
-- 工序工价历史表,记录设置弹窗完整字段变更前后数据;修改人:Ld 修改时间:2026-07-31 10:53:08;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价历史记录]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[_工序工价历史记录](
@@ -108,8 +116,39 @@ BEGIN
END
GO
-- 清理旧历史中的多字段内容,历史弹窗只保留最终单价数据;修改人:Ld 修改时间:2026-07-06 09:27:09;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价历史记录]', N'U') IS NOT NULL
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_历史快照]', N'FN') IS NOT NULL
DROP FUNCTION [dbo].[_工序工价_历史快照];
GO
-- 设置弹窗完整字段历史快照;修改人:Ld 修改时间:2026-07-31 10:53:08;
CREATE FUNCTION [dbo].[_工序工价_历史快照](
@s DECIMAL(18, 4),
@s DECIMAL(18, 4),
@s DECIMAL(18, 4),
@ DECIMAL(18, 4),
@ DECIMAL(18, 4),
@ DECIMAL(18, 4),
@ DECIMAL(18, 4),
@ DATE,
@ INT
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN N'机动时间s=' + CONVERT(NVARCHAR(50), ISNULL(@s, 0))
+ N';辅助时间s=' + CONVERT(NVARCHAR(50), ISNULL(@s, 0))
+ N';总时间s=' + CONVERT(NVARCHAR(50), ISNULL(@s, 0))
+ N';单装数量(件)=' + CONVERT(NVARCHAR(50), ISNULL(@, 0))
+ N';操作台数=' + CONVERT(NVARCHAR(50), ISNULL(@, 0))
+ N';日产能(件)=' + CONVERT(NVARCHAR(50), ISNULL(@, 0))
+ N';最终单价(元/件)=' + CONVERT(NVARCHAR(50), ISNULL(@, 0))
+ N';生效日期=' + ISNULL(CONVERT(NVARCHAR(10), @, 120), N'')
+ N';变更次数=' + CONVERT(NVARCHAR(50), ISNULL(@, 0));
END
GO
-- 旧历史不再压缩字段,保留后续完整字段快照;修改人:Ld 修改时间:2026-07-31 10:53:08;
IF 1 = 0 AND OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价历史记录]', N'U') IS NOT NULL
BEGIN
UPDATE [dbo].[_工序工价历史记录]
SET = CASE
@@ -461,8 +500,18 @@ BEGIN
BEGIN
SELECT
@Old工序流水号 = ,
-- 修改人:Ld 修改时间:2026-07-06 09:27:09; 历史数据只存储最终单价
@ = N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), ISNULL([(/)], 0))
-- 修改人:Ld 修改时间:2026-07-31 10:53:08; 历史记录保留设置弹窗全部字段
@ = [dbo].[_工序工价_历史快照](
[s],
[s],
[s],
[()],
[],
[()],
[(/)],
,
)
FROM [dbo].[_工序工价]
WHERE = @Id;
@@ -545,8 +594,18 @@ BEGIN
SET @ = N'';
END;
-- 修改人:Ld 修改时间:2026-07-06 09:27:09; 历史数据只存储最终单价
SET @ = N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), @Safe最终单价元件);
-- 修改人:Ld 修改时间:2026-07-31 10:53:08; 历史记录保留设置弹窗全部字段
SET @ = [dbo].[_工序工价_历史快照](
@Safe机动时间s,
@Safe辅助时间s,
@Safe总时间s,
@Safe单装数量件,
@Safe操作台数,
@Safe日产能件,
@Safe最终单价元件,
@Safe生效日期,
@Safe变更次数
);
INSERT INTO [dbo].[_工序工价历史记录](
,
@@ -612,6 +671,15 @@ BEGIN
DECLARE @ NVARCHAR(100);
DECLARE @ NVARCHAR(100);
DECLARE @ NVARCHAR(MAX);
DECLARE @s DECIMAL(18, 4);
DECLARE @s DECIMAL(18, 4);
DECLARE @s DECIMAL(18, 4);
DECLARE @ DECIMAL(18, 4);
DECLARE @ DECIMAL(18, 4);
DECLARE @ DECIMAL(18, 4);
DECLARE @ DECIMAL(18, 4);
DECLARE @ DATE;
DECLARE @ INT;
SET @Id = CASE WHEN ISNUMERIC(NULLIF(@, N'')) = 1 THEN CONVERT(INT, @) ELSE NULL END;
@@ -640,8 +708,27 @@ BEGIN
@ = ,
@ = ,
@ = ,
-- 修改人:Ld 修改时间:2026-07-06 09:27:09; 停用历史只记录最终单价
@ = N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), ISNULL([(/)], 0))
@s = [s],
@s = [s],
@s = [s],
@ = [()],
@ = [],
@ = [()],
@ = [(/)],
@ = ,
@ = ,
-- 修改人:Ld 修改时间:2026-07-31 10:53:08; 停用历史记录设置弹窗全部字段
@ = [dbo].[_工序工价_历史快照](
[s],
[s],
[s],
[()],
[],
[()],
[(/)],
,
)
FROM [dbo].[_工序工价]
WHERE = @Id;
@@ -651,8 +738,18 @@ BEGIN
= @
WHERE = @Id;
-- 修改人:Ld 修改时间:2026-07-06 09:27:09; 停用历史只记录最终单价
SET @ = @;
-- 修改人:Ld 修改时间:2026-07-31 10:53:08; 停用历史仍展示设置弹窗字段快照
SET @ = [dbo].[_工序工价_历史快照](
@s,
@s,
@s,
@,
@,
@,
@,
@,
@
);
INSERT INTO [dbo].[_工序工价历史记录](
,
@@ -947,7 +1044,18 @@ BEGIN
price.,
N'拷贝',
N'源零件图号=' + ISNULL(@, N''),
N'最终单价(元/件)=' + CONVERT(NVARCHAR(50), price.[(/)]),
-- 修改人:Ld 修改时间:2026-07-31 10:53:08; 拷贝历史记录设置弹窗全部字段
[dbo].[_工序工价_历史快照](
price.[s],
price.[s],
price.[s],
price.[()],
price.[],
price.[()],
price.[(/)],
price.,
price.
),
@,
@,
N'工序工价拷贝'

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,170 @@
USE [ERPTOOL_JY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 同步正式库历史工序工价总时间,确保总时间等于机动时间加辅助时间;修改人:Ld 修改时间:2026-08-03 15:24:31;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价]', N'U') IS NOT NULL
BEGIN
UPDATE [dbo].[_工序工价]
SET [s] = ISNULL([s], 0) + ISNULL([s], 0),
= GETDATE()
WHERE ISNULL([s], 0) <> ISNULL([s], 0) + ISNULL([s], 0);
END
GO
-- 工序工价总时间数据库兜底,后续新增或修改时自动保持总时间=机动时间+辅助时间;修改人:Ld 修改时间:2026-08-03 15:24:31;
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算];
GO
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_工序工价_总时间自动计算]
ON [dbo].[_工序工价]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF TRIGGER_NESTLEVEL() > 1
RETURN;
-- 修改人:Ld 修改时间:2026-08-03 15:24:31; 仅修正本次变动行,避免人工或接口传入错误总时间。
UPDATE price
SET price.[s] = ISNULL(price.[s], 0) + ISNULL(price.[s], 0)
FROM [dbo].[_工序工价] price
INNER JOIN inserted i ON price. = i.
WHERE ISNULL(price.[s], 0) <> ISNULL(price.[s], 0) + ISNULL(price.[s], 0);
END
GO
-- 工序工价导出,正式库复用页面查询筛选口径并导出全部匹配数据;修改人:Ld 修改时间:2026-08-03 15:24:31;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_导出表格_查询]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_工序工价_导出表格_查询];
GO
CREATE PROCEDURE [dbo].[_工序工价_导出表格_查询]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N''
AS
BEGIN
SET NOCOUNT ON;
SELECT N'工序工价_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 20 AS ,
256 * 20 AS ,
256 * 20 AS ,
256 * 20 AS ,
256 * 24 AS ,
256 * 20 AS ,
256 * 12 AS ,
256 * 12 AS ,
256 * 12 AS ,
256 * 12 AS [s],
256 * 12 AS [s],
256 * 12 AS [s],
256 * 16 AS [()],
256 * 12 AS ,
256 * 14 AS [()],
256 * 18 AS [(/)],
256 * 14 AS ,
256 * 12 AS ,
256 * 12 AS ,
256 * 24 AS ,
256 * 14 AS ,
256 * 20 AS ,
256 * 14 AS ,
256 * 20 AS ;
SELECT
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
1 AS ,
1 AS ,
1 AS ,
1 AS [s],
1 AS [s],
1 AS [s],
1 AS [()],
1 AS ,
1 AS [()],
1 AS [(/)],
0 AS ,
1 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ;
;WITH PlanData AS (
-- 页面查询同源工艺计划数据源,确保正式库导出与列表一致;修改人:Ld 修改时间:2026-08-03 15:24:31;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
)
SELECT
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS ,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
CASE WHEN ISNULL(price., 1) = 1 THEN N'启用' ELSE N'停用' END AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC;
END
GO

View File

@@ -0,0 +1,138 @@
USE [ERPTOOL_JY_20250826Back]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 工序工价导出,复用页面查询筛选口径并导出全部匹配数据;修改人:Ld 修改时间:2026-08-03 14:24:48;
-- 修改人:Ld 修改时间:2026-08-03 14:40:10; 总时间按机动时间加辅助时间计算,不再直接使用历史存储值。
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_导出表格_查询]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_工序工价_导出表格_查询];
GO
-- 工序工价导出存储过程,仅部署测试库 ERPTOOL_JY_20250826Back修改人:Ld 修改时间:2026-08-03 14:24:48;
CREATE PROCEDURE [dbo].[_工序工价_导出表格_查询]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N''
AS
BEGIN
SET NOCOUNT ON;
SELECT N'工序工价_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 20 AS ,
256 * 20 AS ,
256 * 20 AS ,
256 * 20 AS ,
256 * 24 AS ,
256 * 20 AS ,
256 * 12 AS ,
256 * 12 AS ,
256 * 12 AS ,
256 * 12 AS [s],
256 * 12 AS [s],
256 * 12 AS [s],
256 * 16 AS [()],
256 * 12 AS ,
256 * 14 AS [()],
256 * 18 AS [(/)],
256 * 14 AS ,
256 * 12 AS ,
256 * 12 AS ,
256 * 24 AS ,
256 * 14 AS ,
256 * 20 AS ,
256 * 14 AS ,
256 * 20 AS ;
SELECT
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
1 AS ,
1 AS ,
1 AS ,
1 AS [s],
1 AS [s],
1 AS [s],
1 AS [()],
1 AS ,
1 AS [()],
1 AS [(/)],
0 AS ,
1 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ;
;WITH PlanData AS (
-- 页面查询同源工艺计划数据源,确保导出与列表一致;修改人:Ld 修改时间:2026-08-03 14:24:48;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
)
SELECT
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS ,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
CASE WHEN ISNULL(price., 1) = 1 THEN N'启用' ELSE N'停用' END AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC;
END
GO

View File

@@ -0,0 +1,345 @@
USE [ERPTOOL_JY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 工序工价自动补齐,按零件名称和图号检索已有工价,未找到则默认 0修改人:Ld 修改时间:2026-08-04 16:31:18;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_自动补齐数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_工序工价_自动补齐数据];
GO
CREATE PROCEDURE [dbo].[_工序工价_自动补齐数据]
@ INT = NULL,
@ NVARCHAR(50) = N'',
@ BIT = 1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ NVARCHAR(50) = NULLIF(@, N'');
DECLARE @ DATETIME = GETDATE();
IF @ IS NULL
BEGIN
IF @ = 1
SELECT N'0' AS result, N'工艺计划流水号不能为空' AS message;
RETURN;
END;
IF NOT EXISTS (
SELECT 1
FROM [dbo].[_零件工艺计划_视图]
WHERE = @
AND >= 1
)
BEGIN
IF @ = 1
SELECT N'0' AS result, N'工艺计划不存在或未生效' AS message;
RETURN;
END;
;WITH TargetRows AS (
SELECT
gp.,
gx.,
gx.,
gp.,
gp. AS ,
ISNULL(base., N'未设置工序') AS
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
WHERE gp. = @
AND gp. >= 1
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM [dbo].[_工序工价] price
WHERE price. = gx.
)
)
INSERT INTO [dbo].[_工序工价](
,
,
,
,
,
[s],
[s],
[s],
[()],
[],
[()],
[(/)],
,
,
,
,
,
,
,
,
,
,
,
,
,
,
)
SELECT
targetRow.,
targetRow.,
targetRow.,
targetRow.,
targetRow.,
COALESCE(exactPrice.[s], fallbackPrice.[s], 0),
COALESCE(exactPrice.[s], fallbackPrice.[s], 0),
COALESCE(exactPrice.[s], fallbackPrice.[s], 0),
COALESCE(exactPrice.[()], fallbackPrice.[()], 0),
COALESCE(exactPrice.[], fallbackPrice.[], 0),
COALESCE(exactPrice.[()], fallbackPrice.[()], 0),
COALESCE(exactPrice.[(/)], fallbackPrice.[(/)], 0),
COALESCE(exactPrice., fallbackPrice.),
COALESCE(exactPrice., fallbackPrice., 0),
COALESCE(exactPrice., fallbackPrice., 1),
NULL,
@,
@,
@,
@,
N'按件',
COALESCE(exactPrice.[(/)], fallbackPrice.[(/)], 0),
0,
0,
1,
1,
1
FROM TargetRows targetRow
OUTER APPLY (
-- 修改人:Ld 修改时间:2026-08-04 16:31:18; 优先同零件名称、图号、工序顺序和工艺名称精确匹配
SELECT TOP 1
price.*
FROM [dbo].[_零件工艺计划_视图] sourceGp
INNER JOIN [dbo].[_零件工序] sourceGx ON sourceGp. = sourceGx.
LEFT JOIN [dbo].[_基础表_工艺名称] sourceBase ON sourceGx. = sourceBase.
INNER JOIN [dbo].[_工序工价] price ON sourceGx. = price.
WHERE sourceGp. >= 1
AND sourceGp. <> targetRow.
AND sourceGp. = targetRow.
AND sourceGp. = targetRow.
AND sourceGx. = targetRow.
AND ISNULL(sourceBase., N'未设置工序') = targetRow.
ORDER BY sourceGp. DESC, sourceGp. DESC, price. DESC, price. DESC
) exactPrice
OUTER APPLY (
-- 修改人:Ld 修改时间:2026-08-04 16:31:18; 精确工序未命中时,按零件名称和图号取最近一条已有工价兜底
SELECT TOP 1
price.*
FROM [dbo].[_零件工艺计划_视图] sourceGp
INNER JOIN [dbo].[_零件工序] sourceGx ON sourceGp. = sourceGx.
INNER JOIN [dbo].[_工序工价] price ON sourceGx. = price.
WHERE exactPrice. IS NULL
AND sourceGp. >= 1
AND sourceGp. <> targetRow.
AND sourceGp. = targetRow.
AND sourceGp. = targetRow.
ORDER BY sourceGp. DESC, sourceGp. DESC, price. DESC, price. DESC
) fallbackPrice;
IF @ = 1
SELECT N'1' AS result, @@ROWCOUNT AS ;
END
GO
-- 工序工序插入时自动补齐工价,按零件名称和图号直接拷贝已有数据;修改人:Ld 修改时间:2026-08-04 16:31:18;
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_零件工序_工价自动补齐]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_零件工序_工价自动补齐];
GO
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_零件工序_工价自动补齐]
ON [dbo].[_零件工序]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ INT;
DECLARE CURSOR LOCAL FAST_FORWARD FOR
SELECT DISTINCT i.
FROM inserted i
WHERE i. IS NOT NULL;
OPEN ;
FETCH NEXT FROM INTO @;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC [dbo].[_工序工价_自动补齐数据]
@ = @,
@ = N'Ld',
@ = 0;
FETCH NEXT FROM INTO @;
END
CLOSE ;
DEALLOCATE ;
END
GO
-- 清理历史自动备注,取消自动写入备注后的残留文案;修改人:Ld 修改时间:2026-08-04 16:31:18;
UPDATE [dbo].[_工序工价]
SET = NULL
WHERE LIKE N'自动拷贝来源工价流水号:%'
OR LIKE N'自动按零件图号兜底拷贝来源工价流水号:%'
OR = N'自动生成默认工价';
GO
-- 工序工价分页查询增加自动补齐调用,确保打开零件后立即生成缺失工价;修改人:Ld 修改时间:2026-08-04 16:31:18;
ALTER PROCEDURE [dbo].[_工序工价_查询数据]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N'',
@PageCurrent INT = 1,
@PageSize INT = 1000
AS
BEGIN
SET NOCOUNT ON;
IF @_check = 1 AND @ IS NOT NULL
BEGIN
EXEC [dbo].[_工序工价_自动补齐数据]
@ = @,
@ = N'Ld',
@ = 0;
END
IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1;
IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 1000;
;WITH PlanData AS (
-- 与制定工艺组件订单、产品、零件选择保持同一工艺计划来源口径;修改人:Ld 修改时间:2026-08-04 16:31:18;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
),
ProcessData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC
) AS RowNum,
price.,
gx.,
gx.,
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS ,
ISNULL(price.[(/)], ISNULL(price.[()], 0)) AS [()],
ISNULL(price.[], ISNULL(price.[(/)], 0)) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
ISNULL(price., 1) AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
)
SELECT
,
,
,
,
,
,
,
,
,
,
,
,
[()],
,
[s],
[s],
[s],
[()],
[()],
[()],
[(/)],
,
[()],
[(/)],
,
,
,
,
,
,
,
FROM ProcessData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @);
END
GO

View File

@@ -0,0 +1,345 @@
USE [ERPTOOL_JY_20250826Back]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 工序工价自动补齐,按零件名称和图号检索已有工价,未找到则默认 0修改人:Ld 修改时间:2026-08-04 16:31:18;
IF OBJECT_ID(N'[dbo].[车间生产管理工艺_工序工价_自动补齐数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_工序工价_自动补齐数据];
GO
CREATE PROCEDURE [dbo].[_工序工价_自动补齐数据]
@ INT = NULL,
@ NVARCHAR(50) = N'',
@ BIT = 1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ NVARCHAR(50) = NULLIF(@, N'');
DECLARE @ DATETIME = GETDATE();
IF @ IS NULL
BEGIN
IF @ = 1
SELECT N'0' AS result, N'工艺计划流水号不能为空' AS message;
RETURN;
END;
IF NOT EXISTS (
SELECT 1
FROM [dbo].[_零件工艺计划_视图]
WHERE = @
AND >= 1
)
BEGIN
IF @ = 1
SELECT N'0' AS result, N'工艺计划不存在或未生效' AS message;
RETURN;
END;
;WITH TargetRows AS (
SELECT
gp.,
gx.,
gx.,
gp.,
gp. AS ,
ISNULL(base., N'未设置工序') AS
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
WHERE gp. = @
AND gp. >= 1
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM [dbo].[_工序工价] price
WHERE price. = gx.
)
)
INSERT INTO [dbo].[_工序工价](
,
,
,
,
,
[s],
[s],
[s],
[()],
[],
[()],
[(/)],
,
,
,
,
,
,
,
,
,
,
,
,
,
,
)
SELECT
targetRow.,
targetRow.,
targetRow.,
targetRow.,
targetRow.,
COALESCE(exactPrice.[s], fallbackPrice.[s], 0),
COALESCE(exactPrice.[s], fallbackPrice.[s], 0),
COALESCE(exactPrice.[s], fallbackPrice.[s], 0),
COALESCE(exactPrice.[()], fallbackPrice.[()], 0),
COALESCE(exactPrice.[], fallbackPrice.[], 0),
COALESCE(exactPrice.[()], fallbackPrice.[()], 0),
COALESCE(exactPrice.[(/)], fallbackPrice.[(/)], 0),
COALESCE(exactPrice., fallbackPrice.),
COALESCE(exactPrice., fallbackPrice., 0),
COALESCE(exactPrice., fallbackPrice., 1),
NULL,
@,
@,
@,
@,
N'按件',
COALESCE(exactPrice.[(/)], fallbackPrice.[(/)], 0),
0,
0,
1,
1,
1
FROM TargetRows targetRow
OUTER APPLY (
-- 修改人:Ld 修改时间:2026-08-04 16:31:18; 优先同零件名称、图号、工序顺序和工艺名称精确匹配
SELECT TOP 1
price.*
FROM [dbo].[_零件工艺计划_视图] sourceGp
INNER JOIN [dbo].[_零件工序] sourceGx ON sourceGp. = sourceGx.
LEFT JOIN [dbo].[_基础表_工艺名称] sourceBase ON sourceGx. = sourceBase.
INNER JOIN [dbo].[_工序工价] price ON sourceGx. = price.
WHERE sourceGp. >= 1
AND sourceGp. <> targetRow.
AND sourceGp. = targetRow.
AND sourceGp. = targetRow.
AND sourceGx. = targetRow.
AND ISNULL(sourceBase., N'未设置工序') = targetRow.
ORDER BY sourceGp. DESC, sourceGp. DESC, price. DESC, price. DESC
) exactPrice
OUTER APPLY (
-- 修改人:Ld 修改时间:2026-08-04 16:31:18; 精确工序未命中时,按零件名称和图号取最近一条已有工价兜底
SELECT TOP 1
price.*
FROM [dbo].[_零件工艺计划_视图] sourceGp
INNER JOIN [dbo].[_零件工序] sourceGx ON sourceGp. = sourceGx.
INNER JOIN [dbo].[_工序工价] price ON sourceGx. = price.
WHERE exactPrice. IS NULL
AND sourceGp. >= 1
AND sourceGp. <> targetRow.
AND sourceGp. = targetRow.
AND sourceGp. = targetRow.
ORDER BY sourceGp. DESC, sourceGp. DESC, price. DESC, price. DESC
) fallbackPrice;
IF @ = 1
SELECT N'1' AS result, @@ROWCOUNT AS ;
END
GO
-- 工序工序插入时自动补齐工价,按零件名称和图号直接拷贝已有数据;修改人:Ld 修改时间:2026-08-04 16:31:18;
IF OBJECT_ID(N'[dbo].[TR_车间生产管理工艺_零件工序_工价自动补齐]', N'TR') IS NOT NULL
DROP TRIGGER [dbo].[TR_车间生产管理工艺_零件工序_工价自动补齐];
GO
CREATE TRIGGER [dbo].[TR_车间生产管理工艺_零件工序_工价自动补齐]
ON [dbo].[_零件工序]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ INT;
DECLARE CURSOR LOCAL FAST_FORWARD FOR
SELECT DISTINCT i.
FROM inserted i
WHERE i. IS NOT NULL;
OPEN ;
FETCH NEXT FROM INTO @;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC [dbo].[_工序工价_自动补齐数据]
@ = @,
@ = N'Ld',
@ = 0;
FETCH NEXT FROM INTO @;
END
CLOSE ;
DEALLOCATE ;
END
GO
-- 清理历史自动备注,取消自动写入备注后的残留文案;修改人:Ld 修改时间:2026-08-04 16:31:18;
UPDATE [dbo].[_工序工价]
SET = NULL
WHERE LIKE N'自动拷贝来源工价流水号:%'
OR LIKE N'自动按零件图号兜底拷贝来源工价流水号:%'
OR = N'自动生成默认工价';
GO
-- 工序工价分页查询增加自动补齐调用,确保打开零件后立即生成缺失工价;修改人:Ld 修改时间:2026-08-04 16:31:18;
ALTER PROCEDURE [dbo].[_工序工价_查询数据]
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ INT = NULL,
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N'',
@PageCurrent INT = 1,
@PageSize INT = 1000
AS
BEGIN
SET NOCOUNT ON;
IF @_check = 1 AND @ IS NOT NULL
BEGIN
EXEC [dbo].[_工序工价_自动补齐数据]
@ = @,
@ = N'Ld',
@ = 0;
END
IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1;
IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 1000;
;WITH PlanData AS (
-- 与制定工艺组件订单、产品、零件选择保持同一工艺计划来源口径;修改人:Ld 修改时间:2026-08-04 16:31:18;
SELECT gp.*
FROM [dbo].[_零件工艺计划_视图] gp
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
),
ProcessData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY gp. DESC, gp. DESC, gx. ASC, gx. ASC
) AS RowNum,
price.,
gx.,
gx.,
gp.,
gp.,
base. AS ,
base. AS ,
gp.,
gp. AS ,
gx.,
gx.,
gx.,
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[], 0) AS [],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) AS [s],
ISNULL(price.[s], 0) + ISNULL(price.[s], 0) AS [s],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[()], 0) AS [()],
ISNULL(price.[(/)], 0) AS [(/)],
ISNULL(price.[], 0) AS ,
ISNULL(price.[(/)], ISNULL(price.[()], 0)) AS [()],
ISNULL(price.[], ISNULL(price.[(/)], 0)) AS [(/)],
CONVERT(VARCHAR(10), price., 23) AS ,
ISNULL(price., 0) AS ,
ISNULL(price., 1) AS ,
price.,
price.,
CONVERT(VARCHAR(19), price., 120) AS ,
price.,
CONVERT(VARCHAR(19), price., 120) AS
FROM PlanData gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @)
)
SELECT
,
,
,
,
,
,
,
,
,
,
,
,
[()],
,
[s],
[s],
[s],
[()],
[()],
[()],
[(/)],
,
[()],
[(/)],
,
,
,
,
,
,
,
FROM ProcessData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[_零件工艺计划_视图] gp
INNER JOIN [dbo].[_零件工序] gx ON gp. = gx.
LEFT JOIN [dbo].[_基础表_工艺名称] base ON gx. = base.
LEFT JOIN [dbo].[_工序工价] price ON gx. = price.
WHERE gp. >= 1
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND (@_check = 0 OR gp. = @)
AND NULLIF(LTRIM(RTRIM(base.)), N'') IS NOT NULL
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR base. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. + gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR gp. LIKE N'%' + @ + N'%')
AND (@_check = 0 OR CAST(ISNULL(price., 1) AS NVARCHAR(20)) = @);
END
GO

View File

@@ -0,0 +1,186 @@
-- 库存查询2026年前未完成订单需求明细按组件完成状态排除已完成组件并汇总导出修改人:Ld 修改时间:2026-07-24 11:30:00;
SET NOCOUNT ON;
;WITH AS
(
SELECT
c.,
o.,
o.,
o.,
ISNULL(kh., '') AS ,
ISNULL(psn., CONVERT(nvarchar(50), o.)) AS ,
c.,
c.,
c. AS ,
c. AS ,
o.,
o.,
p.
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN dbo.PDM_项目名称 p ON m. = p.
INNER JOIN dbo._订单信息_基础表 o ON p. = o.
LEFT JOIN dbo._客户名称 kh ON p. = kh.
LEFT JOIN dbo._人员名单 psn ON o. = psn.
),
AS
(
SELECT
co.,
co.,
co.,
co.,
b.,
b.,
ISNULL(mat., b.) AS ,
ISNULL(mat., b.) AS ,
SUM(ISNULL(b., 0)) AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b. = co.
LEFT JOIN dbo._物料主文件_基本 mat ON b. = mat.
WHERE co. = 1
AND co. <> 3
AND co. < '2026-01-01'
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1)
AND NOT (ISNULL(co., 0) = 4 OR (ISNULL(co., 0) > 0 AND ISNULL(co., 0) >= ISNULL(co., 0)))
GROUP BY co., co., co., co., b., b., ISNULL(mat., b.), ISNULL(mat., b.)
UNION ALL
SELECT
co.,
co.,
co.,
co.,
s.,
s.,
mat. AS ,
mat. AS ,
SUM(ISNULL(s., 0)) AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s. = co.
LEFT JOIN dbo._物料主文件_基本 mat ON s. = mat.
WHERE co. = 1
AND co. <> 3
AND co. < '2026-01-01'
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1)
AND NOT (ISNULL(co., 0) = 4 OR (ISNULL(co., 0) > 0 AND ISNULL(co., 0) >= ISNULL(co., 0)))
GROUP BY co., co., co., co., s., s., mat., mat.
UNION ALL
SELECT
co.,
co.,
co.,
co.,
t.,
t.,
mat. AS ,
mat. AS ,
SUM(ISNULL(t., 0)) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t. = co.
LEFT JOIN dbo._物料主文件_基本 mat ON t. = mat.
WHERE t. IS NOT NULL
AND co. < '2026-01-01'
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1)
AND NOT (ISNULL(co., 0) = 4 OR (ISNULL(co., 0) > 0 AND ISNULL(co., 0) >= ISNULL(co., 0)))
GROUP BY co., co., co., co., t., t., mat., mat.
),
AS
(
SELECT co., b., b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l. = b.
INNER JOIN co ON b. = co.
WHERE co. < '2026-01-01'
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1)
GROUP BY co., b., b.
UNION ALL
SELECT co., s., s., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
INNER JOIN co ON s. = co.
WHERE co. < '2026-01-01'
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1)
GROUP BY co., s., s.
UNION ALL
SELECT co., l., l., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l. = co.
WHERE l. IS NOT NULL
AND ISNULL(l., 0) <> 0
AND ISNULL(l., 0) = 0
AND ISNULL(l., 0) = 0
AND co. < '2026-01-01'
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1)
GROUP BY co., l., l.
),
AS
(
SELECT , , , SUM() AS
FROM
GROUP BY , ,
),
AS
(
SELECT b., COUNT(*) AS
FROM dbo.PDM_零件明细表_基本件 b
LEFT JOIN dbo._零件工艺计划_视图 v ON b. = v.
WHERE ISNULL(v., 0) < 3
GROUP BY b.
),
AS
(
SELECT , COUNT(*) AS
FROM dbo._采购合同明细_查询视图
WHERE ISNULL(, N'') <> N'已入库'
GROUP BY
),
AS
(
SELECT FROM dbo.PDM_零件明细表_基本件
UNION
SELECT FROM dbo.PDM_零件明细表_标准件和外购件
UNION
SELECT FROM dbo._采购合同明细_查询视图
),
AS
(
SELECT e.
FROM e
LEFT JOIN b ON e. = b.
LEFT JOIN p ON e. = p.
WHERE ISNULL(b., 0) = 0
AND ISNULL(p., 0) = 0
),
AS
(
SELECT
d.,
CONVERT(varchar(10), d., 23) AS ,
d.,
d. AS ,
d.,
d.,
d.,
ISNULL(l., 0) AS ,
CASE WHEN d. > ISNULL(l., 0) THEN d. - ISNULL(l., 0) ELSE 0 END AS
FROM d
LEFT JOIN l
ON d. = l.
AND d. = l.
AND d. = l.
WHERE NOT EXISTS (SELECT 1 FROM c WHERE c. = d.)
)
SELECT , , , , , , SUM() AS , SUM() AS , SUM() AS
FROM
WHERE > 0
GROUP BY , , , , ,
ORDER BY DESC, , , ;

View File

@@ -0,0 +1,143 @@
-- 库存查询需求量与需求量明细一致性排查;修改人:Ld 修改时间:2026-07-24 08:00:00;
SET NOCOUNT ON;
;WITH AS
(
SELECT c.,o.,c.,o.,o.,p.,ISNULL(k.,'') AS
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c.=m.
INNER JOIN dbo.PDM_项目名称 p ON m.=p.
INNER JOIN dbo._订单信息_基础表 o ON p.=o.
LEFT JOIN dbo._客户名称 k ON p.=k.
),
AS
(
SELECT co.,b.,b.,SUM(ISNULL(b.,0)) AS ,N'生产订单需求' AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b.=co.
WHERE co.=1 AND co.<>3 AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,b.,b.
UNION ALL
SELECT co.,s.,s.,SUM(ISNULL(s.,0)) AS ,N'生产订单需求' AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s.=co.
WHERE co.=1 AND co.<>3 AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,s.,s.
UNION ALL
SELECT co.,t.,t.,SUM(ISNULL(t.,0)) AS ,N'临时领料需求' AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t.=co.
WHERE t. IS NOT NULL AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,t.,t.
),
AS
(
SELECT co.,b.,b.,SUM(ISNULL(l.,0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l.=b.
INNER JOIN co ON b.=co.
WHERE NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,b.,b.
UNION ALL
SELECT co.,s.,s.,SUM(ISNULL(l.,0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l.=s.
INNER JOIN co ON s.=co.
WHERE NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,s.,s.
UNION ALL
SELECT co.,l.,l.,SUM(ISNULL(l.,0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l.=co.
WHERE l. IS NOT NULL AND ISNULL(l.,0)<>0 AND ISNULL(l.,0)=0 AND ISNULL(l.,0)=0 AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,l.,l.
),
AS
(
SELECT ,,,SUM() AS
FROM GROUP BY ,,
),
AS
(
SELECT d.,d.,d.,d.,ISNULL(l.,0) AS ,
CASE WHEN d.>ISNULL(l.,0) THEN d.-ISNULL(l.,0) ELSE 0 END AS ,d.
FROM d
LEFT JOIN l ON d.=l. AND d.=l. AND ISNULL(d.,'')=ISNULL(l.,'')
),
AS
(
SELECT ,SUM() AS
FROM WHERE <>0 GROUP BY
)
SELECT COUNT(*) AS ,SUM() AS FROM ;
;WITH AS
(
SELECT c.,o.,c.,o.,o.,p.
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c.=m.
INNER JOIN dbo.PDM_项目名称 p ON m.=p.
INNER JOIN dbo._订单信息_基础表 o ON p.=o.
),
AS
(
SELECT co.,b.,b.,SUM(ISNULL(b.,0)) AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b.=co.
WHERE co.=1 AND co.<>3 AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,b.,b.
UNION ALL
SELECT co.,s.,s.,SUM(ISNULL(s.,0)) AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s.=co.
WHERE co.=1 AND co.<>3 AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,s.,s.
UNION ALL
SELECT co.,t.,t.,SUM(ISNULL(t.,0)) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t.=co.
WHERE t. IS NOT NULL AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,t.,t.
),
AS
(
SELECT co.,b.,b.,SUM(ISNULL(l.,0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l.=b.
INNER JOIN co ON b.=co.
WHERE NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,b.,b.
UNION ALL
SELECT co.,s.,s.,SUM(ISNULL(l.,0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l.=s.
INNER JOIN co ON s.=co.
WHERE NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,s.,s.
UNION ALL
SELECT co.,l.,l.,SUM(ISNULL(l.,0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l.=co.
WHERE l. IS NOT NULL AND ISNULL(l.,0)<>0 AND ISNULL(l.,0)=0 AND ISNULL(l.,0)=0 AND NOT (ISNULL(co.,0)=6 AND ISNULL(co.,0)=1)
GROUP BY co.,l.,l.
),
AS
(
SELECT ,,,SUM() AS
FROM GROUP BY ,,
),
AS
(
SELECT d.,d.,d.,
CASE WHEN d.>ISNULL(l.,0) THEN d.-ISNULL(l.,0) ELSE 0 END AS
FROM d
LEFT JOIN l ON d.=l. AND d.=l. AND ISNULL(d.,'')=ISNULL(l.,'')
),
AS
(
SELECT ,SUM() AS
FROM WHERE <>0 GROUP BY
)
SELECT COUNT(*) AS ,SUM(ISNULL(m.,0)) AS ,SUM(ISNULL(v.,0)) AS ,SUM(ISNULL(m.,0)-ISNULL(v.,0)) AS
FROM m FULL JOIN dbo._需求量_视图 v ON m.=v.
WHERE ISNULL(m.,0)<>ISNULL(v.,0);

View File

@@ -0,0 +1,105 @@
/*
库房管理库位分页查询脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-31 14:19:37;
说明:将库房管理新模块使用的库位查询过程改为分页版,不修改原仓储库位页面。
*/
SET NOCOUNT ON;
GO
IF OBJECT_ID(N'dbo.库房管理_库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位_查询;
GO
CREATE PROCEDURE dbo._库位_查询
@ INT = NULL,
@ INT = NULL,
@_check BIT = 0,
@ NVARCHAR(50) = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL,
@PageCurrent INT = NULL,
@PageSize INT = NULL,
@PageCount INT = NULL OUTPUT,
@ItemCount INT = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tbname NVARCHAR(MAX);
DECLARE @fieldkey NVARCHAR(1000);
DECLARE @where NVARCHAR(1000);
DECLARE @fieldshow NVARCHAR(MAX);
DECLARE @fieldOrder NVARCHAR(1000);
DECLARE @locationName NVARCHAR(100);
DECLARE @locationStatus NVARCHAR(100);
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
SET @locationName = REPLACE(ISNULL(@, N''), N'''', N'''''');
SET @locationStatus = REPLACE(ISNULL(@, N''), N'''', N'''''');
SET @PageCurrent = ISNULL(NULLIF(@PageCurrent, 0), 1);
SET @PageSize = ISNULL(NULLIF(@PageSize, 0), 20);
SET @tbname = N'(
SELECT
h.货位流水号 AS 库位流水号,
h.货位名称 AS 库位名称,
h.库房流水号,
k.库房名称,
h.库区流水号,
q.库区名称,
h.排号,
h.列号,
h.层号,
CASE
WHEN ISNULL(h.是否启用, 1) = 0 THEN N''停用''
WHEN ISNULL(s.库存数量, 0) > 0 AND ISNULL(h.库位容量, 0) > 0 AND ISNULL(s.库存数量, 0) >= ISNULL(h.库位容量, 0) THEN N''满库位''
WHEN ISNULL(s.库存数量, 0) > 0 THEN N''有库存''
ELSE ISNULL(h.库位状态, N''空库位'')
END AS 库位状态,
ISNULL(h.库位容量, 0) AS 库位容量,
ISNULL(s.物料种类, 0) AS 物料种类,
ISNULL(s.库存数量, 0) AS 库存数量,
h.操作日期,
h.修改时间
FROM dbo.库存管理_货位主文件 h
LEFT JOIN dbo.库房管理_库房主文件 k ON h.库房流水号 = k.库房流水号
LEFT JOIN dbo.库房管理_库区主文件 q ON h.库区流水号 = q.库区流水号
LEFT JOIN
(
SELECT 货位流水号, COUNT(DISTINCT 物料流水号) AS 物料种类, SUM(ISNULL(货位存量, 0)) AS 库存数量
FROM dbo.库存管理_物料与货位对照表
WHERE ISNULL(货位存量, 0) > 0
GROUP BY 货位流水号
) s ON h.货位流水号 = s.货位流水号
) AS T';
SET @fieldkey = N'库位流水号';
SET @fieldshow = N'库位流水号,库位名称,库房流水号,库房名称,库区流水号,库区名称,排号,列号,层号,库位状态,库位容量,物料种类,库存数量,操作日期,修改时间';
SET @fieldOrder = N'排号 ASC, 列号 ASC, 层号 ASC, 库位名称 ASC, 库位流水号 ASC';
SET @where = N'1 = 1';
IF @ IS NOT NULL
SET @where = @where + N' AND 库房流水号 = ' + CAST(@ AS NVARCHAR(20));
IF @ IS NOT NULL
SET @where = @where + N' AND 库区流水号 = ' + CAST(@ AS NVARCHAR(20));
IF @_check = 1 AND @locationName <> N''
SET @where = @where + N' AND 库位名称 LIKE N''%' + @locationName + N'%''';
IF @_check = 1 AND @locationStatus <> N''
SET @where = @where + N' AND 库位状态 = N''' + @locationStatus + N'''';
EXEC dbo.sp_xt_pagesplit2
@tbname,
@fieldkey,
@where,
@fieldshow,
@fieldOrder,
@PageCurrent,
@PageSize,
@PageCount OUTPUT,
@ItemCount OUTPUT;
END
GO

View File

@@ -0,0 +1,98 @@
/*
库房管理库位归类规则脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-31 14:26:30;
说明毛坯库归一楼毛坯库耗材归耗材库其余未归类库位归库房A区。
*/
SET NOCOUNT ON;
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-A')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-A', N'库房A区', N'标准库房', N'库房A区', N'启用', 1, 99, 1, N'未归类库位默认归属库房', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-MP')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-MP', N'一楼毛坯库', N'毛坯库', N'一楼毛坯库', N'启用', 1, 99, 1, N'毛坯库库位归属', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-HC')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-HC', N'耗材库', N'耗材库', N'耗材库', N'启用', 1, 99, 1, N'耗材库位归属', 0);
END
GO
;WITH DefaultArea AS
(
SELECT N'KF-A' AS , N'A01' AS , N'标准库位区' AS , N'标准库区' AS , N'未归类库位默认库区' AS
UNION ALL SELECT N'KF-MP', N'MP', N'一楼毛坯库区', N'毛坯库区', N'毛坯库库位默认库区'
UNION ALL SELECT N'KF-HC', N'HC', N'耗材库区', N'耗材库区', N'耗材库位默认库区'
)
INSERT INTO dbo._库区主文件(, , , , , , )
SELECT k., a., a., a., 1, a., 0
FROM DefaultArea a
INNER JOIN dbo._库房主文件 k ON a. = k.
WHERE NOT EXISTS
(
SELECT 1
FROM dbo._库区主文件 x
WHERE x. = k.
AND x. = a.
);
GO
DECLARE @A INT;
DECLARE @A INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
SELECT @A = FROM dbo._库房主文件 WHERE = N'KF-A';
SELECT @A = FROM dbo._库区主文件 WHERE = @A AND = N'A01';
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-MP';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'MP';
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-HC';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'HC';
UPDATE h
SET = @,
= @,
= ISNULL(h., N'空库位'),
= 0,
= GETDATE()
FROM dbo._货位主文件 h
WHERE h. LIKE N'%毛坯%';
UPDATE h
SET = @,
= @,
= ISNULL(h., N'空库位'),
= 0,
= GETDATE()
FROM dbo._货位主文件 h
WHERE h. LIKE N'%耗材%';
UPDATE h
SET = @A,
= @A,
= ISNULL(h., N'空库位'),
= 0,
= GETDATE()
FROM dbo._货位主文件 h
LEFT JOIN dbo._库房主文件 k ON h. = k.
WHERE k. IS NULL;
SELECT
SUM(CASE WHEN h. = @ THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN h. = @ THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN h. = @A THEN 1 ELSE 0 END) AS A区库位数,
SUM(CASE WHEN h. IS NULL THEN 1 ELSE 0 END) AS
FROM dbo._货位主文件 h;
GO

View File

@@ -0,0 +1,40 @@
/*
库房管理库位找物料隔离查询脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-31 10:03:26;
说明:新增独立查询过程供库房管理新页面“库位找物料”使用,不修改原仓储管理物料库位查询过程。
*/
SET NOCOUNT ON;
GO
IF OBJECT_ID(N'dbo.库房管理_库位找物料_查询数据', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位找物料_查询数据;
GO
CREATE PROCEDURE dbo._库位找物料_查询数据
@ NVARCHAR(50) = NULL,
@_check BIT = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT
m.,
m.,
m.,
h.,
m.,
h.,
k.,
q.,
d. AS ,
CASE WHEN ISNULL(d., 0) > 0 THEN N'有库存' ELSE N'' END AS
FROM dbo._物料主文件_基本 m
LEFT JOIN dbo._货位主文件 h ON m. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
LEFT JOIN dbo._库区主文件 q ON h. = q.
LEFT JOIN dbo._物料与货位对照表 d ON m. = d. AND h. = d.
WHERE (@_check = 0 OR h. LIKE N'%' + ISNULL(@, N'') + N'%')
ORDER BY h., m.;
END
GO

View File

@@ -0,0 +1,110 @@
/* 修改人:Ld 修改时间:2026-07-30 09:05:58; 新增库房管理测试库菜单,仅给已有库位管理权限的角色授权 */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @ModuleId INT;
DECLARE @ParentId INT = 42;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE [path] = N'WarehouseManagement/WarehouseRoomManagement'
OR component = N'/WarehouseManagement/WarehouseRoomManagement'
OR title = N'库房管理';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'WarehouseManagement/WarehouseRoomManagement',
N'/WarehouseManagement/WarehouseRoomManagement',
NULL,
N'WarehouseRoomManagement',
N'库房管理',
N'MaterialArrivalManagement',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET [path] = N'WarehouseManagement/WarehouseRoomManagement',
component = N'/WarehouseManagement/WarehouseRoomManagement',
redirect = NULL,
name = N'WarehouseRoomManagement',
title = N'库房管理',
icon = N'MaterialArrivalManagement',
= 0
WHERE id = @ModuleId;
END;
;WITH RoleList AS
(
SELECT DISTINCT
FROM dbo._角色模块信息
WHERE id = 92
AND pid = @ParentId
AND ISNULL(, 1) = 1
)
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
@ParentId,
@ModuleId,
RoleList.,
1,
ISNULL(RoleOrder.MaxOrder, 0) + 1
FROM RoleList
OUTER APPLY
(
SELECT MAX() AS MaxOrder
FROM dbo._角色模块信息
WHERE = RoleList.
AND pid = @ParentId
) RoleOrder
WHERE NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = @ParentId
AND = RoleList.
);
SELECT @ModuleId AS ID;
SELECT id, [path], component, name, title, icon,
FROM dbo._模块信息
WHERE id = @ModuleId;
SELECT id, pid, , ,
FROM dbo._角色模块信息
WHERE id = @ModuleId
ORDER BY ;
COMMIT TRAN;

View File

@@ -0,0 +1,117 @@
/*
库房管理物料库位分页查询脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-31 13:05:48;
说明:新增独立分页查询过程供库房管理新页面“物料综合查询/物料找库位/库位找物料”使用,不修改原仓储管理过程。
*/
SET NOCOUNT ON;
GO
IF OBJECT_ID(N'dbo.仓储管理_物料库位_分页查询_库房管理', N'P') IS NOT NULL
DROP PROCEDURE dbo._物料库位_分页查询_库房管理;
GO
CREATE PROCEDURE dbo._物料库位_分页查询_库房管理
@ NVARCHAR(20) = N'综合',
@ NVARCHAR(50) = NULL,
@_check BIT = 0,
@ NVARCHAR(50) = NULL,
@_check BIT = 0,
@PageCurrent INT = NULL,
@PageSize INT = NULL,
@PageCount INT = NULL OUTPUT,
@ItemCount INT = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tbname NVARCHAR(MAX);
DECLARE @fieldkey NVARCHAR(1000);
DECLARE @where NVARCHAR(MAX);
DECLARE @fieldshow NVARCHAR(MAX);
DECLARE @fieldOrder NVARCHAR(1000);
DECLARE @keyword NVARCHAR(100);
DECLARE @warehouse NVARCHAR(100);
SET @keyword = REPLACE(ISNULL(@, N''), N'''', N'''''');
SET @warehouse = REPLACE(ISNULL(@, N''), N'''', N'''''');
SET @PageCurrent = ISNULL(NULLIF(@PageCurrent, 0), 1);
SET @PageSize = ISNULL(NULLIF(@PageSize, 0), 20);
SET @tbname = N'(
SELECT
ROW_NUMBER() OVER (ORDER BY ISNULL(A.货位名称, N''''), ISNULL(A.物料编码, N''''), A.物料与货位流水号) AS 分页流水号,
A.物料名称 AS 名称,
A.图号或型号 AS 代号,
A.物料编码,
A.物料名称,
A.图号或型号,
A.类型,
A.单位,
A.库存,
A.库存 AS 库存数量,
A.货位名称,
A.货位名称 AS 库位,
A.物料与货位流水号,
ISNULL(m.物料流水号, 0) AS 物料流水号,
A.货位流水号,
A.货位流水号 AS 库位流水号,
A.批次编号,
A.编辑人,
A.编辑时间,
ISNULL(k.库房名称,
CASE
WHEN A.货位名称 LIKE N''%毛坯%'' THEN N''一楼毛坯库''
WHEN A.货位名称 LIKE N''%耗材%'' THEN N''耗材库''
WHEN A.货位名称 LIKE N''[A-Za-z][0-9]%-[0-9]%'' AND A.货位名称 NOT LIKE N''%-%-%'' THEN N''二楼隔层仓库''
WHEN A.货位名称 LIKE N''[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'' THEN N''立库仓库''
WHEN A.货位名称 LIKE N''[0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'' THEN N''三楼仓库''
ELSE N''库房A区''
END) AS 库房名称,
ISNULL(q.库区名称,
CASE
WHEN A.货位名称 LIKE N''%毛坯%'' THEN N''一楼毛坯库区''
WHEN A.货位名称 LIKE N''%耗材%'' THEN N''耗材库区''
WHEN A.货位名称 LIKE N''[A-Za-z][0-9]%-[0-9]%'' AND A.货位名称 NOT LIKE N''%-%-%'' THEN N''二楼隔层库区''
WHEN A.货位名称 LIKE N''[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'' THEN N''立库库区''
WHEN A.货位名称 LIKE N''[0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'' THEN N''三楼可视化库区''
ELSE N''标准库位区''
END) AS 库区名称,
CASE WHEN ISNULL(A.库存, 0) > 0 THEN N''有库存'' ELSE N'''' END AS 库存状态
FROM dbo.外购件库存_视图 A
LEFT JOIN dbo.库存管理_货位主文件 h ON A.货位流水号 = h.货位流水号
LEFT JOIN dbo.库存管理_物料主文件_基本 m ON A.物料编码 = m.物料编码
LEFT JOIN dbo.库房管理_库房主文件 k ON h.库房流水号 = k.库房流水号
LEFT JOIN dbo.库房管理_库区主文件 q ON h.库区流水号 = q.库区流水号
WHERE ((ISNULL(A.批次编号, N'''') <> N'''' AND ISNULL(A.库存, 0) > 0) OR ISNULL(A.批次编号, N'''') = N'''')
) AS T';
SET @fieldkey = N'分页流水号';
SET @fieldOrder = N'库位 ASC, 物料编码 ASC, 物料与货位流水号 ASC';
SET @fieldshow = N'名称,代号,物料编码,物料名称,图号或型号,类型,单位,库存,库存数量,货位名称,库位,物料与货位流水号,物料流水号,货位流水号,库位流水号,批次编号,编辑人,编辑时间,库房名称,库区名称,库存状态';
SET @where = N'1 = 1';
IF @_check = 1 AND @keyword <> N''
BEGIN
IF @ = N'逆向'
SET @where = @where + N' AND (库位 LIKE N''%' + @keyword + N'%'' OR 货位名称 LIKE N''%' + @keyword + N'%'')';
ELSE IF @ = N'正向'
SET @where = @where + N' AND (名称 LIKE N''%' + @keyword + N'%'' OR 代号 LIKE N''%' + @keyword + N'%'' OR 物料名称 LIKE N''%' + @keyword + N'%'' OR 图号或型号 LIKE N''%' + @keyword + N'%'' OR 物料编码 LIKE N''%' + @keyword + N'%'')';
ELSE
SET @where = @where + N' AND (名称 LIKE N''%' + @keyword + N'%'' OR 代号 LIKE N''%' + @keyword + N'%'' OR 物料名称 LIKE N''%' + @keyword + N'%'' OR 图号或型号 LIKE N''%' + @keyword + N'%'' OR 物料编码 LIKE N''%' + @keyword + N'%'' OR 库位 LIKE N''%' + @keyword + N'%'' OR 货位名称 LIKE N''%' + @keyword + N'%'')';
END
IF @_check = 1 AND @warehouse <> N''
SET @where = @where + N' AND 库房名称 = N''' + @warehouse + N'''';
EXEC dbo.sp_xt_pagesplit2
@tbname,
@fieldkey,
@where,
@fieldshow,
@fieldOrder,
@PageCurrent,
@PageSize,
@PageCount OUTPUT,
@ItemCount OUTPUT;
END
GO

View File

@@ -0,0 +1,818 @@
/*
库房管理隔离实施脚本(测试库 ERPTOOL_JY_20250826Back
修改人:Ld 修改时间:2026-07-30 09:23:13;
说明:
1. 新增库房、库区、库房业务记录表。
2. 对库存管理_货位主文件仅补充可空字段不改变原字段和原存储过程。
3. 新增存储过程全部使用“库房管理_”前缀不覆盖现有“仓储管理_”过程。
*/
SET NOCOUNT ON;
GO
IF OBJECT_ID(N'dbo.库房管理_库房主文件', N'U') IS NULL
BEGIN
CREATE TABLE dbo._库房主文件
(
INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_库房管理_库房主文件 PRIMARY KEY,
NVARCHAR(50) NOT NULL,
NVARCHAR(100) NOT NULL,
NVARCHAR(50) NULL,
NVARCHAR(200) NULL,
INT NULL,
NVARCHAR(20) NOT NULL CONSTRAINT DF_库房管理_库房主文件_状态 DEFAULT(N'启用'),
INT NOT NULL CONSTRAINT DF_库房管理_库房主文件_排数 DEFAULT(8),
INT NOT NULL CONSTRAINT DF_库房管理_库房主文件_每排列数 DEFAULT(24),
INT NOT NULL CONSTRAINT DF_库房管理_库房主文件_层数 DEFAULT(3),
NVARCHAR(500) NULL,
INT NULL,
DATETIME NOT NULL CONSTRAINT DF_库房管理_库房主文件_创建时间 DEFAULT(GETDATE()),
INT NULL,
DATETIME NULL,
CONSTRAINT UQ_库房管理_库房主文件_库房编号 UNIQUE()
);
END
GO
IF OBJECT_ID(N'dbo.库房管理_库区主文件', N'U') IS NULL
BEGIN
CREATE TABLE dbo._库区主文件
(
INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_库房管理_库区主文件 PRIMARY KEY,
INT NOT NULL,
NVARCHAR(50) NOT NULL,
NVARCHAR(100) NOT NULL,
NVARCHAR(50) NULL,
NVARCHAR(20) NOT NULL CONSTRAINT DF_库房管理_库区主文件_状态 DEFAULT(N'启用'),
INT NULL,
NVARCHAR(500) NULL,
INT NULL,
DATETIME NOT NULL CONSTRAINT DF_库房管理_库区主文件_创建时间 DEFAULT(GETDATE()),
INT NULL,
DATETIME NULL,
CONSTRAINT FK_库房管理_库区主文件_库房 FOREIGN KEY() REFERENCES dbo._库房主文件(),
CONSTRAINT UQ_库房管理_库区主文件_库房库区编号 UNIQUE(, )
);
END
GO
IF OBJECT_ID(N'dbo.库房管理_业务记录', N'U') IS NULL
BEGIN
CREATE TABLE dbo._业务记录
(
INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_库房管理_业务记录 PRIMARY KEY,
NVARCHAR(50) NOT NULL,
NVARCHAR(100) NULL,
INT NULL,
INT NULL,
INT NULL,
INT NULL,
INT NULL,
FLOAT NULL,
FLOAT NULL,
FLOAT NULL,
NVARCHAR(500) NULL,
INT NULL,
DATETIME NOT NULL CONSTRAINT DF_库房管理_业务记录_操作时间 DEFAULT(GETDATE()),
CONSTRAINT FK_库房管理_业务记录_库房 FOREIGN KEY() REFERENCES dbo._库房主文件(),
CONSTRAINT FK_库房管理_业务记录_库区 FOREIGN KEY() REFERENCES dbo._库区主文件()
);
END
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库房流水号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库区流水号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'排号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'列号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'层号') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库位状态') IS NULL
ALTER TABLE dbo._货位主文件 ADD NVARCHAR(20) NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'库位容量') IS NULL
ALTER TABLE dbo._货位主文件 ADD FLOAT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'是否启用') IS NULL
ALTER TABLE dbo._货位主文件 ADD BIT NOT NULL CONSTRAINT DF_库存管理_货位主文件_是否启用 DEFAULT(1);
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'修改人') IS NULL
ALTER TABLE dbo._货位主文件 ADD INT NULL;
GO
IF COL_LENGTH(N'dbo.库存管理_货位主文件', N'修改时间') IS NULL
ALTER TABLE dbo._货位主文件 ADD DATETIME NULL;
GO
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_库存管理_货位主文件_库房管理库房')
BEGIN
ALTER TABLE dbo._货位主文件 WITH CHECK
ADD CONSTRAINT FK_库存管理_货位主文件_库房管理库房 FOREIGN KEY() REFERENCES dbo._库房主文件();
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_库存管理_货位主文件_库房管理库区')
BEGIN
ALTER TABLE dbo._货位主文件 WITH CHECK
ADD CONSTRAINT FK_库存管理_货位主文件_库房管理库区 FOREIGN KEY() REFERENCES dbo._库区主文件();
END
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.库存管理_货位主文件') AND name = N'IX_库存管理_货位主文件_库房库区排列层')
CREATE INDEX IX_库存管理_货位主文件_库房库区排列层 ON dbo._货位主文件(, , , , );
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE object_id = OBJECT_ID(N'dbo.库房管理_业务记录') AND name = N'IX_库房管理_业务记录_库位物料时间')
CREATE INDEX IX_库房管理_业务记录_库位物料时间 ON dbo._业务记录(, , DESC);
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-2F')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-2F', N'二楼隔层仓库', N'隔层仓库', N'二楼隔层', N'启用', 1, 99, 1, N'库位格式:字母数字-数字,例如 A1-1', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-LK')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-LK', N'立库仓库', N'立库仓库', N'立库区域', N'启用', 99, 99, 99, N'库位格式xx-xx-xx例如 01-01-01', 0);
END
GO
IF NOT EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = N'KF-3F')
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , )
VALUES(N'KF-3F', N'三楼仓库', N'三楼可视化仓库', N'三楼仓库', N'启用', 8, 24, 3, N'库位格式x-xx-xx-xx可视化界面按三楼布局展示', 0);
END
GO
;WITH DefaultArea AS
(
SELECT N'KF-2F' AS , N'2F' AS , N'二楼隔层库区' AS , N'隔层库区' AS , N'字母数字-数字库位区' AS
UNION ALL SELECT N'KF-LK', N'LK', N'立库库区', N'立库库区', N'xx-xx-xx 库位区'
UNION ALL SELECT N'KF-3F', N'3F', N'三楼可视化库区', N'三楼库区', N'x-xx-xx-xx 可视化库位区'
)
INSERT INTO dbo._库区主文件(, , , , , , )
SELECT k., a., a., a., 1, a., 0
FROM DefaultArea a
INNER JOIN dbo._库房主文件 k ON a. = k.
WHERE NOT EXISTS
(
SELECT 1
FROM dbo._库区主文件 x
WHERE x. = k.
AND x. = a.
);
GO
IF EXISTS (SELECT 1 FROM dbo._货位主文件 WHERE = N'KF-A-01-01-1')
BEGIN
UPDATE dbo._货位主文件
SET = N'1-01-01-01',
= 0,
= GETDATE()
WHERE = N'KF-A-01-01-1';
END
GO
IF OBJECT_ID(N'dbo.库房管理_库位编码归属_同步', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位编码归属_同步;
GO
CREATE PROCEDURE dbo._库位编码归属_同步
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ INT;
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-2F';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'2F';
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-LK';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'LK';
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-3F';
SELECT @ = FROM dbo._库区主文件 WHERE = @ AND = N'3F';
UPDATE h
SET = @,
= @,
= NULL,
= NULL,
= NULL,
= ISNULL(h., N'空库位'),
= GETDATE()
FROM dbo._货位主文件 h
WHERE h. LIKE N'[A-Za-z][0-9]%-[0-9]%'
AND LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 1;
UPDATE h
SET = @,
= @,
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 3)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 2)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 1)),
= ISNULL(h., N'空库位'),
= GETDATE()
FROM dbo._货位主文件 h
WHERE LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 2
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 3)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 2)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 1)) = 1;
UPDATE h
SET = @,
= @,
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 4)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 3)),
= CONVERT(INT, PARSENAME(REPLACE(h., N'-', N'.'), 2)),
= ISNULL(h., N'空库位'),
= GETDATE()
FROM dbo._货位主文件 h
WHERE LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 3
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 4)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 3)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 2)) = 1
AND ISNUMERIC(PARSENAME(REPLACE(h., N'-', N'.'), 1)) = 1;
SELECT
SUM(CASE WHEN = @ THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN = @ THEN 1 ELSE 0 END) AS ,
SUM(CASE WHEN = @ THEN 1 ELSE 0 END) AS
FROM dbo._货位主文件;
END
GO
EXEC dbo._库位编码归属_同步;
GO
IF OBJECT_ID(N'dbo.库房管理_库房_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库房_查询;
GO
CREATE PROCEDURE dbo._库房_查询
@_check BIT = 0,
@ NVARCHAR(100) = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
k.,
ISNULL(q., 0) AS ,
ISNULL(h., 0) AS ,
ISNULL(s., 0) AS ,
ISNULL(s., 0) AS ,
k.,
k.
FROM dbo._库房主文件 k
LEFT JOIN
(
SELECT , COUNT(1) AS
FROM dbo._库区主文件
GROUP BY
) q ON k. = q.
LEFT JOIN
(
SELECT , COUNT(1) AS
FROM dbo._货位主文件
WHERE IS NOT NULL
GROUP BY
) h ON k. = h.
LEFT JOIN
(
SELECT
h.,
COUNT(DISTINCT h.) AS ,
SUM(ISNULL(m., 0)) AS
FROM dbo._货位主文件 h
INNER JOIN dbo._物料与货位对照表 m ON h. = m. AND ISNULL(m., 0) > 0
WHERE h. IS NOT NULL
GROUP BY h.
) s ON k. = s.
WHERE (@_check = 0 OR k. LIKE N'%' + ISNULL(@, N'') + N'%' OR k. LIKE N'%' + ISNULL(@, N'') + N'%')
AND (@_check = 0 OR k. = @)
ORDER BY k.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库房_保存', N'P') IS NOT NULL
DROP PROCEDURE dbo._库房_保存;
GO
CREATE PROCEDURE dbo._库房_保存
@ INT = NULL,
@ NVARCHAR(50),
@ NVARCHAR(100),
@ NVARCHAR(50) = NULL,
@ NVARCHAR(200) = NULL,
@ INT = NULL,
@ NVARCHAR(20) = N'启用',
@ INT = 8,
@ INT = 24,
@ INT = 3,
@ NVARCHAR(500) = NULL,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM dbo._库房主文件 WHERE = @ AND ISNULL(@, 0) <> )
BEGIN
SELECT '0' AS result, N'库房编号已存在' AS msg;
RETURN;
END
IF ISNULL(@, 0) = 0
BEGIN
INSERT INTO dbo._库房主文件(, , , , , , , , , , )
VALUES(@, @, @, @, @, ISNULL(@, N'启用'), ISNULL(@, 8), ISNULL(@, 24), ISNULL(@, 3), @, @UserID);
SELECT '1' AS result, SCOPE_IDENTITY() AS , N'新增成功' AS msg;
END
ELSE
BEGIN
UPDATE dbo._库房主文件
SET = @,
= @,
= @,
= @,
= @,
= ISNULL(@, ),
= ISNULL(@, ),
= ISNULL(@, ),
= ISNULL(@, ),
= @,
= @UserID,
= GETDATE()
WHERE = @;
SELECT '1' AS result, @ AS , N'编辑成功' AS msg;
END
END
GO
IF OBJECT_ID(N'dbo.库房管理_库房_停用', N'P') IS NOT NULL
DROP PROCEDURE dbo._库房_停用;
GO
CREATE PROCEDURE dbo._库房_停用
@ INT,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS
(
SELECT 1
FROM dbo._货位主文件 h
INNER JOIN dbo._物料与货位对照表 m ON h. = m.
WHERE h. = @ AND ISNULL(m., 0) > 0
)
BEGIN
SELECT '0' AS result, N'库房下仍有库存,不能停用' AS msg;
RETURN;
END
UPDATE dbo._库房主文件
SET = N'停用', = @UserID, = GETDATE()
WHERE = @;
UPDATE dbo._货位主文件
SET = 0, = @UserID, = GETDATE()
WHERE = @;
SELECT '1' AS result, N'停用成功' AS msg;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库区_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库区_查询;
GO
CREATE PROCEDURE dbo._库区_查询
@ INT = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SELECT
q.,
q.,
k.,
q.,
q.,
q.,
q.,
q.,
q.,
ISNULL(h., 0) AS
FROM dbo._库区主文件 q
INNER JOIN dbo._库房主文件 k ON q. = k.
LEFT JOIN
(
SELECT , COUNT(1) AS
FROM dbo._货位主文件
WHERE IS NOT NULL
GROUP BY
) h ON q. = h.
WHERE (@ IS NULL OR q. = @)
AND (@_check = 0 OR q. = @)
ORDER BY q., q.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库区_保存', N'P') IS NOT NULL
DROP PROCEDURE dbo._库区_保存;
GO
CREATE PROCEDURE dbo._库区_保存
@ INT = NULL,
@ INT,
@ NVARCHAR(50),
@ NVARCHAR(100),
@ NVARCHAR(50) = NULL,
@ NVARCHAR(20) = N'启用',
@ INT = NULL,
@ NVARCHAR(500) = NULL,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM dbo._库区主文件 WHERE = @ AND = @ AND ISNULL(@, 0) <> )
BEGIN
SELECT '0' AS result, N'库区编号已存在' AS msg;
RETURN;
END
IF ISNULL(@, 0) = 0
BEGIN
INSERT INTO dbo._库区主文件(, , , , , , , )
VALUES(@, @, @, @, ISNULL(@, N'启用'), @, @, @UserID);
SELECT '1' AS result, SCOPE_IDENTITY() AS , N'新增成功' AS msg;
END
ELSE
BEGIN
UPDATE dbo._库区主文件
SET = @,
= @,
= @,
= @,
= ISNULL(@, ),
= @,
= @,
= @UserID,
= GETDATE()
WHERE = @;
SELECT '1' AS result, @ AS , N'编辑成功' AS msg;
END
END
GO
IF OBJECT_ID(N'dbo.库房管理_库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位_查询;
GO
CREATE PROCEDURE dbo._库位_查询
@ INT = NULL,
@ INT = NULL,
@_check BIT = 0,
@ NVARCHAR(50) = NULL,
@_check BIT = 0,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
SELECT
h. AS ,
h. AS ,
h.,
k.,
h.,
q.,
h.,
h.,
h.,
CASE
WHEN ISNULL(h., 1) = 0 THEN N'停用'
WHEN ISNULL(s., 0) > 0 AND ISNULL(h., 0) > 0 AND ISNULL(s., 0) >= ISNULL(h., 0) THEN N'满库位'
WHEN ISNULL(s., 0) > 0 THEN N'有库存'
ELSE ISNULL(h., N'空库位')
END AS ,
ISNULL(h., 0) AS ,
ISNULL(s., 0) AS ,
ISNULL(s., 0) AS ,
h.,
h.
FROM dbo._货位主文件 h
LEFT JOIN dbo._库房主文件 k ON h. = k.
LEFT JOIN dbo._库区主文件 q ON h. = q.
LEFT JOIN
(
SELECT , COUNT(DISTINCT ) AS , SUM(ISNULL(, 0)) AS
FROM dbo._物料与货位对照表
WHERE ISNULL(, 0) > 0
GROUP BY
) s ON h. = s.
WHERE (@ IS NULL OR h. = @)
AND (@ IS NULL OR h. = @)
AND (@_check = 0 OR h. LIKE N'%' + ISNULL(@, N'') + N'%')
AND (@_check = 0 OR
CASE
WHEN ISNULL(h., 1) = 0 THEN N'停用'
WHEN ISNULL(s., 0) > 0 AND ISNULL(h., 0) > 0 AND ISNULL(s., 0) >= ISNULL(h., 0) THEN N'满库位'
WHEN ISNULL(s., 0) > 0 THEN N'有库存'
ELSE ISNULL(h., N'空库位')
END = @)
ORDER BY h., h., h., h.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库位_保存', N'P') IS NOT NULL
DROP PROCEDURE dbo._库位_保存;
GO
CREATE PROCEDURE dbo._库位_保存
@ INT = NULL,
@ NVARCHAR(50),
@ INT,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ INT = NULL,
@ NVARCHAR(20) = N'空库位',
@ FLOAT = NULL,
@ BIT = 1,
@UserID INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
IF EXISTS (SELECT 1 FROM dbo._货位主文件 WHERE = @ AND ISNULL(@, 0) <> )
BEGIN
SELECT '0' AS result, N'库位名称已存在' AS msg;
RETURN;
END
IF ISNULL(@, 0) = 0
BEGIN
INSERT INTO dbo._货位主文件(, , , , , , , , , , , )
VALUES(@, @, @, @, @, @, ISNULL(@, N'空库位'), @, ISNULL(@, 1), GETDATE(), @UserID, GETDATE());
SELECT '1' AS result, SCOPE_IDENTITY() AS , N'新增成功' AS msg;
END
ELSE
BEGIN
UPDATE dbo._货位主文件
SET = @,
= @,
= @,
= @,
= @,
= @,
= ISNULL(@, ),
= @,
= ISNULL(@, ),
= @UserID,
= GETDATE()
WHERE = @;
SELECT '1' AS result, @ AS , N'编辑成功' AS msg;
END
END
GO
IF OBJECT_ID(N'dbo.库房管理_可视化库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._可视化库位_查询;
GO
CREATE PROCEDURE dbo._可视化库位_查询
@ INT = NULL,
@ INT = NULL,
@ INT = 1
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
IF @ IS NULL
SELECT @ = FROM dbo._库房主文件 WHERE = N'KF-3F';
DECLARE @ INT = 8;
DECLARE @ INT = 24;
DECLARE @ INT = 3;
DECLARE @ NVARCHAR(50) = N'KF';
SELECT TOP 1
@ = ISNULL(, 8),
@ = ISNULL(, 24),
@ = ISNULL(, 3),
@ = ISNULL(, N'KF')
FROM dbo._库房主文件
WHERE (@ IS NULL OR = @)
ORDER BY ;
;WITH row_num AS
(
SELECT 1 AS n
UNION ALL SELECT n + 1 FROM row_num WHERE n < @
),
col_num AS
(
SELECT 1 AS n
UNION ALL SELECT n + 1 FROM col_num WHERE n < @
),
cell AS
(
SELECT r.n AS , c.n AS , @ AS
FROM row_num r
CROSS JOIN col_num c
),
stock AS
(
SELECT , COUNT(DISTINCT ) AS , SUM(ISNULL(, 0)) AS
FROM dbo._物料与货位对照表
WHERE ISNULL(, 0) > 0
GROUP BY
)
SELECT
cell.,
cell.,
cell.,
ISNULL(h., CONVERT(NVARCHAR(10), cell.) + N'-' + RIGHT(N'00' + CONVERT(NVARCHAR(10), cell.), 2) + N'-' + RIGHT(N'00' + CONVERT(NVARCHAR(10), cell.), 2) + N'-01') AS ,
h. AS ,
CASE
WHEN h. IS NULL THEN N'未建库位'
WHEN ISNULL(h., 1) = 0 THEN N'停用'
WHEN ISNULL(stock., 0) > 0 AND ISNULL(h., 0) > 0 AND ISNULL(stock., 0) >= ISNULL(h., 0) THEN N'满库位'
WHEN ISNULL(stock., 0) > 0 THEN N'有库存'
ELSE ISNULL(h., N'空库位')
END AS ,
ISNULL(stock., 0) AS ,
ISNULL(stock., 0) AS ,
ISNULL(h., 0) AS
FROM cell
LEFT JOIN dbo._货位主文件 h
ON h. = cell.
AND h. = cell.
AND h. = cell.
AND (@ IS NULL OR h. = @)
AND (@ IS NULL OR h. = @)
AND LEN(h.) - LEN(REPLACE(h., N'-', N'')) = 3
LEFT JOIN stock ON h. = stock.
ORDER BY cell., cell.
OPTION (MAXRECURSION 0);
END
GO
IF OBJECT_ID(N'dbo.库房管理_物料库位_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._物料库位_查询;
GO
CREATE PROCEDURE dbo._物料库位_查询
@ NVARCHAR(10) = N'综合',
@_check BIT = 0,
@ NVARCHAR(100) = NULL,
@ INT = NULL,
@ INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SET @ = NULLIF(@, 0);
SELECT
m.,
m.,
m. AS ,
m. AS ,
h. AS ,
h. AS ,
h.,
k.,
h.,
q.,
h.,
h.,
h.,
d. AS ,
d.,
CASE
WHEN ISNULL(d., 0) > 0 THEN N'有库存'
ELSE N'无库存'
END AS ,
d.,
@ AS
FROM dbo._物料与货位对照表 d
INNER JOIN dbo._物料主文件_基本 m ON d. = m.
INNER JOIN dbo._货位主文件 h ON d. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
LEFT JOIN dbo._库区主文件 q ON h. = q.
WHERE ISNULL(d., 0) > 0
AND (@ IS NULL OR h. = @)
AND (@ IS NULL OR h. = @)
AND
(
@_check = 0
OR m. LIKE N'%' + ISNULL(@, N'') + N'%'
OR m. LIKE N'%' + ISNULL(@, N'') + N'%'
OR m. LIKE N'%' + ISNULL(@, N'') + N'%'
OR h. LIKE N'%' + ISNULL(@, N'') + N'%'
)
ORDER BY k., h., h., h., m.;
END
GO
IF OBJECT_ID(N'dbo.库房管理_库存流水_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._库存流水_查询;
GO
CREATE PROCEDURE dbo._库存流水_查询
@_check BIT = 0,
@ NVARCHAR(100) = NULL,
@ INT = NULL,
@ DATE = NULL,
@ DATE = NULL
AS
BEGIN
SET NOCOUNT ON;
SET @ = NULLIF(@, 0);
SELECT TOP 500 *
FROM
(
SELECT
N'入库' AS ,
r. AS ,
m.,
m. AS ,
m. AS ,
h. AS ,
k.,
CONVERT(FLOAT, r.) AS ,
r. AS
FROM dbo._外购件_入库记录 r
LEFT JOIN dbo._物料主文件_基本 m ON r. = m.
LEFT JOIN dbo._货位主文件 h ON r. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
UNION ALL
SELECT
N'出库' AS ,
r. AS ,
m.,
m. AS ,
m. AS ,
h. AS ,
k.,
CONVERT(FLOAT, r.) AS ,
r. AS
FROM dbo._物料出库_出库记录 r
LEFT JOIN dbo._物料主文件_基本 m ON r. = m.
LEFT JOIN dbo._货位主文件 h ON r. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
UNION ALL
SELECT
N'盘点' AS ,
r. AS ,
m.,
m. AS ,
m. AS ,
h. AS ,
k.,
CONVERT(FLOAT, ISNULL(r., 0) - ISNULL(r., 0)) AS ,
r. AS
FROM dbo._修改记录 r
LEFT JOIN dbo._物料主文件_基本 m ON r. = m.
LEFT JOIN dbo._物料与货位对照表 d ON r. = d.
LEFT JOIN dbo._货位主文件 h ON d. = h.
LEFT JOIN dbo._库房主文件 k ON h. = k.
) x
WHERE (@ IS NULL OR x. IN (SELECT FROM dbo._库房主文件 WHERE = @))
AND (@ IS NULL OR x. >= @)
AND (@ IS NULL OR x. < DATEADD(DAY, 1, @))
AND
(
@_check = 0
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
OR x. LIKE N'%' + ISNULL(@, N'') + N'%'
)
ORDER BY x. DESC;
END
GO

View File

@@ -94,7 +94,8 @@ BEGIN
A.,
A.,
A.,
ISNULL(., A.) AS ,
-- 操作者人名查询兼容操作者、工作者和录工票人员;修改人:Ld 修改时间:2026-07-23 16:08:35;
COALESCE(., ., ., A.) AS ,
A.,
A.id,
A.,
@@ -138,7 +139,12 @@ BEGIN
) priceData
WHERE (@_check = 0 OR A. = @)
AND (@_check = 0 OR A. = @)
AND (@_check = 0 OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%')
AND (
@_check = 0
OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
)
AND (@_check = 0 OR CONVERT(DATE, A.) BETWEEN CONVERT(DATE, @) AND CONVERT(DATE, @))
)
SELECT
@@ -193,13 +199,23 @@ BEGIN
SELECT COUNT(1) AS total
FROM [dbo].[MES_机加工MES_加工完成整修审核表] AS A
LEFT JOIN [dbo].[_人员名单] AS
ON A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = .
OR A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = CONVERT(NVARCHAR(100), .)
OR A. = CONVERT(NVARCHAR(100), .)
OR A. = .
WHERE (@_check = 0 OR A. = @)
AND (@_check = 0 OR A. = @)
AND (@_check = 0 OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%')
AND (
@_check = 0
OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
)
AND (@_check = 0 OR CONVERT(DATE, A.) BETWEEN CONVERT(DATE, @) AND CONVERT(DATE, @));
END;
GO
@@ -227,6 +243,9 @@ BEGIN
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @ INT;
@@ -297,6 +316,24 @@ BEGIN
RETURN;
END;
-- 修改完成数量后的累计结果不能超过投产数量;修改人:Ld 修改时间:2026-07-23 16:22:46;
IF @ = 1 AND @ IS NOT NULL
BEGIN
SELECT
@ = ISNULL(V., 0),
@ = ISNULL(V., 0)
FROM [dbo].[_零件工序_视图] AS V
WHERE V. = @;
SET @ = ISNULL(@, 0) + ISNULL(@, 0);
IF ISNULL(@, 0) > 0 AND @ > @
BEGIN
SELECT N'0' AS result, N'修改后的已完成数不能超过投产数量' AS message;
RETURN;
END;
END;
SELECT TOP 1 @ = CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)

View File

@@ -0,0 +1,116 @@
USE [ERPTOOL_JY_20250826Back]
GO
ALTER PROCEDURE [dbo].[_查询数据_分页]
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ int = null,
@_check bit = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ int =null,
@ int =null,
@_check bit = null,
@ int = null,
@_check bit = null, -- 修改人:Ld 修改时间:2026-08-03 07:55:23; 支持前端切换查看启用/禁用物料
@ bit = null, -- 修改人:Ld 修改时间:2026-08-03 07:55:23; 1 查询禁用物料0 查询启用物料
@PageCurrent int=1, --
@PageSize int = 20, --()
@PageCount int = '1111' OUTPUT, --
@ItemCount int = '1111' OUTPUT --
AS
declare @selectStrWhere nvarchar(4000)
set @selectStrWhere = '1=1 ' -- 修改人:Ld 修改时间:2026-08-03 07:55:23; 默认条件改为可拼接启用状态
if (ISNULL(@_check, 0) = 1) -- 修改人:Ld 修改时间:2026-08-03 07:55:23; 按按钮传入状态筛选禁用/启用物料
set @selectStrWhere = @selectStrWhere + ' and 是否禁用 = ' + str(ISNULL(@, 0))
else
set @selectStrWhere = @selectStrWhere + ' and 是否禁用=0 '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 名称 like + ''%'' + @物料名称 + ''%'' '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 修改日期 >=@开始时间 and 修改日期 <=@结束时间 '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 代号 like + ''%'' + @图号 + ''%'' '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 类型 = @类型 '
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 名称 like '+N'''%'+@+N'%'''
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 物料编码 like '+N'''%'+@+N'%'''
if (@_check = 1)
if(@ is not null and @ is not null)
set @selectStrWhere = @selectStrWhere+' and ' + N''''+@+N'''' + '<=修改日期' + ' and '+ N''''+@+N'''' + '>=修改日期'
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 代号 like '+N'''%'+@+N'%'''
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 类型 = '+str(@)
---if (@_check = 1)
-- if(@物料库 is not null)
-- set @selectStrWhere = @selectStrWhere+' and 物料库流水号 = '+ str(@物料库)
declare @tbname sysname --
declare @fieldkey sysname --(),
declare @where nvarchar(4000) --
declare @fieldshow nvarchar(1000) --,,
declare @fieldOrder nvarchar(1000) ----,DESC/ASC --
set @tbname = '物料视图'
set @fieldkey = '物料流水号'
set @where = @selectStrWhere
set @fieldshow =' [代号], [修改人], [修改日期], [单位], [单位流水号],[名称], [库位], [货位流水号], [操作日期],[文件内容],[文件后缀], [物料类型],[物料库流水号],
[是否启用], [是否禁用], [材料], [材料流水号],
[物料流水号], [物料编码], [类型], [类型名称], [物料说明],[规格],[曾用物料编码],[Expr1]' -- 修改人:Ld 修改时间:2026-08-03 07:55:23; 保持原输出字段并继续返回是否禁用状态
if @ = 1
begin
if @ = 1
begin
set @fieldOrder ='名称 DESC'
end
else
begin
set @fieldOrder = '名称 ASC'
end
end
else if @ = 2
begin
if @ = 1
begin
set @fieldOrder = '代号 DESC'
end
else
begin
set @fieldOrder = '代号 ASC'
end
end
else
begin
set @fieldOrder = '操作日期 DESC'
end
exec sp_xt_pagesplit @tbname,@fieldkey,@where,@fieldshow,@fieldOrder,'',@PageCurrent,@PageSize,@PageCount out,@ItemCount out
GO

View File

@@ -0,0 +1,211 @@
USE [ERPTOOL_JY]
GO
ALTER PROCEDURE [dbo].[_查询数据_分页]
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ int = null,
@_check bit = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ int =null,
@ int =null,
@_check bit = null,
@ int = null,
@_check bit = null, -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 正式库支持前端切换查看启用/禁用物料
@ bit = null, -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 1 查询禁用物料0 查询启用物料
@PageCurrent int=1, --
@PageSize int = 20, --()
@PageCount int = '1111' OUTPUT, --
@ItemCount int = '1111' OUTPUT --
AS
declare @selectStrWhere nvarchar(4000)
set @selectStrWhere = '1=1 ' -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 默认条件改为可拼接启用状态
if (ISNULL(@_check, 0) = 1) -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 按按钮传入状态筛选禁用/启用物料
set @selectStrWhere = @selectStrWhere + ' and 是否禁用 = ' + str(ISNULL(@, 0))
else
set @selectStrWhere = @selectStrWhere + ' and 是否禁用=0 '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 名称 like + ''%'' + @物料名称 + ''%'' '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 修改日期 >=@开始时间 and 修改日期 <=@结束时间 '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 代号 like + ''%'' + @图号 + ''%'' '
--if(@_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 类型 = @类型 '
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 名称 like '+N'''%'+@+N'%'''
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 物料编码 like '+N'''%'+@+N'%'''
if (@_check = 1)
if(@ is not null and @ is not null)
set @selectStrWhere = @selectStrWhere+' and ' + N''''+@+N'''' + '<=修改日期' + ' and '+ N''''+@+N'''' + '>=修改日期'
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 代号 like '+N'''%'+@+N'%'''
if (@_check = 1)
if(@ is not null)
set @selectStrWhere = @selectStrWhere+' and 类型 = '+str(@)
---if (@_check = 1)
-- if(@物料库 is not null)
-- set @selectStrWhere = @selectStrWhere+' and 物料库流水号 = '+ str(@物料库)
declare @tbname sysname --
declare @fieldkey sysname --(),
declare @where nvarchar(4000) --
declare @fieldshow nvarchar(1000) --,,
declare @fieldOrder nvarchar(1000) ----,DESC/ASC --
set @tbname = '物料视图'
set @fieldkey = '物料流水号'
set @where = @selectStrWhere
set @fieldshow =' [代号], [修改人], [修改日期], [单位], [单位流水号],[名称], [库位], [货位流水号], [操作日期],[文件内容],[文件后缀], [物料类型],[物料库流水号],
[是否启用], [是否禁用], [材料], [材料流水号],
[物料流水号], [物料编码], [类型], [类型名称], [物料说明],[规格],[曾用物料编码],[Expr1]' -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 保持原输出字段并继续返回是否禁用状态
if @ = 1
begin
if @ = 1
begin
set @fieldOrder ='名称 DESC'
end
else
begin
set @fieldOrder = '名称 ASC'
end
end
else if @ = 2
begin
if @ = 1
begin
set @fieldOrder = '代号 DESC'
end
else
begin
set @fieldOrder = '代号 ASC'
end
end
else
begin
set @fieldOrder = '操作日期 DESC'
end
exec sp_xt_pagesplit @tbname,@fieldkey,@where,@fieldshow,@fieldOrder,'',@PageCurrent,@PageSize,@PageCount out,@ItemCount out
GO
ALTER PROCEDURE [dbo].[_删除]
@ int=null
AS
BEGIN
SET NOCOUNT ON;
IF @ IS NULL OR NOT EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
UPDATE dbo._物料主文件_基本
SET = 1
WHERE = @; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 删除保持原逻辑删除语义
DELETE FROM dbo._物料_图片
WHERE = @; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 删除后继续清理物料图片
SELECT '1' AS result, N'删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 返回前端可识别结果
END
GO
IF OBJECT_ID(N'[dbo].[物料管理_启用]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_启用]
GO
CREATE PROCEDURE [dbo].[_启用]
@ int=null,
@ int=null
AS
BEGIN
SET NOCOUNT ON;
IF @ IS NULL OR NOT EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
UPDATE dbo._物料主文件_基本
SET = 0,
= @,
= GETDATE()
WHERE = @; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 禁用物料重新启用
SELECT '1' AS result, N'启用成功' AS msg; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 返回前端可识别结果
END
GO
IF OBJECT_ID(N'[dbo].[物料管理_物理删除]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_物理删除]
GO
CREATE PROCEDURE [dbo].[_物理删除]
@ int=null
AS
BEGIN
SET NOCOUNT ON;
IF @ IS NULL OR NOT EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
IF EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @ AND ISNULL(, 0) = 0)
BEGIN
SELECT '0' AS result, N'启用物料不能物理删除,请先删除禁用后再操作' AS msg;
RETURN;
END
BEGIN TRY
BEGIN TRAN;
DELETE FROM dbo._物料_图片
WHERE = @; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 物理删除禁用物料时同步清理图片
DELETE FROM dbo._物料主文件_基本
WHERE = @
AND ISNULL(, 0) = 1; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 仅允许已禁用物料物理删除
COMMIT TRAN;
SELECT '1' AS result, N'永久删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 返回前端可识别结果
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH
END
GO

View File

@@ -0,0 +1,52 @@
USE [ERPTOOL_JY_20250826Back]
GO
ALTER PROCEDURE [dbo].[_删除]
@ int=null
AS
BEGIN
SET NOCOUNT ON;
IF @ IS NULL OR NOT EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
UPDATE dbo._物料主文件_基本
SET = 1
WHERE = @; -- 修改人:Ld 修改时间:2026-08-03 08:15:00; 删除保持原逻辑删除语义
DELETE FROM dbo._物料_图片
WHERE = @; -- 修改人:Ld 修改时间:2026-08-03 08:15:00; 删除后继续清理物料图片
SELECT '1' AS result, N'删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-03 08:15:00; 返回前端可识别结果
END
GO
IF OBJECT_ID(N'[dbo].[物料管理_启用]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_启用]
GO
CREATE PROCEDURE [dbo].[_启用]
@ int=null,
@ int=null
AS
BEGIN
SET NOCOUNT ON;
IF @ IS NULL OR NOT EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
UPDATE dbo._物料主文件_基本
SET = 0,
= @,
= GETDATE()
WHERE = @; -- 修改人:Ld 修改时间:2026-08-03 08:15:00; 禁用物料重新启用
SELECT '1' AS result, N'启用成功' AS msg; -- 修改人:Ld 修改时间:2026-08-03 08:15:00; 返回前端可识别结果
END
GO

View File

@@ -0,0 +1,47 @@
USE [ERPTOOL_JY_20250826Back]
GO
IF OBJECT_ID(N'[dbo].[物料管理_物理删除]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_物理删除]
GO
CREATE PROCEDURE [dbo].[_物理删除]
@ int=null
AS
BEGIN
SET NOCOUNT ON;
IF @ IS NULL OR NOT EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
IF EXISTS (SELECT 1 FROM dbo._物料主文件_基本 WHERE = @ AND ISNULL(, 0) = 0)
BEGIN
SELECT '0' AS result, N'启用物料不能物理删除,请先删除禁用后再操作' AS msg;
RETURN;
END
BEGIN TRY
BEGIN TRAN;
DELETE FROM dbo._物料_图片
WHERE = @; -- 修改人:Ld 修改时间:2026-08-03 08:35:00; 物理删除禁用物料时同步清理图片
DELETE FROM dbo._物料主文件_基本
WHERE = @
AND ISNULL(, 0) = 1; -- 修改人:Ld 修改时间:2026-08-03 08:35:00; 仅允许已禁用物料物理删除
COMMIT TRAN;
SELECT '1' AS result, N'永久删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-03 08:35:00; 返回前端可识别结果
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH
END
GO

View File

@@ -0,0 +1,185 @@
-- 生产审核操作者输入框按人名查询兼容工作者和录工票人员;修改人:Ld 修改时间:2026-07-23 16:08:35;
ALTER PROCEDURE [dbo].[MES_加工完成整修审核_查询数据]
@_check INT = 0,
@ NVARCHAR(20) = N'',
@_check INT = 0,
@ NVARCHAR(50) = N'',
@_check INT = 0,
@ NVARCHAR(100) = N'',
@_check INT = 0,
@ NVARCHAR(20) = N'',
@ NVARCHAR(20) = N'',
@PageCurrent INT = 1,
@PageSize INT = 100
AS
BEGIN
SET NOCOUNT ON;
IF @PageCurrent IS NULL OR @PageCurrent < 1 SET @PageCurrent = 1;
IF @PageSize IS NULL OR @PageSize < 1 SET @PageSize = 100;
;WITH AuditData AS (
SELECT
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN A. = N'待审核' THEN 0 ELSE 1 END,
A. DESC,
A.id DESC
) AS RowNum,
A.id,
A.,
A.,
V.,
V.,
V.,
V.,
V.,
V.,
V. AS ,
V.,
V.,
V.,
V.,
A.,
A.,
. AS ,
A.,
A.,
ISNULL(NULLIF(A., N''), N'计件') AS ,
CASE WHEN ISNULL(A., 0) <> 0 THEN A. ELSE ISNULL(priceData., 0) END AS ,
ISNULL(A., 0) AS ,
A.,
. AS ,
A.,
ISNULL(SB., A.) AS ,
A.,
A.,
A.,
A.,
A.,
A.,
-- 操作者人名查询兼容操作者、工作者和录工票人员;修改人:Ld 修改时间:2026-07-23 16:08:35;
COALESCE(., ., ., A.) AS ,
A.,
A.id,
A.,
CONVERT(VARCHAR(19), A., 120) AS ,
CONVERT(VARCHAR(19), A., 120) AS ,
CONVERT(VARCHAR(19), A., 120) AS ,
A.,
. AS ,
CONVERT(VARCHAR(19), A., 120) AS ,
A.,
A.,
CONVERT(VARCHAR(19), A., 120) AS
FROM [dbo].[MES_机加工MES_加工完成整修审核表] AS A
LEFT JOIN [dbo].[_零件工序_视图] AS V
ON A. = V.
LEFT JOIN [dbo].[_人员名单] AS
ON A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = .
OR A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = CONVERT(NVARCHAR(100), .)
OR A. = CONVERT(NVARCHAR(100), .)
OR A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = CONVERT(NVARCHAR(100), .)
OR A. = CONVERT(NVARCHAR(100), .)
OR A. = .
LEFT JOIN [dbo].[_设备工位点检表] AS SB
ON A. = SB.
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM [dbo].[_工序工价] price
WHERE price. = A.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE (@_check = 0 OR A. = @)
AND (@_check = 0 OR A. = @)
AND (
@_check = 0
OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
)
AND (@_check = 0 OR CONVERT(DATE, A.) BETWEEN CONVERT(DATE, @) AND CONVERT(DATE, @))
)
SELECT
id,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
id,
,
,
,
,
,
,
,
,
,
FROM AuditData
WHERE RowNum BETWEEN ((@PageCurrent - 1) * @PageSize + 1) AND (@PageCurrent * @PageSize)
ORDER BY RowNum;
SELECT COUNT(1) AS total
FROM [dbo].[MES_机加工MES_加工完成整修审核表] AS A
LEFT JOIN [dbo].[_人员名单] AS
ON A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = .
OR A. = .
LEFT JOIN [dbo].[_人员名单] AS
ON A. = CONVERT(NVARCHAR(100), .)
OR A. = CONVERT(NVARCHAR(100), .)
OR A. = .
WHERE (@_check = 0 OR A. = @)
AND (@_check = 0 OR A. = @)
AND (
@_check = 0
OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
OR ISNULL(., N'') LIKE N'%' + @ + N'%'
)
AND (@_check = 0 OR CONVERT(DATE, A.) BETWEEN CONVERT(DATE, @) AND CONVERT(DATE, @));
END;
GO

View File

@@ -21,6 +21,9 @@ BEGIN
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @ INT;
@@ -91,6 +94,24 @@ BEGIN
RETURN;
END;
-- 修改完成数量后的累计结果不能超过投产数量;修改人:Ld 修改时间:2026-07-23 16:22:46;
IF @ = 1 AND @ IS NOT NULL
BEGIN
SELECT
@ = ISNULL(V., 0),
@ = ISNULL(V., 0)
FROM [dbo].[_零件工序_视图] AS V
WHERE V. = @;
SET @ = ISNULL(@, 0) + ISNULL(@, 0);
IF ISNULL(@, 0) > 0 AND @ > @
BEGIN
SELECT N'0' AS result, N'修改后的已完成数不能超过投产数量' AS message;
RETURN;
END;
END;
SELECT TOP 1 @ = CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)

View File

@@ -0,0 +1,105 @@
/* 修改人:Ld 修改时间:2026-08-04 14:33:59; 同步车间派工移动端菜单到正式库 */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @ModuleId INT;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE [path] = N'SeikoWorkshop/WorkshopAssignmentMobile';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'SeikoWorkshop/WorkshopAssignmentMobile',
N'/SeikoWorkshop/WorkshopAssignmentMobile',
NULL,
N'WorkshopAssignmentMobile',
N'车间派工移动端',
N'ShopScheduling',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/SeikoWorkshop/WorkshopAssignmentMobile',
redirect = NULL,
name = N'WorkshopAssignmentMobile',
title = N'车间派工移动端',
icon = N'ShopScheduling',
= 0
WHERE id = @ModuleId;
END;
/* 修改人:Ld 修改时间:2026-08-04 14:33:59; 按测试库配置给角色2追加精工车间移动端派工菜单权限 */
IF NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 26
AND = 2
)
BEGIN
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
26,
@ModuleId,
2,
1,
ISNULL(MAX(), 0) + 1
FROM dbo._角色模块信息
WHERE = 2
AND pid = 26;
END
ELSE
BEGIN
UPDATE dbo._角色模块信息
SET = 1
WHERE id = @ModuleId
AND pid = 26
AND = 2;
END;
SELECT @ModuleId AS ID;
SELECT id, [path], component, name, title, icon,
FROM dbo._模块信息
WHERE id = @ModuleId;
SELECT id, pid, , , ,
FROM dbo._角色模块信息
WHERE id = @ModuleId
ORDER BY ;
COMMIT TRAN;

View File

@@ -0,0 +1,107 @@
/* 修改人:Ld 修改时间:2026-07-29 15:27:40; 新增采购合同生成入库单移动端页面测试库菜单 */
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @ModuleId INT;
SELECT @ModuleId = id
FROM dbo._模块信息
WHERE [path] = N'PurchasingManagement/PurchaseInboundCreateMobile';
IF @ModuleId IS NULL
BEGIN
INSERT INTO dbo._模块信息
(
[path],
component,
redirect,
name,
title,
icon,
,
,
,
dashboardIcon,
)
VALUES
(
N'PurchasingManagement/PurchaseInboundCreateMobile',
N'/PurchasingManagement/PurchaseInboundCreateMobile',
NULL,
N'PurchaseInboundCreateMobile',
N'生成入库单(移动端)',
N'PurchasePartsStorage',
NULL,
NULL,
NULL,
NULL,
0
);
SET @ModuleId = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo._模块信息
SET component = N'/PurchasingManagement/PurchaseInboundCreateMobile',
redirect = NULL,
name = N'PurchaseInboundCreateMobile',
title = N'生成入库单(移动端)',
icon = N'PurchasePartsStorage',
= 0
WHERE id = @ModuleId;
END;
/* 修改人:Ld 修改时间:2026-07-29 15:27:40; 给已拥有采购合同查询的采购管理角色追加新菜单权限 */
;WITH RoleList AS
(
SELECT DISTINCT
FROM dbo._角色模块信息
WHERE id = 36
AND pid = 34
AND ISNULL(, 1) = 1
)
INSERT INTO dbo._角色模块信息
(
id,
pid,
,
,
,
)
SELECT
@ModuleId,
34,
@ModuleId,
RoleList.,
1,
ISNULL(RoleOrder.MaxOrder, 0) + 1
FROM RoleList
OUTER APPLY
(
SELECT MAX() AS MaxOrder
FROM dbo._角色模块信息
WHERE = RoleList.
AND pid = 34
) RoleOrder
WHERE NOT EXISTS
(
SELECT 1
FROM dbo._角色模块信息
WHERE id = @ModuleId
AND pid = 34
AND = RoleList.
);
SELECT @ModuleId AS ID;
SELECT *
FROM dbo._模块信息
WHERE id = @ModuleId;
SELECT *
FROM dbo._角色模块信息
WHERE id = @ModuleId
ORDER BY ;
COMMIT TRAN;

View File

@@ -0,0 +1,234 @@
/* 采购合同明细跟随PDM标准外购件源流水号变更测试库
修改人:Ld 修改时间:2026-07-24 10:48:00;
*/
SET NOCOUNT ON;
IF OBJECT_ID(N'dbo.GPT_采购明细PDM跟随变更_待处理', N'U') IS NULL
BEGIN
CREATE TABLE dbo.GPT_采购明细PDM跟随变更_待处理
(
ID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
int NULL,
int NULL,
int NULL,
int NULL,
nvarchar(200) NULL,
int NULL,
int NOT NULL,
int NOT NULL,
int NOT NULL,
int NULL,
int NULL,
int NULL,
int NOT NULL CONSTRAINT DF_GPT_采购明细PDM跟随变更_待处理_处理状态 DEFAULT(0),
nvarchar(400) NULL,
datetime NOT NULL CONSTRAINT DF_GPT_采购明细PDM跟随变更_待处理_创建时间 DEFAULT(GETDATE()),
datetime NULL,
nvarchar(50) NULL,
datetime NULL
);
END;
GO
IF OBJECT_ID(N'dbo.GPT_采购明细PDM跟随变更_执行', N'P') IS NOT NULL
DROP PROCEDURE dbo.GPT_采购明细PDM跟随变更_执行;
GO
CREATE PROCEDURE dbo.GPT_采购明细PDM跟随变更_执行
@ int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ int;
DECLARE @ int;
DECLARE @ int;
SELECT TOP 1
@ = v.,
@ = v.,
@ = c.
FROM dbo.PDM_组件名称 c
LEFT JOIN dbo.PDM_组件名称_视图 v ON v. = c.
WHERE c. = @;
DECLARE @Map TABLE
(
ID int PRIMARY KEY,
int NOT NULL,
int NOT NULL
);
;WITH MatchRows AS
(
SELECT
p.ID,
p.,
n. AS ,
ROW_NUMBER() OVER(PARTITION BY p.ID ORDER BY n.) AS rn
FROM dbo.GPT_采购明细PDM跟随变更_待处理 p
INNER JOIN dbo._采购合同明细 d
ON d. = p.
AND d. = p.
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 n
ON n. = @
AND n. = p.
WHERE p. = 0
AND ISNULL(p., 0) = ISNULL(@, 0)
AND ISNULL(p., 0) = ISNULL(@, 0)
AND ISNULL(p., 0) = ISNULL(@, 0)
AND ISNULL(d., 0) = 0
AND NOT EXISTS (SELECT 1 FROM dbo._外购件_入库记录 r WHERE r. = d.)
AND NOT EXISTS (SELECT 1 FROM dbo._质检记录_主表 q WHERE q. = d. AND ISNULL(q., 0) = 0)
AND NOT EXISTS (SELECT 1 FROM dbo._采购批次 b WHERE b. = d. AND (ISNULL(b., 0) <> 0 OR ISNULL(b., 0) <> 0))
AND NOT EXISTS (SELECT 1 FROM dbo._采购合同明细 d2 WHERE d2. = d. AND d2. = n. AND d2. <> d.)
)
INSERT INTO @Map(ID, , )
SELECT ID, ,
FROM MatchRows
WHERE rn = 1;
-- 采购明细未发生到货、入库、质检时允许跟随到同项目同机床同物料的新PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
UPDATE d
SET d. = m.
FROM dbo._采购合同明细 d
INNER JOIN @Map m ON m. = d.;
UPDATE p
SET p. = @,
p. = m.,
p. = 1,
p. = N'已按同项目同机床同物料自动跟随到新PDM标准外购件流水号',
p. = GETDATE(),
p. = N'Ld',
p. = GETDATE()
FROM dbo.GPT_采购明细PDM跟随变更_待处理 p
INNER JOIN @Map m ON m.ID = p.ID;
END;
GO
DECLARE @def nvarchar(max);
SELECT @def = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_确认更改新'));
IF @def NOT LIKE N'%GPT_采购明细PDM跟随变更_待处理%'
BEGIN
SET @def = REPLACE(@def, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]');
SET @def = REPLACE(@def, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]');
SET @def = REPLACE(@def, N'CREATE PROCEDURE [dbo].[PDM_组件名称_确认更改新]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_确认更改新]');
SET @def = REPLACE(@def,
N' if @产品流水号临时 <> @产品流水号
begin
update dbo.PDM_组件名称 set 修改状态 = 2,是否分配 = 0 where 组件流水号 = @orderN',
N' if @产品流水号临时 <> @产品流水号
begin
-- 记录被产品替换影响且已加入采购合同的PDM标准外购件后续新BOM生成后自动跟随修改人:Ld 修改时间:2026-07-24 10:48:00;
INSERT INTO dbo.GPT_采购明细PDM跟随变更_待处理(项目流水号,订单流水号,机床流水号,旧组件流水号,旧产品名称,采购合同流水号,采购合同明细流水号,旧标准件和外购件流水号,物料流水号,旧零件数量,修改人,修改时间)
SELECT DISTINCT @项目流水号,@订单流水号,@机床流水号,@orderN,@产品名称,d.采购合同流水号,d.采购合同明细流水号,s.标准件和外购件流水号,s.物料流水号,s.零件数量,N''Ld'',GETDATE()
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN dbo.采购管理_采购合同明细 d ON d.标准件和外购件流水号 = s.标准件和外购件流水号
WHERE s.组件流水号 = @orderN
AND NOT EXISTS (SELECT 1 FROM dbo.GPT_采购明细PDM跟随变更_待处理 p WHERE p.处理状态 = 0 AND p.采购合同明细流水号 = d.采购合同明细流水号 AND p.旧标准件和外购件流水号 = s.标准件和外购件流水号);
update dbo.PDM_组件名称 set 修改状态 = 2,是否分配 = 0 where 组件流水号 = @orderN');
SET @def = REPLACE(@def,
N'delete from 车间装配管理_装配任务 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)',
N'-- 记录删除组件影响且已加入采购合同的PDM标准外购件后续新BOM生成后自动跟随修改人:Ld 修改时间:2026-07-24 10:48:00;
insert into dbo.GPT_采购明细PDM跟随变更_待处理(项目流水号,订单流水号,机床流水号,旧组件流水号,旧产品名称,采购合同流水号,采购合同明细流水号,旧标准件和外购件流水号,物料流水号,旧零件数量,修改人,修改时间)
select distinct @项目流水号,@订单流水号,@机床流水号,c.组件流水号,c.产品名称,d.采购合同流水号,d.采购合同明细流水号,s.标准件和外购件流水号,s.物料流水号,s.零件数量,N''Ld'',GETDATE()
from dbo.PDM_组件名称 c
inner join dbo.PDM_零件明细表_标准件和外购件 s on s.组件流水号 = c.组件流水号
inner join dbo.采购管理_采购合同明细 d on d.标准件和外购件流水号 = s.标准件和外购件流水号
where c.组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null)
and c.机床流水号=@机床流水号 and c.是否合同创建 = 1 and c.产品状态 = 0
and not exists (select 1 from dbo.GPT_采购明细PDM跟随变更_待处理 p where p.处理状态 = 0 and p.采购合同明细流水号 = d.采购合同明细流水号 and p.旧标准件和外购件流水号 = s.标准件和外购件流水号);
delete from 车间装配管理_装配任务 where 组件流水号 in (select 组件流水号 from PDM_组件名称 where 组件流水号 not in (select 组件流水号 from PDM_组件名称_修改记录_临时表 where 机床流水号=@机床流水号 and 组件流水号 is not null) and 机床流水号=@机床流水号 and 是否合同创建 = 1 and 产品状态 = 0)');
EXEC(@def);
END;
GO
DECLARE @def2 nvarchar(max);
SELECT @def2 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.技术确认_刷新BOM'));
IF @def2 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def2 = REPLACE(@def2, N'CREATE PROCEDURE [dbo].[技术确认_刷新BOM]', N'ALTER PROCEDURE [dbo].[技术确认_刷新BOM]');
SET @def2 = REPLACE(@def2, N'CREATE PROCEDURE [dbo].[技术确认_刷新BOM]', N'ALTER PROCEDURE [dbo].[技术确认_刷新BOM]');
SET @def2 = @def2 + N'
-- 新BOM标准外购件生成后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def2);
END;
GO
DECLARE @def3 nvarchar(max);
SELECT @def3 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_老组件_增加数据_批量零件'));
IF @def3 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def3 = REPLACE(@def3, N'CREATE PROCEDURE [dbo].[PDM_组件名称_老组件_增加数据_批量零件]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_老组件_增加数据_批量零件]');
SET @def3 = @def3 + N'
-- 批量新增标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def3);
END;
GO
DECLARE @def4 nvarchar(max);
SELECT @def4 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.PDM_组件名称_增加数据_批量零件'));
IF @def4 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def4 = REPLACE(@def4, N'CREATE PROCEDURE [dbo].[PDM_组件名称_增加数据_批量零件]', N'ALTER PROCEDURE [dbo].[PDM_组件名称_增加数据_批量零件]');
SET @def4 = @def4 + N'
-- 新组件批量新增标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def4);
END;
GO
DECLARE @def5 nvarchar(max);
SELECT @def5 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.物料管理_专机_新增物料'));
IF @def5 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def5 = REPLACE(@def5, N'CREATE PROCEDURE [dbo].[物料管理_专机_新增物料]', N'ALTER PROCEDURE [dbo].[物料管理_专机_新增物料]');
SET @def5 = @def5 + N'
-- 专机新增标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
';
EXEC(@def5);
END;
GO
DECLARE @def6 nvarchar(max);
SELECT @def6 = OBJECT_DEFINITION(OBJECT_ID(N'dbo.订单信息_下达订单'));
IF @def6 NOT LIKE N'%GPT_采购明细PDM跟随变更_执行%'
BEGIN
SET @def6 = REPLACE(@def6, N'CREATE PROCEDURE [dbo].[订单信息_下达订单]', N'ALTER PROCEDURE [dbo].[订单信息_下达订单]');
SET @def6 = REPLACE(@def6,
N'insert into PDM_零件明细表_标准件和外购件(组件流水号,物料流水号,零件数量,零件类型,材料流水号)
select @组件流水号,物料流水号,零件数量,零件类型,材料流水号 from 产品信息_外购件_基础表 where 产品流水号=@产品流水号
set @id = @id + 1',
N'insert into PDM_零件明细表_标准件和外购件(组件流水号,物料流水号,零件数量,零件类型,材料流水号)
select @组件流水号,物料流水号,零件数量,零件类型,材料流水号 from 产品信息_外购件_基础表 where 产品流水号=@产品流水号
-- 下达订单生成标准外购件后回填采购合同明细PDM源流水号修改人:Ld 修改时间:2026-07-24 10:48:00;
EXEC dbo.GPT_采购明细PDM跟随变更_执行 @新组件流水号 = @组件流水号
set @id = @id + 1');
EXEC(@def6);
END;
GO