|
@@ -7,21 +7,24 @@ import (
|
|
|
"iot_manager_service/util/common"
|
|
|
)
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var CaptureAreaService = new(captureAreaService)
|
|
|
|
|
|
type captureAreaService struct{}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
func (s captureAreaService) GetAreaList(tenantId int, req model.RequestCaptureFilter) (interface{}, error) {
|
|
|
-
|
|
|
- flag, countTimes, forData, err := s.getData(tenantId, req)
|
|
|
+
|
|
|
+ flag, forData, err := s.getData(tenantId, req)
|
|
|
+
|
|
|
|
|
|
getTop10 := s.getTop10(forData, req.Type)
|
|
|
var topArr []string
|
|
|
for _, area := range getTop10 {
|
|
|
topArr = append(topArr, area.Name)
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
mdata := make(map[string][]model.TmpCapture)
|
|
|
for _, datum := range forData {
|
|
|
time := datum.Time
|
|
@@ -38,10 +41,19 @@ func (s captureAreaService) GetAreaList(tenantId int, req model.RequestCaptureFi
|
|
|
}
|
|
|
mdata[time] = append(mdata[time], mm)
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ var countTimes []string
|
|
|
+ if flag == 1 {
|
|
|
+ countTimes = common.GetTimeMonths(req.StartTime, req.EndTime)
|
|
|
+ } else {
|
|
|
+ countTimes = common.GetTimeDays(req.StartTime, req.EndTime)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
var list []model.TmpCaptures
|
|
|
-
|
|
|
-
|
|
|
for _, countTime := range countTimes {
|
|
|
+
|
|
|
var tmpsData []model.TmpCapture
|
|
|
for _, area := range getTop10 {
|
|
|
value := mdata[countTime]
|
|
@@ -57,11 +69,14 @@ func (s captureAreaService) GetAreaList(tenantId int, req model.RequestCaptureFi
|
|
|
Value: val,
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
list = append(list, model.TmpCaptures{
|
|
|
CountTime: countTime,
|
|
|
TmpCapturesData: tmpsData,
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
var list2 []model.TmpCaptures
|
|
|
for _, areas := range list {
|
|
|
data := model.ViewData(areas)
|
|
@@ -75,24 +90,30 @@ func (s captureAreaService) GetAreaList(tenantId int, req model.RequestCaptureFi
|
|
|
return list2, nil
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
func (s captureAreaService) GetAreaTypeList(tenantId int, req model.RequestCaptureFilter) (interface{}, error) {
|
|
|
|
|
|
- _, _, forData, err := s.getData(tenantId, req)
|
|
|
+ _, forData, err := s.getData(tenantId, req)
|
|
|
+
|
|
|
|
|
|
getTop10 := s.getTop10(forData, req.Type)
|
|
|
var tmp model.TmpCaptures
|
|
|
tmp.TmpCapturesData = getTop10
|
|
|
+
|
|
|
+
|
|
|
data := model.ViewData(tmp)
|
|
|
return data, err
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-func (s captureAreaService) getData(tenantId int, req model.RequestCaptureFilter) (int, []string, []edge_service.ForCaptureItsData, error) {
|
|
|
+
|
|
|
+func (s captureAreaService) getData(tenantId int, req model.RequestCaptureFilter) (int, []edge_service.ForCaptureItsData, error) {
|
|
|
+
|
|
|
flag := 0
|
|
|
if req.QueryType == "month" {
|
|
|
flag = 1
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
unit := dao.CaptureUnit{
|
|
|
TenantId: tenantId,
|
|
|
ID: req.CaptureId,
|
|
@@ -100,25 +121,18 @@ func (s captureAreaService) getData(tenantId int, req model.RequestCaptureFilter
|
|
|
unit.GetDevice()
|
|
|
var codes []string
|
|
|
codes = append(codes, unit.CaptureSn)
|
|
|
- var countTimes []string
|
|
|
- if flag == 1 {
|
|
|
- countTimes = common.GetTimeMonths(req.StartTime, req.EndTime)
|
|
|
- } else {
|
|
|
- countTimes = common.GetTimeDays(req.StartTime, req.EndTime)
|
|
|
- }
|
|
|
+
|
|
|
forCaptureIts := edge_service.ForCaptureIts{}
|
|
|
var forData []edge_service.ForCaptureItsData
|
|
|
var err error
|
|
|
- if req.Type == 1 {
|
|
|
-
|
|
|
+ if req.Type == 1 {
|
|
|
forData, err = forCaptureIts.Province(edge_service.ForCaptureItsReq{
|
|
|
Codes: codes,
|
|
|
Start: req.StartTime,
|
|
|
End: req.EndTime,
|
|
|
Flag: flag,
|
|
|
})
|
|
|
- } else {
|
|
|
-
|
|
|
+ } else {
|
|
|
forData, err = forCaptureIts.City(edge_service.ForCaptureItsReq{
|
|
|
Codes: codes,
|
|
|
Start: req.StartTime,
|
|
@@ -126,25 +140,25 @@ func (s captureAreaService) getData(tenantId int, req model.RequestCaptureFilter
|
|
|
Flag: flag,
|
|
|
})
|
|
|
}
|
|
|
- return flag, countTimes, forData, err
|
|
|
+ return flag, forData, err
|
|
|
}
|
|
|
|
|
|
|
|
|
func (s captureAreaService) getTop10(data []edge_service.ForCaptureItsData, typeInt int) model.PairList {
|
|
|
-
|
|
|
-
|
|
|
- topData := make(map[string]int)
|
|
|
+
|
|
|
+ allData := make(map[string]int)
|
|
|
for _, datum := range data {
|
|
|
if typeInt == 1 {
|
|
|
- topData[datum.Province] += datum.Total
|
|
|
+ allData[datum.Province] += datum.Total
|
|
|
} else {
|
|
|
- topData[datum.City] += datum.Total
|
|
|
+ allData[datum.City] += datum.Total
|
|
|
}
|
|
|
}
|
|
|
- count := model.RankByWordCount(topData)
|
|
|
-
|
|
|
- if len(count) >= 10 {
|
|
|
- count = count[:10]
|
|
|
+
|
|
|
+ top10Data := model.RankByWordCount(allData)
|
|
|
+
|
|
|
+ if len(top10Data) >= 10 {
|
|
|
+ top10Data = top10Data[:10]
|
|
|
}
|
|
|
- return count
|
|
|
+ return top10Data
|
|
|
}
|