更新设备维修、发货、精工车间工序工价/生产审核/工时统计、仓储盘点/库存查询/库位/入库,新增车间派工移动端及SQL脚本

This commit is contained in:
Developer
2026-07-17 09:49:34 +08:00
parent 9c1f52078d
commit 2b9058c69c
20 changed files with 3326 additions and 343 deletions

View File

@@ -7,7 +7,88 @@ GO
SET QUOTED_IDENTIFIER ON
GO
-- 员工工时汇总增加工价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 完成过程表补充计价字段,工时统计按当次完成记录判断计件或计时;修改人:Ld 修改时间:2026-07-06 15:18:06;
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'计价方式') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] NVARCHAR(20) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_计价方式] DEFAULT (N'计件');
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) 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) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_单时工价] DEFAULT ((0));
GO
-- 旧完成记录默认计件,单件工价按工序工价当前启用价格回填;修改人:Ld 修改时间:2026-07-06 15:18:06;
UPDATE finishData
SET = ISNULL(NULLIF(finishData., N''), N'计件'),
= CASE
WHEN ISNULL(finishData., 0) <> 0 THEN finishData.
ELSE ISNULL(priceData., 0)
END,
= ISNULL(finishData., 0)
FROM [dbo].[_零件工序_工序完成过程情况] finishData
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM [dbo].[_工序工价] price
WHERE price. = finishData.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE finishData. IS NULL
OR finishData. = N''
OR finishData. IS NULL
OR finishData. IS NULL;
GO
-- 工时统计明细视图补充完成过程流水号和计价字段,便于计时单价编辑回写;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER VIEW [dbo].[_零件工序加工时长_视图]
AS
SELECT
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图. AS ,
dbo._零件工序_视图.,
dbo._零件工序_工序完成过程情况. AS ,
dbo._零件工序_工序完成过程情况. AS ,
dbo._零件工序_工序完成过程情况. AS ,
ISNULL(dbo._零件工序_工序完成过程情况., 0) AS ,
dbo._零件工序_视图. AS ,
dbo._零件工序_视图.,
dbo._零件工序_工序完成过程情况.,
CONVERT(VARCHAR(10), dbo._零件工序_视图., 23) AS ,
dbo._设备工位点检表. + N'-' + dbo._零件工序_工序完成过程情况. AS ,
dbo._人员名单. AS ,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_工序完成过程情况.,
dbo._零件工序_工序完成过程情况.,
ISNULL(NULLIF(dbo._零件工序_工序完成过程情况., N''), N'计件') AS ,
ISNULL(dbo._零件工序_工序完成过程情况., 0) AS ,
ISNULL(dbo._零件工序_工序完成过程情况., 0) AS
FROM dbo._零件工序_视图
INNER JOIN dbo._零件工序_工序完成过程情况
ON dbo._零件工序_视图. = dbo._零件工序_工序完成过程情况.
INNER JOIN dbo._设备工位点检表
ON dbo._零件工序_工序完成过程情况. = dbo._设备工位点检表.
INNER JOIN dbo._人员名单
ON dbo._零件工序_工序完成过程情况. = dbo._人员名单.
GO
-- 员工工时汇总增加单价总价,计件按单件工价*数量,计时按单时工价*加工分钟/60修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_工人工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL
@@ -28,16 +109,24 @@ BEGIN
f.,
f.,
f.,
ISNULL(f., 0) * ISNULL(price., 0) AS
CASE
WHEN ISNULL(NULLIF(f., N''), N'计件') = N'计时'
THEN ROUND(ISNULL(f., 0) / 60.0 * ISNULL(f., 0), 4)
ELSE ROUND(ISNULL(f., 0) * CASE WHEN ISNULL(f., 0) <> 0 THEN f. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序_工序完成过程情况 f
INNER JOIN dbo._人员名单 p ON f. = p.
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = f.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = f.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE f. >= @
AND f. <= @
) a
@@ -45,7 +134,7 @@ BEGIN
END
GO
-- 员工工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 员工工时明细返回单价,计时记录允许前端编辑单时工价;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_员工工时统计_详情_查询数据]
@ INT = 62,
@ DATETIME = NULL,
@@ -56,32 +145,43 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT
data.*,
data. / NULLIF(data., 0) AS ,
ISNULL(price., 0) AS ,
ISNULL(data., 0) * ISNULL(price., 0) AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = data.
AND pp. = data.
AND pp. = data.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
WHERE data. = @
AND data. >= @
AND data. < DATEADD(DAY, 1, @)
;WITH PriceData AS (
SELECT
data.*,
data. / NULLIF(data., 0) AS ,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. = @
AND data. >= @
AND data. < DATEADD(DAY, 1, @)
)
SELECT *
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN data. END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN data. END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN data. END DESC;
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO
-- 设备工时汇总增加价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 设备工时汇总增加价总价,计件按单件工价*数量,计时按单时工价*加工分钟/60;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_设备工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL
@@ -99,16 +199,24 @@ BEGIN
ISNULL(f., 0) AS ,
e. + N'-' + f. AS ,
f.,
ISNULL(f., 0) * ISNULL(price., 0) AS
CASE
WHEN ISNULL(NULLIF(f., N''), N'计件') = N'计时'
THEN ROUND(ISNULL(f., 0) / 60.0 * ISNULL(f., 0), 4)
ELSE ROUND(ISNULL(f., 0) * CASE WHEN ISNULL(f., 0) <> 0 THEN f. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序_工序完成过程情况 f
INNER JOIN dbo._设备工位点检表 e ON f. = e.
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = f.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = f.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE f. >= @
AND f. <= @
) a
@@ -116,7 +224,7 @@ BEGIN
END
GO
-- 设备工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 设备工时明细返回单价,计时记录允许前端编辑单时工价;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_设备工时统计_详情_查询数据]
@ NVARCHAR(50) = NULL,
@ DATETIME = NULL,
@@ -127,31 +235,76 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT
data.*,
ISNULL(price., 0) AS ,
ISNULL(data., 0) * ISNULL(price., 0) AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = data.
AND pp. = data.
AND pp. = data.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
WHERE data. = @
AND data. >= @
AND data. <= @
;WITH PriceData AS (
SELECT
data.*,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. = @
AND data. >= @
AND data. <= @
)
SELECT *
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN data. END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN data. END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN data. END DESC;
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO
-- 员工工时导出增加工价总价列,保持与页面明细一致;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 计时记录单时工价编辑保存;修改人:Ld 修改时间:2026-07-06 15:18:06;
IF OBJECT_ID(N'[dbo].[车间生产管理_工时统计_单时工价_修改数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_工时统计_单时工价_修改数据];
GO
CREATE PROCEDURE [dbo].[_工时统计_单时工价_修改数据]
@ NVARCHAR(50) = N'',
@ NVARCHAR(50) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Id INT;
DECLARE @Safe单时工价 DECIMAL(18, 4);
SET @Id = CASE WHEN ISNUMERIC(NULLIF(@, N'')) = 1 THEN CONVERT(INT, @) ELSE NULL END;
SET @Safe单时工价 = CASE WHEN ISNUMERIC(NULLIF(@, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @) ELSE 0 END;
IF @Id IS NULL
BEGIN
SELECT N'0' AS result, N'完成过程流水号不能为空' AS message;
RETURN;
END;
UPDATE [dbo].[_零件工序_工序完成过程情况]
SET = N'计时',
= @Safe单时工价,
= GETDATE()
WHERE = @Id;
SELECT N'1' AS result;
END
GO
-- 员工工时导出增加计价方式、单价和总价列;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_精工车间_员工工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL,
@@ -161,7 +314,9 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT N'库存_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '17' AS tabletype;
-- 修正导出文件名前缀,避免工时统计导出显示库存文件名;修改人:Ld 修改时间:2026-07-17 07:53:49;
-- 后端导出处理器未支持 tabletype=18使用通用导出类型 15 防止返回 NULL修改人:Ld 修改时间:2026-07-17 07:58:30;
SELECT N'员工工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 15 AS ,
@@ -170,10 +325,11 @@ BEGIN
256 * 30 AS ,
256 * 20 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 15 AS M,
256 * 10 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 30 AS ,
256 * 30 AS ,
256 * 10 AS ,
@@ -186,12 +342,14 @@ BEGIN
1 AS ,
0 AS ,
0 AS ,
0 AS ,
-- 修正导出元数据列名需与字段宽度和数据列一致;修改人:Ld 修改时间:2026-07-17 07:53:49;
0 AS ,
1 AS ,
0 AS ,
1 AS ,
1 AS ,
1 AS M,
1 AS ,
1 AS ,
1 AS ,
0 AS ,
0 AS ,
0 AS ,
@@ -199,38 +357,53 @@ BEGIN
0 AS ,
0 AS ;
;WITH PriceData AS (
SELECT
data.*,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. >= @
AND data. <= @
)
SELECT
data.,
data.,
data.,
data. AS ,
data.,
data. AS ,
data. AS M,
data. AS ,
ISNULL(price., 0) AS ,
ISNULL(data., 0) * ISNULL(price., 0) AS ,
data. AS ,
data. AS ,
data.,
data. AS ,
data.,
data.
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = data.
AND pp. = data.
AND pp. = data.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
WHERE data. >= @
AND data. <= @
,
,
,
AS ,
,
AS ,
,
,
,
AS M,
AS ,
AS ,
AS ,
,
AS ,
,
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN data. END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN data. END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN data. END DESC;
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO