Files
FrameTour-BE/src/main/java/com/ycwl/basic/device/DeviceFactory.java
Jerry Yan 9587354d0a fix(device): 修复阿里云 OSS 文件检索和连接问题
- 修改 AliOssStorageOperator 中的时间增量,从分钟改为天
- 在 DeviceFactory 中为阿里云 OSS操作器添加域名替换,以解决连接问题
2025-09-09 13:08:42 +08:00

85 lines
3.8 KiB
Java

package com.ycwl.basic.device;
import com.ycwl.basic.device.checker.IDeviceStatusChecker;
import com.ycwl.basic.device.checker.impl.AliOssDeviceChecker;
import com.ycwl.basic.device.checker.impl.AlwaysOnDeviceChecker;
import com.ycwl.basic.device.enums.DeviceStoreTypeEnum;
import com.ycwl.basic.device.operator.AliOssStorageOperator;
import com.ycwl.basic.device.operator.IDeviceStorageOperator;
import com.ycwl.basic.device.operator.LocalStorageOperator;
import com.ycwl.basic.device.operator.VptPassiveStorageOperator;
import com.ycwl.basic.device.operator.WvpActiveStorageOperator;
import com.ycwl.basic.device.operator.WvpPassiveStorageOperator;
import com.ycwl.basic.model.pc.device.entity.DeviceConfigEntity;
import com.ycwl.basic.integration.device.dto.device.DeviceV2DTO;
import com.ycwl.basic.model.pc.device.entity.DeviceEntity;
import java.time.ZoneId;
import java.util.Date;
public class DeviceFactory {
public static IDeviceStorageOperator getDeviceStorageOperator(DeviceV2DTO device, DeviceConfigEntity config) {
IDeviceStorageOperator operator = null;
if (config == null) {
return null;
}
if (Integer.valueOf(DeviceStoreTypeEnum.ALI_OSS.getType()).equals(config.getStoreType())) {
operator = new AliOssStorageOperator(config.getStoreConfigJson().replace("-internal.aliyuncs.com", ".aliyuncs.com"));
} else if (Integer.valueOf(DeviceStoreTypeEnum.WVP_ACTIVE.getType()).equals(config.getStoreType())) {
operator = new WvpActiveStorageOperator(config.getStoreConfigJson());
} else if (Integer.valueOf(DeviceStoreTypeEnum.WVP_PASSIVE.getType()).equals(config.getStoreType())) {
operator = new WvpPassiveStorageOperator(config.getStoreConfigJson());
} else if (Integer.valueOf(DeviceStoreTypeEnum.VPT_PASSIVE.getType()).equals(config.getStoreType())) {
operator = new VptPassiveStorageOperator(config.getStoreConfigJson());
} else if (Integer.valueOf(DeviceStoreTypeEnum.AWS_OSS.getType()).equals(config.getStoreType())) {
operator = new VptPassiveStorageOperator(config.getStoreConfigJson());
} else if (Integer.valueOf(DeviceStoreTypeEnum.LOCAL.getType()).equals(config.getStoreType())) {
operator = new LocalStorageOperator(config.getStoreConfigJson());
}
if (operator == null) {
return null;
}
operator.setDevice(convertToEntity(device));
operator.setDeviceConfig(config);
return operator;
}
/**
* 将DeviceV2DTO转换为DeviceEntity
*/
private static DeviceEntity convertToEntity(DeviceV2DTO dto) {
if (dto == null) {
return null;
}
DeviceEntity entity = new DeviceEntity();
entity.setId(dto.getId());
entity.setName(dto.getName());
entity.setNo(dto.getNo());
entity.setScenicId(dto.getScenicId());
entity.setStatus(dto.getIsActive());
if (dto.getCreateTime() != null) {
entity.setCreateAt(dto.getCreateTime());
}
if (dto.getUpdateTime() != null) {
entity.setUpdateAt(dto.getUpdateTime());
}
return entity;
}
public static IDeviceStatusChecker getDeviceStatusChecker(DeviceEntity device, DeviceConfigEntity config) {
IDeviceStatusChecker checker = null;
if (config.getOnlineCheck() <= 0) {
checker = new AlwaysOnDeviceChecker();
} else {
if (config.getStoreType() == DeviceStoreTypeEnum.ALI_OSS.getType()) {
checker = new AliOssDeviceChecker(config.getStoreConfigJson());
}
}
if (checker == null) {
return null;
}
checker.setDevice(device);
checker.setDeviceConfig(config);
return checker;
}
}