package reorder
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"leit.com/leit_seat_aps/common"
|
|
"leit.com/leit_seat_aps/db"
|
|
"os"
|
|
"regexp"
|
|
"testing"
|
|
)
|
|
|
|
func TestReorder(t *testing.T) {
|
|
var (
|
|
connstring string
|
|
err error
|
|
projtab db.Me_project
|
|
projtablst []db.Me_project
|
|
rd []os.FileInfo
|
|
fi os.FileInfo
|
|
edi_file string
|
|
reoland ReorderLandData
|
|
matched bool
|
|
)
|
|
|
|
// 连接数据库
|
|
connstring = fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
|
|
`DESKTOP-S4G95G5\\MLINK`, "lapp", "123fis", "LAPP_JITS", 1433)
|
|
if err = db.InitMssqlDb(connstring); err != nil {
|
|
t.Errorf("Failed to connect db due to: %v", err)
|
|
return
|
|
}
|
|
defer db.G_DbEngine.Close()
|
|
|
|
projtab = db.Me_project{}
|
|
if projtablst, err = projtab.GetAllActive(); err != nil {
|
|
t.Errorf("Failed to get project list!")
|
|
return
|
|
}
|
|
|
|
for i, _ := range projtablst {
|
|
// 加载项目数据
|
|
|
|
// 读取文件夹内的文件并解析
|
|
if rd, err = ioutil.ReadDir(projtablst[i].Reorder_folder + "/inbox"); err != nil {
|
|
return
|
|
}
|
|
for _, fi = range rd {
|
|
if fi.IsDir() {
|
|
continue
|
|
}
|
|
|
|
edi_file = projtablst[i].Reorder_folder + "/inbox" + "/" + fi.Name()
|
|
fmt.Println(edi_file)
|
|
|
|
// 判断文件的合规性
|
|
if matched, err = regexp.MatchString(projtablst[i].Reorder_filename_regexp, fi.Name()); err != nil {
|
|
t.Errorf("Failed to match EDI file name: %s due to: %v", fi.Name(), err)
|
|
return
|
|
}
|
|
if !matched {
|
|
t.Errorf("The specified EDI file: %s doesn't match the required name specification!", fi.Name())
|
|
os.Rename(edi_file, projtablst[i].Reorder_folder+"/errbox"+"/"+fi.Name())
|
|
return
|
|
}
|
|
|
|
// 解析REORDER文件到字典
|
|
fmt.Println("Ready to read reorder data......")
|
|
reoland = ReorderLandData{}
|
|
reoland.Projnr = projtablst[i].Projectid
|
|
reoland.Edifile = edi_file
|
|
if err = reoland.ReadReorderData(edi_file); err != nil {
|
|
t.Errorf("Failed to parse REORDER file due to: %v", err)
|
|
os.Rename(edi_file, projtablst[i].Reorder_folder+"/errbox"+"/"+fi.Name())
|
|
return
|
|
}
|
|
|
|
// 保存REORDER字典到临时缓存表
|
|
if err = reoland.SaveReorderData(); err != nil {
|
|
t.Errorf("Failed to save REORDER parse result due to: %v", err)
|
|
return
|
|
}
|
|
|
|
// 将文件移到outbox
|
|
os.Rename(edi_file, projtablst[i].Reorder_folder+"/outbox"+"/"+fi.Name())
|
|
}
|
|
}
|
|
}
|
|
func TestSendMail(t *testing.T) {
|
|
/*!
|
|
username 发送者邮件
|
|
password 授权码
|
|
host 主机地址 smtp.qq.com:587 或 smtp.qq.com:25
|
|
to 接收邮箱 多个接收邮箱使用 ; 隔开
|
|
name 发送人名称
|
|
subject 发送主题
|
|
body 发送内容
|
|
mailType 发送邮件内容类型
|
|
*/
|
|
host := "smtp.qq.com:587"
|
|
subject := "SEQ+1 更新报警"
|
|
body := "客户订单 4020691 已下达,不能进行SEQ+1更新!"
|
|
username := "332386556@qq.com"
|
|
password := "rommipiezlyrbhhd" //这个是授权码,而不是密码
|
|
to := "wenzhi.lou@le-it.com.cn"
|
|
name := "wenzhi.lou"
|
|
err := common.SendMail(username, password, host, to, name, subject, body, "html")
|
|
if err != nil{
|
|
t.Error(err)
|
|
}
|
|
}
|