|  | @@ -18,52 +18,53 @@ func (e *Entry) InsertMilkDaily() error {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	for _, pasture := range pastureList {
 | 
	
		
			
				|  |  | -		e.ProcessMilkDaily(pasture.Id)
 | 
	
		
			
				|  |  | +		// 获取最大记录日期或默认日期
 | 
	
		
			
				|  |  | +		pastureId := pasture.Id
 | 
	
		
			
				|  |  | +		var maxDateTime string
 | 
	
		
			
				|  |  | +		if err := e.DB.Model(new(model.MilkDaily)).
 | 
	
		
			
				|  |  | +			Where("pasture_id = ?", pastureId).
 | 
	
		
			
				|  |  | +			Select("IFNULL(MAX(heat_date) + INTERVAL 1 DAY, CURDATE() - INTERVAL 1 MONTH) AS max_date_time").
 | 
	
		
			
				|  |  | +			Scan(&maxDateTime).Error; err != nil {
 | 
	
		
			
				|  |  | +			zaplog.Error("InsertMilkDaily", zap.Any("pastureId", pastureId), zap.Any("err", err))
 | 
	
		
			
				|  |  | +			continue
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		maxDate, err := util.TimeParseLocal(model.LayoutDate2, maxDateTime)
 | 
	
		
			
				|  |  | +		if err != nil {
 | 
	
		
			
				|  |  | +			zaplog.Error("InsertMilkDaily", zap.Any("pastureId", pastureId), zap.Any("err", err))
 | 
	
		
			
				|  |  | +			continue
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		e.ProcessMilkDaily(pastureId, maxDate)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	return nil
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func (e *Entry) ProcessMilkDaily(pastureId int64) {
 | 
	
		
			
				|  |  | -	// 获取最大记录日期或默认日期
 | 
	
		
			
				|  |  | -	var maxDateTime string
 | 
	
		
			
				|  |  | -	if err := e.DB.Model(new(model.MilkDaily)).
 | 
	
		
			
				|  |  | -		Where("pasture_id = ?", pastureId).
 | 
	
		
			
				|  |  | -		Select("IFNULL(MAX(heat_date) + INTERVAL 1 DAY, CURDATE() - INTERVAL 1 MONTH) AS max_date_time").
 | 
	
		
			
				|  |  | -		Scan(&maxDateTime).Error; err != nil {
 | 
	
		
			
				|  |  | -		zaplog.Error("ProcessMilkDaily", zap.Any("pastureId", pastureId), zap.Any("err", err))
 | 
	
		
			
				|  |  | -		return
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +func (e *Entry) ProcessMilkDaily(pastureId int64, maxDate time.Time) {
 | 
	
		
			
				|  |  |  	nowTime := time.Now().Local()
 | 
	
		
			
				|  |  | -	if maxDateTime == "" {
 | 
	
		
			
				|  |  | -		zaplog.Error("ProcessMilkDaily", zap.Any("pastureId", pastureId), zap.Any("maxDateTime", maxDateTime))
 | 
	
		
			
				|  |  | -		return
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	maxDate, err := util.TimeParseLocal(model.LayoutDate2, maxDateTime)
 | 
	
		
			
				|  |  | -	if err != nil {
 | 
	
		
			
				|  |  | -		zaplog.Error("ProcessMilkDaily", zap.Any("pastureId", pastureId), zap.Any("err", err))
 | 
	
		
			
				|  |  | -		return
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	// 处理每一天的数据
 | 
	
		
			
				|  |  |  	for maxDate.Before(nowTime) {
 | 
	
		
			
				|  |  |  		// 处理有胎次的奶牛
 | 
	
		
			
				|  |  | -		if err = e.processCowsWithLact(maxDate); err != nil {
 | 
	
		
			
				|  |  | +		if err := e.processCowsWithLact(maxDate); err != nil {
 | 
	
		
			
				|  |  |  			zaplog.Error("ProcessMilkDaily", zap.Any("processCowsWithFetal", err))
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		// 处理无胎次的奶牛
 | 
	
		
			
				|  |  | -		if err = e.processCowsWithNoLact(maxDate); err != nil {
 | 
	
		
			
				|  |  | +		if err := e.processCowsWithNoLact(maxDate); err != nil {
 | 
	
		
			
				|  |  |  			zaplog.Error("ProcessMilkDaily", zap.Any("processCowsWithoutFetal", err))
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  		// 日期加1天
 | 
	
		
			
				|  |  |  		maxDate = maxDate.AddDate(0, 0, 1)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func (e *Entry) UpdateMilkDaily(pastureId int64, maxDateTime string) error {
 | 
	
		
			
				|  |  | +	//yesterday := time.Now().Local().AddDate(0, 0, -1).Format(model.LayoutDate2)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return nil
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // 处理有胎次的奶牛
 | 
	
		
			
				|  |  |  func (e *Entry) processCowsWithLact(recordDate time.Time) error {
 | 
	
		
			
				|  |  |  	// 查询有胎次且在记录日期前有记录的奶牛
 |