第二代基于事件的高级计划排程引擎
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.
 

213 lines
4.2 KiB

package service
import (
"strconv"
"time"
)
// 调度事件接口定义
type SchedEvent interface {
GetEventTime() time.Time // 事件触发事件
GetEventType() int // 获取调度任务类型,参见event类型定义
GetEvent() int // 获取调度对象具体事件
}
// 订单调度事件对象定义
type OrderEvent struct {
TriggerTime time.Time
EventType string
Event string
}
func(ore OrderEvent)GetEventTime()(time.Time){
return ore.TriggerTime
}
func(ore OrderEvent)GetEventType()(string){
return ore.EventType
}
func(ore OrderEvent)GetEvent()(string){
return ore.Event
}
// 获取事件类型的优先级
func GetSchedEventTypePriority(itype int)(prio int){
prio = 0
switch itype {
case EVENT_OBJ_ORDER:
prio = 89
case EVENT_OBJ_OPTASK:
prio = 88
case EVENT_OBJ_WPGRP:
prio = 99
case EVENT_OBJ_WP:
prio = 98
case EVENT_OBJ_TOOLGRP:
prio = 69
case EVENT_OBJ_TOOL:
prio = 68
case EVENT_OBJ_PERSONGRP:
prio = 59
case EVENT_OBJ_PERSON:
prio = 58
case EVENT_OBJ_SECRES:
prio = 38
}
return
}
// 工序调度事件对象定义
type OperationEvent struct {
TriggerTime time.Time
EventType int
Event int
OrderId string
OperationNr int
SplitNr int
}
func(ope OperationEvent)GetEventTime()(time.Time){
return ope.TriggerTime
}
func(ope OperationEvent)GetEventType()(int){
return ope.EventType
}
func(ope OperationEvent)GetEvent()(int){
return ope.Event
}
func(ope OperationEvent)GetOpKey()(string){
return strconv.Itoa(ope.OperationNr) + "-" + strconv.Itoa(ope.SplitNr)
}
// 工位组组调度事件对象定义
type WorkPlaceGrpEvent struct {
TriggerTime time.Time
EventType int
Event int
WorkPlaceGrpNr int
}
func(wpge WorkPlaceGrpEvent)GetEventTime()(time.Time){
return wpge.TriggerTime
}
func(wpge WorkPlaceGrpEvent)GetEventType()(int){
return wpge.EventType
}
func(wpge WorkPlaceGrpEvent)GetEvent()(int){
return wpge.Event
}
// 工位调度事件对象定义
type WorkPlaceEvent struct {
TriggerTime time.Time
EventType int
Event int
WorkPlaceNr int
}
func(wpe WorkPlaceEvent)GetEventTime()(time.Time){
return wpe.TriggerTime
}
func(wpe WorkPlaceEvent)GetEventType()(int){
return wpe.EventType
}
func(wpe WorkPlaceEvent)GetEvent()(int){
return wpe.Event
}
// 工具组调度事件对象定义
type ToolGrpEvent struct {
TriggerTime time.Time
EventType int
Event int
ToolGrpNr int
}
func(tge ToolGrpEvent)GetEventTime()(time.Time){
return tge.TriggerTime
}
func(tge ToolGrpEvent)GetEventType()(int){
return tge.EventType
}
func(tge ToolGrpEvent)GetEvent()(int){
return tge.Event
}
// 工具调度事件对象定义
type ToolEvent struct {
TriggerTime time.Time
EventType int
Event int
ToolNr int
}
func(tle ToolEvent)GetEventTime()(time.Time){
return tle.TriggerTime
}
func(tle ToolEvent)GetEventType()(int){
return tle.EventType
}
func(tle ToolEvent)GetEvent()(int){
return tle.Event
}
// 人员组调度事件对象定义
type PersonGrpEvent struct {
TriggerTime time.Time
EventType int
Event int
PersonGrpNr int
}
func(pge PersonGrpEvent)GetEventTime()(time.Time){
return pge.TriggerTime
}
func(pge PersonGrpEvent)GetEventType()(int){
return pge.EventType
}
func(pge PersonGrpEvent)GetEvent()(int){
return pge.Event
}
// 人员调度事件对象定义
type PersonEvent struct {
TriggerTime time.Time
EventType int
Event int
PersonNr int
}
func(poe PersonEvent)GetEventTime()(time.Time){
return poe.TriggerTime
}
func(poe PersonEvent)GetEventType()(int){
return poe.EventType
}
func(poe PersonEvent)GetEvent()(int){
return poe.Event
}
// 物料调度事件对象定义
type ArticleEvent struct {
TriggerTime time.Time
EventType int
Event int
ArtId string
}
func(ae ArticleEvent)GetEventTime()(time.Time){
return ae.TriggerTime
}
func(ae ArticleEvent)GetEventType()(int){
return ae.EventType
}
func(ae ArticleEvent)GetEvent()(int){
return ae.Event
}
// 次要资源调度事件对象定义
type SecondaryResourceEvent struct {
TriggerTime time.Time
EventType int
Event int
ResourceNr int
}
func(sre SecondaryResourceEvent)GetEventTime()(time.Time){
return sre.TriggerTime
}
func(sre SecondaryResourceEvent)GetEventType()(int){
return sre.EventType
}
func(sre SecondaryResourceEvent)GetEvent()(int){
return sre.Event
}