event_cow_same_time.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package model
  2. import (
  3. "time"
  4. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  5. )
  6. type EventCowSameTime struct {
  7. Id int64 `json:"id"`
  8. PastureId int64 `json:"pastureId"`
  9. CowId int64 `json:"cowId"`
  10. EarNumber string `json:"earNumber"`
  11. CowType pasturePb.CowType_Kind `json:"cowType"`
  12. PenId int32 `json:"penId"`
  13. PenName string `json:"penName"`
  14. Lact int32 `json:"lact"`
  15. SameTimeId int64 `json:"sameTimeId"`
  16. SameTimeName string `json:"sameTimeName"`
  17. SameTimeType pasturePb.SameTimeType_Kind `json:"sameTimeType"`
  18. PlanDay int64 `json:"planDay"`
  19. EndDay int64 `json:"endDay"`
  20. RealityDay int64 `json:"realityDay"`
  21. Status pasturePb.IsShow_Kind `json:"status"`
  22. DrugsId int64 `json:"drugsId"`
  23. Unit pasturePb.Unit_Kind `json:"unit"`
  24. Usage float32 `json:"usage"`
  25. Remarks string `json:"remarks"`
  26. OperationId int64 `json:"operationId"`
  27. OperationName string `json:"operationName"`
  28. MessageId int64 `json:"messageId"`
  29. MessageName string `json:"messageName"`
  30. CreatedAt int64 `json:"createdAt"`
  31. UpdatedAt int64 `json:"updatedAt"`
  32. }
  33. func (s *EventCowSameTime) TableName() string {
  34. return "event_cow_same_time"
  35. }
  36. func (s *EventCowSameTime) EventUpdate(drugs *Drugs, usage float32, remarks string, currentUser, operationUser *SystemUser) {
  37. s.Status = pasturePb.IsShow_Ok
  38. s.DrugsId = drugs.Id
  39. s.Unit = drugs.Unit
  40. s.Usage = usage
  41. s.Remarks = remarks
  42. s.OperationId = operationUser.Id
  43. s.OperationName = operationUser.Name
  44. s.MessageId = currentUser.Id
  45. s.MessageName = currentUser.Name
  46. }
  47. func NewEventCowSameTime(pastureId int64, cow *Cow, planTime int64, sameTime *SameTime, sameTimeType pasturePb.SameTimeType_Kind) *EventCowSameTime {
  48. return &EventCowSameTime{
  49. PastureId: pastureId,
  50. CowId: cow.Id,
  51. EarNumber: cow.EarNumber,
  52. Lact: cow.Lact,
  53. CowType: cow.CowType,
  54. PenId: cow.PenId,
  55. SameTimeId: sameTime.Id,
  56. SameTimeName: sameTime.Name,
  57. SameTimeType: sameTimeType,
  58. Status: pasturePb.IsShow_No,
  59. PlanDay: planTime,
  60. EndDay: planTime,
  61. }
  62. }
  63. func NewEventCowSameTimeList(pastureId int64, cowList []*Cow, sameTime *SameTime, planTime int64, sameTimeType pasturePb.SameTimeType_Kind) []*EventCowSameTime {
  64. res := make([]*EventCowSameTime, len(cowList))
  65. for i, cow := range cowList {
  66. res[i] = NewEventCowSameTime(pastureId, cow, planTime, sameTime, sameTimeType)
  67. }
  68. return res
  69. }
  70. type SameTimeItemBody struct {
  71. Id int64 `json:"id"`
  72. CowId int64 `json:"cowId"`
  73. EarNumber string `json:"earNumber"`
  74. BreedStatus pasturePb.BreedStatus_Kind `json:"breedStatus"`
  75. BreedStatusName string `json:"breedStatusName"`
  76. CowType pasturePb.CowType_Kind `json:"cowType"`
  77. CowTypeName string `json:"cowTypeName"`
  78. PenId int32 `json:"penId"`
  79. PenName string `json:"penName"`
  80. Lact int32 `json:"lact"`
  81. CalvingAge int32 `json:"calvingAge"`
  82. AbortionAge int32 `json:"abortionAge"`
  83. DayAge int32 `json:"dayAge"`
  84. Status pasturePb.IsShow_Kind `json:"status"`
  85. SameTimeType pasturePb.SameTimeType_Kind `json:"sameTimeType"`
  86. LastCalvingAt int64 `json:"lastCalvingAt"`
  87. LastAbortionAt int64 `json:"lastAbortionAt"`
  88. MatingTimes int32 `json:"matingTimes"`
  89. SameTimeName string `json:"sameTimeName"`
  90. }
  91. type SameTimeBodySlice []*SameTimeItemBody
  92. func (s SameTimeBodySlice) ToPB(
  93. breedStatusMap map[pasturePb.BreedStatus_Kind]string,
  94. penMap map[int32]*Pen,
  95. sameTimeTypeMap map[pasturePb.SameTimeType_Kind]string,
  96. ) []*pasturePb.SameTimeItems {
  97. res := make([]*pasturePb.SameTimeItems, len(s))
  98. for i, v := range s {
  99. penName, calvingAtFormat, abortionAtFormat := "", "", ""
  100. if pen, ok := penMap[v.PenId]; ok {
  101. penName = pen.Name
  102. }
  103. if v.LastCalvingAt > 0 {
  104. calvingAtFormat = time.Unix(v.LastCalvingAt, 0).Format(LayoutDate2)
  105. }
  106. if v.LastAbortionAt > 0 {
  107. abortionAtFormat = time.Unix(v.LastAbortionAt, 0).Format(LayoutDate2)
  108. }
  109. res[i] = &pasturePb.SameTimeItems{
  110. Id: int32(v.Id),
  111. CowId: int32(v.CowId),
  112. EarNumber: v.EarNumber,
  113. BreedStatus: v.BreedStatus,
  114. BreedStatusName: breedStatusMap[v.BreedStatus],
  115. PenName: penName,
  116. PenId: v.PenId,
  117. Lact: v.Lact,
  118. CalvingAge: v.CalvingAge,
  119. AbortionAge: v.AbortionAge,
  120. DayAge: v.DayAge,
  121. Status: v.Status,
  122. SameTimeTypeName: sameTimeTypeMap[v.SameTimeType],
  123. CalvingAtFormat: calvingAtFormat,
  124. AbortionAtFormat: abortionAtFormat,
  125. MatingTimes: v.MatingTimes,
  126. SameTimeName: v.SameTimeName,
  127. }
  128. }
  129. return res
  130. }
  131. type EventCowSameTimeSlice []*EventCowSameTime
  132. func (s EventCowSameTimeSlice) ToPB(sameTimeTypeMap map[pasturePb.SameTimeType_Kind]string) []*pasturePb.EventSameTime {
  133. res := make([]*pasturePb.EventSameTime, len(s))
  134. for i, v := range s {
  135. res[i] = &pasturePb.EventSameTime{
  136. CowId: int32(v.CowId),
  137. PenId: v.PenId,
  138. DrugsId: int32(v.DrugsId),
  139. Usage: v.Usage,
  140. Lact: v.Lact,
  141. SameTimeId: int32(v.SameTimeId),
  142. SameTimeType: v.SameTimeType,
  143. SameTimeTypeName: sameTimeTypeMap[v.SameTimeType],
  144. }
  145. }
  146. return res
  147. }