void download() { finish = true; this.Invoke((MethodInvoker) delegate { this.dataNavigator1.Visible = false; this.lamess.Visible = true; lamess.Text = "Đang tải dữ liệu..."; }); if (_connection == "") { _connection = QT.Entities.Server.ConnectionString; this.productTableAdapter.Connection.ConnectionString = _connection; } DB.ProductDataTable dt = new DB.ProductDataTable(); this.productTableAdapter.FillBy_ListByCompany(dt, _companyID); this.Invoke((MethodInvoker) delegate { lamess.Text = "Đã tải xong dữ liệu"; this.dB.Product.Clear(); this.dB.Product.Merge(dt); this.dataNavigator1.Visible = true; this.lamess.Visible = false; }); finish = true; if (tDownload != null) { if (tDownload.IsAlive) { tDownload.Abort(); tDownload.Join(); tDownload = null; } } }
private void DownloadImageProductSpGoc(MqChangeImage mqProduct, JobClient updateProductJobClient, JobClient downloadImageProductJobClient, JobClient deleteThumbJobClient) { string path = pathImageSPGOC; var productAdapter = new DBTableAdapters.ProductTableAdapter(); var historyDownloadAdapter = new DBTableAdapters.History_DownloadImageProductTableAdapter(); var productTable = new DB.ProductDataTable(); productAdapter.Connection.ConnectionString = connectionString; historyDownloadAdapter.Connection.ConnectionString = connectionString; //bien dem lay du lieu loi tu sql = 3 thì dừng int dem = 0; //lấy dữ liệu từ sql while (checkstop) { try { productAdapter.FillBy_ID(productTable, mqProduct.ProductId); break; } catch (Exception ex) { if (dem == 3) { historyDownloadAdapter.Insert(mqProduct.ProductId, DateTime.Now, false, "Get product from Database error." + ex, false); Log.ErrorFormat("SP Gốc : ProductID = {0} Get product from Database error. \r\n {1}", mqProduct.ProductId, ex); return; } dem++; Thread.Sleep(30000); } } if (productTable.Rows.Count > 0) { string nameProduct = productTable.Rows[0]["Name"].ToString(); string imageUrl = productTable.Rows[0]["ImageUrls"].ToString(); if (string.IsNullOrEmpty(nameProduct) || string.IsNullOrEmpty(imageUrl)) { Log.Error(string.Format("SP Gốc : ProductID = {0} Name or ImageUrl is null or empty.", mqProduct.ProductId)); return; } else { string filename = Common.UnicodeToKoDauAndGach(nameProduct); if (filename.Length > 100) { filename = filename.Substring(0, 99); } string folder = Common.GetFolderSaveImageRootProduct(filename); bool fileSaved = Common.SaveFileDownloadImage(imageUrl, path + folder, filename + ".jpg", mqProduct.ProductId, 6619858476258121218); if (fileSaved) { string pathsave = Common.GetImagePath(folder, filename); int demupdate = 0; while (checkstop) { try { productAdapter.UpdateImagePathAndValid(pathsave, 0, 0, true, mqProduct.ProductId); #region Send Message Update solr and redis Job job = new Job(); job.Data = BitConverter.GetBytes(mqProduct.ProductId); job.Type = 2; updateProductJobClient.PublishJob(job, updateProductJobExpirationMS); //Log.InfoFormat("Send message To RabbitMq {0} with ID = {1}", rabbitMQServerName, productId); #endregion #region Xóa ảnh Thumb nếu có //push message lên service xóa ảnh thumb Job deletejob = new Job(); var thumb = new MqThumbImageInfo { ProductId = mqProduct.ProductId, FolderImage = folder, ImageName = filename, TypeProduct = 2 }; deletejob.Data = MqThumbImageInfo.GetMess(thumb); deleteThumbJobClient.PublishJob(deletejob); #endregion #region Log Finished historyDownloadAdapter.Insert(mqProduct.ProductId, DateTime.Now, true, "SP Gốc", false); #endregion break; } catch (Exception ex) { Thread.Sleep(10000); demupdate++; if (demupdate == 1) { Log.Error(string.Format("SP Gốc : CompanyID = {0} Product = {1}, Update ImagePath Error 1", 6619858476258121218, mqProduct.ProductId), ex); } else if (demupdate == numbererror) { historyDownloadAdapter.Insert(mqProduct.ProductId, DateTime.Now, false, "Update sql fail or push message fail.", false); Log.Error(string.Format("SP Gốc : CompanyID = {0} Product = {1}, Update ImagePath Error {2}", 6619858476258121218, mqProduct.ProductId, numbererror), ex); break; } } } } } } else { historyDownloadAdapter.Insert(mqProduct.ProductId, DateTime.Now, false, "Product not in Database.", false); Log.ErrorFormat("SP Gốc : ProductID = {0} Khong ton tai trong Database.", mqProduct.ProductId); } }
private void UpdateCompany(long companyId) { DBTableAdapters.ProductTableAdapter productAdapter = new DBTableAdapters.ProductTableAdapter(); productAdapter.Connection.ConnectionString = ServerConnection.ConnectionString; DB.ProductDataTable productTable = new DB.ProductDataTable(); int demgetproduct = 0; while (!istopgetdata) { try { productAdapter.FillBy_CompanyDownloaded(productTable, companyId); break; } catch (Exception ex) { demgetproduct++; if (demgetproduct == 1) { Log.Error(string.Format("CompanyID = {0} Get Product of Company in SQL Error 1", companyId), ex); } else if (demgetproduct == 5) { Log.Error(string.Format("CompanyID = {0} Get Product of Company in SQL Error {1}", companyId, 5), ex); break; } Thread.Sleep(10000); } } try { if (productTable.Rows.Count > 0) { this.Invoke(new Action(() => { richTextBox1.AppendText("CompanyID: " + companyId + ": Get " + productTable.Rows.Count + " Product in SQL!\r\n"); })); String path = ServerConnection.FolderImage; int countsuccess = 0; for (int i = 0; i < productTable.Rows.Count; i++) { long productId = Common.Obj2Int64(productTable.Rows[i]["ID"].ToString()); string url = productTable.Rows[i]["DetailUrl"].ToString(); if (string.IsNullOrEmpty(url)) { continue; } Uri root = new Uri(url); string domain = root.DnsSafeHost.Replace("www.", ""); string char1 = domain.Substring(0, 1); String namepath = domain.Substring(0, 1) + "\\" + root.DnsSafeHost.Replace("www.", "").Replace('.', '_'); string direct = namepath + "\\"; string filename = Common.UnicodeToKoDauAndGach(productTable.Rows[i]["Name"].ToString()); string tempf = filename.Replace("-", ""); if (tempf.Length < 3) { continue; } string folder = tempf.Substring(0, 3); if (folder == "bin") { folder = "bin1"; } if (folder == "con") { folder = "con1"; } direct += folder + "\\"; if (filename.Length > 100) { filename = filename.Substring(0, 99); } filename += "_" + productId; String fullfile = path + direct + filename + ".jpg"; string imageurl = string.Empty; imageurl = productTable.Rows[i]["ImageUrls"].ToString(); if (string.IsNullOrEmpty(imageurl)) { Log.Error(string.Format("CompanyID = {0} ProductID = {1} ImageUrl is null or empty.", companyId, productId)); continue; } string pathsave = direct + filename.Replace('\\', '/') + ".jpg"; pathsave = "Store/" + pathsave.Replace('\\', '/'); int demupdate = 0; while (!istopupdate) { try { productAdapter.UpdateQuery(pathsave, 0, 0, productId); //tempAdapter.UpdateImagePathTemp(pathsave, productId); countsuccess++; this.Invoke(new Action(() => { richTextBox1.AppendText(string.Format("{0}.Update Image Path {1}!\r\n", i + 1, productId)); })); break; } catch (Exception) { demupdate++; if (demupdate == 5) { break; } Thread.Sleep(10000); } } } Log.InfoFormat("CompanyID = {0} Download Image Success {1}/{2}", companyId, countsuccess, productTable.Rows.Count); this.Invoke(new Action(() => { richTextBox1.AppendText(string.Format("CompanyID = {0} Download Image Success {1}/{2}-----------------------------\n", companyId, countsuccess, productTable.Rows.Count)); })); } else { this.Invoke(new Action(() => { richTextBox1.AppendText(string.Format("CompanyID = {0} 0 product!-----------------------------\r\n", companyId)); })); } } catch (Exception ex) { } }