Ver Fonte

model: estrus update

Yi há 1 mês atrás
pai
commit
eb7a196bd9

+ 5 - 5
model/calendar.go

@@ -50,16 +50,16 @@ var CalendarTypeColorMap = map[pasturePb.CalendarType_Kind]string{
 }
 
 var CalendarTypeEndDaysMap = map[pasturePb.CalendarType_Kind]int{
-	pasturePb.CalendarType_Immunisation:    6,
+	pasturePb.CalendarType_Immunisation:    7,
 	pasturePb.CalendarType_PG:              0,
 	pasturePb.CalendarType_RnGH:            0,
-	pasturePb.CalendarType_Pregnancy_Check: 6,
+	pasturePb.CalendarType_Pregnancy_Check: 7,
 	pasturePb.CalendarType_WorkOrder:       -1,
 	pasturePb.CalendarType_Disease:         -1,
-	pasturePb.CalendarType_Calving:         14,
-	pasturePb.CalendarType_Weaning:         6,
+	pasturePb.CalendarType_Calving:         15,
+	pasturePb.CalendarType_Weaning:         7,
 	pasturePb.CalendarType_Mating:          0,
-	pasturePb.CalendarType_DryMilk:         14,
+	pasturePb.CalendarType_DryMilk:         15,
 }
 
 type CalendarSlice []*Calendar

+ 3 - 1
model/data_warning_items.go

@@ -6,6 +6,7 @@ import (
 
 type DataWarningItems struct {
 	Id        int64                 `json:"id"`
+	PastureId int64                 `json:"pastureId"`
 	UserId    int64                 `json:"userId"`
 	WarningId int64                 `json:"warningId"`
 	GroupId   int32                 `json:"groupId"`
@@ -22,8 +23,9 @@ func (d *DataWarningItems) TableName() string {
 	return "data_warning_items"
 }
 
-func NewDataWarningItems(userId int64, dataWarning *DataWarning, req *pasturePb.WarningDataSet) *DataWarningItems {
+func NewDataWarningItems(pastureId, userId int64, dataWarning *DataWarning, req *pasturePb.WarningDataSet) *DataWarningItems {
 	return &DataWarningItems{
+		PastureId: pastureId,
 		UserId:    userId,
 		WarningId: dataWarning.Id,
 		GroupId:   req.GroupId,

+ 5 - 2
model/neck_ring_estrus_warning.go

@@ -114,9 +114,12 @@ func (n NeckRingEstrusWarningSlice) ToPB(cowMap map[int64]*Cow, eventLogMap map[
 		}
 
 		firstTimeParseLocal, _ := util.TimeParseLocal(LayoutTime, v.FirstTime)
-		dateTimeParseLocal, _ := util.TimeParseLocal(LayoutTime, v.DateTime)
 		afterAlarmTimeForHours := int32(nowTime.Sub(firstTimeParseLocal).Hours())
-		postPeakTimeForHours := int32(nowTime.Sub(dateTimeParseLocal).Hours())
+		postPeakTimeForHours := int32(0)
+		if v.IsPeak == pasturePb.IsShow_Ok {
+			dateTimeParseLocal, _ := util.TimeParseLocal(LayoutTime, v.DateTime)
+			postPeakTimeForHours = int32(nowTime.Sub(dateTimeParseLocal).Hours())
+		}
 
 		data := &pasturePb.EstrusItem{
 			Id:                     int32(v.Id),

+ 1 - 1
module/backend/calendar.go

@@ -36,7 +36,7 @@ func (s *StoreEntry) CalendarToDoHistoryList(ctx context.Context, pastureId int6
 		whereSql += fmt.Sprintf(` AND ear_number = '%s' `, earNumber)
 	}
 	whereSql += fmt.Sprintf(" AND pasture_id = %d ", pastureId)
-	whereSql1 := whereSql + fmt.Sprintf(` AND end_day <= %d `, util.TimeParseLocalEndUnix(time.Now().Local().Format(model.LayoutDate2)))
+	whereSql1 := whereSql + fmt.Sprintf(` AND end_day >= %d `, util.TimeParseLocalEndUnix(time.Now().Local().Format(model.LayoutDate2)))
 
 	calendarToDoList := make([]*pasturePb.CalendarToDoList, 0)
 	sql := `SELECT a.cow_id,b.pen_name,a.calendar_type_name,a.calendar_type_kind as calendar_type,DATE_FORMAT(FROM_UNIXTIME(a.plan_day), '%Y-%m-%d') AS plan_day,

+ 22 - 10
module/backend/dashboard.go

@@ -230,7 +230,7 @@ func (s *StoreEntry) DataWarningSet(ctx context.Context, req *pasturePb.IndexDat
 	if len(userDataWarningList) <= 0 { // 新增
 		return s.addUserDataWarning(ctx, pastureId, userModel.SystemUser.Id, defaultDataWarning, req.WarningDataSet)
 	}
-	return s.updateUserDataWarning(ctx, userModel.SystemUser.Id, userDataWarningList, req.WarningDataSet)
+	return s.updateUserDataWarning(ctx, pastureId, userModel.SystemUser.Id, userDataWarningList, req.WarningDataSet)
 }
 
 func (s *StoreEntry) DataWarningList(ctx context.Context) (*pasturePb.IndexDataWarningResponse, error) {
@@ -247,6 +247,12 @@ func (s *StoreEntry) DataWarningList(ctx context.Context) (*pasturePb.IndexDataW
 
 	var isExist bool // 判断是否存在自己的设置的数据
 	userDataWarning, _ := s.FindDataWarning(ctx, pastureId, userModel.SystemUser.Id)
+	zaplog.Info("defaultDataWarning",
+		zap.Any("defaultDataWarning", defaultDataWarning),
+		zap.Any("pastureId", pastureId),
+		zap.Any("userDataWarning", userDataWarning),
+		zap.Any("userId", userModel.SystemUser.Id),
+	)
 	if len(userDataWarning) == 0 {
 		// 如果用户没有配置自己的预警数据,则使用默认数据
 		isExist = true
@@ -265,17 +271,17 @@ func (s *StoreEntry) DataWarningList(ctx context.Context) (*pasturePb.IndexDataW
 
 	// 需要重新计算更新的warningId
 	if len(needUpdateWarningIds) > 0 {
-		s.UpdateWarningData(ctx, needUpdateWarningIds)
+		s.UpdateWarningData(ctx, pastureId, needUpdateWarningIds)
 	}
 
 	userDataWarningItems := make([]*model.DataWarningItems, 0)
 	// 计算过后重新获取数据
 	if isExist {
 		userDataWarning, _ = s.FindDataWarning(ctx, pastureId, model.DefaultUserId)
-		userDataWarningItems, _ = s.FindDataWarningItems(ctx, model.DefaultUserId)
+		userDataWarningItems, _ = s.FindDataWarningItems(ctx, pastureId, model.DefaultUserId)
 	} else {
 		userDataWarning, _ = s.FindDataWarning(ctx, pastureId, userModel.SystemUser.Id)
-		userDataWarningItems, _ = s.FindDataWarningItems(ctx, userModel.SystemUser.Id)
+		userDataWarningItems, _ = s.FindDataWarningItems(ctx, pastureId, userModel.SystemUser.Id)
 	}
 
 	return &pasturePb.IndexDataWarningResponse{
@@ -319,7 +325,7 @@ func (s *StoreEntry) addUserDataWarning(ctx context.Context, pastureId, userId i
 			}
 
 			// 创建预警项数据
-			if err := tx.Create(model.NewDataWarningItems(userId, dataWarning, set)).Error; err != nil {
+			if err := tx.Create(model.NewDataWarningItems(pastureId, userId, dataWarning, set)).Error; err != nil {
 				return xerr.WithStack(err)
 			}
 			addedKinds[set.Kind] = true
@@ -330,7 +336,7 @@ func (s *StoreEntry) addUserDataWarning(ctx context.Context, pastureId, userId i
 }
 
 // 更新用户预警数据
-func (s *StoreEntry) updateUserDataWarning(ctx context.Context, userId int64, userDataWarningList []*model.DataWarning, warningDataSet []*pasturePb.WarningDataSet) error {
+func (s *StoreEntry) updateUserDataWarning(ctx context.Context, pastureId, userId int64, userDataWarningList []*model.DataWarning, warningDataSet []*pasturePb.WarningDataSet) error {
 	// 将请求数据按 WarningId 和 Id 映射
 	warningIsShowMap := make(map[int32]pasturePb.IsShow_Kind)
 	warningItemDataMap := make(map[int32]*pasturePb.WarningDataSet)
@@ -340,7 +346,7 @@ func (s *StoreEntry) updateUserDataWarning(ctx context.Context, userId int64, us
 	}
 
 	// 获取用户预警项数据
-	userDataWarningItems, err := s.FindDataWarningItems(ctx, userId)
+	userDataWarningItems, err := s.FindDataWarningItems(ctx, pastureId, userId)
 	if err != nil {
 		return xerr.WithStack(err)
 	}
@@ -385,16 +391,19 @@ func (s *StoreEntry) FindDataWarning(ctx context.Context, pastureId, userId int6
 	if err := s.DB.Model(new(model.DataWarning)).
 		Where("user_id = ?", userId).
 		Where("pasture_id = ?", pastureId).
+		Where("is_show = ?", pasturePb.IsShow_Ok).
 		Find(&dataWarningList).Error; err != nil {
 		return nil, xerr.WithStack(err)
 	}
 	return dataWarningList, nil
 }
 
-func (s *StoreEntry) FindDataWarningItems(ctx context.Context, userId int64) ([]*model.DataWarningItems, error) {
+func (s *StoreEntry) FindDataWarningItems(ctx context.Context, pastureId, userId int64) ([]*model.DataWarningItems, error) {
 	dataWarningItemsList := make([]*model.DataWarningItems, 0)
 	if err := s.DB.Model(new(model.DataWarningItems)).
+		Where("pasture_id = ?", pastureId).
 		Where("user_id = ?", userId).
+		Where("is_show = ?", pasturePb.IsShow_Ok).
 		Find(&dataWarningItemsList).Error; err != nil {
 		return nil, xerr.WithStack(err)
 	}
@@ -428,7 +437,7 @@ func (s *StoreEntry) FindDataWarningItemsMap(ctx context.Context, userId int64)
 }
 
 // UpdateWarningData 更新计算数据
-func (s *StoreEntry) UpdateWarningData(ctx context.Context, needUpdateWarningIds []int64) {
+func (s *StoreEntry) UpdateWarningData(ctx context.Context, pastureId int64, needUpdateWarningIds []int64) {
 	if len(needUpdateWarningIds) <= 0 {
 		return
 	}
@@ -441,7 +450,10 @@ func (s *StoreEntry) UpdateWarningData(ctx context.Context, needUpdateWarningIds
 			continue
 		}
 		var count int64
-		if err = s.DB.Model(new(model.Cow)).Where(query, params...).Count(&count).Error; err != nil {
+		if err = s.DB.Model(new(model.Cow)).
+			Where("pasture_id = ?", pastureId).
+			Where(query, params...).
+			Count(&count).Error; err != nil {
 			zaplog.Error("UpdateWarningData", zap.Any("err", err), zap.Any("query", query), zap.Any("params", params))
 		}
 

+ 2 - 2
module/crontab/milk_daily.go

@@ -83,8 +83,8 @@ func (e *Entry) UpdateMilkDaily(pastureId int64, processCowIds []int64, heatDate
 
 	neckActiveHabitList := make([]*model.NeckActiveHabit, 0)
 	if err := e.DB.Model(new(model.NeckActiveHabit)).
-		Select(`h.cow_id, ROUND(AVG(h.filter_high), 0) AS high, ROUND(AVG( h.rumina)*12, 0) AS rumina, ROUND(AVG( h.intake)*12, 0) AS intake,
-			ROUND(AVG( h.inactive)*12, 0) AS inactive, ROUND(AVG( h.active)*12, 0) AS active, COUNT(1) AS record_count`).
+		Select(`cow_id, ROUND(AVG(filter_high), 0) AS high, ROUND(AVG(rumina)*12, 0) AS rumina, ROUND(AVG(intake)*12, 0) AS intake,
+			ROUND(AVG(inactive)*12, 0) AS inactive, ROUND(AVG(active)*12, 0) AS active, COUNT(1) AS record_count`).
 		Where("pasture_id = ?", pastureId).
 		Where("cow_id IN ?", processCowIds).
 		Where("heat_date = ?", heatDate).