代码优化
This commit is contained in:
360
src/main/java/com/rj/common/DataEnrichmentUtil.java
Normal file
360
src/main/java/com/rj/common/DataEnrichmentUtil.java
Normal file
@@ -0,0 +1,360 @@
|
||||
package com.rj.common;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.rj.entity.Dealership;
|
||||
import com.rj.entity.ProjectManagement;
|
||||
import com.rj.entity.SalesManagement;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 数据丰富工具类
|
||||
* 用于批量获取关联数据并填充到主数据中,减少代码冗余
|
||||
*
|
||||
* @author 系统生成
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Component
|
||||
public class DataEnrichmentUtil {
|
||||
|
||||
@Autowired
|
||||
private ServiceManager serviceManager;
|
||||
|
||||
/**
|
||||
* 批量获取关联数据并创建映射
|
||||
*
|
||||
* @param ids 主键ID列表
|
||||
* @param service 对应的Service
|
||||
* @param idGetter ID获取函数
|
||||
* @param nameGetter 名称获取函数
|
||||
* @param <T> 实体类型
|
||||
* @param <ID> ID类型
|
||||
* @return ID到名称的映射
|
||||
*/
|
||||
public static <T, ID> Map<ID, String> batchGetNameMap(
|
||||
Collection<ID> ids,
|
||||
IService<T> service,
|
||||
Function<T, ID> idGetter,
|
||||
Function<T, String> nameGetter) {
|
||||
|
||||
if (ids == null || ids.isEmpty()) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 使用lambda表达式来避免类型问题
|
||||
queryWrapper.in(entity -> idGetter.apply(entity), ids);
|
||||
List<T> entities = service.list(queryWrapper);
|
||||
|
||||
return entities.stream()
|
||||
.collect(Collectors.toMap(
|
||||
idGetter,
|
||||
nameGetter,
|
||||
(existing, replacement) -> existing // 如果有重复key,保留第一个
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取关联数据并创建映射(支持自定义查询条件)
|
||||
*
|
||||
* @param ids 主键ID列表
|
||||
* @param service 对应的Service
|
||||
* @param idGetter ID获取函数
|
||||
* @param nameGetter 名称获取函数
|
||||
* @param additionalCondition 额外的查询条件
|
||||
* @param <T> 实体类型
|
||||
* @param <ID> ID类型
|
||||
* @return ID到名称的映射
|
||||
*/
|
||||
public static <T, ID> Map<ID, String> batchGetNameMap(
|
||||
Collection<ID> ids,
|
||||
IService<T> service,
|
||||
Function<T, ID> idGetter,
|
||||
Function<T, String> nameGetter,
|
||||
Function<LambdaQueryWrapper<T>, LambdaQueryWrapper<T>> additionalCondition) {
|
||||
|
||||
if (ids == null || ids.isEmpty()) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 使用lambda表达式来避免类型问题
|
||||
queryWrapper.in(ids.size() > 0, entity -> idGetter.apply(entity), ids);
|
||||
|
||||
if (additionalCondition != null) {
|
||||
queryWrapper = additionalCondition.apply(queryWrapper);
|
||||
}
|
||||
|
||||
List<T> entities = service.list(queryWrapper);
|
||||
|
||||
return entities.stream()
|
||||
.collect(Collectors.toMap(
|
||||
idGetter,
|
||||
nameGetter,
|
||||
(existing, replacement) -> existing
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取关联数据并创建映射(支持多个字段)
|
||||
*
|
||||
* @param ids 主键ID列表
|
||||
* @param service 对应的Service
|
||||
* @param idGetter ID获取函数
|
||||
* @param fieldGetters 字段获取函数映射
|
||||
* @param <T> 实体类型
|
||||
* @param <ID> ID类型
|
||||
* @return ID到字段值的映射
|
||||
*/
|
||||
public static <T, ID> Map<ID, Map<String, Object>> batchGetFieldMap(
|
||||
Collection<ID> ids,
|
||||
IService<T> service,
|
||||
Function<T, ID> idGetter,
|
||||
Map<String, Function<T, Object>> fieldGetters) {
|
||||
|
||||
if (ids == null || ids.isEmpty()) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 使用lambda表达式来避免类型问题
|
||||
queryWrapper.in(ids.size() > 0, entity -> idGetter.apply(entity), ids);
|
||||
List<T> entities = service.list(queryWrapper);
|
||||
|
||||
return entities.stream()
|
||||
.collect(Collectors.toMap(
|
||||
idGetter,
|
||||
entity -> {
|
||||
Map<String, Object> fieldMap = new HashMap<>();
|
||||
fieldGetters.forEach((fieldName, getter) ->
|
||||
fieldMap.put(fieldName, getter.apply(entity)));
|
||||
return fieldMap;
|
||||
},
|
||||
(existing, replacement) -> existing
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取关联数据并创建映射(支持自定义查询条件和多个字段)
|
||||
*
|
||||
* @param ids 主键ID列表
|
||||
* @param service 对应的Service
|
||||
* @param idGetter ID获取函数
|
||||
* @param fieldGetters 字段获取函数映射
|
||||
* @param additionalCondition 额外的查询条件
|
||||
* @param <T> 实体类型
|
||||
* @param <ID> ID类型
|
||||
* @return ID到字段值的映射
|
||||
*/
|
||||
public static <T, ID> Map<ID, Map<String, Object>> batchGetFieldMap(
|
||||
Collection<ID> ids,
|
||||
IService<T> service,
|
||||
Function<T, ID> idGetter,
|
||||
Map<String, Function<T, Object>> fieldGetters,
|
||||
Function<LambdaQueryWrapper<T>, LambdaQueryWrapper<T>> additionalCondition) {
|
||||
|
||||
if (ids == null || ids.isEmpty()) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// 使用lambda表达式来避免类型问题
|
||||
queryWrapper.in(ids.size() > 0, entity -> idGetter.apply(entity), ids);
|
||||
|
||||
if (additionalCondition != null) {
|
||||
queryWrapper = additionalCondition.apply(queryWrapper);
|
||||
}
|
||||
|
||||
List<T> entities = service.list(queryWrapper);
|
||||
|
||||
return entities.stream()
|
||||
.collect(Collectors.toMap(
|
||||
idGetter,
|
||||
entity -> {
|
||||
Map<String, Object> fieldMap = new HashMap<>();
|
||||
fieldGetters.forEach((fieldName, getter) ->
|
||||
fieldMap.put(fieldName, getter.apply(entity)));
|
||||
return fieldMap;
|
||||
},
|
||||
(existing, replacement) -> existing
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 从实体列表中提取指定字段的ID列表
|
||||
*
|
||||
* @param entities 实体列表
|
||||
* @param idGetter ID获取函数
|
||||
* @param <T> 实体类型
|
||||
* @param <ID> ID类型
|
||||
* @return ID列表
|
||||
*/
|
||||
public static <T, ID> List<ID> extractIds(
|
||||
Collection<T> entities,
|
||||
Function<T, ID> idGetter) {
|
||||
|
||||
if (entities == null || entities.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return entities.stream()
|
||||
.map(idGetter)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 从实体列表中提取指定字段的ID列表(支持过滤条件)
|
||||
*
|
||||
* @param entities 实体列表
|
||||
* @param idGetter ID获取函数
|
||||
* @param filter 过滤条件
|
||||
* @param <T> 实体类型
|
||||
* @param <ID> ID类型
|
||||
* @return ID列表
|
||||
*/
|
||||
public static <T, ID> List<ID> extractIds(
|
||||
Collection<T> entities,
|
||||
Function<T, ID> idGetter,
|
||||
Function<T, Boolean> filter) {
|
||||
|
||||
if (entities == null || entities.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return entities.stream()
|
||||
.filter(filter::apply)
|
||||
.map(idGetter)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// ==================== 便捷方法,使用ServiceManager ====================
|
||||
|
||||
/**
|
||||
* 批量获取门店名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getDealershipIdNameMap(Collection<String> dealershipIds) {
|
||||
|
||||
// 批量获取门店信息
|
||||
Map<String, String> dealershipNameMap;
|
||||
if (!dealershipIds.isEmpty()) {
|
||||
LambdaQueryWrapper<Dealership> dealershipQueryWrapper = new LambdaQueryWrapper<>();
|
||||
dealershipQueryWrapper.in(Dealership::getId, dealershipIds);
|
||||
List<Dealership> dealerships = serviceManager.getDealershipService().list(dealershipQueryWrapper);
|
||||
dealershipNameMap = dealerships.stream()
|
||||
.collect(Collectors.toMap(Dealership::getId, Dealership::getDealershipName));
|
||||
} else {
|
||||
dealershipNameMap = new HashMap<>();
|
||||
}
|
||||
return dealershipNameMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取项目名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getProjectIdNameMap(Collection<String> projectIds) {
|
||||
|
||||
Map<String, String> projectNameMap;
|
||||
if (!projectIds.isEmpty()) {
|
||||
LambdaQueryWrapper<ProjectManagement> projectManagementQueryWrapper = new LambdaQueryWrapper<>();
|
||||
projectManagementQueryWrapper.in(ProjectManagement::getId, projectIds);
|
||||
List<ProjectManagement> projectManagementList = serviceManager.getProjectManagementService().list(projectManagementQueryWrapper);
|
||||
projectNameMap = projectManagementList.stream()
|
||||
.collect(Collectors.toMap(ProjectManagement::getId, ProjectManagement::getProjectName));
|
||||
} else {
|
||||
projectNameMap = new HashMap<>();
|
||||
}
|
||||
|
||||
|
||||
return projectNameMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取销售名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getSalesIdNameMap(Collection<String> salesIds) {
|
||||
|
||||
// 批量获取 销售信息
|
||||
Map<String, String> saleNameMap;
|
||||
if (!salesIds.isEmpty()) {
|
||||
LambdaQueryWrapper<SalesManagement> salesQueryWrapper = new LambdaQueryWrapper<>();
|
||||
salesQueryWrapper.in(SalesManagement::getId, salesIds);
|
||||
List<SalesManagement> sales = serviceManager.getSalesManagementService().list(salesQueryWrapper);
|
||||
saleNameMap = sales.stream()
|
||||
.collect(Collectors.toMap(SalesManagement::getId, SalesManagement::getSalesName));
|
||||
} else {
|
||||
saleNameMap = new HashMap<>();
|
||||
}
|
||||
|
||||
|
||||
return saleNameMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取客户名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getCustomerNameMap(Collection<String> customerIds) {
|
||||
return batchGetNameMap(
|
||||
customerIds,
|
||||
serviceManager.getCustomerManagementService(),
|
||||
com.rj.entity.CustomerManagement::getId,
|
||||
com.rj.entity.CustomerManagement::getCustomerName
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取设备名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getDeviceNameMap(Collection<String> deviceIds) {
|
||||
return batchGetNameMap(
|
||||
deviceIds,
|
||||
serviceManager.getDeviceManagementService(),
|
||||
com.rj.entity.DeviceManagement::getId,
|
||||
com.rj.entity.DeviceManagement::getDeviceCode
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取音频名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getAudioNameMap(Collection<String> audioIds) {
|
||||
return batchGetNameMap(
|
||||
audioIds,
|
||||
serviceManager.getAudioManagementService(),
|
||||
com.rj.entity.AudioManagement::getId,
|
||||
com.rj.entity.AudioManagement::getRecordingName
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取视频名称映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<String, String> getVideoNameMap(Collection<String> videoIds) {
|
||||
return batchGetNameMap(
|
||||
videoIds,
|
||||
serviceManager.getVideoManagementService(),
|
||||
com.rj.entity.VideoManagement::getId,
|
||||
com.rj.entity.VideoManagement::getVideoName
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量获取预约信息映射(使用ServiceManager)
|
||||
*/
|
||||
public Map<Long, String> getReservationNameMap(Collection<Long> reservationIds) {
|
||||
return batchGetNameMap(
|
||||
reservationIds,
|
||||
serviceManager.getReservationService(),
|
||||
com.rj.pojo.Reservation::getId,
|
||||
com.rj.pojo.Reservation::getName
|
||||
);
|
||||
}
|
||||
}
|
||||
164
src/main/java/com/rj/common/DataEnrichmentUtilExample.java
Normal file
164
src/main/java/com/rj/common/DataEnrichmentUtilExample.java
Normal file
@@ -0,0 +1,164 @@
|
||||
package com.rj.common;
|
||||
|
||||
import com.rj.entity.Dealership;
|
||||
import com.rj.entity.ProjectManagement;
|
||||
import com.rj.entity.SalesManagement;
|
||||
import com.rj.service.IDealershipService;
|
||||
import com.rj.service.IProjectManagementService;
|
||||
import com.rj.service.ISalesManagementService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* DataEnrichmentUtil 使用示例
|
||||
* 展示如何使用数据丰富工具类来减少代码冗余
|
||||
*
|
||||
* @author 系统生成
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Component
|
||||
public class DataEnrichmentUtilExample {
|
||||
|
||||
@Autowired
|
||||
private DataEnrichmentUtil dataEnrichmentUtil;
|
||||
|
||||
@Autowired
|
||||
private IDealershipService dealershipService;
|
||||
|
||||
@Autowired
|
||||
private IProjectManagementService projectManagementService;
|
||||
|
||||
@Autowired
|
||||
private ISalesManagementService salesManagementService;
|
||||
|
||||
/**
|
||||
* 示例1:基本用法 - 批量获取门店名称映射
|
||||
*/
|
||||
public Map<String, String> getDealershipNameMap(List<String> dealershipIds) {
|
||||
return DataEnrichmentUtil.batchGetNameMap(
|
||||
dealershipIds,
|
||||
dealershipService,
|
||||
Dealership::getId,
|
||||
Dealership::getDealershipName
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例1-1:使用便捷方法 - 批量获取门店名称映射
|
||||
*/
|
||||
public Map<String, String> getDealershipNameMapEasy(List<String> dealershipIds) {
|
||||
return dataEnrichmentUtil.getDealershipIdNameMap(dealershipIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例2:带条件的批量获取 - 只获取启用的门店
|
||||
*/
|
||||
public Map<String, String> getActiveDealershipNameMap(List<String> dealershipIds) {
|
||||
return DataEnrichmentUtil.batchGetNameMap(
|
||||
dealershipIds,
|
||||
dealershipService,
|
||||
Dealership::getId,
|
||||
Dealership::getDealershipName,
|
||||
queryWrapper -> queryWrapper.eq(Dealership::getStatus, true)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例3:获取多个字段 - 获取门店的名称和地区
|
||||
*/
|
||||
public Map<String, Map<String, Object>> getDealershipInfoMap(List<String> dealershipIds) {
|
||||
Map<String, java.util.function.Function<Dealership, Object>> fieldGetters = Map.of(
|
||||
"name", Dealership::getDealershipName,
|
||||
"region", Dealership::getRegion,
|
||||
"type", Dealership::getDealershipType
|
||||
);
|
||||
|
||||
return DataEnrichmentUtil.batchGetFieldMap(
|
||||
dealershipIds,
|
||||
dealershipService,
|
||||
Dealership::getId,
|
||||
fieldGetters
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例4:从实体列表中提取ID
|
||||
*/
|
||||
public List<String> extractDealershipIds(List<SalesManagement> salesList) {
|
||||
return DataEnrichmentUtil.extractIds(salesList, SalesManagement::getDealershipId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例5:带过滤条件的ID提取 - 只提取有门店ID的记录
|
||||
*/
|
||||
public List<String> extractValidDealershipIds(List<SalesManagement> salesList) {
|
||||
return DataEnrichmentUtil.extractIds(
|
||||
salesList,
|
||||
SalesManagement::getDealershipId,
|
||||
sales -> sales.getDealershipId() != null && !sales.getDealershipId().trim().isEmpty()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例6:完整的销售数据丰富流程
|
||||
*/
|
||||
public void enrichSalesData(List<SalesManagement> salesList) {
|
||||
// 1. 提取关联ID
|
||||
List<String> dealershipIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getDealershipId);
|
||||
List<String> projectIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getProjectId);
|
||||
|
||||
// 2. 批量获取关联数据
|
||||
Map<String, String> dealershipNameMap = DataEnrichmentUtil.batchGetNameMap(
|
||||
dealershipIds, dealershipService, Dealership::getId, Dealership::getDealershipName);
|
||||
|
||||
Map<String, String> projectNameMap = DataEnrichmentUtil.batchGetNameMap(
|
||||
projectIds, projectManagementService, ProjectManagement::getId, ProjectManagement::getProjectName);
|
||||
|
||||
// 3. 填充关联数据
|
||||
salesList.forEach(sales -> {
|
||||
sales.setDealershipName(dealershipNameMap.get(sales.getDealershipId()));
|
||||
sales.setProjectName(projectNameMap.get(sales.getProjectId()));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例6-1:使用便捷方法的销售数据丰富流程
|
||||
*/
|
||||
public void enrichSalesDataEasy(List<SalesManagement> salesList) {
|
||||
// 1. 提取关联ID
|
||||
List<String> dealershipIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getDealershipId);
|
||||
List<String> projectIds = DataEnrichmentUtil.extractIds(salesList, SalesManagement::getProjectId);
|
||||
|
||||
// 2. 使用便捷方法批量获取关联数据
|
||||
Map<String, String> dealershipNameMap = dataEnrichmentUtil.getDealershipIdNameMap(dealershipIds);
|
||||
Map<String, String> projectNameMap = dataEnrichmentUtil.getProjectIdNameMap(projectIds);
|
||||
|
||||
// 3. 填充关联数据
|
||||
salesList.forEach(sales -> {
|
||||
sales.setDealershipName(dealershipNameMap.get(sales.getDealershipId()));
|
||||
sales.setProjectName(projectNameMap.get(sales.getProjectId()));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 示例7:获取项目详细信息(包含多个字段)
|
||||
*/
|
||||
public Map<String, Map<String, Object>> getProjectDetailMap(List<String> projectIds) {
|
||||
Map<String, java.util.function.Function<ProjectManagement, Object>> fieldGetters = Map.of(
|
||||
"name", ProjectManagement::getProjectName,
|
||||
"version", ProjectManagement::getScriptVersion,
|
||||
"status", ProjectManagement::getStatus,
|
||||
"group", ProjectManagement::getGroupName
|
||||
);
|
||||
|
||||
return DataEnrichmentUtil.batchGetFieldMap(
|
||||
projectIds,
|
||||
projectManagementService,
|
||||
ProjectManagement::getId,
|
||||
fieldGetters
|
||||
);
|
||||
}
|
||||
}
|
||||
73
src/main/java/com/rj/common/ServiceManager.java
Normal file
73
src/main/java/com/rj/common/ServiceManager.java
Normal file
@@ -0,0 +1,73 @@
|
||||
package com.rj.common;
|
||||
|
||||
import com.rj.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* Service管理器
|
||||
* 统一管理所有常用的Service注入,减少Controller中的重复注入
|
||||
*
|
||||
* @author 系统生成
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Component
|
||||
public class ServiceManager {
|
||||
|
||||
@Autowired
|
||||
private IDealershipService dealershipService;
|
||||
|
||||
@Autowired
|
||||
private IProjectManagementService projectManagementService;
|
||||
|
||||
@Autowired
|
||||
private ISalesManagementService salesManagementService;
|
||||
|
||||
@Autowired
|
||||
private ICustomerManagementService customerManagementService;
|
||||
|
||||
@Autowired
|
||||
private IDeviceManagementService deviceManagementService;
|
||||
|
||||
@Autowired
|
||||
private IAudioManagementService audioManagementService;
|
||||
|
||||
@Autowired
|
||||
private IVideoManagementService videoManagementService;
|
||||
|
||||
@Autowired
|
||||
private IReservationService reservationService;
|
||||
|
||||
// Getter方法
|
||||
public IDealershipService getDealershipService() {
|
||||
return dealershipService;
|
||||
}
|
||||
|
||||
public IProjectManagementService getProjectManagementService() {
|
||||
return projectManagementService;
|
||||
}
|
||||
|
||||
public ISalesManagementService getSalesManagementService() {
|
||||
return salesManagementService;
|
||||
}
|
||||
|
||||
public ICustomerManagementService getCustomerManagementService() {
|
||||
return customerManagementService;
|
||||
}
|
||||
|
||||
public IDeviceManagementService getDeviceManagementService() {
|
||||
return deviceManagementService;
|
||||
}
|
||||
|
||||
public IAudioManagementService getAudioManagementService() {
|
||||
return audioManagementService;
|
||||
}
|
||||
|
||||
public IVideoManagementService getVideoManagementService() {
|
||||
return videoManagementService;
|
||||
}
|
||||
|
||||
public IReservationService getReservationService() {
|
||||
return reservationService;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user