⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dpf_para.cpp

📁 电力系统潮流程序adsfasdfasfd
💻 CPP
字号:
/**************************************************************
* 所属模块 : dpflow
* 文件路径 : pas/dpflow
* 文 件 名 : dpf_para.cpp
* 文件功能 :
* 继承关系 :
* 操作系统 : PC & UNIX
* 备    注 :
* 历史记录 :
*   时间            版本                作者             原因
*===============================================================
* 2004年04月08日      1.0               pas              created
***************************************************************/

#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <time.h>

#include "db_com/wholemodify.h"
#include "db_com/modify_client_base.h"
#include "db_com/CDbCommitClient.h"

#include "warn_service_message.h"

#include "dpf_pub.h"
#include "dpf_sys.h"
#include "dpf_pas.h"
#include "dpf_fun.h"
void dpflow_get_para(const int appno)
{
  get_powerflow_para(appno);

  info_comm_ems_pas comm_info;
  GetCommInfo(appno, comm_info);
  paspa1_->LIMTAG = comm_info.limtag;
//
  CBuffer m_get_result;
  ODB::CTableOp m_table_para(appno, PARA_DPFLOW_EMS_NO);
  if(m_table_para.TableGet(PARA_DPFLOW_EMS_PAS_DEFFIELDS, m_get_result) >= 0
&& m_get_result.GetLength()/sizeof(PARA_DPFLOW_EMS_PAS) >= 1)
  {
     PARA_DPFLOW_EMS_PAS *m_para_info = (PARA_DPFLOW_EMS_PAS*)m_get_result.GetBufPtr();
     pfpart1_->MXPCNTAG=m_para_info->mxpcntag;
     if(pfpart1_->MXPCNTAG<5.||pfpart1_->MXPCNTAG>50.) pfpart1_->MXPCNTAG=10.;
  }

}


void dpflow_set_run_state (const int appno)
{
  time_t t_time = time(NULL);
  pfpart1_->CALTIME = t_time;

  char   msg[80];
  strcpy (msg, "正在进行潮流计算......");
  
  ODB::CTableOp para_table(appno, PARA_DPFLOW_EMS_NO);  
  para_table.TableModify("runmsg", msg, 80);
  para_table.TableModify("tpruntim", (const char*)&t_time, sizeof(int));

  short run=1;
  para_table.TableModify("running",(const char*)&run,sizeof(short));

  info_comm_ems_pas comm_info;
  GetCommInfo(appno, comm_info);
  strcpy (comm_info.message, msg);
  UpdateCommInfo(appno, comm_info);
}


