//变量名称修改,符合通用,根据传入的状态时长属性ID获取该状态当前时长
def tempDuration = $recent("open_hour")?:0
//获取当前设备运行状态
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()
}
//判断隔天结束
//根据传入的状态时长修改条件(0 停机,1 作业,2 待机,非0 开机)
if(runningStatus != 0){
//状态时长与转化成小时的时间片段累加
tempDuration = tempDuration + (dataTimestamp - lastStamp)/1000/3600
}
//返回时长
return tempDuration