| 
					
				 | 
			
			
				@@ -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 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	// 查询有胎次且在记录日期前有记录的奶牛 
			 |