PhotoDelLog.cpp 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. // PhotoDelLog.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "DBServer.h"
  5. #include "PhotoDelLog.h"
  6. #include "PhotoDelMgr.h"
  7. // PhotoDelLog 对话框
  8. IMPLEMENT_DYNAMIC(PhotoDelLog, CDialog)
  9. PhotoDelLog::PhotoDelLog(CWnd* pParent /*=NULL*/)
  10. : CDialog(PhotoDelLog::IDD, pParent)
  11. {
  12. m_pBranchArr = NULL;
  13. m_pdb = NULL;
  14. m_plock = NULL;
  15. }
  16. PhotoDelLog::~PhotoDelLog()
  17. {
  18. m_pBranchArr = NULL;
  19. m_pdb = NULL;
  20. m_plock = NULL;
  21. }
  22. void PhotoDelLog::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CDialog::DoDataExchange(pDX);
  25. DDX_Control(pDX, IDC_DELLOG_LIST, m_LogList);
  26. DDX_Control(pDX, IDC_DelLog_Start_Btn, m_StartT);
  27. DDX_Control(pDX, IDC_DelLog_End_Btn, m_EndT);
  28. }
  29. BEGIN_MESSAGE_MAP(PhotoDelLog, CDialog)
  30. ON_BN_CLICKED(IDC_DELLOG_FIND_BTN, &PhotoDelLog::OnBnClickedDellogFindBtn)
  31. END_MESSAGE_MAP()
  32. BOOL PhotoDelLog::OnInitDialog()
  33. {
  34. CDialog::OnInitDialog();
  35. #ifndef ENTERPRISE_VERSION
  36. m_LogList.InsertColumn( 0, TEXT("主机名"), LVCFMT_LEFT, 100 );
  37. #else
  38. m_LogList.InsertColumn( 0, TEXT("店名"), LVCFMT_LEFT, 100 );
  39. #endif
  40. m_LogList.InsertColumn( 1, TEXT("域名"), LVCFMT_LEFT, 200 );
  41. m_LogList.InsertColumn( 2, TEXT("订单号"), LVCFMT_LEFT, 90 );
  42. m_LogList.InsertColumn( 3, TEXT("取件"), LVCFMT_LEFT, 40 );
  43. m_LogList.InsertColumn( 4, TEXT("取件时间"), LVCFMT_LEFT, 70 );
  44. m_LogList.InsertColumn( 5, TEXT("原片"), LVCFMT_LEFT, 40 );
  45. m_LogList.InsertColumn( 6, TEXT("初修"), LVCFMT_LEFT, 40 );
  46. m_LogList.InsertColumn( 7, TEXT("精修"), LVCFMT_LEFT, 40 );
  47. m_LogList.InsertColumn( 8, TEXT("设计"), LVCFMT_LEFT, 40 );
  48. m_LogList.InsertColumn( 9, TEXT("原片备份"), LVCFMT_LEFT, 40 );
  49. m_LogList.InsertColumn( 10, TEXT("初修备份"), LVCFMT_LEFT, 40 );
  50. m_LogList.InsertColumn( 11, TEXT("精修备份"), LVCFMT_LEFT, 40 );
  51. m_LogList.InsertColumn( 12, TEXT("设计备份"), LVCFMT_LEFT, 40 );
  52. m_LogList.InsertColumn( 13, TEXT("原片时间"), LVCFMT_LEFT, 90 );
  53. m_LogList.InsertColumn( 14, TEXT("初修时间"), LVCFMT_LEFT, 90 );
  54. m_LogList.InsertColumn( 15, TEXT("精修时间"), LVCFMT_LEFT, 90 );
  55. m_LogList.InsertColumn( 16, TEXT("设计时间"), LVCFMT_LEFT, 90 );
  56. m_LogList.InsertColumn( 17, TEXT("原片备份时间"), LVCFMT_LEFT, 90 );
  57. m_LogList.InsertColumn( 18, TEXT("初修备份时间"), LVCFMT_LEFT, 90 );
  58. m_LogList.InsertColumn( 19, TEXT("精修备份时间"), LVCFMT_LEFT, 90 );
  59. m_LogList.InsertColumn( 20, TEXT("设计备份时间"), LVCFMT_LEFT, 90 );
  60. m_LogList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES);
  61. CTime currtime = CTime::GetCurrentTime();
  62. m_EndT.SetTime(&currtime);
  63. CTimeSpan timespan(30,0,0,0);
  64. CTime endtime = currtime - timespan;
  65. m_StartT.SetTime(&endtime);
  66. return TRUE;
  67. }
  68. // PhotoDelLog 消息处理程序
  69. //查询
  70. void PhotoDelLog::OnBnClickedDellogFindBtn()
  71. {
  72. // TODO: 在此添加控件通知处理程序代码
  73. std::vector<LPSPICKUPINFO> vData;
  74. LoadListData(vData);
  75. FillLogList(vData);
  76. CleareLog(vData);
  77. }
  78. /************************************************************************/
  79. /*
  80. 函数:LoadListData
  81. 描述:加载列表数据
  82. 参数:
  83. 返回:
  84. */
  85. /************************************************************************/
  86. void PhotoDelLog::LoadListData(std::vector<LPSPICKUPINFO>& vData)
  87. {
  88. m_plock->lock();
  89. if(m_pdb == NULL)
  90. {
  91. m_plock->unlock();
  92. return;
  93. }
  94. //获取时间条件
  95. CString strTimeFielded = _T("");
  96. if(!GetTimeField(strTimeFielded))
  97. {
  98. m_plock->unlock();
  99. return;
  100. }
  101. //已取件记录
  102. CString sql = _T("");
  103. sql = _T("SELECT [branchid],[order],[takestatus],[taketime],\
  104. [opdel],[epdel],[fpdel],[dpdel],\
  105. [opbdel],[epbdel],[fpbdel],[dpbdel],\
  106. [opdeltm],[epdeltm],[fpdeltm],[dpdeltm],\
  107. [opbdeltm],[epbdeltm],[fpbdeltm],[dpbdeltm] FROM [PhotoManager] \
  108. where [takestatus]='True' and ([opdel]=1 or [epdel]=1 or [fpdel]=1 or [dpdel]=1 or [opbdel]=1 or [epbdel]=1 or [fpbdel]=1 or [dpbdel]=1) and ") + strTimeFielded;
  109. try
  110. {
  111. CRecordset myset;
  112. myset.m_pDatabase = m_pdb;
  113. myset.Open(CRecordset::forwardOnly, sql);
  114. int ii = 0;
  115. while (!myset.IsEOF())
  116. {
  117. LPSPICKUPINFO lp = new SPICKUPINFO;
  118. CString strValue = _T("");
  119. myset.GetFieldValue(_T("branchid"), lp->strBranchid); /* 分店id 域名*/
  120. lp->strName = CPhotoDelMgr::GetBranchNameForDomain(m_pBranchArr, lp->strBranchid); /* 分店名 */
  121. myset.GetFieldValue(_T("order"), lp->strOrder); /* 主键订单号(唯一) */
  122. myset.GetFieldValue(_T("takestatus"), strValue); /* 取件状态:0未取,1已取 */
  123. lp->bTakestatus = _ttoi(strValue);
  124. myset.GetFieldValue(_T("taketime"), lp->strTaketime); /* 整个订单的取件时间 */
  125. myset.GetFieldValue(_T("opdel"), strValue); /* 原片删除状态 */
  126. lp->bOpdel = _ttoi(strValue);
  127. myset.GetFieldValue(_T("epdel"), strValue); /* 初修删除状态 */
  128. lp->bEpdel = _ttoi(strValue);
  129. myset.GetFieldValue(_T("fpdel"), strValue); /* 精修删除状态 */
  130. lp->bFpdel = _ttoi(strValue);
  131. myset.GetFieldValue(_T("dpdel"), strValue); /* 设计删除状态 */
  132. lp->bDpdel = _ttoi(strValue);
  133. myset.GetFieldValue(_T("opbdel"), strValue); /* 原片备份删除状态 */
  134. lp->bOpbdel = _ttoi(strValue);
  135. myset.GetFieldValue(_T("epbdel"), strValue); /* 初修备份删除状态 */
  136. lp->bEpbdel = _ttoi(strValue);
  137. myset.GetFieldValue(_T("fpbdel"), strValue); /* 精修备份删除状态 */
  138. lp->bFpbdel = _ttoi(strValue);
  139. myset.GetFieldValue(_T("dpbdel"), strValue); /* 设计备份删除状态 */
  140. lp->bDpbdel = _ttoi(strValue);
  141. myset.GetFieldValue(_T("opdeltm"), lp->strOpdeltm); /* 原片删除时间 */
  142. myset.GetFieldValue(_T("epdeltm"), lp->strEpdeltm); /* 初修删除时间 */
  143. myset.GetFieldValue(_T("fpdeltm"), lp->strFpdeltm); /* 精修删除时间 */
  144. myset.GetFieldValue(_T("dpdeltm"), lp->strDpdeltm); /* 设计删除时间 */
  145. myset.GetFieldValue(_T("opbdeltm"), lp->strOpbdeltm); /* 原片备份删除时间 */
  146. myset.GetFieldValue(_T("epbdeltm"), lp->strEpbdeltm); /* 初修备份删除时间 */
  147. myset.GetFieldValue(_T("fpbdeltm"), lp->strFpbdeltm); /* 精修备份删除时间 */
  148. myset.GetFieldValue(_T("dpbdeltm"), lp->strDpbdeltm); /* 设计备份删除时间 */
  149. //是否已取件
  150. if(!lp->bTakestatus)
  151. {
  152. delete lp;
  153. continue;
  154. }
  155. vData.push_back(lp);
  156. myset.MoveNext();
  157. }
  158. }
  159. catch (CException* e)
  160. {
  161. m_plock->unlock();
  162. CleareLog(vData);
  163. TCHAR szError[1024] = { 0 };
  164. e->GetErrorMessage(szError, 1024);
  165. WriteLogin(CString(szError));
  166. e->Delete();
  167. }
  168. m_plock->unlock();
  169. }
  170. /************************************************************************/
  171. /*
  172. 函数:FillLogList
  173. 描述:填充记录列表
  174. 参数:
  175. 返回:
  176. */
  177. /************************************************************************/
  178. void PhotoDelLog::FillLogList(std::vector<LPSPICKUPINFO>& vData)
  179. {
  180. if(vData.size() == 0)
  181. return;
  182. m_LogList.DeleteAllItems();
  183. std::vector<LPSPICKUPINFO>::iterator it = vData.begin();
  184. for(;it != vData.end();)
  185. {
  186. LPSPICKUPINFO lp = (*it);
  187. if(lp != NULL)
  188. {
  189. CString str = _T("");
  190. int nRow = m_LogList.InsertItem(LVIF_TEXT|LVIF_PARAM, 0, lp->strName,0,0,2,0);
  191. m_LogList.SetItemText(nRow, 1, lp->strBranchid);
  192. m_LogList.SetItemText(nRow, 2, lp->strOrder);
  193. m_LogList.SetItemText(nRow, 3, (lp->bTakestatus == TRUE)?_T("已取"):_T("未取"));
  194. m_LogList.SetItemText(nRow, 4, lp->strTaketime);
  195. m_LogList.SetItemText(nRow, 5, (lp->bOpdel == TRUE)?_T("已删"):_T("未删"));
  196. m_LogList.SetItemText(nRow, 6, (lp->bEpdel == TRUE)?_T("已删"):_T("未删"));
  197. m_LogList.SetItemText(nRow, 7, (lp->bFpdel == TRUE)?_T("已删"):_T("未删"));
  198. m_LogList.SetItemText(nRow, 8, (lp->bDpdel == TRUE)?_T("已删"):_T("未删"));
  199. m_LogList.SetItemText(nRow, 9, (lp->bOpbdel == TRUE)?_T("已删"):_T("未删"));
  200. m_LogList.SetItemText(nRow, 10, (lp->bEpbdel == TRUE)?_T("已删"):_T("未删"));
  201. m_LogList.SetItemText(nRow, 11, (lp->bFpbdel == TRUE)?_T("已删"):_T("未删"));
  202. m_LogList.SetItemText(nRow, 12, (lp->bDpbdel == TRUE)?_T("已删"):_T("未删"));
  203. m_LogList.SetItemText(nRow, 13, lp->strOpdeltm);
  204. m_LogList.SetItemText(nRow, 14, lp->strEpdeltm);
  205. m_LogList.SetItemText(nRow, 15, lp->strFpdeltm);
  206. m_LogList.SetItemText(nRow, 16, lp->strDpdeltm);
  207. m_LogList.SetItemText(nRow, 17, lp->strOpbdeltm);
  208. m_LogList.SetItemText(nRow, 18, lp->strEpbdeltm);
  209. m_LogList.SetItemText(nRow, 19, lp->strFpbdeltm);
  210. m_LogList.SetItemText(nRow, 20, lp->strDpbdeltm);
  211. }
  212. ++it;
  213. }
  214. }
  215. /************************************************************************/
  216. /*
  217. 函数:GetTimeField
  218. 描述:获取日期限制条件
  219. 参数:
  220. OUT CString& strField 输出条件
  221. 返回:
  222. */
  223. /************************************************************************/
  224. int PhotoDelLog::GetTimeField(OUT CString& strField)
  225. {
  226. CTime startTime, endTime, currTime;
  227. CString strStart(_T("")), strEnd(_T(""));
  228. m_StartT.GetTime(startTime);
  229. strStart = startTime.Format(_T("%Y-%m-%d"));
  230. m_EndT.GetTime(endTime);
  231. strEnd = endTime.Format(_T("%Y-%m-%d"));
  232. currTime = CTime::GetCurrentTime();
  233. if(startTime > currTime || endTime > currTime)
  234. {
  235. MessageBox(_T("设置的日期不能比当前大"));
  236. return 0;
  237. }
  238. if(startTime > endTime)
  239. {
  240. MessageBox(_T("起始日期不能比结束日期"));
  241. return 0;
  242. }
  243. strField = _T("taketime>='") + strStart + _T("' and taketime<='") + strEnd + _T("'");
  244. return 1;
  245. }
  246. /************************************************************************/
  247. /*
  248. 函数:CleareLog
  249. 描述:清除
  250. 参数:
  251. N std::vector<LPSPICKUPINFO>& vLog 清除已取件集
  252. 返回:
  253. */
  254. /************************************************************************/
  255. void PhotoDelLog::CleareLog(IN std::vector<LPSPICKUPINFO>& vLog)
  256. {
  257. std::vector<LPSPICKUPINFO>::iterator iter = vLog.begin();
  258. for(;iter != vLog.end();)
  259. {
  260. if((*iter) != NULL)
  261. delete (*iter);
  262. ++iter;
  263. }
  264. vLog.clear();
  265. }