209 lines
4.7 KiB
C++
209 lines
4.7 KiB
C++
#include "stdafx.h"
|
|
#include "CFLEndFGsDlg.h"
|
|
#include "PipelineTools.h"
|
|
|
|
IMPLEMENT_DYNAMIC(CFLEndFGsDlg, CDialog)
|
|
|
|
CFLEndFGsDlg::CFLEndFGsDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(IDD_FLENDFGS_DLG, pParent)
|
|
{
|
|
m_sEndF1 = _T("FF");
|
|
m_sEndF2 = _T("FF");
|
|
|
|
m_nTrade = WPipe::eCivial;//行业 默认市政
|
|
m_sPro = _T("");
|
|
m_sLevel = _T("");
|
|
m_dPress = 1.6;
|
|
m_dDN = 100;
|
|
}
|
|
|
|
inline CFLEndFGsDlg::CFLEndFGsDlg(LPCTSTR proj
|
|
, LPCTSTR level
|
|
, const double &dPress
|
|
, const double &dDn
|
|
, const int &nTrade
|
|
, CWnd *pParent)
|
|
:CDialog(IDD_FLENDFGS_DLG, pParent)
|
|
, m_sPro(proj)
|
|
, m_sLevel(level)
|
|
, m_dPress(dPress)
|
|
, m_dDN(dDn)
|
|
, m_nTrade(nTrade) {}
|
|
|
|
CFLEndFGsDlg::~CFLEndFGsDlg()
|
|
{
|
|
|
|
}
|
|
|
|
void CFLEndFGsDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_LIST3, m_wndListGasket);
|
|
DDX_Control(pDX, IDC_LIST1, m_wndFlangeEndF1);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CFLEndFGsDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CFLEndFGsDlg::OnBnClickedOk)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
BOOL CFLEndFGsDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_wndListGasket.InsertColumn(0, _T("材质"), LVCFMT_LEFT, 100, 80);
|
|
m_wndListGasket.InsertColumn(1, _T("压力"), LVCFMT_LEFT, 50, 50);
|
|
m_wndListGasket.InsertColumn(2, _T("垫片厚度"), LVCFMT_LEFT, 50, 50);
|
|
m_wndListGasket.InsertColumn(3, _T("描述"), LVCFMT_LEFT, 200, 200);
|
|
m_wndListGasket.SetExtendedStyle(LVS_EX_FULLROWSELECT);
|
|
|
|
if (!PipelineTools::getSqliteDB(_T("Plumbing.db"), m_db))
|
|
{
|
|
AfxMessageBox(_T("未找到数据库文件Plumbing.db,请重新安装!"));
|
|
return FALSE;
|
|
}
|
|
|
|
ShowFlange();
|
|
ShowGasket();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CFLEndFGsDlg::ShowFlange()
|
|
{
|
|
CStringArray arVals;
|
|
CString sSQL = _T("select distinct [端面型式] from AecFace");
|
|
m_db.GetSelData(sSQL, arVals);
|
|
|
|
for (int i = 0; i < arVals.GetSize(); i++)
|
|
{
|
|
m_wndFlangeEndF1.AddString(arVals.GetAt(i));
|
|
}
|
|
m_wndFlangeEndF1.SetCurSel(0);
|
|
}
|
|
|
|
void CFLEndFGsDlg::ShowGasket()
|
|
{
|
|
CStringArray arValues;
|
|
CUIIValueTable table;
|
|
CString sSQL, sTemp;
|
|
|
|
int nSel = 1;
|
|
if (m_sLevel.IsEmpty() || m_nTrade == WPipe::eCivial)//市政不考虑等级
|
|
{
|
|
sSQL.Format(_T("select distinct [材质],[压力],[垫片厚度],[描述] from AecSpecGasket where [压力]>%.2f and [压力]<%.2f"),
|
|
m_dPress - 0.05,m_dPress + 0.05);
|
|
}
|
|
else
|
|
{
|
|
//等级库中查找
|
|
sSQL.Format(_T("select distinct [材质],[压力],[垫片厚度],[描述] from AecSpecGasket where [项目名称]='%s' \
|
|
and [等级名称]='%s' and [类别]='垫片' and [公称直径]=%d and [压力]>%.2f and [压力]<%.2f"),
|
|
m_sPro,m_sLevel,(int)(m_dDN+0.5),m_dPress - 0.05, m_dPress + 0.05);
|
|
nSel = 2;
|
|
}
|
|
|
|
m_db.GetSelData(sSQL, table);
|
|
if (table.GetTableLogicSize() > 0)
|
|
{
|
|
for (int i = 0; i < table.GetTableLogicSize(); i++)
|
|
{
|
|
arValues.RemoveAll();
|
|
table.GetValueRecord(i, arValues);
|
|
|
|
sTemp = arValues.GetAt(0);
|
|
m_wndListGasket.InsertItem(i, sTemp);
|
|
|
|
sTemp = arValues.GetAt(1);
|
|
m_wndListGasket.SetItemText(i, 1, sTemp);
|
|
|
|
sTemp = arValues.GetAt(2);
|
|
m_wndListGasket.SetItemText(i, 2, sTemp);
|
|
|
|
sTemp = arValues.GetAt(3);
|
|
m_wndListGasket.SetItemText(i, 3, sTemp);
|
|
}
|
|
if (table.GetTableLogicSize() > 0)
|
|
m_wndListGasket.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED);
|
|
}
|
|
else
|
|
{
|
|
CString sTip;
|
|
if (nSel == 1)
|
|
sTip.Format(_T("缺少压力%.2f 的垫片数据!"), m_dPress);
|
|
else
|
|
sTip.Format(_T("缺少项目=%s 等级=%s 公称直径=%d 压力=%.2f 的垫片选型数据!"), m_sPro, m_sLevel, (int)(m_dDN + 0.5),m_dPress);
|
|
|
|
AfxMessageBox(sTip);
|
|
}
|
|
}
|
|
|
|
void CFLEndFGsDlg::OnBnClickedOk()
|
|
{
|
|
int nSel = -1;
|
|
nSel = m_wndFlangeEndF1.GetCurSel();
|
|
if (nSel == -1)
|
|
{
|
|
AfxMessageBox(_T("请选择法兰端面!"));
|
|
return;
|
|
}
|
|
m_wndFlangeEndF1.GetText(nSel, m_sEndF1);
|
|
m_sEndF2 = m_sEndF1;
|
|
|
|
m_arGasket.RemoveAll();
|
|
POSITION ps = m_wndListGasket.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
//[材质],[压力],[垫片厚度],[描述]
|
|
int nItem = m_wndListGasket.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
for(int i = 0;i < 4;i++)
|
|
m_arGasket.Add(m_wndListGasket.GetItemText(nItem, i));
|
|
}
|
|
else
|
|
{
|
|
AfxMessageBox(_T("请选择垫片行!"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CFLEndFGsDlg::GetFLngEndFace(CString &sEndF1, CString &sEndF2)
|
|
{
|
|
sEndF1 = m_sEndF1;
|
|
sEndF2 = m_sEndF2;
|
|
}
|
|
|
|
void CFLEndFGsDlg::GetGasketInf(CString &sGaskets)
|
|
{
|
|
for (int i = 0;i < m_arGasket.GetSize();i++)
|
|
{
|
|
sGaskets += m_arGasket.GetAt(i);
|
|
if (i < m_arGasket.GetSize() - 1)
|
|
sGaskets += _T('/');
|
|
}
|
|
}
|
|
|
|
extern "C" __declspec(dllexport) bool getFlangeEndType(LPCTSTR pszProj
|
|
, LPCTSTR pszLevel
|
|
, const double &dPressure
|
|
, const double &dDn
|
|
, const int &nTrade
|
|
, CString &sEnd1
|
|
, CString &sEnd2
|
|
, CString &sGasket)
|
|
{
|
|
CAcModuleResourceOverride myResources;
|
|
CFLEndFGsDlg dlg(pszProj, pszLevel, dPressure, dDn, nTrade);
|
|
if (dlg.DoModal() != IDOK) return false;
|
|
|
|
dlg.GetFLngEndFace(sEnd1, sEnd2);
|
|
dlg.GetGasketInf(sGasket);
|
|
|
|
return true;
|
|
}
|