EquipTypeView.cpp 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. /**************************************************************************************************
  2. 版本所有(C), 2020-2022, 北京普达迪泰
  3. ***************************************************************************************************
  4. 文 件 名: EquipmentManage.cpp
  5. 功能描述: 设备管理
  6. 版 本 号: 1.00初版
  7. 作 者: HYF
  8. 生成日期; 2021-12-20
  9. 最近修改:
  10. 函数列表:
  11. 修改历史:
  12. 1.日 期 :2021-12-20
  13. 作 者 : HYF
  14. 修改内容 : 创建文件
  15. **************************************************************************************************/
  16. // EquipmentManage.cpp: 实现文件
  17. //
  18. #include "pch.h"
  19. #include "Dms.h"
  20. #include "EquipTypeView.h"
  21. #include "EquipTypeManager.h"
  22. #include "EquipTypePlaceManager.h"
  23. #include "afxdialogex.h"
  24. #include "resource.h"
  25. #include "DmsDoc.h"
  26. #include "EquipTypeDlg.h"
  27. #include "CppSQLite3.h"
  28. #include "Excel.h"
  29. #include "resource.h"
  30. #include "EquipType.h"
  31. // EquipTypeView 对话框
  32. IMPLEMENT_DYNAMIC(EquipTypeView, CDialogEx)
  33. EquipTypeView::EquipTypeView(CWnd* pParent /*=nullptr*/)
  34. : CDialogEx(IDD_DLG_EQUITYPE_VIEW, pParent)
  35. {
  36. }
  37. EquipTypeView::~EquipTypeView()
  38. {
  39. }
  40. void EquipTypeView::DoDataExchange(CDataExchange* pDX)
  41. {
  42. CDialogEx::DoDataExchange(pDX);
  43. DDX_Control(pDX, IDC_STATIC_EQUIP_TITLE, m_Static_Title);
  44. DDX_Control(pDX, IDC_LIST_EQUIPTYPE, m_ListCtrl_EquipTypeList);
  45. }
  46. BEGIN_MESSAGE_MAP(EquipTypeView, CDialogEx)
  47. ON_BN_CLICKED(IDC_BTN_ADD, &EquipTypeView::OnBnClickedBtnAdd)
  48. ON_BN_CLICKED(IDC_BTN_EXPORT_EXCEL, &EquipTypeView::OnBnClickedBtnExportExcel)
  49. ON_NOTIFY(NM_DBLCLK, IDC_LIST_EQUIPTYPE, &EquipTypeView::OnNMDblclkListEquipType)
  50. END_MESSAGE_MAP()
  51. // 获取文档对象
  52. CDmsDoc *EquipTypeView::GetDocument()
  53. {
  54. CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
  55. ASSERT(pFrm);
  56. CView *pView = pFrm->GetActiveView();
  57. CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument());
  58. ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc)));
  59. return pDoc;
  60. }
  61. /**************************************************************************************************
  62. 函 数 名 :OnInitDialog
  63. 功能描述 :初始化UI数据
  64. 输入参数 :无
  65. 输出参数 :无
  66. 返 回 值 :void
  67. **************************************************************************************************/
  68. BOOL EquipTypeView::OnInitDialog()
  69. {
  70. CDialogEx::OnInitDialog();
  71. //创建图标
  72. HICON icon;
  73. //加载图标
  74. icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  75. SetIcon(icon, true);
  76. SetIcon(icon, false);
  77. m_Static_Title.SetFontSize(16);
  78. m_Static_Title.SetFontBold(TRUE);
  79. this->InitEquipTypeList();
  80. return TRUE;
  81. }
  82. /**************************************************************************************************
  83. 函 数 名 :InitEquipTypeList
  84. 功能描述 :初始化设备型号下拉选择
  85. 输入参数 :无
  86. 输出参数 :无
  87. 返 回 值 :void
  88. **************************************************************************************************/
  89. void EquipTypeView::InitEquipTypeList()
  90. {
  91. int iCount;
  92. CHeaderCtrl *pHeadCtrl = m_ListCtrl_EquipTypeList.GetHeaderCtrl();
  93. if (pHeadCtrl != NULL)
  94. {
  95. iCount = pHeadCtrl->GetItemCount();
  96. for (int i = 0; i < iCount; i++)
  97. {
  98. m_ListCtrl_EquipTypeList.DeleteColumn(0);
  99. }
  100. m_ListCtrl_EquipTypeList.DeleteAllItems();
  101. }
  102. m_ListCtrl_EquipTypeList.SetExtendedStyle(m_ListCtrl_EquipTypeList.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  103. m_ListCtrl_EquipTypeList.InsertColumn(0, _T("序号"), LVCFMT_CENTER, 40);
  104. LVCOLUMN lvc;
  105. lvc.mask = LVCF_FMT;
  106. m_ListCtrl_EquipTypeList.GetColumn(0, &lvc);
  107. lvc.fmt &= ~LVCFMT_JUSTIFYMASK;
  108. lvc.fmt |= LVCFMT_CENTER;
  109. m_ListCtrl_EquipTypeList.SetColumn(0, &lvc);
  110. m_ListCtrl_EquipTypeList.InsertColumn(1, _T("设备类别"), LVCFMT_CENTER, 200);
  111. m_ListCtrl_EquipTypeList.InsertColumn(2, _T("设备型号"), LVCFMT_CENTER, 100);
  112. m_ListCtrl_EquipTypeList.InsertColumn(3, _T("简要说明"), LVCFMT_LEFT, 318);
  113. CDmsDoc *pDoc = this->GetDocument();
  114. EquipTypeManager *pManager = pDoc->GetEquipTypeManager();
  115. int i = 1;
  116. CString szNo;
  117. CString szCode;
  118. CString szTitle;
  119. CString szDesc;
  120. CppSQLite3Query q = pManager->Query();
  121. while (!q.eof()) {
  122. szNo.Format("%d", i);
  123. int nItem = m_ListCtrl_EquipTypeList.InsertItem(i, (LPCTSTR)szNo);
  124. szTitle = q.getStringField("equip_type_title");
  125. m_ListCtrl_EquipTypeList.SetItemText(nItem, 1, (LPCTSTR)szTitle);
  126. szCode = q.getStringField("equip_type_code");
  127. m_ListCtrl_EquipTypeList.SetItemText(nItem, 2, (LPCTSTR)szCode);
  128. szDesc = q.getStringField("equip_type_desc");
  129. m_ListCtrl_EquipTypeList.SetItemText(nItem, 3, (LPCTSTR)szDesc);
  130. i++;
  131. q.nextRow();
  132. }
  133. q.finalize();
  134. }
  135. /**************************************************************************************************
  136. 函 数 名 :OnBnClickedBtnAdd
  137. 功能描述 :事件处理-新增
  138. 输入参数 :无
  139. 输出参数 :无
  140. 返 回 值 :void
  141. **************************************************************************************************/
  142. void EquipTypeView::OnBnClickedBtnAdd()
  143. {
  144. EquipTypeDlg dlg(this);
  145. if (dlg.DoModal() == IDOK) {
  146. CDmsDoc *pDoc = this->GetDocument();
  147. EquipTypeManager *pManager = pDoc->GetEquipTypeManager();
  148. EquipType equipType ;
  149. equipType.SetEquipTypeCode(dlg.m_szEquipTypeCode);
  150. equipType.SetEquipTypeTitle(dlg.m_szEquipTypeTitle);
  151. equipType.SetEquipTypeDesc(dlg.m_szEquipTypeDesc);
  152. BOOL bRet = pManager->Add(equipType);
  153. if (bRet) {
  154. this->InitEquipTypeList();
  155. pDoc->UpdateAllViews(NULL);
  156. }
  157. }
  158. }
  159. /**************************************************************************************************
  160. 函 数 名 :OnBnClickedBtnExportExcel
  161. 功能描述 :导出PDF
  162. 输入参数 :无
  163. 输出参数 :无
  164. 返 回 值 :void
  165. **************************************************************************************************/
  166. void EquipTypeView::OnBnClickedBtnExportExcel()
  167. {
  168. BOOL isOpen = FALSE;
  169. CFileDialog dlg(isOpen, 0, 0, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Excel Files(*.xlsx)|*.xlsx");
  170. if (IDOK != dlg.DoModal())
  171. {
  172. return;
  173. }
  174. CString szFilePath = dlg.GetPathName();
  175. CExport2Excel excelApp;
  176. bool bRet = excelApp.CreateExcel(szFilePath);
  177. if (!bRet) {
  178. MessageBox(_T("本机的Excel未安装或安装不完整,请重新安装Office Excel"));
  179. return;
  180. }
  181. excelApp.CreateSheet(_T("设备型号"));
  182. excelApp.SetFont(1, _T("宋体"), 14, true);
  183. excelApp.SetColWidth(1, 5);
  184. excelApp.SetColWidth(2, 25);
  185. excelApp.SetColWidth(3, 35);
  186. excelApp.SetColWidth(4, 50);
  187. excelApp.WriteData(1, 1, _T("序号"));
  188. excelApp.SetHorizontalAlignment(1, 1, xlCenter);
  189. excelApp.WriteData(1, 2, _T("型号"));
  190. excelApp.SetHorizontalAlignment(1, 2, xlCenter);
  191. excelApp.WriteData(1, 3, _T("名称"));
  192. excelApp.SetHorizontalAlignment(1, 3, xlLeft);
  193. excelApp.WriteData(1, 4, _T("说明"));
  194. excelApp.SetHorizontalAlignment(1, 4, xlLeft);
  195. CDmsDoc *pDoc = this->GetDocument();
  196. EquipTypeManager *pManager = pDoc->GetEquipTypeManager();
  197. int i = 2;
  198. CString szNo;
  199. CString szCode;
  200. CString szTitle;
  201. CString szDesc;
  202. CppSQLite3Query q = pManager->Query();
  203. while (!q.eof()) {
  204. szNo.Format("%d", i-1);
  205. excelApp.WriteData(i, 1,(LPCTSTR)szNo);
  206. excelApp.SetHorizontalAlignment(i, 1, xlCenter);
  207. szCode = q.getStringField("equip_type_code");
  208. excelApp.WriteData(i, 2, (LPCTSTR)szCode);
  209. excelApp.SetHorizontalAlignment(i, 2, xlCenter);
  210. szTitle = q.getStringField("equip_type_title");
  211. excelApp.WriteData(i, 3, (LPCSTR)szTitle);
  212. excelApp.SetHorizontalAlignment(i, 3, xlLeft);
  213. szDesc = q.getStringField("equip_type_desc");
  214. excelApp.WriteData(i, 4, (LPCTSTR)szDesc);
  215. excelApp.SetHorizontalAlignment(i, 4, xlLeft);
  216. i++;
  217. q.nextRow();
  218. }
  219. q.finalize();
  220. excelApp.SetBorders(1, 1, i-1, 4, true, true, true, true, true, true, xlThin, xlThin, xlThin, xlThin, xlThin, xlThin);
  221. excelApp.Save();
  222. excelApp.Close();
  223. CString szMsg;
  224. szMsg.Format("导出文件成功,保存在%s", szFilePath);
  225. MessageBox(szMsg);
  226. return;
  227. }
  228. /**************************************************************************************************
  229. 函 数 名 :OnNMDblclkListEquipment
  230. 功能描述 :事件处理-点击列表行
  231. 输入参数 :无
  232. 输出参数 :无
  233. 返 回 值 :void
  234. **************************************************************************************************/
  235. void EquipTypeView::OnNMDblclkListEquipType(NMHDR *pNMHDR, LRESULT *pResult)
  236. {
  237. LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  238. int nItem = pNMItemActivate->iItem;
  239. if (nItem >= 0 && nItem < m_ListCtrl_EquipTypeList.GetItemCount())
  240. {
  241. CString szTitle = m_ListCtrl_EquipTypeList.GetItemText(nItem, 1);
  242. CString szCode = m_ListCtrl_EquipTypeList.GetItemText(nItem, 2);
  243. CString szDesc = m_ListCtrl_EquipTypeList.GetItemText(nItem, 3);
  244. // 编辑型号
  245. EquipTypeDlg dlg(this, 2, szCode, szTitle, szDesc);
  246. INT_PTR iRet = dlg.DoModal();
  247. if (iRet == IDOK)
  248. {
  249. EquipType equipType ;
  250. equipType.SetEquipTypeCode(dlg.m_szEquipTypeCode);
  251. equipType.SetEquipTypeTitle(dlg.m_szEquipTypeTitle);
  252. equipType.SetEquipTypeDesc(dlg.m_szEquipTypeDesc);
  253. CDmsDoc *pDoc = this->GetDocument();
  254. EquipTypeManager *pManager = pDoc->GetEquipTypeManager();
  255. BOOL bRet = pManager->Update(szCode, equipType);
  256. if (bRet) {
  257. this->InitEquipTypeList();
  258. pDoc->UpdateAllViews(NULL);
  259. }
  260. }
  261. else if (iRet == 101) {
  262. // 删除型号
  263. CDmsDoc *pDoc = this->GetDocument();
  264. EquipTypeManager *pManager = pDoc->GetEquipTypeManager();
  265. EquipTypePlaceManager *pPlaceManager = pDoc->GetEquipTypePlaceManager();
  266. BOOL bRet = pManager->Delete(dlg.m_pkCode);
  267. bRet = pPlaceManager->Delete(dlg.m_pkCode);
  268. if (bRet) {
  269. this->InitEquipTypeList();
  270. pDoc->UpdateAllViews(NULL);
  271. }
  272. }
  273. }
  274. *pResult = 0;
  275. }