data_warning_items.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package model
  2. import (
  3. "fmt"
  4. "strconv"
  5. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  6. )
  7. const (
  8. FieldName = "day_age"
  9. )
  10. type DataWarningItems struct {
  11. Id int64 `json:"id"`
  12. PastureId int64 `json:"pastureId"`
  13. UserId int64 `json:"userId"`
  14. WarningId int64 `json:"warningId"`
  15. GroupId int32 `json:"groupId"`
  16. FieldName string `json:"fieldName"`
  17. FieldDesc string `json:"fieldDesc"`
  18. Operator string `json:"operator"`
  19. Value string `json:"value"`
  20. IsCondition pasturePb.IsShow_Kind `json:"isCondition"`
  21. IsShow pasturePb.IsShow_Kind `json:"isShow"`
  22. CreatedAt int64 `json:"createdAt"`
  23. UpdatedAt int64 `json:"updatedAt"`
  24. }
  25. func (d *DataWarningItems) TableName() string {
  26. return "data_warning_items"
  27. }
  28. var DefaultDataWarningItemsMap = map[pasturePb.DataWarningType_Kind][]*pasturePb.WarningDataSet{
  29. pasturePb.DataWarningType_Sale_Standard: {
  30. {
  31. GroupId: 1,
  32. FieldName: "admission_age",
  33. FieldDesc: "在群天数",
  34. Operator: ">=",
  35. Value: "100",
  36. IsShow: pasturePb.IsShow_Ok,
  37. },
  38. {
  39. GroupId: 1,
  40. FieldName: "current_weight",
  41. FieldDesc: "体重",
  42. Operator: ">=",
  43. Value: "700",
  44. IsShow: pasturePb.IsShow_Ok,
  45. },
  46. },
  47. pasturePb.DataWarningType_UnPregnant_Mating_Time: {
  48. {
  49. GroupId: 1,
  50. FieldName: "mating_times",
  51. FieldDesc: "配次",
  52. Operator: ">",
  53. Value: "2",
  54. IsShow: pasturePb.IsShow_Ok,
  55. },
  56. },
  57. pasturePb.DataWarningType_Abortion_Time: {
  58. {
  59. GroupId: 1,
  60. FieldName: "abortion_times",
  61. FieldDesc: "流产次数",
  62. Operator: ">",
  63. Value: "3",
  64. IsShow: pasturePb.IsShow_Ok,
  65. },
  66. },
  67. pasturePb.DataWarningType_Over_Age_UnPaired_Young: {
  68. {
  69. GroupId: 1,
  70. FieldName: "day_age",
  71. FieldDesc: "月龄",
  72. Operator: ">=",
  73. Value: "150",
  74. IsShow: pasturePb.IsShow_Ok,
  75. },
  76. },
  77. pasturePb.DataWarningType_Over_Age_UnPregnant_Young: {
  78. {
  79. GroupId: 1,
  80. FieldName: "day_age",
  81. FieldDesc: "月龄",
  82. Operator: ">=",
  83. Value: "660",
  84. IsShow: pasturePb.IsShow_Ok,
  85. },
  86. {
  87. GroupId: 2,
  88. FieldName: "cow_type",
  89. FieldDesc: "牛只类型",
  90. Operator: "=",
  91. Value: fmt.Sprintf("%d", pasturePb.CowType_Fattening_Calf),
  92. IsShow: pasturePb.IsShow_Ok,
  93. },
  94. {
  95. GroupId: 2,
  96. FieldName: "cow_type",
  97. FieldDesc: "牛只类型",
  98. Operator: "=",
  99. Value: fmt.Sprintf("%d", pasturePb.CowType_Reserve_Calf),
  100. IsShow: pasturePb.IsShow_Ok,
  101. },
  102. {
  103. GroupId: 3,
  104. FieldName: "is_pregnant",
  105. FieldDesc: "是否怀孕",
  106. Operator: "=",
  107. Value: fmt.Sprintf("%d", pasturePb.IsShow_No),
  108. IsShow: pasturePb.IsShow_Ok,
  109. },
  110. },
  111. pasturePb.DataWarningType_Over_Month_UnSale: {
  112. {
  113. GroupId: 1,
  114. FieldName: "day_age",
  115. FieldDesc: "月龄",
  116. Operator: ">=",
  117. Value: "540",
  118. IsShow: pasturePb.IsShow_Ok,
  119. },
  120. {
  121. GroupId: 2,
  122. FieldName: "purpose_kind",
  123. FieldDesc: "用途",
  124. Operator: "=",
  125. Value: fmt.Sprintf("%d", pasturePb.Purpose_Fatten),
  126. IsShow: pasturePb.IsShow_Ok,
  127. },
  128. },
  129. }
  130. func DataWarningItemsInitData(pastureId int64, dataWarning *DataWarning) []*DataWarningItems {
  131. dataWarningItems := make([]*DataWarningItems, 0)
  132. for _, v := range DefaultDataWarningItemsMap[dataWarning.Kind] {
  133. dataWarningItems = append(dataWarningItems, NewDataWarningItems(pastureId, DefaultUserId, dataWarning, v))
  134. }
  135. return dataWarningItems
  136. }
  137. func NewDataWarningItems(pastureId, userId int64, dataWarning *DataWarning, req *pasturePb.WarningDataSet) *DataWarningItems {
  138. if req.FieldName == FieldName {
  139. v1, _ := strconv.ParseInt(req.Value, 10, 64)
  140. req.Value = fmt.Sprintf("%d", v1*30)
  141. }
  142. return &DataWarningItems{
  143. PastureId: pastureId,
  144. UserId: userId,
  145. WarningId: dataWarning.Id,
  146. GroupId: req.GroupId,
  147. FieldName: req.FieldName,
  148. FieldDesc: req.FieldDesc,
  149. Operator: req.Operator,
  150. Value: req.Value,
  151. IsShow: req.IsShow,
  152. }
  153. }
  154. type DataWarningItemsSlice []*DataWarningItems
  155. func (d DataWarningItemsSlice) ToPB(dataWarning []*DataWarning) []*pasturePb.WarningDataSet {
  156. res := make([]*pasturePb.WarningDataSet, 0)
  157. for _, v := range d {
  158. name := ""
  159. kind := pasturePb.DataWarningType_Invalid
  160. for _, w := range dataWarning {
  161. if w.Id == v.WarningId {
  162. name = w.Name
  163. kind = w.Kind
  164. }
  165. }
  166. if name == "" || v.Id <= 0 || v.IsCondition == pasturePb.IsShow_Ok {
  167. continue
  168. }
  169. if v.FieldName == FieldName {
  170. v1, _ := strconv.ParseInt(v.Value, 10, 64)
  171. v.Value = fmt.Sprintf("%d", v1/30)
  172. }
  173. res = append(res, &pasturePb.WarningDataSet{
  174. Id: int32(v.Id),
  175. WarningId: int32(v.WarningId),
  176. GroupId: v.GroupId,
  177. Name: name,
  178. Kind: kind,
  179. FieldDesc: v.FieldDesc,
  180. FieldName: v.FieldName,
  181. Operator: v.Operator,
  182. Value: v.Value,
  183. IsShow: v.IsShow,
  184. })
  185. }
  186. return res
  187. }