请帮忙分析下这个是写的什么。。。。谢谢!!

yuqianpingnihao 2011-03-04 05:01:01
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[Cal_IsOverTime]
(
@new_x numeric(18,4),
@new_y numeric(18,4),
@new_scanTime varchar(20),
@new_speed float,
@send_siteName varchar(100),
@current_vehicleCode int,
@new_Driver_id varchar(15),
@new_Driver_Name varchar(20),
@new_Company_Name varchar(100)
)

AS
Declare @old_x numeric(18,4)
Declare @old_y numeric(18,4)
Declare @isovertime bit
Declare @total_overtime int
Declare @Get_OverTime int
Declare @old_scanTime varchar(20)
Declare @OverTime_InEngine int
Declare @OverTime_InOther int

select @OverTime_InOther=[OverTime],@OverTime_InEngine=Engine_OverTime from OverTime_Set

if @OverTime_InOther is null set @OverTime_InOther=5
if @OverTime_InEngine is null set @OverTime_InEngine=10

set @Get_OverTime = 0
if @new_speed<>0
begin
update Veh_addinfo set isovertime=0,total_overtime=0 where Vehicle_code=@current_vehicleCode
end
else
begin
select @old_x=longtitude,@old_y=latitude,@isovertime=isovertime,@total_overtime=total_overtime,@old_scanTime=scan_time from Veh_addinfo where Vehicle_code=@current_vehicleCode

Declare @isinfactory bit
Declare @isinEngine bit

select @isinfactory=Attem.dbo.IsInFactory(@new_x,@new_y)
select @isinEngine=Attem.dbo.IsInSite(@new_x,@new_y,@send_siteName)
if @isinfactory=0
begin
if (@new_x=@old_x and @new_y=@old_y) or (@new_x=@old_x+0.0001 and @new_y=@old_y) or (@new_x=@old_x-0.0001 and @new_y=@old_y) or (@new_x=@old_x and @new_y=@old_y+0.0001)
or (@new_x=@old_x and @new_y=@old_y-0.0001) or (@new_x=@old_x+0.0001 and @new_y=@old_y+0.0001) or (@new_x=@old_x+0.0001 and @new_y=@old_y-0.0001)
or (@new_x=@old_x-0.0001 and @new_y=@old_y+0.0001)
begin
if @isovertime=0
begin
select @Get_OverTime=DATEDIFF ( minute,cast(@old_scanTime as DateTime),cast(@new_scanTime as dateTime))
update Veh_addinfo set isovertime=1, total_overtime=@Get_OverTime where Vehicle_code=@current_vehicleCode
if @isinEngine=1
begin
if @Get_OverTime>@OverTime_InEngine
begin
if not exists(select Vehicle_code from Temp_AlarmInfo where Vehicle_code=@current_vehicleCode and Type='工地停留' and TDateTime=@new_scanTime)
begin
Insert into Temp_AlarmInfo(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom)
Values(@current_vehicleCode,'工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name)

Insert into Alarm_Info(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom,longtitude,latitude,speed)
Values(@current_vehicleCode,'工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name,@new_x,@new_y,@new_speed)
end
end
end
else
begin
if @Get_OverTime>@OverTime_InOther
begin
if not exists(select Vehicle_code from Temp_AlarmInfo where Vehicle_code=@current_vehicleCode and Type='非工地停留' and TDateTime=@new_scanTime)
begin
Insert into Temp_AlarmInfo(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom)
Values(@current_vehicleCode,'非工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name)

Insert into Alarm_Info(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom,longtitude,latitude,speed)
Values(@current_vehicleCode,'非工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name,@new_x,@new_y,@new_speed)
end
end
end
end
else
begin
select @Get_OverTime=DATEDIFF ( minute,cast(@old_scanTime as DateTime),cast(@new_scanTime as dateTime))
update Veh_addinfo set isovertime=1, total_overtime=total_overtime+@Get_OverTime where Vehicle_code=@current_vehicleCode
select @Get_OverTime=total_overtime from Veh_addinfo where Vehicle_code=@current_vehicleCode
if @isinEngine=1
begin
if @Get_OverTime>@OverTime_InEngine
begin
if not exists(select Vehicle_code from Temp_AlarmInfo where Vehicle_code=@current_vehicleCode and Type='工地停留' and TDateTime=@new_scanTime)
begin
Insert into Temp_AlarmInfo(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom)
Values(@current_vehicleCode,'工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name)

Insert into Alarm_Info(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom,longtitude,latitude,speed)
Values(@current_vehicleCode,'工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name,@new_x,@new_y,@new_speed)
end
end
end
else
begin
if @Get_OverTime>@OverTime_InOther
begin
if not exists(select Vehicle_code from Temp_AlarmInfo where Vehicle_code=@current_vehicleCode and Type='非工地停留' and TDateTime=@new_scanTime)
begin
Insert into Temp_AlarmInfo(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom)
Values(@current_vehicleCode,'非工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name)

Insert into Alarm_Info(Vehicle_code,Type,DriverId,DriverName,TDateTime,Tvalue,ComeFrom,longtitude,latitude,speed)
Values(@current_vehicleCode,'非工地停留',@new_Driver_id,@new_Driver_Name,@new_scanTime,cast(@Get_OverTime as varchar(20)),@new_Company_Name,@new_x,@new_y,@new_speed)
end
end
end
end
end
else update Veh_addinfo set isovertime=0,total_overtime=0 where Vehicle_code=@current_vehicleCode
end
else update Veh_addinfo set isovertime=0,total_overtime=0 where Vehicle_code=@current_vehicleCode
end


----------------------------
--4----------ClearUp_TempTableData---------

...全文
81 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