PutOutBinary.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. // PutOutBinary.cpp : 定义应用程序的类行为。
  2. //
  3. #include "stdafx.h"
  4. #include "PutOutBinary.h"
  5. #include "PutOutBinaryDlg.h"
  6. #include "filehelp.h"
  7. // ----stat头文件;
  8. #include <sys/types.h>
  9. #include <sys/stat.h>
  10. // ----stat头文件;
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #endif
  14. // CPutOutBinaryApp
  15. BEGIN_MESSAGE_MAP(CPutOutBinaryApp, CWinApp)
  16. ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
  17. END_MESSAGE_MAP()
  18. // CPutOutBinaryApp 构造
  19. CPutOutBinaryApp::CPutOutBinaryApp()
  20. {
  21. // 支持重新启动管理器
  22. m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
  23. // TODO: 在此处添加构造代码,
  24. // 将所有重要的初始化放置在 InitInstance 中
  25. }
  26. // 唯一的一个 CPutOutBinaryApp 对象
  27. CPutOutBinaryApp theApp;
  28. CTime StringToDateTime(IN CString strDateTime /* = _T("") */)
  29. {
  30. if (strDateTime.IsEmpty())
  31. strDateTime = CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S"));
  32. TCHAR cc = 0;
  33. INT nYear = 0, nMonth = 0, nDay = 0, nHour = 0, nMinute = 0, nSecond = 0;
  34. if (strDateTime.Find(_T("年")) != -1)
  35. {
  36. #ifdef UNICODE
  37. _stscanf_s(strDateTime.GetString(),
  38. _T("%4d%c%2d%c%2d%c%c%2d%c%2d%c%2d%c"),
  39. &nYear, &cc, sizeof(TCHAR),
  40. &nMonth, &cc, sizeof(TCHAR),
  41. &nDay, &cc, sizeof(TCHAR),
  42. &cc, sizeof(TCHAR),
  43. &nHour, &cc, sizeof(TCHAR),
  44. &nMinute, &cc, sizeof(TCHAR),
  45. &nSecond, &cc, sizeof(TCHAR));
  46. #else
  47. sscanf(strDateTime,
  48. _T("%4d%c%2d%c%2d%c%c%2d%c%2d%c%2d%c"),
  49. &nYear, &cc,
  50. &nMonth, &cc,
  51. &nDay, &cc, &cc,
  52. &nHour, &cc,
  53. &nMinute, &cc,
  54. &nSecond, &cc);
  55. #endif
  56. }
  57. else
  58. {
  59. #ifdef UNICODE
  60. _stscanf_s(strDateTime.GetString(),
  61. _T("%4d%c%2d%c%2d%c%2d%c%2d%c%2d"),
  62. &nYear, &cc, sizeof(TCHAR),
  63. &nMonth, &cc, sizeof(TCHAR),
  64. &nDay, &cc, sizeof(TCHAR),
  65. &nHour, &cc, sizeof(TCHAR),
  66. &nMinute, &cc, sizeof(TCHAR),
  67. &nSecond);
  68. #else
  69. sscanf(strDateTime,
  70. _T("%4d%c%2d%c%2d%c%2d%c%2d%c%2d"),
  71. &nYear, &cc,
  72. &nMonth, &cc,
  73. &nDay, &cc,
  74. &nHour, &cc,
  75. &nMinute, &cc,
  76. &nSecond);
  77. #endif
  78. }
  79. // 时间;
  80. CTime tm(nYear, nMonth, nDay, nHour, nMinute, nSecond);
  81. return tm;
  82. }
  83. // CPutOutBinaryApp 初始化
  84. BOOL CPutOutBinaryApp::InitInstance()
  85. {
  86. // 如果一个运行在 Windows XP 上的应用程序清单指定要
  87. // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
  88. //则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
  89. INITCOMMONCONTROLSEX InitCtrls;
  90. InitCtrls.dwSize = sizeof(InitCtrls);
  91. // 将它设置为包括所有要在应用程序中使用的
  92. // 公共控件类。
  93. InitCtrls.dwICC = ICC_WIN95_CLASSES;
  94. InitCommonControlsEx(&InitCtrls);
  95. CWinApp::InitInstance();
  96. GetSysIniInfo();
  97. AdoImpl ado;
  98. ado.SetConnectString(AdoDataSourceType::ADO_SQLSERVER, g_szDBSource, _T("0"), g_szDBAccount, g_szDBPassWord, g_szDBName);
  99. if (ado.Opendatabase())
  100. {
  101. #if 0 // 导出员工相片;
  102. ado.GetBinary(_T("renyuan"), _T("photo"), _T("421181199110166655"), NULL);
  103. #endif
  104. #if 0 // 导出订单合同;
  105. ado.GetOrderContractImage(_T("client"), _T("photo"), _T(""), NULL);
  106. #endif
  107. #if 0 // 导出其他合同;
  108. ado.GetOrderOtherContractImage(_T("clientcontract"), _T("photo"), _T(""), NULL);
  109. #endif
  110. #if 0 // 导出费用支出票据;
  111. ado.GetChargeAgainstRevenueImage(_T("gudingfeiyong"), _T("photo"), _T(""), NULL);
  112. #endif
  113. }
  114. #if 1
  115. // 输出文本日志, 以生成xls文件;
  116. filehelpImpl filehp;
  117. STR_VEC vtfiles;
  118. TCHAR szDirectory[MAX_PATH] = {0};
  119. _stprintf_s(szDirectory, _T("%sconstracts"), g_szModulePath);
  120. filehp.getfiles_findin_subfolder(szDirectory, _T("*.jpg"), &vtfiles);
  121. size_t fsize = 0;
  122. struct _stat64i32 statbuf;
  123. CString str;
  124. CString strOrder = _T("");
  125. CString strDateTime = _T("");
  126. CTime tms;
  127. SYSTEMTIME systime;
  128. struct tm _tm;
  129. for(auto file : vtfiles )
  130. {
  131. _tstat(file.c_str(), &statbuf);
  132. strOrder = file.substr(_tcslen(_T("E:\\lyfz-project.org\\Others\\导出数据库相片\\Debug\\constracts\\")), 12).c_str();
  133. if (file.find(_T("其他合同")) != TString::npos)
  134. {
  135. str = file.substr(file.find_last_of('\\') + _tcslen(_T("其他合同")) + 1, 14).c_str();
  136. strDateTime.Format(_T("%s-%s-%s %s:%s:%s"), str.Left(4), str.Mid(4, 2), str.Mid(6,2), str.Mid(8,2), str.Mid(10, 2), str.Mid(12, 2));
  137. }
  138. else
  139. {
  140. str = strOrder.Left(8);
  141. strDateTime.Format(_T("%s-%s-%s 00:00:00"), str.Left(4), str.Mid(4,2), str.Right(2));
  142. }
  143. tms = StringToDateTime(strDateTime);
  144. //tms.GetLocalTm(&_tm);
  145. WriteTextLog(_T("%s %s %s %ld %ld"),
  146. file.substr(_tcslen(_T("E:\\lyfz-project.org\\Others\\导出数据库相片\\Debug\\constracts\\")), 12).c_str(),
  147. file.substr(file.find_last_of('\\') + 1).c_str(),
  148. file.substr(_tcslen(_T("E:\\lyfz-project.org\\Others\\导出数据库相片\\Debug\\constracts\\"))).c_str(),
  149. statbuf.st_size,
  150. tms
  151. );
  152. }
  153. #endif
  154. AfxMessageBox(_T("导出完成"));
  155. AfxEnableControlContainer();
  156. // 创建 shell 管理器,以防对话框包含
  157. // 任何 shell 树视图控件或 shell 列表视图控件。
  158. CShellManager *pShellManager = new CShellManager;
  159. // 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题
  160. CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
  161. // 标准初始化
  162. // 如果未使用这些功能并希望减小
  163. // 最终可执行文件的大小,则应移除下列
  164. // 不需要的特定初始化例程
  165. // 更改用于存储设置的注册表项
  166. // TODO: 应适当修改该字符串,
  167. // 例如修改为公司或组织名
  168. SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
  169. CPutOutBinaryDlg dlg;
  170. m_pMainWnd = &dlg;
  171. INT_PTR nResponse = dlg.DoModal();
  172. if (nResponse == IDOK)
  173. {
  174. // TODO: 在此放置处理何时用
  175. // “确定”来关闭对话框的代码
  176. }
  177. else if (nResponse == IDCANCEL)
  178. {
  179. // TODO: 在此放置处理何时用
  180. // “取消”来关闭对话框的代码
  181. }
  182. else if (nResponse == -1)
  183. {
  184. TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
  185. TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
  186. }
  187. // 删除上面创建的 shell 管理器。
  188. if (pShellManager != NULL)
  189. {
  190. delete pShellManager;
  191. }
  192. #if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
  193. ControlBarCleanUp();
  194. #endif
  195. // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
  196. // 而不是启动应用程序的消息泵。
  197. return FALSE;
  198. }