📄 waterproc.cpp
字号:
}
//每月1日8时准备月报
if(Cmc.m_intDay==1&&Cmc.m_fltTime==8){
if(!MonthTelPrepare()){
errFile.m_strFileRecord.Format(" 月报文准备错误::\n");
errFile.writerecord();
return false;
}
}
if(m_bolTelFlg){//如果有报文生成则将其新增至报文数据库表中
TelDB.m_strStation=m_strStation;
TelDB.m_strTelText=m_strTelText+" NN";
TelDB.m_bitDepartFlag=false;
TelDB.m_intDataSource=1;
TelDB.m_strOneTime=WaterSts.m_strLastWaterTime;
if(TelDB.insertrec()==0){
intTelCnt++;
logFile.m_strFileRecord.Format(" 生成报文:%s\n",TelDB.m_strTelText);
logFile.writerecord();
}
else{
errFile.m_strFileRecord.Format(" 新增报文::%s\n",TelDB.m_strErrMsg);
errFile.writerecord();
return false;
}
m_strTelText="AH "+m_strStation;
m_intTelCnt=0;
m_bolTelFlg=false;
}
if(WaterDB.readnext()<0){//读取水位测量数据下一笔
errFile.m_strFileRecord.Format(" 水位数据读入次笔::%s\n",WaterDB.m_strErrMsg);
errFile.writerecord();
return false;
};
}
if(m_bolStsChg){//如果有拍报动作发生则需要相应地更新拍报状态,以避免重复拍报的现象的发生
if(m_bolStsFlg){
if(WaterSts.updaterec()<0){
errFile.m_strFileRecord.Format(" 更新拍报状态::%s\n",WaterSts.m_strErrMsg);
errFile.writerecord();
return false;
}
}
else{
if(WaterSts.insertrec()<0){
errFile.m_strFileRecord.Format(" 新增拍报状态::%s\n",WaterSts.m_strErrMsg);
errFile.writerecord();
return false;
}
m_bolStsFlg=true;
}
m_bolStsChg=false;
}
try{
m_connection->CommitTrans();
//m_connection->RollbackTrans();
//m_connection->Release();
m_connection->Close();
}
catch(_com_error e){
errFile.m_strFileRecord.Format(" CloseConnection Error::%s",e.ErrorMessage());
errFile.writerecord();
errFile.m_stdFile.Close();
return false;
}
logFile.m_strFileRecord.Format("%s :: %s站水位拍报处理结束,共生成 %d 条报文!\n\n",curTime.GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"),m_strStation,intTelCnt);
logFile.writerecord();
logFile.m_stdFile.Close();
errFile.m_strFileRecord.Format("%s :: %s站水位拍报处理结束!\n\n",curTime.GetCurrentTime().Format("%Y-%m-%d %H:%M:%S"),m_strStation);
errFile.writerecord();
errFile.m_stdFile.Close();
return true;
}
//////////////////////////////////////////////////////////////////////
// 临时报文准备
//////////////////////////////////////////////////////////////////////
bool WaterProc::TelPrepare()
{
Cmc.m_strInputTime=WaterDB.m_strInputTime;
Cmc.TimeValProc();
if(m_bolAddiTelFlg||((int)(Cmc.m_fltInterval*10000)%(m_intCurPreInterval*10000)==0)){
if(!PeriodTelPrepare())return false;//如果到了时段报文数据采集时间则准备报文
}
if(m_bolAddiTelFlg||((int)(Cmc.m_fltInterval*10000)%(m_intCurTelInterval*10000)==0)){
if(!PeriodTelSet())return false;//如果到了时段拍报时间则置位拍报标志
}
if(Cmc.m_fltTime==8){
if(!DayTelPrepare())return false;//每天8时准备日报
}
if((Cmc.m_intDay==1||Cmc.m_intDay==11||Cmc.m_intDay==21)&&Cmc.m_fltTime==8){
if(!TenDayTelPrepare())return false;//每月1日8时、11日8时和21日8时准备旬报
}
if(Cmc.m_intDay==1&&Cmc.m_fltTime==8){
if(!MonthTelPrepare())return false;//每月1日8时准备月报
}
return true;
}
//////////////////////////////////////////////////////////////////////
// 时段报文准备
//////////////////////////////////////////////////////////////////////
bool WaterProc::PeriodTelPrepare()
{
CString strWaterFlag;
CString strFlowVal;
Cmc.m_strInputTime=WaterDB.m_strInputTime;
Cmc.TimeValProc();
Cmc.m_dblInputVal=WaterDB.m_dblInputVal;
Cmc.m_intKeepDot=2;
Cmc.m_intKeepInt=2;
Cmc.WaterValProc();
m_intTelCnt++;
if(WaterDB.m_dblInputVal>WaterSts.m_dblLastWaterInfo){
strWaterFlag="5";
}
else{
if(WaterDB.m_dblInputVal==WaterSts.m_dblLastWaterInfo)strWaterFlag="6";
else strWaterFlag="4";
}
Water2Flow.m_strStation=m_strStation;
Water2Flow.m_dblWaterVal=WaterDB.m_dblInputVal;
int iRc=Water2Flow.watertoflow();
if(iRc==-1){
Water2Flow.m_dblFlowVal=0;
}
if(iRc==1){
Water2Flow.m_dblFlowVal=0;
}
strFlowVal=Cmc.FlowValProc(Water2Flow.m_dblFlowVal);
m_strTempTel=Cmc.m_strOutputTime+" Z "+Cmc.m_strOutputVal+" ZS "+strWaterFlag+" Q "+strFlowVal+" QS 1";
if(m_intTelCnt>1){
m_strTelText=m_strTelText+" TT "+m_strTempTel;
}
else{
m_strTelText=m_strTelText+" "+m_strTempTel;
}
WaterSts.m_strPreWaterTime=WaterSts.m_strLastWaterTime;
WaterSts.m_dblPreWaterInfo=WaterSts.m_dblLastWaterInfo;
WaterSts.m_dblPreFlowInfo=WaterSts.m_dblLastFlowInfo;
WaterSts.m_strLastWaterTime=WaterDB.m_strInputTime;
WaterSts.m_dblLastWaterInfo=WaterDB.m_dblInputVal;
WaterSts.m_dblLastFlowInfo=Water2Flow.m_dblFlowVal;
WaterSts.m_dblWaterDaySts=WaterSts.m_dblWaterDaySts+WaterDB.m_dblInputVal;
WaterSts.m_dblFlowDaySts=WaterSts.m_dblFlowDaySts+Water2Flow.m_dblFlowVal;
WaterSts.m_intWaterDayCnt=WaterSts.m_intWaterDayCnt+1;
WaterSts.m_dblWaterTenDaySts=WaterSts.m_dblWaterTenDaySts+WaterDB.m_dblInputVal;
WaterSts.m_dblFlowTenDaySts=WaterSts.m_dblFlowTenDaySts+Water2Flow.m_dblFlowVal;
WaterSts.m_intWaterTenDayCnt=WaterSts.m_intWaterTenDayCnt+1;
WaterSts.m_dblWaterMonthSts=WaterSts.m_dblWaterMonthSts+WaterDB.m_dblInputVal;
WaterSts.m_dblFlowMonthSts=WaterSts.m_dblFlowMonthSts+Water2Flow.m_dblFlowVal;
WaterSts.m_intWaterMonthCnt=WaterSts.m_intWaterMonthCnt+1;
return true;
}
//////////////////////////////////////////////////////////////////////
// 时段报文标志设定
//////////////////////////////////////////////////////////////////////
bool WaterProc::PeriodTelSet()
{
m_bolStsChg=true;
m_bolTelFlg=true;
return true;
}
//////////////////////////////////////////////////////////////////////
// 日报文准备
//////////////////////////////////////////////////////////////////////
bool WaterProc::DayTelPrepare()
{
WaterSts.m_dblWaterDaySts=0;
WaterSts.m_intWaterDayCnt=0;
m_bolStsChg=true;
m_bolTelFlg=true;
return true;
}
//////////////////////////////////////////////////////////////////////
// 旬报文准备
//////////////////////////////////////////////////////////////////////
bool WaterProc::TenDayTelPrepare()
{
CString strFlowVal;
if(WaterSts.m_intWaterTenDayCnt>0){
Cmc.m_dblInputVal=WaterSts.m_dblWaterTenDaySts/WaterSts.m_intWaterTenDayCnt;
Cmc.m_intKeepDot=2;
Cmc.m_intKeepInt=2;
Cmc.WaterValProc();
strFlowVal=Cmc.FlowValProc(WaterSts.m_dblFlowTenDaySts/WaterSts.m_intWaterTenDayCnt);
//strFlowVal="";
m_strTempTel="ZX "+Cmc.m_strOutputVal+" QX "+strFlowVal;
}
else{
m_strTempTel="ZX 0 QX 0";
}
if(m_bolTelFlg)m_strTelText=m_strTelText+" "+m_strTempTel;
WaterSts.m_dblWaterTenDaySts=0;
WaterSts.m_dblFlowTenDaySts=0;
WaterSts.m_intWaterTenDayCnt=0;
m_bolStsChg=true;
m_bolTelFlg=true;
return true;
}
//////////////////////////////////////////////////////////////////////
// 月报文准备
//////////////////////////////////////////////////////////////////////
bool WaterProc::MonthTelPrepare()
{
CString strFlowVal;
if(WaterSts.m_intWaterMonthCnt>0){
Cmc.m_dblInputVal=WaterSts.m_dblWaterMonthSts/WaterSts.m_intWaterMonthCnt;
Cmc.m_intKeepDot=2;
Cmc.m_intKeepInt=2;
Cmc.WaterValProc();
strFlowVal=Cmc.FlowValProc(WaterSts.m_dblFlowMonthSts/WaterSts.m_intWaterMonthCnt);
m_strTempTel="ZM "+Cmc.m_strOutputVal+" QM "+strFlowVal;
}
else{
m_strTempTel="ZM 0 QM 0";
}
if(m_bolTelFlg)m_strTelText=m_strTelText+" "+m_strTempTel;
WaterSts.m_dblWaterMonthSts=0;
WaterSts.m_dblFlowMonthSts=0;
WaterSts.m_intWaterMonthCnt=0;
m_bolStsChg=true;
m_bolTelFlg=true;
return true;
}
//////////////////////////////////////////////////////////////////////
//即时拍报报文准备
//////////////////////////////////////////////////////////////////////
bool WaterProc::AddiTelPrepare()
{
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -