|
@@ -29,19 +29,22 @@ var (
|
|
|
|
|
|
// NeckRingOriginalMergeData 把脖环数据合并成2个小时的
|
|
|
func (e *Entry) NeckRingOriginalMergeData() error {
|
|
|
- var err error
|
|
|
+ var (
|
|
|
+ err error
|
|
|
+ )
|
|
|
limit := e.Cfg.NeckRingLimit
|
|
|
if limit <= 0 {
|
|
|
limit = defaultLimit
|
|
|
}
|
|
|
newTime := time.Now()
|
|
|
- createdAt := newTime.Add(-1 * time.Hour)
|
|
|
+ //createdAt := newTime.Add(-1 * time.Hour)
|
|
|
|
|
|
neckRingList := make([]*model.NeckRingOriginal, 0)
|
|
|
if err = e.DB.Model(new(model.NeckRingOriginal)).
|
|
|
- Where("is_show <= ?", pasturePb.IsShow_No).
|
|
|
- Where("created_at <= ?", createdAt.Unix()).
|
|
|
- Order("neck_ring_number,active_date,frameid").
|
|
|
+ Where("is_show = ?", pasturePb.IsShow_No).
|
|
|
+ Where("neck_ring_number IN (?)", "10027").
|
|
|
+ //Where("created_at <= ?", createdAt.Unix()).
|
|
|
+ Order("active_date,neck_ring_number,frameid").
|
|
|
Limit(int(limit)).Find(&neckRingList).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
@@ -55,6 +58,9 @@ func (e *Entry) NeckRingOriginalMergeData() error {
|
|
|
e.DB.Model(new(model.NeckRingOriginal)).
|
|
|
Where("created_at < ?", newTime.AddDate(0, 0, -15).Unix()).
|
|
|
Delete(new(model.NeckRingOriginal))
|
|
|
+ e.DB.Model(new(model.NeckRingProcess)).
|
|
|
+ Where("created_at < ?", newTime.AddDate(0, 0, -15).Unix()).
|
|
|
+ Delete(new(model.NeckRingProcess))
|
|
|
// 活动数据删除6个月前的数据
|
|
|
e.DB.Model(new(model.NeckActiveHabit)).
|
|
|
Where("created_at < ?", newTime.AddDate(0, -6, 0).Unix()).
|
|
@@ -68,25 +74,31 @@ func (e *Entry) NeckRingOriginalMergeData() error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
- // 批量插入和更新
|
|
|
- var newNeckRingProcessList []*model.NeckRingProcess
|
|
|
- for _, neckActiveHabit := range neckActiveHabitList {
|
|
|
+ for _, habit := range neckActiveHabitList {
|
|
|
//更新脖环牛只相关信息 新数据直接插入
|
|
|
- historyNeckActiveHabit, ct := e.IsExistNeckActiveHabit(neckActiveHabit.NeckRingNumber, neckActiveHabit.HeatDate, neckActiveHabit.Frameid)
|
|
|
+ historyNeckActiveHabit, ct := e.IsExistNeckActiveHabit(habit.NeckRingNumber, habit.HeatDate, habit.Frameid)
|
|
|
if ct <= 0 {
|
|
|
- if err = e.DB.Create(neckActiveHabit).Error; err != nil {
|
|
|
- zaplog.Info("NeckRingOriginalMergeData-1", zap.Any("err", err), zap.Any("neckActiveHabit", neckActiveHabit))
|
|
|
+ if err = e.DB.Create(habit).Error; err != nil {
|
|
|
+ zaplog.Info("NeckRingOriginalMergeData-1",
|
|
|
+ zap.Any("err", err),
|
|
|
+ zap.Any("neckActiveHabit", habit),
|
|
|
+ )
|
|
|
}
|
|
|
- newNeckRingProcess := model.NewNeckRingProcess(neckActiveHabit)
|
|
|
- newNeckRingProcessList = append(newNeckRingProcessList, newNeckRingProcess)
|
|
|
- if err = e.UpdateNeckRingOriginalIsShow(neckActiveHabit); err != nil {
|
|
|
- zaplog.Error("NeckRingOriginalMergeData-3", zap.Any("err", err), zap.Any("neckActiveHabit", neckActiveHabit))
|
|
|
+ if err = e.UpdateNeckRingOriginalIsShow(habit); err != nil {
|
|
|
+ zaplog.Error("NeckRingOriginalMergeData-2",
|
|
|
+ zap.Any("err", err),
|
|
|
+ zap.Any("neckActiveHabit", habit),
|
|
|
+ )
|
|
|
}
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
if historyNeckActiveHabit == nil || historyNeckActiveHabit.Id <= 0 {
|
|
|
- zaplog.Error("NeckRingOriginalMergeData-4", zap.Any("historyNeckActiveHabit", historyNeckActiveHabit), zap.Any("ct", ct), zap.Any("neckActiveHabit", neckActiveHabit))
|
|
|
+ zaplog.Error("NeckRingOriginalMergeData-3",
|
|
|
+ zap.Any("ct", ct),
|
|
|
+ zap.Any("historyNeckActiveHabit", historyNeckActiveHabit),
|
|
|
+ zap.Any("neckActiveHabit", habit),
|
|
|
+ )
|
|
|
continue
|
|
|
}
|
|
|
|
|
@@ -97,16 +109,15 @@ func (e *Entry) NeckRingOriginalMergeData() error {
|
|
|
Select("rumina", "intake", "inactive", "gasp", "other", "high", "active").
|
|
|
Where("id = ?", historyNeckActiveHabit.Id).
|
|
|
Updates(newNeckActiveHabit).Error; err != nil {
|
|
|
- zaplog.Error("NeckRingOriginalMergeData-5", zap.Any("historyNeckActiveHabit", historyNeckActiveHabit), zap.Any("ct", ct), zap.Any("newNeckActiveHabit", newNeckActiveHabit))
|
|
|
+ zaplog.Error("NeckRingOriginalMergeData-5",
|
|
|
+ zap.Any("err", err),
|
|
|
+ zap.Any("ct", ct),
|
|
|
+ zap.Any("historyNeckActiveHabit", historyNeckActiveHabit),
|
|
|
+ zap.Any("newNeckActiveHabit", newNeckActiveHabit),
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if len(newNeckRingProcessList) > 0 {
|
|
|
- if err = e.DB.Create(newNeckRingProcessList).Error; err != nil {
|
|
|
- zaplog.Error("newNeckRingProcessList", zap.Any("err", err))
|
|
|
- }
|
|
|
- }
|
|
|
return nil
|
|
|
}
|
|
|
|
|
@@ -142,7 +153,7 @@ func (e *Entry) recalculate(neckRingList []*model.NeckRingOriginal) []*model.Nec
|
|
|
// 算平均值
|
|
|
for k, v := range originalMapData {
|
|
|
// 过滤掉合并后不满6条数据
|
|
|
- if v.RecordCount != 6 {
|
|
|
+ if v.RecordCount < 6 {
|
|
|
currMaxXframeId := util.FrameIdMapReverse[int32(currTime.Hour())]
|
|
|
activeDateString := fmt.Sprintf("%s %02d:00:00", v.ActiveDate, v.XframeId*2+1)
|
|
|
activeDate, _ := time.Parse(model.LayoutTime, activeDateString)
|
|
@@ -150,6 +161,10 @@ func (e *Entry) recalculate(neckRingList []*model.NeckRingOriginal) []*model.Nec
|
|
|
delete(originalMapData, k)
|
|
|
}
|
|
|
}
|
|
|
+ if v.RecordCount > 6 {
|
|
|
+ zaplog.Error("recalculate", zap.Any("k", k), zap.Any("v", v))
|
|
|
+ delete(originalMapData, k)
|
|
|
+ }
|
|
|
v.SumAvg()
|
|
|
}
|
|
|
return model.NeckRingOriginalMap(originalMapData).ForMatData()
|
|
@@ -174,24 +189,43 @@ func (e *Entry) againRecalculate(data *model.NeckActiveHabit) *model.NeckActiveH
|
|
|
}
|
|
|
|
|
|
func (e *Entry) EntryUpdateActiveHabit(pastureId int64) (err error) {
|
|
|
- lastMaxHabitData, err := e.GetSystemConfigure(pastureId, model.MaxHabit)
|
|
|
+ // 获取这段执行数据内最大日期和最小日期
|
|
|
+ xToday := &XToday{}
|
|
|
+ systemConfigureList, err := e.GetSystemConfigure(pastureId)
|
|
|
if err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
+ for _, v := range systemConfigureList {
|
|
|
+ switch v.Name {
|
|
|
+ case model.MaxHabit:
|
|
|
+ xToday.LastMaxHabitId = v.Value
|
|
|
+ case model.High:
|
|
|
+ xToday.High = int32(v.Value)
|
|
|
+ case model.Rumina:
|
|
|
+ xToday.Rumina = int32(v.Value)
|
|
|
+ case model.XRuminaDisc:
|
|
|
+ xToday.XRuminaDisc = int32(v.Value)
|
|
|
+ case model.XChangeDiscount:
|
|
|
+ xToday.XChangeDiscount = int32(v.Value)
|
|
|
+ case model.WeeklyActive:
|
|
|
+ xToday.WeeklyActive = int32(v.Value)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- lastMaxHabitId := lastMaxHabitData.Value
|
|
|
currMaxHabit := &model.NeckActiveHabit{}
|
|
|
if err = e.DB.Model(new(model.NeckActiveHabit)).
|
|
|
- Where("id > ?", lastMaxHabitId).
|
|
|
+ Where("id > ?", xToday.LastMaxHabitId).
|
|
|
Where("pasture_id = ?", pastureId).
|
|
|
Where("is_show = ?", pasturePb.IsShow_No).
|
|
|
Order("id desc").First(currMaxHabit).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
|
|
|
- if currMaxHabit.Id <= 0 || currMaxHabit.Id <= lastMaxHabitId {
|
|
|
+ if currMaxHabit.Id <= 0 || currMaxHabit.Id <= xToday.LastMaxHabitId {
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
+ xToday.CurrMaxHabitId = currMaxHabit.Id
|
|
|
defer func() {
|
|
|
// 更新最后一次执行的id值
|
|
|
if err == nil {
|
|
@@ -201,37 +235,6 @@ func (e *Entry) EntryUpdateActiveHabit(pastureId int64) (err error) {
|
|
|
Update("value", currMaxHabit.Id)
|
|
|
}
|
|
|
}()
|
|
|
- // 获取这段执行数据内最大日期和最小日期
|
|
|
- xToday := &XToday{}
|
|
|
- activeLowest, err := e.GetSystemConfigure(pastureId, model.High)
|
|
|
- if err != nil {
|
|
|
- return xerr.WithStack(err)
|
|
|
- }
|
|
|
- ruminaLowest, err := e.GetSystemConfigure(pastureId, model.Rumina)
|
|
|
- if err != nil {
|
|
|
- return xerr.WithStack(err)
|
|
|
- }
|
|
|
- xRuminaDisc, err := e.GetSystemConfigure(pastureId, model.XRuminaDisc)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- xChangeDiscount, err := e.GetSystemConfigure(pastureId, model.XChangeDiscount)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- weeklyActive, err := e.GetSystemConfigure(pastureId, model.WeeklyActive)
|
|
|
- if err != nil {
|
|
|
- return xerr.WithStack(err)
|
|
|
- }
|
|
|
-
|
|
|
- xToday.High = int32(activeLowest.Value)
|
|
|
- xToday.Rumina = int32(ruminaLowest.Value)
|
|
|
- xToday.XRuminaDisc = int32(xRuminaDisc.Value)
|
|
|
- xToday.XChangeDiscount = int32(xChangeDiscount.Value)
|
|
|
- xToday.CurrMaxHabitId = currMaxHabit.Id
|
|
|
- xToday.LastMaxHabitId = lastMaxHabitId
|
|
|
- xToday.WeeklyActive = int32(weeklyActive.Value)
|
|
|
|
|
|
// 更新活动滤波
|
|
|
if err = e.FirstFilterUpdate(pastureId, xToday); err != nil {
|
|
@@ -290,7 +293,7 @@ func (e *Entry) FirstFilterUpdate(pastureId int64, xToDay *XToday) (err error) {
|
|
|
Where("is_show = ?", pasturePb.IsShow_No).
|
|
|
Where("change_filter = ?", model.InitChangeFilter).
|
|
|
Where(e.DB.Where("high >= ?", xToDay.High).Or("rumina >= ?", xToDay.Rumina)).
|
|
|
- Order("neck_ring_number,heat_date,frameid").
|
|
|
+ Order("heat_date,neck_ring_number,frameid").
|
|
|
Limit(int(defaultLimit)).Find(&newNeckActiveHabitList).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|