|  | @@ -14,6 +14,7 @@ import (
 | 
	
		
			
				|  |  |  	"go.uber.org/zap"
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// HealthWarning 健康预警 create_jbq_update_2024
 | 
	
		
			
				|  |  |  func (e *Entry) HealthWarning(pastureId int64, processIds []int64) {
 | 
	
		
			
				|  |  |  	newNeckActiveHabitList := make([]*model.NeckActiveHabit, 0)
 | 
	
		
			
				|  |  |  	if err := e.DB.Model(new(model.NeckActiveHabit)).
 | 
	
	
		
			
				|  | @@ -236,7 +237,18 @@ func (e *Entry) FindNewNeckRingHealthWarning(pastureId int64, healthValue int32)
 | 
	
		
			
				|  |  |  			continue
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		if e.FindNeckRingError(pastureId, cowInfo.NeckRingNumber) {
 | 
	
		
			
				|  |  | +			continue
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		newNeckRingHealthWarning := model.NewNeckRingHealthWarning(pastureId, v, cowInfo, newScore)
 | 
	
		
			
				|  |  | +		zaplog.Info("newNeckRingHealthWarning",
 | 
	
		
			
				|  |  | +			zap.Any("newNeckRingHealthWarning", newNeckRingHealthWarning),
 | 
	
		
			
				|  |  | +			zap.Any("pastureId", pastureId),
 | 
	
		
			
				|  |  | +			zap.Any("neckRingHealth", v),
 | 
	
		
			
				|  |  | +			zap.Any("cowInfo", cowInfo),
 | 
	
		
			
				|  |  | +			zap.Any("newScore", newScore),
 | 
	
		
			
				|  |  | +		)
 | 
	
		
			
				|  |  |  		newNeckRingHealthWarningList = append(newNeckRingHealthWarningList, newNeckRingHealthWarning)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	return newNeckRingHealthWarningList, nil
 | 
	
	
		
			
				|  | @@ -248,7 +260,20 @@ func (e *Entry) HistoryNeckRingHealthWarning(pastureId int64, neckRingNumber str
 | 
	
		
			
				|  |  |  		Where("pasture_id = ?", pastureId).
 | 
	
		
			
				|  |  |  		Where("neck_ring_number = ?", neckRingNumber).
 | 
	
		
			
				|  |  |  		Where("heat_date = ?", heatDate).
 | 
	
		
			
				|  |  | -		Where("is_show = ?", pasturePb.IsShow_No).
 | 
	
		
			
				|  |  | +		Where("is_show = ?", pasturePb.IsShow_Ok).
 | 
	
		
			
				|  |  | +		Count(&count).Error; err != nil {
 | 
	
		
			
				|  |  | +		return false
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	return count > 0
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +func (e *Entry) FindNeckRingError(pastureId int64, neckRingNumber string) bool {
 | 
	
		
			
				|  |  | +	var count int64
 | 
	
		
			
				|  |  | +	if err := e.DB.Model(new(model.NeckRing)).
 | 
	
		
			
				|  |  | +		Where("pasture_id = ?", pastureId).
 | 
	
		
			
				|  |  | +		Where("neck_ring_number = ?", neckRingNumber).
 | 
	
		
			
				|  |  | +		Where("status = ?", pasturePb.IsShow_No).
 | 
	
		
			
				|  |  | +		Where("error_kind = ?", pasturePb.NeckRingNumberError_Suspected_Fall_Off).
 | 
	
		
			
				|  |  |  		Count(&count).Error; err != nil {
 | 
	
		
			
				|  |  |  		return false
 | 
	
		
			
				|  |  |  	}
 |