Commit d325770f by guotao

新增多国库存拉取

parent dda9fc0b
...@@ -22,4 +22,22 @@ namespace AutoTurnOver.Models ...@@ -22,4 +22,22 @@ namespace AutoTurnOver.Models
public string site { get; set; } public string site { get; set; }
public string marketplaceId { get; set; } public string marketplaceId { get; set; }
} }
/// <summary>
/// fba 实时库存(多国)
/// </summary>
public class dc_fba_inventory_realtime_country
{
public int id { get; set; }
public string seller_sku { get; set; }
public string fulfillment_channel_sku { get; set; }
public string asin { get; set; }
public string condition_type { get; set; }
public string country { get; set; }
public decimal quantity_for_local_fulfillment { get; set; }
public string unique_id { get; set; }
public DateTime last_update_date { get; set; }
public string account { get; set; }
public string site { get; set; }
public string marketplaceId { get; set; }
}
} }
using AutoTurnOver.DB;
using AutoTurnOver.Models;
using AutoTurnOver.Services;
using AutoTurnOver.Utility;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace ResetOutofstock
{
/// <summary>
/// 读取fba实时库存(多国)
/// </summary>
class AnaFbaInventoryCountryRabbitBackgroundService : RabbitWorkerBase<t_task_queue>
{
public AnaFbaInventoryCountryRabbitBackgroundService() : base("fba实时库存(多国)", "aims:AnaFbaInventoryCountry:input", 1)
{
}
protected override async Task DoWork(t_task_queue taskDto)
{
try
{
var pars = taskDto.id.Split("_");
new AmazonDataSynchroService().AnaFbaInventoryCountryReport(int.Parse(pars[0]), pars[1]);
Console.WriteLine($"fba实时库存(多国) 完成 ");
}
catch (Exception e)
{
RabbitMQHelper.EnqueneMsg("aims:AnaFbaInventoryCountry:input", taskDto);
Console.WriteLine($"fba实时库存(多国) 数据异常,异常原因为:{e.Message},异常堆栈为:{e.StackTrace}");
}
}
}
}
...@@ -40,6 +40,7 @@ namespace AutoTurnOver.RabbitMqService ...@@ -40,6 +40,7 @@ namespace AutoTurnOver.RabbitMqService
services.AddHostedService<AnaFbaOverageStorageFeeRabbitBackgroundService>(); services.AddHostedService<AnaFbaOverageStorageFeeRabbitBackgroundService>();
services.AddHostedService<SynchroFinancialEventGroupsRabbitBackgroundService>(); services.AddHostedService<SynchroFinancialEventGroupsRabbitBackgroundService>();
services.AddHostedService<AnaFbaInventoryRabbitBackgroundService>(); services.AddHostedService<AnaFbaInventoryRabbitBackgroundService>();
services.AddHostedService<AnaFbaInventoryCountryRabbitBackgroundService>();
} }
......
...@@ -1505,6 +1505,120 @@ namespace AutoTurnOver.Services ...@@ -1505,6 +1505,120 @@ namespace AutoTurnOver.Services
} }
MyMySqlConnection._connection.Update(ana_task); MyMySqlConnection._connection.Update(ana_task);
} }
/// <summary>
/// fba实时库存 (多国)
/// </summary>
/// <param name="status"></param>
/// <param name="data_id"></param>
public void AnaFbaInventoryCountryReport(int status = 0, string report_id = "")
{
var reportTypeEnum = ReportTypes.GET_AFN_INVENTORY_DATA_BY_COUNTRY;
var ana_task = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee_report_log>(" select * from dc_base_amazon_fee_report_log where report_type=@report_type and ana_status=@status order by id desc limit 1 ", new
{
report_type = reportTypeEnum.ToString(),
status = status
});
if (!string.IsNullOrWhiteSpace(report_id))
{
ana_task = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee_report_log>(" select * from dc_base_amazon_fee_report_log where report_type=@report_type and report_id=@report_id order by id desc limit 1 ", new
{
report_type = reportTypeEnum.ToString(),
report_id = report_id
});
}
if (ana_task == null)
{
return;
}
try
{
var pamsAccount = ApiServices.GetAmazonAccountList().FirstOrDefault(s => s.Id == ana_task.pams_account_id);
var reportData = DownloadReportData(pamsAccount, ana_task.report_id);
if (string.IsNullOrWhiteSpace(reportData.ReportDocumentId))
{
if (reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL || reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED)
{
ana_task.ana_status = -2;
MyMySqlConnection._connection.Update(ana_task);
return;
}
else
{
ana_task.report_par_json = reportData.ToJson();
MyMySqlConnection._connection.Update(ana_task);
return;
}
}
StringBuilder response_str = new StringBuilder() { };
using (StreamReader sr = new StreamReader(reportData.ReportDocumentId))
{
response_str.AppendLine(sr.ReadToEnd());
sr.Close();
}
string jsonText = response_str.ToString();
ana_task.content = jsonText;
var table = CsvFileHelper.ReadFromCSV(reportData.ReportDocumentId, true, '\t');
foreach (DataRow row in table.Rows)
{
try
{
dc_fba_inventory_realtime_country fbanIventory = new dc_fba_inventory_realtime_country
{
seller_sku = row.DataRowToString("seller-sku"),
fulfillment_channel_sku = row.DataRowToString("fulfillment-channel-sku"),
asin = row.DataRowToString("asin"),
condition_type = row.DataRowToString("condition-type"),
account = pamsAccount.Account,
marketplaceId = reportData.MarketplaceIds[0],
last_update_date = DateTime.Now,
quantity_for_local_fulfillment = row.DataRowToNumber("quantity-for-local-fulfillment") ?? 0,
country = row.DataRowToString("country"),
site = MarketPlace.GetMarketplaceById(reportData.MarketplaceIds[0]).Country.Code
};
if ("GB".Equals(fbanIventory.site, StringComparison.CurrentCultureIgnoreCase))
{
fbanIventory.site = "UK";
}
fbanIventory.unique_id = $"{fbanIventory.account}-{fbanIventory.marketplaceId}-{fbanIventory.seller_sku}-{fbanIventory.country}";
fbanIventory.id = MyMySqlConnection._connection.QueryFirstOrDefault<int?>(" select id from dc_fba_inventory_realtime_country where unique_id=@unique_id ", new { unique_id = fbanIventory.unique_id }) ?? 0;
if (fbanIventory.id > 0)
{
MyMySqlConnection._connection.Update(fbanIventory);
}
else
{
MyMySqlConnection._connection.Insert(fbanIventory);
}
}
catch (Exception ex)
{
throw;
}
}
ana_task.ana_error = "";
ana_task.ana_stack_trace = "";
ana_task.ana_status = 1;
}
catch (Exception ex)
{
ana_task.ana_error = ex.Message;
ana_task.ana_stack_trace = ex.StackTrace;
ana_task.ana_status = -1;
}
MyMySqlConnection._connection.Update(ana_task);
}
/// <summary> /// <summary>
/// 根据站点推算币种 /// 根据站点推算币种
......
...@@ -55,7 +55,7 @@ namespace ResetOutofstock ...@@ -55,7 +55,7 @@ namespace ResetOutofstock
//new AmazonDataSynchroService().SetMarketplaceNameByDate(); //new AmazonDataSynchroService().SetMarketplaceNameByDate();
//new AmazonDataSynchroService().SynchroReportIds(); //new AmazonDataSynchroService().SynchroReportIds();
//new AmazonDataSynchroService().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AFN_INVENTORY_DATA, 17, "Siqidzi", "ES"); //new AmazonDataSynchroService().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AFN_INVENTORY_DATA_BY_COUNTRY, 17, "Siqidzi", "ES");
//new AmazonDataSynchroService().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA, version: 22, account: "Elite99 Nail Art", site: "US", //new AmazonDataSynchroService().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA, version: 22, account: "Elite99 Nail Art", site: "US",
// btime: DateTime.Parse("2023-04-01"), DateTime.Parse("2023-04-24 23:59:59")); // btime: DateTime.Parse("2023-04-01"), DateTime.Parse("2023-04-24 23:59:59"));
//new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AFN_INVENTORY_DATA, 13, "Natural Daisy Encens", "ES"); //new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AFN_INVENTORY_DATA, 13, "Natural Daisy Encens", "ES");
...@@ -66,7 +66,7 @@ namespace ResetOutofstock ...@@ -66,7 +66,7 @@ namespace ResetOutofstock
//new AmazonDataSynchroService().AnaFbaOverageStorageFeeReport(report_id: "937084019471"); //new AmazonDataSynchroService().AnaFbaOverageStorageFeeReport(report_id: "937084019471");
//new AmazonDataSynchroService().AnaFbaStorageFeeReport(data_id: "323250019473"); //new AmazonDataSynchroService().AnaFbaStorageFeeReport(data_id: "323250019473");
//new AmazonDataSynchroService().AnaFbaInventoryReport(); //new AmazonDataSynchroService().AnaFbaInventoryCountryReport();
//new AmazonDataSynchroService().SynchroReportIdByCreate( //new AmazonDataSynchroService().SynchroReportIdByCreate(
// FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_STORAGE_FEE_CHARGES_DATA, // FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_STORAGE_FEE_CHARGES_DATA,
......
...@@ -852,6 +852,7 @@ namespace ResetOutofstock ...@@ -852,6 +852,7 @@ namespace ResetOutofstock
new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_FBA_FULFILLMENT_LONGTERM_STORAGE_FEE_CHARGES_DATA", "aims:AnaFbaInventoryStorageFee:input"); new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_FBA_FULFILLMENT_LONGTERM_STORAGE_FEE_CHARGES_DATA", "aims:AnaFbaInventoryStorageFee:input");
new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_FBA_OVERAGE_FEE_CHARGES_DATA", "aims:AnaFbaOverageStorageFee:input"); new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_FBA_OVERAGE_FEE_CHARGES_DATA", "aims:AnaFbaOverageStorageFee:input");
new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_AFN_INVENTORY_DATA", "aims:AnaFbaInventory:input"); new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_AFN_INVENTORY_DATA", "aims:AnaFbaInventory:input");
new AmazonDataSynchroService().AnaFbaStorageFeeReportSubmit("GET_AFN_INVENTORY_DATA_BY_COUNTRY", "aims:AnaFbaInventoryCountry:input");
//new AmazonDataSynchroService().AnaFbaStorageFeeReport(-1); //new AmazonDataSynchroService().AnaFbaStorageFeeReport(-1);
Console.WriteLine($"结束 提交解析月度仓储费任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); Console.WriteLine($"结束 提交解析月度仓储费任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep(1000 * 60 * 30); Thread.Sleep(1000 * 60 * 30);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment