未验证 提交 e20aa944 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k 提交者: GitHub

Merge pull request #17 from berstpander/bugfix/select_excel_expr

Bugfix/select excel expr
......@@ -26,7 +26,7 @@ fields:
postfix: "\t"
- field: columns # 变量,从excel中读取的列。如果命令指定-F参数,需要包含以避免忽略处理。
range: [state,city]
range: [city,state]
postfix: "\t"
- field: conditions # 变量,用于where条件里。如果命令指定-F参数,需要包含以避免忽略处理。
range: [山东,江苏]
......
......@@ -38,7 +38,7 @@ func generateFieldValuesFromExcel(filePath, sheet string, field *model.DefField,
list, fieldSelect := ReadDataFromSQLite(*field, dbName, sheet, total)
// get index for data retrieve
numbs := GenerateIntItems(0, (int64)(len(list)), 1, false, 1, "")
numbs := GenerateIntItems(0, (int64)(len(list)-1), 1, false, 1, "")
// get data by index
index := 0
for _, numb := range numbs {
......
......@@ -87,6 +87,7 @@ func GenerateFromYaml(files []string, fieldsToExport *[]string) (
wheres := helper.ReplaceVariableValues(child.Where, topLevelFieldNameToValuesMap)
childValues = make([]string, 0)
childMapValues := make([][]string, 0)
for index, slct := range selects {
temp := child
temp.Select = slct
......@@ -94,12 +95,26 @@ func GenerateFromYaml(files []string, fieldsToExport *[]string) (
resFile, _, sheet := fileUtils.GetResProp(temp.From, temp.FileDir)
selectCount := vari.Total / len(selects)
// 问题描述:
// 原代码为:`selectCount := vari.Toal / len(selects)`
// 因为整除的向下取整,如果`len(selects)`为3,`vari.Total`为8,则`selectCount`为2
// 对于每一个`selects`的元素来说,都只会查两个元素,这样加起来一共只有6个结果,
// 导致另外两个结果只能通过重复查到的数据的方式补充。
// 解决方案:
// 将代码改为: `selectCount := vari.Total / len(selects) + 1`,以达到使用人员的真正想要的
// 即查到足够的数量,而不是通过重复补齐
selectCount := vari.Total / len(selects) + 1
mp := generateFieldValuesFromExcel(resFile, sheet, &temp, selectCount) // re-generate values
for _, items := range mp {
childValues = append(childValues, items...)
childMapValues = append(childMapValues, items)
}
}
for index := 0; len(childValues) < vari.Total; {
for i, _ := range selects {
childValues = append(childValues, childMapValues[i][index%len(childMapValues[i])])
}
index++
}
}
arrOfArr = append(arrOfArr, childValues)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册