//變量名稱修改,符合通用,根據傳入的狀態(tài)時長屬性ID獲取該狀態(tài)當前時長
def tempDuration = $recent("open_hour")?:0
//獲取當前設備運行狀態(tài)
def runningStatus = $recent("device_status")?:0
//獲取當前時間戳(單位毫秒)
long dataTimestamp = __timestamp__.longValue()
//獲取上次上云時間戳(單位毫秒)
long lastStamp = $lastStamp()?:dataTimestamp
//判斷隔天
java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-dd")
String nowTimeStr = sf.format(new java.util.Date(dataTimestamp))
String lastTimeStr = sf.format(new java.util.Date(lastStamp))
if(nowTimeStr <=> lastTimeStr){
tempDuration = 0
java.text.SimpleDateFormat sdf_convert = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
lastStamp = (sdf_convert.parse(nowTimeStr + " " + "00:00:00")).getTime()
}
//判斷隔天結束
//根據傳入的狀態(tài)時長修改條件(0 停機,1 作業(yè),2 待機,非0 開機)
if(runningStatus != 0){
//狀態(tài)時長與轉化成小時的時間片段累加
tempDuration = tempDuration + (dataTimestamp - lastStamp)/1000/3600
}
//返回時長
return tempDuration