package service import ( "fmt" "leit.com/aps_engine/common" "leit.com/aps_engine/models" "time" ) // 工具类型资源对象 type ToolSrv struct{ ToolNr int ToolGrpNr int Status int // 可用状态 UnAvailTimeLineArray []TimeLineSrv // 不可用时段 WaitTaskArray []SchedTaskSrv // 任务等待队列 SchedTaskArray []OperationSrv // 已计划任务队列 ToolTab models.Tool } // 可选工具资源对象 type OptionalToolSrv struct{ ToolNr int Priority int } // 初始化工具对象 func(ts *ToolSrv)Init(tnr, tgnr int){ ts.ToolNr = tnr ts.ToolGrpNr = tgnr ts.Status = common.RES_STATUS_AVAIL ts.UnAvailTimeLineArray = []TimeLineSrv{} ts.WaitTaskArray = []SchedTaskSrv{} ts.SchedTaskArray = []OperationSrv{} } // 创建工具对象 func(ts *ToolSrv)Create(tooltab models.Tool){ ts.ToolNr = tooltab.Toolnr ts.ToolGrpNr = tooltab.Toolgrpnr 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.ToolNr = ts.ToolNr 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.ToolNr = ts.ToolNr return SchedEvent(tevt) } // 打印工位的调度任务结果集 func(ts *ToolSrv)Print(){ fmt.Println("调度工具:",ts.ToolNr) 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") }