Commit 0c04ec33 by lizefeng

fix

parent de3a9a45
......@@ -913,6 +913,129 @@ namespace AutoTurnOver.Services
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 asc 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.CANCELLED)
{
ana_task.ana_status =2;
MyMySqlConnection._connection.Update(ana_task);
return;
}
else
{
ana_task.report_par_json = ana_task.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');
if (table.Columns.Contains("estimated-ltsf-next-charge"))
{
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("marketplace"),
site = row.DataRowToString("marketplace"),
fee_type = "超长仓储费",
account = pamsAccount.Account,
asin = row.DataRowToString("asin"),
report_end_date = reportData.DataEndTime ?? new DateTime(1991, 1, 1)
};
storageFee.fee = row.DataRowToNumber("estimated-ltsf-next-charge") ?? 0;
storageFee._date = reportData.DataStartTime.Value.AddHours(-8).ToDayHome();
//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="status"></param>
/// <param name="data_id"></param>
public void AnaFbaOverageStorageFeeReport(int status = 0, string report_id = "")
{
var reportTypeEnum = ReportTypes.GET_FBA_OVERAGE_FEE_CHARGES_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(),
......@@ -1460,7 +1583,7 @@ namespace AutoTurnOver.Services
}
else
{
return null;
return reportData;
}
}
......
......@@ -80,6 +80,10 @@ namespace AutoTurnOver.Utility
}
public static decimal? DataRowToNumber(this DataRow row,string colName)
{
if (!row.Table.Columns.Contains(colName))
{
return null;
}
if (row[colName] == null)
{
return null;
......
......@@ -58,15 +58,16 @@ namespace ResetOutofstock
//new AmazonDataSynchroService().SynchroReportIds();
//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().SynchroReportIdByCreate(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA, version: 18, account: "TeliBright Tech", site: "UK",
// btime: DateTime.Parse("2022-11-01"), DateTime.Parse("2022-11-30 23:59:59"));
//new AmazonDataSynchroService().SynchroReportIds(FikaAmazonAPI.Utils.Constants.ReportTypes.GET_AMAZON_FULFILLED_SHIPMENTS_DATA_GENERAL, 13);
//new AmazonDataSynchroService().AnaFbaShipmentReport();
new AmazonDataSynchroService().AnaFbaStorageFeeReport(status:-1);
//new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport(report_id: "697153019471");
//new AmazonDataSynchroService().AnaFbaStorageFeeReport(status:-1);
//new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport();
//new AmazonDataSynchroService().AnaFbaOverageStorageFeeReport(report_id: "937084019471");
//while (true)
//{
// new AmazonDataSynchroService().AnaReport(status:-3);
// new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport();
//}
//new AmazonDataSynchroService().AnaReport(data_id: "17339571721");
}
......
......@@ -694,8 +694,8 @@ namespace ResetOutofstock
new AmazonDataSynchroService().SynchroReportIdByCreate(
FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA,
version: 19,
btime: DateTime.Now.AddMonths(-1).GetMonthFirstDay().ToDayHome(),
etime: DateTime.Now.AddMonths(-1).LastDayOfMonth().ToDayEnd());
btime: DateTime.Now.AddMonths(-1).GetMonthFirstDay().ToDayHome().AddHours(-8),
etime: DateTime.Now.AddMonths(-1).LastDayOfMonth().ToDayEnd().AddHours(-8));
// 下载这个月的
new AmazonDataSynchroService().SynchroReportIdByCreate(
FikaAmazonAPI.Utils.Constants.ReportTypes.GET_FBA_INVENTORY_PLANNING_DATA,
......@@ -804,6 +804,28 @@ namespace ResetOutofstock
}
});
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
Console.WriteLine($"开始 解析亚马逊长期仓储费,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport();
new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport(-1);
Console.WriteLine($"结束 解析亚马逊长期仓储费,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep(1000 * 3);
}
catch (Exception ex)
{
Console.WriteLine(" 解析解析亚马逊长期仓储费:" + ex.Message);
Console.WriteLine(" 解析解析亚马逊长期仓储费 :" + ex.StackTrace);
}
}
});
Task.Factory.StartNew(() =>
......
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