#include "stdafx.h" #include "XZWJDlg.h" #include "LJCSDlg.h" #include "AecDbObjXDataMap.h" #include "CoreTools.h" #include "uiiado.h" #include "WJYLDlg.h" IMPLEMENT_DYNAMIC(CXZWJDlg, CDialog) CXZWJDlg::CXZWJDlg(CWnd* pParent /*=NULL*/) : CDialog(CXZWJDlg::IDD, pParent) , m_sKeyword(_T("")) , m_sProjName(_T("")) , m_sSubProjName(_T("")) , m_sProfName(_T("")) , m_sTitles(_T("")) , m_sDesigner(_T("")) , m_sPath(_T("")) { m_pMySQLDb = NULL; m_sPath = _T("D:\\"); } CXZWJDlg::~CXZWJDlg() { if (m_pMySQLDb != NULL) delete m_pMySQLDb; } void CXZWJDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO1, m_wndProCombox); DDX_Control(pDX, IDC_COMBO2, m_wndSubProCombox); DDX_Control(pDX, IDC_COMBO3, m_wndProNameCombox); DDX_Text(pDX, IDC_EDIT1, m_sKeyword); DDX_CBString(pDX, IDC_COMBO1, m_sProjName); DDX_CBString(pDX, IDC_COMBO2, m_sSubProjName); DDX_CBString(pDX, IDC_COMBO3, m_sProfName); DDX_Control(pDX, IDC_LIST2, m_wndDwgFileList); DDX_Text(pDX, IDC_EDIT2, m_sTitles); DDX_Control(pDX, IDC_COMBO4, m_wndDesignerCombo); DDX_CBString(pDX, IDC_COMBO4, m_sDesigner); DDX_Text(pDX, IDC_EDIT3, m_sPath); DDX_Control(pDX, IDC_PROGRESS1, m_wndProgressCtrl); DDX_Control(pDX, IDC_DATETIMEPICKER1, m_wndTimeFrom); DDX_Control(pDX, IDC_DATETIMEPICKER2, m_wndTimeTo); } BEGIN_MESSAGE_MAP(CXZWJDlg, CDialog) ON_BN_CLICKED(IDC_BUTTON1, &CXZWJDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CXZWJDlg::OnBnClickedButton2) ON_BN_CLICKED(IDOK, &CXZWJDlg::OnBnClickedOk) ON_CBN_SELCHANGE(IDC_COMBO1, &CXZWJDlg::OnCbnSelchangeCombo1) ON_BN_CLICKED(IDC_BUTTON4, &CXZWJDlg::OnBnClickedButton4) ON_NOTIFY(NM_CLICK, IDC_LIST2, &CXZWJDlg::OnNMClickList2) ON_BN_CLICKED(IDC_BUTTON5, &CXZWJDlg::OnBnClickedButton5) ON_BN_CLICKED(IDC_BUTTON3, &CXZWJDlg::OnBnClickedButton3) END_MESSAGE_MAP() BOOL CXZWJDlg::OnInitDialog() { CDialog::OnInitDialog(); CBitmap bmp; if (!bmp.LoadBitmap (IDB_BITMAPPRIV)) { AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAPPRIV); ASSERT (FALSE); return FALSE; } BITMAP bmpObj; bmp.GetBitmap (&bmpObj); UINT nFlags = ILC_COLOR24 | ILC_MASK; m_imageList.Create (16, bmpObj.bmHeight, nFlags, 0, 0); m_imageList.Add (&bmp, RGB (255, 0, 0)); m_wndDwgFileList.SetImageList(&m_imageList,LVSIL_SMALL); m_wndDwgFileList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_SINGLEROW | LVS_EX_CHECKBOXES); m_wndDwgFileList.InsertColumn(0,_T("文件名"),LVCFMT_LEFT,160); m_wndDwgFileList.InsertColumn(1,_T("创建时间"),LVCFMT_LEFT,80); m_wndDwgFileList.InsertColumn(2,_T("CAD版本"),LVCFMT_LEFT,80); m_wndDwgFileList.InsertColumn(3,_T("设计人"),LVCFMT_LEFT,80); m_wndDwgFileList.InsertColumn(4,_T("专业"),LVCFMT_LEFT,80); m_wndDwgFileList.InsertColumn(5,_T("项目名称"),LVCFMT_LEFT,120); m_wndDwgFileList.InsertColumn(6,_T("子项目名称"),LVCFMT_LEFT,120); m_wndDwgFileList.InsertColumn(7,_T("ID"),LVCFMT_LEFT,0); m_wndProgressCtrl.ShowWindow(SW_HIDE); CTime tCur = CTime::GetCurrentTime(); CTimeSpan tSpan(30,0,0,0); tCur -= tSpan; m_wndTimeFrom.SetTime(&tCur); tCur = CTime::GetCurrentTime(); m_wndTimeTo.SetTime(&tCur); if ( !InitADOServer() ) { return FALSE; } InitCombox(); UpdateData(FALSE); return TRUE; } BOOL CXZWJDlg::InitADOServer() { m_pMySQLDb = CLJCSDlg::GetSHEarthWormConnect(); return (m_pMySQLDb != NULL) ? TRUE : FALSE; } void CXZWJDlg::InitCombox() { //过去30天 CTime tFr; m_wndTimeFrom.GetTime(tFr); CString sFrom = tFr.Format(_T("%Y/%m/%d")); CTime tTo; m_wndTimeTo.GetTime(tTo); CString sTo = tTo.Format(_T("%Y/%m/%d")); CString sSQL; sSQL.Format(_T("select distinct ProTitle from AEC_ProDrawing where CreateTime between CONVERT(datetime,'%s') and CONVERT(datetime,'%s')"), sFrom,sTo); CStringArray arProTitles; m_pMySQLDb->GetSelData(sSQL,arProTitles); m_wndProCombox.ResetContent(); for (int i = 0;i < arProTitles.GetSize();i++) { m_wndProCombox.AddString(arProTitles.GetAt(i)); } m_wndProCombox.SetCurSel(0); UpdateData(); OnCbnSelchangeCombo1(); } void CXZWJDlg::OnBnClickedButton3() { InitCombox(); } void CXZWJDlg::OnCbnSelchangeCombo1() { UpdateData(); //1 CString sSQL; CString sSQL; sSQL.Format(_T("select distinct subprotitle from AEC_ProDrawing where ProTitle='%s'"),m_sProjName); CStringArray arSubProTitles; m_pMySQLDb->GetSelData(sSQL,arSubProTitles); m_wndSubProCombox.ResetContent(); for (int i = 0;i < arSubProTitles.GetSize();i++) { m_wndSubProCombox.AddString(arSubProTitles.GetAt(i)); } m_wndSubProCombox.SetCurSel(0); //2 sSQL.Format(_T("select distinct proname from Aec_ProDrawing where ProTitle='%s'"),m_sProjName); arSubProTitles.RemoveAll(); m_pMySQLDb->GetSelData(sSQL,arSubProTitles); m_wndProNameCombox.ResetContent(); for (int i = 0;i < arSubProTitles.GetSize();i++) { m_wndProNameCombox.AddString(arSubProTitles.GetAt(i)); } m_wndProNameCombox.SetCurSel(0); //3 sSQL.Format(_T("select distinct designer from Aec_ProDrawing where ProTitle='%s'"),m_sProjName); arSubProTitles.RemoveAll(); m_pMySQLDb->GetSelData(sSQL,arSubProTitles); m_wndDesignerCombo.ResetContent(); for (int i = 0;i < arSubProTitles.GetSize();i++) { m_wndDesignerCombo.AddString(arSubProTitles.GetAt(i)); } m_wndDesignerCombo.SetCurSel(0); } //项目信息查询文件 void CXZWJDlg::OnBnClickedButton4() { UpdateData(); CString sSQL; sSQL.Format(_T("select FileName,acadver,CreateTime,Designer,ProName,ProTitle,SubProTitle,GUID from Aec_ProDrawing \ where ProTitle='%s' and subprotitle='%s' and Designer='%s' and ProName='%s' order by CreateTime"), m_sProjName,m_sSubProjName,m_sDesigner,m_sProfName); CUIIValueTable vTable; m_pMySQLDb->GetSelData(sSQL,vTable); m_wndDwgFileList.DeleteAllItems(); CStringArray arVals; for (int i = 0;i < vTable.GetTableLogicSize();i++) { arVals.RemoveAll(); vTable.GetValueRecord(i,arVals); if(arVals.GetSize() >= 8) { int nItem = m_wndDwgFileList.GetItemCount(); nItem = m_wndDwgFileList.InsertItem(nItem,arVals.GetAt(0),8); m_wndDwgFileList.SetItemText(nItem,1,arVals.GetAt(1)); m_wndDwgFileList.SetItemText(nItem,2,arVals.GetAt(2)); m_wndDwgFileList.SetItemText(nItem,3,arVals.GetAt(3)); m_wndDwgFileList.SetItemText(nItem,4,arVals.GetAt(4)); m_wndDwgFileList.SetItemText(nItem,5,arVals.GetAt(5)); m_wndDwgFileList.SetItemText(nItem,6,arVals.GetAt(6)); m_wndDwgFileList.SetItemText(nItem,7,arVals.GetAt(7)); } } } //关键字信息查询文件 void CXZWJDlg::OnBnClickedButton2() { UpdateData(); CString sSQL; sSQL.Format(_T("select FileName,CreateTime,acadver,Designer,ProName,ProTitle,SubProTitle,GUID from Aec_ProDrawing \ where keywords='%s' order by CreateTime"),m_sKeyword); CUIIValueTable vTable; m_pMySQLDb->GetSelData(sSQL,vTable); m_wndDwgFileList.DeleteAllItems(); CStringArray arVals; for (int i = 0;i < vTable.GetTableLogicSize();i++) { arVals.RemoveAll(); vTable.GetValueRecord(i,arVals); if(arVals.GetSize() >= 8) { int nItem = m_wndDwgFileList.GetItemCount(); nItem = m_wndDwgFileList.InsertItem(nItem,arVals.GetAt(0),0); m_wndDwgFileList.SetItemText(nItem,1,arVals.GetAt(1)); m_wndDwgFileList.SetItemText(nItem,2,arVals.GetAt(2)); m_wndDwgFileList.SetItemText(nItem,3,arVals.GetAt(3)); m_wndDwgFileList.SetItemText(nItem,4,arVals.GetAt(4)); m_wndDwgFileList.SetItemText(nItem,5,arVals.GetAt(5)); m_wndDwgFileList.SetItemText(nItem,6,arVals.GetAt(6)); m_wndDwgFileList.SetItemText(nItem,7,arVals.GetAt(7)); } } } void CXZWJDlg::OnNMClickList2(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); if (pNMItemActivate != NULL) { if ( pNMItemActivate->iItem != -1) { int nSel = pNMItemActivate->iItem; CString sGUID; sGUID = m_wndDwgFileList.GetItemText(nSel,7); UpdateData(); CString sSQL; sSQL.Format(_T("select Titles from Aec_ProDrawing where GUID='%s'"),sGUID); m_pMySQLDb->GetSelData(sSQL,m_sTitles); UpdateData(FALSE); } } *pResult = 0; } BOOL CXZWJDlg::BrowseForFolder(HWND hWnd,CString& sFolder,LPCTSTR lpszTitle,UINT nFlags) const { CString strResult = _T(""); LPMALLOC lpMalloc; if (::SHGetMalloc(&lpMalloc) != NOERROR) { return FALSE; } TCHAR szBuffer[_MAX_PATH]; BROWSEINFO browseInfo; TCHAR szDisplayName[_MAX_PATH]; browseInfo.hwndOwner = hWnd; browseInfo.pidlRoot = NULL; browseInfo.pszDisplayName = szDisplayName; browseInfo.lpszTitle = _bstr_t(lpszTitle); browseInfo.ulFlags = nFlags; browseInfo.lpfn = NULL; browseInfo.lParam = 0; LPITEMIDLIST lpItemIDList; if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo)) != NULL) { if (::SHGetPathFromIDList(lpItemIDList, szBuffer)) { if (szBuffer[0] == _T('\0')) { AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP | MB_OK); sFolder = strResult; return FALSE; } sFolder = szBuffer; return TRUE; } else { AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP|MB_OK); sFolder = strResult; return FALSE; } lpMalloc->Free(lpItemIDList); lpMalloc->Release(); } else { return FALSE; } sFolder = strResult; return TRUE; } //选择路径 void CXZWJDlg::OnBnClickedButton5() { HWND hWnd = acedGetAcadFrame()->m_hWnd; BOOL bSuccess = BrowseForFolder(hWnd,m_sPath,_T("请选择放置文件路径,然后确定."),0); if(!bSuccess) { return; } UpdateData(FALSE); } //预览 void CXZWJDlg::OnBnClickedButton1() { POSITION ps = m_wndDwgFileList.GetFirstSelectedItemPosition(); if (ps != NULL) { int nItem = m_wndDwgFileList.GetNextSelectedItem(ps); CString sGUID; sGUID = m_wndDwgFileList.GetItemText(nItem,7); CString sFileName; sFileName = m_wndDwgFileList.GetItemText(nItem,0); CString sSQL,sFullFile; sFullFile = m_sPath; if (sFullFile.IsEmpty()) { AfxMessageBox(_T("请选择下载路径!")); return; } sFullFile.TrimRight(_T('\\')); sFullFile += _T('\\'); sFullFile += sFileName; sSQL.Format(_T("select Package from Aec_ProDrawing where GUID='%s'"),sGUID); ::DeleteFile(sFullFile); if ( m_pMySQLDb->GetSelBlob(sSQL,sFullFile) > 0) { //UZIP m_sPath.TrimRight(_T('\\')); CString sDwgFile = sFullFile; sDwgFile.MakeLower(); sDwgFile.Replace(_T(".zip"),_T(".dwg")); CStringArray arFilesGet; CoreTools::unZipFile(sFullFile, sDwgFile,arFilesGet); ::DeleteFile(sFullFile); if (arFilesGet.GetSize() > 0) { sDwgFile = arFilesGet.GetAt(0); CWaitCursor wait; CFileFind find; if (find.FindFile(sDwgFile)) { //弹出预览 CWJYLDlg dlg; dlg.m_sDwgFile = sDwgFile; dlg.DoModal(); } else { sSQL.Format(_T("文件%s解压下载失败!"),sDwgFile); AfxMessageBox(sSQL); } } } } } void CXZWJDlg::OnBnClickedOk() { if (m_sPath.IsEmpty()) { AfxMessageBox(_T("请选择下载路径!")); return; } //UZIP m_sPath.TrimRight(_T('\\')); int nChecks = 0; for (int i = 0;i < m_wndDwgFileList.GetItemCount();i++) { if (m_wndDwgFileList.GetCheck(i)) { nChecks += 1; } } if (nChecks == 0) { AfxMessageBox(_T("没有勾选要下载的文件!请勾选要下载的文件!")); return; } m_wndProgressCtrl.ShowWindow(SW_SHOW); m_wndProgressCtrl.SetRange32(0,nChecks); m_wndProgressCtrl.SetStep(1); m_wndProgressCtrl.SetPos(0); int nFiles = 0; CString sGUID,sFileName,sSQL,sFullFile; for (int i = 0;i < m_wndDwgFileList.GetItemCount();i++) { if (m_wndDwgFileList.GetCheck(i)) { sGUID = m_wndDwgFileList.GetItemText(i,7); sFileName = m_wndDwgFileList.GetItemText(i,0); sFullFile = m_sPath; sFullFile.TrimRight(_T('\\')); sFullFile += _T('\\'); sFullFile += sFileName; sSQL.Format(_T("select Package from Aec_ProDrawing where GUID='%s'"),sGUID); if ( m_pMySQLDb->GetSelBlob(sSQL,sFullFile) > 0) { CString sDwgFile = sFullFile; sDwgFile.MakeLower(); sDwgFile.Replace(_T(".zip"),_T(".dwg")); CStringArray arFilesGet; CoreTools::unZipFile(sFullFile, sDwgFile,arFilesGet); ::DeleteFile(sFullFile); nFiles += arFilesGet.GetSize(); } m_wndProgressCtrl.SetStep(1); } } sSQL.Format(_T("下载文件完毕!\n共下载%d个文件到目录%s下!"),nFiles,m_sPath); AfxMessageBox(sSQL); m_wndProgressCtrl.ShowWindow(SW_HIDE); }