|
@@ -22,10 +22,9 @@ import (
|
|
|
)
|
|
|
|
|
|
type DataInsertNeckRingLog struct {
|
|
|
- NeckRingOriginalData []*model.NeckRingOriginal
|
|
|
- NeckRingErrorData []*model.NeckRingError
|
|
|
- NeckRingUnRegisterData []*model.NeckRingUnRegister
|
|
|
- Mx *sync.RWMutex
|
|
|
+ NeckRingOriginalData []*model.NeckRingOriginal
|
|
|
+ NeckRingErrorData []*model.NeckRingError
|
|
|
+ Mx *sync.RWMutex
|
|
|
}
|
|
|
|
|
|
var (
|
|
@@ -33,11 +32,11 @@ var (
|
|
|
batchList = make([]*model.NeckRingOriginal, 0, batchSize)
|
|
|
defaultLimit = int32(100)
|
|
|
DSMLog = &DataInsertNeckRingLog{
|
|
|
- NeckRingOriginalData: make([]*model.NeckRingOriginal, 0),
|
|
|
- NeckRingErrorData: make([]*model.NeckRingError, 0),
|
|
|
- NeckRingUnRegisterData: make([]*model.NeckRingUnRegister, 0),
|
|
|
- Mx: &sync.RWMutex{},
|
|
|
+ NeckRingOriginalData: make([]*model.NeckRingOriginal, 0),
|
|
|
+ NeckRingErrorData: make([]*model.NeckRingError, 0),
|
|
|
+ Mx: &sync.RWMutex{},
|
|
|
}
|
|
|
+ isDelete bool
|
|
|
)
|
|
|
|
|
|
func (e *Entry) NeckRingHandle(data []byte) {
|
|
@@ -330,7 +329,7 @@ func (e *Entry) NeckRingOriginalMergeData() {
|
|
|
limit = defaultLimit
|
|
|
}
|
|
|
|
|
|
- updateOriginalMaxId := e.GetSystemConfigure(model.MaxEstrus).Value
|
|
|
+ updateOriginalMaxId := e.GetSystemConfigure(model.UpdateOriginalMaxId).Value
|
|
|
neckRingList := make([]*model.NeckRingOriginal, 0)
|
|
|
if err := e.DB.Model(new(model.NeckRingOriginal)).
|
|
|
Where("id > ?", updateOriginalMaxId).
|
|
@@ -343,6 +342,20 @@ func (e *Entry) NeckRingOriginalMergeData() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ defer func() {
|
|
|
+ currTime := time.Now()
|
|
|
+ // 删除15天前的数据
|
|
|
+ if currTime.Day()%15 == 0 && !isDelete {
|
|
|
+ e.DB.Model(new(model.NeckRingOriginal)).
|
|
|
+ Where("active_date < ?", currTime.AddDate(0, 0, -15).Format(model.LayoutDate2)).
|
|
|
+ Delete(new(model.NeckRingOriginal))
|
|
|
+ e.DB.Model(new(model.NeckRingProcess)).
|
|
|
+ Where("active_date < ?", currTime.AddDate(0, 0, -5).Format(model.LayoutDate2)).
|
|
|
+ Delete(new(model.NeckRingProcess))
|
|
|
+ isDelete = true
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
originalMapData := make(map[string]*model.NeckRingOriginalMerge)
|
|
|
// 合并成2个小时的
|
|
|
for _, v := range neckRingList {
|
|
@@ -360,24 +373,28 @@ func (e *Entry) NeckRingOriginalMergeData() {
|
|
|
v.SumAvg()
|
|
|
}
|
|
|
|
|
|
+ zaplog.Info("NeckRingOriginalMergeData", zap.Any("originalMapData", originalMapData))
|
|
|
// 更新脖环牛只相关信息
|
|
|
newNeckActiveHabitList := model.NeckRingOriginalMap(originalMapData).ForMatData()
|
|
|
if err := e.DB.Transaction(func(tx *gorm.DB) error {
|
|
|
// 更新已处理过的id
|
|
|
+ processMaxId := neckRingList[len(neckRingList)-1].Id
|
|
|
+ fmt.Println("updateOriginalMaxId", processMaxId)
|
|
|
if err := tx.Model(new(model.SystemConfigure)).
|
|
|
Where("name = ?", model.UpdateOriginalMaxId).
|
|
|
- Update("value", neckRingList[len(neckRingList)-1].Id).
|
|
|
+ Update("value", processMaxId).
|
|
|
Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
|
|
|
for _, neckActiveHabit := range newNeckActiveHabitList {
|
|
|
- // 新数据直接插入 todo 待优化
|
|
|
+ // 新数据直接插入
|
|
|
historyNeckActiveHabit, ct := e.IsExistNeckActiveHabit(neckActiveHabit.NeckRingNumber, neckActiveHabit.HeatDate, neckActiveHabit.Frameid)
|
|
|
if ct <= 0 {
|
|
|
if err := tx.Create(neckActiveHabit).Error; err != nil {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
+ tx.Create(model.NewNeckRingProcess(neckActiveHabit))
|
|
|
continue
|
|
|
}
|
|
|
|