Commit e954e034 by lizefeng

投资回报分析的 单位头程费取值,由最近2个月,改成最近5单

parent 522d955f
...@@ -300,7 +300,7 @@ namespace AutoTurnOver.DB ...@@ -300,7 +300,7 @@ namespace AutoTurnOver.DB
} }
//计算单位运费 //计算单位运费
ana.freight_unit_price = CalculationFreight(ana.sku, ana.warehouse_code, day30Btime.AddDays(-30 *5),dayEtime); ana.freight_unit_price = CalculationFreight(ana.sku, ana.warehouse_code);
//预估运费,库存 * 单位运费 //预估运费,库存 * 单位运费
ana.estimated_freight = ana.freight_unit_price * ana.stock; ana.estimated_freight = ana.freight_unit_price * ana.stock;
...@@ -422,7 +422,7 @@ namespace AutoTurnOver.DB ...@@ -422,7 +422,7 @@ namespace AutoTurnOver.DB
/// <summary> /// <summary>
/// 计算单位运费 /// 计算单位运费
/// </summary> /// </summary>
public static decimal CalculationFreight(string bailun_sku, string warehouse_code, DateTime btime, DateTime etime) public static decimal CalculationFreight(string bailun_sku, string warehouse_code)
{ {
// 清理运费计算日志 // 清理运费计算日志
_connection.Execute(" delete from dc_base_transfer_freight_new_order where main_bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new _connection.Execute(" delete from dc_base_transfer_freight_new_order where main_bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
...@@ -430,9 +430,18 @@ namespace AutoTurnOver.DB ...@@ -430,9 +430,18 @@ namespace AutoTurnOver.DB
bailun_sku = bailun_sku, bailun_sku = bailun_sku,
warehouse_code = warehouse_code warehouse_code = warehouse_code
}); });
var top5DataIds = _connection.Query<string>($@" select dataid from dc_base_transfer_info where
// 查询这个sku 时间范围内所有的调拨单明细 dataid in ( select dataid from dc_base_transfer_info_skus where sku=@sku )
var tempDatas = _connection.Query<CalculationFreightDto>($@"select t2.sku , and isdeleted=0
and isexception = 0
and estimatedcost>0
and targetwareno=@warehouse_code
order by creationtime desc limit 5 ",new { sku = bailun_sku, warehouse_code = warehouse_code }).ToList();
if(top5DataIds!=null && top5DataIds.Count >= 1)
{
// 查询这个sku 时间范围内所有的调拨单明细
var tempDatas = _connection.Query<CalculationFreightDto>($@"select t2.sku ,
t1.`code`, t1.`code`,
t2.deliverycount, t2.deliverycount,
t1.estimatedcost as 'order_estimatedcost', t1.estimatedcost as 'order_estimatedcost',
...@@ -442,95 +451,93 @@ from dc_base_transfer_info as t1 ...@@ -442,95 +451,93 @@ from dc_base_transfer_info as t1
left join dc_base_transfer_info_skus as t2 on t1.dataid = t2.dataid left join dc_base_transfer_info_skus as t2 on t1.dataid = t2.dataid
left join ( select dataid,sum(deliverycount) as 'deliverycount' from dc_base_transfer_info_skus GROUP BY dataid ) as t3 on t1.dataid = t3.dataid left join ( select dataid,sum(deliverycount) as 'deliverycount' from dc_base_transfer_info_skus GROUP BY dataid ) as t3 on t1.dataid = t3.dataid
left join dc_base_sku as t4 on t2.sku = t4.bailun_sku left join dc_base_sku as t4 on t2.sku = t4.bailun_sku
where t1.isdeleted=0 where t1.dataid in @dataIds", new
and t1.isexception = 0 {
and t1.creationtime >=@btime and t1.creationtime <=@etime dataIds = top5DataIds
and t1.targetwareno=@warehouse_code }, commandTimeout: 0).ToList();
and t1.estimatedcost>0
and t1.dataid in ( select dataid from dc_base_transfer_info_skus where sku=@sku)", new
{
btime = btime,
etime = etime,
warehouse_code = warehouse_code,
sku = bailun_sku
}, commandTimeout: 0).ToList();
if (tempDatas != null && tempDatas.Count >= 1) if (tempDatas != null && tempDatas.Count >= 1)
{
List<dc_base_transfer_freight_new_order> orders = new List<dc_base_transfer_freight_new_order>();
foreach (var itemGroup in tempDatas.GroupBy(s => s.code))
{ {
//计算该订单总sku重量 List<dc_base_transfer_freight_new_order> orders = new List<dc_base_transfer_freight_new_order>();
var sumWeight = itemGroup.Sum(s => s.weight * s.deliverycount); foreach (var itemGroup in tempDatas.GroupBy(s => s.code))
var sumSkuCount = itemGroup.Sum(s => s.deliverycount);
var sumCost = itemGroup.FirstOrDefault().order_estimatedcost;
List<dc_base_transfer_freight_new_order> groupOrders = new List<dc_base_transfer_freight_new_order>();
foreach (var item in itemGroup.AsQueryable())
{ {
dc_base_transfer_freight_new_order new_order = new dc_base_transfer_freight_new_order() //计算该订单总sku重量
var sumWeight = itemGroup.Sum(s => s.weight * s.deliverycount);
var sumSkuCount = itemGroup.Sum(s => s.deliverycount);
var sumCost = itemGroup.FirstOrDefault().order_estimatedcost;
List<dc_base_transfer_freight_new_order> groupOrders = new List<dc_base_transfer_freight_new_order>();
foreach (var item in itemGroup.AsQueryable())
{ {
main_bailun_sku = bailun_sku, dc_base_transfer_freight_new_order new_order = new dc_base_transfer_freight_new_order()
bailun_sku = item.sku, {
gmt_update_time = DateTime.Now, main_bailun_sku = bailun_sku,
sku_count = item.deliverycount, bailun_sku = item.sku,
transfer_order_id = itemGroup.Key, gmt_update_time = DateTime.Now,
sku_weight = item.weight * item.deliverycount, sku_count = item.deliverycount,
warehouse_code = warehouse_code, transfer_order_id = itemGroup.Key,
order_cost = item.order_estimatedcost, sku_weight = item.weight * item.deliverycount,
order_sku_count = sumSkuCount, warehouse_code = warehouse_code,
order_weight = sumWeight, order_cost = item.order_estimatedcost,
sku_cost = Math.Round((item.weight * item.deliverycount).Division(sumWeight) * item.order_estimatedcost, 2) order_sku_count = sumSkuCount,
}; order_weight = sumWeight,
sku_cost = Math.Round((item.weight * item.deliverycount).Division(sumWeight) * item.order_estimatedcost, 2)
groupOrders.Add(new_order); };
groupOrders.Add(new_order);
}
var cha = (sumCost - groupOrders.Sum(s => s.sku_cost));
if (cha > 0)
{
var topSkuOrder = groupOrders.OrderByDescending(s => s.order_cost).FirstOrDefault();
topSkuOrder.order_cost += cha;
}
orders.AddRange(groupOrders);
foreach (var itemOrder in orders)
{
_connection.Insert(itemOrder);
}
} }
var cha = (sumCost - groupOrders.Sum(s => s.sku_cost));
if (cha>0) var thisOrders = orders.Where(s => s.bailun_sku == bailun_sku).ToList();
dc_base_transfer_freight_new newData = new dc_base_transfer_freight_new()
{
bailun_sku = bailun_sku,
count = thisOrders.Sum(s => s.sku_count),
freight = thisOrders.Sum(s => s.sku_cost),
update_time = DateTime.Now,
warehouse_code = warehouse_code,
id = _connection.QueryFirstOrDefault<int?>(" select id from dc_base_transfer_freight_new where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku = bailun_sku, warehouse_code = warehouse_code }) ?? 0
};
newData.freight_unit_price = newData.freight.Division(newData.count);
if (newData.id <= 0)
{ {
var topSkuOrder = groupOrders.OrderByDescending(s => s.order_cost).FirstOrDefault(); _connection.Insert(newData);
topSkuOrder.order_cost += cha;
} }
orders.AddRange(groupOrders); else
foreach (var itemOrder in orders)
{ {
_connection.Insert(itemOrder); _connection.Update(newData);
} }
return newData.freight_unit_price;
}
var thisOrders = orders.Where(s => s.bailun_sku == bailun_sku).ToList();
dc_base_transfer_freight_new newData = new dc_base_transfer_freight_new()
{
bailun_sku = bailun_sku,
count = thisOrders.Sum(s => s.sku_count),
freight = thisOrders.Sum(s => s.sku_cost),
update_time = DateTime.Now,
warehouse_code = warehouse_code,
id = _connection.QueryFirstOrDefault<int?>(" select id from dc_base_transfer_freight_new where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new { bailun_sku = bailun_sku, warehouse_code = warehouse_code }) ?? 0
};
newData.freight_unit_price = newData.freight.Division(newData.count);
if (newData.id <= 0)
{
_connection.Insert(newData);
} }
else else
{ {
_connection.Update(newData); // 清空运费
_connection.Execute(" delete from dc_base_transfer_freight_new where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
bailun_sku = bailun_sku,
warehouse_code = warehouse_code,
});
return 0;
} }
return newData.freight_unit_price;
} }
else else
{ {
// 清空运费
_connection.Execute(" delete from dc_base_transfer_freight_new where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
bailun_sku = bailun_sku,
warehouse_code = warehouse_code,
});
return 0; return 0;
} }
} }
public class CalculationFreightDto public class CalculationFreightDto
......
...@@ -48,7 +48,7 @@ namespace ResetOutofstock ...@@ -48,7 +48,7 @@ namespace ResetOutofstock
// report_invest_return_dao.SynchBtmAdFees(); // report_invest_return_dao.SynchBtmAdFees();
//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(); report_invest_return_dao.CalculationStockScore();
} }
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