此主题相关图片如下:360截图20180716221607270.jpg

Dim cmd As New SQLCommand
Dim dt As Date
cmd.C
cmd.CommandText = "Select GetDate()"
dt = cmd.ExecuteScalar()
For Each d As Row In Tables("装机工单盯控清单表").Rows
If ( d.Isnull("缓装状态") Or d("缓装状态") = "待客户短信确认" Or d("缓装状态") = "客户已拒绝" Or d("缓装状态") = "未进行缓装" ) And d("工单号") <> "" Then
Dim wtimes() As String = {"08:00-20:00"}
Dim stime As Date = dt
Dim etime As Date = d("达到服开时间")
Dim sumHours As Double = 0
Dim sp As TimeSpan
Dim dhours As Double = 0
For Each wtime As String In wtimes
Dim ary() As String = wtime.Split("-")
Dim d1 As Date = stime.Date & " " & ary(0)
Dim d2 As Date = stime.Date & " " & ary(1)
sp = d2 - d1
dhours += sp.TotalHours
If stime < d1 Then
If etime > d2 Then
sp = d2 - d1
sumhours += sp.TotalHours
ElseIf etime > d1 Then
sp = etime - d1
sumhours += sp.TotalHours
End If
ElseIf stime < d2 Then
If etime > d2 Then
sp = d2 - stime
sumhours += sp.TotalHours
ElseIf etime > d1 Then
sp = etime - stime
sumhours += sp.TotalHours
End If
End If
Next
Dim d As Date = stime.AddDays(1)
Do While d.Date < etime.Date
sumhours += dhours
d = d.AddDays(1)
Loop
If stime.Date < etime.Date Then
For Each wtime As String In wtimes
Dim ary() As String = wtime.Split("-")
Dim d1 As Date = etime.Date & " " & ary(0)
Dim d2 As Date = etime.Date & " " & ary(1)
If etime > d2 Then
sp = d2 - d1
sumhours += sp.TotalHours
ElseIf etime > d1 Then
sp = etime - d1
sumhours += sp.TotalHours
End If
Next
End If
d("工单时长") = sumhours
Else
If d("缓装状态") = "客户已同意" And d.Isnull("客户原因缓装结束时间") = Nothing Then
Dim tp As TimeSpan = dt - CDate(d("客户原因缓装结束时间"))
d("工单时长") = Format(tp.TotalSeconds() /"3600","00.00")
Else
d("工单时长") = Nothing
End If
End If