您的位置:首页 > 其它

处理异常刷卡记录存储过程

2016-04-12 14:39 183 查看
USE [ChiefmesNEW]
GO
/****** Object: StoredProcedure [dbo].[st_Alarm_DealStatStopCard] Script Date: 04/12/2016 10:36:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********************
Create By: Wuchun
Create Date: 2013-08-21
Module: Alarm
Remark: 处理异常刷卡记录统计表
********************/
ALTER procEDURE [dbo].[st_Alarm_DealStatStopCard]
as
--drop table #t_DealStopCard
declare @BCCode varchar(10)
select @BCCode = dbo.[Fn_GetBCCode]()

select distinct Seq = identity(int),
a.AlarmBillNO,
a.AlarmSetNO,a.AlarmCode,
a.AlarmLevel,a.DispatchNO,a.MachineNO,
a.LastDealTime,a.BCCode,a.UnitTime,
a.MouldNO,a.MO,a.DispatchPrior
into #t_DealStopCard
from MES_AlarmBill a
join dbo.MES_AlarmStopCard s
on a.AlarmCode = s.AlarmCode
where (a.BCCode = 'All' or charindex(a.BCCode,@BCCode)>0)
and a.DealFlag = 0
--and a.AlarmCode='StopMaintain' and a.MachineNo='TS-217'

if @@rowCount = 0 return

select * from #t_DealStopCard

--处理异常
declare @DispatchNO varchar(50), @MachineNo varchar(50), @AlarmLevel varchar(50), @MO varchar(50), @DispatchPrior float
declare @AlarmBillNo varchar(100), @AlarmSetNo varchar(100), @AlarmCode varchar(50), @MouldNO varchar(50)
declare @LastDealTime datetime , @UnitTime int, @CmpMinutes int , @SmsContent varchar(8000), @i int , @icount int
declare @UnitTimePre varchar(100), @unitTimeSuf varchar(100) , @AlarmRdNO varchar(100), @StopBeginTime datetime, @MapID int
declare @OtherDesc varchar(1000) --附加的提示信息
select @CmpMinutes = 0, @i = 1
select @iCount = count(*) from #t_DealStopCard

while(@i<=@iCount)
begin
select @AlarmBillNo = AlarmBillNo,
@AlarmSetNo = AlarmSetNo,
@AlarmCode = AlarmCode,
@MO = MO,
@DispatchPrior = DispatchPrior,
@AlarmLevel = AlarmLevel, @DispatchNo = DispatchNo,
@MachineNO = MachineNO, @LastDealTime = LastDealTime,
@UnitTime = UnitTime, @CmpMinutes = 0,
@BCCode = BCCode, @MouldNO = MouldNO,
@OtherDesc = ''
from #t_DealStopCard
where Seq =@i

if(@AlarmCode = 'StopMouldErr')
begin
declare @MouldName nvarchar(100)
select top 1 @MouldName=MouldName from MES_MouldDetail where MouldNO=@MouldNO
select @OtherDesc = '(模具:'+@MouldNO+': '+@MouldName+')'
end

select @CmpMinutes = AlarmMinutes,
@StopBeginTime = BeginTime,
@MapID = MapID

from MES_AlarmTimeStat
where AlarmCode = @AlarmCode and
DispatchNo = @DispatchNo and
DispatchPrior = @DispatchPrior and
MachineNo = @MachineNo and
AlarmSetNO = replace(@AlarmSetNo, @AlarmLevel,'') and
(
(@AlarmLevel = 'Lvl1' and UserFlagLvl1= 0) or
(@AlarmLevel = 'Lvl2' and UserFlagLvl2= 0) or
(@AlarmLevel = 'Lvl3' and UserFlagLvl3= 0) or
(@AlarmLevel = 'Lvl4' and UserFlagLvl4= 0)
) and
EndTime is null

--select @AlarmCode as '1'
-- select @DispatchNo as '2'
-- select @DispatchPrior as '3'
-- select @MachineNo as '4'
-- select @AlarmSetNo as '5'
-- select @AlarmLevel as '6'

