SJA APS后端代码
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.

111 lines
3.0 KiB

3 years ago
  1. package reorder
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "leit.com/leit_seat_aps/common"
  6. "leit.com/leit_seat_aps/db"
  7. "os"
  8. "regexp"
  9. "testing"
  10. )
  11. func TestReorder(t *testing.T) {
  12. var (
  13. connstring string
  14. err error
  15. projtab db.Me_project
  16. projtablst []db.Me_project
  17. rd []os.FileInfo
  18. fi os.FileInfo
  19. edi_file string
  20. reoland ReorderLandData
  21. matched bool
  22. )
  23. // 连接数据库
  24. connstring = fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
  25. `DESKTOP-S4G95G5\\MLINK`, "lapp", "123fis", "LAPP_JITS", 1433)
  26. if err = db.InitMssqlDb(connstring); err != nil {
  27. t.Errorf("Failed to connect db due to: %v", err)
  28. return
  29. }
  30. defer db.G_DbEngine.Close()
  31. projtab = db.Me_project{}
  32. if projtablst, err = projtab.GetAllActive(); err != nil {
  33. t.Errorf("Failed to get project list!")
  34. return
  35. }
  36. for i, _ := range projtablst {
  37. // 加载项目数据
  38. // 读取文件夹内的文件并解析
  39. if rd, err = ioutil.ReadDir(projtablst[i].Reorder_folder + "/inbox"); err != nil {
  40. return
  41. }
  42. for _, fi = range rd {
  43. if fi.IsDir() {
  44. continue
  45. }
  46. edi_file = projtablst[i].Reorder_folder + "/inbox" + "/" + fi.Name()
  47. fmt.Println(edi_file)
  48. // 判断文件的合规性
  49. if matched, err = regexp.MatchString(projtablst[i].Reorder_filename_regexp, fi.Name()); err != nil {
  50. t.Errorf("Failed to match EDI file name: %s due to: %v", fi.Name(), err)
  51. return
  52. }
  53. if !matched {
  54. t.Errorf("The specified EDI file: %s doesn't match the required name specification!", fi.Name())
  55. os.Rename(edi_file, projtablst[i].Reorder_folder+"/errbox"+"/"+fi.Name())
  56. return
  57. }
  58. // 解析REORDER文件到字典
  59. fmt.Println("Ready to read reorder data......")
  60. reoland = ReorderLandData{}
  61. reoland.Projnr = projtablst[i].Projectid
  62. reoland.Edifile = edi_file
  63. if err = reoland.ReadReorderData(edi_file); err != nil {
  64. t.Errorf("Failed to parse REORDER file due to: %v", err)
  65. os.Rename(edi_file, projtablst[i].Reorder_folder+"/errbox"+"/"+fi.Name())
  66. return
  67. }
  68. // 保存REORDER字典到临时缓存表
  69. if err = reoland.SaveReorderData(); err != nil {
  70. t.Errorf("Failed to save REORDER parse result due to: %v", err)
  71. return
  72. }
  73. // 将文件移到outbox
  74. os.Rename(edi_file, projtablst[i].Reorder_folder+"/outbox"+"/"+fi.Name())
  75. }
  76. }
  77. }
  78. func TestSendMail(t *testing.T) {
  79. /*!
  80. username 发送者邮件
  81. password 授权码
  82. host 主机地址 smtp.qq.com:587 smtp.qq.com:25
  83. to 接收邮箱 多个接收邮箱使用 ; 隔开
  84. name 发送人名称
  85. subject 发送主题
  86. body 发送内容
  87. mailType 发送邮件内容类型
  88. */
  89. host := "smtp.qq.com:587"
  90. subject := "SEQ+1 更新报警"
  91. body := "客户订单 4020691 已下达,不能进行SEQ+1更新!"
  92. username := "332386556@qq.com"
  93. password := "rommipiezlyrbhhd" //这个是授权码,而不是密码
  94. to := "wenzhi.lou@le-it.com.cn"
  95. name := "wenzhi.lou"
  96. err := common.SendMail(username, password, host, to, name, subject, body, "html")
  97. if err != nil{
  98. t.Error(err)
  99. }
  100. }