Browse Source

scheduler 测试bug

pull/155/head
娄文智 3 years ago
parent
commit
a140ca0fb2
4 changed files with 37 additions and 6 deletions
  1. +1
    -1
      dao/base/implments/WorkCalendar.dao.impl.go
  2. +14
    -1
      services/schedule/Schedule_test.go
  3. +12
    -3
      services/schedule/Scheduler.Ctrl.go
  4. +10
    -1
      services/schedule/WorkLine.Ctrl.go

+ 1
- 1
dao/base/implments/WorkCalendar.dao.impl.go View File

@ -326,7 +326,7 @@ func (impl *WorkCalendarDAOImplement) SelectAll(startDate, endDate time.Time) (d
startday = utils.GetYMDString(startDate)
endday = utils.GetYMDString(endDate)
for i = 0; i < len(datalst); i++ {
if err = session.Where("PlantNr = ? and WorkCalendarNr = ? and WorkDate >= ? and WorkDate <= ?",
if err = session.Table(meta.WorkCalendarLst.TableName).Where("PlantNr = ? and WorkCalendarNr = ? and WorkDate >= ? and WorkDate <= ?",
datalst[i].PlantNr, datalst[i].WorkCalendarNr, startday, endday).OrderBy("WorkDate").Find(&datalst[i].WorkCalendarLstLi); err != nil {
return
}


+ 14
- 1
services/schedule/Schedule_test.go View File

@ -49,8 +49,14 @@ func TestScheduler(t *testing.T) {
fmt.Printf("LoadProjectData:%v",schedeng.ProjDict)
// 加载时间模型,基于调度引擎指定的时间区间
schedeng.LoadTimemodelData()
fmt.Println()
fmt.Printf("LoadTimemodelData:%v",schedeng.Tmsrv)
fmt.Println()
fmt.Printf("DayModelDict:%v",schedeng.Tmsrv.DayModelDict)
fmt.Println()
fmt.Printf("CalendarDict:%v",schedeng.Tmsrv.CalendarDict)
// 加载产品换型主数据
err = schedeng.LoadSetupData()
if err !=nil{
@ -73,9 +79,16 @@ func TestScheduler(t *testing.T) {
fmt.Println()
fmt.Printf("LoadWorkLineWorkShiftData:%v",schedeng.WorklineDict)
// 生成产线的时间曲线
schedeng.GenerateWorkLineTimeCurve()
err = schedeng.GenerateWorkLineTimeCurve()
if err !=nil{
t.Error(err.Error())
}
fmt.Println()
fmt.Printf("GenerateWorkLineTimeCurve:%v",schedeng.Tmsrv)
fmt.Println()
fmt.Printf("WeekModelDict:%v",schedeng.Tmsrv.WeekModelDict)
fmt.Println()
fmt.Printf("CalendarDict:%v",schedeng.Tmsrv.CalendarDict)
// 加载工单数据(调度任务)
//schedeng.LoadSchedTaskData()
// 对调度任务进行排序


+ 12
- 3
services/schedule/Scheduler.Ctrl.go View File

@ -87,9 +87,15 @@ func (schedsrv *SchedulerSrv) LoadTimemodelData() {
// 初始化
schedsrv.Tmsrv = TimeModelSrv{PlantNr: schedsrv.PlantNr}
// 加载指定日期范畴内的时间模型相关主数据
schedsrv.Tmsrv.LoadBasicData(schedsrv.StartDate, schedsrv.EndDate)
err := schedsrv.Tmsrv.LoadBasicData(schedsrv.StartDate, schedsrv.EndDate)
if err != nil {
fmt.Println(err)
}
// 生成日模型的时间线列表
schedsrv.Tmsrv.GenDayModelLineArray()
err = schedsrv.Tmsrv.GenDayModelLineArray()
if err != nil {
fmt.Println(err)
}
}
// 加载产线班次的实际出勤数据,指定时段,没有按班次指定的默认值填充
@ -145,7 +151,10 @@ func (schedsrv *SchedulerSrv) GenerateWorkLineTimeCurve() (err error) {
// 遍历产线
for _, wlsrv = range schedsrv.WorklineDict {
// 基于产线的时间模型和排班获取产线在指定时间区间内的时间线集合
wlsrv.GetWorkDayList(&schedsrv.Tmsrv)
err := wlsrv.GetWorkDayList(&schedsrv.Tmsrv)
if err != nil {
fmt.Println(err)
}
wlsrv.GenerateTimeCurve(&schedsrv.Tmsrv)
}


+ 10
- 1
services/schedule/WorkLine.Ctrl.go View File

@ -122,16 +122,25 @@ func(wlsrv *WorklineSrv)GetWorkDayList(tmsrv *TimeModelSrv)(err error){
err = errors.New(fmt.Sprintf("产线%s的周模型%d不存在!",wlsrv.WorklineTab.WorkLineid,wlsrv.WorklineTab.WeekModelNr))
return
}
fmt.Println("11111")
fmt.Println(wlsrv.WorklineTab.WorkCalendarNr)
fmt.Println(tmsrv.CalendarDict)
// 获取产线的工作日历
if calsrv, ok = tmsrv.CalendarDict[wlsrv.WorklineTab.WorkCalendarNr]; !ok {
err = errors.New(fmt.Sprintf("产线%s的工作日历%d不存在!",wlsrv.WorklineTab.WorkLineid,wlsrv.WorklineTab.WorkCalendarNr))
return
}
fmt.Println("22222")
fmt.Printf("calsrv :%v",calsrv)
fmt.Println()
// 基于时间模型的起始时间点获取产线的日模型列表
days = utils.GetCrossDays(tmsrv.StartDate, tmsrv.EndDate)
for i = 0 ; i < days; i++ {
tt := tmsrv.StartDate.Add(time.Duration(i*24)*time.Hour)
daymodelnr = wmsrv.GetDayModelNrByDate(tt)
fmt.Println()
fmt.Printf("daymodelnr :%v",daymodelnr)
fmt.Println()
if dmsrv, ok = tmsrv.DayModelDict[daymodelnr]; !ok{
err = errors.New(fmt.Sprintf("周模型%d中指定的日模型%d不存在!",wmsrv.WeekModelNr,daymodelnr))
return
@ -306,7 +315,7 @@ func(wlsrv *WorklineSrv)GetWorkShiftEff(day string, wsnr int, tmsrv *TimeModelSr
key = day + strconv.Itoa(wsnr)
if wlwsefftab, ok = wlsrv.WorkShiftEffDict[key]; ok {
// 获取指定日期和人员班组号的排班人数
perqty = wlwsefftab.Personqty
perqty = wlwsefftab.PersonQty
// 比较人数,获取效率值
eff = wss.GetEffByPersonQty(perqty)
return


Loading…
Cancel
Save