Files
envi-code/SourceCode/Code2026/PipelineCmd/CFLEndFGsDlg.cpp
T
2026-09-28 15:28:50 +08:00

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;
}