84 lines
3.5 KiB
Transact-SQL
84 lines
3.5 KiB
Transact-SQL
ALTER PROCEDURE [dbo].[车间生产管理工艺_零件工序_派工]
|
|
|
|
@工序流水号 int = null,
|
|
|
|
@数量 int = null,
|
|
|
|
@人员编号 int = null,
|
|
|
|
@设备流水号 int = null,
|
|
|
|
@调拨员编号 int = null,
|
|
|
|
@计划完成日期 nvarchar(50)=null,
|
|
|
|
@计划开始日期 nvarchar(50)=null
|
|
|
|
AS
|
|
|
|
declare @工序顺序 int
|
|
declare @工艺计划流水号 int
|
|
declare @工艺任务流水号 int
|
|
declare @分配日期 nvarchar(50)
|
|
declare @剩余料数 int
|
|
declare @已领数量 int=0
|
|
|
|
-- 修改人:Ld 修改时间:2026-08-05 09:35:00; 后端兜底校验派工数量,避免空值或非正数落入任务分配表。
|
|
if @数量 is null or @数量 <= 0
|
|
begin
|
|
RAISERROR(N'派工数量不能为空且必须大于0', 16, 1)
|
|
return
|
|
end
|
|
|
|
update 车间生产管理工艺_零件工序 set 已分配数 = ISNULL(已分配数,0) + @数量 where 工序流水号=@工序流水号
|
|
|
|
select @工艺计划流水号=工艺计划流水号,@工序顺序=工序顺序,@剩余料数=ISNULL(剩余料数,0) from 车间生产管理工艺_零件工序 where 工序流水号=@工序流水号
|
|
|
|
select @分配日期 = 分配日期 from 车间生产管理工艺_零件工艺计划 where 工艺计划流水号=@工艺计划流水号
|
|
|
|
if @分配日期 is null
|
|
begin
|
|
update 车间生产管理工艺_零件工艺计划 set 分配日期 = getdate() where 工艺计划流水号=@工艺计划流水号
|
|
end
|
|
|
|
if @人员编号 = 16
|
|
begin
|
|
update 车间生产管理工艺_零件工序 set 工序间是否外协 = 1,外协数量=@数量 where 工序流水号=@工序流水号
|
|
end
|
|
else
|
|
begin
|
|
update 车间生产管理工艺_零件工序 set 工序间是否外协 = 0,外协数量=0 where 工序流水号=@工序流水号
|
|
end
|
|
|
|
if @工序顺序 = 1
|
|
begin
|
|
if @数量 > @剩余料数 and @剩余料数 > 0
|
|
begin
|
|
set @已领数量 = @剩余料数
|
|
update 车间生产管理工艺_零件工序 set 剩余料数=0 where 工序流水号=@工序流水号
|
|
end
|
|
else if @数量 <= @剩余料数 and @剩余料数 > 0
|
|
begin
|
|
set @已领数量 = @数量
|
|
update 车间生产管理工艺_零件工序 set 剩余料数=isnull(剩余料数,0)-@数量 where 工序流水号=@工序流水号
|
|
end
|
|
end
|
|
|
|
if (select COUNT(*) from 车间生产管理工艺_零件工序_任务分配 where 工序流水号=@工序流水号 and 人员编号=@人员编号 and 设备流水号=@设备流水号) = 1
|
|
begin
|
|
-- 修改人:Ld 修改时间:2026-08-05 09:35:00; 累加时对历史空值做默认值处理,避免 NULL + 新数量 仍然为 NULL。
|
|
update 车间生产管理工艺_零件工序_任务分配 set 数量=ISNULL(数量,0)+@数量,分配时间=GETDATE(),已领数量=isnull(已领数量,0)+@已领数量,调拨员编号=@调拨员编号,计划完成日期=@计划完成日期,计划开始日期=@计划开始日期 where 工序流水号=@工序流水号 and 人员编号=@人员编号 and 设备流水号=@设备流水号
|
|
end
|
|
else
|
|
begin
|
|
insert into 车间生产管理工艺_零件工序_任务分配(工序流水号,数量,人员编号,设备流水号,分配时间,已领数量,调拨员编号,计划完成日期,计划开始日期)values(@工序流水号,@数量,@人员编号,@设备流水号,GETDATE(),@已领数量,@调拨员编号,@计划完成日期,@计划开始日期)
|
|
|
|
if @人员编号 <> 16
|
|
begin
|
|
select @工艺任务流水号 = IDENT_CURRENT('车间生产管理工艺_零件工序_任务分配')
|
|
|
|
exec 车间生产管理工艺_零件工序_派工_生产计划_增加 @工艺任务流水号,@数量,@计划完成日期,@计划开始日期
|
|
|
|
end
|
|
end
|