使用 Groovy 将列表中的下一条记录存储到全局变量

Store next record from the list to the global variable using Groovy

我正在尝试检查房间的可用性,如果可用性失败,则 select 列表中的下一个房间,直到有房间可供预订。 例如:记录包含 RoomID 和 Timezone。

Groovy代码:

def isAvailable = false
def SDT = context.expand('${#Project#StartDateTime}') 
def EDT = context.expand('${#Project#EndDateTime}') 

while( isAvailable==false ) 
{
//Running while loop and checking slot availability.
def res = con.eachRow("select * from tblbookingitem where active=1 and fkItemID=$roomID and DateTimeFrom='$SDT' and DateTimeTo='$EDT'" )
if(res== null) // if null that means slot is available
    {
        log.info "Step 2 : Time slot is available."
        isAvailable=true;       
        context.testCase.testSuite.project.setPropertyValue('RoomID', roomID)
        log.info roomID
        break;       
    }
else
    {
        //Store next room in roomID
//Store RoomID to variable
def res2 = con.eachRow("select pkResourceItemsID,locationTimeZone,* from tblResourceItems ri inner join Enterprise.tblRooms r on ri.pkResourceItemsID=r.roomID where ri.active=1 and ri.fkResourceID=1 and r.fkresourceId=1 and r.deliveryPoint=0 order by ri.pkResourceItemsID asc" )

log.info res2.pkResourceItemsID.toString()

context.testCase.testSuite.project.setPropertyValue("RoomID", res2.pkResourceItemsID.toString())

//Store Timezone to variable
log.info res2.locationTimeZone.toString()
context.testCase.testSuite.project.setPropertyValue("Timezone", res2.locationTimeZone.toString())
}
}

在其他部分,我需要第二条记录存储在 RoomID 和 Timezone 中。 当下次可用性再次失败时,它应该选择第三条记录,依此类推...

def res2 = con.rows("select pkResourceItemsID,locationTimeZone from tblResourceItems ri inner join Enterprise.tblRooms r on ri.pkResourceItemsID=r.roomID where ri.active=1 and ri.fkResourceID=1 and r.fkresourceId=1 and r.deliveryPoint=0 order by ri.pkResourceItemsID asc" )

int LIST = res2.size() 
log.info "Total Rooms : " + LIST

for(int i = 0; i < LIST; i++)
{       
    log.info "Step 1 : Run for loop for each Room in Record Set."

    //1.Set New RoomID and TimeZone to Global variable
    roomID = res2[i].pkResourceItemsID
    TZ = res2[i].locationTimeZone

    def res = con.firstRow("select * from tblbookingitem where fkItemID=$roomID and DateTimeFrom='$nSDT' and DateTimeTo='$nEDT'" )
    if(res== null) // if null that means slot is available
    {
        log.info "Step 2 : Time slot is available."     
        break;       
    }

}