Commit 245a942e by lizefeng

新增现金流的sku视图查询

parent 42d21f94
...@@ -2010,8 +2010,8 @@ and start_date<=@end_date and end_date>=@start_date ...@@ -2010,8 +2010,8 @@ and start_date<=@end_date and end_date>=@start_date
bailun_sku = m.bailun_sku, bailun_sku = m.bailun_sku,
site = m.site_code, site = m.site_code,
create_user = user.UserName, create_user = user.UserName,
bdate = m.date.GetMonthFirstDay(), bdate = m.date.GetMonthFirstDay().ToDayHome(),
edate = m.date.LastDayOfMonth(), edate = m.date.LastDayOfMonth().ToDayEnd(),
update_date = DateTime.Now, update_date = DateTime.Now,
update_user = user.UserName, update_user = user.UserName,
project = m.project project = m.project
......
...@@ -37,41 +37,43 @@ namespace AutoTurnOver.DB ...@@ -37,41 +37,43 @@ namespace AutoTurnOver.DB
})).ToList(); })).ToList();
// 查询库存表 // 查询库存表
var stockDatas =( await _connection.QueryAsync<Models.dc_base_stock>(" select * from dc_base_stock where warehouse_code in @warehouse_codes and bailun_sku=@bailun_sku ", new var stockDatas = (await _connection.QueryAsync<Models.dc_base_stock>(" select * from dc_base_stock where warehouse_code in @warehouse_codes and bailun_sku=@bailun_sku ", new
{ {
warehouse_code = warehouse_codes, warehouse_codes = warehouse_codes,
bailun_sku = skuData.sku bailun_sku = skuData.sku
})).ToList(); })).ToList();
//查询在途数据 //查询在途数据
var transitDatas =( await _connection.QueryAsync<Models.dc_mid_transit>(" select * from dc_mid_transit where warehouse_code in @warehouse_codes and bailun_sku=@bailun_sku ", new var transitDatas = (await _connection.QueryAsync<Models.dc_mid_transit>(" select * from dc_mid_transit where warehouse_code in @warehouse_codes and bailun_sku=@bailun_sku ", new
{ {
warehouse_code = warehouse_codes, warehouse_codes = warehouse_codes,
bailun_sku = skuData.sku bailun_sku = skuData.sku
})).ToList(); })).ToList();
var baseSkuData = _connection.QueryFirstOrDefault<dc_base_sku>(" select * from dc_base_sku where bailun_sku=@bailun_sku ", new { bailun_sku = skuData.sku }); var baseSkuData = _connection.QueryFirstOrDefault<dc_base_sku>(" select * from dc_base_sku where bailun_sku=@bailun_sku ", new { bailun_sku = skuData.sku });
var turnover_days = turnover_datas[0].turnover_days; var turnover_days = turnover_datas[0].turnover_days;
var endDate = now.AddDays(turnover_days).LastDayOfMonth().ToDayEnd(); var turnoverDaysEndDate = now.AddDays(turnover_days).LastDayOfMonth().ToDayEnd();
// 查询配置的销量 // 查询配置的销量
var salesDayConfigs = _connection.Query<dc_ana_deviation_sales_day_config>(" select * from dc_ana_deviation_sales_day_config where project=@project and bailun_sku=@bailun_sku and site in @sites and `date`>=@bdate and `date`<=@edate ", new var month12 = DateTime.Parse(now.ToString("yyyy-12-31 23:59:59"));
var salesDayConfigs = _connection.Query<dc_ana_deviation_sales_day_config>(" select * from dc_ana_deviation_sales_day_config where project=@project and bailun_sku=@bailun_sku and site in @sites and `edate`>=@bdate and `bdate`<=@edate ", new
{ {
bailun_sku = baseSkuData.bailun_sku, bailun_sku = baseSkuData.bailun_sku,
sites = skuDatas.Select(s=>s.site).ToList(), sites = skuDatas.Select(s => s.site).ToList(),
bdate = now, bdate = now,
edate = endDate, edate = month12,
project = skuData.project project = skuData.project
}).ToList(); }).ToList();
var thisDate = now; var thisDate = now;
List<dc_ana_deviation> datas = new List<dc_ana_deviation>(); List<dc_ana_deviation> datas = new List<dc_ana_deviation>();
while (thisDate <= endDate) while (thisDate <= month12)
{ {
var thisBdate = thisDate.ToDayHome(); var thisBdate = thisDate.ToDayHome();
var thisEdate = thisDate.LastDayOfMonth().ToDayEnd(); var thisEdate = thisDate.LastDayOfMonth().ToDayEnd();
var dateStr = thisDate.ToString("yyyy-MM"); var dateStr = thisDate.ToString("yyyy-MM");
var sales = (salesDayConfigs.FirstOrDefault(s => s.date_str == dateStr) ?? new dc_ana_deviation_sales_day_config { }).sales; var sales = (salesDayConfigs.FirstOrDefault(s => s.date_str == dateStr) ?? new dc_ana_deviation_sales_day_config { }).sales;
// 写入 【销售产品产品成本】、【销售产品数量】、【剩余可用库存金额】、【剩余可用库存数量】 // 写入 【销售产品产品成本】、【销售产品数量】、【剩余可用库存金额】、【剩余可用库存数量】
SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "销售产品数量", project = skuData.project, sku = skuData.sku, val = sales }); SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "销售产品数量", project = skuData.project, sku = skuData.sku, val = sales });
SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "剩余可用库存数量", project = skuData.project, sku = skuData.sku, val = sales }); SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "剩余可用库存数量", project = skuData.project, sku = skuData.sku, val = sales });
SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "销售产品成本", project = skuData.project, sku = skuData.sku, val = sales * baseSkuData.unit_price }); SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "销售产品成本", project = skuData.project, sku = skuData.sku, val = sales * baseSkuData.unit_price });
SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "剩余可用库存金额", project = skuData.project, sku = skuData.sku, val = sales * baseSkuData.unit_price }); SaveDeviation(datas, new dc_ana_deviation { bdate = thisBdate, edate = thisEdate, date_str = dateStr, field_type = "预测值", field = "剩余可用库存金额", project = skuData.project, sku = skuData.sku, val = sales * baseSkuData.unit_price });
thisDate = thisDate.AddMonths(1); thisDate = thisDate.AddMonths(1);
...@@ -81,25 +83,18 @@ namespace AutoTurnOver.DB ...@@ -81,25 +83,18 @@ namespace AutoTurnOver.DB
// 读取实际值 【销售产品数量】、【销售产品产品成本】、【剩余可用库存数量】、【剩余可用库存金额】、【剩余调拨库存数量】、【剩余调拨库存金额】、【采购在途库存金额】、【采购在途库存数量】 // 读取实际值 【销售产品数量】、【销售产品产品成本】、【剩余可用库存数量】、【剩余可用库存金额】、【剩余调拨库存数量】、【剩余调拨库存金额】、【采购在途库存金额】、【采购在途库存数量】
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余可用库存数量", project = skuData.project, sku = skuData.sku, val = stockDatas.Sum(s=>s.usable_stock) }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余可用库存数量", project = skuData.project, sku = skuData.sku, val = stockDatas.Sum(s => s.usable_stock) });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余可用库存金额", project = skuData.project, sku = skuData.sku, val = stockDatas.Sum(s => s.usable_stock) * baseSkuData.unit_price }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余可用库存金额", project = skuData.project, sku = skuData.sku, val = stockDatas.Sum(s => s.usable_stock) * baseSkuData.unit_price });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "采购在途库存数量", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s=>s.quantity_purchase) }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "采购在途库存数量", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s => s.quantity_purchase) });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "采购在途库存金额", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s => s.quantity_purchase) * baseSkuData.unit_price }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "采购在途库存金额", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s => s.quantity_purchase) * baseSkuData.unit_price });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余调拨库存数量", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s=>s.quantity_transfer) }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余调拨库存数量", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s => s.quantity_transfer) });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余调拨库存金额", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s => s.quantity_transfer) * baseSkuData.unit_price }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "剩余调拨库存金额", project = skuData.project, sku = skuData.sku, val = transitDatas.Sum(s => s.quantity_transfer) * baseSkuData.unit_price });
// 查询销量 // 查询销量
var omsSale = await GetOmsSale(now, nowEdate, skuDatas); var omsSale = await GetOmsSale(now, nowEdate, skuDatas);
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "销售产品数量", project = skuData.project, sku = skuData.sku, val = omsSale }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "销售产品数量", project = skuData.project, sku = skuData.sku, val = omsSale });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "销售产品成本", project = skuData.project, sku = skuData.sku, val = omsSale * baseSkuData.unit_price }); SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "实际值", field = "销售产品成本", project = skuData.project, sku = skuData.sku, val = omsSale * baseSkuData.unit_price });
// 推测值 【销售产品数量】【销售产品产品成本】【剩余可用库存数量】【剩余可用库存金额】【采购在途库存数量】【采购在途库存金额】
// 推测值涉及实际数据,所以只能推测下个月的数据
//var nextBDay = now.AddMonths(1).GetMonthFirstDay().ToDayHome();
//var nextEDay = nextBDay.LastDayOfMonth().ToDayEnd();
//var nextDateStr = nextBDay.ToString("yyyy-MM");
//SaveDeviation(datas, new dc_ana_deviation { bdate = nextBDay, edate = nextEDay, date_str = nextDateStr, field_type = "推测值", field = "销售产品数量", project = skuData.project, sku = skuData.sku, warehouse_code = warehouse.warehouse_code, val = stockData.usable_stock });
//SaveDeviation(datas, new dc_ana_deviation { bdate = nextBDay, edate = nextEDay, date_str = nextDateStr, field_type = "推测值", field = "销售产品成本", project = skuData.project, sku = skuData.sku, warehouse_code = warehouse.warehouse_code, val = stockData.usable_stock * baseSkuData.unit_price });
var lastMonthB = now.AddMonths(-1).GetMonthFirstDay().ToDayHome(); var lastMonthB = now.AddMonths(-1).GetMonthFirstDay().ToDayHome();
var lastMonthE = lastMonthB.LastDayOfMonth().ToDayEnd(); var lastMonthE = lastMonthB.LastDayOfMonth().ToDayEnd();
...@@ -115,10 +110,9 @@ namespace AutoTurnOver.DB ...@@ -115,10 +110,9 @@ namespace AutoTurnOver.DB
field = "销售产品数量", field = "销售产品数量",
project = skuData.project, project = skuData.project,
sku = skuData.sku, sku = skuData.sku,
val = _connection.QueryFirstOrDefault<decimal?>(" select `val` from dc_ana_deviation where sku=@sku and warehouse_code=@warehouse_code and project=@project and field=@field and date_str=@date_str and field_type=@field_type ", new val = _connection.QueryFirstOrDefault<decimal?>(" select `val` from dc_ana_deviation where sku=@sku and project=@project and field=@field and date_str=@date_str and field_type=@field_type ", new
{ {
sku = skuData.sku, sku = skuData.sku,
warehouse_code = skuData.warehouse_code,
project = skuData.project, project = skuData.project,
field = "剩余可用库存数量", field = "剩余可用库存数量",
date_str = lastMonthDateStr, date_str = lastMonthDateStr,
...@@ -138,12 +132,12 @@ namespace AutoTurnOver.DB ...@@ -138,12 +132,12 @@ namespace AutoTurnOver.DB
}); });
// 查询今日的预计到货数据 // 查询今日的预计到货数据
var baseTransExpectarrivaltimeDatas = _connection.Query<dc_base_trans_expectarrivaltime_temp>(" select * from dc_base_trans_expectarrivaltime where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code and expectarrivaltime>=@btime and expectarrivaltime<=@etime ", new var baseTransExpectarrivaltimeDatas = _connection.Query<dc_base_trans_expectarrivaltime_temp>(" select * from dc_base_trans_expectarrivaltime where bailun_sku=@bailun_sku and warehouse_code in @warehouse_codes and expectarrivaltime>=@btime and expectarrivaltime<=@etime ", new
{ {
warehouse_code = skuData.warehouse_code, warehouse_codes = warehouse_codes,
bailun_sku = baseSkuData.bailun_sku, bailun_sku = baseSkuData.bailun_sku,
etime = now, btime = now,
btime = nowEdate etime = nowEdate
}); });
SaveDeviation(datas, new dc_ana_deviation SaveDeviation(datas, new dc_ana_deviation
{ {
...@@ -167,8 +161,40 @@ namespace AutoTurnOver.DB ...@@ -167,8 +161,40 @@ namespace AutoTurnOver.DB
sku = skuData.sku, sku = skuData.sku,
val = datas.FirstOrDefault(s => s.field == "剩余可用库存数量" && s.field_type == "推测值" && s.date_str == nowDateStr).val * baseSkuData.unit_price val = datas.FirstOrDefault(s => s.field == "剩余可用库存数量" && s.field_type == "推测值" && s.date_str == nowDateStr).val * baseSkuData.unit_price
}); });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "推测值", field = "采购在途库存数量", project = skuData.project, sku = skuData.sku, val = turnover_datas.Sum(s=>s.quantity_final_advise) });
SaveDeviation(datas, new dc_ana_deviation { bdate = now, edate = nowEdate, date_str = nowDateStr, field_type = "推测值", field = "采购在途库存金额", project = skuData.project, sku = skuData.sku, val = turnover_datas.Sum(s => s.quantity_final_advise) * baseSkuData.unit_price }); // 周转算法 实际可以用库存+周转期预测到货-周转期预测销量
var turnoverDaysTransExpectarrivaltimeDatas = _connection.Query<dc_base_trans_expectarrivaltime_temp>(" select * from dc_base_trans_expectarrivaltime where bailun_sku=@bailun_sku and warehouse_code in @warehouse_codes and expectarrivaltime<=@etime ", new
{
warehouse_codes = warehouse_codes,
bailun_sku = baseSkuData.bailun_sku,
etime = turnoverDaysEndDate
});
SaveDeviation(datas, new dc_ana_deviation
{
bdate = now,
edate = nowEdate,
date_str = nowDateStr,
field_type = "推测值",
field = "采购在途库存数量",
project = skuData.project,
sku = skuData.sku,
val =
datas.FirstOrDefault(s => s.field == "剩余可用库存数量" && s.field_type == "实际值" && s.date_str == nowDateStr).val
+ turnoverDaysTransExpectarrivaltimeDatas.Sum(s => s.count)
- salesDayConfigs.Where(s => s.bdate <= turnoverDaysEndDate).Sum(s => s.sales)
});
SaveDeviation(datas, new dc_ana_deviation
{
bdate = now,
edate = nowEdate,
date_str = nowDateStr,
field_type = "推测值",
field = "采购在途库存金额",
project = skuData.project,
sku = skuData.sku,
val =
datas.FirstOrDefault(s => s.field == "采购在途库存数量" && s.field_type == "推测值" && s.date_str == nowDateStr).val * baseSkuData.unit_price
});
// 偏差分析 【产品成本预计偏差值】、【产品成本预计偏差比例】、【销售数量预计偏差值】、【销售数量预计偏差比例】、【产品成本实际偏差值】、【产品成本实际偏差比例】、【销售数量实际偏差值】、【销售数量实际偏差比例】 // 偏差分析 【产品成本预计偏差值】、【产品成本预计偏差比例】、【销售数量预计偏差值】、【销售数量预计偏差比例】、【产品成本实际偏差值】、【产品成本实际偏差比例】、【销售数量实际偏差值】、【销售数量实际偏差比例】
...@@ -194,7 +220,7 @@ namespace AutoTurnOver.DB ...@@ -194,7 +220,7 @@ namespace AutoTurnOver.DB
project = skuData.project, project = skuData.project,
sku = skuData.sku, sku = skuData.sku,
val = datas.FirstOrDefault(s => s.field == "产品成本预计偏差值" && s.field_type == "偏差分析" && s.date_str == nowDateStr).val val = datas.FirstOrDefault(s => s.field == "产品成本预计偏差值" && s.field_type == "偏差分析" && s.date_str == nowDateStr).val
.Division( datas.FirstOrDefault(s => s.field == "销售产品成本" && s.field_type == "预测值" && s.date_str == nowDateStr).val) .Division(datas.FirstOrDefault(s => s.field == "销售产品成本" && s.field_type == "预测值" && s.date_str == nowDateStr).val)
}); });
SaveDeviation(datas, new dc_ana_deviation SaveDeviation(datas, new dc_ana_deviation
{ {
...@@ -292,7 +318,7 @@ namespace AutoTurnOver.DB ...@@ -292,7 +318,7 @@ namespace AutoTurnOver.DB
project = skuData.project, project = skuData.project,
sku = skuData.sku, sku = skuData.sku,
val = datas.FirstOrDefault(s => s.field == "剩余可用库存数量" && s.field_type == "实际值" && s.date_str == nowDateStr).val val = datas.FirstOrDefault(s => s.field == "剩余可用库存数量" && s.field_type == "实际值" && s.date_str == nowDateStr).val
- datas.Where(s => s.field == "销售产品数量" && s.field_type == "预测值" && s.bdate <= endDate && s.edate >= now).Sum(s => s.val) // 未来周转期的预测销量 - datas.Where(s => s.field == "销售产品数量" && s.field_type == "预测值" && s.bdate <= turnoverDaysEndDate && s.edate >= now).Sum(s => s.val) // 未来周转期的预测销量
}); });
SaveDeviation(datas, new dc_ana_deviation SaveDeviation(datas, new dc_ana_deviation
{ {
...@@ -315,18 +341,101 @@ namespace AutoTurnOver.DB ...@@ -315,18 +341,101 @@ namespace AutoTurnOver.DB
field = "是否断货", field = "是否断货",
project = skuData.project, project = skuData.project,
sku = skuData.sku, sku = skuData.sku,
val = stockDatas.Sum(s=>s.usable_stock) val = stockDatas.Sum(s => s.usable_stock)
}); });
return 1; return 1;
} }
/// <summary>
/// 查询sku汇总视图
/// </summary>
/// <param name="search_data"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <param name="total"></param>
/// <param name="order"></param>
/// <param name="sort"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public static IEnumerable<deviation_view_dto> GetSkuViews(deviation_search_dto search_data, int offset, int limit, ref int total, string order, string sort)
{
var datas = GetDatas(search_data);
var viewDatas = new List<deviation_view_dto>() { };
var year = DateTime.Now.Year;
foreach (var item in datas.GroupBy(s => new { s.sku, s.project, s.field, s.field_type }))
{
deviation_view_dto itemData = new deviation_view_dto()
{
field = item.Key.field,
field_type = item.Key.field_type,
group_key = item.Key.sku,
project = item.Key.project,
month1 = GetVal(item.AsQueryable(), $"{year}-01"),
month2 = GetVal(item.AsQueryable(), $"{year}-02"),
month3 = GetVal(item.AsQueryable(), $"{year}-03"),
month4 = GetVal(item.AsQueryable(), $"{year}-04"),
month5 = GetVal(item.AsQueryable(), $"{year}-05"),
month6 = GetVal(item.AsQueryable(), $"{year}-06"),
month7 = GetVal(item.AsQueryable(), $"{year}-07"),
month8 = GetVal(item.AsQueryable(), $"{year}-08"),
month9 = GetVal(item.AsQueryable(), $"{year}-09"),
month10 = GetVal(item.AsQueryable(), $"{year}-010"),
month11 = GetVal(item.AsQueryable(), $"{year}-011"),
month12 = GetVal(item.AsQueryable(), $"{year}-012")
};
viewDatas.Add(itemData);
}
total = viewDatas.Count();
var views = viewDatas.Take(limit).Skip(offset);
return views;
}
public static decimal? GetVal(IQueryable<dc_ana_deviation> list, string date_str)
{
var data = list.FirstOrDefault(s => date_str == s.date_str);
if (data == null)
{
return null;
}
else
{
return data.val;
}
}
public static List<dc_ana_deviation> GetDatas(deviation_search_dto search_data)
{
var yearBdate = DateTime.Parse(DateTime.Now.ToString("yyyy-01-01 00:00:00"));
var yearEdate = DateTime.Parse(DateTime.Now.ToString("yyyy-12-31 23:59:59"));
var sql = " select * from dc_ana_deviation where bdate<=@yearEdate and edate>=@yearBdate ";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("yearBdate", yearBdate);
parameters.Add("yearEdate", yearEdate);
if (!string.IsNullOrWhiteSpace(search_data.project))
{
sql += " and t1.project=@project ";
parameters.Add("project", search_data.project);
}
if (!string.IsNullOrWhiteSpace(search_data.sku))
{
sql += " and t1.sku=@sku ";
parameters.Add("sku", search_data.sku);
}
return _connection.Query<dc_ana_deviation>(sql, parameters, commandTimeout: 0).ToList();
}
public async static Task<decimal> GetOmsSale(DateTime btime, DateTime etime, List<dc_ana_deviation_sku> anaSkus) public async static Task<decimal> GetOmsSale(DateTime btime, DateTime etime, List<dc_ana_deviation_sku> anaSkus)
{ {
var sql = " select * from dc_base_oms_sku where warehouse_code in @warehouse_codes and bailun_sku=@bailun_sku and bailun_order_status not in ('Canceled') and bailun_interception_status in ('None', 'Failed') and paid_time<=@etime and paid_time>=@btime "; var sql = " select * from dc_base_oms_sku where warehouse_code in @warehouse_codes and bailun_sku=@bailun_sku and bailun_order_status not in ('Canceled') and bailun_interception_status in ('None', 'Failed') and paid_time<=@etime and paid_time>=@btime ";
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
parameters.Add("warehouse_codes", anaSkus.Select(s=>s.warehouse_code).ToList()); parameters.Add("warehouse_codes", anaSkus.Select(s => s.warehouse_code).ToList());
parameters.Add("bailun_sku", anaSkus[0].sku); parameters.Add("bailun_sku", anaSkus[0].sku);
parameters.Add("btime", btime); parameters.Add("btime", btime);
parameters.Add("etime", etime); parameters.Add("etime", etime);
...@@ -337,9 +446,9 @@ namespace AutoTurnOver.DB ...@@ -337,9 +446,9 @@ namespace AutoTurnOver.DB
var platforms = anaSkus.Where(s => !string.IsNullOrWhiteSpace(s.platform)).Select(s => s.platform).ToList(); var platforms = anaSkus.Where(s => !string.IsNullOrWhiteSpace(s.platform)).Select(s => s.platform).ToList();
omsDatas = omsDatas.Where(s => platforms.Contains(s.platform_type)).ToList(); omsDatas = omsDatas.Where(s => platforms.Contains(s.platform_type)).ToList();
} }
if (anaSkus.Any(s => s.account>0)) if (anaSkus.Any(s => s.account > 0))
{ {
var accounts = anaSkus.Where(s =>s.account>0).Select(s => s.account.Value.ToString()).ToList(); var accounts = anaSkus.Where(s => s.account > 0).Select(s => s.account.Value.ToString()).ToList();
omsDatas = omsDatas.Where(s => accounts.Contains(s.bailun_account_id)).ToList(); omsDatas = omsDatas.Where(s => accounts.Contains(s.bailun_account_id)).ToList();
} }
if (anaSkus.Any(s => !string.IsNullOrWhiteSpace(s.site))) if (anaSkus.Any(s => !string.IsNullOrWhiteSpace(s.site)))
...@@ -355,6 +464,10 @@ namespace AutoTurnOver.DB ...@@ -355,6 +464,10 @@ namespace AutoTurnOver.DB
public static void SaveDeviation(List<dc_ana_deviation> datas, dc_ana_deviation data) public static void SaveDeviation(List<dc_ana_deviation> datas, dc_ana_deviation data)
{ {
if (data.field_type != "偏差分析")
{
data.val = Math.Max(data.val, 0);
}
data._ts = DateTime.Now; data._ts = DateTime.Now;
data.id = _connection.QueryFirstOrDefault<int?>(" select id from dc_ana_deviation where sku=@sku and project=@project and field=@field and date_str=@date_str and field_type=@field_type ", new data.id = _connection.QueryFirstOrDefault<int?>(" select id from dc_ana_deviation where sku=@sku and project=@project and field=@field and date_str=@date_str and field_type=@field_type ", new
{ {
...@@ -384,7 +497,7 @@ namespace AutoTurnOver.DB ...@@ -384,7 +497,7 @@ namespace AutoTurnOver.DB
var skuGroups = _connection.Query<dc_ana_deviation_sku>(" select * from dc_ana_deviation_sku ").ToList().GroupBy(s => new { s.sku, s.project }); var skuGroups = _connection.Query<dc_ana_deviation_sku>(" select * from dc_ana_deviation_sku ").ToList().GroupBy(s => new { s.sku, s.project });
foreach (var item in skuGroups) foreach (var item in skuGroups)
{ {
RabbitMQHelper.EnqueneMsg("aims:deviation-v2:input", new t_task_queue { id = item.ToJson(), create_time = DateTime.Now }); RabbitMQHelper.EnqueneMsg("aims:deviation-v3:input", new t_task_queue { id = item.ToJson(), create_time = DateTime.Now });
} }
} }
} }
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class deviation_search_dto
{
public string sku { get; set; }
public string project { get; set; }
}
public class deviation_view_dto
{
public string group_key { get; set; }
public string project { get; set; }
public string field { get; set; }
public string field_type { get; set; }
public decimal? month1 { get; set; }
public decimal? month2 { get; set; }
public decimal? month3 { get; set; }
public decimal? month4 { get; set; }
public decimal? month5 { get; set; }
public decimal? month6 { get; set; }
public decimal? month7 { get; set; }
public decimal? month8 { get; set; }
public decimal? month9 { get; set; }
public decimal? month10 { get; set; }
public decimal? month11 { get; set; }
public decimal? month12 { get; set; }
}
}
using AutoTurnOver.DB;
using AutoTurnOver.Models;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Text;
namespace AutoTurnOver.Services
{
public class DeviationServices
{
/// <summary>
/// 获取sku视图
/// </summary>
/// <param name="search_data"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <param name="total"></param>
/// <param name="order"></param>
/// <param name="sort"></param>
/// <returns></returns>
public IEnumerable<deviation_view_dto> GetSkuViews(deviation_search_dto search_data, int offset, int limit, ref int total, string order = "", string sort = "")
{
var datas = dc_ana_deviation_dao.GetSkuViews(search_data, offset, limit, ref total, order, sort);
return datas;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AutoTurnOver.Services;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using AutoTurnOver.Utility;
using AutoTurnOver.Models.Report;
using System.Data;
using AutoTurnOver.Common;
using System.IO;
using AutoTurnOver.Models;
using AutoTurnOver.Models.stock;
using AutoTurnOver.DB;
using Dapper;
using AutoTurnOver.Models.auto;
namespace AutoTurnOver.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class DeviationController : ControllerBase
{
/// <summary>
/// 差异分析 现金流 sku视图
/// </summary>
/// <param name="project"></param>
/// <param name="sku"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <param name="order"></param>
/// <param name="sort"></param>
/// <returns></returns>
public JsonResult GetSkuViews(string project, string sku, int offset, int limit, string order, string sort)
{
var m = new deviation_search_dto
{
project = project,
sku = sku
};
var services = new DeviationServices();
var total = 0;
var list = services.GetSkuViews(m, offset, limit, ref total, order: order, sort: sort);
return new JsonResult(new
{
rows = list,
total = total,
});
}
}
}
\ No newline at end of file
...@@ -11,7 +11,7 @@ namespace ResetOutofstock ...@@ -11,7 +11,7 @@ namespace ResetOutofstock
class DeviationRabbitBackgroundService : RabbitWorkerBase<t_task_queue> class DeviationRabbitBackgroundService : RabbitWorkerBase<t_task_queue>
{ {
public DeviationRabbitBackgroundService() : base("差异分析服务", "aims:deviation-v2:input", 1) public DeviationRabbitBackgroundService() : base("差异分析服务", "aims:deviation-v3:input", 1)
{ {
} }
...@@ -27,7 +27,7 @@ namespace ResetOutofstock ...@@ -27,7 +27,7 @@ namespace ResetOutofstock
} }
catch (Exception e) catch (Exception e)
{ {
RabbitMQHelper.EnqueneMsg("aims:deviation-v2:input", taskDto); RabbitMQHelper.EnqueneMsg("aims:deviation-v3:input", taskDto);
Console.WriteLine($"差异分析服务 数据异常,异常原因为:{e.Message},异常堆栈为:{e.StackTrace}"); Console.WriteLine($"差异分析服务 数据异常,异常原因为:{e.Message},异常堆栈为:{e.StackTrace}");
} }
......
...@@ -50,7 +50,7 @@ namespace ResetOutofstock ...@@ -50,7 +50,7 @@ namespace ResetOutofstock
//report_invest_return_dao.ShareAdFee(); //report_invest_return_dao.ShareAdFee();
//report_invest_return_dao.SynchBtmOrderRefund(); //report_invest_return_dao.SynchBtmOrderRefund();
//report_invest_return_dao.CalculationStockScore("962073701"); //report_invest_return_dao.CalculationStockScore("962073701");
//dc_ana_deviation_dao.PushAnaTask(); //dc_ana_deviation_dao.PushAnaTask();
} }
catch (Exception ex) catch (Exception ex)
{ {
......
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