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)
|
|
}
|
|
}
|