1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package backend
- import (
- "context"
- "fmt"
- "kpt-tmr-group/model"
- "kpt-tmr-group/pkg/xerr"
- operationPb "kpt-tmr-group/proto/go/backend/operation"
- "net/http"
- "time"
- )
- func (s *StoreEntry) SearchFormulaEstimateList(ctx context.Context, req *operationPb.SearchFormulaEstimateRequest) (*operationPb.SearchFormulaEstimateResponse, error) {
- startTime, err := time.Parse(model.LayoutTime, req.StartTime)
- if err != nil {
- return nil, xerr.WithStack(err)
- }
- endTime, err := time.Parse(model.LayoutTime, req.EndTime)
- if err != nil {
- return nil, xerr.WithStack(err)
- }
- startTimeUnix := startTime.Unix()
- endTimeUnix := endTime.Unix()
- formulaEstimate := make([]*model.FormulaEstimate, 0)
- var count int64 = 0
- pref := s.DB.Model(new(model.FormulaEstimate))
- if req.Name != "" {
- pref.Where("name like ?", fmt.Sprintf("%s%s%s", "%", req.Name, "%"))
- }
- if startTimeUnix > 0 && endTimeUnix > 0 && endTimeUnix >= startTimeUnix {
- pref.Where("created_at BETWEEN ? AND ?", startTimeUnix, endTimeUnix)
- }
- if req.SearchType == 1 {
- pref.Where("feed_formula_name = ?", req.Name)
- } else {
- pref.Where("barn_id = ?", req.Name)
- }
- if err = pref.Order("id desc").Count(&count).Limit(int(req.Pagination.PageSize)).Offset(int(req.Pagination.PageOffset)).
- Find(&formulaEstimate).Error; err != nil {
- return nil, xerr.WithStack(err)
- }
- return &operationPb.SearchFormulaEstimateResponse{
- Code: http.StatusOK,
- Msg: "ok",
- Data: &operationPb.SearchFormulaEstimate{
- Page: req.Pagination.Page,
- Total: int32(count),
- PageSize: req.Pagination.PageSize,
- List: model.FormulaEstimateSlice(formulaEstimate).ToPB(),
- },
- }, nil
- }
|