更新工序工价、库存查询、库位、领料、出库明细、入库等仓储模块,新增采购合同入库单移动端设计及SQL脚本

This commit is contained in:
Developer
2026-07-23 08:45:50 +08:00
parent 2b9058c69c
commit 33549c3787
17 changed files with 1124 additions and 46 deletions

View File

@@ -0,0 +1,139 @@
ALTER PROCEDURE [dbo].[车间生产管理工艺_零件工序_取消派工]
@工艺任务流水号 INT = NULL,
@工序流水号 INT = NULL,
@数量 INT = NULL,
@退货人 INT = NULL,
@订单流水号 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @工艺计划流水号 INT;
DECLARE @任务数量 FLOAT;
DECLARE @加工数量 INT;
DECLARE @是否加工中 INT;
DECLARE @工序顺序 INT;
DECLARE @图号 NVARCHAR(50);
DECLARE @物料名称 NVARCHAR(50);
DECLARE @物料流水号 INT;
DECLARE @出库记录流水号 INT;
DECLARE @匹配出库记录数 INT;
DECLARE @n INT = 0;
BEGIN TRY
BEGIN TRANSACTION;
SELECT
@任务数量 = 数量,
@加工数量 = ISNULL(加工数量, 0),
@是否加工中 = ISNULL(是否加工中, 0)
FROM dbo.车间生产管理工艺_零件工序_任务分配 WITH (UPDLOCK, HOLDLOCK)
WHERE 工艺任务流水号 = @工艺任务流水号
AND 工序流水号 = @工序流水号;
IF @任务数量 IS NULL
BEGIN
RAISERROR(N'派工任务不存在或已取消', 16, 1);
END;
IF @加工数量 > 0 OR @是否加工中 > 0
BEGIN
RAISERROR(N'零件已加工或加工中,不能取消派工', 16, 1);
END;
IF ISNULL(@任务数量, 0) <= 0
BEGIN
RAISERROR(N'派工数量异常,不能取消派工', 16, 1);
END;
SELECT
@工艺计划流水号 = 工艺计划流水号,
@工序顺序 = 工序顺序
FROM dbo.车间生产管理工艺_零件工序
WHERE 工序流水号 = @工序流水号;
IF @工序顺序 = 1
BEGIN
SELECT
@图号 = RTRIM(LTRIM(零件图号)) + N'MP',
@物料名称 = 零件名称 + N'MP'
FROM dbo.车间生产管理_零件工艺计划_视图
WHERE 工艺计划流水号 = @工艺计划流水号;
SELECT @物料流水号 = 物料流水号
FROM dbo.库存管理_物料主文件_基本
WHERE RTRIM(LTRIM(代号)) = @图号
AND RTRIM(LTRIM(名称)) = @物料名称
AND ISNULL(是否禁用, 0) = 0;
IF @物料流水号 IS NOT NULL
BEGIN
SELECT
@匹配出库记录数 = COUNT(*),
@出库记录流水号 = MAX(出库记录流水号)
FROM dbo.库存管理_物料出库_出库记录 WITH (UPDLOCK, HOLDLOCK)
WHERE 物料流水号 = @物料流水号
AND 订单流水号 = @订单流水号
AND ISNULL(出库数量, 0) - ISNULL(退料数量, 0) >= @任务数量;
IF ISNULL(@匹配出库记录数, 0) > 1
BEGIN
RAISERROR(N'同一订单同一毛坯存在多条可退出库记录,请先人工确认出库记录', 16, 1);
END;
IF ISNULL(@匹配出库记录数, 0) = 1
BEGIN
EXEC dbo.仓储管理_退料入库_执行
@出库记录流水号 = @出库记录流水号,
@退料数量 = @任务数量,
@退料人 = @退货人;
END;
END;
END;
UPDATE dbo.车间生产管理工艺_零件工序
SET 已分配数 = ISNULL(已分配数, 0) - @任务数量
WHERE 工序流水号 = @工序流水号
AND ISNULL(已分配数, 0) >= @任务数量;
IF @@ROWCOUNT = 0
BEGIN
RAISERROR(N'工序已分配数不足,取消派工失败', 16, 1);
END;
DELETE FROM dbo.车间生产管理工艺_零件工序_任务分配
WHERE 工艺任务流水号 = @工艺任务流水号
AND 工序流水号 = @工序流水号;
IF @@ROWCOUNT = 0
BEGIN
RAISERROR(N'派工任务删除失败', 16, 1);
END;
SELECT @n = COUNT(*)
FROM dbo.车间生产管理工艺_零件工序_任务分配
WHERE 工序流水号 IN
(
SELECT 工序流水号
FROM dbo.车间生产管理工艺_零件工序
WHERE 工艺计划流水号 = @工艺计划流水号
);
IF @n = 0
BEGIN
UPDATE dbo.车间生产管理工艺_零件工艺计划
SET 分配日期 = NULL
WHERE 工艺计划流水号 = @工艺计划流水号;
END;
COMMIT TRANSACTION;
SELECT '1' AS result;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH;
END;

View File

