Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
afae711f
authored
Feb 28, 2026
by
Jony.L
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
算力资源结构真实数据统计;API请求趋势真实数据统计
parent
0442af88
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
273 additions
and
2 deletions
+273
-2
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/HomeIndexController.java
+8
-0
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/vo/HomeIndexComputeDistributionRespVO.java
+2
-1
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexService.java
+3
-0
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexServiceImpl.java
+150
-1
computility-module-compute/computility-module-compute-api/src/main/java/com/luhu/computility/module/compute/api/order/ComputeStatisticsApi.java
+3
-0
computility-module-compute/computility-module-compute-api/src/main/java/com/luhu/computility/module/compute/api/order/dto/ComputeDistributionDTO.java
+27
-0
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/impl/ComputeStatisticsApiImpl.java
+80
-0
No files found.
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/HomeIndexController.java
View file @
afae711f
...
@@ -5,6 +5,7 @@ import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCall
...
@@ -5,6 +5,7 @@ import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCall
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeDashboardRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO
;
import
com.luhu.computility.module.biz.service.home.HomeIndexService
;
import
com.luhu.computility.module.biz.service.home.HomeIndexService
;
...
@@ -78,6 +79,13 @@ public class HomeIndexController {
...
@@ -78,6 +79,13 @@ public class HomeIndexController {
return
success
(
homeIndexService
.
getComputeDistribution
(
type
));
return
success
(
homeIndexService
.
getComputeDistribution
(
type
));
}
}
@GetMapping
(
"/getAllDashboardData"
)
@Operation
(
summary
=
"获取首页大屏所有数据"
)
@PermitAll
public
CommonResult
<
HomeDashboardRespVO
>
getAllDashboardData
()
{
return
success
(
homeIndexService
.
getAllDashboardData
());
}
}
}
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/controller/admin/home/vo/HomeIndexComputeDistributionRespVO.java
View file @
afae711f
...
@@ -23,7 +23,8 @@ public class HomeIndexComputeDistributionRespVO {
...
@@ -23,7 +23,8 @@ public class HomeIndexComputeDistributionRespVO {
@Schema
(
description
=
"计算资源分布"
)
@Schema
(
description
=
"计算资源分布"
)
private
List
<
ComputeDistribution
>
resource
;
private
List
<
ComputeDistribution
>
resource
;
class
ComputeDistribution
{
@Data
public
static
class
ComputeDistribution
{
private
String
name
;
private
String
name
;
private
double
value
;
private
double
value
;
}
}
...
...
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexService.java
View file @
afae711f
...
@@ -5,6 +5,7 @@ import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCall
...
@@ -5,6 +5,7 @@ import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCall
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeDashboardRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO
;
...
@@ -30,4 +31,6 @@ public interface HomeIndexService {
...
@@ -30,4 +31,6 @@ public interface HomeIndexService {
HomeIndexComputeDistributionRespVO
getComputeDistribution
(
String
type
);
HomeIndexComputeDistributionRespVO
getComputeDistribution
(
String
type
);
HomeDashboardRespVO
getAllDashboardData
();
}
}
computility-module-biz/computility-module-biz-biz/src/main/java/com/luhu/computility/module/biz/service/home/HomeIndexServiceImpl.java
View file @
afae711f
...
@@ -14,10 +14,12 @@ import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCall
...
@@ -14,10 +14,12 @@ import com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexApiCall
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexComputeDistributionRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOrdersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexOverallSituationRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeDashboardRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexTopBarRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO
;
import
com.luhu.computility.module.biz.controller.admin.home.vo.HomeIndexUsersCountRespVO
;
import
com.luhu.computility.module.compute.api.order.ComputeOrderStatisticsApi
;
import
com.luhu.computility.module.compute.api.order.ComputeOrderStatisticsApi
;
import
com.luhu.computility.module.compute.api.order.ComputeStatisticsApi
;
import
com.luhu.computility.module.compute.api.order.ComputeStatisticsApi
;
import
com.luhu.computility.module.compute.api.order.dto.ComputeDistributionDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ComputeOrderStatisticsDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderRespDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderRespDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO
;
...
@@ -320,7 +322,31 @@ public class HomeIndexServiceImpl implements HomeIndexService {
...
@@ -320,7 +322,31 @@ public class HomeIndexServiceImpl implements HomeIndexService {
@Override
@Override
public
HomeIndexComputeDistributionRespVO
getComputeDistribution
(
String
type
)
{
public
HomeIndexComputeDistributionRespVO
getComputeDistribution
(
String
type
)
{
return
null
;
ComputeDistributionDTO
distributionDTO
=
computeStatisticsApi
.
getComputeDistribution
();
HomeIndexComputeDistributionRespVO
result
=
new
HomeIndexComputeDistributionRespVO
();
List
<
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
>
gpuList
=
convertToVoList
(
distributionDTO
.
getGpu
());
List
<
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
>
sourceList
=
convertToVoList
(
distributionDTO
.
getSource
());
List
<
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
>
resourceList
=
convertToVoList
(
distributionDTO
.
getResource
());
result
.
setGpu
(
gpuList
);
result
.
setSource
(
sourceList
);
result
.
setResource
(
resourceList
);
return
result
;
}
private
List
<
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
>
convertToVoList
(
List
<
ComputeDistributionDTO
.
DistributionItem
>
itemList
)
{
if
(
CollectionUtils
.
isEmpty
(
itemList
))
{
return
java
.
util
.
Collections
.
emptyList
();
}
return
itemList
.
stream
().
map
(
item
->
{
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
vo
=
new
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
();
vo
.
setName
(
item
.
getName
());
vo
.
setValue
(
item
.
getValue
().
doubleValue
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
}
@Override
@Override
...
@@ -499,6 +525,129 @@ public class HomeIndexServiceImpl implements HomeIndexService {
...
@@ -499,6 +525,129 @@ public class HomeIndexServiceImpl implements HomeIndexService {
throw
new
ServiceException
(
"无效的统计时间类型:"
+
dateType
);
throw
new
ServiceException
(
"无效的统计时间类型:"
+
dateType
);
}
}
@Override
public
HomeDashboardRespVO
getAllDashboardData
()
{
HomeDashboardRespVO
result
=
new
HomeDashboardRespVO
();
// 1. 平台总体态势(算力总规模、已租赁算力、算力利用率、运行中任务数)
HomeIndexOverallSituationRespVO
overallSituation
=
getOverallSituation
();
HomeDashboardRespVO
.
OverallSituationVO
overallSituationVO
=
new
HomeDashboardRespVO
.
OverallSituationVO
();
overallSituationVO
.
setAllCompute
(
overallSituation
.
getAllCompute
().
toString
());
overallSituationVO
.
setLeaseCompute
(
overallSituation
.
getLeaseCompute
().
toString
());
overallSituationVO
.
setComputeUtilizationRate
(
overallSituation
.
getComputeUtilizationRate
().
toString
());
overallSituationVO
.
setRunningTaskCount
(
overallSituation
.
getRunningTaskCount
());
result
.
setOverallSituation
(
overallSituationVO
);
// 2. 算力资源结构分布(GPU型号分布、算力来源分布、计算资源分布)
HomeIndexComputeDistributionRespVO
computeDistribution
=
getComputeDistribution
(
null
);
HomeDashboardRespVO
.
ComputeDistributionVO
computeDistributionVO
=
new
HomeDashboardRespVO
.
ComputeDistributionVO
();
computeDistributionVO
.
setGpu
(
convertGpuDistribution
(
computeDistribution
.
getGpu
()));
computeDistributionVO
.
setSource
(
convertDistribution
(
computeDistribution
.
getSource
()));
computeDistributionVO
.
setResource
(
convertDistribution
(
computeDistribution
.
getResource
()));
result
.
setComputeDistribution
(
computeDistributionVO
);
// 3. API调用趋势(按日/月/年三个维度统计)
Map
<
String
,
List
<
HomeDashboardRespVO
.
ApiCallsVO
>>
apiCallsMap
=
new
HashMap
<>();
apiCallsMap
.
put
(
"d"
,
convertApiCalls
(
getApiCallsData
(
"d"
)));
apiCallsMap
.
put
(
"m"
,
convertApiCalls
(
getApiCallsData
(
"m"
)));
apiCallsMap
.
put
(
"y"
,
convertApiCalls
(
getApiCallsData
(
"y"
)));
result
.
setApiCalls
(
apiCallsMap
);
// 4. 订单数据(算力订单和API订单的统计,按日/月/年三个维度)
Map
<
String
,
List
<
HomeDashboardRespVO
.
OrderStatisticsVO
>>
ordersMap
=
new
HashMap
<>();
ordersMap
.
put
(
"d"
,
convertOrders
(
getOrdersData
(
"d"
)));
ordersMap
.
put
(
"m"
,
convertOrders
(
getOrdersData
(
"m"
)));
ordersMap
.
put
(
"y"
,
convertOrders
(
getOrdersData
(
"y"
)));
result
.
setOrders
(
ordersMap
);
// 5. 用户管理数据(用户统计,按日/月/年三个维度)
Map
<
String
,
List
<
HomeDashboardRespVO
.
UserStatisticsVO
>>
usersMap
=
new
HashMap
<>();
usersMap
.
put
(
"d"
,
convertUsers
(
getUsersData
(
"d"
)));
usersMap
.
put
(
"m"
,
convertUsers
(
getUsersData
(
"m"
)));
usersMap
.
put
(
"y"
,
convertUsers
(
getUsersData
(
"y"
)));
result
.
setUsers
(
usersMap
);
// 6. 服务能力数据(上线应用数和API数量的历年统计,暂时返回空数据)
HomeDashboardRespVO
.
ServiceCapabilityVO
serviceCapabilityVO
=
new
HomeDashboardRespVO
.
ServiceCapabilityVO
();
serviceCapabilityVO
.
setYears
(
new
ArrayList
<>());
serviceCapabilityVO
.
setAppOnline
(
new
ArrayList
<>());
serviceCapabilityVO
.
setApiOnline
(
new
ArrayList
<>());
result
.
setServiceCapability
(
serviceCapabilityVO
);
// 7. 轮播数据(月度应用和模型服务数据,暂时返回空列表)
result
.
setCarouselItems
(
new
ArrayList
<>());
return
result
;
}
// 转换GPU分布数据
private
List
<
HomeDashboardRespVO
.
DistributionItem
>
convertGpuDistribution
(
List
<
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
new
ArrayList
<>();
}
return
list
.
stream
().
map
(
item
->
{
HomeDashboardRespVO
.
DistributionItem
vo
=
new
HomeDashboardRespVO
.
DistributionItem
();
vo
.
setName
(
item
.
getName
());
vo
.
setValue
(
item
.
getValue
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
// 转换分布数据(算力来源、计算资源)
private
List
<
HomeDashboardRespVO
.
DistributionItem
>
convertDistribution
(
List
<
HomeIndexComputeDistributionRespVO
.
ComputeDistribution
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
new
ArrayList
<>();
}
return
list
.
stream
().
map
(
item
->
{
HomeDashboardRespVO
.
DistributionItem
vo
=
new
HomeDashboardRespVO
.
DistributionItem
();
vo
.
setName
(
item
.
getName
());
vo
.
setValue
(
item
.
getValue
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
// 转换API调用数据
private
List
<
HomeDashboardRespVO
.
ApiCallsVO
>
convertApiCalls
(
List
<
HomeIndexApiCallsRespVO
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
new
ArrayList
<>();
}
return
list
.
stream
().
map
(
item
->
{
HomeDashboardRespVO
.
ApiCallsVO
vo
=
new
HomeDashboardRespVO
.
ApiCallsVO
();
vo
.
setCountDate
(
item
.
getCountDate
());
vo
.
setCallsCount
(
item
.
getCallsCount
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
// 转换订单统计数据
private
List
<
HomeDashboardRespVO
.
OrderStatisticsVO
>
convertOrders
(
List
<
HomeIndexOrdersCountRespVO
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
new
ArrayList
<>();
}
return
list
.
stream
().
map
(
item
->
{
HomeDashboardRespVO
.
OrderStatisticsVO
vo
=
new
HomeDashboardRespVO
.
OrderStatisticsVO
();
vo
.
setCountDate
(
item
.
getCountDate
());
vo
.
setComputeOrdersCount
(
item
.
getComputeOrdersCount
());
vo
.
setApiOrdersCount
(
item
.
getApiOrdersCount
());
vo
.
setComputeOrdersAmount
(
item
.
getComputeOrdersAmount
());
vo
.
setApiOrdersAmount
(
item
.
getApiOrdersAmount
());
vo
.
setTotalOrdersCount
(
item
.
getTotalOrdersCount
());
vo
.
setTotalOrdersAmount
(
item
.
getTotalOrdersAmount
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
// 转换用户统计数据
private
List
<
HomeDashboardRespVO
.
UserStatisticsVO
>
convertUsers
(
List
<
HomeIndexUsersCountRespVO
>
list
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
new
ArrayList
<>();
}
return
list
.
stream
().
map
(
item
->
{
HomeDashboardRespVO
.
UserStatisticsVO
vo
=
new
HomeDashboardRespVO
.
UserStatisticsVO
();
vo
.
setCountDate
(
item
.
getCountDate
());
vo
.
setUsersCount
(
item
.
getUsersCount
());
return
vo
;
}).
collect
(
Collectors
.
toList
());
}
}
}
computility-module-compute/computility-module-compute-api/src/main/java/com/luhu/computility/module/compute/api/order/ComputeStatisticsApi.java
View file @
afae711f
package
com
.
luhu
.
computility
.
module
.
compute
.
api
.
order
;
package
com
.
luhu
.
computility
.
module
.
compute
.
api
.
order
;
import
com.luhu.computility.module.compute.api.order.dto.ComputeDistributionDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO
;
...
@@ -14,4 +15,6 @@ public interface ComputeStatisticsApi {
...
@@ -14,4 +15,6 @@ public interface ComputeStatisticsApi {
ResourceOrderSnapshotStatisticDTO
queryResourceOrderSnapshotStatistic
();
ResourceOrderSnapshotStatisticDTO
queryResourceOrderSnapshotStatistic
();
ResourceSpuStatisticDTO
getAllCompute
();
ResourceSpuStatisticDTO
getAllCompute
();
ComputeDistributionDTO
getComputeDistribution
();
}
}
computility-module-compute/computility-module-compute-api/src/main/java/com/luhu/computility/module/compute/api/order/dto/ComputeDistributionDTO.java
0 → 100644
View file @
afae711f
package
com
.
luhu
.
computility
.
module
.
compute
.
api
.
order
.
dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @Author: jony
* @Date : 2026/01/13 17:00
* @VERSION v1.0
*/
@Data
public
class
ComputeDistributionDTO
{
private
List
<
DistributionItem
>
gpu
;
private
List
<
DistributionItem
>
source
;
private
List
<
DistributionItem
>
resource
;
@Data
public
static
class
DistributionItem
{
private
String
name
;
private
Long
value
;
}
}
computility-module-compute/computility-module-compute-biz/src/main/java/com/luhu/computility/module/compute/service/impl/ComputeStatisticsApiImpl.java
View file @
afae711f
package
com
.
luhu
.
computility
.
module
.
compute
.
service
.
impl
;
package
com
.
luhu
.
computility
.
module
.
compute
.
service
.
impl
;
import
com.luhu.computility.module.compute.api.order.ComputeStatisticsApi
;
import
com.luhu.computility.module.compute.api.order.ComputeStatisticsApi
;
import
com.luhu.computility.module.compute.api.order.dto.ComputeDistributionDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceOrderSnapshotStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO
;
import
com.luhu.computility.module.compute.api.order.dto.ResourceSpuStatisticDTO
;
import
com.luhu.computility.module.compute.dal.dataobject.resourcecategory.ResourceCategoryDO
;
import
com.luhu.computility.module.compute.dal.dataobject.resourcespu.ResourceSpuDO
;
import
com.luhu.computility.module.compute.dal.mysql.resourcecategory.ResourceCategoryMapper
;
import
com.luhu.computility.module.compute.dal.mysql.resourceordersnapshot.ResourceOrderSnapshotMapper
;
import
com.luhu.computility.module.compute.dal.mysql.resourceordersnapshot.ResourceOrderSnapshotMapper
;
import
com.luhu.computility.module.compute.dal.mysql.resourcespu.ResourceSpuMapper
;
import
com.luhu.computility.module.compute.dal.mysql.resourcespu.ResourceSpuMapper
;
import
com.luhu.computility.module.compute.enums.ResourceSpuStatus
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* 算力资源订单统计API实现类
* 算力资源订单统计API实现类
...
@@ -25,6 +34,9 @@ public class ComputeStatisticsApiImpl implements ComputeStatisticsApi {
...
@@ -25,6 +34,9 @@ public class ComputeStatisticsApiImpl implements ComputeStatisticsApi {
@Resource
@Resource
private
ResourceSpuMapper
resourceSpuMapper
;
private
ResourceSpuMapper
resourceSpuMapper
;
@Resource
private
ResourceCategoryMapper
resourceCategoryMapper
;
@Override
@Override
public
ResourceSpuStatisticDTO
getAllCompute
()
{
public
ResourceSpuStatisticDTO
getAllCompute
()
{
...
@@ -37,6 +49,74 @@ public class ComputeStatisticsApiImpl implements ComputeStatisticsApi {
...
@@ -37,6 +49,74 @@ public class ComputeStatisticsApiImpl implements ComputeStatisticsApi {
return
resourceOrderSnapshotMapper
.
queryResourceOrderSnapshotStatistic
();
return
resourceOrderSnapshotMapper
.
queryResourceOrderSnapshotStatistic
();
}
}
@Override
public
ComputeDistributionDTO
getComputeDistribution
()
{
ComputeDistributionDTO
result
=
new
ComputeDistributionDTO
();
List
<
ResourceSpuDO
>
spuList
=
resourceSpuMapper
.
selectList
();
List
<
ResourceSpuDO
>
onlineSpuList
=
spuList
.
stream
()
.
filter
(
spu
->
spu
.
getStatus
()
!=
null
&&
spu
.
getStatus
().
equals
(
ResourceSpuStatus
.
ONLINE
.
getValue
()))
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
onlineSpuList
))
{
return
result
;
}
// GPU型号分布
Map
<
String
,
Long
>
gpuCountMap
=
onlineSpuList
.
stream
()
.
filter
(
spu
->
spu
.
getGpu
()
!=
null
)
.
collect
(
Collectors
.
groupingBy
(
ResourceSpuDO:
:
getGpu
,
Collectors
.
counting
()));
List
<
ComputeDistributionDTO
.
DistributionItem
>
gpuList
=
gpuCountMap
.
entrySet
().
stream
()
.
map
(
entry
->
{
ComputeDistributionDTO
.
DistributionItem
item
=
new
ComputeDistributionDTO
.
DistributionItem
();
item
.
setName
(
entry
.
getKey
());
item
.
setValue
(
entry
.
getValue
());
return
item
;
})
.
collect
(
Collectors
.
toList
());
// 算力来源分布
Map
<
String
,
Long
>
sourceCountMap
=
onlineSpuList
.
stream
()
.
filter
(
spu
->
spu
.
getSource
()
!=
null
)
.
collect
(
Collectors
.
groupingBy
(
ResourceSpuDO:
:
getSource
,
Collectors
.
counting
()));
List
<
ComputeDistributionDTO
.
DistributionItem
>
sourceList
=
sourceCountMap
.
entrySet
().
stream
()
.
map
(
entry
->
{
ComputeDistributionDTO
.
DistributionItem
item
=
new
ComputeDistributionDTO
.
DistributionItem
();
item
.
setName
(
entry
.
getKey
());
item
.
setValue
(
entry
.
getValue
());
return
item
;
})
.
collect
(
Collectors
.
toList
());
// 计算资源分布(按分类)
// 查询所有分类,用于将 categoryId 转换为分类名称
List
<
ResourceCategoryDO
>
categoryList
=
resourceCategoryMapper
.
selectList
();
Map
<
Long
,
String
>
categoryIdToNameMap
=
categoryList
.
stream
()
.
collect
(
Collectors
.
toMap
(
ResourceCategoryDO:
:
getId
,
ResourceCategoryDO:
:
getName
));
Map
<
Long
,
Long
>
categoryCountMap
=
onlineSpuList
.
stream
()
.
filter
(
spu
->
spu
.
getCategoryId
()
!=
null
)
.
collect
(
Collectors
.
groupingBy
(
ResourceSpuDO:
:
getCategoryId
,
Collectors
.
counting
()));
List
<
ComputeDistributionDTO
.
DistributionItem
>
resourceList
=
categoryCountMap
.
entrySet
().
stream
()
.
map
(
entry
->
{
ComputeDistributionDTO
.
DistributionItem
item
=
new
ComputeDistributionDTO
.
DistributionItem
();
// 使用分类名称而不是 categoryId
String
categoryName
=
categoryIdToNameMap
.
get
(
entry
.
getKey
());
item
.
setName
(
categoryName
!=
null
?
categoryName
:
"未知分类"
);
item
.
setValue
(
entry
.
getValue
());
return
item
;
})
.
collect
(
Collectors
.
toList
());
result
.
setGpu
(
gpuList
);
result
.
setSource
(
sourceList
);
result
.
setResource
(
resourceList
);
return
result
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment