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
|
|
}
|