|
@@ -42,7 +42,7 @@ func (e *Entry) GenerateAsynqWorkOrder() error {
|
|
|
zaplog.Error("crontab", zap.Any("GenerateWorkOrder", err), zap.Any("execTime", workOrder.ExecTime))
|
|
|
continue
|
|
|
}
|
|
|
- nowTime := time.Now().Unix()
|
|
|
+ nowTime := time.Now().Local().Unix()
|
|
|
if timeUnix < nowTime {
|
|
|
continue
|
|
|
}
|
|
@@ -114,30 +114,60 @@ func (e *Entry) Indicators() error {
|
|
|
|
|
|
// UpdateCowInfo 牛只基本信息维护
|
|
|
func (e *Entry) UpdateCowInfo() error {
|
|
|
+ pastureList := e.FindPastureList()
|
|
|
+ for _, pasture := range pastureList {
|
|
|
+ e.UpdateCowInfoByPasture(pasture.Id)
|
|
|
+ }
|
|
|
+ e.CreateCrontabLog(UpdateCowInfo)
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (e *Entry) UpdateCowInfoByPasture(pastureId int64) {
|
|
|
+ if ok := e.IsExistCrontabLog(UpdateCowInfo); ok {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
cowList := make([]*model.Cow, 0)
|
|
|
if err := e.DB.Model(new(model.Cow)).
|
|
|
+ Where("pasture_id = ?", pastureId).
|
|
|
Where("admission_status = ?", pasturePb.AdmissionStatus_Admission).
|
|
|
Find(&cowList).Error; err != nil {
|
|
|
- return err
|
|
|
+ zaplog.Error("crontab", zap.Any("UpdateCowInfoByPasture", err))
|
|
|
+ return
|
|
|
}
|
|
|
- if ok := e.IsExistCrontabLog(UpdateCowInfo); ok {
|
|
|
- return nil
|
|
|
- }
|
|
|
- defer func() {
|
|
|
- e.CreateCrontabLog(UpdateCowInfo)
|
|
|
- }()
|
|
|
+
|
|
|
+ dateTime := time.Now().Local().Format(model.LayoutMonth)
|
|
|
for _, cow := range cowList {
|
|
|
+ // 周活动量
|
|
|
weeklyActive := e.UpdateCowWeeklyHigh(cow)
|
|
|
cow.EventUpdate(weeklyActive)
|
|
|
if err := e.DB.Model(new(model.Cow)).
|
|
|
- Select("day_age", "calving_age", "pregnancy_age", "admission_age", "abortion_age", "cow_type",
|
|
|
- "weekly_active", "lactation_age", "dry_milk_age").
|
|
|
+ Select("day_age", "calving_age", "pregnancy_age", "admission_age",
|
|
|
+ "abortion_age", "cow_type", "weekly_active", "lactation_age", "dry_milk_age").
|
|
|
Where("id = ?", cow.Id).
|
|
|
Updates(cow).Error; err != nil {
|
|
|
zaplog.Error("Crontab", zap.Any("UpdateCowDayAge", err))
|
|
|
}
|
|
|
+
|
|
|
+ // 每月怀孕数据
|
|
|
+ cowPregnantList := make([]*model.CowPregnant, 0)
|
|
|
+ if cow.IsPregnant == pasturePb.IsShow_Ok || cow.BreedStatus == pasturePb.BreedStatus_Pregnant {
|
|
|
+ cowPregnantList = append(cowPregnantList, model.NewCowPregnant(pastureId, cow, dateTime))
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(cowPregnantList) > 0 {
|
|
|
+ if err := e.DB.Model(new(model.CowPregnant)).
|
|
|
+ Where("pasture_id = ?", pastureId).
|
|
|
+ Where("date_time = ?", dateTime).
|
|
|
+ Delete(&model.CowPregnant{}).Error; err != nil {
|
|
|
+ zaplog.Error("Crontab", zap.Any("UpdateCowPregnant", err))
|
|
|
+ }
|
|
|
+ if err := e.DB.Model(new(model.CowPregnant)).
|
|
|
+ Create(&cowPregnantList).Error; err != nil {
|
|
|
+ zaplog.Error("Crontab", zap.Any("UpdateCowPregnant", err))
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- return nil
|
|
|
}
|
|
|
|
|
|
// ImmunizationPlan 免疫计划,生成工作单
|
|
@@ -154,7 +184,7 @@ func (e *Entry) ImmunizationPlan() error {
|
|
|
}
|
|
|
var todayCount int32 = 0
|
|
|
|
|
|
- nowTime := time.Now()
|
|
|
+ nowTime := time.Now().Local()
|
|
|
for _, plan := range planList {
|
|
|
cowList := make([]*model.Cow, 0)
|
|
|
pref := e.DB.Table(fmt.Sprintf("%s as a", new(model.Cow).TableName())).
|
|
@@ -182,7 +212,7 @@ func (e *Entry) ImmunizationPlan() error {
|
|
|
if plan.ImmunizationPlanId > 0 {
|
|
|
pref.Joins("INNER JOIN event_immunization_plan as b ON b.plan_id = ? ", plan.ImmunizationPlanId).
|
|
|
Where("b.cow_id = a.id").
|
|
|
- Where("DATE_ADD(b.reality_day, INTERVAL ? DAY) = ?", plan.Value, time.Now().Format(model.LayoutDate2)).
|
|
|
+ Where("DATE_ADD(b.reality_day, INTERVAL ? DAY) = ?", plan.Value, time.Now().Local().Format(model.LayoutDate2)).
|
|
|
Where("b.status = ?", pasturePb.IsShow_Ok)
|
|
|
}
|
|
|
}
|
|
@@ -236,7 +266,7 @@ func (e *Entry) SameTimePlan() error {
|
|
|
e.CreateCrontabLog(SameTimePlan)
|
|
|
}()
|
|
|
|
|
|
- currWeek := time.Now().Weekday()
|
|
|
+ currWeek := time.Now().Local().Weekday()
|
|
|
for _, sameTime := range sameTimeList {
|
|
|
if len(sameTime.WeekType) <= 0 {
|
|
|
continue
|
|
@@ -305,7 +335,7 @@ func (e *Entry) SameTimePlan() error {
|
|
|
// UpdateSameTime 更新每天同期数据
|
|
|
func (e *Entry) UpdateSameTime() error {
|
|
|
calendarTypeList := backend.CalendarTypeEnumList("")
|
|
|
- showDay := time.Now().Format(model.LayoutDate2)
|
|
|
+ showDay := time.Now().Local().Format(model.LayoutDate2)
|
|
|
for _, v := range calendarTypeList {
|
|
|
count := int64(0)
|
|
|
if err := e.DB.Model(new(model.EventCowSameTime)).
|
|
@@ -363,7 +393,7 @@ func (e *Entry) SystemBasicCrontab() error {
|
|
|
return xerr.WithStack(err)
|
|
|
}
|
|
|
|
|
|
- currWeekValue := time.Now().Weekday()
|
|
|
+ currWeekValue := time.Now().Local().Weekday()
|
|
|
for _, systemBasic := range systemBasicList {
|
|
|
// 周执行
|
|
|
if systemBasic.Name == model.PregnantCheckForFirst && systemBasic.WeekValue >= 0 &&
|
|
@@ -420,7 +450,7 @@ func (e *Entry) SystemBasicCrontab() error {
|
|
|
|
|
|
func (e *Entry) DeleteOldOriginal() error {
|
|
|
if err := e.DB.Model(new(model.NeckRingOriginal)).
|
|
|
- Where("active_date <= ?", time.Now().AddDate(0, 0, -7).Format(model.LayoutDate2)).
|
|
|
+ Where("active_date <= ?", time.Now().Local().AddDate(0, 0, -7).Format(model.LayoutDate2)).
|
|
|
Delete(&model.NeckRingOriginal{}).Error; err != nil {
|
|
|
zaplog.Error("crontab", zap.Any("DeleteOldOriginal", err))
|
|
|
}
|
|
@@ -441,7 +471,7 @@ func (e *Entry) UpdateDiseaseToCalendar() error {
|
|
|
}
|
|
|
if count > 0 {
|
|
|
calendarTypeName := backend.CalendarTypeMap()[pasturePb.CalendarType_Disease]
|
|
|
- startDay := time.Now().Format(model.LayoutDate2)
|
|
|
+ startDay := time.Now().Local().Format(model.LayoutDate2)
|
|
|
newCalendar := model.NewCalendar(pasture.Id, calendarTypeName, pasturePb.CalendarType_Disease, startDay, startDay, int32(count))
|
|
|
if err := e.DB.Model(new(model.Calendar)).
|
|
|
Create(newCalendar).Error; err != nil {
|
|
@@ -455,7 +485,7 @@ func (e *Entry) UpdateDiseaseToCalendar() error {
|
|
|
|
|
|
func (e *Entry) InitEventData(cowList []*model.Cow, systemBasic *model.SystemBasic) {
|
|
|
calendarType := pasturePb.CalendarType_Invalid
|
|
|
- nowTime := time.Now()
|
|
|
+ nowTime := time.Now().Local()
|
|
|
startDay, endDay := "", ""
|
|
|
switch systemBasic.Name {
|
|
|
case model.PregnantCheckForFirst, model.PregnantCheckForSecond:
|
|
@@ -508,8 +538,8 @@ func (e *Entry) UpdateCowWeeklyHigh(cow *model.Cow) int32 {
|
|
|
}
|
|
|
|
|
|
weeklyActiveModelList := make([]*model.WeeklyActiveModel, 0)
|
|
|
- startTime := time.Now().AddDate(0, 0, -8).Format(model.LayoutDate2)
|
|
|
- endTime := time.Now().AddDate(0, 0, -2).Format(model.LayoutDate2)
|
|
|
+ startTime := time.Now().Local().AddDate(0, 0, -8).Format(model.LayoutDate2)
|
|
|
+ endTime := time.Now().Local().AddDate(0, 0, -2).Format(model.LayoutDate2)
|
|
|
selectStr := fmt.Sprintf(`cow_id,heat_date,count(1) AS nb,IF(ROUND(AVG(high))>%d, ROUND(AVG(high)), %d) AS high`, minWeeklyActive.Value, minWeeklyActive.Value)
|
|
|
if err = e.DB.Model(new(model.NeckActiveHabit)).
|
|
|
Select(selectStr).
|