Commit 7e46bb24 by 泽锋 李

利润计算新增计算过程

parent 8056813c
......@@ -1078,12 +1078,12 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
update dc_base_forecast_history as t1
left join dc_base_stock as t2 on t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code
set t1.usable_stock = t2.usable_stock
where t1.date>=@btime ", new { btime = DateTime.Now.ToDayHome()}, commandTimeout: 0);
where t1.date>=@btime ", new { btime = DateTime.Now.ToDayHome() }, commandTimeout: 0);
_connection.Execute(@" set session transaction isolation level read uncommitted;
update dc_base_forecast_history as t1
left join dc_mid_transit as t2 on t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code
set t1.quantity_transfer = t2.quantity_transfer,t1.quantity_purchase = t2.quantity_purchase
where t1.date>=@btime ", new { btime = DateTime.Now.ToDayHome()}, commandTimeout: 0);
where t1.date>=@btime ", new { btime = DateTime.Now.ToDayHome() }, commandTimeout: 0);
_connection.Execute(@"
......@@ -1246,14 +1246,18 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
new transfer_profit_dto{ name ="安全库存数量",days = new List<transfer_profit_dto.day_dto>()},
new transfer_profit_dto{ name ="空运周转天数",days = new List<transfer_profit_dto.day_dto>()},
new transfer_profit_dto{ name ="海运周转天数",days = new List<transfer_profit_dto.day_dto>()},
new transfer_profit_dto{ name ="30天预测销量海运-实际金额汇总",days = new List<transfer_profit_dto.day_dto>()},
new transfer_profit_dto{ name ="30天预测销量空运-实际金额汇总",days = new List<transfer_profit_dto.day_dto>()},
};
var result = GetModel(bailun_sku, warehouse_code);
var result_air = GetModelAir(bailun_sku, warehouse_code);
var result_ocean = GetModelOcean(bailun_sku, warehouse_code);
var base_wa = _connection.QueryFirstOrDefault<string>(" select t2.`code` from dc_base_warehouse as t1 left join dc_base_country as t2 on t1.area_name = t2.`name` where warehouse_code=@warehouse_code ", new { warehouse_code });
var dc_mid_transit_data = _connection.QueryFirstOrDefault<int?>(" select quantity_transfer+quantity_purchase from dc_mid_transit as t1 where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku, warehouse_code })??0;
var dc_stock_data = _connection.QueryFirstOrDefault<int?>(" select usable_stock from dc_base_stock as t1 where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku, warehouse_code })??0;
var dc_mid_transit_data = _connection.QueryFirstOrDefault<int?>(" select quantity_transfer+quantity_purchase from dc_mid_transit as t1 where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku, warehouse_code }) ?? 0;
var dc_stock_data = _connection.QueryFirstOrDefault<int?>(" select usable_stock from dc_base_stock as t1 where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku, warehouse_code }) ?? 0;
var dc_base_sku_data = _connection.QueryFirstOrDefault<dc_base_sku>(" select * from dc_base_sku where bailun_sku=@bailun_sku ", new { bailun_sku });
......@@ -1268,12 +1272,21 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
has_history_order = 90
}).Where(s => s.min_freight_unit_price > 1);
var logoCeanData = logisticsDatas.Where(s => s.TransportType == 2).OrderBy(s => s.min_freight_unit_price).FirstOrDefault();
modalData.freight_unit_price_ocean = logoCeanData.min_freight_unit_price.Value / (logoCeanData.min_freight_unit_weight ?? 1) * (dc_base_sku_data.weight/1000);
modalData.freight_unit_price_ocean = Math.Round( logoCeanData.min_freight_unit_price.Value / (logoCeanData.min_freight_unit_weight ?? 1) * (dc_base_sku_data.weight / 1000),2);
var logoAirData = logisticsDatas.Where(s => s.TransportType == 3).OrderBy(s => s.min_freight_unit_price).FirstOrDefault();
modalData.freight_unit_price_air = logoAirData.min_freight_unit_price.Value / (logoAirData.min_freight_unit_weight ?? 1) * (dc_base_sku_data.weight/1000);
modalData.freight_unit_price_air = Math.Round( logoAirData.min_freight_unit_price.Value / (logoAirData.min_freight_unit_weight ?? 1) * (dc_base_sku_data.weight / 1000),2);
var sales_details = result.sales_details.ToObj<List<decimal>>().Select(s => (int)Math.Ceiling(s)).ToList();
var days30 = 30;
var sales30 = 0;
for (int i = 7; i < days30 + 7; i++)
{
if (sales_details.Count - 1 >= i)
{
sales30 += sales_details[i];
}
}
var advised_details = result.advised_details.ToObj<List<decimal>>();
var advised_details_air = result_air.advised_details.ToObj<List<decimal>>();
var advised_details_ocean = result_ocean.advised_details.ToObj<List<decimal>>();
......@@ -1288,29 +1301,69 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
// 预测未来
if (this_time_end >= now)
{
modalData.freight_unit_price = _connection.QueryFirstOrDefault<decimal?>(" select freight_unit_price from dc_base_transfer_freight where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku limit 1 ", new
{
warehouse_code = result.warehouse_code,
bailun_sku = result.bailun_sku
});
datas.FirstOrDefault(s => s.name == "实际运费单价").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_unit_price,
formula = $" 历史调拨单费用平均值 "
});
//30天周转数
modalData.quantity_final_advise_30 = sales30;
modalData.freight_price_30 = sales30 * modalData.freight_unit_price;
modalData.freight_price_ocean_30 = sales30 * modalData.freight_unit_price_ocean;
modalData.freight_price_air_30 = sales30 * modalData.freight_unit_price_air;
datas.FirstOrDefault(s => s.name == "30天预测销量海运-实际金额汇总").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_ocean_30 - modalData.freight_price_30,
formula = $@" 【30天预测销量海运-实际金额汇总】 = 预测30日销量( {sales30})* ( 海运运费单价({modalData.freight_unit_price_ocean}) - 历史平均运费单价({modalData.freight_unit_price}))
<br/>海运运费单价({modalData.freight_unit_price_ocean}) = (最近90天内发过的最便宜的海运物流 {logoCeanData.Line_Name} 运费单价 {logoCeanData.min_freight_unit_price / (logoCeanData.min_freight_unit_weight ?? 1) }/kg )* 产品重量 ({dc_base_sku_data.weight / 1000} kg )
"
});
datas.FirstOrDefault(s => s.name == "30天预测销量空运-实际金额汇总").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_air_30 - modalData.freight_price_30,
formula = $@" 【30天预测销量空运-实际金额汇总】 = 预测30日销量( {sales30})* ( 空运运费单价({modalData.freight_unit_price_air}) - 历史平均运费单价({modalData.freight_unit_price}))
<br/>空运运费单价({modalData.freight_unit_price_air}) = (最近90天内发过的最便宜的空运物流 {logoAirData.Line_Name} 运费单价 {logoAirData.min_freight_unit_price / (logoAirData.min_freight_unit_weight ?? 1) }/kg )* 产品重量 ({dc_base_sku_data.weight / 1000} kg )
"
});
datas.FirstOrDefault(s => s.name == "安全库存数量").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = result.quantity_safe_inventory
val = result.quantity_safe_inventory,
formula = " 安全库存数量 = aims 系统配置天数 * 日均销量 "
});
datas.FirstOrDefault(s => s.name == "空运周转天数").days.Add(new transfer_profit_dto.day_dto
{
has_int = true,
date = this_time,
val = result_air.turnover_days
val = result_air.turnover_days,
formula = $" 【空运周转天数】 = 供应链长度( {result_air.turnover_days} ) = 下单天数( {result_air.purchase_create_order_days} ) + 财务付款时间( {result_air.payment_before_delivery} ) + 供应商交期( {result_air.supplier_delivery} ) + 质检入库天数( {result_air.inspection_delivery} ) + 调拨启航等待天数( 0 ) + 调拨头程天数( {result_air.transfer_delivery} ) + 海外仓入库天数( {result_air.abroad_inbound_delivery} ) + 调拨打包天数( {result_air.transfer_bale_delivery} )"
});
datas.FirstOrDefault(s => s.name == "海运周转天数").days.Add(new transfer_profit_dto.day_dto
{
has_int = true,
date = this_time,
val = result_ocean.turnover_days
val = result_ocean.turnover_days,
formula = $" 【空运周转天数】 = 供应链长度( {result_ocean.turnover_days} ) = 下单天数( {result_ocean.purchase_create_order_days} ) + 财务付款时间( {result_ocean.payment_before_delivery} ) + 供应商交期( {result_ocean.supplier_delivery} ) + 质检入库天数( {result_ocean.inspection_delivery} ) + 调拨启航等待天数( 0 ) + 调拨头程天数( {result_ocean.transfer_delivery} ) + 海外仓入库天数( {result_ocean.abroad_inbound_delivery} ) + 调拨打包天数( {result_ocean.transfer_bale_delivery} )"
});
modalData.unit_price = dc_base_sku_data.unit_price;
datas.FirstOrDefault(s => s.name == "采购单价").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = Math.Round( modalData.unit_price??0,1)
val = Math.Round(modalData.unit_price ?? 0, 1),
formula = " 【采购单价】从产品库读取配置"
});
// 周转天数 * 加权日均
......@@ -1322,103 +1375,108 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
datas.FirstOrDefault(s => s.name == "实际建议周转数").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_advise
val = modalData.quantity_final_advise,
formula =$" 【实际建议周转数】= 供应链长度预测销量({result.turnover_sales}) + 安全库存({ result.quantity_safe_inventory}) "
});
modalData.quantity_final_advise_amount = Math.Round( (modalData.quantity_final_advise ?? 0) * (modalData.unit_price??0),2);
modalData.quantity_final_advise_amount = Math.Round((modalData.quantity_final_advise ?? 0) * (modalData.unit_price ?? 0), 2);
datas.FirstOrDefault(s => s.name == "实际建议周转金额").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_advise_amount
val = modalData.quantity_final_advise_amount,
formula = $" 【实际建议周转金额】 = 【实际建议周转数 {modalData.quantity_final_advise}】 * 【采购单价 {Math.Round(modalData.unit_price ?? 0, 1)}】"
});
// 在库+在途
modalData.turnover = dc_mid_transit_data+ dc_stock_data;
modalData.turnover = dc_mid_transit_data + dc_stock_data;
datas.FirstOrDefault(s => s.name == "实际周转数").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.turnover
});
modalData.freight_unit_price = _connection.QueryFirstOrDefault<decimal?>(" select freight_unit_price from dc_base_transfer_freight where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku limit 1 ", new
{
warehouse_code = result.warehouse_code,
bailun_sku = result.bailun_sku
});
datas.FirstOrDefault(s => s.name == "实际运费单价").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_unit_price
val = modalData.turnover,
formula = $" 【实际周转数】 = 采购+调拨在途 ({dc_mid_transit_data}) + 在库 ({dc_stock_data}) "
});
modalData.freight_price = modalData.freight_unit_price * modalData.turnover;
datas.FirstOrDefault(s => s.name == "实际周转运费").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price
val = modalData.freight_price,
formula =$" 【实际周转运费】 = 【平均运费单价 {modalData.freight_unit_price}】 * 【实际周转数 {modalData.turnover}】 "
});
// 实际建议周转运费
modalData.quantity_final_advise_freight = Math.Round((modalData.quantity_final_advise ?? 0) * (modalData.freight_unit_price ?? 0), 2); ;
//实际周转金额
modalData.turnover_amount = modalData.turnover* modalData.unit_price;
modalData.turnover_amount = modalData.turnover * modalData.unit_price;
modalData.quantity_final_advise_ocean = (int)Math.Round(result_ocean.turnover_sales + result_ocean.turnover_sales);
datas.FirstOrDefault(s => s.name == "海运周转数(推荐海运)").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_advise_ocean
val = modalData.quantity_final_advise_ocean,
formula =$" 【海运周转数(推荐海运)】 = 海运供应链长度预测销量({result_ocean.turnover_sales}) + 安全库存({ result_ocean.quantity_safe_inventory}) "
});
modalData.quantity_final_advise_ocean_amount = Math.Round( (modalData.quantity_final_advise_ocean??0) * (modalData.unit_price??0),2);
modalData.quantity_final_advise_ocean_amount = Math.Round((modalData.quantity_final_advise_ocean ?? 0) * (modalData.unit_price ?? 0), 2);
datas.FirstOrDefault(s => s.name == "海运周转金额").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_advise_ocean_amount
val = modalData.quantity_final_advise_ocean_amount,
formula = $" 【海运周转金额】 = 【海运周转数(推荐海运){modalData.quantity_final_advise_ocean}】* 【采购单价 {modalData.unit_price}】"
});
modalData.freight_price_ocean = Math.Round( (modalData.quantity_final_advise_ocean??0) * modalData.freight_unit_price_ocean,2);
modalData.freight_price_ocean = Math.Round((modalData.quantity_final_advise_ocean ?? 0) * modalData.freight_unit_price_ocean, 2);
datas.FirstOrDefault(s => s.name == "海运周转运费").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_ocean
val = modalData.freight_price_ocean,
formula = $" 【海运周转运费】= 【海运周转数(推荐海运){modalData.quantity_final_advise_ocean}】* 【(最近90天内发过的最便宜的海运物流 {logoCeanData.Line_Name} 运费单价 {logoCeanData.min_freight_unit_price / (logoCeanData.min_freight_unit_weight ?? 1) }/kg )* 产品重量 ({dc_base_sku_data.weight / 1000} kg )】 "
});
modalData.quantity_final_advise_air = (int)Math.Round(result_air.turnover_sales + result_air.quantity_safe_inventory);
datas.FirstOrDefault(s => s.name == "空运周转数(推荐空运)").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_advise_air
val = modalData.quantity_final_advise_air,
formula =$" 【空运周转数(推荐空运)】 = 空运供应链长度预测销量({result_air.turnover_sales}) + 安全库存({ result_air.quantity_safe_inventory})"
});
modalData.quantity_final_advise_air_amount = Math.Round( modalData.quantity_final_advise_air * modalData.unit_price??0,2);
modalData.quantity_final_advise_air_amount = Math.Round(modalData.quantity_final_advise_air * modalData.unit_price ?? 0, 2);
datas.FirstOrDefault(s => s.name == "空运周转金额").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_advise_air_amount
val = modalData.quantity_final_advise_air_amount,
formula = $" 【空运周转金额】 = 【空运周转数(推荐空运){modalData.quantity_final_advise_air}】* 【采购单价 {modalData.unit_price}】"
});
modalData.freight_price_air = Math.Round( (modalData.quantity_final_advise_air??0) * modalData.freight_unit_price_air,2);
modalData.freight_price_air = Math.Round((modalData.quantity_final_advise_air ?? 0) * modalData.freight_unit_price_air, 2);
datas.FirstOrDefault(s => s.name == "空运周转运费").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_air
val = modalData.freight_price_air,
formula = $" 【空运周转运费】= 【空运周转数(推荐空运){modalData.quantity_final_advise_air}】* 【(最近90天内发过的最便宜的海运物流 {logoAirData.Line_Name} 运费单价 {logoAirData.min_freight_unit_price / (logoAirData.min_freight_unit_weight ?? 1) }/kg )* 产品重量 ({dc_base_sku_data.weight / 1000} kg )】 "
});
modalData.freight_price_ocean_difference_amount = modalData.quantity_final_advise_freight - modalData.freight_price_ocean;
datas.FirstOrDefault(s => s.name == "实际-海运运费差值").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_ocean_difference_amount
val = modalData.freight_price_ocean_difference_amount,
formula =$"【实际-海运运费差值】= 【实际建议周转运费 {modalData.quantity_final_advise_freight }】 - 【海运周转运费 {modalData.freight_price_ocean}】"
});
modalData.quantity_final_ocean_difference_amount = modalData.quantity_final_advise_amount - modalData.quantity_final_advise_ocean_amount;
datas.FirstOrDefault(s => s.name == "实际-海运周转采购金额差值").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_ocean_difference_amount
val = modalData.quantity_final_ocean_difference_amount,
formula = $"【实际-海运周转采购金额差值】= 【实际建议周转金额 {modalData.quantity_final_advise_amount }】 - 【海运周转金额 {modalData.quantity_final_advise_ocean_amount}】"
});
datas.FirstOrDefault(s => s.name == "差值(海运)-实际周转采购金额占比").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = (modalData.quantity_final_advise_amount ?? 0) <= 0 ? 0M : (Math.Round((modalData.quantity_final_ocean_difference_amount ?? 0) / modalData.quantity_final_advise_amount.Value, 3))
val = (modalData.quantity_final_advise_amount ?? 0) <= 0 ? 0M : (Math.Round((modalData.quantity_final_ocean_difference_amount ?? 0) / modalData.quantity_final_advise_amount.Value, 3)),
formula = $"【差值(海运)-实际周转采购金额占比】 = 【实际-海运周转采购金额差值 {modalData.quantity_final_ocean_difference_amount}】/ 【实际建议周转金额 {modalData.quantity_final_advise_amount}】 "
});
......@@ -1426,25 +1484,42 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
datas.FirstOrDefault(s => s.name == "实际-空运运费差值").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_air_difference_amount
val = modalData.freight_price_air_difference_amount,
formula = $"【实际-空运运费差值】= 【实际建议周转运费 {modalData.quantity_final_advise_freight }】 - 【空运运周转运费 {modalData.freight_price_air}】"
});
modalData.quantity_final_air_difference_amount = modalData.quantity_final_advise_amount - modalData.quantity_final_advise_air_amount;
datas.FirstOrDefault(s => s.name == "实际-空运周转采购金额差值").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final_air_difference_amount
val = modalData.quantity_final_air_difference_amount,
formula = $"【实际-空运运周转采购金额差值】= 【实际建议周转金额 {modalData.quantity_final_advise_amount }】 - 【空运周转金额 {modalData.quantity_final_advise_air_amount}】"
});
datas.FirstOrDefault(s => s.name == "差值(空运)-实际周转采购金额占比").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = (modalData.quantity_final_advise_amount ?? 0) <= 0 ? 0M : (Math.Round((modalData.quantity_final_air_difference_amount ?? 0) / modalData.quantity_final_advise_amount.Value, 3))
val = (modalData.quantity_final_advise_amount ?? 0) <= 0 ? 0M : (Math.Round((modalData.quantity_final_air_difference_amount ?? 0) / modalData.quantity_final_advise_amount.Value, 3)),
formula = $"【差值(空运)-实际周转采购金额占比】 = 【实际-空运周转采购金额差值 {modalData.quantity_final_air_difference_amount}】/ 【实际建议周转金额 {modalData.quantity_final_advise_amount}】 "
});
}
else // 过去
{
datas.FirstOrDefault(s => s.name == "30天预测销量海运-实际金额汇总").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = null
});
datas.FirstOrDefault(s => s.name == "30天预测销量空运-实际金额汇总").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = null
});
#region MyRegion
var dc_base_forecast_historydata = _connection.QueryFirstOrDefault<dc_base_forecast_history>(" select * from dc_base_forecast_history where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku and date_str=@date_str limit 1 ", new
{
......@@ -1492,7 +1567,7 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
datas.FirstOrDefault(s => s.name == "采购单价").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = Math.Round( modalData.unit_price??0,1)
val = Math.Round(modalData.unit_price ?? 0, 1)
});
modalData.quantity_final_advise = null;
if (dc_base_forecast_historydata.turnover_sales > 0)
......@@ -1544,9 +1619,9 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
date_str = this_time_end.ToString("yyyy-MM-dd")
}) ?? new dc_base_forecast_history() { };
modalData.quantity_final_advise_ocean = null;
if (dc_base_forecast_history_ocean_data.turnover_sales > 0 )
if (dc_base_forecast_history_ocean_data.turnover_sales > 0)
{
modalData.quantity_final_advise_ocean =(int)Math.Round( (dc_base_forecast_history_ocean_data.turnover_sales + dc_base_forecast_history_ocean_data.quantity_safe_inventory));
modalData.quantity_final_advise_ocean = (int)Math.Round((dc_base_forecast_history_ocean_data.turnover_sales + dc_base_forecast_history_ocean_data.quantity_safe_inventory));
}
datas.FirstOrDefault(s => s.name == "海运周转数(推荐海运)").days.Add(new transfer_profit_dto.day_dto
......@@ -1567,12 +1642,12 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
val = modalData.freight_price_ocean
});
var dc_base_forecast_history_air_data =_connection.QueryFirstOrDefault<dc_base_forecast_history>(" select * from dc_base_forecast_history_air where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku and `date`<=@date_str order by `date` desc limit 1 ", new
var dc_base_forecast_history_air_data = _connection.QueryFirstOrDefault<dc_base_forecast_history>(" select * from dc_base_forecast_history_air where warehouse_code=@warehouse_code and bailun_sku=@bailun_sku and `date`<=@date_str order by `date` desc limit 1 ", new
{
warehouse_code = result.warehouse_code,
bailun_sku = result.bailun_sku,
date_str = this_time_end.ToString("yyyy-MM-dd")
})??new dc_base_forecast_history() { };
}) ?? new dc_base_forecast_history() { };
modalData.quantity_final_advise_air = null;
if (dc_base_forecast_history_air_data.turnover_sales > 0)
{
......@@ -1645,20 +1720,24 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
datas.FirstOrDefault(s => s.name == "海运-空运运费差值").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.freight_price_ocean_air_difference
val = modalData.freight_price_ocean_air_difference,
formula = $"【海运-空运运费差值】= 【海运周转运费 {modalData.freight_price_ocean }】 - 【空运运周转运费 {modalData.freight_price_air}】"
});
modalData.quantity_final__ocean_air_difference_amount = modalData.quantity_final_advise_ocean_amount - modalData.quantity_final_advise_air_amount;
datas.FirstOrDefault(s => s.name == "海运-空运周转采购金额差值").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = modalData.quantity_final__ocean_air_difference_amount
val = modalData.quantity_final__ocean_air_difference_amount,
formula = $"【海运-空运周转采购金额差值】= 【海运周转采购金额 {modalData.quantity_final_advise_ocean_amount }】 - 【空运运周转采购金额 {modalData.quantity_final_advise_air_amount}】"
});
datas.FirstOrDefault(s => s.name == "差值(海运-空运)-实际周转采购金额占比").days.Add(new transfer_profit_dto.day_dto
{
date = this_time,
val = (modalData.quantity_final_advise_amount??0) <= 0 ? 0M : (Math.Round((modalData.quantity_final__ocean_air_difference_amount??0) / modalData.quantity_final_advise_amount.Value, 3))
val = (modalData.quantity_final_advise_amount ?? 0) <= 0 ? 0M : (Math.Round((modalData.quantity_final__ocean_air_difference_amount ?? 0) / modalData.quantity_final_advise_amount.Value, 3)),
formula = $"【差值(海运-空运)-实际周转采购金额占比】 = 【海运-空运周转采购金额差值 {modalData.quantity_final__ocean_air_difference_amount}】/ 【空运周转采购金额差值 {modalData.quantity_final_advise_amount}】 "
});
......@@ -1668,6 +1747,47 @@ where t1.gmt_modified>=@btime and t1.gmt_modified<=@etime
return datas;
}
/// <summary>
/// 查询过去30日的销量
/// </summary>
/// <returns></returns>
public static List<decimal> GetHistorySales30(int turnId, string bailun_sku, string warehouse_code)
{
var sales_details = new List<decimal>();
var trun_sales = DB.SaleVolume.GetByTurnOverId(turnId, bailun_sku, warehouse_code);
sales_details.Add(trun_sales.thirtyday_sales);
sales_details.Add(trun_sales.twenty_nineday_sales);
sales_details.Add(trun_sales.twenty_eightday_sales);
sales_details.Add(trun_sales.twenty_seveneday_sales);
sales_details.Add(trun_sales.twenty_sixday_sales);
sales_details.Add(trun_sales.twenty_fiveday_sales);
sales_details.Add(trun_sales.twenty_fourthday_sales);
sales_details.Add(trun_sales.twenty_threeday_sales);
sales_details.Add(trun_sales.twenty_twoday_sales);
sales_details.Add(trun_sales.twenty_oneday_sales);
sales_details.Add(trun_sales.twentyday_sales);
sales_details.Add(trun_sales.nineteenday_sales);
sales_details.Add(trun_sales.eighteenday_sales);
sales_details.Add(trun_sales.seventeenday_sales);
sales_details.Add(trun_sales.sixteenday_sales);
sales_details.Add(trun_sales.fifteenday_sales);
sales_details.Add(trun_sales.fourteenday_sales);
sales_details.Add(trun_sales.thridteenday_sales);
sales_details.Add(trun_sales.twelveday_sales);
sales_details.Add(trun_sales.elevenday_sales);
sales_details.Add(trun_sales.tenday_sales);
sales_details.Add(trun_sales.nineday_sales);
sales_details.Add(trun_sales.eightday_sales);
sales_details.Add(trun_sales.sevenday_sales);
sales_details.Add(trun_sales.sixday_sales);
sales_details.Add(trun_sales.fiveday_sales);
sales_details.Add(trun_sales.fourthday_sales);
sales_details.Add(trun_sales.threeday_sales);
sales_details.Add(trun_sales.twoday_sales);
sales_details.Add(trun_sales.oneday_sales);
return sales_details;
}
}
......
......@@ -12,6 +12,11 @@ namespace AutoTurnOver.Models.Report
public int? quantity_final_advise;
/// <summary>
/// 30天的预计周转数
/// </summary>
public int? quantity_final_advise_30;
/// <summary>
/// 实际周转数
/// </summary>
public int? turnover;
......@@ -20,6 +25,10 @@ namespace AutoTurnOver.Models.Report
/// 实际建议周转金额
/// </summary>
public decimal? quantity_final_advise_amount;
/// <summary>
/// 30天的预计周转金额
/// </summary>
public decimal? quantity_final_advise_amount_30;
/// <summary>
/// 实际周转金额
......@@ -40,15 +49,25 @@ namespace AutoTurnOver.Models.Report
/// 实际周转运费
/// </summary>
public decimal? freight_price;
/// <summary>
/// 30 天的实际周转运费
/// </summary>
public decimal? freight_price_30;
/// <summary>
/// 海运周转数(推荐海运)
/// </summary>
public int? quantity_final_advise_ocean;
/// <summary>
/// 海运周转运费
/// </summary>
public decimal? freight_price_ocean;
/// <summary>
/// 30天海运周转运费
/// </summary>
public decimal? freight_price_ocean_30;
/// <summary>
/// 海运运费单价
......@@ -77,6 +96,10 @@ namespace AutoTurnOver.Models.Report
/// 空运周转运费
/// </summary>
public decimal? freight_price_air;
/// <summary>
/// 30天空运周转运费
/// </summary>
public decimal? freight_price_air_30;
/// <summary>
/// 实际-空运运费差值
......
......@@ -14,6 +14,11 @@ namespace AutoTurnOver.Models
public class day_dto
{
public bool has_int { get; set; }
/// <summary>
/// 计算公式
/// </summary>
public string formula { get; set; }
public DateTime date { get; set; }
public string date_str { get {
return date.ToString("MM-dd"+$"({Sinicization(date.DayOfWeek)})");
......
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