高级排程
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.

63 lines
1.8 KiB

package service
import (
om_model "LAPP_AS/models/om"
"fmt"
"time"
)
// 订单对象
type OrderSrv struct{
OrderId string // 订单号
ProjectId string // 项目ID
EarliestStartDate time.Time // 最早开始日期
LatestEndDate time.Time // 最晚结束日期,交货期
PlanStartTime time.Time // 计划开始时间
PlanEndTime time.Time // 计划结束时间
OperationArray []OperationSrv // 工序列表
OperationDict map[string]*OperationSrv // 工序对象字典,键值为:工序号-拆分号
Ordtab om_model.WorkOrder
}
// 初始化,传入订单记录
func(os *OrderSrv)Init(){
os.OperationArray = []OperationSrv{}
os.OperationDict = make(map[string]*OperationSrv)
}
// 创建订单对象
func(os *OrderSrv)Create(ordtab om_model.WorkOrder){
var (
optab om_model.WOOperation
opsrv *OperationSrv
)
os.OrderId = ordtab.WorkOrderId
os.ProjectId = ordtab.ProjectId
os.EarliestStartDate= ordtab.PlanStartDate.Restore()
os.LatestEndDate = ordtab.PlanEndDate.Restore()
os.OperationArray = []OperationSrv{}
os.OperationDict = make(map[string]*OperationSrv)
os.Ordtab = ordtab
// 遍历工序
for _, optab = range ordtab.Operationlst {
opsrv = &OperationSrv{}
opsrv.Create(optab)
os.OperationDict[opsrv.GetOpKey()] = opsrv
os.OperationArray = append(os.OperationArray, *opsrv)
}
}
// 打印订单工序的计划结果
func(os *OrderSrv)Print(){
fmt.Println("生产订单:",os.OrderId)
for _, opa := range os.OperationArray {
if op, ok := os.OperationDict[opa.GetOpKey()]; ok {
fmt.Println("工序号:",op.OperationNr,"工位:",op.PlanWorkPlaceId,"工时:",op.PlanDuration.Hours(),
" 工序开始:",op.PlanStartTime.Format("2006-01-02 15:04:05"),
" 工序结束:",op.PlanEndTime.Format("2006-01-02 15:04:05"))
}
}
}