#pragma once #include #include #include #include class CMonitorObject { public: CMonitorObject(); virtual ~CMonitorObject(); public: std::string id; std::string name; std::string type; std::string up; std::list m_lstMo; //如果type为mo.mp的, 可能存在报警参数 //报警参数 }; class CMonitorObjectMng { CMonitorObjectMng(); virtual ~CMonitorObjectMng(); public: static CMonitorObjectMng* Instance() { return &obj; }; BOOL LoadMonitorTree(); BOOL LoadHistoryData(); //获取战场站点名 bool GetStationNameByMomP(const std::string& momp, std::string& station, std::string& momp_name); bool GetStationNameByMomP(const std::string& mo, const std::string& mp, std::string& station, std::string& momp_name); //获取测力曲线名称 bool GetNameByMoMp(const std::string& momp, std::string& name1, std::string& name2, std::string& name3); bool GetNameByMoMp(const std::string& momp, std::string& name1, std::string& name2, std::string& name3, std::string& out_name, std::string& in_name); //设置测力曲线名称 void SetNameByMoMp(const std::string& momp, std::string& name1, std::string& name2, std::string& name3); //获取转换阻力方向名称 bool GetDirectByMoMp(const std::string& momp, std::string& direct1, std::string& direct2); //设置转换阻力方向名称 void SetDirectByMoMp(const std::string& momp, std::string& direct1, std::string& direct2); static bool spiltByPoint(std::string&src, std::string& dst1, std::string& dst2); std::string concatStringByPoint(const std::string& src1, const std::string& src2); //通过ID来获取树节点 CMonitorObject* GetTreeByID(string& id); static bool ReNameMO(string id, string name); static bool AddMO(string id, string name, string type, string up); static bool AddMO2(string id, string name, string type, string up); private: static CMonitorObject* GetTreeByID(CMonitorObject* p, string& id); void GetChild(std::list& lst, std::list& child, const std::string& id); bool GetStationNameByMomP(CMonitorObject* pInfo, const std::string& momp, std::string& station, std::string& momp_name); void Clear(); CMonitorObject* m_treeroot = nullptr;//整棵树 std::map m_mapImeiIdxMoMp;//设备号对应momp std::map m_mapMoMpImeiIdx; std::map> m_mapMoMpName; //mo, mp 对应三个测力曲线的名称 std::map> m_mapMoMpDirect; //mo, mp 对应的两个阻力转换方向名称 private: static CMonitorObjectMng obj; };