st_Alarm_GenAlarmDealTime
USE [ChiefmesNew]
GO
/****** Object: StoredProcedure [dbo].[st_Alarm_GenAlarmDealTime] Script Date: 04/05/2016 09:42:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/********************
Create By: Wuchun
Create Date: 2013-08-20
Module: Alarm
Remark: 产生报警派工单的台帐处理时间
update by WUchun on 2013-11-15 增加按班次计算时段逻辑
exec [st_Alarm_GenAlarmDealTime]
truncate table MES_AlarmBillDealTime
select * from MES_AlarmBillDealTime
********************/
ALTER proc [dbo].[st_Alarm_GenAlarmDealTime]
as
declare @rBCCode varchar(10)
select @rBCCode = dbo.[Fn_GetBCCode]()
select distinct Seq = identity(int), AlarmBillNO, AlarmCode, AlarmSetNO, MO, DispatchNO, DispatchPrior, MachineNO, BeginTime,
UnitTime, CalTimesByBC , BCCode
into #AlarmBillTime
from MES_AlarmBill
where DealFlag = 0 and AlarmCode in(select AlarmCode from MES_AlarmTypeSet where TimesShow =1)
and (BCCode = 'All' or charindex(BCCode, @rBCCode)>0)
and UnitTime>0 and datediff(minute,getdate(),NextDealTime)<0
declare @icount int, @i int , @UnitTime float , @MO varchar(50), @DispatchPrior float, @CalTimesByBC bit
declare @AlarmBillNO varchar(100), @AlarmCode varchar(100), @AlarmSetNo varchar(100), @NextDealTime datetime
declare @DispatchNO varchar(100), @MachineNO varchar(100), @BeginTime datetime , @LastDealTime datetime, @BCCode varchar(50)
declare @BCBeginTime datetime , @BCEndTime datetime
select @i= 1
select @icount = COUNT(*) from #AlarmBillTime
while(@i<=@icount)
begin
select @AlarmBillNO = AlarmBillNO, @AlarmCode = AlarmCode, @MO = MO,
@AlarmSetNo = AlarmSetNo, @DispatchNO = DispatchNO, @DispatchPrior = DispatchPrior, @MachineNO = MachineNO
, @BeginTime = BeginTime, @LastDealTime = null, @UnitTime = UnitTime, @CalTimesByBC = CalTimesByBC, @BCCode = BCCode
from #AlarmBillTime
where Seq = @i
--存在符合要求的触发条件则忽略
if(exists(select top 1 * from MES_AlarmBillDealTime
where AlarmbillNO =@AlarmBillNO and AlarmSetNo= @AlarmSetNo
and GETDATE() between DealBegin and DealEnd)
)
begin
set @i = @i+1
continue
end
else
begin
select @BCBeginTime = null, @BCEndTime = null
if(@CalTimesByBC = 1)
begin
if(@BCCode = 'All')
set @BCCode =''
--以班次开始时间计算时段时间
set @BCBeginTime = convert(datetime,dbo.Fn_GetBCBeginTime(@BCCode))
set @BCEndTime = convert(datetime, dbo.Fn_GetBCEndTime(@BCCode))
select @LastDealTime = max(DealEnd)
from MES_AlarmBillDealTime
where AlarmbillNO =@AlarmBillNO and AlarmSetNo= @AlarmSetNo
--大于班次时间则跳过
if(@LastDealTime>@BCEndTime)
begin
set @i = @i+1
continue
end
--小于班次时间则取班次开始时间
if(@LastDealTime<@BCBeginTime or @LastDealTime is null)
set @LastDealTime = @BCBeginTime
end
else
begin
--按派工单开始时间计算时段
select @LastDealTime = max(DealEnd)
from MES_AlarmBillDealTime
where AlarmbillNO =@AlarmBillNO and AlarmSetNo= @AlarmSetNo
if(@LastDealTime is null)
set @LastDealTime = @BeginTime
end
set @NextDealTime = DATEADD(minute, @UnitTime*60, @LastDealTime)
while(getdate()>@NextDealTime)
begin
if(DATEDIFF(HOUR, @NextDealTime, GETDATE())<2*@UnitTime)
begin
insert into MES_AlarmBillDealTime(AlarmBillNo, AlarmCode, AlarmSetNo, MO, DispatchNo, DispatchPrior, MachineNO,
DealBegin, DealEnd, DealFlag, BeginTime, UnitTime, CreateTime)
select @AlarmBillNO, @AlarmCode, @AlarmSetNo, @MO, @DispatchNo, @DispatchPrior, @MachineNO,
dateadd(second,1,@LastDealTime), @NextDealTime, 0, @BeginTime, @UnitTime, GETDATE()
end
set @LastDealTime = @NextDealTime
set @NextDealTime = DATEADD(minute, @UnitTime*60, @LastDealTime)
end
insert into MES_AlarmBillDealTime(AlarmBillNo, AlarmCode, AlarmSetNo, MO, DispatchNo, DispatchPrior, MachineNO,
DealBegin, DealEnd, DealFlag, BeginTime, UnitTime, CreateTime)
select @AlarmBillNO, @AlarmCode, @AlarmSetNo, @MO, @DispatchNo, @DispatchPrior, @MachineNO,
dateadd(second,1,@LastDealTime), @NextDealTime, 0, @BeginTime, @UnitTime, GETDATE()
update MES_AlarmBill set NextDealTime = @NextDealTime where AlarmBillNO = @AlarmBillNO and BCCode = @BCCode
end
set @i = @i+1
end
delete from MES_AlarmBillDealTime where DealEnd is null
delete from MES_AlarmBillDealTime where CreateTime<dateadd(day,-1,getdate())
drop table #AlarmBillTime
/****** Object: StoredProcedure [dbo].[st_MES_GenStatStopCard] Script Date: 10/17/2013 09:54:34 ******/
SET ANSI_NULLS ON
---------------------------------------------------------------------------------------------------------
select top 100 * from MES_AlarmBill order by CreateDate desc
select top 100 * from MES_AlarmBillDealTime
st_Alarm_GenAlarmDealTime的更多相关文章
随机推荐
- Java Servlet与Applet、CGI、JSP的比较
Java Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面. Java Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启 ...
- Java EE (14) -- SSH配置
整合Spring与Struts1的三种方法总结 无论用那种方法来整合,第一步都是要装载spring的应用环境,有三种方式: #1. struts-config.xml <?xml version ...
- 推荐 15 个 Angular.js 应用扩展指令(参考应用)
几天前我们看到Angular 1.4.0发布了-一个以社团为驱动的发布版本涵盖了400多个GitHub的提交,增加了对特性的提升,比如动画,以及可用性. 官方新闻发布稿 覆盖了绝大部分,这同样值得放于 ...
- 【C#学习笔记】写文件
using System; using System.IO; namespace ConsoleApplication { class Program { static void Main(strin ...
- poj 3260 The Fewest Coins
// 转载自http://blog.163.com/benz_/blog/static/18684203020115721917109/算法不难看出,就是一个无限背包+多重背包.问题在于背包的范围.设 ...
- RegExp类型和text()方法
ECMAScript通过RegExp类型来支持正则表达式 RegExp 实例方法:text() 它接受一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false,通常用在if语句中 / ...
- Oracle 课程八之跟踪事件set event
一.Oracle跟踪文件 Oracle跟踪文件分为三种类型: 一种是后台报警日志文件,记录数据库在启动.关闭和运行期间后台进程的活动情况,如表空间创建.回滚段创建.某些alter命令.日志切换.错误消 ...
- MyBatis学习 之 四、MyBatis配置文件
目录(?)[-] 四MyBatis主配置文件 properties属性 settings设置 typeAliases类型别名 typeHandlers类型句柄 ObjectFactory对象工厂 pl ...
- 基于ASP.NET MVC和Bootstrap搭建响应式个人博客站(一)
1.0 为什么要做这个博客站? www.zynblog.com 在工作学习中,经常要搜索查找各种各样的资料,每次找到相关资料后都会顺手添加到浏览器书签中,时间一长,书签也就满了.而且下次再点击这个 ...
- hdu 2459 (后缀数组+RMQ)
题意:让你求一个串中连续重复次数最多的串(不重叠),如果重复的次数一样多的话就输出字典序小的那一串. 分析:有一道比这个简单一些的题spoj 687, 假设一个长度为l的子串重复出现两次,那么它必然会 ...