Эх сурвалжийг харах

crontab: benhavior 栏舍行为数据

Yi 1 долоо хоног өмнө
parent
commit
b9096b33bf

+ 3 - 4
module/crontab/pen_behavior.go

@@ -72,7 +72,6 @@ func (e *Entry) getNeckRingOriginalList(pastureId, maxPenBehavior int64) ([]*mod
 	var neckRingOriginalList []*model.NeckRingOriginal
 	if err := e.DB.Model(new(model.NeckRingOriginal)).
 		Where("id > ? AND pasture_id = ?", maxPenBehavior, pastureId).
-		Where("cow_id > ?", 0).
 		Order("active_date,neck_ring_number,frameid").
 		Limit(int(defaultLimit)).
 		Find(&neckRingOriginalList).Error; err != nil {
@@ -84,13 +83,13 @@ func (e *Entry) getNeckRingOriginalList(pastureId, maxPenBehavior int64) ([]*mod
 // getCowMap 获取牛只信息映射
 func (e *Entry) getCowMap(pastureId int64, neckRingOriginalList []*model.NeckRingOriginal) (map[string]*model.Cow, error) {
 	// 提取牛只ID
-	cowIds := make([]int64, 0, len(neckRingOriginalList))
+	neckRingNumberList := make([]string, 0, len(neckRingOriginalList))
 	for _, v := range neckRingOriginalList {
-		cowIds = append(cowIds, v.Id)
+		neckRingNumberList = append(neckRingNumberList, v.NeckRingNumber)
 	}
 
 	// 获取牛只信息
-	cowInfoList, err := e.GetCowByIds(pastureId, cowIds)
+	cowInfoList, err := e.GetCowByNeckRingNumbers(pastureId, neckRingNumberList)
 	if err != nil {
 		return nil, err
 	}

+ 13 - 0
module/crontab/sql.go

@@ -29,6 +29,7 @@ func (e *Entry) GetCowById(pastureId, cowId int64) (*model.Cow, error) {
 	cowInfo := &model.Cow{}
 	if err := e.DB.Model(new(model.Cow)).
 		Where("id = ?", cowId).
+		Where("pasture_id = ?", pastureId).
 		Where("admission_status = ?", pasturePb.AdmissionStatus_Admission).
 		First(cowInfo).Error; err != nil {
 		return nil, xerr.WithStack(err)
@@ -48,6 +49,18 @@ func (e *Entry) GetCowByIds(pastureId int64, cowIds []int64) ([]*model.Cow, erro
 	return cowInfoList, nil
 }
 
+func (e *Entry) GetCowByNeckRingNumbers(pastureId int64, neckRingNumbers []string) ([]*model.Cow, error) {
+	cowInfoList := make([]*model.Cow, 0)
+	if err := e.DB.Model(new(model.Cow)).
+		Where("pasture_id = ?", pastureId).
+		Where("neck_ring_number IN (?)", neckRingNumbers).
+		Where("admission_status = ?", pasturePb.AdmissionStatus_Admission).
+		Find(&cowInfoList).Error; err != nil {
+		return nil, xerr.WithStack(err)
+	}
+	return cowInfoList, nil
+}
+
 func (e *Entry) GetCowByNeckRingNumber(pastureId int64, neckRingNumber string) (*model.Cow, error) {
 	cowInfo := &model.Cow{}
 	if err := e.DB.Model(new(model.Cow)).