statistic_service.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package backend
  2. import (
  3. "context"
  4. "fmt"
  5. "kpt-tmr-group/model"
  6. "kpt-tmr-group/pkg/xerr"
  7. operationPb "kpt-tmr-group/proto/go/backend/operation"
  8. "net/http"
  9. "time"
  10. )
  11. func (s *StoreEntry) SearchFormulaEstimateList(ctx context.Context, req *operationPb.SearchFormulaEstimateRequest) (*operationPb.SearchFormulaEstimateResponse, error) {
  12. startTime, err := time.Parse(model.LayoutTime, req.StartTime)
  13. if err != nil {
  14. return nil, xerr.WithStack(err)
  15. }
  16. endTime, err := time.Parse(model.LayoutTime, req.EndTime)
  17. if err != nil {
  18. return nil, xerr.WithStack(err)
  19. }
  20. startTimeUnix := startTime.Unix()
  21. endTimeUnix := endTime.Unix()
  22. formulaEstimate := make([]*model.FormulaEstimate, 0)
  23. var count int64 = 0
  24. pref := s.DB.Model(new(model.FormulaEstimate))
  25. if req.Name != "" {
  26. pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%"))
  27. }
  28. if startTimeUnix > 0 && endTimeUnix > 0 && endTimeUnix >= startTimeUnix {
  29. pref.Where("created_at BETWEEN ? AND ?", startTimeUnix, endTimeUnix)
  30. }
  31. if req.SearchType == 1 {
  32. pref.Where("feed_formula_name = ?", req.Name)
  33. } else {
  34. pref.Where("barn_id = ?", req.Name)
  35. }
  36. if err = pref.Order("id desc").Count(&count).Limit(int(req.Pagination.PageSize)).Offset(int(req.Pagination.PageOffset)).
  37. Find(&formulaEstimate).Error; err != nil {
  38. return nil, xerr.WithStack(err)
  39. }
  40. return &operationPb.SearchFormulaEstimateResponse{
  41. Code: http.StatusOK,
  42. Msg: "ok",
  43. Data: &operationPb.SearchFormulaEstimate{
  44. Page: req.Pagination.Page,
  45. Total: int32(count),
  46. PageSize: req.Pagination.PageSize,
  47. List: model.FormulaEstimateSlice(formulaEstimate).ToPB(),
  48. },
  49. }, nil
  50. }