event_cow_same_time.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. PlanDay int64 `json:"planDay"`
  91. }
  92. type SameTimeBodySlice []*SameTimeItemBody
  93. func (s SameTimeBodySlice) ToPB(
  94. breedStatusMap map[pasturePb.BreedStatus_Kind]string,
  95. penMap map[int32]*Pen,
  96. sameTimeTypeMap map[pasturePb.SameTimeType_Kind]string,
  97. ) []*pasturePb.SameTimeItems {
  98. res := make([]*pasturePb.SameTimeItems, len(s))
  99. for i, v := range s {
  100. calvingAtFormat, abortionAtFormat, playDayAtFormat := "", "", ""
  101. if v.LastCalvingAt > 0 {
  102. calvingAtFormat = time.Unix(v.LastCalvingAt, 0).Format(LayoutDate2)
  103. }
  104. if v.LastAbortionAt > 0 {
  105. abortionAtFormat = time.Unix(v.LastAbortionAt, 0).Format(LayoutDate2)
  106. }
  107. if v.PlanDay > 0 {
  108. playDayAtFormat = time.Unix(v.PlanDay, 0).Format(LayoutDate2)
  109. }
  110. res[i] = &pasturePb.SameTimeItems{
  111. Id: int32(v.Id),
  112. CowId: int32(v.CowId),
  113. EarNumber: v.EarNumber,
  114. BreedStatus: v.BreedStatus,
  115. BreedStatusName: breedStatusMap[v.BreedStatus],
  116. PenName: v.PenName,
  117. PenId: v.PenId,
  118. Lact: v.Lact,
  119. CalvingAge: v.CalvingAge,
  120. AbortionAge: v.AbortionAge,
  121. DayAge: v.DayAge,
  122. Status: v.Status,
  123. SameTimeTypeName: sameTimeTypeMap[v.SameTimeType],
  124. CalvingAtFormat: calvingAtFormat,
  125. AbortionAtFormat: abortionAtFormat,
  126. MatingTimes: v.MatingTimes,
  127. SameTimeName: v.SameTimeName,
  128. PlanDay: playDayAtFormat,
  129. }
  130. }
  131. return res
  132. }
  133. type EventCowSameTimeSlice []*EventCowSameTime
  134. func (s EventCowSameTimeSlice) ToPB(sameTimeTypeMap map[pasturePb.SameTimeType_Kind]string) []*pasturePb.EventSameTime {
  135. res := make([]*pasturePb.EventSameTime, len(s))
  136. for i, v := range s {
  137. res[i] = &pasturePb.EventSameTime{
  138. CowId: int32(v.CowId),
  139. PenId: v.PenId,
  140. DrugsId: int32(v.DrugsId),
  141. Usage: v.Usage,
  142. Lact: v.Lact,
  143. SameTimeId: int32(v.SameTimeId),
  144. SameTimeType: v.SameTimeType,
  145. SameTimeTypeName: sameTimeTypeMap[v.SameTimeType],
  146. }
  147. }
  148. return res
  149. }