496 lines
12 KiB
C++
496 lines
12 KiB
C++
#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<LPNMITEMACTIVATE>(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);
|
|
}
|