feed_template.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package group
  2. import (
  3. "context"
  4. "encoding/json"
  5. "net/http"
  6. "tmr-watch/models"
  7. "tmr-watch/module"
  8. "tmr-watch/pkg/logger/zaplog"
  9. feedPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/pasture"
  10. "go.uber.org/zap"
  11. )
  12. func SearchFeedTemplateList(ctx context.Context, req *feedPb.SearchFeedTemplateRequest) (*feedPb.SearchFeedTemplateResponse, error) {
  13. feedTemplateList, total, err := module.NewSearchFeedTemplateList(ctx, req)
  14. if err != nil {
  15. return nil, err
  16. }
  17. feedDetailVersionLogList, err := module.FeedDetailVersionLogList(ctx)
  18. if err != nil {
  19. return nil, err
  20. }
  21. res := &feedPb.SearchFeedTemplateResponse{
  22. Code: http.StatusOK,
  23. Msg: "ok",
  24. Data: &feedPb.FeedTemplateData{
  25. Page: req.Pagination.Page,
  26. PageSize: req.Pagination.PageSize,
  27. Total: int32(total),
  28. List: models.FeedTemplateSlice(feedTemplateList).ToPB(feedDetailVersionLogList),
  29. },
  30. }
  31. return res, nil
  32. }
  33. func GetFeetTemplateVersion(ctx context.Context, pastureId, feedTemplateId int) (*feedPb.GetFeetTemplateVersionResponse, error) {
  34. feedTemplateData, err := module.SearchFeedTemplateById(ctx, int64(pastureId), int64(feedTemplateId))
  35. if err != nil {
  36. return nil, err
  37. }
  38. historyFeedTemplateDetailList, err := module.SearchFeedTemplateDetailListByFeedTemplateId(ctx, int64(pastureId), int64(feedTemplateId))
  39. if err != nil {
  40. return nil, err
  41. }
  42. newFeedTemplateDetailVersion, err := module.GetFeedDetailVersionByDesc(ctx, int64(pastureId), feedTemplateData.GroupDataId)
  43. if err != nil {
  44. return nil, err
  45. }
  46. newFeedTemplateDetailVersionLogList, err := module.SearchFeedDetailVersionLogById(ctx, int64(pastureId), feedTemplateData.GroupDataId, newFeedTemplateDetailVersion.Id)
  47. if err != nil {
  48. return nil, err
  49. }
  50. res := &feedPb.GetFeetTemplateVersionResponse{
  51. Code: http.StatusOK,
  52. Msg: "ok",
  53. Data: make([]*feedPb.FeetTemplateVersionData, 0),
  54. }
  55. b, _ := json.Marshal(newFeedTemplateDetailVersionLogList)
  56. c, _ := json.Marshal(historyFeedTemplateDetailList)
  57. zaplog.Info("newFeedTemplateDetailVersionLogList", zap.String("ok", string(b)))
  58. zaplog.Info("historyFeedTemplateDetailList", zap.String("ok", string(c)))
  59. // 比例两个配方饲料的不同
  60. for _, n := range newFeedTemplateDetailVersionLogList {
  61. // 更新
  62. for _, v := range historyFeedTemplateDetailList {
  63. if v.FName == n.ForageName {
  64. res.Data = append(res.Data, &feedPb.FeetTemplateVersionData{
  65. ForageName: v.FName,
  66. ForageGroupNameOld: n.ForageName,
  67. ForageGroupName: v.FeedGroup,
  68. ForageNameOld: n.ForageGroupName,
  69. Weight: float32(v.LWeight),
  70. WeightOld: float32(n.Weight),
  71. StirDelay: v.AutoSecond,
  72. StirDelayOld: n.StirDelay,
  73. AllowError: v.Deviation,
  74. AllowErrorOld: n.AllowError,
  75. Sort: v.Sort,
  76. SortOld: n.Sort,
  77. IsLockCowCountRatio: v.IsLockCount,
  78. IsLockCowCountRatioOld: int32(n.IsLockCowCountRatio),
  79. IsModify: v.IsModify,
  80. Status: feedPb.VersionStatus_UPDATE,
  81. })
  82. }
  83. }
  84. // 新增
  85. var insertInfo bool
  86. for _, v := range historyFeedTemplateDetailList {
  87. if v.FName == n.ForageName {
  88. insertInfo = true
  89. }
  90. }
  91. if !insertInfo {
  92. res.Data = append(res.Data, &feedPb.FeetTemplateVersionData{
  93. ForageName: n.ForageName,
  94. ForageGroupName: n.ForageGroupName,
  95. Weight: float32(n.Weight),
  96. StirDelay: n.StirDelay,
  97. AllowError: n.AllowError,
  98. Sort: n.Sort,
  99. IsLockCowCountRatio: int32(n.IsLockCowCountRatio),
  100. Status: feedPb.VersionStatus_ADD,
  101. })
  102. }
  103. }
  104. // 删除
  105. for _, v := range historyFeedTemplateDetailList {
  106. var deleteInfo bool
  107. for _, n := range newFeedTemplateDetailVersionLogList {
  108. if v.FName == n.ForageName {
  109. deleteInfo = true
  110. break
  111. }
  112. }
  113. if !deleteInfo {
  114. res.Data = append(res.Data, &feedPb.FeetTemplateVersionData{
  115. ForageName: v.FName,
  116. ForageGroupName: v.FeedGroup,
  117. Weight: float32(v.LWeight),
  118. StirDelay: v.AutoSecond,
  119. AllowError: v.Deviation,
  120. Sort: v.Sort,
  121. IsLockCowCountRatio: int32(v.IsLockCount),
  122. Status: feedPb.VersionStatus_DELETE,
  123. })
  124. }
  125. }
  126. return res, nil
  127. }
  128. func FeetTemplateUpgradeNewVersion(ctx context.Context, pastureId, feedTemplateId int) error {
  129. return module.FeetTemplateUpgradeNewVersion(ctx, int64(pastureId), int64(feedTemplateId))
  130. }