// PhotoDelLog.cpp : 实现文件 // #include "stdafx.h" #include "DBServer.h" #include "PhotoDelLog.h" #include "PhotoDelMgr.h" // PhotoDelLog 对话框 IMPLEMENT_DYNAMIC(PhotoDelLog, CDialog) PhotoDelLog::PhotoDelLog(CWnd* pParent /*=NULL*/) : CDialog(PhotoDelLog::IDD, pParent) { m_pBranchArr = NULL; m_pdb = NULL; m_plock = NULL; } PhotoDelLog::~PhotoDelLog() { m_pBranchArr = NULL; m_pdb = NULL; m_plock = NULL; } void PhotoDelLog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_DELLOG_LIST, m_LogList); DDX_Control(pDX, IDC_DelLog_Start_Btn, m_StartT); DDX_Control(pDX, IDC_DelLog_End_Btn, m_EndT); } BEGIN_MESSAGE_MAP(PhotoDelLog, CDialog) ON_BN_CLICKED(IDC_DELLOG_FIND_BTN, &PhotoDelLog::OnBnClickedDellogFindBtn) END_MESSAGE_MAP() BOOL PhotoDelLog::OnInitDialog() { CDialog::OnInitDialog(); #ifndef ENTERPRISE_VERSION m_LogList.InsertColumn( 0, TEXT("主机名"), LVCFMT_LEFT, 100 ); #else m_LogList.InsertColumn( 0, TEXT("店名"), LVCFMT_LEFT, 100 ); #endif m_LogList.InsertColumn( 1, TEXT("域名"), LVCFMT_LEFT, 200 ); m_LogList.InsertColumn( 2, TEXT("订单号"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 3, TEXT("取件"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 4, TEXT("取件时间"), LVCFMT_LEFT, 70 ); m_LogList.InsertColumn( 5, TEXT("原片"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 6, TEXT("初修"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 7, TEXT("精修"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 8, TEXT("设计"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 9, TEXT("原片备份"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 10, TEXT("初修备份"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 11, TEXT("精修备份"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 12, TEXT("设计备份"), LVCFMT_LEFT, 40 ); m_LogList.InsertColumn( 13, TEXT("原片时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 14, TEXT("初修时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 15, TEXT("精修时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 16, TEXT("设计时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 17, TEXT("原片备份时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 18, TEXT("初修备份时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 19, TEXT("精修备份时间"), LVCFMT_LEFT, 90 ); m_LogList.InsertColumn( 20, TEXT("设计备份时间"), LVCFMT_LEFT, 90 ); m_LogList.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_GRIDLINES); CTime currtime = CTime::GetCurrentTime(); m_EndT.SetTime(&currtime); CTimeSpan timespan(30,0,0,0); CTime endtime = currtime - timespan; m_StartT.SetTime(&endtime); return TRUE; } // PhotoDelLog 消息处理程序 //查询 void PhotoDelLog::OnBnClickedDellogFindBtn() { // TODO: 在此添加控件通知处理程序代码 std::vector vData; LoadListData(vData); FillLogList(vData); CleareLog(vData); } /************************************************************************/ /* 函数:LoadListData 描述:加载列表数据 参数: 返回: */ /************************************************************************/ void PhotoDelLog::LoadListData(std::vector& vData) { m_plock->lock(); if(m_pdb == NULL) { m_plock->unlock(); return; } //获取时间条件 CString strTimeFielded = _T(""); if(!GetTimeField(strTimeFielded)) { m_plock->unlock(); return; } //已取件记录 CString sql = _T(""); sql = _T("SELECT [branchid],[order],[takestatus],[taketime],\ [opdel],[epdel],[fpdel],[dpdel],\ [opbdel],[epbdel],[fpbdel],[dpbdel],\ [opdeltm],[epdeltm],[fpdeltm],[dpdeltm],\ [opbdeltm],[epbdeltm],[fpbdeltm],[dpbdeltm] FROM [PhotoManager] \ 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; try { CRecordset myset; myset.m_pDatabase = m_pdb; myset.Open(CRecordset::forwardOnly, sql); int ii = 0; while (!myset.IsEOF()) { LPSPICKUPINFO lp = new SPICKUPINFO; CString strValue = _T(""); myset.GetFieldValue(_T("branchid"), lp->strBranchid); /* 分店id 域名*/ lp->strName = CPhotoDelMgr::GetBranchNameForDomain(m_pBranchArr, lp->strBranchid); /* 分店名 */ myset.GetFieldValue(_T("order"), lp->strOrder); /* 主键订单号(唯一) */ myset.GetFieldValue(_T("takestatus"), strValue); /* 取件状态:0未取,1已取 */ lp->bTakestatus = _ttoi(strValue); myset.GetFieldValue(_T("taketime"), lp->strTaketime); /* 整个订单的取件时间 */ myset.GetFieldValue(_T("opdel"), strValue); /* 原片删除状态 */ lp->bOpdel = _ttoi(strValue); myset.GetFieldValue(_T("epdel"), strValue); /* 初修删除状态 */ lp->bEpdel = _ttoi(strValue); myset.GetFieldValue(_T("fpdel"), strValue); /* 精修删除状态 */ lp->bFpdel = _ttoi(strValue); myset.GetFieldValue(_T("dpdel"), strValue); /* 设计删除状态 */ lp->bDpdel = _ttoi(strValue); myset.GetFieldValue(_T("opbdel"), strValue); /* 原片备份删除状态 */ lp->bOpbdel = _ttoi(strValue); myset.GetFieldValue(_T("epbdel"), strValue); /* 初修备份删除状态 */ lp->bEpbdel = _ttoi(strValue); myset.GetFieldValue(_T("fpbdel"), strValue); /* 精修备份删除状态 */ lp->bFpbdel = _ttoi(strValue); myset.GetFieldValue(_T("dpbdel"), strValue); /* 设计备份删除状态 */ lp->bDpbdel = _ttoi(strValue); myset.GetFieldValue(_T("opdeltm"), lp->strOpdeltm); /* 原片删除时间 */ myset.GetFieldValue(_T("epdeltm"), lp->strEpdeltm); /* 初修删除时间 */ myset.GetFieldValue(_T("fpdeltm"), lp->strFpdeltm); /* 精修删除时间 */ myset.GetFieldValue(_T("dpdeltm"), lp->strDpdeltm); /* 设计删除时间 */ myset.GetFieldValue(_T("opbdeltm"), lp->strOpbdeltm); /* 原片备份删除时间 */ myset.GetFieldValue(_T("epbdeltm"), lp->strEpbdeltm); /* 初修备份删除时间 */ myset.GetFieldValue(_T("fpbdeltm"), lp->strFpbdeltm); /* 精修备份删除时间 */ myset.GetFieldValue(_T("dpbdeltm"), lp->strDpbdeltm); /* 设计备份删除时间 */ //是否已取件 if(!lp->bTakestatus) { delete lp; continue; } vData.push_back(lp); myset.MoveNext(); } } catch (CException* e) { m_plock->unlock(); CleareLog(vData); TCHAR szError[1024] = { 0 }; e->GetErrorMessage(szError, 1024); WriteLogin(CString(szError)); e->Delete(); } m_plock->unlock(); } /************************************************************************/ /* 函数:FillLogList 描述:填充记录列表 参数: 返回: */ /************************************************************************/ void PhotoDelLog::FillLogList(std::vector& vData) { if(vData.size() == 0) return; m_LogList.DeleteAllItems(); std::vector::iterator it = vData.begin(); for(;it != vData.end();) { LPSPICKUPINFO lp = (*it); if(lp != NULL) { CString str = _T(""); int nRow = m_LogList.InsertItem(LVIF_TEXT|LVIF_PARAM, 0, lp->strName,0,0,2,0); m_LogList.SetItemText(nRow, 1, lp->strBranchid); m_LogList.SetItemText(nRow, 2, lp->strOrder); m_LogList.SetItemText(nRow, 3, (lp->bTakestatus == TRUE)?_T("已取"):_T("未取")); m_LogList.SetItemText(nRow, 4, lp->strTaketime); m_LogList.SetItemText(nRow, 5, (lp->bOpdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 6, (lp->bEpdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 7, (lp->bFpdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 8, (lp->bDpdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 9, (lp->bOpbdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 10, (lp->bEpbdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 11, (lp->bFpbdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 12, (lp->bDpbdel == TRUE)?_T("已删"):_T("未删")); m_LogList.SetItemText(nRow, 13, lp->strOpdeltm); m_LogList.SetItemText(nRow, 14, lp->strEpdeltm); m_LogList.SetItemText(nRow, 15, lp->strFpdeltm); m_LogList.SetItemText(nRow, 16, lp->strDpdeltm); m_LogList.SetItemText(nRow, 17, lp->strOpbdeltm); m_LogList.SetItemText(nRow, 18, lp->strEpbdeltm); m_LogList.SetItemText(nRow, 19, lp->strFpbdeltm); m_LogList.SetItemText(nRow, 20, lp->strDpbdeltm); } ++it; } } /************************************************************************/ /* 函数:GetTimeField 描述:获取日期限制条件 参数: OUT CString& strField 输出条件 返回: */ /************************************************************************/ int PhotoDelLog::GetTimeField(OUT CString& strField) { CTime startTime, endTime, currTime; CString strStart(_T("")), strEnd(_T("")); m_StartT.GetTime(startTime); strStart = startTime.Format(_T("%Y-%m-%d")); m_EndT.GetTime(endTime); strEnd = endTime.Format(_T("%Y-%m-%d")); currTime = CTime::GetCurrentTime(); if(startTime > currTime || endTime > currTime) { MessageBox(_T("设置的日期不能比当前大")); return 0; } if(startTime > endTime) { MessageBox(_T("起始日期不能比结束日期")); return 0; } strField = _T("taketime>='") + strStart + _T("' and taketime<='") + strEnd + _T("'"); return 1; } /************************************************************************/ /* 函数:CleareLog 描述:清除 参数: N std::vector& vLog 清除已取件集 返回: */ /************************************************************************/ void PhotoDelLog::CleareLog(IN std::vector& vLog) { std::vector::iterator iter = vLog.begin(); for(;iter != vLog.end();) { if((*iter) != NULL) delete (*iter); ++iter; } vLog.clear(); }