Commit 3c51e322 by lizefeng

新增亚马逊预留金额的抓取

parent 8b1d183a
......@@ -33,11 +33,18 @@ namespace AutoTurnOver.Services
public class AmazonDataSynchroService
{
public void SynchroFinancialEventGroups()
public void SynchroFinancialEventGroups(string account = null, string siteEn = null)
{
// 拉取亚马逊账号
var amazonAccounts = ApiServices.GetAmazonAccountList();
//amazonAccounts = amazonAccounts.Where(s => s.Account == "ouzyi" && s.SiteEn=="IT").ToList();
if (!string.IsNullOrWhiteSpace(account))
{
amazonAccounts = amazonAccounts.Where(s => s.Account == account).ToList();
}
if (!string.IsNullOrWhiteSpace(siteEn))
{
amazonAccounts = amazonAccounts.Where(s => s.SiteEn == siteEn).ToList();
}
var maps = ApiUtility.GetProjectMap(new NewQueryFilterDTO { modelId = "309227134293902597", CurrentPage = 1, PageSize = 10000, ListFilter = new List<FieldFilterDTO> { new FieldFilterDTO { Field = "type", Operator = "in", Value = "10" } } });
foreach (var item in amazonAccounts)
{
......@@ -46,7 +53,7 @@ namespace AutoTurnOver.Services
if (item.AmznSpDevAccountObj != null && item.AmznSpTokenObj != null)
{
var task_name = $"SynchroAmazonFinancialEventGroups_v18_{item.Id}";
var task_name = $"SynchroAmazonFinancialEventGroups_v19_{item.Id}";
// 查询最后一次成功抓取的记录
var last_task_synchro_log = MyMySqlConnection._connection.QuerySingleOrDefault<task_synchro_log>(" select * from task_synchro_log where task_name=@task_name and status=1 order by end_time desc limit 1 ", new { task_name = task_name });
......@@ -78,7 +85,7 @@ namespace AutoTurnOver.Services
foreach (var feeItem in fees.Where(s => s.FundTransferStatus == "Succeeded" || (s.ProcessingStatus == "Open" && s.FinancialEventGroupEnd == null)))
{
List<dc_base_amazon_fee> feeDbs = new List<dc_base_amazon_fee>();
dc_base_amazon_fee transferFee = new dc_base_amazon_fee
{
account = item.Account,
......@@ -110,25 +117,59 @@ namespace AutoTurnOver.Services
transferFee.settlement_date_str = $"{transferFee.start_date.Value.ToString("yyyy-MM-ddTHH:mm:ss")}";
transferFee.other = transferFee.total;
transferFee.data_id = $"{transferFee.type}_{transferFee.account}-{transferFee.settlement_date_str}";
var oldData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee>(" select * from dc_base_amazon_fee where data_id=@data_id ", new { data_id = transferFee.data_id });
if (oldData != null)
feeDbs.Add(transferFee);
// 当前账单未完结, 读取预留金额
// 提取预留金额
// 预留金额
decimal reserveAmount = 0M;
var events = GetFinancialEvents(item, feeItem.FinancialEventGroupId);
var reserveCreditDatas = events.Where(s => s.AdjustmentEventList != null && s.AdjustmentEventList.Any(s => s.AdjustmentType == "ReserveCredit")).ToList();
if (reserveCreditDatas.Count >= 1)
{
transferFee.id = oldData.id;
transferFee.settlement_id = oldData.settlement_id;
transferFee.MarketplaceName = oldData.MarketplaceName;
transferFee.MarketplaceNameSys = oldData.MarketplaceNameSys;
var reserveAmountData = reserveCreditDatas.FirstOrDefault(s => s.AdjustmentEventList.Any(s1 => s1.AdjustmentType == "ReserveCredit")).AdjustmentEventList.FirstOrDefault(s => s.AdjustmentType == "ReserveCredit");
if (reserveAmountData != null && reserveAmountData.AdjustmentAmount != null)
{
reserveAmount = (decimal)reserveAmountData.AdjustmentAmount.CurrencyAmount;
}
}
SetProject(maps.data.list, transferFee);
if (transferFee.id == 0)
var reserveAmountDeeData = transferFee.ToJson().ToObj<dc_base_amazon_fee>();
reserveAmountDeeData.total = reserveAmount;
reserveAmountDeeData.type = "Current Reserve Amount From Financial API";
reserveAmountDeeData.type_cn = "预留金额 预估 ( 财务 API )";
reserveAmountDeeData.data_id = $"{reserveAmountDeeData.type}_{reserveAmountDeeData.account}-{reserveAmountDeeData.settlement_date_str}";
if (feeItem.FinancialEventGroupEnd != null)
{
MyMySqlConnection._connection.Insert(transferFee);
reserveAmountDeeData.type_cn = "预留金额 ( 财务 API )";
}
else
feeDbs.Add(reserveAmountDeeData);
// 保存到数据库
foreach (var itemFee in feeDbs)
{
MyMySqlConnection._connection.Update(transferFee);
var oldData = MyMySqlConnection._connection.QueryFirstOrDefault<dc_base_amazon_fee>(" select * from dc_base_amazon_fee where data_id=@data_id ", new { data_id = itemFee.data_id });
if (oldData != null)
{
itemFee.id = oldData.id;
itemFee.settlement_id = oldData.settlement_id;
itemFee.MarketplaceName = oldData.MarketplaceName;
itemFee.MarketplaceNameSys = oldData.MarketplaceNameSys;
}
SetProject(maps.data.list, itemFee);
if (itemFee.id == 0)
{
MyMySqlConnection._connection.Insert(itemFee);
}
else
{
MyMySqlConnection._connection.Update(itemFee);
}
}
}
......@@ -282,9 +323,9 @@ namespace AutoTurnOver.Services
}
}
public void SynchroReportIdByCreate(ReportTypes reportTypeEnum, int version = 8, string account = "", string site = "",DateTime? btime =null ,DateTime? etime = null)
public void SynchroReportIdByCreate(ReportTypes reportTypeEnum, int version = 8, string account = "", string site = "", DateTime? btime = null, DateTime? etime = null)
{
if(btime!=null &&etime!=null)
if (btime != null && etime != null)
{
if (etime.Value < btime.Value)
{
......@@ -346,7 +387,7 @@ namespace AutoTurnOver.Services
}
var reportId = CreateReport(item, new_task_synchro_log.start_time, new_task_synchro_log.end_time, reportTypeEnum);
var reportsDb = new dc_base_amazon_fee_report_log
......@@ -452,10 +493,6 @@ namespace AutoTurnOver.Services
List<dc_base_amazon_fee> feeDatas = new List<dc_base_amazon_fee> { };
foreach (var orderItem in settlementData.AmazonEnvelope.Message.SettlementReport.Order)
{
if (orderItem.AmazonOrderID == "202-9714395-5172367")
{
}
var orderDbData = ApiOrderDataMapDbData(pamsAccount, settlementData.AmazonEnvelope.Message.SettlementReport.SettlementData, orderItem);
feeDatas.AddRange(orderDbData);
}
......@@ -846,16 +883,16 @@ namespace AutoTurnOver.Services
}
else
{
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;
ana_task.ana_error = reportData.ProcessingStatus.ToString() ;
ana_task.report_par_json = reportData.ToJson() ;
ana_task.ana_error = reportData.ProcessingStatus.ToString();
ana_task.report_par_json = reportData.ToJson();
MyMySqlConnection._connection.Update(ana_task);
return;
}
......@@ -879,7 +916,7 @@ namespace AutoTurnOver.Services
table = CsvFileHelper.ReadFromCSV(reportData.ReportDocumentId, true, '\t');
}
foreach (DataRow row in table.Rows)
{
try
......@@ -930,7 +967,7 @@ namespace AutoTurnOver.Services
throw;
}
}
......@@ -959,14 +996,14 @@ namespace AutoTurnOver.Services
public void AnaFbaStorageFeeReportSubmit(string report_type, string queryName)
{
var datas = MyMySqlConnection._connection.Query<report_log_dto>(" select Id,report_id from dc_base_amazon_fee_report_log where report_type=@report_type and ana_status in (0,-1) ", new { report_type = report_type }).ToList();
if(datas!=null && datas.Count >= 1)
if (datas != null && datas.Count >= 1)
{
foreach (var item in datas)
{
RabbitMQHelper.EnqueneMsg(queryName, new t_task_queue { id =$"3_{item.report_id}", create_time = DateTime.Now });
RabbitMQHelper.EnqueneMsg(queryName, new t_task_queue { id = $"3_{item.report_id}", create_time = DateTime.Now });
}
MyMySqlConnection._connection.Execute("update dc_base_amazon_fee_report_log set ana_status=3 where id in @ids ",new { ids = datas.Select(s=>s.Id).ToList()});
MyMySqlConnection._connection.Execute("update dc_base_amazon_fee_report_log set ana_status=3 where id in @ids ", new { ids = datas.Select(s => s.Id).ToList() });
}
}
......@@ -1000,11 +1037,11 @@ namespace AutoTurnOver.Services
{
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 (string.IsNullOrWhiteSpace(reportData.ReportDocumentId))
{
if(reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL|| reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED)
if (reportData.ProcessingStatus == Report.ProcessingStatusEnum.FATAL || reportData.ProcessingStatus == Report.ProcessingStatusEnum.CANCELLED)
{
ana_task.ana_status =-2;
ana_task.ana_status = -2;
MyMySqlConnection._connection.Update(ana_task);
return;
}
......@@ -1014,7 +1051,7 @@ namespace AutoTurnOver.Services
MyMySqlConnection._connection.Update(ana_task);
return;
}
}
StringBuilder response_str = new StringBuilder() { };
using (StreamReader sr = new StreamReader(reportData.ReportDocumentId))
......@@ -1044,7 +1081,7 @@ namespace AutoTurnOver.Services
sku = row.DataRowToString("fnsku"),
report_end_date = reportData.DataEndTime ?? new DateTime(1991, 1, 1)
};
storageFee.fee = row.DataRowToNumber("long-time-range-long-term-storage-fee") ?? 0;
storageFee.fee = row.DataRowToNumber("long-time-range-long-term-storage-fee") ?? 0;
storageFee._date = reportData.DataStartTime.Value.ToDayHome();
//storageFee.site = row.DataRowToString("country_code");
if ("GB".Equals(storageFee.site, StringComparison.CurrentCultureIgnoreCase))
......@@ -1712,6 +1749,21 @@ namespace AutoTurnOver.Services
var reports = amazonConnection.Financial.ListFinancialEventGroups(parameters);
return reports;
}
/// <summary>
/// 查询时间组
/// </summary>
/// <param name="account"></param>
/// <param name="groupId"></param>
/// <param name="btime"></param>
/// <param name="etime"></param>
/// <returns></returns>
public List<FinancialEvents> GetFinancialEvents(AmazonAccountDto account, string groupId)
{
AmazonConnection amazonConnection = MapAmazonConnection(account);
var reports = amazonConnection.Financial.ListFinancialEventsByGroupId(groupId);
return reports;
}
/// <summary>
/// 生成报告
......
using AutoTurnOver.DB;
using AutoTurnOver.Services;
using AutoTurnOver.Utility;
using AutoTurnOver.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
......@@ -51,7 +49,7 @@ namespace ResetOutofstock
//report_invest_return_dao.SynchBtmOrderRefund();
//report_invest_return_dao.CalculationStockScore("962073701");
//dc_ana_deviation_dao.PushAnaTask();
//new AmazonDataSynchroService().SynchroFinancialEventGroups();
//new AmazonDataSynchroService().SynchroFinancialEventGroups("Siqidzi","ES");
//new AmazonDataSynchroService().SetMarketplaceName(DateTime.Now);
//new AmazonDataSynchroService().SetSettlementByDate();
//new AmazonDataSynchroService().SetMarketplaceNameByDate();
......@@ -63,7 +61,7 @@ namespace ResetOutofstock
//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(3);
//new AmazonDataSynchroService().AnaFbaLongTermStorageFeeReport(3);
//new AmazonDataSynchroService().AnaFbaReimbursementsStorageFeeReport(3);
//new AmazonDataSynchroService().AnaFbaOverageStorageFeeReport(report_id: "937084019471");
......
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