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