package com.hdl.photovoltaic.other;
|
|
import android.text.TextUtils;
|
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.internet.HttpClient;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 本地json缓存逻辑
|
*/
|
public class HdlESLocalJsonLogic {
|
private static volatile HdlESLocalJsonLogic sHdlESLocalJsonLogic;
|
|
/**
|
* 获取当前对象
|
*
|
* @return HdlAccountLogic
|
*/
|
public static synchronized HdlESLocalJsonLogic getInstance() {
|
if (sHdlESLocalJsonLogic == null) {
|
synchronized (HdlESLocalJsonLogic.class) {
|
if (sHdlESLocalJsonLogic == null) {
|
sHdlESLocalJsonLogic = new HdlESLocalJsonLogic();
|
}
|
}
|
|
}
|
return sHdlESLocalJsonLogic;
|
}
|
|
|
/**
|
* 【逆变器】设备型号
|
*/
|
public static final String deviceModel_ME_GSE_S5K = "ME-GSE-S5K";
|
/**
|
* 【负载控制中心】设备型号
|
*/
|
public static final String deviceModel_ME_GSE_SPG63A = "ME-GSE-SPG63A";
|
/**
|
* 【BMS】设备型号
|
*/
|
public static final String deviceModel_ME_GSE_BMS15K = "ME-GSE-BMS15K";
|
/**
|
* 【电池包】设备型号
|
*/
|
public static final String deviceModel_ME_GSE_B5K = "ME-GSE-B5K";
|
|
/**
|
* 创建电站-逆变器参数配置
|
*/
|
public static final String hdl_inv_ecu_quick = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/inv/deviceModel/modbus_hdl_inv_ecu_quick_v1.5.1.json";
|
/**
|
* 创建电站-负载控制中心参数配置
|
*/
|
public static final String hdl_lc_ecu_quick = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/lc/deviceModel/modbus_hdl_lc_ecu_quick_v1.5.0.json";
|
/**
|
* 逆变器参数配置(config)
|
*/
|
public static final String hdl_inv_ecu = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/inv/deviceModel/modbus_hdl_inv_ecu_v1.5.1.json";
|
/**
|
* 逆变器详情-pv
|
*/
|
public static final String hdl_inv_ecu_info_pv = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/inv/deviceModel/info/modbus_hdl_inv_ecu_info_pv_v1.4.2.json";
|
/**
|
* 逆变器详情-输出
|
*/
|
public static final String hdl_inv_ecu_info_output = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/inv/deviceModel/info/modbus_hdl_inv_ecu_info_output_v1.4.2.json";
|
/**
|
* 逆变器详情-item项
|
*/
|
public static final String hdl_inv_ecu_info_item = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/inv/deviceModel/info/modbus_hdl_inv_ecu_info_item_v1.5.1.json";
|
/**
|
* 获取负载控制中心
|
*/
|
public static final String hdl_lc_ecu_info_item = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/lc/deviceModel/modbus_hdl_lc_ecu_info_item_v1.5.0.json";
|
/**
|
* 获取BMS信息
|
*/
|
public static final String hdl_bms_ecu = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/bms/deviceModel/modbus_hdl_bms_ecu_v1.4.2.json";
|
/**
|
* 电池包信息
|
*/
|
public static final String hdl_battery_ecu = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/battery/deviceModel/modbus_hdl_battery_ecu_v1.4.2.json";
|
|
/**
|
* 电池包-电芯信息
|
*/
|
public static final String hdl_battery_ecu_cell = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/battery/deviceModel/modbus_hdl_battery_ecu_cell_v1.4.2.json";
|
|
/**
|
* 逆变器详情-信号点
|
*/
|
public static final String hdl_inv_ecu_info_signal = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/currentLanguage/inv/deviceModel/info/modbus_hdl_inv_ecu_info_signal_v1.4.1.json";
|
|
/**
|
* 获取逆变器所有json中文
|
*/
|
public static final String hdl_inv_ecu_all_zh = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/zh/all_v1.5.1.json";
|
/**
|
* 获取逆变器所有json英文
|
*/
|
public static final String hdl_inv_ecu_all_en = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu/en/all_v1.5.1.json";
|
|
/**
|
* 初始化脚本url
|
*
|
* @return map
|
*/
|
private Map<String, String> getUrlMap() {
|
//注意(逆变器:ME-GSE-S5K,负载中心:ME-GSE-SPG63A,bms:ME-GSE-BMS15K,电池包:ME-GSE-B5K)设备型号不一样
|
Map<String, String> map = new HashMap<>();
|
map.put(this.getNewUrl(hdl_lc_ecu_info_item, deviceModel_ME_GSE_SPG63A), deviceModel_ME_GSE_SPG63A);//获取负载控制中心
|
map.put(this.getNewUrl(hdl_lc_ecu_quick, deviceModel_ME_GSE_SPG63A), deviceModel_ME_GSE_SPG63A); //创建电站-负载控制中心参数配置
|
map.put(this.getNewUrl(hdl_inv_ecu_quick, deviceModel_ME_GSE_S5K), deviceModel_ME_GSE_S5K);//创建电站-逆变器参数配置
|
map.put(this.getNewUrl(hdl_inv_ecu, deviceModel_ME_GSE_S5K), deviceModel_ME_GSE_S5K);//逆变器参数配置
|
map.put(this.getNewUrl(hdl_inv_ecu_info_pv, deviceModel_ME_GSE_S5K), deviceModel_ME_GSE_S5K);// 逆变器详情-pv
|
map.put(this.getNewUrl(hdl_inv_ecu_info_output, deviceModel_ME_GSE_S5K), deviceModel_ME_GSE_S5K);//逆变器详情-输出
|
map.put(this.getNewUrl(hdl_inv_ecu_info_item, deviceModel_ME_GSE_S5K), deviceModel_ME_GSE_S5K);//逆变器详情-item项
|
map.put(this.getNewUrl(hdl_inv_ecu_info_signal, deviceModel_ME_GSE_S5K), deviceModel_ME_GSE_S5K);//逆变器详情-信号点
|
map.put(this.getNewUrl(hdl_bms_ecu, deviceModel_ME_GSE_BMS15K), deviceModel_ME_GSE_BMS15K);//获取BMS信息
|
map.put(this.getNewUrl(hdl_battery_ecu, deviceModel_ME_GSE_B5K), deviceModel_ME_GSE_B5K);//电池包信息
|
map.put(this.getNewUrl(hdl_battery_ecu_cell, deviceModel_ME_GSE_B5K), deviceModel_ME_GSE_B5K);//电池包-电芯信息
|
return map;
|
}
|
|
/**
|
* 向云端获取Json【所有】脚本
|
*/
|
public void getAllHdlESLocalJson() {
|
for (Map.Entry<String, String> entry : getUrlMap().entrySet()) {
|
this.getHdlESLocalJson(entry.getKey(), entry.getValue(), null);
|
}
|
}
|
|
|
/**
|
* 向云端获取Json【单个】脚本
|
*
|
* @param url 地址
|
* @param deviceModel 设备型号
|
*/
|
public void getHdlESLocalJson(String url, String deviceModel, CloudCallBeak<String> callBeak) {
|
HttpClient.getInstance().requestJsonHttpGet(url, new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
saveJson(url, deviceModel, str);
|
HdlLogLogic.print("获取云端脚本---" + url + "\r\n" + str, false);
|
if (callBeak != null) {
|
callBeak.onSuccess(str);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HdlLogLogic.print(e.getMessage(), e.getCode(), false);
|
if (callBeak != null) {
|
callBeak.onFailure(e);
|
}
|
}
|
});
|
}
|
|
/**
|
* 读取本地json数据
|
*
|
* @param url 地址
|
* @param deviceModel 设备型号
|
*/
|
public String readHdlESLocalJson(String url, String deviceModel) {
|
return this.readJson(url, deviceModel);
|
}
|
|
/**
|
* 处理url返回新的url
|
*
|
* @param url 地址
|
* @param deviceModel 设备类型
|
* @return 返回地址
|
*/
|
private String getNewUrl(String url, String deviceModel) {
|
return url.replace("currentLanguage", UserConfigManage.getInstance().getCurrentAppLanguage()).replace("deviceModel", deviceModel);
|
}
|
|
|
/**
|
* 保存json数据
|
*
|
* @param fileUrlOrFileName 地址或者文件名
|
* @param deviceModel 设备型号(逆变器,负载中心,bms,电池包)
|
* @param json 内容
|
*/
|
private void saveJson(String fileUrlOrFileName, String deviceModel, String json) {
|
try {
|
if (TextUtils.isEmpty(json)) {
|
return;
|
}
|
String fileName = fileUrlOrFileName;
|
if (fileUrlOrFileName.contains("/")) {
|
//表示链接,截取最后一个索引表示文件名
|
fileName = fileUrlOrFileName.split("/")[fileUrlOrFileName.split("/").length - 1];
|
}
|
if (TextUtils.isEmpty(fileName)) {
|
return;
|
}
|
//英文文件路径
|
String fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonEnFilePath(deviceModel, fileName);
|
if (UserConfigManage.getInstance().isZh()) {
|
//中文文件路径
|
fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonZhFilePath(deviceModel, fileName);
|
}
|
|
HdlFileLogic.getInstance().writeFile(fullPath, json);
|
} catch (Exception ignored) {
|
}
|
}
|
|
/**
|
* 读取json数据
|
*
|
* @param fileUrlOrFileName 地址或者文件名
|
* @param deviceModel 设备型号(逆变器,负载中心,bms,电池包)
|
*/
|
private String readJson(String fileUrlOrFileName, String deviceModel) {
|
try {
|
String fileName = fileUrlOrFileName;
|
if (fileUrlOrFileName.contains("/")) {
|
//表示链接,截取最后一个索引表示文件名
|
fileName = fileUrlOrFileName.split("/")[fileUrlOrFileName.split("/").length - 1];
|
}
|
if (TextUtils.isEmpty(fileName)) {
|
return "";
|
}
|
//英文文件路径
|
String fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonEnFilePath(deviceModel, fileName);
|
if (UserConfigManage.getInstance().isZh()) {
|
//中文文件路径
|
fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonZhFilePath(deviceModel, fileName);
|
}
|
return HdlFileLogic.getInstance().readFile(fullPath);
|
} catch (Exception ignored) {
|
return "";
|
}
|
}
|
|
}
|