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.

87 lines
2.6 KiB

  1. package seq
  2. import (
  3. "fmt"
  4. "leit.com/leit_seat_aps/common"
  5. "leit.com/leit_seat_aps/db"
  6. "leit.com/leit_seat_aps/service"
  7. "testing"
  8. "time"
  9. )
  10. // 测试排序调度
  11. func TestScheduler(t *testing.T) {
  12. var (
  13. connstring string
  14. err error
  15. se service.SchedEngine
  16. bl_wl service.BL_Workline
  17. i int
  18. )
  19. // 连接数据库
  20. connstring = fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
  21. `10.114.64.19`, "lapp", "123fis", "SJA_APS", 1433)
  22. if err = db.InitMssqlDb(connstring); err != nil {
  23. t.Errorf("Failed to connect db due to: %v", err)
  24. return
  25. }
  26. defer db.G_DbEngine.Close()
  27. //db.G_DbEngine.ShowSQL(true)
  28. //wotem := make([]db.Pln_workorder, 0)
  29. //wotabs := make([]db.Pln_workorder, 0)
  30. ////Ordertype为SEQ状态去重
  31. //if err = db.G_DbEngine.Distinct("oemseq").Where("finr = ? and worklineid = ? and ordertype = ? and status = ?",
  32. // db.G_FINR, "FSL", common.WO_TYPE_SEQ, common.WO_STATUS_RELEASED).Limit(600).Asc("preschedseq", "supplygroupid").Find(&wotem); err != nil {
  33. // t.Errorf("err:%s",err)
  34. // return
  35. //}
  36. //var oemseqarr []float64
  37. //for _, v := range wotem {
  38. // oemseqarr = append(oemseqarr, v.Oemseq)
  39. //}
  40. ////Ordertype为SEQ状态去重
  41. //if err = db.G_DbEngine.Where("finr = ? and worklineid = ? and ordertype = ? and status = ?",
  42. // db.G_FINR, "FSL", common.WO_TYPE_SEQ, common.WO_STATUS_RELEASED).In("oemseq", oemseqarr).Asc("preschedseq", "supplygroupid").Find(&wotabs); err != nil {
  43. // return
  44. //}
  45. //return
  46. se = service.SchedEngine{}
  47. se.PlanMode = common.LINE_PLAN_IN_SEQ
  48. se.LineTypes = append(se.LineTypes, "A", "M", "V")
  49. // 加载排序产线
  50. if err = se.LoadMasterData(); err != nil {
  51. t.Errorf("Failed to load master data due to: %v", err)
  52. return
  53. }
  54. // 按产线启动排序派工服务
  55. for i = 0; i < len(se.Wltablst); i++ {
  56. fmt.Println("Start line:", bl_wl.WorklineId, " schedule service!")
  57. bl_wl = service.BL_Workline{}
  58. bl_wl.PickTmpDict = make(map[string]service.BL_PickingTemplate)
  59. bl_wl.WorklineId = se.Wltablst[i].Worklineid
  60. bl_wl.SortMode = se.Wltablst[i].Taskqueuesortway
  61. if se.Wltablst[i].Multiqueuemixsort == 1 {
  62. bl_wl.MixSort = true
  63. bl_wl.MixSortMode = se.Wltablst[i].Taskqueuemixsortway
  64. bl_wl.MixSortRule = se.Wltablst[i].Mixsortlogic
  65. } else {
  66. bl_wl.MixSort = false
  67. }
  68. bl_wl.ReleaseMode = se.Wltablst[i].Taskreleaseway
  69. bl_wl.ReleaseValue = se.Wltablst[i].Releaseparameter
  70. bl_wl.Worklinetab = se.Wltablst[i]
  71. // 启动产线派工下达协程
  72. go ScheduleTaskToRelease(bl_wl, &se)
  73. }
  74. // 循环避免主函数退出
  75. for {
  76. time.Sleep(1 * time.Hour)
  77. }
  78. return
  79. }