#include "Station.h" #include "database/DAO.h" #include "database/SQL.h" #include "common/fields.h" #include "app/Device.h" #include "common/Spdlogger.h" Station::Station() : id(0) { } void Station::setFields(Fields& fields) { this->id = fields.get(DMStation::STATION_ID); this->name = fields.value(DMStation::NAME); this->energyCapacity = fields.get(DMStation::CAPACITY); this->workModeId = fields.get(DMStation::WORK_MODE_ID); } void Station::addDevice(int deviceId, std::shared_ptr device) { mapDevice[deviceId] = device; mapDeviceGroupNum[device->group]++; } std::shared_ptr Station::getDevice(int deviceId) { auto iter = mapDevice.find(deviceId); if (iter!=mapDevice.end()) { return iter->second; } return nullptr; } void Station::getDeviceByType(int typeId, std::vector>& res) { for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) { auto device = iter->second; if (device->type == typeId) { res.push_back(device); } } } int Station::getDeviceNumByGroup(std::string name) { return mapDeviceGroupNum[name]; } void Station::getDeviceByGroup(std::string name, std::vector>& res) { for (auto iter = mapDevice.begin(); iter!=mapDevice.end(); ++iter) { auto device = iter->second; if (device->group == name) { res.push_back(device); } } } void Station::setWorkMode(int modeId) { this->workModeId = modeId; std::string sql = SQL(SQL::TYPE::update).table(DMStation::TABLENAME) .update(DMStation::WORK_MODE_ID, std::to_string(modeId)) .where(DMStation::STATION_ID + "=" + std::to_string(id)).str(); Errcode err = DAO::exec(NULL, sql); if (err != Errcode::OK) { spdlog::error("set station work mode failed."); } } void Station::setPolicy(int policyId) { std::string sql = SQL(SQL::TYPE::update).table(DMStation::TABLENAME) .update(DMStation::POLICY_ID, std::to_string(policyId)) .where(DMStation::STATION_ID + "=" + std::to_string(id)).str(); Errcode err = DAO::exec(NULL, sql); if (err != Errcode::OK) { spdlog::error("set station policy failed."); } }