@@ -0,0 +1,73 @@
CREATE PROCEDURE [dbo].[车间生产管理工艺_零件工序_取消派工]
@工艺任务流水号 int = null,
@工序流水号 int = null,
@数量 int = null,
@退货人 int =null,
@订单流水号 int = null
AS
declare @工艺计划流水号 int
declare @n int = 0
declare @图号 nvarchar(50)
declare @物料名称 nvarchar(50)
declare @出库记录流水号 int
select @工艺计划流水号=工艺计划流水号 from 车间生产管理工艺_零件工序 where 工序流水号=@工序流水号
select @图号=零件图号+'MP',@物料名称 = 零件名称+'MP' from 车间生产管理_零件工艺计划_视图 where 工艺计划流水号 = @工艺计划流水号
select @出库记录流水号 = 出库记录流水号 from 仓储管理_出库记录_视图 where 图号或型号 = @图号 AND 物料名称 = @物料名称 AND 订单流水号 = @订单流水号
if(@出库记录流水号>0)
begin
EXEC 仓储管理_退料入库_执行 @出库记录流水号,@数量,@退货人
end
update 车间生产管理工艺_零件工序 set 已分配数 = ISNULL(已分配数,0) - @数量 where 工序流水号=@工序流水号
delete from 车间生产管理工艺_零件工序_任务分配 where 工艺任务流水号=@工艺任务流水号
select @n=count(*) from 车间生产管理工艺_零件工序_任务分配 where 工序流水号 in (select 工序流水号 from 车间生产管理工艺_零件工序 where 工艺计划流水号=@工艺计划流水号)
if @n = 0
begin
update 车间生产管理工艺_零件工艺计划 set 分配日期 = NULL where 工艺计划流水号=@工艺计划流水号
end

View File

@@ -0,0 +1,146 @@
CREATE PROCEDURE [dbo].[车间生产管理工艺_零件工序_取消派工]
@工艺任务流水号 INT = NULL,
@工序流水号 INT = NULL,
@数量 INT = NULL,
@退货人 INT = NULL,
@订单流水号 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @工艺计划流水号 INT;
DECLARE @任务数量 FLO
AT;
DECLARE @加工数量 INT;
DECLARE @是否加工中 INT;
DECLARE @图号 NVARCHAR(50);
DECLARE @物料名称 NVARCHAR(50);
DECLARE @物料流水号 INT;
DECLARE @出库记录流水号 INT;
DECLARE @匹配出库记录数 INT;
DECLARE @n INT = 0;
BEGIN TRY
BEGIN TRANSACTION;
SELECT
@任务数量 = 数量,
@加工数量 = ISNULL(加工数量, 0),
@是否加工中 = ISNULL(是否加工中, 0)
FROM dbo.车间生产管理工艺_零件工序_任务分配 WITH (UPDLOCK, HOLDLOCK)
WHERE 工艺任务流水号 = @工艺任务流水号
AND 工序流水号 = @工序流水号;
IF @任务数
量 IS NULL
BEGIN
RAISERROR(N'派工任务不存在或已取消', 16, 1);
END;
IF @加工数量 > 0 OR @是否加工中 > 0
BEGIN
RAISERROR(N'零件已加工或加工中,不能取消派工', 16, 1);
END;
IF ISNULL(@任务数量, 0) <= 0
BEGIN
RAISERROR(N'派工数量异常,不能取消派工', 16, 1);
END;
SELECT @工艺计划流水号 = 工艺计划流水号
FROM dbo.车间生产管理工艺_零件工序
WHERE 工序流水号 = @工序流水号;
SELECT
@图号 = RTRIM(LTRIM(零件图号)) + N'MP',
@物料名称 = 零件名称 + N'MP'
FROM
dbo.车间生产管理_零件工艺计划_视图
WHERE 工艺计划流水号 = @工艺计划流水号;
SELECT @物料流水号 = 物料流水号
FROM dbo.库存管理_物料主文件_基本
WHERE RTRIM(LTRIM(代号)) = @图号
AND RTRIM(LTRIM(名称)) = @物料名称
AND ISNULL(是否禁用, 0) = 0;
IF @物料流水号 IS NOT N
ULL
BEGIN
SELECT
@匹配出库记录数 = COUNT(*),
@出库记录流水号 = MAX(出库记录流水号)
FROM dbo.库存管理_物料出库_出库记录 WITH (UPDLOCK, HOLDLOCK)
WHERE 物料流水号 = @物料流水号
AND 订单流水号 = @订单流水号
AND ISNULL(出库数量, 0) - ISNULL(退料数量, 0) >= @任务数量;
IF ISNULL(@匹配出库记录数, 0) > 1
BEGIN
RAISERROR(N'同一订单同一毛坯存在多条可退出库记录,请先人工确认出库记录', 16, 1);
END;
IF ISNULL(@匹配出库记录数, 0) = 1
BEGIN
EXEC dbo.仓储管理_退料入库_执行
@出库记录流水号 = @出库记录流水号,
@退料数量 = @任务数量,
@退料人 = @退货人;
END;
END;
UPDATE dbo.车间生产管理工艺_零件工序
SET 已分配数 = ISNULL(已分配数, 0) - @任务数量
WHERE 工序流水号 = @工序流水号
AND ISNULL(已分配数, 0) >= @任务数量;
IF @@ROWCOUNT = 0
BEGIN
RAISERROR(N'工序已分配数不足,取消派工失败', 16, 1);
END;
DELETE FROM dbo.车间生产管理工艺_零件工序_任务分配
WHERE 工艺任务流水号 = @工艺任务流水号
AN
D 工序流水号 = @工序流水号;
IF @@ROWCOUNT = 0
BEGIN
RAISERROR(N'派工任务删除失败', 16, 1);
END;
SELECT @n = COUNT(*)
FROM dbo.车间生产管理工艺_零件工序_任务分配
WHERE 工序流水号 IN
(
SELECT 工序流水号
FROM
dbo.车间生产管理工艺_零件工序
WHERE 工艺计划流水号 = @工艺计划流水号
);
IF @n = 0
BEGIN
UPDATE dbo.车间生产管理工艺_零件工艺计划
SET 分配日期 = NULL
WHERE 工艺计划流水号 = @工艺计划流水号;
END;
COMMIT TRANSACTION;
SELECT '1' AS result;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH;
END;