导出模板
exportTmpl
function exportTmpl (detailTable) {
let allDiscolumns = detailTable.getAllDisColumns()
let columnColIds = allDiscolumns.map(column => column.colId)
let columnKeys = columnColIds.filter(item => !['select', "_OPT_FIELD_"].includes(item))
detailTable.table.api.exportDataAsExcel({
columnKeys,
onlySelected: true,
})
}
上传模版
SELECT NULL AS MID,
NULL AS FILE_PATH,
NULL AS FILE_NAME
FROM DUAL;
顺序模式
getTitlesList
function getTitlesList (detailTable) {
let titlesList = []
detailTable.getAllDisColumns().forEach((column, index) => {
let {colDef: {field}} = column
titlesList.push(field)
})
return titlesList
}
readExcelByList
#function readExcel ($titles, $rows, $titlesList)
#set($list = $vs.util.newList())
#foreach ($row in $rows)
#set($item = $vs.util.newMap())
#set($datasMap = @list2mapByScript($row.datas, 'celIndex'))
#foreach ($itile in $titles)
#set($data = $datasMap.get($itile.celIndex))
$item.put($titlesList.get($itile.celIndex), $data.data)
#end
$list.add($item)
#end
return $list
#end
映射模式
getTitlesMap
function getTitlesMap (detailTable) {
let titlesMap = {}
detailTable.getAllDisColumns().forEach(column => {
let {colDef: {field, headerName}} = column
if (!['select', "_OPT_FIELD_"].includes(field)) {
titlesMap[headerName] = field
}
})
return titlesMap
}
readExcelByMap
#function readExcelByMap ($titles, $rows, $titlesMap)
#if (!$vs.util.isList($titles) or !$vs.util.isList($rows))
return null
#end
#if (!$vs.util.isMap($titlesMap))
return null
#end
#set($list = $vs.util.newList())
#foreach ($row in $rows)
#set($item = $vs.util.newMap())
#set($datasMap = @list2mapByScript($row.datas, 'celIndex'))
#foreach ($itile in $titles)
#set($data = $datasMap.get($itile.celIndex))
#set($key = $titlesMap.get($itile.data))
#if ($vs.util.isNull($key))
#set($key = $itile.data)
#end
$item.put($key, $data.data)
#end
$list.add($item)
#end
return $list
#end
checkTitles
#function checkTitles ($titles, $titlesMap)
#set($left = $vs.util.newList())
#foreach($title in $titles)
#set($value = $title.data)
#if ($vs.util.isNotNull($value) and !$left.contains($value))
$left.add($value)
#end
#end
#set($right = $vs.util.getMapKeys($titlesMap))
#if ($vs.util.isList($left) and $vs.util.isList($right))
#if ($left.size() ne $right.size())
return false
#end
#foreach ($row in $left)
#if (!$right.contains($row))
return false
#end
#end
return true
#else
return false
#end
#end
公共引用
list2mapByScript
#function list2mapByScript ($list, $key)
#set($map = $vs.util.newMap())
#foreach($row in $list)
#set($script = 'return $row.' + $key)
$map.put($vs.proc.executeScript($script, $vs.util.newMap('row', $row)), $row)
#end
return $map
#end
代码模板
$vs.util.checkInput($form, '参数不能为空!')
$vs.util.checkInput($form.FILE_PATH, '文件路径不能为空!')
$vs.util.checkInput($form.titlesList, '标题列表不能为空!')
$vs.util.checkInput($form.titlesMap, '标题映射不能为空!')
#set($form.titlesList = $vs.util.newList())
#set($form.titlesMap = $vs.util.newMap())
#try
#set($excel = $vs.file.readExcelFileSheet($form.FILE_PATH, 1))
#catch($e)
$vs.log.error($e)
$vs.exception.throwException("请按照系统模版进行导入")
#end
@checkTitles($titles, $titlesMap)
#set($list = @readExcel($excel.titles, $excel.rows, $form.titlesList))
#set($list = @readExcelByMap($excel.titles, $excel.rows, $form.titlesMap))