Browse Source

fix-kanban

tags/v1.22.11.3^2
liuzx 3 years ago
parent
commit
0d3a12e7c1
2 changed files with 23 additions and 52 deletions
  1. +3
    -28
      models/cloudbrain_static.go
  2. +20
    -24
      routers/repo/cloudbrain_statistic.go

+ 3
- 28
models/cloudbrain_static.go View File

@@ -1,7 +1,6 @@
package models

import (
"fmt"
"strconv"
"time"

@@ -313,10 +312,6 @@ func InsertCloudbrainDurationStatistic(cloudbrainDurationStatistic *CloudbrainDu
return xStatistic.Insert(cloudbrainDurationStatistic)
}

func GetDurationStatisticByDate(date string, hour int, aiCenterCode string, accCardType string) (*CloudbrainDurationStatistic, error) {
cb := &CloudbrainDurationStatistic{DayTime: date, HourTime: hour, AiCenterCode: aiCenterCode, AccCardType: accCardType}
return getDurationStatistic(cb)
}
func getDurationStatistic(cb *CloudbrainDurationStatistic) (*CloudbrainDurationStatistic, error) {
has, err := x.Get(cb)
if err != nil {
@@ -327,26 +322,6 @@ func getDurationStatistic(cb *CloudbrainDurationStatistic) (*CloudbrainDurationS
return cb, nil
}

func DeleteCloudbrainDurationStatisticHour(date string, hour int, aiCenterCode string, accCardType string) error {
sess := xStatistic.NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return fmt.Errorf("Begin: %v", err)
}

if _, err := sess.Where("day_time = ? AND hour_time = ? AND ai_center_code = ? AND acc_card_type = ?", date, hour, aiCenterCode, accCardType).Delete(&CloudbrainDurationStatistic{}); err != nil {
return fmt.Errorf("Delete: %v", err)
}

if err := sess.Commit(); err != nil {
sess.Close()
return fmt.Errorf("Commit: %v", err)
}

sess.Close()
return nil
}

func GetCanUseCardInfo() ([]*ResourceQueue, error) {
sess := x.NewSession()
defer sess.Close()
@@ -402,11 +377,11 @@ func GetDurationRecordUpdateTime() ([]*CloudbrainDurationStatistic, error) {
return CloudbrainDurationStatistics, nil
}

func DeleteCloudbrainDurationStatistic() error {
func DeleteCloudbrainDurationStatistic(beginTime timeutil.TimeStamp, endTime timeutil.TimeStamp) error {
sess := xStatistic.NewSession()
defer sess.Close()
if _, err := sess.Exec("TRUNCATE TABLE cloudbrain_duration_statistic"); err != nil {
log.Info("TRUNCATE cloudbrain_duration_statistic error.")
if _, err := sess.Exec("DELETE FROM cloudbrain_duration_statistic WHERE cloudbrain_duration_statistic.date_time BETWEEN ? AND ?", beginTime, endTime); err != nil {
log.Info("DELETE cloudbrain_duration_statistic data error.")
return err
}
return nil


+ 20
- 24
routers/repo/cloudbrain_statistic.go View File

@@ -8,7 +8,6 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/timeutil"
cloudbrainService "code.gitea.io/gitea/services/cloudbrain"
)
@@ -23,9 +22,15 @@ func CloudbrainDurationStatisticHour() {
now := time.Now()
currentTime := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
if err == nil && len(recordDurationUpdateTime) > 0 {
statisticTime = time.Unix(int64(recordDurationUpdateTime[0].DateTime), 0)
statisticTime = time.Unix(int64(recordDurationUpdateTime[0].DateTime), 0).Add(+1 * time.Hour)
} else {
statisticTime = currentTime.Add(-1 * time.Hour)
statisticTime = currentTime
}
deleteBeginTime := time.Unix(int64(recordDurationUpdateTime[0].DateTime), 0)

err = models.DeleteCloudbrainDurationStatistic(timeutil.TimeStamp(deleteBeginTime.Unix()), timeutil.TimeStamp(currentTime.Unix()))
if err != nil {
log.Error("DeleteCloudbrainDurationStatistic failed", err)
}

for statisticTime.Before(currentTime) || statisticTime.Equal(currentTime) {
@@ -35,13 +40,10 @@ func CloudbrainDurationStatisticHour() {
}
log.Info("summaryDurationStat count: %v", count)
}
func UpdateDurationStatisticHistoryData() int64 {
func UpdateDurationStatisticHistoryData(beginTime time.Time, endTime time.Time) int64 {
var count int64
recordBeginTime, _ := time.ParseInLocation("2006-01-02 15:04:05", setting.Grampus.UsageRateBeginTime, time.Local)
now := time.Now()
currentTime := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
statisticTime := recordBeginTime.Add(+1 * time.Hour)

statisticTime := beginTime
currentTime := endTime
for statisticTime.Before(currentTime) || statisticTime.Equal(currentTime) {
countEach := summaryDurationStat(statisticTime)
count += countEach
@@ -105,13 +107,6 @@ func summaryDurationStat(statisticTime time.Time) int64 {
for cardType, cardDuration := range CardTypes {
cloudbrainTable := cloudbrainMap[centerCode+"/"+cardType]
if cloudbrainTable != nil {
if _, err := models.GetDurationStatisticByDate(dayTime, hourTime, centerCode, cardType); err == nil {
if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, centerCode, cardType); err != nil {
log.Error("DeleteCloudbrainDurationStatisticHour failed: %v", err.Error())
return 0
}
}

if _, ok := cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType]; !ok {
cardsTotalDurationMap[cloudbrainTable.Cluster+"/"+centerCode+"/"+cardType] = 0
}
@@ -137,12 +132,6 @@ func summaryDurationStat(statisticTime time.Time) int64 {
}

for key, cardsTotalDuration := range cardsTotalDurationMap {
if _, err := models.GetDurationStatisticByDate(dayTime, hourTime, strings.Split(key, "/")[1], strings.Split(key, "/")[2]); err == nil {
if err := models.DeleteCloudbrainDurationStatisticHour(dayTime, hourTime, strings.Split(key, "/")[1], strings.Split(key, "/")[2]); err != nil {
log.Error("DeleteCloudbrainDurationStatisticHour failed: %v", err.Error())
return 0
}
}
cloudbrainDurationStat := models.CloudbrainDurationStatistic{
DateTime: dateTime,
DayTime: dayTime,
@@ -255,8 +244,15 @@ func getcloudBrainCenterCodeAndCardTypeInfo(ciTasks []*models.CloudbrainInfo, be
}

func CloudbrainUpdateHistoryData(ctx *context.Context) {
err := models.DeleteCloudbrainDurationStatistic()
count := UpdateDurationStatisticHistoryData()
beginTimeStr := ctx.QueryTrim("beginTime")
endTimeStr := ctx.QueryTrim("endTime")
beginTime, _ := time.ParseInLocation("2006-01-02 15:04:05", beginTimeStr, time.Local)
endTime, _ := time.ParseInLocation("2006-01-02 15:04:05", endTimeStr, time.Local)
beginTimeUnix := timeutil.TimeStamp(beginTime.Unix())
endTimeUnix := timeutil.TimeStamp(endTime.Unix())

err := models.DeleteCloudbrainDurationStatistic(beginTimeUnix, endTimeUnix)
count := UpdateDurationStatisticHistoryData(beginTime, endTime)
ctx.JSON(http.StatusOK, map[string]interface{}{
"message": 0,
"count": count,


Loading…
Cancel
Save