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

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
}