event_sale.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package model
  2. import (
  3. "strings"
  4. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  5. )
  6. type EventSale struct {
  7. Id int64 `json:"id"`
  8. PastureId int64 `json:"pastureId"`
  9. DealerId int32 `json:"dealerId"`
  10. DealerName string `json:"dealerName"`
  11. SalePrice float64 `json:"salePrice"`
  12. SaleAllWeight int32 `json:"saleAllWeight"`
  13. SaleAllAmount float64 `json:"saleAllAmount"`
  14. SaleCowCount int32 `json:"saleCowCount"`
  15. SaleKind pasturePb.SalesType_Kind `json:"saleKind"`
  16. OutReasonsKind pasturePb.OutReasons_Kind `json:"outReasonsKind"`
  17. OutReasonsName string `json:"outReasonsName"`
  18. SaleAt int64 `json:"saleAt"`
  19. SaleTicker string `json:"saleTicker"`
  20. QuarantineReport string `json:"quarantineReport"`
  21. Remarks string `json:"remarks"`
  22. OperationId int64 `json:"operationId"`
  23. OperationName string `json:"operationName"`
  24. MessageId int64 `json:"messageId"`
  25. MessageName string `json:"messageName"`
  26. CreatedAt int64 `json:"createdAt"`
  27. UpdatedAt int64 `json:"updatedAt"`
  28. }
  29. func (e *EventSale) TableName() string {
  30. return "event_sale"
  31. }
  32. func NewEventSale(pastureId int64, dealerInfo *SaleDealer, req *pasturePb.EventCowSale, operationUser, currUser *SystemUser) *EventSale {
  33. return &EventSale{
  34. PastureId: pastureId,
  35. DealerId: dealerInfo.Id,
  36. DealerName: dealerInfo.Name,
  37. SalePrice: float64(req.SalePrice),
  38. SaleAllWeight: int32(req.SaleAllWeight * 1000),
  39. SaleAllAmount: float64(req.SaleAllPrice),
  40. SaleCowCount: int32(len(req.EarNumbers)),
  41. SaleKind: req.SalesType,
  42. OutReasonsKind: req.OutReasonsKind,
  43. OutReasonsName: req.OutReasonsName,
  44. SaleAt: int64(req.SaleAt),
  45. SaleTicker: strings.Join(req.SaleTicket, ","),
  46. QuarantineReport: strings.Join(req.QuarantineReport, ","),
  47. Remarks: req.Remarks,
  48. OperationId: operationUser.Id,
  49. OperationName: operationUser.Name,
  50. MessageId: currUser.Id,
  51. MessageName: currUser.Name,
  52. }
  53. }
  54. type EventSaleSlice []*EventSale
  55. func (e EventSaleSlice) ToPB(eventSaleCarMap map[int64][]*EventSaleCar, eventSaleCowMap map[int64][]*EventSaleCow) []*pasturePb.EventCowSale {
  56. res := make([]*pasturePb.EventCowSale, len(e))
  57. for i, v := range e {
  58. saleVehicleItems := make([]*pasturePb.SaleVehicleItem, 0)
  59. if eventSaleCarItems, ok := eventSaleCarMap[v.Id]; ok {
  60. for _, item := range eventSaleCarItems {
  61. es, weighbridgePhotos, vehiclePhotos := make([]string, 0), make([]string, 0), make([]string, 0)
  62. if item.EarNumbers != "" {
  63. es = strings.Split(item.EarNumbers, ",")
  64. }
  65. if item.WeighbridgePhotos != "" {
  66. weighbridgePhotos = strings.Split(item.WeighbridgePhotos, ",")
  67. }
  68. if item.CarPhotos != "" {
  69. vehiclePhotos = strings.Split(item.CarPhotos, ",")
  70. }
  71. saleVehicleItem := &pasturePb.SaleVehicleItem{
  72. CarNumber: item.CarNumber,
  73. CowCount: item.CowCount,
  74. CowWeight: float32(item.CowWeight) / 1000,
  75. OutboundTicket: item.OutboundTicket,
  76. WeighbridgePhotos: weighbridgePhotos,
  77. VehiclePhotos: vehiclePhotos,
  78. EarNumbers: es,
  79. }
  80. saleVehicleItems = append(saleVehicleItems, saleVehicleItem)
  81. }
  82. }
  83. earNumbers := make([]string, 0)
  84. saleCount := int32(0)
  85. if cowList, ok := eventSaleCowMap[v.Id]; ok {
  86. for _, cow := range cowList {
  87. earNumbers = append(earNumbers, cow.EarNumber)
  88. saleCount++
  89. }
  90. }
  91. res[i] = &pasturePb.EventCowSale{
  92. DealerId: v.DealerId,
  93. DealerName: v.DealerName,
  94. SaleAt: int32(v.SaleAt),
  95. EarNumbers: earNumbers,
  96. SalesType: v.SaleKind,
  97. OutReasonsKind: v.OutReasonsKind,
  98. OutReasonsName: v.OutReasonsName,
  99. SaleAllWeight: float32(v.SaleAllWeight) / 1000,
  100. SaleAllPrice: float32(v.SaleAllAmount),
  101. SalePrice: float32(v.SalePrice),
  102. OperationId: int32(v.OperationId),
  103. OperationName: v.OperationName,
  104. Remarks: v.Remarks,
  105. SaleTicket: strings.Split(v.SaleTicker, ","),
  106. QuarantineReport: strings.Split(v.QuarantineReport, ","),
  107. SaleVehicleItems: saleVehicleItems,
  108. SaleCount: saleCount,
  109. }
  110. }
  111. return res
  112. }
  113. type EventSaleModel struct {
  114. CowList []*Cow
  115. SalesType pasturePb.SalesType_Kind
  116. SaleAt int64
  117. EventSaleCarList []*EventSaleCar
  118. EventSaleCowList []*EventSaleCow
  119. NeckRingList []*NeckRing
  120. EventCowLog []*EventCowLog
  121. }