Przeglądaj źródła

crontab: 定时任务调整

Yi 6 miesięcy temu
rodzic
commit
fed937839c

+ 0 - 3
model/event_cow_same_time.go

@@ -50,11 +50,8 @@ func NewCowSameTimeDetailList(cowList []*Cow, sameTimeId int64, planTime string,
 type SameTimeHeader struct {
 	Id              string `json:"id"`
 	CowId           string `json:"cowId"`
-	CowType         string `json:"cowType"`
 	CowTypeName     string `json:"cowTypeName"`
-	BreedStatus     string `json:"breedStatus"`
 	BreedStatusName string `json:"breedStatusName"`
-	PenId           string `json:"penId"`
 	PenName         string `json:"penName"`
 	Lact            string `json:"lact"`
 	CalvingAge      string `json:"calvingAge"`

+ 3 - 3
model/work_order_master.go

@@ -16,12 +16,12 @@ import (
 )
 
 const (
-	QueueWorkOrder = "workOrder"
-	TaskWorkOrder  = "event:workOrder"
+	QueueWork     = "work"
+	TaskWorkOrder = "event:workOrder"
 )
 
 func AsynqQueueWorkOrder() asynq.Option {
-	return asynq.Queue(QueueWorkOrder)
+	return asynq.Queue(QueueWork)
 }
 
 type WorkOrderMaster struct {

+ 2 - 2
module/backend/calendar.go

@@ -55,7 +55,7 @@ func (s *StoreEntry) CalendarTableDetail(
 		return nil, xerr.WithStack(err)
 	}
 
-	if newCalendar.Id == 0 {
+	if newCalendar.Id <= 0 {
 		return nil, xerr.New("不存在该日历数据")
 	}
 
@@ -124,7 +124,7 @@ func (s *StoreEntry) SameTimeCowList(ctx context.Context, dateTime string, pagin
 	pref := s.DB.Table(fmt.Sprintf("%s as a", new(model.EventCowSameTime).TableName())).
 		Select("a.id,a.cow_id,a.status,b.breed_status,b.cow_type,b.pen_id,b.day_age,b.calving_age,b.abortion_age").
 		Joins("left join cow as b on a.cow_id = b.id").
-		Where("b.is_remove = ?", pasturePb.IsShow_No).
+		Where("b.is_remove = ?", pasturePb.IsShow_Ok).
 		Where("a.plan_day <= ?", dateTime).
 		Where("a.status = ?", pasturePb.IsShow_No)
 

+ 1 - 1
module/backend/event_base.go

@@ -44,7 +44,7 @@ func (s *StoreEntry) EnterList(ctx context.Context, req *pasturePb.SearchEventRe
 	var count int64 = 0
 	pref := s.DB.Table(fmt.Sprintf("%s as a", new(model.EventEnter).TableName())).
 		Select(`a.id,a.birth_at,a.weaning_at,a.dry_milk_at,a.cow_source_id,a.remarks,a.mating_at,a.lact,
-		a.breed_status,a.mother_id,a.cow_kind,a.cow_id,a.ear_number,a.sex,a.created_at,a.updated_at,a.enter_at,
+		a.breed_status,a.mother_number as ,a.cow_kind,a.cow_id,a.ear_number,a.sex,a.created_at,a.updated_at,a.enter_at,
 		a.weight / 100 as weight,a.price / 100 as price,b.name as breed_status_name,c.name as cow_source_name,d.name as cow_type_name,
 		e.name as cow_kind_name,f.name as pen_name,g.name as operation_name,h.name as staff_member_name`).
 		Joins(fmt.Sprintf("JOIN %s AS b ON a.breed_status = b.id", new(model.ConfigBreedStatus).TableName())).

+ 5 - 1
module/crontab/cow_cron.go

@@ -39,7 +39,11 @@ func (e *Entry) GenerateAsynqWorkOrder() error {
 			zaplog.Error("crontab", zap.Any("GenerateWorkOrder", err), zap.Any("execTime", workOrder.ExecTime))
 			continue
 		}
-		execTime := time.Now().Unix() - timeUnix
+		nowTime := time.Now().Unix()
+		if timeUnix < nowTime {
+			continue
+		}
+		execTime := timeUnix - nowTime
 
 		task := model.NewTaskWorkOrderPayload(workOrder.Id, time.Duration(execTime)*time.Second)
 		if _, err = e.AsynqClient.CtxEnqueue(context.Background(), task); err != nil {

+ 8 - 0
module/crontab/other.go

@@ -31,6 +31,14 @@ func (e *Entry) CreateCrontabLog(name string) {
 	if err := e.DB.Model(&model.CronLog{}).Create(crontabLog).Error; err != nil {
 		zaplog.Error("CreateCrontabLog", zap.Any("err", err), zap.String("name", name))
 	}
+
+	// 日志保留15天以内的
+	nowDay := time.Now()
+	beforeDay := nowDay.AddDate(0, 0, -15)
+	beforeDayFormat := beforeDay.Format(model.LayoutDate2)
+	if err := e.DB.Model(&model.CronLog{}).Where("date < ?", beforeDayFormat).Delete(&model.CronLog{}).Error; err != nil {
+		zaplog.Error("CreateCrontabLog", zap.Any("err", err), zap.String("name", name))
+	}
 }
 
 // CreatedCalendar 创建当天工单日历记录

+ 0 - 1
service/asynqsvc/client.go

@@ -34,6 +34,5 @@ func (c *ClientEntry) CtxEnqueue(ctx context.Context, task *asynq.Task, ops ...O
 		return taskInfo, xerr.WithStack(err)
 	}
 
-	zaplog.Info("asynq CtxEnqueue", zap.Any("task", task), zap.Any("ops", ops))
 	return taskInfo, nil
 }

+ 39 - 0
util/util_test.go

@@ -0,0 +1,39 @@
+package util
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestUtil_ConvertParseLocalUnix(t *testing.T) {
+	type args struct {
+		unix int64
+	}
+
+	tests := []struct {
+		Name string
+		Args args
+	}{
+		{
+			Name: "08:00:00",
+			Args: args{
+				unix: 1727049600,
+			},
+		},
+		{
+			Name: "09:00:00",
+			Args: args{
+				unix: 1727053200,
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.Name, func(t *testing.T) {
+			got, err := ConvertParseLocalUnix(tt.Name)
+			assert.Nil(t, err)
+			assert.Equal(t, tt.Args.unix, got)
+		})
+	}
+}