扁平化
#function flatten ($list)
#if ($vs.util.isList($list))
#set($result = $vs.util.newList())
#foreach ($row in $list)
$result.addAll($row)
#end
return $result
#end
return null
#end
递归扁平化
#function recursionFlatten($list)
#if ($vs.util.isList($list))
#set($result = $vs.util.newList())
#foreach ($row in $list)
#if ($vs.util.isList($row))
$result.addAll(@recursionFlatten($row))
#else
$result.add($row)
#end
#end
return $result
#end
return null
#end
重构:合并模式
#function reconstructionForMerge($list, $primaryKey, $commons, $fields)
#if ($vs.util.isList($list))
#if ($vs.util.isNull($primaryKey))
return null
#end
#if (!$vs.util.isList($commons) or !$vs.util.isList($fields))
return null
#end
#set($result = $vs.util.newList())
#set($parent = null)
#set($childs = null)
#foreach ($row in $list)
#if ($vs.util.isNotNull($row.get($primaryKey)))
#set($parent = @clone($row, $commons))
$result.add($parent)
#set($childs = $vs.util.newList())
#set($parent.childs = $childs)
#end
#set($child = @clone($row, $fields))
$childs.add($child)
#end
return $result
#end
return null
#end
重构数据结构校验:合并模式
#function checkForMergeReconstruction($list, $primaryKey, $commons)
#if ($vs.util.isList($list))
#if ($vs.util.isNull($primaryKey))
return null
#end
#if (!$vs.util.isList($commons) or !$vs.util.isList($fields))
return null
#end
#set($result = $vs.util.newMap())
#foreach ($row in $list)
#if ($vs.util.isNull($row.get($primaryKey)))
#foreach ($common in $commons)
#if ($vs.util.isNotNull($row.get($common)))
#set($rowIndex = $index)
#set($errors = $result.get($index))
#if (!$vs.util.isList($errors))
#set($errors = $vs.util.newList())
$result.put($rowIndex, $errors)
#end
$errors.add($common)
#end
#end
#end
#end
return $result
#end
return null
#end
#function structErrorMap2structErrorMessageMap($structErrorMap, $initIndex, $map)
#if ($vs.util.isMap($structErrorMap))
#if ($vs.util.isNull($initIndex))
#set($initIndex = 0)
#end
#if ($vs.util.isNull($map))
#set($map = $vs.util.newMap())
#end
#set($structErrorMessageMap = $vs.util.newMap())
#foreach ($key in $vs.util.getMapKeys($structErrorMap))
#set($errors = $structErrorMap.get($key))
#set($errorMessages = $vs.util.newList())
#foreach ($error in $errors)
#set($rowIndex = $initIndex + $key)
#set($errorStr = $map.get($error))
#if ($vs.util.isNull($errorStr))
#set($errorStr = $error)
#end
#set($errorMessage = '第' + $rowIndex + '行“' + $errorStr + '”合并单元格不正确!')
$errorMessages.add($errorMessage)
#end
$structErrorMessageMap.put($key, $errorMessages)
#end
return $structErrorMessageMap
#end
return null
#end
公共引用
#function clone($src, $options)
#if ($vs.util.isString($options))
#set($options = $vs.util.fromJson($options))
#end
#if ($vs.util.isMap($src))
#set($result = $vs.util.newMap())
#if ($vs.util.isMap($options))
#foreach ($key in $vs.util.getMapKeys($options))
$result.put($options.get($key), $src.get(key))
#end
#end
#if ($vs.util.isList($options))
#foreach ($key in $options)
$result.put($key, $src.get($key))
#end
#end
return $result
#end
#if ($vs.util.isList($src))
#set($result = $vs.util.newList())
#foreach ($item in $src)
$result.add(@clone($item, $options))
#end
#end
return null
#end