ProcessFile.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. using ConvertLog.common;
  2. using System;
  3. using System.Data;
  4. namespace ConvertLog.thread
  5. {
  6. public class ProcessFile : MainThread
  7. {
  8. static readonly log4net.ILog logger = log4net.LogManager.GetLogger(typeof(ProcessFile));
  9. public override void Process()
  10. {
  11. if (!ConfigData.loadOK) { return; }
  12. Sleep(5000);
  13. try
  14. {
  15. logger.Info("start");
  16. DataSet ds = DataAccess.importGetFile("1");
  17. if (ds != null && ds.Tables[0].Rows.Count > 0)
  18. {
  19. logger.Info("have file");
  20. string uloadId = "-1";
  21. List<totalFileImportObj> _listFile = new List<totalFileImportObj>();
  22. try
  23. {
  24. foreach (DataRow dr in ds.Tables[0].Rows)
  25. {
  26. uloadId = dr["TERM_UPLOAD_ID"].ToString();
  27. string uloadDetailId = dr["ID"].ToString();
  28. string type = dr["TYPE"].ToString(); //1=blacklust,2=whitelist,3=nhan vien
  29. string fielId = dr["FILE_ID"].ToString();
  30. //bat dau doc file
  31. string pathFileFull = ConfigData.pathFileImport + fielId;
  32. logger.Info("start process file : " + pathFileFull);
  33. StreamReader objReader = new StreamReader(pathFileFull);
  34. string sLine = "";
  35. int totalRow = 0;
  36. int totalBlock = 0;
  37. int totalRowErr = 0;
  38. List<importObj> _lstObj = new List<importObj>();
  39. while (sLine != null)
  40. {
  41. sLine = objReader.ReadLine();
  42. if (sLine != null)
  43. {
  44. totalRow++;
  45. long n;
  46. bool isNumeric = long.TryParse(sLine, out n);
  47. if (isNumeric)
  48. {
  49. try
  50. {
  51. importObj _obj = new importObj();
  52. _obj.uploadId = uloadId;
  53. _obj.uploadDetailId = uloadDetailId;
  54. _obj.type = type;
  55. _obj.ticket = sLine;
  56. _lstObj.Add(_obj);
  57. logger.Info("Line da duoc add : " + sLine);
  58. }
  59. catch (Exception ex)
  60. {
  61. }
  62. }
  63. else
  64. {
  65. logger.Info("Loi sLine roi : "+ sLine);
  66. totalRowErr++;
  67. }
  68. }
  69. if (_lstObj.Count > 500)
  70. {
  71. //upload_off(_lstObj);
  72. oneImportObj _oneImport = new oneImportObj(uloadId, uloadDetailId, _lstObj);
  73. ConfigData._ImportQueue.Enqueue(_oneImport);
  74. totalBlock++;
  75. _lstObj = new List<importObj>();
  76. logger.Info("add bunk : " + pathFileFull);
  77. }
  78. }
  79. //upload_off(_lstObj);
  80. oneImportObj _oneImportEnd = new oneImportObj(uloadId, uloadDetailId, _lstObj);
  81. ConfigData._ImportQueue.Enqueue(_oneImportEnd);
  82. totalBlock++;
  83. logger.Info("add bunk end : " + pathFileFull);
  84. //ket thuc file
  85. totalFileImportObj _totalFile = new totalFileImportObj(uloadId,uloadDetailId,
  86. totalBlock.ToString(),totalRow.ToString(),totalRowErr.ToString(),"1");
  87. _listFile.Add(_totalFile);
  88. //DataAccess.importFinishFile(uloadId, uloadDetailId, totalRow.ToString(), totalRowErr.ToString());
  89. }
  90. }
  91. catch (Exception ex)
  92. {
  93. logger.Info("Process file exeption: " + ex.ToString());
  94. }
  95. //ket thuc het file
  96. ConfigData._arrtotal.Add(uloadId, _listFile);
  97. //DataAccess.importFinishAllFile(uloadId);
  98. }
  99. else
  100. {
  101. logger.Info("have not file");
  102. }
  103. }
  104. catch (Exception ex)
  105. {
  106. logger.Info("Process file total exeption: " + ex.ToString());
  107. }
  108. }
  109. public static void upload_off(List<importObj> _data)
  110. {
  111. List<List<string>> DataColumms = new List<List<string>>();
  112. var v_upload_id = new List<string>();
  113. var v_upload_detail_id = new List<string>();
  114. var v_type = new List<string>();
  115. var v_ticket = new List<string>();
  116. foreach (importObj _obj in _data)
  117. {
  118. v_upload_id.Add(_obj.uploadId);
  119. v_upload_detail_id.Add(_obj.uploadDetailId);
  120. v_type.Add(_obj.type);
  121. v_ticket.Add(_obj.ticket);
  122. }
  123. DataColumms.Add(v_upload_id);
  124. DataColumms.Add(v_upload_detail_id);
  125. DataColumms.Add(v_type);
  126. DataColumms.Add(v_ticket);
  127. DataAccess.upload_data("LUCKY_PKG.IMPORT_INSERT", DataColumms);
  128. }
  129. }
  130. }