|
|
- package seq
-
- import (
- "fmt"
- "leit.com/leit_seat_aps/common"
- "leit.com/leit_seat_aps/db"
- "leit.com/leit_seat_aps/service"
- "testing"
- "time"
- )
-
- // 测试排序调度
- func TestScheduler(t *testing.T) {
- var (
- connstring string
- err error
- se service.SchedEngine
- bl_wl service.BL_Workline
- i int
- )
-
- // 连接数据库
- connstring = fmt.Sprintf("server=%s;user id=%s;password=%s;database=%s;port=%d;encrypt=disable",
- `10.114.64.19`, "lapp", "123fis", "SJA_APS", 1433)
- if err = db.InitMssqlDb(connstring); err != nil {
- t.Errorf("Failed to connect db due to: %v", err)
- return
- }
- defer db.G_DbEngine.Close()
- //db.G_DbEngine.ShowSQL(true)
- //wotem := make([]db.Pln_workorder, 0)
- //wotabs := make([]db.Pln_workorder, 0)
- ////Ordertype为SEQ状态去重
- //if err = db.G_DbEngine.Distinct("oemseq").Where("finr = ? and worklineid = ? and ordertype = ? and status = ?",
- // db.G_FINR, "FSL", common.WO_TYPE_SEQ, common.WO_STATUS_RELEASED).Limit(600).Asc("preschedseq", "supplygroupid").Find(&wotem); err != nil {
- // t.Errorf("err:%s",err)
- // return
- //}
- //var oemseqarr []float64
- //for _, v := range wotem {
- // oemseqarr = append(oemseqarr, v.Oemseq)
- //}
- ////Ordertype为SEQ状态去重
- //if err = db.G_DbEngine.Where("finr = ? and worklineid = ? and ordertype = ? and status = ?",
- // db.G_FINR, "FSL", common.WO_TYPE_SEQ, common.WO_STATUS_RELEASED).In("oemseq", oemseqarr).Asc("preschedseq", "supplygroupid").Find(&wotabs); err != nil {
- // return
- //}
- //return
- se = service.SchedEngine{}
- se.PlanMode = common.LINE_PLAN_IN_SEQ
- se.LineTypes = append(se.LineTypes, "A", "M", "V")
-
- // 加载排序产线
- if err = se.LoadMasterData(); err != nil {
- t.Errorf("Failed to load master data due to: %v", err)
- return
- }
-
- // 按产线启动排序派工服务
- for i = 0; i < len(se.Wltablst); i++ {
- fmt.Println("Start line:", bl_wl.WorklineId, " schedule service!")
- bl_wl = service.BL_Workline{}
- bl_wl.PickTmpDict = make(map[string]service.BL_PickingTemplate)
- bl_wl.WorklineId = se.Wltablst[i].Worklineid
- bl_wl.SortMode = se.Wltablst[i].Taskqueuesortway
- if se.Wltablst[i].Multiqueuemixsort == 1 {
- bl_wl.MixSort = true
- bl_wl.MixSortMode = se.Wltablst[i].Taskqueuemixsortway
- bl_wl.MixSortRule = se.Wltablst[i].Mixsortlogic
- } else {
- bl_wl.MixSort = false
- }
- bl_wl.ReleaseMode = se.Wltablst[i].Taskreleaseway
- bl_wl.ReleaseValue = se.Wltablst[i].Releaseparameter
- bl_wl.Worklinetab = se.Wltablst[i]
-
- // 启动产线派工下达协程
- go ScheduleTaskToRelease(bl_wl, &se)
- }
-
- // 循环避免主函数退出
- for {
- time.Sleep(1 * time.Hour)
- }
-
- return
- }
|