void dpflow_set_result_state (const int appno, float cputime)
{  
  char   msg[80];
  ODB::CTableOp para_table (appno, PARA_DPFLOW_EMS_NO);

  MESSLN2 = (char *)get_fldadr_true_2(famid_zsm, appid_zsm, "PFMOM", "MESSLN2", 0);
  forstr_to_cstr (msg, MESSLN2, 0, MESSLN2$CHAR$SIZE);
  para_table.TableModify ("runmsg", msg, 80);

  time_t t_time = netbus_->TSE;
  para_table.TableModify ("tse", (const char*)&t_time, sizeof(int));

  t_time = pfpart1_->CALTIME;
  para_table.TableModify ("tpruntim", (const char*)&t_time, sizeof(int));

  t_time = time(NULL);
  para_table.TableModify ("tpendtim", (const char*)&t_time, sizeof(int));

  int run_time = t_time - pfpart1_->CALTIME; 
  para_table.TableModify ("exetim", (const char*)&run_time, sizeof(int));
  para_table.TableModify ("cputime", (const char*)&cputime, sizeof(float));

  short run = 0;
  para_table.TableModify ("running", (const char*)&run, sizeof(short));

  int num = pferr1_->TOTALNUM;
  para_table.TableModify ("totalnum", (const char*)&num, sizeof(int)); 

  float rate = pferr1_->CONVRATE;
  para_table.TableModify ("convrate", (const char*)&rate, sizeof(float));

  num = pferr1_->CORRNUM;
  para_table.TableModify ("corrnum", (const char*)&num, sizeof(int)); 

  num = pferr1_->TOTALPNT;
  para_table.TableModify ("totalpnt", (const char*)&num, sizeof(int));

  rate = pferr1_->TOTALERR;
  para_table.TableModify ("totalerr", (const char*)&rate, sizeof(float));

  num = pferr1_->LOCALPNT;
  para_table.TableModify ("localpnt", (const char*)&num, sizeof(int));

  rate = pferr1_->LOCALERR;
  para_table.TableModify("localerr", (const char*)&rate, sizeof(float));

  rate = pfpart1_->TRIPLNP;
  para_table.TableModify("triplnp", (const char*)&rate, sizeof(float));

  rate = pfpart1_->MXPCNTAG;
  para_table.TableModify("mxpcntag", (const char*)&rate, sizeof(float));

  

  put_powerflow_para(appno);

  char hostnm[32], localnm[32];         
  strcpy (localnm, CCommArgs::NodeName().c_str());
  gethostname (hostnm, 32);

  NET_ODB::CTableNet table_node_info (PUBLIC, MNG_NODE_INFO_NO);
  struct NodeInfo
  {
    int  node_id;
    char node_name[40];
  };

  CBuffer get_result;
  int     hostid(0), localid(0);
    
  if(table_node_info.TableGet("node_id, node_name", get_result) >= 0)
  {
    NodeInfo *node_info_ptr = (NodeInfo*)get_result.GetBufPtr();
    int rec_size = get_result.GetLength()/sizeof(NodeInfo);
    for(int i=0; i<rec_size; ++i)
    {
      if(0 == strcmp(node_info_ptr[i].node_name, hostnm))
      {
        hostid = node_info_ptr[i].node_id;
      }
      if(0 == strcmp(node_info_ptr[i].node_name, localnm))
      {
        localid = node_info_ptr[i].node_id;
      }
    }
  }  
  if ((0 == hostid) || (0 == localid))
  {
    printf ("++++++++ Error: get node id failed! \n\thostname  = %s,\t hostid  = %d\n\tlocalname = %s,\t localid = %d\n",
            hostnm, hostid, localnm, localid);
    return;
  }


  info_comm_ems_pas  comm_info;
  GetCommInfo (appno, comm_info);

  comm_info.tse       = netbus_->TSE;
  comm_info.begintime = pfpart1_->CALTIME;
  comm_info.endtime   = t_time;
  comm_info.cpu_time  = cputime;

  MESSLN2 = (char *)get_fldadr_true_2(famid_zsm, appid_zsm, "PFMOM", "MESSLN2", 0);
  forstr_to_cstr (msg, MESSLN2, 0, MESSLN2$CHAR$SIZE);
  strcpy (comm_info.message, msg);

  comm_info.server_host = hostid;
  comm_info.client_host = localid;
  comm_info.conv_state  = pfpart1_->RESTATUS;
  UpdateCommInfo(appno, comm_info);
}


int log_month_rec (int con_state)
{ 
  time_t t_time = time(NULL);
  tm *   pt_tm  = localtime (&t_time);
  int year = pt_tm->tm_year + 1900;
  int mon  = pt_tm->tm_mon + 1;

  char  sql_str[1000], time_str[64], ymstr[16];
  sprintf (time_str, "where year=%d and month=%d", year, mon);
  strftime (ymstr, 16, "%Y-%m", pt_tm);

  sprintf (sql_str,
           "DECLARE\n"
           "counter number;\n"
           "begin\n"
           "select count(*) into counter from mthrec_dpflow_ems %s;\n"
           "if counter=0 then\n"
           "insert into mthrec_dpflow_ems(year,month,id, calnum, converg, rate) values(%d,%d,'%s',0,0,0);\n"
           "end if;\n"
           "update mthrec_dpflow_ems set calnum=calnum+1,converg=converg+%d %s;\n"
           "update mthrec_dpflow_ems set rate=100*converg/calnum %s;\n"
           "commit;\n"
           "end;\n",
           time_str, year, mon, ymstr, con_state, time_str, time_str);

  vector<T_Corba_Props> props_all;
  props_all.resize(2);
  strcpy(props_all[0].prop_name , "ooc.orb.policy.connect_timeout");
  strcpy(props_all[0].prop_value, "2000");
  strcpy(props_all[1].prop_name , "ooc.orb.policy.request_timeout");
  strcpy(props_all[1].prop_value, "30000");
  CDbCommitClient * db_commit_client = new CDbCommitClient(AP_DB_SERVICE, 
                                                           1, 
                                                           PORT_DB_COMMIT_SAMPLE, 
                                                           "db_commit_sample_server",
                                                           props_all, 
                                                           AC_REALTIME_NO, 
                                                           "DPFLOW_MONTH");
  
  if(NULL == db_commit_client)
  {
    TRACE("fail to connect db_commit_server.\n");
    return -1;
  }
  TCommitStru commit_sql_stru;
  commit_sql_stru.seqSqlCommit.length(1);
  commit_sql_stru.seqSqlCommit[0].strSql.length(1);
  TRACE("++++ Log month rec : commit sql = %s\n", sql_str);
  commit_sql_stru.seqSqlCommit[0].strSql[0] = CORBA::string_dup(sql_str);
  return db_commit_client->SqlCommit(commit_sql_stru);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -