This commit is contained in:
jh_peng 2024-11-19 09:59:40 +08:00
parent d95a730b7b
commit 4839476d26

View File

@ -612,9 +612,14 @@ func SaveCP(report *model.Report) { //pbi, product, lot, waferID string,
} }
func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string, func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string,
var ftFile *model.FileHandled var ftFiles []*model.FileHandled
global.PostGreSQL.Where("pbi = ? AND product = ? AND lot = ? AND sub_batch = ? AND step = ?", global.PostGreSQL.Where("pbi = ? AND product = ? AND lot = ? AND sub_batch = ? AND step = ?",
report.PBI, report.Product, report.Lot, report.SubBatch, "FT").Find(&ftFile) report.PBI, report.Product, report.Lot, report.SubBatch, "FT").Find(&ftFiles)
datas := make([][]string, 0)
fieldMap := make(map[string]int)
sbinHbinMap := make(map[string]string)
for _, ftFile := range ftFiles {
fileDatas := make([][]string, 0)
if _, err := os.Stat(ftFile.Path); err != nil { if _, err := os.Stat(ftFile.Path); err != nil {
log.Println("该文件不存在") log.Println("该文件不存在")
} }
@ -624,15 +629,12 @@ func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string,
log.Println(ftFile.Path, ":", err) log.Println(ftFile.Path, ":", err)
return return
} }
defer ft.Close()
scanner := bufio.NewScanner(ft) scanner := bufio.NewScanner(ft)
datas := make([][]string, 0)
fieldMap := make(map[string]int)
for scanner.Scan() { for scanner.Scan() {
line := scanner.Text() line := scanner.Text()
s := strings.Split(line, ",") s := strings.Split(line, ",")
datas = append(datas, s[:len(s)-1]) fileDatas = append(fileDatas, s[:len(s)-1])
if len(datas) == 1 { if len(fileDatas) == 1 {
for index, cell := range s { for index, cell := range s {
if index == len(s)-1 { if index == len(s)-1 {
continue continue
@ -642,13 +644,14 @@ func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string,
} }
} }
if len(datas) >= 1 { if len(datas) >= 1 {
datas = datas[1:] datas = append(datas, fileDatas[1:]...)
} }
ft.Close()
//sbinHbinMap := make(map[string]map[string]string) //sbinHbinMap := make(map[string]map[string]string)
sbinHbinMap := make(map[string]string)
sbinHbinByte := []byte(ftFile.SbinHbin) sbinHbinByte := []byte(ftFile.SbinHbin)
_ = json.Unmarshal(sbinHbinByte, &sbinHbinMap) _ = json.Unmarshal(sbinHbinByte, &sbinHbinMap)
}
binCounter := make(map[string]int) binCounter := make(map[string]int)
siteCounters := make(map[string]map[string]int) siteCounters := make(map[string]map[string]int)
for _, data := range datas { for _, data := range datas {
@ -659,24 +662,27 @@ func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string,
siteCounters[data[fieldMap["SITE_NUM"]]][data[fieldMap["SOFT_BIN"]]]++ siteCounters[data[fieldMap["SITE_NUM"]]][data[fieldMap["SOFT_BIN"]]]++
} }
var rtFile *model.FileHandled var rtFiles []*model.FileHandled
var passCounter int var passCounter int
if !errors.Is(global.PostGreSQL.Where("pbi = ? AND product = ? AND lot = ? AND sub_batch = ? AND step = ?", if !errors.Is(global.PostGreSQL.Where("pbi = ? AND product = ? AND lot = ? AND sub_batch = ? AND step = ?",
report.PBI, report.Product, report.Lot, report.SubBatch, "RT"). report.PBI, report.Product, report.Lot, report.SubBatch, "RT").
Find(&rtFile).Error, gorm.ErrRecordNotFound) { Find(&rtFiles).Error, gorm.ErrRecordNotFound) {
rtDatas := make([][]string, 0)
rtFieldMap := make(map[string]int)
for _, rtFile := range rtFiles {
fileDatas := make([][]string, 0)
rt, err := os.Open(rtFile.Path) rt, err := os.Open(rtFile.Path)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} }
defer rt.Close()
rtScanner := bufio.NewScanner(rt) rtScanner := bufio.NewScanner(rt)
rtDatas := make([][]string, 0)
rtFieldMap := make(map[string]int)
for rtScanner.Scan() { for rtScanner.Scan() {
line := rtScanner.Text() line := rtScanner.Text()
s := strings.Split(line, ",") s := strings.Split(line, ",")
rtDatas = append(rtDatas, s[:len(s)-1]) fileDatas = append(fileDatas, s[:len(s)-1])
if len(rtDatas) == 1 { if len(fileDatas) == 1 {
for index, cell := range s { for index, cell := range s {
if index == len(s)-1 { if index == len(s)-1 {
continue continue
@ -685,9 +691,12 @@ func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string,
} }
} }
} }
rt.Close()
if len(rtDatas) >= 1 { if len(rtDatas) >= 1 {
rtDatas = rtDatas[1:] rtDatas = append(rtDatas, fileDatas[1:]...)
} }
}
for _, rtData := range rtDatas { for _, rtData := range rtDatas {
if rtData[rtFieldMap["SOFT_BIN"]] == "1" { if rtData[rtFieldMap["SOFT_BIN"]] == "1" {
passCounter++ passCounter++
@ -715,13 +724,18 @@ func SaveFT(report *model.Report) { //pbi, product, lot, subBatch string,
}) })
} }
var siteReports []*model.ReportSites var siteReports []*model.ReportSites
global.PostGreSQL.Transaction(func(tx *gorm.DB) error {
for site := range siteCounters { for site := range siteCounters {
siteReports = append(siteReports, &model.ReportSites{ siteReports = append(siteReports, &model.ReportSites{
ReportID: report.ID, ReportID: report.ID,
Site: site, Site: site,
}) })
tx.Where("report_id = ?", report.ID).Delete(&model.ReportSites{})
tx.Create(&siteReports)
} }
global.PostGreSQL.Create(&siteReports) return nil
})
siteReports = []*model.ReportSites{} siteReports = []*model.ReportSites{}
global.PostGreSQL.Where("report_id = ?", report.ID).Find(&siteReports) global.PostGreSQL.Where("report_id = ?", report.ID).Find(&siteReports)
for _, siteReport := range siteReports { for _, siteReport := range siteReports {