479 lines
14 KiB
C++
479 lines
14 KiB
C++
// WellCalcModifyEleDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "WellCalcModifyEleDlg.h"
|
|
#include "globalFunc.h"
|
|
|
|
namespace
|
|
{
|
|
void SetName(CString &sTemp)
|
|
{
|
|
int iIndex = 0;
|
|
TCHAR szTemp;
|
|
for (; iIndex < sTemp.GetLength(); iIndex++)
|
|
{
|
|
szTemp = sTemp[iIndex];
|
|
if (szTemp >= _T('a') && szTemp <= _T('z'))
|
|
{
|
|
szTemp -= 32;
|
|
sTemp.SetAt(iIndex, szTemp);
|
|
}
|
|
}
|
|
}
|
|
bool CompareName(CString &sTemp, CString &sTemp2)
|
|
{
|
|
SetName(sTemp);
|
|
SetName(sTemp2);
|
|
if (sTemp.Compare(sTemp2) == 0)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWellCalcModifyEleDlg dialog
|
|
|
|
TGridWellEle::TGridWellEle()
|
|
{
|
|
|
|
}
|
|
|
|
void TGridWellEle::OnCellComboString(WDGridCell&cell,CComboBox&combo)
|
|
{
|
|
if(cell.GetColIndex()==5){
|
|
combo.AddString(_T("是"));
|
|
combo.AddString(_T("否"));
|
|
}
|
|
}
|
|
|
|
CWellCalcModifyEleDlg::CWellCalcModifyEleDlg(int mode, CWnd* pParent /*=NULL*/)
|
|
: CDialog(CWellCalcModifyEleDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CWellCalcModifyEleDlg)
|
|
m_sWellSerial = _T("");
|
|
//}}AFX_DATA_INIT
|
|
m_iMode = mode; //0: 雨污系统 1:给水系统
|
|
|
|
m_bIsEleCalc = false;
|
|
}
|
|
|
|
void CWellCalcModifyEleDlg::SetDlgType(bool bIsEleCalc)
|
|
{
|
|
m_bIsEleCalc = bIsEleCalc;
|
|
}
|
|
|
|
void CWellCalcModifyEleDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CWellCalcModifyEleDlg)
|
|
DDX_Text(pDX, IDC_EDIT_WELLSERIAL, m_sWellSerial);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CWellCalcModifyEleDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CWellCalcModifyEleDlg)
|
|
ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnBtnSearch)
|
|
ON_BN_CLICKED(IDC_BTN_CLEAR, OnBtnClearDropWell)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CWellCalcModifyEleDlg message handlers
|
|
|
|
BOOL CWellCalcModifyEleDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
m_grid.Clear();
|
|
m_grid.Create(this, IDC_LIST_PIPE);
|
|
m_grid.FitLastCol();
|
|
m_grid.SetNoAppendButton(TRUE);
|
|
m_grid.SetNoDefaultMenu(true);
|
|
m_grid.AppendCol(_T("井编号"), 60);
|
|
m_grid.AppendCol(_T("自然地面标高"), 75);
|
|
m_grid.AppendCol(_T("井面标高"), 60);
|
|
m_grid.AppendCol(_T("井半径"), 60);
|
|
m_grid.AppendCol(_T("沉砂深度mm"), 60);
|
|
|
|
COLORREF color = RGB(255,0,0);
|
|
m_grid.GetCol(0).SetReadOnly();
|
|
m_grid.GetCol(1).SetTextColor(color);
|
|
m_grid.GetCol(2).SetTextColor(color);
|
|
m_grid.GetCol(3).SetTextColor(color);
|
|
m_grid.GetCol(4).SetTextColor(color);
|
|
if(m_iMode == 0){
|
|
m_grid.AppendCol(_T("是否跌水"), 60);
|
|
m_grid.AppendCol(_T("井底标高"), 80);
|
|
|
|
//增加跌落高度 zxl 2011.11.15 add
|
|
m_grid.AppendCol(_T("跌落高度"), 60);
|
|
m_grid.GetCol(7).SetReadOnly();
|
|
|
|
m_grid.SetColPosFix();
|
|
m_grid.SetColFixLength();
|
|
m_grid.SetColFixWidth(); //不响应调整列宽度操作
|
|
m_grid.SetNoPaste();
|
|
m_grid.FitLastCol();
|
|
m_grid.GetCol(5).SetComboSel();
|
|
//m_grid.GetCol(6).SetTextColor(color);
|
|
|
|
COLORREF color2 = RGB(0,0,255);;
|
|
m_grid.GetCol(5).SetTextColor(color2);
|
|
}
|
|
|
|
if (!m_bIsEleCalc)//zxl 2012.01.17 add 标高检查时显示清除跌水井按钮并设置对话框大小
|
|
{
|
|
CWnd *pWnd = GetDlgItem(IDC_BTN_CLEAR);
|
|
if (pWnd)
|
|
{
|
|
pWnd->ShowWindow(SW_HIDE);
|
|
}
|
|
}
|
|
|
|
GetDropWellType();
|
|
InitDropWellType();
|
|
UpdateGrid();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CWellCalcModifyEleDlg::SetDropWell(std::vector<CString> &vecDropWell)
|
|
{
|
|
m_vecDropWell = vecDropWell;
|
|
}
|
|
|
|
void CWellCalcModifyEleDlg::UpdateGrid()
|
|
{
|
|
m_grid.Clear();
|
|
int idx = 0;
|
|
if(m_iMode == 0)
|
|
{
|
|
for(int i=0;i<m_lstWellSys.Length();i++){
|
|
if(m_lstWellSys[i]->m_bIsWell){ //井
|
|
CString sDropHeight = m_lstWellSys[i]->m_csSpare;//增加跌落高度 zxl 2011.11.15 add
|
|
|
|
CString csName1 = m_lstWellSys[i]->m_csName;
|
|
if(csName1 == _T(""))
|
|
continue;
|
|
CString csArea, csAllArea, csFactor, csQ, csTime, csDeepSand;
|
|
m_grid.AppendRow();
|
|
m_grid.GetCell(idx, 0).SetText(csName1);
|
|
double nEle = m_lstWellSys[i]->m_nUpEle;
|
|
double nDownEle = m_lstWellSys[i]->m_nDownEle;
|
|
double nGroundEle = m_lstWellSys[i]->m_nGroundEle;
|
|
double nWellRadius = m_lstWellSys[i]->m_nWellRadius;
|
|
double nDeepSand = m_lstWellSys[i]->m_nSpare;
|
|
CString csWellUpEle, csWellDownEle, csGroundEle, csWellRadius;
|
|
csWellUpEle.Format(_T("%.3f"), nEle);
|
|
csWellDownEle.Format(_T("%.3f"), nDownEle);
|
|
csGroundEle.Format(_T("%.3f"), nGroundEle);
|
|
csWellRadius.Format(_T("%.2f"), nWellRadius);
|
|
csDeepSand.Format(_T("%.0f"), nDeepSand);
|
|
|
|
m_grid.GetCell(idx, 1).SetText(csGroundEle);
|
|
m_grid.GetCell(idx, 2).SetText(csWellUpEle);
|
|
m_grid.GetCell(idx, 3).SetText(csWellRadius);
|
|
m_grid.GetCell(idx, 4).SetText(csDeepSand);
|
|
|
|
if(m_iMode == 0){
|
|
m_grid.GetCell(idx, 6).SetText(csDeepSand);
|
|
|
|
//if(m_lstWellSys[i]->m_bIsDropWell){
|
|
if(m_lstWellSys[i]->m_bIsDropWell && _T("HC") != m_lstWellSys[i]->m_csName){
|
|
m_grid.GetCell(idx, 5).SetText(_T("是"));
|
|
m_grid.GetCell(idx, 6).SetText(csWellDownEle);
|
|
m_grid.GetCell(idx, 7).SetText(sDropHeight);//增加跌落高度 zxl 2011.11.15 add
|
|
}
|
|
else{
|
|
m_grid.GetCell(idx, 5).SetText(_T("否"));
|
|
if(m_lstWellSys[i]->m_nFrondDownEle > -9998){ //支路底标高过底,提醒用户跌水
|
|
CString csTmp;
|
|
csTmp.Format(_T("建议改跌水。%.2f"), m_lstWellSys[i]->m_nFrondDownEle);
|
|
m_grid.GetCell(idx, 6).SetText(csTmp);
|
|
}
|
|
else
|
|
m_grid.GetCell(idx, 6).SetText(_T("待计算"));
|
|
}
|
|
}
|
|
idx++;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for(int i=0;i<m_lstFeedWellSys.Length();i++){
|
|
if(m_lstFeedWellSys[i]->m_bIsWell){ //井
|
|
CString csName1 = m_lstFeedWellSys[i]->m_csName;
|
|
if(csName1 == _T(""))
|
|
continue;
|
|
CString csArea, csAllArea, csFactor, csQ, csTime, csDeepSand;
|
|
m_grid.AppendRow();
|
|
m_grid.GetCell(idx, 0).SetText(csName1);
|
|
double nEle = m_lstFeedWellSys[i]->m_nUpEle;
|
|
double nDownEle = m_lstFeedWellSys[i]->m_nDownEle;
|
|
double nGroundEle = m_lstFeedWellSys[i]->m_nGroundEle;
|
|
double nWellRadius = m_lstFeedWellSys[i]->m_nWellRadius;
|
|
double nDeepSand = m_lstFeedWellSys[i]->m_nSpare;
|
|
CString csWellUpEle, csWellDownEle, csGroundEle, csWellRadius;
|
|
csWellUpEle.Format(_T("%.3f"), nEle);
|
|
csWellDownEle.Format(_T("%.3f"), nDownEle);
|
|
csGroundEle.Format(_T("%.3f"), nGroundEle);
|
|
csWellRadius.Format(_T("%.2f"), nWellRadius);
|
|
csDeepSand.Format(_T("%.0f"), nDeepSand);
|
|
|
|
m_grid.GetCell(idx, 1).SetText(csGroundEle);
|
|
m_grid.GetCell(idx, 2).SetText(csWellUpEle);
|
|
m_grid.GetCell(idx, 3).SetText(csWellRadius);
|
|
m_grid.GetCell(idx, 4).SetText(csDeepSand);
|
|
|
|
idx++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWellCalcModifyEleDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
if(m_iMode == 0){
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
CString csName = (LPCTSTR)(*pRow)[0].GetText();
|
|
CString csGroundEle = (LPCTSTR)(*pRow)[1].GetText();
|
|
CString csUpEle = (LPCTSTR)(*pRow)[2].GetText();
|
|
CString csWellRadius = (LPCTSTR)(*pRow)[3].GetText();
|
|
CString csDeepSand = (LPCTSTR)(*pRow)[4].GetText();
|
|
|
|
|
|
CString csIsDrop = (LPCTSTR)(*pRow)[5].GetText();
|
|
CString csDownEle = (LPCTSTR)(*pRow)[6].GetText();
|
|
if(csIsDrop == _T("是") && csDownEle == _T("待计算")){
|
|
MessageBox(_T("跌水井要输入井底标高!"));
|
|
return;
|
|
}
|
|
double nDownEle = _tstof(csDownEle);
|
|
for(int i=0;i<m_lstWellSys.Length();i++){
|
|
if(m_lstWellSys[i]->m_bIsWell && m_lstWellSys[i]->m_csName == csName){
|
|
m_lstWellSys[i]->m_nUpEle = _tstof(csUpEle);
|
|
m_lstWellSys[i]->m_nGroundEle = _tstof(csGroundEle);
|
|
m_lstWellSys[i]->m_nWellRadius = _tstof(csWellRadius);
|
|
m_lstWellSys[i]->m_nSpare = _tstof(csDeepSand);
|
|
|
|
if(csIsDrop == _T("是") && fabs(nDownEle) > 0.0001){
|
|
m_lstWellSys[i]->m_bIsDropWell = TRUE;
|
|
m_lstWellSys[i]->m_nDownEle = nDownEle;
|
|
}
|
|
else{
|
|
m_lstWellSys[i]->m_bIsDropWell = FALSE;
|
|
m_lstWellSys[i]->m_nDownEle = 0;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
InitDropWellType();
|
|
}
|
|
else{
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext()){
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
CString csName = (LPCTSTR)(*pRow)[0].GetText();
|
|
CString csGroundEle = (LPCTSTR)(*pRow)[1].GetText();
|
|
CString csUpEle = (LPCTSTR)(*pRow)[2].GetText();
|
|
CString csWellRadius = (LPCTSTR)(*pRow)[3].GetText();
|
|
CString csDeepSand = (LPCTSTR)(*pRow)[4].GetText();
|
|
|
|
for(int i=0;i<m_lstFeedWellSys.Length();i++){
|
|
if(m_lstFeedWellSys[i]->m_bIsWell && m_lstFeedWellSys[i]->m_csName == csName){
|
|
m_lstFeedWellSys[i]->m_nUpEle = _tstof(csUpEle);
|
|
m_lstFeedWellSys[i]->m_nGroundEle = _tstof(csGroundEle);
|
|
m_lstFeedWellSys[i]->m_nWellRadius = _tstof(csWellRadius);
|
|
m_lstFeedWellSys[i]->m_nSpare = _tstof(csDeepSand);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
//重新区分计算产生的跌水井和用户定义的跌水井
|
|
void CWellCalcModifyEleDlg::InitDropWellType()
|
|
{
|
|
std::map<CString, double>::iterator itCalc;
|
|
ads_name name;
|
|
for(int i=0;i<m_lstWellSys.Length();i++)
|
|
{
|
|
acdbGetAdsName(name, m_lstWellSys[i]->m_ID);
|
|
//该跌水井是计算产生的井,比较其标高,标高有变化时定义其为用户自定义跌水井
|
|
if(m_lstWellSys[i]->m_bIsWell && m_mapCalc.find(m_lstWellSys[i]->m_csName) != m_mapCalc.end())
|
|
{
|
|
itCalc = m_mapCalc.find(m_lstWellSys[i]->m_csName);
|
|
double dEleOld = itCalc->second;
|
|
double dEleNew = m_lstWellSys[i]->m_nDownEle;
|
|
if (fabs(dEleOld - dEleNew) < 0.001 || fabs(dEleNew - 0.0) < 0.001)
|
|
{
|
|
GlobalFunc::WriteXdata(name, _T("DropWellType"), _T("calc"));
|
|
}
|
|
else
|
|
{
|
|
GlobalFunc::WriteXdata(name, _T("DropWellType"), _T("custom"));
|
|
m_mapCalc.erase(m_lstWellSys[i]->m_csName);
|
|
m_mapCustom.insert(std::make_pair(m_lstWellSys[i]->m_csName, m_lstWellSys[i]->m_nDownEle));
|
|
}
|
|
}
|
|
else if (m_lstWellSys[i]->m_bIsWell && m_mapCustom.find(m_lstWellSys[i]->m_csName) != m_mapCustom.end())
|
|
{
|
|
GlobalFunc::WriteXdata(name, _T("DropWellType"), _T("custom"));
|
|
}
|
|
else if (m_lstWellSys[i]->m_bIsDropWell)
|
|
{
|
|
GlobalFunc::WriteXdata(name, _T("DropWellType"), _T("custom"));
|
|
m_mapCustom.insert(std::make_pair(m_lstWellSys[i]->m_csName, m_lstWellSys[i]->m_nDownEle));
|
|
}
|
|
}
|
|
}
|
|
|
|
//增加查找井编号功能 zxl 2011.11.15 add
|
|
void CWellCalcModifyEleDlg::OnBtnSearch()
|
|
{
|
|
UpdateData(TRUE);
|
|
m_grid.UnSelect();
|
|
CString sName;
|
|
CString sName2 = m_sWellSerial;
|
|
int iRow = 0;
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext())
|
|
{
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
sName = (*pRow)[0].GetText();
|
|
if (CompareName(sName, sName2))
|
|
{
|
|
m_grid.SelectRow(iRow);
|
|
return;
|
|
}
|
|
iRow ++;
|
|
}
|
|
AfxMessageBox(_T("请输入有效的井编号!"));
|
|
}
|
|
|
|
//设定用户定义跌水井
|
|
void CWellCalcModifyEleDlg::GetDropWellByCustom(std::vector<CString> &vec)
|
|
{
|
|
vec.clear();
|
|
std::map<CString, double>::iterator it;
|
|
for (it = m_mapCustom.begin(); it != m_mapCustom.end(); it++)
|
|
{
|
|
vec.push_back(it->first);
|
|
}
|
|
}
|
|
|
|
//初始化计算产生的跌水井和用户定义的跌水井
|
|
void CWellCalcModifyEleDlg::GetDropWellType()
|
|
{
|
|
m_mapCalc.clear();
|
|
m_mapCustom.clear();
|
|
std::vector<CString>::iterator it;
|
|
for(int i=0;i<m_lstWellSys.Length();i++)//遍历井信息,提取出计算产生的跌水井和用户定义的跌水井
|
|
{
|
|
if(m_lstWellSys[i]->m_bIsWell && m_lstWellSys[i]->m_bIsDropWell)
|
|
{
|
|
ads_name name;
|
|
acdbGetAdsName(name, m_lstWellSys[i]->m_ID);
|
|
CString sDropWellType = GlobalFunc::ReadXdata(name, _T("DropWellType"));
|
|
if (!sDropWellType.IsEmpty())
|
|
{
|
|
if (sDropWellType.Compare(_T("calc")) == 0)
|
|
{
|
|
m_mapCalc.insert(std::make_pair(m_lstWellSys[i]->m_csName, m_lstWellSys[i]->m_nDownEle));
|
|
}
|
|
else if (sDropWellType.Compare(_T("custom")) == 0)
|
|
{
|
|
m_mapCustom.insert(std::make_pair(m_lstWellSys[i]->m_csName, m_lstWellSys[i]->m_nDownEle));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CString sName = m_lstWellSys[i]->m_csName;
|
|
it = std::find(m_vecDropWell.begin(), m_vecDropWell.end(), sName);
|
|
if (it == m_vecDropWell.end())//计算产生的跌水井
|
|
{
|
|
m_mapCalc.insert(std::make_pair(m_lstWellSys[i]->m_csName, m_lstWellSys[i]->m_nDownEle));
|
|
}
|
|
else//用户定义的跌水井
|
|
{
|
|
m_mapCustom.insert(std::make_pair(m_lstWellSys[i]->m_csName, m_lstWellSys[i]->m_nDownEle));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CWellCalcModifyEleDlg::OnBtnClearDropWell()
|
|
{
|
|
UpdateData();
|
|
//更新列表数据
|
|
for(m_grid.MoveToFirst(); !m_grid.IsOut(); m_grid.MoveToNext())
|
|
{
|
|
WDGridRow *pRow = m_grid.CurRow();
|
|
CString csName = (LPCTSTR)(*pRow)[0].GetText();
|
|
CString csGroundEle = (LPCTSTR)(*pRow)[1].GetText();
|
|
CString csUpEle = (LPCTSTR)(*pRow)[2].GetText();
|
|
CString csWellRadius = (LPCTSTR)(*pRow)[3].GetText();
|
|
CString csDeepSand = (LPCTSTR)(*pRow)[4].GetText();
|
|
|
|
|
|
CString csIsDrop = (LPCTSTR)(*pRow)[5].GetText();
|
|
CString csDownEle = (LPCTSTR)(*pRow)[6].GetText();
|
|
if(csIsDrop == _T("是") && csDownEle == _T("待计算")){
|
|
MessageBox(_T("跌水井要输入井底标高!"));
|
|
return;
|
|
}
|
|
double nDownEle = _tstof(csDownEle);
|
|
for(int i=0;i<m_lstWellSys.Length();i++){
|
|
if(m_lstWellSys[i]->m_bIsWell && m_lstWellSys[i]->m_csName == csName)
|
|
{
|
|
m_lstWellSys[i]->m_nUpEle = _tstof(csUpEle);
|
|
m_lstWellSys[i]->m_nGroundEle = _tstof(csGroundEle);
|
|
m_lstWellSys[i]->m_nWellRadius = _tstof(csWellRadius);
|
|
m_lstWellSys[i]->m_nSpare = _tstof(csDeepSand);
|
|
|
|
if(csIsDrop == _T("是") && fabs(nDownEle) > 0.0001)
|
|
{
|
|
m_lstWellSys[i]->m_bIsDropWell = TRUE;
|
|
m_lstWellSys[i]->m_nDownEle = nDownEle;
|
|
}
|
|
else
|
|
{
|
|
m_lstWellSys[i]->m_bIsDropWell = FALSE;
|
|
m_lstWellSys[i]->m_nDownEle = 0;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
for(int i=0;i<m_lstWellSys.Length();i++)//遍历井信息,清除计算产生的跌水井
|
|
{
|
|
if(m_lstWellSys[i]->m_bIsWell && m_lstWellSys[i]->m_bIsDropWell)
|
|
{
|
|
ads_name name;
|
|
acdbGetAdsName(name, m_lstWellSys[i]->m_ID);
|
|
CString sDropWellType = GlobalFunc::ReadXdata(name, _T("DropWellType"));
|
|
if (!sDropWellType.IsEmpty())
|
|
{
|
|
if (sDropWellType.Compare(_T("calc")) == 0)
|
|
{
|
|
m_lstWellSys[i]->m_bIsDropWell = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
UpdateGrid();
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|