ReportView.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. /**************************************************************************************************
  2. 版本所有(C), 2020-2022, 北京普达迪泰
  3. ***************************************************************************************************
  4. 文 件 名: ReportManage.cpp
  5. 功能描述: 历史报告
  6. 版 本 号: 1.00初版
  7. 作 者: HYF
  8. 生成日期; 2021-12-20
  9. 最近修改:
  10. 函数列表:
  11. 修改历史:
  12. 1.日 期 :2021-12-20
  13. 作 者 : HYF
  14. 修改内容 : 创建文件
  15. **************************************************************************************************/
  16. // ReportManage.cpp: 实现文件
  17. //
  18. #include "pch.h"
  19. #include "Dms.h"
  20. #include "ReportView.h"
  21. #include "TaskManager.h"
  22. #include "CppSQLite3.h"
  23. #include "afxdialogex.h"
  24. #include "resource.h"
  25. #include "DmsDoc.h"
  26. #include "StaticReport.h"
  27. #include "DynamicReport.h"
  28. // ReportView 对话框
  29. IMPLEMENT_DYNAMIC(ReportView, CDialogEx)
  30. ReportView::ReportView(CWnd* pParent /*=nullptr*/)
  31. : CDialogEx(IDD_DLG_REPORT_VIEW, pParent)
  32. {
  33. }
  34. ReportView::~ReportView()
  35. {
  36. }
  37. void ReportView::DoDataExchange(CDataExchange* pDX)
  38. {
  39. CDialogEx::DoDataExchange(pDX);
  40. DDX_Control(pDX, IDC_STATIC_REPORT_TITLE, m_Static_ReportTitle);
  41. DDX_Control(pDX, IDC_LIST_TASK_DATA, m_ListCtrl_TaskData);
  42. }
  43. BEGIN_MESSAGE_MAP(ReportView, CDialogEx)
  44. ON_NOTIFY(NM_DBLCLK, IDC_LIST_TASK_DATA, &ReportView::OnDblclkListTaskData)
  45. END_MESSAGE_MAP()
  46. // 获取文档对象
  47. CDmsDoc *ReportView::GetDocument()
  48. {
  49. CFrameWnd *pFrm = (CFrameWnd *)(AfxGetApp()->m_pMainWnd);
  50. ASSERT(pFrm);
  51. CView *pView = pFrm->GetActiveView();
  52. CDmsDoc *pDoc = (CDmsDoc *)(pView->GetDocument());
  53. ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CDmsDoc)));
  54. return pDoc;
  55. }
  56. /**************************************************************************************************
  57. 函 数 名 :OnInitDialog
  58. 功能描述 :初始化UI显示
  59. 输入参数 :无
  60. 输出参数 :无
  61. 返 回 值 :void
  62. **************************************************************************************************/
  63. BOOL ReportView::OnInitDialog()
  64. {
  65. CDialogEx::OnInitDialog();
  66. //创建图标
  67. HICON icon;
  68. //加载图标
  69. icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  70. SetIcon(icon, true);
  71. SetIcon(icon, false);
  72. m_Static_ReportTitle.SetFontSize(16);
  73. m_Static_ReportTitle.SetFontBold(TRUE);
  74. InitTaskRecordList();
  75. return TRUE;
  76. }
  77. /**************************************************************************************************
  78. 函 数 名 :InitTaskRecordList
  79. 功能描述 :初始化任务记录显示
  80. 输入参数 :无
  81. 输出参数 :无
  82. 返 回 值 :void
  83. **************************************************************************************************/
  84. void ReportView::InitTaskRecordList()
  85. {
  86. int iCount;
  87. CHeaderCtrl *pHeadCtrl = m_ListCtrl_TaskData.GetHeaderCtrl();
  88. if (pHeadCtrl != NULL)
  89. {
  90. iCount = pHeadCtrl->GetItemCount();
  91. for (int i = 0; i < iCount; i++)
  92. {
  93. m_ListCtrl_TaskData.DeleteColumn(0);
  94. }
  95. m_ListCtrl_TaskData.DeleteAllItems();
  96. }
  97. m_ListCtrl_TaskData.SetExtendedStyle(m_ListCtrl_TaskData.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
  98. m_ListCtrl_TaskData.InsertColumn(0, _T("任务ID"), LVCFMT_CENTER, 60);
  99. LVCOLUMN lvc;
  100. lvc.mask = LVCF_FMT;
  101. m_ListCtrl_TaskData.GetColumn(0, &lvc);
  102. lvc.fmt &= ~LVCFMT_JUSTIFYMASK;
  103. lvc.fmt |= LVCFMT_CENTER;
  104. m_ListCtrl_TaskData.SetColumn(0, &lvc);
  105. m_ListCtrl_TaskData.InsertColumn(1, _T("任务名称"), LVCFMT_LEFT, 200);
  106. m_ListCtrl_TaskData.InsertColumn(2, _T("执行时间"), LVCFMT_CENTER, 150);
  107. m_ListCtrl_TaskData.InsertColumn(3, _T("类别"), LVCFMT_CENTER, 80);
  108. m_ListCtrl_TaskData.InsertColumn(4, _T("设备型号"), LVCFMT_CENTER, 100);
  109. m_ListCtrl_TaskData.InsertColumn(5, _T("设备编号"), LVCFMT_CENTER, 100);
  110. m_ListCtrl_TaskData.InsertColumn(6, _T("说明"), LVCFMT_LEFT, 220);
  111. CDmsDoc *pDoc = this->GetDocument();
  112. TaskManager *pManager = pDoc->GetTaskManager();
  113. int i = 1;
  114. CString szTaskId;
  115. CString szTaskTime;
  116. CString szEquipTypeCode;
  117. CString szTaskType1 = "静态测量";
  118. CString szTaskType2 = "动态测量";
  119. CString szEquipCode;
  120. CString szTaskTitle;
  121. CString szTaskDesc;
  122. CppSQLite3Query q = pManager->Query();
  123. while (!q.eof()) {
  124. DWORD taskId = q.getIntField("task_id");
  125. szTaskId.Format("%d", taskId);
  126. int nItem = m_ListCtrl_TaskData.InsertItem(i, (LPCTSTR)szTaskId);
  127. szTaskTitle = q.getStringField("task_title");
  128. m_ListCtrl_TaskData.SetItemText(nItem, 1, (LPCTSTR)szTaskTitle);
  129. szTaskTime = q.getStringField("task_time");
  130. m_ListCtrl_TaskData.SetItemText(nItem, 2, (LPCTSTR)szTaskTime);
  131. DWORD dwTaskType = q.getIntField("task_type");
  132. if (dwTaskType == 0)
  133. m_ListCtrl_TaskData.SetItemText(nItem, 3, szTaskType1);
  134. else
  135. m_ListCtrl_TaskData.SetItemText(nItem, 3, szTaskType2);
  136. szEquipTypeCode = q.getStringField("equip_type_code");
  137. m_ListCtrl_TaskData.SetItemText(nItem, 4, (LPCTSTR)szEquipTypeCode);
  138. szEquipCode = q.getStringField("equip_code");
  139. m_ListCtrl_TaskData.SetItemText(nItem, 5, (LPCTSTR)szEquipCode);
  140. szTaskDesc = q.getStringField("task_desc");
  141. m_ListCtrl_TaskData.SetItemText(nItem, 6, (LPCTSTR)szTaskDesc);
  142. i++;
  143. q.nextRow();
  144. }
  145. q.finalize();
  146. }
  147. /**************************************************************************************************
  148. 函 数 名 :OnDblclkListTaskData
  149. 功能描述 :事件处理-双击任务记录
  150. 输入参数 :无
  151. 输出参数 :无
  152. 返 回 值 :void
  153. **************************************************************************************************/
  154. void ReportView::OnDblclkListTaskData(NMHDR *pNMHDR, LRESULT *pResult)
  155. {
  156. LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
  157. int nItem = pNMItemActivate->iItem;
  158. if (nItem >= 0 && nItem < m_ListCtrl_TaskData.GetItemCount())
  159. {
  160. CString szTaskId = m_ListCtrl_TaskData.GetItemText(nItem, 0);
  161. CString szTaskType = m_ListCtrl_TaskData.GetItemText(nItem, 3);
  162. DWORD taskId = _tstoi(szTaskId);
  163. if (szTaskType.Compare("静态测量") == 0)
  164. {
  165. StaticReport dlg1(this, taskId);
  166. dlg1.DoModal();
  167. }
  168. else
  169. {
  170. DynamicReport dlg2(this, taskId);
  171. dlg2.DoModal();
  172. }
  173. }
  174. *pResult = 0;
  175. }