/************************************************************************************************** 版本所有(C), 2020-2022, 北京普达迪泰 *************************************************************************************************** 文 件 名: EquipmentManage.cpp 功能描述: 设备管理 版 本 号: 1.00初版 作 者: HYF 生成日期; 2021-12-20 最近修改: 函数列表: 修改历史: 1.日 期 :2021-12-20 作 者 : HYF 修改内容 : 创建文件 **************************************************************************************************/ // EquipmentManage.cpp: 实现文件 // #include "pch.h" #include "Dms.h" #include "EquipTypeView.h" #include "EquipTypeManager.h" #include "EquipTypePlaceManager.h" #include "afxdialogex.h" #include "resource.h" #include "DmsDoc.h" #include "EquipTypeDlg.h" #include "CppSQLite3.h" #include "Excel.h" #include "resource.h" #include "EquipType.h" // EquipTypeView 对话框 IMPLEMENT_DYNAMIC(EquipTypeView, CDialogEx) EquipTypeView::EquipTypeView(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_EQUITYPE_VIEW, pParent) { } EquipTypeView::~EquipTypeView() { } void EquipTypeView::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_EQUIP_TITLE, m_Static_Title); DDX_Control(pDX, IDC_LIST_EQUIPTYPE, m_ListCtrl_EquipTypeList); } BEGIN_MESSAGE_MAP(EquipTypeView, CDialogEx) ON_BN_CLICKED(IDC_BTN_ADD, &EquipTypeView::OnBnClickedBtnAdd) ON_BN_CLICKED(IDC_BTN_EXPORT_EXCEL, &EquipTypeView::OnBnClickedBtnExportExcel) ON_NOTIFY(NM_DBLCLK, IDC_LIST_EQUIPTYPE, &EquipTypeView::OnNMDblclkListEquipType) END_MESSAGE_MAP() // 获取文档对象 CDmsDoc *EquipTypeView::GetDocument() { CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd); ASSERT(pFrm); CView *pView = pFrm->GetActiveView(); CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument()); ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc))); return pDoc; } /************************************************************************************************** 函 数 名 :OnInitDialog 功能描述 :初始化UI数据 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ BOOL EquipTypeView::OnInitDialog() { CDialogEx::OnInitDialog(); //创建图标 HICON icon; //加载图标 icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); SetIcon(icon, true); SetIcon(icon, false); m_Static_Title.SetFontSize(16); m_Static_Title.SetFontBold(TRUE); this->InitEquipTypeList(); return TRUE; } /************************************************************************************************** 函 数 名 :InitEquipTypeList 功能描述 :初始化设备型号下拉选择 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void EquipTypeView::InitEquipTypeList() { int iCount; CHeaderCtrl *pHeadCtrl = m_ListCtrl_EquipTypeList.GetHeaderCtrl(); if (pHeadCtrl != NULL) { iCount = pHeadCtrl->GetItemCount(); for (int i = 0; i < iCount; i++) { m_ListCtrl_EquipTypeList.DeleteColumn(0); } m_ListCtrl_EquipTypeList.DeleteAllItems(); } m_ListCtrl_EquipTypeList.SetExtendedStyle(m_ListCtrl_EquipTypeList.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); m_ListCtrl_EquipTypeList.InsertColumn(0, _T("序号"), LVCFMT_CENTER, 40); LVCOLUMN lvc; lvc.mask = LVCF_FMT; m_ListCtrl_EquipTypeList.GetColumn(0, &lvc); lvc.fmt &= ~LVCFMT_JUSTIFYMASK; lvc.fmt |= LVCFMT_CENTER; m_ListCtrl_EquipTypeList.SetColumn(0, &lvc); m_ListCtrl_EquipTypeList.InsertColumn(1, _T("设备类别"), LVCFMT_CENTER, 200); m_ListCtrl_EquipTypeList.InsertColumn(2, _T("设备型号"), LVCFMT_CENTER, 100); m_ListCtrl_EquipTypeList.InsertColumn(3, _T("简要说明"), LVCFMT_LEFT, 318); CDmsDoc *pDoc = this->GetDocument(); EquipTypeManager *pManager = pDoc->GetEquipTypeManager(); int i = 1; CString szNo; CString szCode; CString szTitle; CString szDesc; CppSQLite3Query q = pManager->Query(); while (!q.eof()) { szNo.Format("%d", i); int nItem = m_ListCtrl_EquipTypeList.InsertItem(i, (LPCTSTR)szNo); szTitle = q.getStringField("equip_type_title"); m_ListCtrl_EquipTypeList.SetItemText(nItem, 1, (LPCTSTR)szTitle); szCode = q.getStringField("equip_type_code"); m_ListCtrl_EquipTypeList.SetItemText(nItem, 2, (LPCTSTR)szCode); szDesc = q.getStringField("equip_type_desc"); m_ListCtrl_EquipTypeList.SetItemText(nItem, 3, (LPCTSTR)szDesc); i++; q.nextRow(); } q.finalize(); } /************************************************************************************************** 函 数 名 :OnBnClickedBtnAdd 功能描述 :事件处理-新增 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void EquipTypeView::OnBnClickedBtnAdd() { EquipTypeDlg dlg(this); if (dlg.DoModal() == IDOK) { CDmsDoc *pDoc = this->GetDocument(); EquipTypeManager *pManager = pDoc->GetEquipTypeManager(); EquipType equipType ; equipType.SetEquipTypeCode(dlg.m_szEquipTypeCode); equipType.SetEquipTypeTitle(dlg.m_szEquipTypeTitle); equipType.SetEquipTypeDesc(dlg.m_szEquipTypeDesc); BOOL bRet = pManager->Add(equipType); if (bRet) { this->InitEquipTypeList(); pDoc->UpdateAllViews(NULL); } } } /************************************************************************************************** 函 数 名 :OnBnClickedBtnExportExcel 功能描述 :导出PDF 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void EquipTypeView::OnBnClickedBtnExportExcel() { BOOL isOpen = FALSE; CFileDialog dlg(isOpen, 0, 0, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Excel Files(*.xlsx)|*.xlsx"); if (IDOK != dlg.DoModal()) { return; } CString szFilePath = dlg.GetPathName(); CExport2Excel excelApp; bool bRet = excelApp.CreateExcel(szFilePath); if (!bRet) { MessageBox(_T("本机的Excel未安装或安装不完整,请重新安装Office Excel")); return; } excelApp.CreateSheet(_T("设备型号")); excelApp.SetFont(1, _T("宋体"), 14, true); excelApp.SetColWidth(1, 5); excelApp.SetColWidth(2, 25); excelApp.SetColWidth(3, 35); excelApp.SetColWidth(4, 50); excelApp.WriteData(1, 1, _T("序号")); excelApp.SetHorizontalAlignment(1, 1, xlCenter); excelApp.WriteData(1, 2, _T("型号")); excelApp.SetHorizontalAlignment(1, 2, xlCenter); excelApp.WriteData(1, 3, _T("名称")); excelApp.SetHorizontalAlignment(1, 3, xlLeft); excelApp.WriteData(1, 4, _T("说明")); excelApp.SetHorizontalAlignment(1, 4, xlLeft); CDmsDoc *pDoc = this->GetDocument(); EquipTypeManager *pManager = pDoc->GetEquipTypeManager(); int i = 2; CString szNo; CString szCode; CString szTitle; CString szDesc; CppSQLite3Query q = pManager->Query(); while (!q.eof()) { szNo.Format("%d", i-1); excelApp.WriteData(i, 1,(LPCTSTR)szNo); excelApp.SetHorizontalAlignment(i, 1, xlCenter); szCode = q.getStringField("equip_type_code"); excelApp.WriteData(i, 2, (LPCTSTR)szCode); excelApp.SetHorizontalAlignment(i, 2, xlCenter); szTitle = q.getStringField("equip_type_title"); excelApp.WriteData(i, 3, (LPCSTR)szTitle); excelApp.SetHorizontalAlignment(i, 3, xlLeft); szDesc = q.getStringField("equip_type_desc"); excelApp.WriteData(i, 4, (LPCTSTR)szDesc); excelApp.SetHorizontalAlignment(i, 4, xlLeft); i++; q.nextRow(); } q.finalize(); excelApp.SetBorders(1, 1, i-1, 4, true, true, true, true, true, true, xlThin, xlThin, xlThin, xlThin, xlThin, xlThin); excelApp.Save(); excelApp.Close(); CString szMsg; szMsg.Format("导出文件成功,保存在%s", szFilePath); MessageBox(szMsg); return; } /************************************************************************************************** 函 数 名 :OnNMDblclkListEquipment 功能描述 :事件处理-点击列表行 输入参数 :无 输出参数 :无 返 回 值 :void **************************************************************************************************/ void EquipTypeView::OnNMDblclkListEquipType(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); int nItem = pNMItemActivate->iItem; if (nItem >= 0 && nItem < m_ListCtrl_EquipTypeList.GetItemCount()) { CString szTitle = m_ListCtrl_EquipTypeList.GetItemText(nItem, 1); CString szCode = m_ListCtrl_EquipTypeList.GetItemText(nItem, 2); CString szDesc = m_ListCtrl_EquipTypeList.GetItemText(nItem, 3); // 编辑型号 EquipTypeDlg dlg(this, 2, szCode, szTitle, szDesc); INT_PTR iRet = dlg.DoModal(); if (iRet == IDOK) { EquipType equipType ; equipType.SetEquipTypeCode(dlg.m_szEquipTypeCode); equipType.SetEquipTypeTitle(dlg.m_szEquipTypeTitle); equipType.SetEquipTypeDesc(dlg.m_szEquipTypeDesc); CDmsDoc *pDoc = this->GetDocument(); EquipTypeManager *pManager = pDoc->GetEquipTypeManager(); BOOL bRet = pManager->Update(szCode, equipType); if (bRet) { this->InitEquipTypeList(); pDoc->UpdateAllViews(NULL); } } else if (iRet == 101) { // 删除型号 CDmsDoc *pDoc = this->GetDocument(); EquipTypeManager *pManager = pDoc->GetEquipTypeManager(); EquipTypePlaceManager *pPlaceManager = pDoc->GetEquipTypePlaceManager(); BOOL bRet = pManager->Delete(dlg.m_pkCode); bRet = pPlaceManager->Delete(dlg.m_pkCode); if (bRet) { this->InitEquipTypeList(); pDoc->UpdateAllViews(NULL); } } } *pResult = 0; }