set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER 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 intselect  @OverTime_InOther=[OverTime],@OverTime_InEngine=Engine_OverTime from OverTime_Setif @OverTime_InOther is null set @OverTime_InOther=5
if @OverTime_InEngine is null set @OverTime_InEngine=10set @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---------