diff --git a/repository/MT737.go b/repository/MT737.go index 6db2abc..d20a2fc 100644 --- a/repository/MT737.go +++ b/repository/MT737.go @@ -5,6 +5,7 @@ import ( "encoding/csv" "encoding/json" "errors" + "gitee.com/golang-module/carbon/v2" "github.com/extrame/xls" "github.com/xuri/excelize/v2" "golang.org/x/text/encoding/simplifiedchinese" @@ -83,49 +84,74 @@ func MT737(summary, dataLog *model.FileText, step string) { sBinMap := make(map[string]string) sbinStartIndex, sbinEndIndex := -1, -1 for i := 1; i < len(summaryRows); i++ { - if summaryRows[i][0] == "" || strings.Contains(summaryRows[i][0], "----------------------") { + if summaryRows[i][0] == "" { continue } - if sbinEndIndex < 0 { - if strings.Contains(summaryRows[i][0], "SBin-HBin") { - if sbinStartIndex < 0 { - sbinStartIndex = i - } - s := summaryRows[i][0] - s = strings.ReplaceAll(s, " ", "") - sBinHBin := strings.Split(s, " ") - sBinHBinArray := strings.Split(sBinHBin[0], "-") - sBinMap[sBinHBinArray[0]] = sBinHBinArray[1] - } else { - if sbinStartIndex > 0 { - sbinEndIndex = i - continue - } - } - } summaryRows[i][0] = strings.ReplaceAll(summaryRows[i][0], ":", ":") - splitIndex := strings.Index(summaryRows[i][0], ":") - if splitIndex != -1 { - details[summaryRows[i][0][:splitIndex]] = summaryRows[i][0][splitIndex+1:] - } + summaryRows[i][0] = strings.ReplaceAll(summaryRows[i][0], ": ", ":") + //splitIndex := strings.Index(summaryRows[i][0], ":") + //if splitIndex != -1 { + // details[summaryRows[i][0][:splitIndex]] = summaryRows[i][0][splitIndex+1:] + //} if strings.Contains(summaryRows[i][0], "Program:") { - startIndex := strings.Index(summaryRows[i][0], "Program:") + startIndex := strings.Index(summaryRows[i][0], "Program:") + 8 for endIndex := startIndex; endIndex < len(summaryRows[i][0]); endIndex++ { - if string(summaryRows[i][0][endIndex]) == " " { - details["Program"] = summaryRows[i][0][startIndex:endIndex] + if string(summaryRows[i][0][endIndex]) == " " || endIndex == len(summaryRows[i][0])-1 { + details["Program"] = summaryRows[i][0][startIndex : endIndex+1] break } } } if strings.Contains(summaryRows[i][0], "Tester_NO:") { - startIndex := strings.Index(summaryRows[i][0], "Tester_NO:") + startIndex := strings.Index(summaryRows[i][0], "Tester_NO:") + 10 for endIndex := startIndex; endIndex < len(summaryRows[i][0]); endIndex++ { - if string(summaryRows[i][0][endIndex]) == " " { - details["Tester_NO"] = summaryRows[i][0][startIndex:endIndex] + if string(summaryRows[i][0][endIndex]) == " " || endIndex == len(summaryRows[i][0])-1 { + details["Tester_NO"] = summaryRows[i][0][startIndex : endIndex+1] break } } } + if strings.Contains(summaryRows[i][0], "Start:") { + startIndex := strings.Index(summaryRows[i][0], "Start:") + 6 + for endIndex := startIndex; endIndex < len(summaryRows[i][0]); endIndex++ { + if endIndex == len(summaryRows[i][0])-1 || string(summaryRows[i][0][endIndex:endIndex+2]) == " " { + details["Start"] = carbon.Parse(summaryRows[i][0][startIndex:endIndex]).Format("Y-m-d H:i:s") + break + } + } + } + if strings.Contains(summaryRows[i][0], "End:") { + startIndex := strings.Index(summaryRows[i][0], "End:") + 4 + for endIndex := startIndex; endIndex < len(summaryRows[i][0]); endIndex++ { + if endIndex == len(summaryRows[i][0])-1 || string(summaryRows[i][0][endIndex:endIndex+2]) == " " { + details["End"] = carbon.Parse(summaryRows[i][0][startIndex : endIndex+1]).Format("Y-m-d H:i:s") + break + } + } + } + if sbinEndIndex < 0 { + if strings.Contains(summaryRows[i][0], "SBin-HBin") { + if sbinStartIndex < 0 { + sbinStartIndex = i + 2 + continue + } + } + if sbinStartIndex > 0 && i >= sbinStartIndex { + if strings.Contains(summaryRows[i][0], "---------------") { + sbinEndIndex = i + continue + } + index := strings.Index(summaryRows[i][0], "-") + endIndex := index + 2 + for { + if string(summaryRows[i][0][endIndex]) == " " { + break + } + endIndex++ + } + sBinMap[strings.ReplaceAll(summaryRows[i][0][:index], " ", "")] = strings.ReplaceAll(summaryRows[i][0][index+2:endIndex], " ", "") + } + } } if details["Test_Code"] == "" { @@ -245,7 +271,7 @@ func MT737(summary, dataLog *model.FileText, step string) { if strings.Contains(dataLogRows[i][2], "TestItem") { titleIndex = i title = append(title, []string{"SITE_NUM", "PART_ID", "SOFT_BIN"}...) - title = append(title, dataLogRows[i][2:]...) + title = append(title, dataLogRows[i][3:]...) continue } } else { @@ -278,8 +304,8 @@ func MT737(summary, dataLog *model.FileText, step string) { } } if unitIndex > 0 { //dataIndex < 0 && - if dataLogRows[i][0] != dataLogRows[i][1] { - dataIndex = i + if dataLogRows[i][1] == "X-Y" { + dataIndex = i + 1 break } } @@ -293,13 +319,14 @@ func MT737(summary, dataLog *model.FileText, step string) { LimitU: dataLogRows[limitUIndex][k], } } - for i := 3; i < len(title); i++ { + for i := 3; i < len(title)-1; i++ { paramsMap[title[i]] = dataLogRows[binIndex][i] } for i := dataIndex; i < len(dataLogRows); i++ { if len(dataLogRows[i]) < len(dataLogRows[titleIndex]) { dataLogRows[i] = append(dataLogRows[i], utils.FillData(len(dataLogRows[titleIndex])-len(dataLogRows[i]))...) } + dataLogRows[i][0] = strings.ReplaceAll(dataLogRows[i][0], "Site", "") newExcel = append(newExcel, dataLogRows[i]) } } else {