Commit de3a9a45 by lizefeng

优化亚马逊长期仓储费拉取

parent 36ef030e
......@@ -208,7 +208,7 @@ namespace AutoTurnOver.Services
}
else
{
new_task_synchro_log.start_time = DateTime.Now.AddDays(-88);
new_task_synchro_log.start_time = DateTime.Now.AddDays(-60);
}
new_task_synchro_log.id = MyMySqlConnection._connection.Insert(new_task_synchro_log) ?? 0;
......@@ -282,7 +282,7 @@ namespace AutoTurnOver.Services
}
}
public void SynchroReportIdByCreate(ReportTypes reportTypeEnum, int version = 8, string account = "", string site = "")
public void SynchroReportIdByCreate(ReportTypes reportTypeEnum, int version = 8, string account = "", string site = "",DateTime? btime =null ,DateTime? etime = null)
{
// 拉取亚马逊账号
var amazonAccounts = ApiServices.GetAmazonAccountList();
......@@ -319,7 +319,7 @@ namespace AutoTurnOver.Services
if (last_task_synchro_log != null)
{
// 由于是拉报告,没必要太频繁,如果3小时之内拉过的,就先跳过
if ((DateTime.Now - last_task_synchro_log.end_time).TotalHours < 3)
if ((DateTime.Now - last_task_synchro_log.end_time).TotalHours < 24)
{
continue;
}
......@@ -332,7 +332,11 @@ namespace AutoTurnOver.Services
new_task_synchro_log.id = MyMySqlConnection._connection.Insert(new_task_synchro_log) ?? 0;
if (btime != null)
{
new_task_synchro_log.start_time = btime.Value;
new_task_synchro_log.end_time = etime.Value;
}
var reportId = CreateReport(item, new_task_synchro_log.start_time, new_task_synchro_log.end_time, reportTypeEnum);
......@@ -800,7 +804,7 @@ namespace AutoTurnOver.Services
}
/// <summary>
/// 仓储超量
/// 仓储费
/// </summary>
/// <param name="status"></param>
/// <param name="data_id"></param>
......@@ -902,6 +906,108 @@ namespace AutoTurnOver.Services
}
/// <summary>
/// 长期仓储费
/// </summary>
/// <param name="status"></param>
/// <param name="data_id"></param>
public void AnaFbaLongTermStorageFeeReport(int status = 0, string report_id = "")
{
var reportTypeEnum = ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA;
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 filePath = DownloadReportData(pamsAccount, ana_task.report_id);
StringBuilder response_str = new StringBuilder() { };
using (StreamReader sr = new StreamReader(filePath.ReportDocumentId))
{
response_str.AppendLine(sr.ReadToEnd());
sr.Close();
}
string jsonText = response_str.ToString();
ana_task.content = jsonText;
var table = CsvFileHelper.ReadFromCSV(filePath.ReportDocumentId, true, '\t');
foreach (DataRow row in table.Rows)
{
try
{
dc_profit_business_amazon_storage_fee storageFee = new dc_profit_business_amazon_storage_fee
{
currency = row.DataRowToString("currency"),
fulfillment_center = row.DataRowToString("fulfillment_center"),
fee_type = "月度仓储费",
account = pamsAccount.Account,
asin = row.DataRowToString("asin"),
report_end_date = filePath.DataEndTime ?? new DateTime(1991, 1, 1)
};
storageFee.fee = row.DataRowToNumber("estimated_monthly_storage_fee") ?? 0;
storageFee._date = DateTime.Parse(row.DataRowToString("month_of_charge"));
storageFee.site = row.DataRowToString("country_code");
if ("GB".Equals(storageFee.site, StringComparison.CurrentCultureIgnoreCase))
{
storageFee.site = "UK";
}
storageFee._create_date = DateTime.Now;
storageFee._update_date = DateTime.Now;
storageFee._unique_id = $"{storageFee.asin}-{storageFee._date.ToString("yyyy-MM")}-{storageFee.site}-{storageFee.account}-{storageFee.fulfillment_center}";
var oldData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_profit_business_amazon_storage_fee>(" select * from dc_profit_business_amazon_storage_fee where _unique_id=@unique_id ", new { unique_id = storageFee._unique_id });
if (oldData != null)
{
// 多份报表都出现同一份数据。已报表实际较晚的为准
if (oldData.report_end_date <= storageFee.report_end_date)
{
MyMySqlConnection._connection.Update(storageFee);
}
}
else
{
MyMySqlConnection._connection.Insert(storageFee);
}
}
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>
/// <param name="currency"></param>
......@@ -1259,8 +1365,8 @@ namespace AutoTurnOver.Services
parameters.pageSize = 80;
parameters.reportTypes = new List<ReportTypes>();
parameters.reportTypes.Add(reportType);
//parameters.marketplaceIds = new List<string>();
//parameters.marketplaceIds.Add(amazonConnection.GetCurrentMarketplace.ID);
parameters.marketplaceIds = new List<string>();
parameters.marketplaceIds.Add(amazonConnection.GetCurrentMarketplace.ID);
parameters.createdSince = btime;
parameters.createdUntil = etime;
var reports = amazonConnection.Reports.GetReports(parameters);
......
......@@ -57,11 +57,13 @@ namespace ResetOutofstock
//new AmazonDataSynchroService().SetMarketplaceNameByDate();
//new AmazonDataSynchroService().SynchroReportIds();
//new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA, 15, "Elite99 Nail Art", "US");
//new AmazonDataSynchroService().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_OVERAGE_FEE_CHARGES_DATA, 14, "Siqidzi","BE");
//new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA, 16, "Eumengman", "FR");
//new AmazonDataSynchroService().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA, version: 18,account: "Natural Daisy Encens", site:"DE",
// btime:DateTime.Parse("2023-03-01"),DateTime.Parse("2023-03-31 23:59:59"));
//new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL, 13);
//new AmazonDataSynchroService().AnaFbaShipmentReport();
//new AmazonDataSynchroService().AnaFbaStorageFeeReport();
new AmazonDataSynchroService().AnaFbaStorageFeeReport(status:-1);
//new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport(report_id: "697153019471");
//while (true)
//{
// new AmazonDataSynchroService().AnaReport(status:-3);
......
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