event_calving.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  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. PastureId int64 `json:"pastureId"`
  10. CowId int64 `json:"cowId"`
  11. CowType pasturePb.CowType_Kind `json:"cowType"`
  12. CowKind pasturePb.CowKind_Kind `json:"cowKind"`
  13. EarNumber string `json:"earNumber"`
  14. Lact int32 `json:"lact"`
  15. DayAge int32 `json:"dayAge"`
  16. PlanDay int64 `json:"planDay"`
  17. RealityDay int64 `json:"realityDay"`
  18. EndDay int64 `json:"endDay"`
  19. Status pasturePb.IsShow_Kind `json:"status"`
  20. PenId int32 `json:"penId"`
  21. ChildNumber int32 `json:"childNumber"`
  22. BullNumber string `json:"bullNumber"`
  23. PregnancyAge int32 `json:"pregnancyAge"`
  24. CalvingLevel pasturePb.CalvingLevel_Kind `json:"calvingLevel"`
  25. OperationId int64 `json:"operationId"`
  26. OperationName string `json:"operationName"`
  27. MessageId int64 `json:"messageId"`
  28. MessageName string `json:"messageName"`
  29. DystociaReason pasturePb.DystociaReason_Kind `json:"dystociaReason"`
  30. IsInducingChildbirth pasturePb.IsShow_Kind `json:"isInducingChildbirth"`
  31. Remarks string `json:"remarks"`
  32. CreatedAt int64 `json:"created_at"`
  33. UpdatedAt int64 `json:"updated_at"`
  34. }
  35. func (e *EventCalving) TableName() string {
  36. return "event_calving"
  37. }
  38. func (e *EventCalving) EventUpdate(operationUser, currentUser *SystemUser, req *pasturePb.EventCalving, cow *Cow) {
  39. if operationUser != nil {
  40. e.OperationId = operationUser.Id
  41. e.OperationName = operationUser.Name
  42. }
  43. e.RealityDay = int64(req.CalvingAt)
  44. e.DayAge = cow.GetDayAge()
  45. e.PregnancyAge = cow.GetDaysPregnant()
  46. e.CalvingLevel = req.CalvingLevel
  47. e.BullNumber = cow.LastBullNumber
  48. e.ChildNumber = req.ChildNumber
  49. e.Status = pasturePb.IsShow_Ok
  50. e.PenId = cow.PenId
  51. e.IsInducingChildbirth = req.IsInducingChildbirth
  52. e.Remarks = req.Remarks
  53. e.DystociaReason = req.DystociaReason
  54. e.MessageId = currentUser.Id
  55. e.MessageName = currentUser.Name
  56. }
  57. func NewEventCalving(pastureId int64, cow *Cow) *EventCalving {
  58. return &EventCalving{
  59. PastureId: pastureId,
  60. CowId: cow.Id,
  61. Lact: cow.Lact,
  62. CowKind: cow.CowKind,
  63. CowType: cow.CowType,
  64. EarNumber: cow.EarNumber,
  65. PenId: cow.PenId,
  66. BullNumber: cow.LastBullNumber,
  67. Status: pasturePb.IsShow_No,
  68. PlanDay: util.TimeParseLocalUnix(time.Now().Format(LayoutTime)),
  69. EndDay: util.TimeParseLocalEndUnix(time.Now().Format(LayoutTime)),
  70. }
  71. }
  72. func NewEventCalvingList(pastureId int64, cowList []*Cow) []*EventCalving {
  73. eventCalvingList := make([]*EventCalving, 0)
  74. for _, cow := range cowList {
  75. eventCalvingList = append(eventCalvingList, NewEventCalving(pastureId, cow))
  76. }
  77. return eventCalvingList
  78. }
  79. type EventCalvingList struct {
  80. EventCalving
  81. PenName string `json:"pen_name"`
  82. StaffMemberName string `json:"staff_member_name"`
  83. }
  84. type EventCalvingListSlice []*EventCalvingList
  85. func (e EventCalvingListSlice) ToPB(req []*CalvingCalf) []*pasturePb.LavingList {
  86. var list []*pasturePb.LavingList
  87. for _, item := range e {
  88. CalfItemList := make([]*pasturePb.CalfItem, 0)
  89. for _, v := range req {
  90. if v.CalvingId != item.Id {
  91. continue
  92. }
  93. CalfItemList = append(CalfItemList, &pasturePb.CalfItem{
  94. EarNumber: v.EarNumber,
  95. Sex: v.Sex,
  96. Weight: float32(v.BirthWeight) / 1000,
  97. IsAdoption: v.IsAdoption,
  98. IsLive: v.IsLive,
  99. CreatedAt: int32(v.CreatedAt),
  100. UpdatedAt: int32(v.UpdatedAt),
  101. PenId: v.PenId,
  102. Remarks: v.Remarks,
  103. MotherId: int32(v.MotherId),
  104. Id: int32(v.Id),
  105. })
  106. }
  107. list = append(list, &pasturePb.LavingList{
  108. Id: int32(item.Id),
  109. CowId: int32(item.CowId),
  110. Lact: item.Lact,
  111. PenId: item.PenId,
  112. PenName: item.PenName,
  113. CalvingAt: int32(item.PlanDay),
  114. ChildNumber: int32(item.ChildNumber),
  115. DaysPregnant: int32(item.PregnancyAge),
  116. OperationId: int32(item.OperationId),
  117. OperationName: item.OperationName,
  118. CalvingLevel: item.CalvingLevel,
  119. Remarks: item.Remarks,
  120. CreatedAt: int32(item.CreatedAt),
  121. UpdatedAt: int32(item.UpdatedAt),
  122. DystociaReason: item.DystociaReason,
  123. CalfItemList: CalfItemList,
  124. })
  125. }
  126. return list
  127. }
  128. type EventCalvingSlice []*EventCalving
  129. func (e EventCalvingSlice) ToPB() []*pasturePb.CalvingReportTable {
  130. res := make([]*pasturePb.CalvingReportTable, len(e))
  131. for i, v := range e {
  132. res[i] = &pasturePb.CalvingReportTable{
  133. StatisticMethod: v.Remarks,
  134. Twins: 0,
  135. TwinsRate: 0,
  136. Bulls: 0,
  137. BullsRate: 0,
  138. Cows: 0,
  139. CowsRate: 0,
  140. SurviveCount: 0,
  141. SurviveRate: 0,
  142. DieCount: 0,
  143. DieRate: 0,
  144. BullsDieCount: 0,
  145. BullsDieRate: 0,
  146. CowsDieCount: 0,
  147. CowsDieRate: 0,
  148. AdoptCount: 0,
  149. AdoptRate: 0,
  150. PrematureLaborCount: 0,
  151. PrematureLaborRate: 0,
  152. LateLaborCount: 0,
  153. LateLaborRate: 0,
  154. NormalLaborCount: 0,
  155. }
  156. }
  157. return res
  158. }