Files
JY1.0/sql/工时统计_添加工价总价.sql

237 lines
8.3 KiB
Transact-SQL

USE [ERPTOOL_JY_20250826Back]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- 员工工时汇总增加工价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[车间生产管理_工人工时统计_查询数据]
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(a.工时) AS 加工工时,
SUM(a.完成数量) AS 总数量,
SUM(a.总价) AS 总价,
a.姓名 AS 操作者,
a.操作者编号
FROM (
SELECT
ISNULL(f.扫码工时, 0) AS 工时,
p.姓名,
f.操作者编号,
f.完成日期,
f.完成数量,
ISNULL(f.完成数量, 0) * ISNULL(price.工价, 0) 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
WHERE f.完成日期 >= @开始时间
AND f.完成日期 <= @结束时间
) a
GROUP BY a.姓名, a.操作者编号;
END
GO
-- 员工工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[精工车间_员工工时统计_详情_查询数据]
@操作者编号 INT = 62,
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL,
@排序名称 INT = NULL,
@排序方式 INT = NULL
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, @结束时间)
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;
END
GO
-- 设备工时汇总增加工价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[车间生产管理_设备工时统计_查询数据]
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT
SUM(a.工时) AS 加工工时,
a.工位号 AS 设备,
SUM(a.完成数量) AS 总数量,
SUM(a.总价) AS 总价
FROM (
SELECT
ISNULL(f.扫码工时, 0) AS 工时,
e.设备名称 + N'-' + f.工位号 AS 工位号,
f.完成数量,
ISNULL(f.完成数量, 0) * ISNULL(price.工价, 0) 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
WHERE f.完成日期 >= @开始时间
AND f.完成日期 <= @结束时间
) a
GROUP BY a.工位号;
END
GO
-- 设备工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[精工车间_设备工时统计_详情_查询数据]
@设备 NVARCHAR(50) = NULL,
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL,
@排序名称 INT = NULL,
@排序方式 INT = NULL
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.结束加工 <= @结束时间
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;
END
GO
-- 员工工时导出增加工价总价列,保持与页面明细一致;修改人:Ld 修改时间:2026-07-06 09:12:38;
ALTER PROCEDURE [dbo].[报表_精工车间_员工工时统计_查询数据]
@开始时间 DATETIME = NULL,
@结束时间 DATETIME = NULL,
@排序名称 INT = NULL,
@排序方式 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT N'库存_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '17' AS tabletype;
SELECT
256 * 15 AS 工序,
256 * 10 AS 工序顺序,
256 * 30 AS 零件名称,
256 * 30 AS 零件图号,
256 * 20 AS 物料编码,
256 * 10 AS 加工数,
256 * 15 AS 加工工时M,
256 * 10 AS 暂停时长,
256 * 10 AS 工价,
256 * 12 AS 总价,
256 * 30 AS 开始加工时间,
256 * 30 AS 完成时间,
256 * 10 AS 操作者,
256 * 25 AS 设备,
246 * 25 AS 订单编号,
246 * 25 AS 产品名称;
SELECT
0 AS 工序,
1 AS 工序顺序,
0 AS 零件名称,
0 AS 零件图号,
0 AS 物料编号,
1 AS 加工数,
1 AS 加工工时M,
1 AS 暂停时长,
1 AS 工价,
1 AS 总价,
0 AS 开始加工时间,
0 AS 完成时间,
0 AS 操作者,
0 AS 设备,
0 AS 订单编号,
0 AS 产品名称;
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.结束加工 <= @结束时间
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;
END
GO