test_data/repository/test.data/warning.selection.go

94 lines
2.2 KiB
Go

package test_data
import (
"bufio"
"encoding/json"
"log"
"os"
"sort"
"strings"
"testData/global"
"testData/model"
)
func GetWarningSelection(product, step string) map[string][]string {
var fileHandles []*model.FileHandled
global.PostGreSQL.Where("product LIKE ? AND step = ?", product+"%", step).
Limit(10).Order("created_at desc").Find(&fileHandles)
datas := make([][]string, 0)
fieldMap := make(map[string]int)
binMap := make(map[string]interface{})
var selection []string
for _, fileHandle := range fileHandles {
singleDatas := make([][]string, 0)
_ = json.Unmarshal([]byte(fileHandle.SbinHbin), &binMap)
f, err := os.Open(fileHandle.Path)
if err != nil {
log.Println(err)
}
scanner := bufio.NewScanner(f)
xyMap := make(map[string]int)
for scanner.Scan() {
line := scanner.Text()
s := strings.Split(line, ",")
if strings.Contains(fileHandle.Step, "CP") {
x := s[fieldMap["X_COORD"]]
y := s[fieldMap["Y_COORD"]]
if _, ok := xyMap[x+","+y]; !ok {
xyMap[x+","+y] = len(singleDatas)
singleDatas = append(singleDatas, s[:len(s)-1])
}
} else {
singleDatas = append(singleDatas, s[:len(s)-1])
}
if len(singleDatas) == 1 {
if strings.Contains(fileHandle.Step, "CP") {
selection = s[8 : len(s)-1]
} else {
selection = s[6 : len(s)-1]
}
for index, cell := range s {
if index == len(s)-1 {
continue
}
fieldMap[cell] = index
}
}
}
if len(singleDatas) >= 1 {
singleDatas = singleDatas[1:]
}
datas = append(datas, singleDatas...)
f.Close()
}
sBinMap := make(map[string]int)
for _, data := range datas {
sBinMap[data[fieldMap["SOFT_BIN"]]] += 1
}
hBinMap := make(map[string]int)
var sBin, hBin []string
for k := range sBinMap {
if _, ok := binMap[k]; ok {
sBin = append(sBin, k)
hBinMap[binMap[k].(string)] += 1
}
}
sort.Slice(sBin, func(i, j int) bool {
return sBinMap[sBin[i]] > sBinMap[sBin[j]]
})
for k := range hBinMap {
hBin = append(hBin, k)
}
sort.Slice(hBin, func(i, j int) bool {
return hBinMap[hBin[i]] > hBinMap[hBin[j]]
})
res := make(map[string][]string)
res["selection"] = selection
res["sbin"] = sBin
res["hbin"] = hBin
return res
}