Commit 610d5333 by zhoujinhui

更正缺货查询

parent 9998c623
...@@ -23,7 +23,13 @@ namespace AutoTurnOver.DB ...@@ -23,7 +23,13 @@ namespace AutoTurnOver.DB
public static List<week_shortage_details_page_output_dto> GetWeekShortagePageList(week_shortage_details_page_input_dto m, int offset, int limit, ref int total) public static List<week_shortage_details_page_output_dto> GetWeekShortagePageList(week_shortage_details_page_input_dto m, int offset, int limit, ref int total)
{ {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.Append(" SELECT * FROM dc_auto_week_shortage_details ORDER BY create_date_time DESC "); sql.Append(@"
SELECT t1.*,t2.product_code,t3.warehouse_name
FROM dc_auto_week_shortage_details AS t1
LEFT JOIN dc_base_warehouse AS t3 ON t3.warehouse_code = t1.warehouse_code
LEFT JOIN dc_base_sku AS t2 ON t2.bailun_sku = t1.bailun_sku
WHERE 1=1 ORDER BY t1.create_date_time DESC
");
try try
{ {
var obj = _connection.Page<week_shortage_details_page_output_dto>(offset, limit, sql.ToString(), ref total); var obj = _connection.Page<week_shortage_details_page_output_dto>(offset, limit, sql.ToString(), ref total);
...@@ -37,16 +43,9 @@ namespace AutoTurnOver.DB ...@@ -37,16 +43,9 @@ namespace AutoTurnOver.DB
public static bool Insert(dc_auto_week_shortage_details model) public static bool Insert(dc_auto_week_shortage_details model)
{ {
StringBuilder sql = new StringBuilder();
sql.Append("INSERT INTO `dc_auto_week_shortage_details` (`bailun_sku`, `warehouse_code`, `warehousing_time`, `historical_purchase_quantity`,");
sql.Append(" `historical_sales_quantity`, `seven_days_average`, `stockout_time`, `pds_item_id`, `ana_seven_days_average`,");
sql.Append(" `first_sales_platform_average`, `second_sales_platform_average`, `safety_stock`, `start_date`, `end_date`, `create_date_time`, `last_synch_time`)");
sql.Append(" VALUES (@bailun_sku, @warehouse_code, @warehousing_time, @historical_purchase_quantity,");
sql.Append(" @historical_sales_quantity, @seven_days_average, @stockout_time, @pds_item_id, @ana_seven_days_average,");
sql.Append(" @first_sales_platform_average, @second_sales_platform_average, @safety_stock, @start_date, @end_date, @create_date_time, @last_synch_time);");
try try
{ {
var count = _connection.Execute(sql.ToString(), model); var count = _connection.Insert(model);
return count > 0; return count > 0;
} }
catch (Exception ex) catch (Exception ex)
...@@ -74,5 +73,69 @@ namespace AutoTurnOver.DB ...@@ -74,5 +73,69 @@ namespace AutoTurnOver.DB
return new dc_auto_week_shortage_details(); return new dc_auto_week_shortage_details();
} }
} }
/// <summary>
/// 查询缺货数据
/// </summary>
/// <param name="startTime"></param>
/// <param name="endtime"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <param name="total"></param>
/// <returns></returns>
public static List<gmt_out_stock_page_output_dto> GetGmtOutStockPageList(DateTime startTime, DateTime endtime, int offset, int limit, ref int total)
{
StringBuilder sql = new StringBuilder();
sql.Append($@"
SELECT t1.*,t3.first_inbound_date,t4.bailun_sku_quantity_ordered FROM(
SELECT bailun_sku,warehouse_code,MAX(gmt_out_stock_modified) AS gmt_out_stock_modified FROM dc_mid_transit
WHERE gmt_out_stock_modified>= '{startTime}' AND gmt_out_stock_modified< '{endtime}' GROUP BY bailun_sku,warehouse_code
) AS t1
LEFT JOIN dc_base_stock AS t3 ON t3.bailun_sku = t1.bailun_sku AND t3.warehouse_code = t1.warehouse_code
LEFT JOIN(
SELECT bailun_sku,warehouse_code,SUM(bailun_sku_quantity_ordered)bailun_sku_quantity_ordered FROM
dc_base_oms_sku_30 WHERE gmt_create>= '{startTime}' AND gmt_create< '{endtime}'
and has_fba_s = 0 and has_delete = 0 and has_scalp = 0
and has_buyer_remark = 0 and has_platsku_remark = 0 and has_innersale = 0 and bailun_order_status !='Canceled'
and platform_order_type != '手工单' GROUP BY bailun_sku,warehouse_code
)AS t4 ON t4.bailun_sku = t1.bailun_sku AND t4.warehouse_code = t1.warehouse_code");
try
{
var obj = _connection.Page<gmt_out_stock_page_output_dto>(offset, limit, sql.ToString(), ref total);
return obj.AsList();
}
catch (Exception ex)
{
return new List<gmt_out_stock_page_output_dto>();
}
}
/// <summary>
/// 查询采购数量
/// </summary>
/// <param name="skus"></param>
/// <param name="startTime"></param>
/// <param name="endtime"></param>
/// <returns></returns>
public static List<gmt_out_stock_page_output_dto> GetSkuPurchaseList(List<string> skus, DateTime startTime, DateTime endtime)
{
StringBuilder sql = new StringBuilder();
string sku = "'" + string.Join("','", skus) + "'";
sql.Append(@"
SELECT bailun_sku,warehouse_code,SUM(count) purchase_num FROM dc_base_purchase WHERE `status` = 1
AND create_time>=@startTime AND create_time<@endtime AND bailun_sku IN(" + sku + ") GROUP BY bailun_sku,warehouse_code");
try
{
var parameters = new DynamicParameters();
parameters.Add("startTime", startTime);
parameters.Add("endtime", endtime);
var obj = _connection.Query<gmt_out_stock_page_output_dto>(sql.ToString(), parameters);
return obj.AsList();
}
catch (Exception)
{
return new List<gmt_out_stock_page_output_dto>();
}
}
} }
} }
using System;
namespace AutoTurnOver.Models.ApiDto.WeeklyStatistics
{
/// <summary>
/// 查询缺货记录输出参数
/// </summary>
public class gmt_out_stock_page_output_dto
{
/// <summary>
/// sku
/// </summary>
public string bailun_sku { get; set; }
/// <summary>
/// 仓库编码
/// </summary>
public string warehouse_code { get; set; }
/// <summary>
/// 缺货时间
/// </summary>
public DateTime gmt_out_stock_modified { get; set; }
/// <summary>
/// 首次入库时间
/// </summary>
public DateTime? first_inbound_date { get; set; }
/// <summary>
/// 销售数量
/// </summary>
public int? bailun_sku_quantity_ordered { get; set; }
/// <summary>
/// 采购数量
/// </summary>
public int? purchase_num { get; set; }
}
}
using System; namespace AutoTurnOver.Models.ApiDto.WeeklyStatistics
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models.ApiDto.WeeklyStatistics
{ {
/// <summary> /// <summary>
/// aims普货周缺货数据输出参数信息 /// aims普货周缺货数据输出参数信息
/// </summary> /// </summary>
public class week_shortage_details_page_output_dto: dc_auto_week_shortage_details public class week_shortage_details_page_output_dto: dc_auto_week_shortage_details
{ {
/// <summary>
/// 产品编码
/// </summary>
public string product_code { get; set; }
/// <summary>
/// 仓库名称
/// </summary>
public string warehouse_name { get; set; }
} }
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ using AutoTurnOver.Models.ApiDto.WeeklyStatistics; ...@@ -3,6 +3,7 @@ using AutoTurnOver.Models.ApiDto.WeeklyStatistics;
using AutoTurnOver.Utility; using AutoTurnOver.Utility;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
namespace AutoTurnOver.Services namespace AutoTurnOver.Services
{ {
...@@ -81,7 +82,7 @@ namespace AutoTurnOver.Services ...@@ -81,7 +82,7 @@ namespace AutoTurnOver.Services
} }
/// <summary> /// <summary>
/// 定时执行 /// 定时执行冗余数据
/// </summary> /// </summary>
public void TimingWeekRedundancyTask() public void TimingWeekRedundancyTask()
{ {
...@@ -113,17 +114,42 @@ namespace AutoTurnOver.Services ...@@ -113,17 +114,42 @@ namespace AutoTurnOver.Services
} }
/// <summary> /// <summary>
/// 定时执行 /// 定时执行缺货数据
/// </summary> /// </summary>
public void TimingWeekShortageTask() public void TimingWeekShortageTask()
{ {
var model = new Models.dc_auto_week_shortage_details int limit = 20;
int total = 0;
for (int i = 1; i < 30000; i++)
{ {
create_date_time = DateTime.Now, int offset = (i - 1) * limit;
start_date = DateHelper.GetWeekFirstDayMon(DateTime.Now.AddDays(-1)), DateTime startTime = DateHelper.GetWeekFirstDayMon(DateTime.Now);
end_date = DateHelper.GetWeekLastDaySun(DateTime.Now.AddDays(-1)) DateTime endtime = DateHelper.GetWeekLastDaySun(DateTime.Now).AddDays(1).AddMilliseconds(-1);
};
dc_auto_week_shortage_dao.Insert(model); var dataList = dc_auto_week_shortage_dao.GetGmtOutStockPageList(startTime, endtime, offset, limit, ref total);
if (dataList.Count <= 0) break;
var skus = dataList.Select(x => x.bailun_sku).ToList();
var findPurchases = dc_auto_week_shortage_dao.GetSkuPurchaseList(skus, startTime, endtime);
foreach (var item in dataList)
{
var purchaseModel = findPurchases.FirstOrDefault(x => x.bailun_sku == item.bailun_sku);
var model = new Models.dc_auto_week_shortage_details
{
create_date_time = DateTime.Now,
stockout_time = item.gmt_out_stock_modified,
bailun_sku = item.bailun_sku,
last_synch_time = DateTime.Now,
warehouse_code = item.warehouse_code,
warehousing_time = item.first_inbound_date,
historical_sales_quantity = item.bailun_sku_quantity_ordered??0,
historical_purchase_quantity = purchaseModel?.purchase_num??0,
start_date = DateHelper.GetWeekFirstDayMon(DateTime.Now.AddDays(-1)),
end_date = DateHelper.GetWeekLastDaySun(DateTime.Now.AddDays(-1))
};
dc_auto_week_shortage_dao.Insert(model);
Console.WriteLine($"写入缺货数据:{i}---{item.bailun_sku}");
}
}
} }
} }
} }
...@@ -58,7 +58,7 @@ namespace AutoTurnOver.Controllers ...@@ -58,7 +58,7 @@ namespace AutoTurnOver.Controllers
DataTable table = new DataTable(); DataTable table = new DataTable();
string[] cols = new string[] { string[] cols = new string[] {
"商品编码", "SKU","名称", "周销量", "周gmv", "周退款数", "周退款金额", "利润率", "利润额","退款率","创建时间" "商品编码", "SKU","名称", "周销量", "周gmv", "周退款数", "周退款金额", "利润率", "利润额","退款率","起始日期","结束日期","创建时间"
}; };
foreach (var item in cols) foreach (var item in cols)
{ {
...@@ -80,6 +80,8 @@ namespace AutoTurnOver.Controllers ...@@ -80,6 +80,8 @@ namespace AutoTurnOver.Controllers
row["利润率"] = itemData.profit_margin; row["利润率"] = itemData.profit_margin;
row["利润额"] = itemData.amount_of_profit; row["利润额"] = itemData.amount_of_profit;
row["退款率"] = itemData.refund_rate; row["退款率"] = itemData.refund_rate;
row["起始日期"] = itemData.start_date;
row["结束日期"] = itemData.end_date;
row["创建时间"] = itemData.create_date_time; row["创建时间"] = itemData.create_date_time;
table.Rows.Add(row); table.Rows.Add(row);
...@@ -134,7 +136,7 @@ namespace AutoTurnOver.Controllers ...@@ -134,7 +136,7 @@ namespace AutoTurnOver.Controllers
DataTable table = new DataTable(); DataTable table = new DataTable();
string[] cols = new string[] { string[] cols = new string[] {
"商品编码", "SKU", "仓库编码", "仓库名称", "入库时间", "过去7天日均", "总库存数", "总库存金额","冗余数","冗余金额","冗余发生日期","创建时间" "商品编码", "SKU", "仓库编码", "仓库名称", "入库时间", "过去7天日均", "总库存数", "总库存金额","冗余数","冗余金额","冗余发生日期","起始日期","结束日期","创建时间"
}; };
foreach (var item in cols) foreach (var item in cols)
{ {
...@@ -156,6 +158,8 @@ namespace AutoTurnOver.Controllers ...@@ -156,6 +158,8 @@ namespace AutoTurnOver.Controllers
row["冗余数"] = itemData.redundant_number; row["冗余数"] = itemData.redundant_number;
row["冗余金额"] = itemData.redundancy_amount; row["冗余金额"] = itemData.redundancy_amount;
row["冗余发生日期"] = itemData.redundancy_occurrence_date; row["冗余发生日期"] = itemData.redundancy_occurrence_date;
row["起始日期"] = itemData.start_date;
row["结束日期"] = itemData.end_date;
row["创建时间"] = itemData.create_date_time; row["创建时间"] = itemData.create_date_time;
table.Rows.Add(row); table.Rows.Add(row);
} }
...@@ -209,7 +213,7 @@ namespace AutoTurnOver.Controllers ...@@ -209,7 +213,7 @@ namespace AutoTurnOver.Controllers
DataTable table = new DataTable(); DataTable table = new DataTable();
string[] cols = new string[] { string[] cols = new string[] {
"商品编码", "SKU", "仓库编码", "仓库名称", "入库时间", "历史采购数量", "历史销售数量", "过去7天日均","缺货时间","pds开发竞品item", "商品编码", "SKU", "仓库编码", "仓库名称", "入库时间", "历史采购数量", "历史销售数量", "过去7天日均","缺货时间","pds开发竞品item",
"ana市场模糊7日均","第一销售平台7日均","第二销售平台7日均","安全库存","创建时间" "ana市场模糊7日均","第一销售平台7日均","第二销售平台7日均","安全库存","起始日期","结束日期","创建时间"
}; };
foreach (var item in cols) foreach (var item in cols)
{ {
...@@ -234,6 +238,8 @@ namespace AutoTurnOver.Controllers ...@@ -234,6 +238,8 @@ namespace AutoTurnOver.Controllers
row["第一销售平台7日均"] = itemData.first_sales_platform_average; row["第一销售平台7日均"] = itemData.first_sales_platform_average;
row["第二销售平台7日均"] = itemData.second_sales_platform_average; row["第二销售平台7日均"] = itemData.second_sales_platform_average;
row["安全库存"] = itemData.safety_stock; row["安全库存"] = itemData.safety_stock;
row["起始日期"] = itemData.start_date;
row["结束日期"] = itemData.end_date;
row["创建时间"] = itemData.create_date_time; row["创建时间"] = itemData.create_date_time;
table.Rows.Add(row); table.Rows.Add(row);
} }
......
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