更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本
This commit is contained in:
5
sql/PDM_组件名称_确认更改新_ERPTOOL_JY_before_20260724.sql
Normal file
5
sql/PDM_组件名称_确认更改新_ERPTOOL_JY_before_20260724.sql
Normal 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..
|
||||
97
sql/PDM_组件名称_确认更改新_ERPTOOL_JY_deploy_20260724.sql
Normal file
97
sql/PDM_组件名称_确认更改新_ERPTOOL_JY_deploy_20260724.sql
Normal 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
|
||||
97
sql/PDM_组件名称_确认更改新_测试库_删除机床加固.sql
Normal file
97
sql/PDM_组件名称_确认更改新_测试库_删除机床加固.sql
Normal 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
|
||||
102
sql/apply_PDM_confirm_test_patch.ps1
Normal file
102
sql/apply_PDM_confirm_test_patch.ps1
Normal 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()
|
||||
}
|
||||
29
sql/contract_search_edit_commission_type_20260731.sql
Normal file
29
sql/contract_search_edit_commission_type_20260731.sql
Normal 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
|
||||
189
sql/insert_sales_performance_test_data_20260728.sql
Normal file
189
sql/insert_sales_performance_test_data_20260728.sql
Normal 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;
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
57
sql/order_inquiry_add_contract_no_test_20260803.sql
Normal file
57
sql/order_inquiry_add_contract_no_test_20260803.sql
Normal 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
|
||||
217
sql/production_plan_add_contract_no_test_20260804.sql
Normal file
217
sql/production_plan_add_contract_no_test_20260804.sql
Normal 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
|
||||
56
sql/repair_JY_FA_830_14_01_reopen.sql
Normal file
56
sql/repair_JY_FA_830_14_01_reopen.sql
Normal 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'';
|
||||
116
sql/repair_WX_20260730001_002.sql
Normal file
116
sql/repair_WX_20260730001_002.sql
Normal 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 工艺任务流水号;
|
||||
229
sql/replenishment_contract_link_test_20260803.sql
Normal file
229
sql/replenishment_contract_link_test_20260803.sql
Normal 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
|
||||
|
||||
456
sql/sales_performance_commission_test_20260727.sql
Normal file
456
sql/sales_performance_commission_test_20260727.sql
Normal 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
|
||||
243
sql/sales_performance_full_flow_verify_cleanup_20260730.sql
Normal file
243
sql/sales_performance_full_flow_verify_cleanup_20260730.sql
Normal 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;
|
||||
129
sql/仓储管理_库存查询_采购中排除已入库.sql
Normal file
129
sql/仓储管理_库存查询_采购中排除已入库.sql
Normal 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-29改动备注:isnull(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
|
||||
354
sql/工序工价_字段公式_正式库_20260804.sql
Normal file
354
sql/工序工价_字段公式_正式库_20260804.sql
Normal 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
|
||||
350
sql/工序工价_字段公式_测试库_20260804.sql
Normal file
350
sql/工序工价_字段公式_测试库_20260804.sql
Normal 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+D,I=F*3600/E,J=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
|
||||
@@ -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'工序工价拷贝'
|
||||
|
||||
1148
sql/工序工价_存储过程_正式库_20260731.sql
Normal file
1148
sql/工序工价_存储过程_正式库_20260731.sql
Normal file
File diff suppressed because it is too large
Load Diff
170
sql/工序工价_导出与总时间_正式库_20260803.sql
Normal file
170
sql/工序工价_导出与总时间_正式库_20260803.sql
Normal 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
|
||||
138
sql/工序工价_导出功能_测试库_20260803.sql
Normal file
138
sql/工序工价_导出功能_测试库_20260803.sql
Normal 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
|
||||
345
sql/工序工价_自动化拷贝_正式库_20260804.sql
Normal file
345
sql/工序工价_自动化拷贝_正式库_20260804.sql
Normal 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
|
||||
345
sql/工序工价_自动化拷贝_测试库_20260804.sql
Normal file
345
sql/工序工价_自动化拷贝_测试库_20260804.sql
Normal 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
|
||||
186
sql/库存查询_2026年前未完成订单需求明细.sql
Normal file
186
sql/库存查询_2026年前未完成订单需求明细.sql
Normal 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, 订单编号, 零件名称, 图号;
|
||||
143
sql/库存查询_需求量与明细一致性排查.sql
Normal file
143
sql/库存查询_需求量与明细一致性排查.sql
Normal 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);
|
||||
105
sql/库房管理_库位_分页查询_测试库_20260731.sql
Normal file
105
sql/库房管理_库位_分页查询_测试库_20260731.sql
Normal 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
|
||||
98
sql/库房管理_库位归类规则_测试库_20260731.sql
Normal file
98
sql/库房管理_库位归类规则_测试库_20260731.sql
Normal 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
|
||||
40
sql/库房管理_库位找物料_查询数据_测试库_20260731.sql
Normal file
40
sql/库房管理_库位找物料_查询数据_测试库_20260731.sql
Normal 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
|
||||
110
sql/库房管理_测试库菜单_20260730.sql
Normal file
110
sql/库房管理_测试库菜单_20260730.sql
Normal 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;
|
||||
117
sql/库房管理_物料库位_分页查询_测试库_20260731.sql
Normal file
117
sql/库房管理_物料库位_分页查询_测试库_20260731.sql
Normal 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
|
||||
818
sql/库房管理_隔离实施_测试库_20260730.sql
Normal file
818
sql/库房管理_隔离实施_测试库_20260730.sql
Normal 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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
116
sql/物料标准维护_查看禁用物料_测试库_20260803.sql
Normal file
116
sql/物料标准维护_查看禁用物料_测试库_20260803.sql
Normal 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
|
||||
211
sql/物料标准维护_禁用物料功能_正式库_20260804.sql
Normal file
211
sql/物料标准维护_禁用物料功能_正式库_20260804.sql
Normal 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
|
||||
52
sql/物料标准维护_禁用物料启用删除_测试库_20260803.sql
Normal file
52
sql/物料标准维护_禁用物料启用删除_测试库_20260803.sql
Normal 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
|
||||
47
sql/物料标准维护_禁用物料物理删除_测试库_20260803.sql
Normal file
47
sql/物料标准维护_禁用物料物理删除_测试库_20260803.sql
Normal 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
|
||||
185
sql/生产审核_操作者人名查询修复.sql
Normal file
185
sql/生产审核_操作者人名查询修复.sql
Normal 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
|
||||
@@ -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)
|
||||
|
||||
105
sql/车间派工移动端菜单_正式库_20260804.sql
Normal file
105
sql/车间派工移动端菜单_正式库_20260804.sql
Normal 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;
|
||||
107
sql/采购合同生成入库单移动端菜单_测试库_20260729.sql
Normal file
107
sql/采购合同生成入库单移动端菜单_测试库_20260729.sql
Normal 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;
|
||||
234
sql/采购明细_PDM源跟随变更_测试库.sql
Normal file
234
sql/采购明细_PDM源跟随变更_测试库.sql
Normal 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
|
||||
Reference in New Issue
Block a user