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 }