Răsfoiți Sursa

Merge branch 'feature/eta2.5.9_api_stat' into debug

xyxie 2 zile în urmă
părinte
comite
32ba84969a

+ 24 - 7
controllers/data_manage/edb_inspection.go

@@ -7,7 +7,7 @@ import (
 	"eta/eta_api/models/data_manage/edb_inspection"
 	"eta/eta_api/services/data"
 	"eta/eta_api/utils"
-
+	"time"
 	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
@@ -283,7 +283,8 @@ func (c *EdbInspectionController) GetInspectionRecordDetail() {
 	// 根据source和terminalCode查询巡检记录
 	source, _ := c.GetInt("Source")
 	terminalCode := c.GetString("TerminalCode")
-	inspectionTime := c.GetString("InspectionTime")
+	startDate := c.GetString("StartDate")
+	endDate := c.GetString("EndDate")
 
 	pageSize, _ := c.GetInt("PageSize")
 	currentIndex, _ := c.GetInt("CurrentIndex")
@@ -305,11 +306,27 @@ func (c *EdbInspectionController) GetInspectionRecordDetail() {
 		condition += " AND r.terminal_code = ?"
 		pars = append(pars, terminalCode)
 	}
-	if inspectionTime != "" {
-		startTime := inspectionTime + " 00:00:00"
-		endTime := inspectionTime + " 23:59:59"
-		condition += " AND r.inspection_time >= ? AND r.inspection_time <= ?"
-		pars = append(pars, startTime)
+	if startDate != "" {
+		// 检查是否是时间格式
+		_, err := time.Parse(utils.FormatDate, startDate)
+		if err != nil {
+			br.Msg = "开始时间格式错误"
+			br.ErrMsg = "开始时间格式错误,请输入正确的时间格式"
+			return
+		}
+		condition += " AND r.inspection_time >= ?"
+		pars = append(pars, startDate)
+	}
+	if endDate != "" {
+		// 检查是否是时间格式
+		_, err := time.Parse(utils.FormatDate, endDate)
+		if err != nil {
+			br.Msg = "结束时间格式错误"
+			br.ErrMsg = "结束时间格式错误,请输入正确的时间格式"
+			return
+		}
+		endTime := endDate + " 23:59:59"
+		condition += " AND r.inspection_time <= ?"
 		pars = append(pars, endTime)
 	}
 

+ 47 - 1
controllers/data_stat/edb_terminal.go

@@ -8,6 +8,7 @@ import (
 	"eta/eta_api/services/data_stat"
 	"eta/eta_api/utils"
 	"fmt"
+	"strconv"
 
 	"github.com/rdlucklib/rdluck_tools/paging"
 )
@@ -141,13 +142,58 @@ func (this *EdbTerminalController) List() {
 		br.Ret = 408
 		return
 	}
+	source, _ := this.GetInt("Source")
 
-	list, err := data_manage.GetEdbTerminalList()
+	list, err := data_manage.GetEdbTerminalList(source)
 	if err != nil {
 		br.Msg = "获取终端列表失败"
 		br.ErrMsg = "获取终端列表失败 ErrMsg:" + err.Error()
 		return
 	}
+
+	// 计算已使用额度
+	// 根据source查找对应的终端信息,比如source为34,则查询对应的数据源里的指标
+	// 获取数据源详细信息
+	for _, v := range list {
+		num, subNumList, err := data_manage.GetIndexNumBySource(v.Source, v.TerminalCode)
+		if err != nil {
+			br.Msg = "获取终端列表失败"
+			br.ErrMsg = "获取终端列表失败 ErrMsg:" + err.Error()
+			return
+		}
+		v.UsedQuota = strconv.Itoa(num)
+		if len(subNumList) == 1 {
+			v.UsedQuota = strconv.Itoa(subNumList[0].Num)
+		} else if len(subNumList) > 1 {
+			if v.Source == utils.DATA_SOURCE_THS {
+				edbNum := 0
+				dateNum := 0
+				hfNum := 0
+				for _, subNum := range subNumList {
+					if subNum.SubSource == utils.DATA_SUB_SOURCE_HIGH_FREQUENCY {
+						hfNum = subNum.Num
+					} else if subNum.SubSource == utils.DATA_SUB_SOURCE_EDB {
+						edbNum = subNum.Num
+					} else if subNum.SubSource == utils.DATA_SUB_SOURCE_DATE {
+						dateNum = subNum.Num
+					}
+				}
+				v.UsedQuota = fmt.Sprintf("EDB:%d\n日期序列:%d\n高频序列:%d", edbNum, dateNum, hfNum)
+			}else if v.Source == utils.DATA_SOURCE_WIND {
+				edbNum := 0
+				dateNum := 0
+				for _, subNum := range subNumList {
+					if subNum.SubSource == utils.DATA_SUB_SOURCE_EDB {
+						edbNum = subNum.Num
+					} else if subNum.SubSource == utils.DATA_SUB_SOURCE_DATE {
+						dateNum = subNum.Num
+					}
+				}
+				v.UsedQuota = fmt.Sprintf("EDB:%d\n日期序列:%d", edbNum, dateNum)
+			}
+		}
+	}
+
 	resp := &data_manage.EdbTerminalListResp{
 		List: list,
 	}

+ 41 - 3
models/data_manage/edb_terminal.go

@@ -21,11 +21,15 @@ type EdbTerminal struct {
 	Value        string    `description:"终端相关的token"`
 	ModifyTime   time.Time `description:"修改时间"`
 	CreateTime   time.Time `description:"创建时间"`
+	AccountQuota string       `description:"账号额度"`
+	IsApi        int8      `description:"获取类型(1,接口类型,0终端类型)"`
+	
 }
 
 type EdbTerminalItem struct {
 	TerminalId   int    `orm:"column(terminal_id);pk" gorm:"primaryKey"`
 	Source       int    `description:"指标来源类型"`
+	SourceName   string `description:"数据源类型名称"`
 	Name         string `description:"终端别名"`
 	TerminalCode string `description:"终端编码,用于配置在机器上"`
 	ServerUrl    string `description:"终端地址"`
@@ -35,6 +39,9 @@ type EdbTerminalItem struct {
 	Value        string `description:"终端相关的token"`
 	ModifyTime   string `description:"修改时间"`
 	CreateTime   string `description:"创建时间"`
+	AccountQuota string    `description:"账号额度"`
+	IsApi        int8   `description:"获取类型(1,接口类型,0终端类型)"`
+	UsedQuota    string    `description:"已使用额度"`
 }
 
 func (e *EdbTerminalItem) AfterFind(db *gorm.DB) (err error) {
@@ -80,6 +87,8 @@ type AddEdbTerminalListReq struct {
 	Num       int    `description:"终端最大指标数"`
 	//Status    int    `description:"状态,1启用,2禁用"`
 	Value string `description:"终端相关的token"`
+	AccountQuota string `description:"账号额度"`
+	IsApi        int8 `description:"获取类型(1,接口类型,0终端类型)"`
 }
 
 type SetEdbTerminalStatusReq struct {
@@ -110,11 +119,18 @@ func GetEdbTerminalByTerminalCode(terminalCode string) (item *EdbTerminal, err e
 	return
 }
 
-func GetEdbTerminalList() (item []*EdbTerminalItem, err error) {
+func GetEdbTerminalList(source int) (item []*EdbTerminalItem, err error) {
 	o := global.DbMap[utils.DbNameIndex]
-	sql := ` SELECT * FROM edb_terminal ORDER BY terminal_id ASC`
-	err = o.Raw(sql).Find(&item).Error
+	var sql string
+	if source == 0 {
+		sql = ` SELECT t.*, s.source_name FROM edb_terminal t left join edb_source s on t.source = s.edb_source_id ORDER BY terminal_id ASC`
+		err = o.Raw(sql).Find(&item).Error
+	} else {
+		sql = ` SELECT t.*, s.source_name FROM edb_terminal t left join edb_source s on t.source = s.edb_source_id WHERE t.source = ? ORDER BY terminal_id ASC`
+		err = o.Raw(sql, source).Find(&item).Error
+	}
 	return
+	
 }
 
 func GetEdbTerminalBySource(source int) (item []*EdbTerminalItem, err error) {
@@ -198,3 +214,25 @@ func UpdateEdbInfoTerminal(edbInfoIds []int, terminalCode string, source int) (e
 	return
 }
 
+type IndexNumBySource struct {
+	SubSource int
+	Num int
+}
+
+func GetIndexNumBySource(source int, terminalCode string) (num int, list []*IndexNumBySource, err error) {
+	o := global.DbMap[utils.DbNameIndex]
+	tableName := EdbSourceIdMap[source].IndexTableName
+	var pars []interface{}
+	if tableName != "" {
+		sql := fmt.Sprintf(`SELECT COUNT(*) FROM %s WHERE terminal_code = ?`, tableName)
+		pars = append(pars, terminalCode)
+		err = o.Raw(sql, pars...).Scan(&num).Error
+		return
+	} else {
+		sql := `SELECT COUNT(*) as num, sub_source FROM edb_info WHERE terminal_code = ? and source = ? group by sub_source`
+		pars = append(pars, terminalCode, source)
+		err = o.Raw(sql, pars...).Find(&list).Error
+		return
+	}
+	
+}