package service
|
|
|
|
import (
|
|
"LAPP_AS/common"
|
|
base_model "LAPP_AS/models/base"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// 工具类型资源对象
|
|
type ToolSrv struct{
|
|
ToolId string
|
|
ToolGrpId string
|
|
Status int // 可用状态
|
|
UnAvailTimeLineArray []TimeLineSrv // 不可用时段
|
|
WaitTaskArray []SchedTaskSrv // 任务等待队列
|
|
SchedTaskArray []OperationSrv // 已计划任务队列
|
|
ToolTab base_model.Tool
|
|
}
|
|
|
|
// 可选工具资源对象
|
|
type OptionalToolSrv struct{
|
|
ToolId string
|
|
Priority int
|
|
}
|
|
|
|
// 初始化工具对象
|
|
func(ts *ToolSrv)Init(tnr, tgnr string){
|
|
ts.ToolId = tnr
|
|
ts.ToolGrpId = tgnr
|
|
ts.Status = common.RES_STATUS_AVAIL
|
|
ts.UnAvailTimeLineArray = []TimeLineSrv{}
|
|
ts.WaitTaskArray = []SchedTaskSrv{}
|
|
ts.SchedTaskArray = []OperationSrv{}
|
|
}
|
|
|
|
// 创建工具对象
|
|
func(ts *ToolSrv)Create(tooltab base_model.Tool){
|
|
ts.ToolId = tooltab.ToolId
|
|
ts.ToolGrpId = tooltab.ToolGrpId
|
|
ts.ToolTab = tooltab
|
|
ts.Status = common.RES_STATUS_AVAIL
|
|
ts.UnAvailTimeLineArray = []TimeLineSrv{}
|
|
ts.WaitTaskArray = []SchedTaskSrv{}
|
|
ts.SchedTaskArray = []OperationSrv{}
|
|
}
|
|
|
|
// 获取工位状态可用事件
|
|
func(ts *ToolSrv)GetAvailEvent(t time.Time)(SchedEvent){
|
|
var(
|
|
tevt ToolEvent
|
|
)
|
|
|
|
tevt = ToolEvent{TriggerTime: t, EventType: EVENT_OBJ_TOOL, Event: EVENT_TOOL_STATUS_AVAIL}
|
|
tevt.ToolId = ts.ToolId
|
|
return SchedEvent(tevt)
|
|
}
|
|
|
|
// 获取工位状态可用事件
|
|
func(ts *ToolSrv)GetUnAvailEvent(t time.Time)(SchedEvent){
|
|
var(
|
|
tevt ToolEvent
|
|
)
|
|
|
|
tevt = ToolEvent{TriggerTime: t, EventType: EVENT_OBJ_TOOL, Event: EVENT_TOOL_STATUS_UNAVAIL}
|
|
tevt.ToolId = ts.ToolId
|
|
return SchedEvent(tevt)
|
|
}
|
|
|
|
// 打印工位的调度任务结果集
|
|
func(ts *ToolSrv)Print(){
|
|
fmt.Println("调度工具:",ts.ToolId)
|
|
for idx, op := range ts.SchedTaskArray{
|
|
if idx == 0 {
|
|
fmt.Printf("|%s<--%s(%d)-->%s|",op.PlanStartTime.Format("01-02 15:04"),op.OrderId,op.OperationNr,op.PlanEndTime.Format("01-02 15:04"))
|
|
}else{
|
|
fmt.Printf("%s<--%s(%d)-->%s|",op.PlanStartTime.Format("01-02 15:04"),op.OrderId,op.OperationNr,op.PlanEndTime.Format("01-02 15:04"))
|
|
}
|
|
}
|
|
|
|
fmt.Printf("\n")
|
|
}
|