|
@@ -43,11 +43,9 @@ namespace TCCInvoice
|
|
|
|
|
|
private FileSystemWatcher preInvoiceResponseWatcher;
|
|
|
private FileSystemWatcher sellerInvoiceResponseWatcher;
|
|
|
+ private FileSystemWatcher sellerInvoiceFailureWatcher;
|
|
|
private List<InvoiceResponseItem> invoiceResponseItemList = new List<InvoiceResponseItem>();
|
|
|
- private string responseInvoiceNumber;
|
|
|
private string responseDataNumber;
|
|
|
- private string responseInvoiceDate;
|
|
|
- private string responseInvoiceTime;
|
|
|
private string responseInvoiceError;
|
|
|
private int totalQuantity = 0;
|
|
|
private int count = 0;
|
|
@@ -72,6 +70,8 @@ namespace TCCInvoice
|
|
|
private const string PREINVOICE_PATH = @"C:\UXB2B_EIVO\PreInvoice\";
|
|
|
private const string PREINVOICE_RESPONSE_PATH = @"C:\UXB2B_EIVO\PreInvoice(Response)\";
|
|
|
private const string SELLER_INVOICE_RESPONSE_PATH = @"C:\Gateway-83196607\logs\InvoiceNoInspector\SellerInvoice(Response)\";
|
|
|
+ private const string SELLER_INVOICE_PATH = @"C:\Gateway-83196607\logs\InvoiceNoInspector\SellerInvoice\";
|
|
|
+ private const string SELLER_INVOICE_FAILURE_PATH = @"C:\Gateway-83196607\logs\InvoiceNoInspector\SellerInvoice(Failure)\";
|
|
|
private const string RESPONSE_BACKUP_PATH = @"C:\UXB2B_EIVO\ResponseBackup\";
|
|
|
#endregion
|
|
|
|
|
@@ -224,6 +224,16 @@ namespace TCCInvoice
|
|
|
EnableRaisingEvents = true,
|
|
|
};
|
|
|
sellerInvoiceResponseWatcher.Changed += SellerInvoiceResponse_Changed;
|
|
|
+
|
|
|
+ sellerInvoiceFailureWatcher = new FileSystemWatcher()
|
|
|
+ {
|
|
|
+ Path = SELLER_INVOICE_FAILURE_PATH,
|
|
|
+ Filter = "*.xml",
|
|
|
+ NotifyFilter = NotifyFilters.LastWrite,
|
|
|
+ IncludeSubdirectories = false,
|
|
|
+ EnableRaisingEvents = true,
|
|
|
+ };
|
|
|
+ sellerInvoiceFailureWatcher.Changed += SellerInvoiceFailure_Changed;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
@@ -323,6 +333,27 @@ namespace TCCInvoice
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void SellerInvoiceFailure_Changed(object sender, FileSystemEventArgs e)
|
|
|
+ {
|
|
|
+ string failurePath = e.FullPath;
|
|
|
+ string responsePath = SELLER_INVOICE_RESPONSE_PATH + e.Name;
|
|
|
+ string sellerinvoicePath = SELLER_INVOICE_PATH + e.Name;
|
|
|
+
|
|
|
+ // 當SELLER_INVOICE_FAILURE_PATH出現檔案時,先等待500毫秒,
|
|
|
+ // 再去檢查SELLER_INVOICE_RESPONSE_PATH是否也出現同一個檔名的檔案,
|
|
|
+ // 如果沒有出現,代表應該是網優SQL連線失敗造成的發票上傳失敗,
|
|
|
+ // 此時會先等待180秒,再把該檔案複製到SELLER_INVOICE_PATH,讓Gateway自動重新上傳
|
|
|
+ Task.Run(async delegate
|
|
|
+ {
|
|
|
+ await Task.Delay(500);
|
|
|
+ if (!File.Exists(responsePath)) // 可能是網優SQL連線失敗,需要嘗試重新上傳
|
|
|
+ {
|
|
|
+ await Task.Delay(180000);
|
|
|
+ File.Copy(failurePath, sellerinvoicePath);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region Instance Methods
|
|
@@ -362,7 +393,7 @@ namespace TCCInvoice
|
|
|
{
|
|
|
GeneratePreinvoiceXML();
|
|
|
}
|
|
|
- catch (Exception ex)
|
|
|
+ catch (Exception)
|
|
|
{
|
|
|
;
|
|
|
}
|
|
@@ -446,10 +477,7 @@ namespace TCCInvoice
|
|
|
contactPhone = null;
|
|
|
invoiceItems.Clear();
|
|
|
|
|
|
- responseInvoiceNumber = null;
|
|
|
responseDataNumber = null;
|
|
|
- responseInvoiceDate = null;
|
|
|
- responseInvoiceTime = null;
|
|
|
responseInvoiceError = null;
|
|
|
}
|
|
|
|