409 lines
10 KiB
C++
409 lines
10 KiB
C++
#include "stdafx.h"
|
|
#include "KTPIDPipePageDlg.h"
|
|
#include "PIDRecDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#ifndef WM_SHOWPARAMTEXT
|
|
#define WM_SHOWPARAMTEXT (WM_USER + 0x1001)
|
|
#endif
|
|
|
|
int getMaxIDFromDB(LPCTSTR pszField, LPCTSTR pszTbl, CUIISQLiteServer *pDb)
|
|
{
|
|
if (!pszField || !pszTbl || !pDb) return -1;
|
|
CString ss(_T("")), v(_T(""));
|
|
ss.Format(_T("select max(%s) from %s"), pszField, pszTbl);
|
|
|
|
if (!pDb->GetSelData(ss, v)) return -1;
|
|
|
|
return _ttoi(v) + 1;
|
|
}
|
|
|
|
KTPIDPipePageDlg::KTPIDPipePageDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(KTPIDPipePageDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(KTPIDPipePageDlg)
|
|
//}}AFX_DATA_INIT
|
|
m_pPipeParam = NULL;
|
|
m_pADOServer = NULL;
|
|
}
|
|
|
|
KTPIDPipePageDlg::~KTPIDPipePageDlg()
|
|
{
|
|
DELETE_PTR(m_pADOServer);
|
|
}
|
|
|
|
void KTPIDPipePageDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(KTPIDPipePageDlg)
|
|
DDX_Control(pDX, IDC_LISTPREESS, m_wndPressList);
|
|
DDX_Control(pDX, IDC_LISTHEATTRA, m_wndHeatTraList);
|
|
DDX_Control(pDX, IDC_LISTDN, m_wndDNList);
|
|
DDX_Control(pDX, IDC_MEDIUMLIST, m_wndMedList);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(KTPIDPipePageDlg, CDialog)
|
|
//{{AFX_MSG_MAP(KTPIDPipePageDlg)
|
|
ON_NOTIFY(NM_CLICK, IDC_MEDIUMLIST, OnClickMediumlist)
|
|
ON_LBN_SELCHANGE(IDC_LISTDN, OnSelchangeListdn)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL KTPIDPipePageDlg::OnCommand(WPARAM wParam, LPARAM lParam)
|
|
{
|
|
WORD lWord = LOWORD(wParam);
|
|
switch (lWord)
|
|
{
|
|
case IDOK:
|
|
case IDCANCEL:
|
|
{
|
|
return TRUE;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
return CDialog::OnCommand(wParam, lParam);
|
|
}
|
|
|
|
BOOL KTPIDPipePageDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_ImageList.Create(IDB_BITMAPPIPE,16,1,ILC_COLOR16);
|
|
m_wndMedList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
|
|
m_wndMedList.SetImageList(&m_ImageList,LVSIL_SMALL);
|
|
|
|
m_wndMedList.InsertColumn(0,_T("介质"),LVCFMT_LEFT,40,100);
|
|
m_wndMedList.InsertColumn(1,_T("描述"),LVCFMT_LEFT,120,100);
|
|
|
|
m_wndHeatTraList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
|
|
m_wndHeatTraList.SetImageList(&m_ImageList,LVSIL_SMALL);
|
|
m_wndHeatTraList.InsertColumn(0,_T("代号 "),LVCFMT_LEFT,40,100);
|
|
m_wndHeatTraList.InsertColumn(1,_T("说明 "),LVCFMT_LEFT,120,100);
|
|
m_wndHeatTraList.InsertColumn(2,_T("标注 "),LVCFMT_LEFT,0,0);
|
|
|
|
CString dbPath = FilePath::GetSysDir();
|
|
dbPath += _T("\\Plumbing.db");
|
|
|
|
m_pADOServer = new CUIISQLiteServer;
|
|
if (!m_pADOServer->InitADOServer(dbPath))
|
|
{
|
|
AfxMessageBox(_T("数据库驱动加载数据库Plumbing.db失败!"));
|
|
return FALSE;
|
|
}
|
|
|
|
//1.DN
|
|
InitDNParam();
|
|
|
|
//2.Media
|
|
InitMediumFromDb();
|
|
|
|
//3.press
|
|
InitPressFromDb();
|
|
|
|
//4.
|
|
InitHeatTraFromDb();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void KTPIDPipePageDlg::InitDNParam()
|
|
{
|
|
CString sSQL,sDN,sRat;
|
|
sDN.Format(_T("%d"),(int)m_pPipeParam->m_dDN);
|
|
|
|
sSQL = _T("select [公制] from AecDn order by [公制]"); //可能为英制,从设置中读取,待定
|
|
CStringArray arValues;
|
|
m_pADOServer->GetSelData(sSQL,arValues);
|
|
|
|
m_wndDNList.ResetContent();
|
|
for (int i = 0;i < arValues.GetSize();i++)
|
|
{
|
|
m_wndDNList.InsertString(i,arValues.GetAt(i));
|
|
}
|
|
int nIndex = m_wndDNList.FindString(0,sDN);
|
|
if (nIndex != -1)
|
|
m_wndDNList.SetCurSel(nIndex);
|
|
|
|
//英制的记录
|
|
CString sInchDN = _T("");
|
|
sSQL.Format(_T("select [英制] from AecDn where [公制]=%d"),_ttoi(sDN));
|
|
m_pADOServer->GetSelData(sSQL,sInchDN);
|
|
if (!sInchDN.IsEmpty())
|
|
_tcscpy(m_pPipeParam->m_pszInchDN,sInchDN);
|
|
}
|
|
|
|
BOOL KTPIDPipePageDlg::InitMediumFromDb()
|
|
{
|
|
if (m_pADOServer != NULL)
|
|
{
|
|
int nSel = 0;
|
|
|
|
//1。介质描述
|
|
CUIIValueTable table;
|
|
CString sSQL,sText,sDescr;
|
|
sSQL = _T("select [介质代号],[介质] from AecFluid order by ID");
|
|
m_pADOServer->GetSelData(sSQL,table);
|
|
|
|
int nCount = table.GetTableLogicSize();
|
|
int i = 0,nSize = 0;
|
|
|
|
m_wndMedList.DeleteAllItems();
|
|
CStringArray arValue;
|
|
for(i = 0;i<nCount;i++)
|
|
{
|
|
arValue.RemoveAll();
|
|
table.GetValueRecord(i,arValue);
|
|
|
|
nSize = arValue.GetSize();
|
|
ASSERT(nSize == 2);
|
|
|
|
sText = arValue.GetAt(0);
|
|
sDescr= arValue.GetAt(1);
|
|
|
|
m_wndMedList.InsertItem(i,sText,0);
|
|
m_wndMedList.SetItemText(i,1,sDescr);
|
|
|
|
if (sText.CompareNoCase(m_pPipeParam->m_pszMedia) == 0)
|
|
{
|
|
nSel = i;
|
|
}
|
|
}
|
|
m_wndMedList.SetItemState(nSel,LVIS_SELECTED,LVIS_SELECTED);
|
|
m_wndMedList.EnsureVisible(nSel,FALSE);
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
void KTPIDPipePageDlg::InitPressFromDb()
|
|
{
|
|
//获取项目名称
|
|
AecDbObjXDataMap xDataMap;
|
|
{
|
|
xDataMap.SetAt(DOC_TRADE, WPipe::ePetro); //应用行业,石油
|
|
xDataMap.SetAt(DOC_SCALE, _T("1:50")); //出图比例
|
|
xDataMap.SetAt(DOC_PLOTWIDTH, 0.5); //最小打印线宽
|
|
xDataMap.SetAt(DOC_DPLOTWIDTH, 0.5); //双线打印线宽
|
|
|
|
xDataMap.SetAt(DOC_WELDDIA, 1.0); //焊点直径
|
|
xDataMap.SetAt(DOC_PIPEMINDIA, 65.0); //最小管道直径
|
|
xDataMap.SetAt(DOC_PIPEMAXDIA, 200.0); //最大管线直径
|
|
xDataMap.SetAt(DOC_PERELBOWDIA, 40.0); //垂直弯头直径
|
|
xDataMap.SetAt(DOC_BREAKSPACE, 2.0); //交叉断线间距
|
|
xDataMap.SetAt(DOC_UNIT, 0); //单位
|
|
xDataMap.SetAt(DOC_DIMTERM, 0); //标注端符
|
|
|
|
xDataMap.SetAt(DOC_DIMTXTH, 2.0); //标注文字高度
|
|
xDataMap.SetAt(DOC_DIMTXTF, 0.7); //标注文字宽度系数
|
|
|
|
xDataMap.SetAt(DOC_EQPTXTH, 2.0); //设备标注文字高度
|
|
xDataMap.SetAt(DOC_EQPTXTF, 1.0); //设备标注文字宽度系数
|
|
|
|
xDataMap.SetAt(DOC_STRTXTH, 2.0); //结构标注文字高度
|
|
xDataMap.SetAt(DOC_STRTXTF, 0.7); //结构标注文字宽度系数
|
|
|
|
xDataMap.SetAt(DOC_SCRIPTT, _T("{0}{-}{1}{-}{2}{-}{3}"));//上标脚本
|
|
xDataMap.SetAt(DOC_SCRIPTB, _T("{4}{-}{5}"));//下标脚本
|
|
xDataMap.SetAt(DOC_ELTYPE, 0); //标高设置
|
|
xDataMap.SetAt(DOC_ELDESCR, _T("--")); //标高文本
|
|
}
|
|
if (!KTModelLayoutXData::ReadModelXData(KT_PIPEINIT,xDataMap))
|
|
{
|
|
acedAlert(_T("\n系统未初始化!"));
|
|
return;
|
|
}
|
|
CString sProject;
|
|
|
|
xDataMap.GetAt(DOC_PIDPROJECT,sProject);
|
|
|
|
CString sSQL;
|
|
sSQL.Format(_T("select [等级名称] from AecSpecname where [项目名称]='%s'"),sProject);
|
|
|
|
CStringArray arValues;
|
|
m_pADOServer->GetSelData(sSQL,arValues);
|
|
|
|
m_wndPressList.ResetContent();
|
|
for (int i = 0;i < arValues.GetSize();i++)
|
|
{
|
|
m_wndPressList.InsertString(i,arValues.GetAt(i));
|
|
}
|
|
|
|
int nIndex = m_wndPressList.FindString(0,m_pPipeParam->m_pszLevel);
|
|
if (nIndex != -1)
|
|
{
|
|
m_wndPressList.SetCurSel(nIndex);
|
|
}
|
|
else
|
|
{
|
|
m_wndPressList.SetCurSel(0);
|
|
}
|
|
}
|
|
|
|
void KTPIDPipePageDlg::InitHeatTraFromDb()
|
|
{
|
|
CString sSQL;
|
|
sSQL.Format(_T("select [保温伴热代号],[说明文字],[标注文字] from AecHeat"));
|
|
|
|
CUIIValueTable table;
|
|
m_pADOServer->GetSelData(sSQL,table);
|
|
|
|
int nSel = -1;
|
|
CStringArray arValues;
|
|
m_wndHeatTraList.DeleteAllItems();
|
|
for (int i = 0;i < table.GetTableLogicSize();i++)
|
|
{
|
|
arValues.RemoveAll();
|
|
table.GetValueRecord(i,arValues);
|
|
|
|
if (arValues.GetSize() == 3)
|
|
{
|
|
m_wndHeatTraList.InsertItem(i,arValues.GetAt(0),2);
|
|
m_wndHeatTraList.SetItemText(i,1,arValues.GetAt(1));
|
|
m_wndHeatTraList.SetItemText(i,2,arValues.GetAt(2));
|
|
|
|
if (arValues.GetAt(0).CompareNoCase(m_pPipeParam->m_pszInsTag) == 0)
|
|
nSel = i;
|
|
}
|
|
}
|
|
if (nSel == -1) nSel = 0;
|
|
m_wndHeatTraList.SetItemState(nSel,LVIS_SELECTED,LVIS_SELECTED);
|
|
}
|
|
|
|
BOOL KTPIDPipePageDlg::UpdateDataEx()
|
|
{
|
|
//1.DN
|
|
int nSel = m_wndDNList.GetCurSel();
|
|
if (nSel == -1) return FALSE;
|
|
CString sDN;
|
|
m_wndDNList.GetText(nSel,sDN);
|
|
m_pPipeParam->m_dDN = _ttof(sDN);
|
|
|
|
//英制
|
|
CString sInchDN = _T(""), sSQL;
|
|
sSQL.Format(_T("select [英制] from AecDn where [公制]=%d"),_ttoi(sDN));
|
|
m_pADOServer->GetSelData(sSQL,sInchDN);
|
|
if (!sInchDN.IsEmpty())
|
|
_tcscpy(m_pPipeParam->m_pszInchDN,sInchDN);
|
|
|
|
//2.介质
|
|
POSITION ps = m_wndMedList.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndMedList.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
CString sMedia = m_wndMedList.GetItemText(nItem,0);
|
|
CString sDescr = m_wndMedList.GetItemText(nItem,1);
|
|
_tcscpy(m_pPipeParam->m_pszMedia,sMedia);
|
|
_tcscpy(m_pPipeParam->m_pszDesc,sDescr);
|
|
}
|
|
}
|
|
|
|
//3.压力
|
|
nSel = m_wndPressList.GetCurSel();
|
|
if (nSel != -1)
|
|
{
|
|
CString sText;
|
|
m_wndPressList.GetText(nSel,sText);
|
|
_tcscpy(m_pPipeParam->m_pszLevel,sText);
|
|
}
|
|
|
|
//4.保温伴热
|
|
ps = m_wndHeatTraList.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndHeatTraList.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
CString sTag = m_wndHeatTraList.GetItemText(nItem,0);
|
|
CString sDimTag = m_wndHeatTraList.GetItemText(nItem,1);
|
|
_tcscpy(m_pPipeParam->m_pszInsTag,sTag);
|
|
_tcscpy(m_pPipeParam->m_pszInsTagDim,sDimTag);
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void KTPIDPipePageDlg::OnClickMediumlist(NMHDR* pNMHDR, LRESULT* pResult)
|
|
{
|
|
POSITION ps = m_wndMedList.GetFirstSelectedItemPosition();
|
|
if (ps != NULL)
|
|
{
|
|
int nItem = m_wndMedList.GetNextSelectedItem(ps);
|
|
if (nItem != -1)
|
|
{
|
|
CString sMedia = m_wndMedList.GetItemText(nItem,0);
|
|
CString sDescr = m_wndMedList.GetItemText(nItem,1);
|
|
_tcscpy(m_pPipeParam->m_pszMedia,sMedia);
|
|
_tcscpy(m_pPipeParam->m_pszDesc,sDescr);
|
|
GetParent()->GetParent()->SendMessage(WM_SHOWPARAMTEXT);
|
|
}
|
|
}
|
|
*pResult = 0;
|
|
}
|
|
|
|
void KTPIDPipePageDlg::OnSelchangeListdn()
|
|
{
|
|
int nSel = m_wndDNList.GetCurSel();
|
|
if (nSel == -1) return;
|
|
CString sDN;
|
|
m_wndDNList.GetText(nSel,sDN);
|
|
m_pPipeParam->m_dDN = _ttof(sDN);
|
|
GetParent()->GetParent()->SendMessage(WM_SHOWPARAMTEXT);
|
|
}
|
|
|
|
void KTPIDPipePageDlg::OnAddPipeLine()
|
|
{
|
|
CPIDRecDlg dlg;
|
|
if (IDOK == dlg.DoModal() )
|
|
{
|
|
int nID = getMaxIDFromDB(_T("ID"), _T("AecDn"), m_pADOServer);
|
|
if (nID == -1) return;
|
|
|
|
//DN
|
|
CString sSQL;
|
|
sSQL.Format(_T("insert into AecDn (ID,[公制],[英制]) values (%d,%d,'%s')"),
|
|
nID,dlg.m_nDN,_T("-1") );
|
|
|
|
m_pADOServer->ExecuteSQL(sSQL);
|
|
|
|
//介质
|
|
nID = getMaxIDFromDB(_T("ID"), _T("AecFluid"), m_pADOServer);
|
|
|
|
sSQL.Format(_T("insert into AecFluid (ID,[行业],[介质代号],[介质]) values (%d,'%s','%s','%s')"),
|
|
nID,_T("市政"),dlg.m_sMedia,dlg.m_sDescr);
|
|
m_pADOServer->ExecuteSQL(sSQL);
|
|
|
|
//等级
|
|
nID = getMaxIDFromDB(_T("ID"), _T("AecSpecname"), m_pADOServer);
|
|
sSQL.Format(_T("insert into AecSpecname (ID,[项目名称],[等级名称]) values (%d,'%s','%s')"),
|
|
nID,_T("KT-1"),dlg.m_sPress);
|
|
m_pADOServer->ExecuteSQL(sSQL);
|
|
|
|
//保温伴热
|
|
nID = getMaxIDFromDB(_T("ID"), _T("AecHeat"), m_pADOServer);
|
|
sSQL.Format(_T("insert into AecHeat (ID,[保温伴热代号],[说明文字],[标注文字],[标志]) values (%d,'%s','%s','%s',%d)"),
|
|
nID,dlg.m_sCode,dlg.m_sHotRem,dlg.m_sCode,1);
|
|
m_pADOServer->ExecuteSQL(sSQL);
|
|
|
|
|
|
//1.DN
|
|
InitDNParam();
|
|
|
|
//2.Media
|
|
InitMediumFromDb();
|
|
|
|
//3.press
|
|
InitPressFromDb();
|
|
|
|
//4.
|
|
InitHeatTraFromDb();
|
|
}
|
|
} |