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

📄 waterproc.cpp

📁 用C++基于SQL SERVER使用存储过程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		}

		//每月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 + -