|  | @@ -193,6 +193,89 @@ func (s *StoreEntry) DataWarningPop(ctx context.Context, req *pasturePb.WarningD
 | 
											
												
													
														|  |  	return resp, nil
 |  |  	return resp, nil
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +func (s *StoreEntry) FindDataWarning(ctx context.Context, pastureId, userId int64) ([]*model.DataWarning, error) {
 | 
											
												
													
														|  | 
 |  | +	dataWarningList := make([]*model.DataWarning, 0)
 | 
											
												
													
														|  | 
 |  | +	if err := s.DB.Model(new(model.DataWarning)).
 | 
											
												
													
														|  | 
 |  | +		Where("user_id = ?", userId).
 | 
											
												
													
														|  | 
 |  | +		Where("pasture_id = ?", pastureId).
 | 
											
												
													
														|  | 
 |  | +		Find(&dataWarningList).Error; err != nil {
 | 
											
												
													
														|  | 
 |  | +		return nil, xerr.WithStack(err)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return dataWarningList, nil
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +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).
 | 
											
												
													
														|  | 
 |  | +		Find(&dataWarningItemsList).Error; err != nil {
 | 
											
												
													
														|  | 
 |  | +		return nil, xerr.WithStack(err)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return dataWarningItemsList, nil
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s *StoreEntry) FindDataWarningMap(ctx context.Context, pastureId, userId int64) (map[int64]*model.DataWarning, error) {
 | 
											
												
													
														|  | 
 |  | +	dataWarning, err := s.FindDataWarning(ctx, pastureId, userId)
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return nil, xerr.Custom("默认预警数据有误,请联系管理员!")
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	dataWarningMap := make(map[int64]*model.DataWarning)
 | 
											
												
													
														|  | 
 |  | +	for _, v := range dataWarning {
 | 
											
												
													
														|  | 
 |  | +		dataWarningMap[v.Id] = v
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return dataWarningMap, nil
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +func (s *StoreEntry) FindDataWarningItemsMap(ctx context.Context, userId int64) (map[int64]*model.DataWarningItems, error) {
 | 
											
												
													
														|  | 
 |  | +	dataWarningItemsList := make([]*model.DataWarningItems, 0)
 | 
											
												
													
														|  | 
 |  | +	if err := s.DB.Model(new(model.DataWarningItems)).
 | 
											
												
													
														|  | 
 |  | +		Where("user_id = ?", userId).
 | 
											
												
													
														|  | 
 |  | +		Find(&dataWarningItemsList).Error; err != nil {
 | 
											
												
													
														|  | 
 |  | +		return nil, xerr.WithStack(err)
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	dataWarningItemsMap := make(map[int64]*model.DataWarningItems)
 | 
											
												
													
														|  | 
 |  | +	for _, v := range dataWarningItemsList {
 | 
											
												
													
														|  | 
 |  | +		dataWarningItemsMap[v.Id] = v
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	return dataWarningItemsMap, nil
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// UpdateWarningData 更新计算数据
 | 
											
												
													
														|  | 
 |  | +func (s *StoreEntry) UpdateWarningData(ctx context.Context, pastureId int64, needUpdateWarningIds []int64) {
 | 
											
												
													
														|  | 
 |  | +	if len(needUpdateWarningIds) <= 0 {
 | 
											
												
													
														|  | 
 |  | +		return
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	for _, warningId := range needUpdateWarningIds {
 | 
											
												
													
														|  | 
 |  | +		query, params, err := s.BuildQuery(warningId)
 | 
											
												
													
														|  | 
 |  | +		if err != nil {
 | 
											
												
													
														|  | 
 |  | +			zaplog.Error("UpdateWarningData", zap.Any("BuildQuery", err), zap.Any("warningId", warningId))
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +		if len(query) == 0 || len(params) == 0 {
 | 
											
												
													
														|  | 
 |  | +			continue
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		zaplog.Info("UpdateWarningData", zap.Any("query", query), zap.Any("params", params))
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		var count int64
 | 
											
												
													
														|  | 
 |  | +		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))
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +		if err = s.DB.Model(new(model.DataWarning)).
 | 
											
												
													
														|  | 
 |  | +			Where("id = ?", warningId).
 | 
											
												
													
														|  | 
 |  | +			Updates(map[string]interface{}{
 | 
											
												
													
														|  | 
 |  | +				"data_value":     count,
 | 
											
												
													
														|  | 
 |  | +				"data_update_at": time.Now().Local().Unix(),
 | 
											
												
													
														|  | 
 |  | +			}).Error; err != nil {
 | 
											
												
													
														|  | 
 |  | +			zaplog.Error("UpdateWarningData", zap.Any("update", err))
 | 
											
												
													
														|  | 
 |  | +		}
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  // 新增用户预警数据
 |  |  // 新增用户预警数据
 | 
											
												
													
														|  |  func (s *StoreEntry) addUserDataWarning(ctx context.Context, pastureId, userId int64, defaultDataWarning []*model.DataWarning, warningDataSet []*pasturePb.WarningDataSet) error {
 |  |  func (s *StoreEntry) addUserDataWarning(ctx context.Context, pastureId, userId int64, defaultDataWarning []*model.DataWarning, warningDataSet []*pasturePb.WarningDataSet) error {
 | 
											
												
													
														|  |  	// 将默认预警数据按 Kind 映射
 |  |  	// 将默认预警数据按 Kind 映射
 | 
											
										
											
												
													
														|  | @@ -300,86 +383,3 @@ func (s *StoreEntry) updateUserDataWarning(ctx context.Context, pastureId, userI
 | 
											
												
													
														|  |  		return nil
 |  |  		return nil
 | 
											
												
													
														|  |  	})
 |  |  	})
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -func (s *StoreEntry) FindDataWarning(ctx context.Context, pastureId, userId int64) ([]*model.DataWarning, error) {
 |  | 
 | 
											
												
													
														|  | -	dataWarningList := make([]*model.DataWarning, 0)
 |  | 
 | 
											
												
													
														|  | -	if err := s.DB.Model(new(model.DataWarning)).
 |  | 
 | 
											
												
													
														|  | -		Where("user_id = ?", userId).
 |  | 
 | 
											
												
													
														|  | -		Where("pasture_id = ?", pastureId).
 |  | 
 | 
											
												
													
														|  | -		Find(&dataWarningList).Error; err != nil {
 |  | 
 | 
											
												
													
														|  | -		return nil, xerr.WithStack(err)
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	return dataWarningList, nil
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -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).
 |  | 
 | 
											
												
													
														|  | -		Find(&dataWarningItemsList).Error; err != nil {
 |  | 
 | 
											
												
													
														|  | -		return nil, xerr.WithStack(err)
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	return dataWarningItemsList, nil
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -func (s *StoreEntry) FindDataWarningMap(ctx context.Context, pastureId, userId int64) (map[int64]*model.DataWarning, error) {
 |  | 
 | 
											
												
													
														|  | -	dataWarning, err := s.FindDataWarning(ctx, pastureId, userId)
 |  | 
 | 
											
												
													
														|  | -	if err != nil {
 |  | 
 | 
											
												
													
														|  | -		return nil, xerr.Custom("默认预警数据有误,请联系管理员!")
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	dataWarningMap := make(map[int64]*model.DataWarning)
 |  | 
 | 
											
												
													
														|  | -	for _, v := range dataWarning {
 |  | 
 | 
											
												
													
														|  | -		dataWarningMap[v.Id] = v
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	return dataWarningMap, nil
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -func (s *StoreEntry) FindDataWarningItemsMap(ctx context.Context, userId int64) (map[int64]*model.DataWarningItems, error) {
 |  | 
 | 
											
												
													
														|  | -	dataWarningItemsList := make([]*model.DataWarningItems, 0)
 |  | 
 | 
											
												
													
														|  | -	if err := s.DB.Model(new(model.DataWarningItems)).
 |  | 
 | 
											
												
													
														|  | -		Where("user_id = ?", userId).
 |  | 
 | 
											
												
													
														|  | -		Find(&dataWarningItemsList).Error; err != nil {
 |  | 
 | 
											
												
													
														|  | -		return nil, xerr.WithStack(err)
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	dataWarningItemsMap := make(map[int64]*model.DataWarningItems)
 |  | 
 | 
											
												
													
														|  | -	for _, v := range dataWarningItemsList {
 |  | 
 | 
											
												
													
														|  | -		dataWarningItemsMap[v.Id] = v
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	return dataWarningItemsMap, nil
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -// UpdateWarningData 更新计算数据
 |  | 
 | 
											
												
													
														|  | -func (s *StoreEntry) UpdateWarningData(ctx context.Context, pastureId int64, needUpdateWarningIds []int64) {
 |  | 
 | 
											
												
													
														|  | -	if len(needUpdateWarningIds) <= 0 {
 |  | 
 | 
											
												
													
														|  | -		return
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -	for _, warningId := range needUpdateWarningIds {
 |  | 
 | 
											
												
													
														|  | -		query, params, err := s.BuildQuery(warningId)
 |  | 
 | 
											
												
													
														|  | -		if err != nil {
 |  | 
 | 
											
												
													
														|  | -			zaplog.Error("UpdateWarningData", zap.Any("BuildQuery", err), zap.Any("warningId", warningId))
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | -		if len(query) == 0 || len(params) == 0 {
 |  | 
 | 
											
												
													
														|  | -			continue
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -		zaplog.Info("UpdateWarningData", zap.Any("query", query), zap.Any("params", params))
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -		var count int64
 |  | 
 | 
											
												
													
														|  | -		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))
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -		if err = s.DB.Model(new(model.DataWarning)).
 |  | 
 | 
											
												
													
														|  | -			Where("id = ?", warningId).
 |  | 
 | 
											
												
													
														|  | -			Updates(map[string]interface{}{
 |  | 
 | 
											
												
													
														|  | -				"data_value":     count,
 |  | 
 | 
											
												
													
														|  | -				"data_update_at": time.Now().Local().Unix(),
 |  | 
 | 
											
												
													
														|  | -			}).Error; err != nil {
 |  | 
 | 
											
												
													
														|  | -			zaplog.Error("UpdateWarningData", zap.Any("update", err))
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | -	}
 |  | 
 | 
											
												
													
														|  | -}
 |  | 
 |