event_calving.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package model
  2. import (
  3. "kpt-pasture/util"
  4. "time"
  5. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  6. )
  7. type EventCalving struct {
  8. Id int64 `json:"id"`
  9. CowId int64 `json:"cowId"`
  10. CowType pasturePb.CowType_Kind `json:"cowType"`
  11. CowKind pasturePb.CowKind_Kind `json:"cowKind"`
  12. EarNumber string `json:"earNumber"`
  13. Lact int32 `json:"lact"`
  14. DayAge int32 `json:"dayAge"`
  15. PlanDay int64 `json:"planDay"`
  16. RealityDay int64 `json:"realityDay"`
  17. EndDay int64 `json:"endDay"`
  18. Status pasturePb.IsShow_Kind `json:"status"`
  19. PenId int32 `json:"penId"`
  20. ChildNumber int8 `json:"childNumber"`
  21. BullNumber string `json:"bullNumber"`
  22. PregnancyAge int64 `json:"pregnancyAge"`
  23. CalvingLevel pasturePb.CalvingLevel_Kind `json:"calvingLevel"`
  24. OperationId int64 `json:"operationId"`
  25. OperationName string `json:"operationName"`
  26. DystociaReason pasturePb.DystociaReason_Kind `json:"dystociaReason"`
  27. Remarks string `json:"remarks"`
  28. CreatedAt int64 `json:"created_at"`
  29. UpdatedAt int64 `json:"updated_at"`
  30. }
  31. func (e *EventCalving) TableName() string {
  32. return "event_calving"
  33. }
  34. func NewEventCalving(cow *Cow) *EventCalving {
  35. return &EventCalving{
  36. CowId: cow.Id,
  37. CowKind: cow.CowKind,
  38. CowType: cow.CowType,
  39. EarNumber: cow.EarNumber,
  40. PenId: cow.PenId,
  41. BullNumber: cow.LastBullNumber,
  42. Status: pasturePb.IsShow_No,
  43. PlanDay: util.TimeParseLocalUnix(time.Now().Format(LayoutTime)),
  44. EndDay: util.TimeParseLocalEndUnix(time.Now().Format(LayoutTime)),
  45. }
  46. }
  47. func NewEventCalvingList(cowList []*Cow) []*EventCalving {
  48. eventCalvingList := make([]*EventCalving, 0)
  49. for _, cow := range cowList {
  50. eventCalvingList = append(eventCalvingList, NewEventCalving(cow))
  51. }
  52. return eventCalvingList
  53. }
  54. type EventCalvingList struct {
  55. EventCalving
  56. PenName string `json:"pen_name"`
  57. StaffMemberName string `json:"staff_member_name"`
  58. }
  59. type EventCalvingListSlice []*EventCalvingList
  60. func (e EventCalvingListSlice) ToPB(req []*CalvingCalf) []*pasturePb.LavingList {
  61. var list []*pasturePb.LavingList
  62. for _, item := range e {
  63. CalfItemList := make([]*pasturePb.CalfItem, 0)
  64. for _, v := range req {
  65. if v.CalvingId != item.Id {
  66. continue
  67. }
  68. CalfItemList = append(CalfItemList, &pasturePb.CalfItem{
  69. EarNumber: v.EarNumber,
  70. Sex: v.Sex,
  71. Weight: float32(v.BirthWeight) / 1000,
  72. IsAdoption: v.IsAdoption,
  73. IsLive: v.IsLive,
  74. CreatedAt: int32(v.CreatedAt),
  75. UpdatedAt: int32(v.UpdatedAt),
  76. PenId: v.PenId,
  77. Remarks: v.Remarks,
  78. MotherId: int32(v.MotherId),
  79. Id: int32(v.Id),
  80. })
  81. }
  82. list = append(list, &pasturePb.LavingList{
  83. Id: int32(item.Id),
  84. CowId: int32(item.CowId),
  85. Lact: item.Lact,
  86. PenId: item.PenId,
  87. PenName: item.PenName,
  88. CalvingAt: int32(item.PlanDay),
  89. ChildNumber: int32(item.ChildNumber),
  90. DaysPregnant: int32(item.PregnancyAge),
  91. OperationId: int32(item.OperationId),
  92. OperationName: item.OperationName,
  93. CalvingLevel: item.CalvingLevel,
  94. Remarks: item.Remarks,
  95. CreatedAt: int32(item.CreatedAt),
  96. UpdatedAt: int32(item.UpdatedAt),
  97. DystociaReason: item.DystociaReason,
  98. CalfItemList: CalfItemList,
  99. })
  100. }
  101. return list
  102. }
  103. type EventCalvingSlice []*EventCalving
  104. func (e EventCalvingSlice) ToPB() []*pasturePb.CalvingReportTable {
  105. res := make([]*pasturePb.CalvingReportTable, len(e))
  106. for i, v := range e {
  107. res[i] = &pasturePb.CalvingReportTable{
  108. StatisticMethod: v.Remarks,
  109. Twins: 0,
  110. TwinsRate: 0,
  111. Bulls: 0,
  112. BullsRate: 0,
  113. Cows: 0,
  114. CowsRate: 0,
  115. SurviveCount: 0,
  116. SurviveRate: 0,
  117. DieCount: 0,
  118. DieRate: 0,
  119. BullsDieCount: 0,
  120. BullsDieRate: 0,
  121. CowsDieCount: 0,
  122. CowsDieRate: 0,
  123. AdoptCount: 0,
  124. AdoptRate: 0,
  125. PrematureLaborCount: 0,
  126. PrematureLaborRate: 0,
  127. LateLaborCount: 0,
  128. LateLaborRate: 0,
  129. NormalLaborCount: 0,
  130. }
  131. }
  132. return res
  133. }