${RES.getString("report.summary.title")}


<#list results?keys as mapKey> <#assign index = 0/>        <#list results[mapKey] as singleRes> <#assign rowSpan = results[mapKey]?size/> <#if rowSpan gt 1> <#if index == 0> <#else>   <#if singleRes.isSuccess()> <#assign index = index+1/>     
${RES.getString("report.table.header.product.name")} ${RES.getString("report.table.header.upgrade.task.time")} ${RES.getString("report.table.header.ip.address")} ${RES.getString("report.table.header.serial")} ${RES.getString("report.table.header.login.user")} ${RES.getString("report.table.header.upgrade.result")} ${RES.getString("report.table.header.error.msg")}
 ${singleRes.deviceEntity.getProductTypeForReport()?default(singleRes.deviceEntity.productUniqueId)}  ${singleRes.deviceEntity.getProductTypeForReport()?default(singleRes.deviceEntity.productUniqueId)}  ${RES.getString("report.table.header.start.time")}${singleRes.getStartTaskTimeString()}
 ${RES.getString("report.table.header.end.time")}${singleRes.getEndTaskTimeString()}
 ${RES.getString("report.table.header.execute.time")}${singleRes.getExecuteTimeString()}
 ${singleRes.deviceEntity.ip}  ${singleRes.deviceEntity.serialNumber}  ${singleRes.deviceEntity.account.userName} <#elseif singleRes.isNotUpgrade()> <#else> ${RES.getString(singleRes.getUpgradeStatusKey())}  ${singleRes.getResultDisplayMsg()}