SJA工艺
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

72 lines
1.8 KiB

package lab
import (
"LAPP_SJA_ME/utils"
"LAPP_SJA_ME/web/models"
"fmt"
"io/ioutil"
"os"
"log"
"regexp"
"time"
)
// 将项目的SEQ文件解析并存储到表中
func LandProjectSeqMessage()(err error){
for {
var(
rd []os.FileInfo
fi os.FileInfo
edi_file string
matched bool
lab *models.LAB
)
filepath := utils.EnsureDir("doc")
fmt.Printf("doc文件目录:%v",filepath)
if rd, err = ioutil.ReadDir(filepath + "/inbox"); err != nil {
fmt.Printf("inbox文件目录:%v",filepath)
return
}
fmt.Println("===========解析监听中!!!====================>")
for _, fi = range rd {
if fi.IsDir() {
continue
}
edi_file = filepath + "/inbox" + "/" + fi.Name()
// 判断文件的合规性
if matched, err = regexp.MatchString("BMW", fi.Name()); err != nil {
log.Printf("Failed to match EDI file name: %s due to: %v", fi.Name(), err)
return
}
if !matched {
log.Printf("The specified EDI file: %s doesn't match the required name specification!", fi.Name())
os.Rename(edi_file, filepath+"/errbox"+"/"+fi.Name())
return
}
// 解析SEQ文件到字典
lab = &models.LAB{}
if err = models.ParseLabEdi(edi_file, lab); err != nil {
log.Printf("Failed to parse due to: %v", err)
os.Rename(edi_file, filepath+"/errbox"+"/"+fi.Name())
return
}
// 保存SEQ字典到SEQ的临时缓存表
tab := new(models.PlnForecastLanding)
tab.Finr = 100
tab.Adddate = utils.TimeFormat(time.Now(),"yyyyMMdd")
err = tab.SaveParseResult(fi.Name(), lab)
if err != nil {
log.Printf("Failed to save SEQ parse result due to: %v", err)
return
}
// 将文件移到outbox
os.Rename(edi_file, filepath+"/outbox"+"/"+fi.Name())
}
time.Sleep(10*time.Second)
}
}