ElectricEqpmt_TelesignalisationMng.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. #include "pch.h"
  2. #include "ElectricEqpmt_TelesignalisationMng.h"
  3. StationEqpmt_Telesignalisation::StationEqpmt_Telesignalisation()
  4. {
  5. m_nMark = 0;
  6. }
  7. StationEqpmt_Telesignalisation::~StationEqpmt_Telesignalisation()
  8. {
  9. m_vecTelesignalisation.clear();
  10. }
  11. void StationEqpmt_Telesignalisation::AddStationEqpmtTelesignalisation( ElectricEqpmt_Telesignalisation& telesignalisation )
  12. {
  13. m_vecTelesignalisation.push_back( telesignalisation );
  14. }
  15. StationEqpmt_Telesignalisation& StationEqpmt_Telesignalisation::operator=( const StationEqpmt_Telesignalisation& telesignalisation)
  16. {
  17. if ( this == &telesignalisation )
  18. {
  19. return *this;
  20. }
  21. m_vecTelesignalisation.clear();
  22. m_vecTelesignalisation = telesignalisation.m_vecTelesignalisation;
  23. return *this;
  24. }
  25. void StationEqpmt_Telesignalisation::TelesignalisationInit( CommandQueue* pSendList, int nTrainID )
  26. {
  27. //if ( m_nMark != 0 )
  28. {
  29. DealTelesignalisationMsg( pSendList, nTrainID, m_nMark );
  30. }
  31. }
  32. void StationEqpmt_Telesignalisation::DealTelesignalisationMsg( CommandQueue* pSendList, int nTrainID, int nMark )
  33. {
  34. m_nMark = nMark;
  35. OCCCOMMAND tmpSendHC;
  36. memset(&tmpSendHC, 0, sizeof(OCCCOMMAND));
  37. tmpSendHC.DesSysType=OCC_SYS_DD_CLIENT;
  38. tmpSendHC.TrainningID = nTrainID;
  39. tmpSendHC.ScrSysType=OCC_SYS_DD_SVR;
  40. TELESIGNALISATION telesignalisation;
  41. memset(&telesignalisation, 0, sizeof(TELESIGNALISATION));
  42. string strDestEqpmtStrID;
  43. string strShowText;
  44. for ( int i = 0; i < m_vecTelesignalisation.size(); i++ )
  45. {
  46. telesignalisation.StationID = m_vecTelesignalisation[i].GetStationID();
  47. telesignalisation.ViewID = m_vecTelesignalisation[i].GetViewID();
  48. strDestEqpmtStrID = m_vecTelesignalisation[i].m_strEqpmtStrID;
  49. strncpy( telesignalisation.SourceEqpmtStrID, strDestEqpmtStrID.c_str(), sizeof(telesignalisation.SourceEqpmtStrID));
  50. strDestEqpmtStrID = m_vecTelesignalisation[i].GetDestEqpmtStrID();
  51. strncpy( telesignalisation.EqpmtStrID, strDestEqpmtStrID.c_str(), sizeof(telesignalisation.EqpmtStrID));
  52. telesignalisation.EqpmtStaus = m_vecTelesignalisation[i].GetStatus( nMark );
  53. strShowText = m_vecTelesignalisation[i].GetShowText(nMark);
  54. strncpy( telesignalisation.ShowText, strShowText.c_str(), sizeof(telesignalisation.ShowText));
  55. telesignalisation.Color = m_vecTelesignalisation[i].GetColor( nMark );
  56. telesignalisation.PropertyPageCtrlID = m_vecTelesignalisation[i].m_nPropertyPageCtrlID;
  57. telesignalisation.Mark = m_nMark;
  58. tmpSendHC.setPacketValue(&telesignalisation,OCCCOMMAND::eUpdateTelesignalisation);
  59. pSendList->push(tmpSendHC);
  60. }
  61. }
  62. ElectricEqpmt_TelesignalisationMng::ElectricEqpmt_TelesignalisationMng()
  63. {
  64. }
  65. ElectricEqpmt_TelesignalisationMng::~ElectricEqpmt_TelesignalisationMng()
  66. {
  67. m_mapStationEqpmtTelesignalisation.clear();
  68. }
  69. void ElectricEqpmt_TelesignalisationMng::AddStationEqpmtTelesignalisation( ElectricEqpmt_Telesignalisation& telesignalisation, int nMark/* = 0 */)
  70. {
  71. string strKey = FormatKey( telesignalisation.m_nProtectID, telesignalisation.m_strEqpmtStrID );
  72. map<string, StationEqpmt_Telesignalisation>::iterator iter = m_mapStationEqpmtTelesignalisation.find(strKey);
  73. if ( iter == m_mapStationEqpmtTelesignalisation.end() )
  74. {
  75. StationEqpmt_Telesignalisation te;
  76. te.AddStationEqpmtTelesignalisation(telesignalisation);
  77. te.m_nMark = nMark;
  78. m_mapStationEqpmtTelesignalisation.insert( make_pair( strKey, te) );
  79. }
  80. else
  81. {
  82. iter->second.AddStationEqpmtTelesignalisation(telesignalisation);
  83. }
  84. }
  85. string ElectricEqpmt_TelesignalisationMng::FormatKey( int nProtectID, const string& strEqpmtStrID )
  86. {
  87. std::string strRet = "";
  88. strRet = std::to_string(nProtectID) + "-" + strEqpmtStrID;
  89. return strRet;
  90. }
  91. void ElectricEqpmt_TelesignalisationMng::DealTelesignalisationMsg( CommandQueue* pSendList,int nTrainID, int nProtectID, const string& strEqpmtStrID, int nMark )
  92. {
  93. if ( NULL == pSendList || m_mapStationEqpmtTelesignalisation.size() == 0)
  94. {
  95. return;
  96. }
  97. string strKey = FormatKey( nProtectID, strEqpmtStrID );
  98. map<string, StationEqpmt_Telesignalisation>::iterator iter = m_mapStationEqpmtTelesignalisation.find(strKey);
  99. if ( iter == m_mapStationEqpmtTelesignalisation.end() )
  100. {
  101. return;
  102. }
  103. if ( iter->second.m_vecTelesignalisation.empty() )
  104. {
  105. return;
  106. }
  107. iter->second.DealTelesignalisationMsg(pSendList, nTrainID, nMark );
  108. }
  109. void ElectricEqpmt_TelesignalisationMng::TelesignalisationInit( CommandQueue* pSendList, int nTrainID )
  110. {
  111. map<string, StationEqpmt_Telesignalisation>::iterator iter = m_mapStationEqpmtTelesignalisation.begin();
  112. for ( ; iter != m_mapStationEqpmtTelesignalisation.end(); iter++ )
  113. {
  114. iter->second.TelesignalisationInit(pSendList, nTrainID);
  115. }
  116. }