ElectricEqpmt_ElcTurnOffAreaMng.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "pch.h"
  2. #include "ElectricEqpmt_ElcTurnOffAreaMng.h"
  3. void* ElectricEqpmt_ElcTurnOffAreaMng::m_pOwner = nullptr;
  4. CALLBACKFUNC_EqpmtElcStatus ElectricEqpmt_ElcTurnOffAreaMng::m_hCallBackEqpmtElcStatus = nullptr;
  5. CALLBACKFUNC_TurnOffArea ElectricEqpmt_ElcTurnOffAreaMng::m_hCallBackTurnOffArea = nullptr;
  6. ElectricEqpmt_ElcTurnOffAreaMng::ElectricEqpmt_ElcTurnOffAreaMng()
  7. {
  8. }
  9. ElectricEqpmt_ElcTurnOffAreaMng::~ElectricEqpmt_ElcTurnOffAreaMng()
  10. {
  11. m_mapEqpmtStrIDAndAreaID.clear();
  12. m_mapElcTurnOffArea.clear();
  13. }
  14. void ElectricEqpmt_ElcTurnOffAreaMng::AddElcTurnOffArea( int nOffArea, int nStationID, const string& strEqpmtStrID )
  15. {
  16. m_mapEqpmtStrIDAndAreaID.insert( make_pair( strEqpmtStrID, nOffArea) );
  17. map<int, ElectricEqpmt_ElcTurnOffArea >::iterator iterArea = m_mapElcTurnOffArea.find(nOffArea);
  18. if ( iterArea != m_mapElcTurnOffArea.end() )
  19. {
  20. iterArea->second.AddElcTurnOffArea( nOffArea, nStationID, strEqpmtStrID );
  21. }
  22. else
  23. {
  24. ElectricEqpmt_ElcTurnOffArea area;
  25. area.SetOffAreaID( nOffArea );
  26. area.SetStationID( nStationID );
  27. area.AddElcTurnOffArea( nOffArea, nStationID, strEqpmtStrID );
  28. m_mapElcTurnOffArea.insert( make_pair( nOffArea, area) );
  29. }
  30. }
  31. void ElectricEqpmt_ElcTurnOffAreaMng::EqpmtOffOccur( const string& strEqpmtID )
  32. {
  33. TurnOffArea( GetAreaID(strEqpmtID) );
  34. }
  35. void ElectricEqpmt_ElcTurnOffAreaMng::TurnOffArea( int nArea )
  36. {
  37. if ( NULL == m_hCallBackEqpmtElcStatus || NULL == m_hCallBackTurnOffArea )
  38. {
  39. return;
  40. }
  41. map<int, ElectricEqpmt_ElcTurnOffArea >::iterator iter = m_mapElcTurnOffArea.find(nArea);
  42. if ( iter == m_mapElcTurnOffArea.end() )
  43. {
  44. return;
  45. }
  46. int nMark = -1;
  47. // 设备区所有电力设备失电则表示改区域失电
  48. bool bEqpmtPower = false;
  49. for(int i = 0; i < iter->second.m_vecElcTurnOffArea.size(); i++ )
  50. {
  51. if ( m_hCallBackEqpmtElcStatus(m_pOwner, iter->second.m_vecElcTurnOffArea[i].m_strUnioEqpmtStrID) )
  52. {
  53. bEqpmtPower = true;
  54. break;
  55. }
  56. }
  57. if ( bEqpmtPower )
  58. {
  59. // 有带电设备而且之前设备区无电则为设备区送电
  60. if ( !iter->second.GetPower() )
  61. {
  62. nMark = 1;
  63. }
  64. }
  65. else
  66. {
  67. // 无带电设备而且之前设备区有电则为设备区停电
  68. if ( iter->second.GetPower() )
  69. {
  70. nMark = 0;
  71. }
  72. }
  73. if ( 0 == nMark )
  74. {
  75. // 处理设备区失电
  76. iter->second.SetPower(false);
  77. m_hCallBackTurnOffArea( m_pOwner, iter->second.GetOffAreaID(), iter->second.GetStationID(), nMark );
  78. }
  79. else if( 1 == nMark )
  80. {
  81. // 处理设备区受电
  82. iter->second.SetPower(true);
  83. m_hCallBackTurnOffArea( m_pOwner, iter->second.GetOffAreaID(), iter->second.GetStationID(), nMark );
  84. }
  85. }
  86. int ElectricEqpmt_ElcTurnOffAreaMng::GetAreaID( const string& strEqpmtID )
  87. {
  88. int nRet = -1;
  89. map<string, int >::iterator iter = m_mapEqpmtStrIDAndAreaID.find( strEqpmtID );
  90. if ( iter != m_mapEqpmtStrIDAndAreaID.end() )
  91. {
  92. nRet = iter->second;
  93. }
  94. return nRet;
  95. }
  96. void ElectricEqpmt_ElcTurnOffAreaMng::AddElcToRelaData( int StationID,int CtrlAreaID, string ElcEqpmtStrID )
  97. {
  98. m_nStationID = StationID;
  99. m_nCtrlAreaID = CtrlAreaID;
  100. m_strEqpmtStrID =ElcEqpmtStrID;
  101. }