Files
envi-code/SourceCode/Code2026/CoreCommand/XZWJDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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