|  | @@ -53,22 +53,20 @@ func NewNeckRingEstrusWarning(
 | 
	
		
			
				|  |  |  // calculatePzHour 计算最佳配置时间
 | 
	
		
			
				|  |  |  func (n *NeckRingEstrusWarning) calculatePzHour(lact int32) time.Time {
 | 
	
		
			
				|  |  |  	var pzHour time.Time
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	dateTime := n.DateTime
 | 
	
		
			
				|  |  | -	firstTime := n.FirstTime
 | 
	
		
			
				|  |  | +	dateTime, _ := time.Parse(LayoutTime, n.DateTime)
 | 
	
		
			
				|  |  | +	firstTime, _ := time.Parse(LayoutTime, n.FirstTime)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// 条件判断
 | 
	
		
			
				|  |  | -	if n.IsPeak == pasturePb.IsShow_Ok || n.DateTime.Sub(n.FirstTime).Hours() >= 8 {
 | 
	
		
			
				|  |  | -		pzHour = n.DateTime.Add(8 * time.Hour) // v.datetime + INTERVAL 8 HOUR
 | 
	
		
			
				|  |  | +	if n.IsPeak == pasturePb.IsShow_Ok || dateTime.Sub(firstTime).Hours() >= 8 {
 | 
	
		
			
				|  |  | +		pzHour = dateTime.Add(8 * time.Hour) // v.datetime + INTERVAL 8 HOUR
 | 
	
		
			
				|  |  |  	} else {
 | 
	
		
			
				|  |  | -		pzHour = n.FirstTime.Add(16 * time.Hour) // v.firsttime + INTERVAL 16 HOUR
 | 
	
		
			
				|  |  | +		pzHour = firstTime.Add(16 * time.Hour) // v.firsttime + INTERVAL 16 HOUR
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	// 时间调整
 | 
	
		
			
				|  |  | +	// 胎次调整
 | 
	
		
			
				|  |  |  	if lact >= 3 {
 | 
	
		
			
				|  |  |  		pzHour = pzHour.Add(-1 * time.Hour) // 减去 1 小时
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	return pzHour
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -99,11 +97,12 @@ func (n NeckRingEstrusWarningSlice) ToPB(cowMap map[int64]*Cow, eventLogMap map[
 | 
	
		
			
				|  |  |  			Lact:                   cow.Lact,
 | 
	
		
			
				|  |  |  			CalvingAge:             cow.CalvingAge,
 | 
	
		
			
				|  |  |  			AbortionAge:            cow.AbortionAge,
 | 
	
		
			
				|  |  | -			OptimumMatingStartTime: "",
 | 
	
		
			
				|  |  | -			OptimumMatingEndTime:   "",
 | 
	
		
			
				|  |  | +			OptimumMatingStartTime: pzHour.Add(-4 * time.Hour).Format(LayoutTime),
 | 
	
		
			
				|  |  | +			OptimumMatingEndTime:   pzHour.Add(4 * time.Hour).Format(LayoutTime),
 | 
	
		
			
				|  |  |  			LastBreedEventDetails:  lastBreedEventDetails,
 | 
	
		
			
				|  |  |  			Level:                  v.Level,
 | 
	
		
			
				|  |  |  			EstrusInterval:         0,
 | 
	
		
			
				|  |  | +			BestMatingTime:         pzHour.Format(LayoutTime),
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	return res
 |