第二代基于事件的高级计划排程引擎
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.

61 lines
1.7 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package service
  2. import (
  3. "fmt"
  4. "leit.com/aps_engine/models"
  5. "time"
  6. )
  7. // 订单对象
  8. type OrderSrv struct{
  9. OrderId string // 订单号
  10. ProjectId string // 项目ID
  11. EarliestStartDate time.Time // 最早开始日期
  12. LatestEndDate time.Time // 最晚结束日期,交货期
  13. PlanStartTime time.Time // 计划开始时间
  14. PlanEndTime time.Time // 计划结束时间
  15. OperationArray []OperationSrv // 工序列表
  16. OperationDict map[string]*OperationSrv // 工序对象字典,键值为:工序号-拆分号
  17. Ordtab models.OmWorkorder
  18. }
  19. // 初始化,传入订单记录
  20. func(os *OrderSrv)Init(){
  21. os.OperationArray = []OperationSrv{}
  22. os.OperationDict = make(map[string]*OperationSrv)
  23. }
  24. // 创建订单对象
  25. func(os *OrderSrv)Create(ordtab models.OmWorkorder){
  26. var (
  27. optab models.OmWooperation
  28. opsrv *OperationSrv
  29. )
  30. os.OrderId = ordtab.Workorderid
  31. os.ProjectId = ordtab.Projectid
  32. os.EarliestStartDate= ordtab.Planstartdate
  33. os.LatestEndDate = ordtab.Planenddate
  34. os.OperationArray = []OperationSrv{}
  35. os.OperationDict = make(map[string]*OperationSrv)
  36. os.Ordtab = ordtab
  37. // 遍历工序
  38. for _, optab = range ordtab.Operationlst {
  39. opsrv = &OperationSrv{}
  40. opsrv.Create(optab)
  41. os.OperationDict[opsrv.GetOpKey()] = opsrv
  42. }
  43. }
  44. // 打印订单工序的计划结果
  45. func(os *OrderSrv)Print(){
  46. fmt.Println("生产订单:",os.OrderId)
  47. for _, opa := range os.OperationArray {
  48. if op, ok := os.OperationDict[opa.GetOpKey()]; ok {
  49. fmt.Println("工序号:",op.OperationNr,"工位:",op.PlanWorkPlaceNr,"工时:",op.PlanDuration.Hours(),
  50. " 工序开始:",op.PlanStartTime.Format("2006-01-02 15:04:05"),
  51. " 工序结束:",op.PlanEndTime.Format("2006-01-02 15:04:05"))
  52. }
  53. }
  54. }