mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-27 18:59:26 +08:00
搭建PVB架构,实现前端的基础布局、菜单、表格、图示等功能
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
// return iter->second;
|
||||
//}
|
||||
|
||||
int DeviceEntity::startComm()
|
||||
int Device::startComm()
|
||||
{
|
||||
if (!isOpen)
|
||||
{
|
||||
@@ -64,63 +64,58 @@ int DeviceEntity::startComm()
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
// $$Device
|
||||
std::map<int, std::shared_ptr<DeviceEntity>> Device::mapDevices;
|
||||
|
||||
void Device::add(DataFields& fields)
|
||||
std::shared_ptr<Device> Device::create(DataFields& fields)
|
||||
{
|
||||
auto entity = std::make_shared<DeviceEntity>();
|
||||
entity->deviceId = fields.getInt("device_id");
|
||||
entity->type = fields.getInt("type");
|
||||
entity->name = fields.getStr("name");
|
||||
entity->code = fields.getStr("code");
|
||||
entity->isOpen = fields.getInt("is_open");
|
||||
entity->attrsJson = fields.getStr("attrs");
|
||||
auto device = std::make_shared<Device>();
|
||||
device->deviceId = fields.getInt("device_id");
|
||||
device->type = fields.getInt("type");
|
||||
device->name = fields.getStr("name");
|
||||
device->code = fields.getStr("code");
|
||||
device->isOpen = fields.getInt("is_open");
|
||||
device->attrsJson = fields.getStr("attrs");
|
||||
|
||||
// 解析属性的JSON字符串,转换成键值对
|
||||
NJson jsonroot;
|
||||
bool ret = NJsonParse(entity->attrsJson, jsonroot);
|
||||
bool ret = NJsonParse(device->attrsJson, jsonroot);
|
||||
if (!ret) // 解析错误
|
||||
{
|
||||
XLOGE() << "device attr json parse error, device_id=" << entity->deviceId;
|
||||
XLOGE() << "device attr json parse error, device_id=" << device->deviceId;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto& [key, val] : jsonroot.items()) {
|
||||
std::string valType = val.type_name();
|
||||
if (valType == "string") {
|
||||
entity->attrs.set(key, val.get<std::string>());
|
||||
device->attrs.set(key, val.get<std::string>());
|
||||
}
|
||||
else if (valType == "number") {
|
||||
entity->attrs.set(key, val.get<int>());
|
||||
device->attrs.set(key, val.get<int>());
|
||||
}
|
||||
else {
|
||||
else {
|
||||
XLOGE() << key << ": [" << valType << "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 保存设备 entity 到 map
|
||||
if (entity->deviceId != -1)
|
||||
{
|
||||
mapDevices[entity->deviceId] = entity;
|
||||
}
|
||||
|
||||
// 启动通讯,该函数中会自动判断isOpen状态,选择是否进行通讯连接
|
||||
entity->startComm();
|
||||
device->startComm();
|
||||
return device;
|
||||
}
|
||||
|
||||
std::vector<std::shared_ptr<DeviceEntity>> Device::getDeviceByType(int type)
|
||||
{
|
||||
std::vector<std::shared_ptr<DeviceEntity>> vecDevice;
|
||||
for (auto iter = mapDevices.begin(); iter!=mapDevices.end(); ++iter)
|
||||
{
|
||||
auto device = iter->second;
|
||||
if (device && (type<=0 || device->type == type))
|
||||
{
|
||||
vecDevice.push_back(device);
|
||||
}
|
||||
}
|
||||
return vecDevice;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
//std::vector<std::shared_ptr<DeviceEntity>> Device::getDeviceByType(int type)
|
||||
//{
|
||||
// std::vector<std::shared_ptr<DeviceEntity>> vecDevice;
|
||||
// for (auto iter = mapDevices.begin(); iter!=mapDevices.end(); ++iter)
|
||||
// {
|
||||
// auto device = iter->second;
|
||||
// if (device && (type<=0 || device->type == type))
|
||||
// {
|
||||
// vecDevice.push_back(device);
|
||||
// }
|
||||
// }
|
||||
// return vecDevice;
|
||||
//}
|
||||
Reference in New Issue
Block a user