--Add by zhuss 2014-09-16 机器故障、辐射故障、模具故障第一层不在这里报警、报障时报警
---增加控制差异20分钟内允许产生报警
--select @CmpMinutes as 'CmpMinutes'
--select @UnitTime as 'UnitTime'
if
(
(@AlarmCode<>'StopMachineErr' or @AlarmLevel<>'Lvl1') and

(@AlarmCode<>'StopDeviceErr' or @AlarmLevel<>'Lvl1') and
(@AlarmCode<>'StopMouldErr' or @AlarmLevel<>'Lvl1')
)

begin
if (@CmpMinutes>@UnitTime and
--9>2
(@CmpMinutes-@UnitTime)<20
--and
-- (
-- (@AlarmCode<>'StopMachineErr' and @AlarmLevel<>'Lvl1') and
-- (@AlarmCode<>'StopDeviceErr' and @AlarmLevel<>'Lvl1') and
-- (@AlarmCode<>'StopMouldErr' and @AlarmLevel<>'Lvl1')
-- )
)
begin
select @UnitTimePre = UnitTimePre, @unitTimeSuf = unitTimeSuf
from V_AlarmTypeSet where AlarmCode = @AlarmCode
select @SmsContent = '机台'+@MachineNO+@OtherDesc+@UnitTimePre+rtrim(dbo.Fn_GetMinuteToHour(@CmpMinutes))
select @AlarmRdNO = @AlarmBillNo +right(convert(char(16),getdate(),120),5)

insert into MES_AlarmRdLog(AlarmRdNO, AlarmBillNo, AlarmSetNo,
AlarmCode, MO, DispatchNo, DispatchPrior,
MachineNo, SmsContent, CreateDate,Flag,
BCCode,AlarmLevel)
select @AlarmRdNO, @AlarmBillNO, @AlarmSetNo,
@AlarmCode, @MO, @DispatchNo, @DispatchPrior,
@MachineNO, @SmsContent, getdate(), 0,
@BCCode,@AlarmLevel

update MES_AlarmTimeStat set
AlarmBillNo = @AlarmBillNo
, BillTimeBegin = @LastDealTime
, BillTimeEnd = getdate()
, AlarmRdNO = @AlarmRdNO
, UserFlagLvl1 = case when @AlarmLevel = 'Lvl1' then 1 else UserFlagLvl1 end
, UserFlagLvl2 = case when @AlarmLevel = 'Lvl2' then 1 else UserFlagLvl2 end
, UserFlagLvl3 = case when @AlarmLevel = 'Lvl3' then 1 else UserFlagLvl3 end
, UserFlagLvl4 = case when @AlarmLevel = 'Lvl4' then 1 else UserFlagLvl4 end
, FlagUpdateTimeLvl1 = case when @AlarmLevel = 'Lvl1' then getdate() else FlagUpdateTimeLvl1 end
, FlagUpdateTimeLvl2 = case when @AlarmLevel = 'Lvl2' then getdate() else FlagUpdateTimeLvl2 end
, FlagUpdateTimeLvl3 = case when @AlarmLevel = 'Lvl3' then getdate() else FlagUpdateTimeLvl3 end
, FlagUpdateTimeLvl4 = case when @AlarmLevel = 'Lvl4' then getdate() else FlagUpdateTimeLvl4 end
where AlarmCode = @AlarmCode
and DispatchNo = @DispatchNo
and DispatchPrior = @DispatchPrior
and MachineNo = @MachineNo
and AlarmSetNO = replace(@AlarmSetNo, @AlarmLevel,'')
and MapID = @MapID

end

end

set @i = @i+1
end

--更新上次处理时间
update a set LastDealTime = GETDATE(),
NextDealTime = case when isnull(datediff(minute,a.NextDealTime,GETDATE()),0)>5
then DATEADD(minute,a.UnitTime,GETDATE())
else NextDealTime end
from MES_AlarmBill a
join #t_DealStopCard t on
a.AlarmBillNo = t.AlarmBillNo and
a.AlarmSetNo = t.AlarmSetNo and
a.MachineNo = t.MachineNo

drop table #t_DealStopCard
---------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: