瀏覽代碼

warning: estrus item update

Yi 3 周之前
父節點
當前提交
97ed783fb6
共有 1 個文件被更改,包括 28 次插入8 次删除
  1. 28 8
      module/backend/neck_ring_warning.go

+ 28 - 8
module/backend/neck_ring_warning.go

@@ -50,13 +50,22 @@ func (s *StoreEntry) NeckRingWarningEstrusOrAbortionCowList(ctx context.Context,
 		pref.Where("b.pen_id IN ?", req.PenIds)
 	}
 
-	if err = pref.Group("a.cow_id").
-		Order("a.date_time,a.level DESC").
-		Count(&count).
-		Limit(int(pagination.PageSize)).
-		Offset(int(pagination.PageOffset)).
-		Find(&neckRingEstrusList).Error; err != nil {
-		return nil, xerr.WithStack(err)
+	// 按照发情时间和发情等级倒叙排序
+	if req.MatingWindowPeriod > 0 {
+		if err = pref.Group("a.cow_id").
+			Order("DATE_FORMAT(a.first_time, '%Y-%m-%d') DESC,a.level DESC").
+			Find(&neckRingEstrusList).Error; err != nil {
+			return nil, xerr.WithStack(err)
+		}
+	} else {
+		if err = pref.Group("a.cow_id").
+			Order("DATE_FORMAT(a.first_time, '%Y-%m-%d') DESC,a.level DESC").
+			Count(&count).
+			Limit(int(pagination.PageSize)).
+			Offset(int(pagination.PageOffset)).
+			Find(&neckRingEstrusList).Error; err != nil {
+			return nil, xerr.WithStack(err)
+		}
 	}
 
 	cowMap := make(map[int64]*model.Cow)
@@ -79,11 +88,22 @@ func (s *StoreEntry) NeckRingWarningEstrusOrAbortionCowList(ctx context.Context,
 			cowMap[cow.Id] = cow
 		}
 	}
-
 	list := model.NeckRingEstrusWarningSlice(neckRingEstrusList).ToPB(cowMap, eventLogMap, req.MatingWindowPeriod)
+	// 分页
 	if req.MatingWindowPeriod > 0 {
 		count = int64(len(list))
+		if int32(count) > pagination.PageOffset {
+			end := pagination.PageOffset + pagination.PageSize
+			if end > int32(count) {
+				end = int32(count)
+			}
+			list = list[pagination.PageOffset:end]
+		} else {
+			// 如果偏移量已超过列表长度,返回空列表
+			list = list[:0]
+		}
 	}
+
 	return &pasturePb.EstrusResponse{
 		Code: http.StatusOK,
 		Msg:  "ok",