更新设备维修、发货、精工车间工序工价/生产审核/工时统计、仓储盘点/库存查询/库位/入库,新增车间派工移动端及SQL脚本
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user