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