|
|
- package service
-
- import (
- "fmt"
- "leit.com/aps_engine/common"
- "leit.com/aps_engine/models"
- "time"
- )
-
- // 工位类型资源对象
- type WorkPlaceSrv struct{
- WorkPlaceNr int
- WorkPlaceGrpNr int // 工位组对象
- Wptab models.Workplace
- Status int // 工位可用状态默认不可用,通过时间模型的加载变为可用
- TimeCurve TimeCurveSrv // 加载完时间模型后的时间曲线
- SchedTimeCurve TimeCurveSrv // 调度过程中动态计算的时间曲线
- WaitTaskArray []SchedTaskSrv // 任务等待队列
- SchedTaskArray []OperationSrv // 已计划任务队列
- }
-
- // 可选工位资源对象
- type OptionalWorkPlaceSrv struct{
- WorkPlaceNr int
- Priority int
- }
-
- // 初始化对象
- func(wps *WorkPlaceSrv)Init(wpnr, wpgnr int){
- wps.WorkPlaceNr = wpnr
- wps.WorkPlaceGrpNr = wpgnr
- wps.Status = common.RES_STATUS_UNAVAIL
- wps.TimeCurve = TimeCurveSrv{}
- wps.SchedTimeCurve = TimeCurveSrv{}
- wps.WaitTaskArray = []SchedTaskSrv{}
- wps.SchedTaskArray = []OperationSrv{}
- }
-
- // 初始化对象
- func(wps *WorkPlaceSrv)Create(wptab models.Workplace){
- wps.WorkPlaceNr = wptab.Workplacenr
- wps.WorkPlaceGrpNr = wptab.Workplacegrpnr
- wps.Wptab = wptab
- wps.Status = common.RES_STATUS_UNAVAIL
- wps.TimeCurve = TimeCurveSrv{}
- wps.SchedTimeCurve = TimeCurveSrv{}
- wps.WaitTaskArray = []SchedTaskSrv{}
- wps.SchedTaskArray = []OperationSrv{}
- }
-
- // 获取工位状态可用事件
- func(wps *WorkPlaceSrv)GetAvailEvent(t time.Time)(SchedEvent){
- var(
- wpet WorkPlaceEvent
- )
-
- wpet = WorkPlaceEvent{TriggerTime: t, EventType: EVENT_OBJ_WP, Event: EVENT_WP_STATUS_AVAIL}
- wpet.WorkPlaceNr = wps.WorkPlaceNr
- return SchedEvent(wpet)
- }
-
- // 获取工位状态可用事件
- func(wps *WorkPlaceSrv)GetUnAvailEvent(t time.Time)(SchedEvent){
- var(
- wpet WorkPlaceEvent
- )
-
- wpet = WorkPlaceEvent{TriggerTime: t, EventType: EVENT_OBJ_WP, Event: EVENT_WP_STATUS_UNAVAIL}
- wpet.WorkPlaceNr = wps.WorkPlaceNr
- return SchedEvent(wpet)
- }
-
- // 打印工位的调度任务结果集
- func(wps *WorkPlaceSrv)Print(){
- fmt.Println("调度工位:",wps.WorkPlaceNr)
- for idx, op := range wps.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")
- }
|