Commit ae749d41 by 泽锋 李

fix

parent 6c16e1f2
...@@ -1815,8 +1815,9 @@ start transaction; ...@@ -1815,8 +1815,9 @@ start transaction;
-- 清空视图表的数据 -- 清空视图表的数据
Truncate table dc_report_cash_flow_sku_group_temp; Truncate table dc_report_cash_flow_sku_group_temp;
insert dc_report_cash_flow_sku_group_temp(`bailun_sku`,`balance`,`current_date_begin`,`current_date_end`,`last_date_begin`,`last_date_end`,`current_income`,`current_expend`,`last_income`,`last_expend`,`type`) insert dc_report_cash_flow_sku_group_temp(`warehouse_code`,`bailun_sku`,`balance`,`current_date_begin`,`current_date_end`,`last_date_begin`,`last_date_end`,`current_income`,`current_expend`,`last_income`,`last_expend`,`type`)
select select
warehouse_code,
bailun_sku, bailun_sku,
sum(val) as 'balance', sum(val) as 'balance',
@btime as current_date_begin, @btime as current_date_begin,
...@@ -1828,10 +1829,10 @@ sum(case when occur_time>=@btime and data_type not in (2) then val else 0 end ) ...@@ -1828,10 +1829,10 @@ sum(case when occur_time>=@btime and data_type not in (2) then val else 0 end )
sum(case when occur_time<@btime and data_type in (2) then val else 0 end ) as 'last_income', sum(case when occur_time<@btime and data_type in (2) then val else 0 end ) as 'last_income',
sum(case when occur_time<@btime and data_type not in (2) then val else 0 end ) as 'last_expend', sum(case when occur_time<@btime and data_type not in (2) then val else 0 end ) as 'last_expend',
1 as 'type' 1 as 'type'
from dc_report_cash_flow_log where occur_time>=@lastBtime and data_type in (2,3,5,8,9,10,11,12) from dc_report_cash_flow_log where occur_time>=@lastBtime and data_type in (2,3,5,8,9,10,11,12) and warehouse_code!=''
GROUP BY bailun_sku; GROUP BY bailun_sku,warehouse_code;
insert dc_report_cash_flow_sku_group_temp(`bailun_sku`,`balance`,`current_date_begin`,`current_date_end`,`last_date_begin`,`last_date_end`,`current_income`,`current_expend`,`last_income`,`last_expend`,`type`) insert dc_report_cash_flow_sku_group_temp(warehouse_code`,`bailun_sku`,`balance`,`current_date_begin`,`current_date_end`,`last_date_begin`,`last_date_end`,`current_income`,`current_expend`,`last_income`,`last_expend`,`type`)
select select
warehouse_code, warehouse_code,
bailun_sku, bailun_sku,
...@@ -1845,8 +1846,8 @@ sum(case when pay_time>=@btime and data_type not in (2) then val else 0 end ) as ...@@ -1845,8 +1846,8 @@ sum(case when pay_time>=@btime and data_type not in (2) then val else 0 end ) as
sum(case when pay_time<@btime and data_type in (2) then val else 0 end ) as 'last_income', sum(case when pay_time<@btime and data_type in (2) then val else 0 end ) as 'last_income',
sum(case when pay_time<@btime and data_type not in (2) then val else 0 end ) as 'last_expend', sum(case when pay_time<@btime and data_type not in (2) then val else 0 end ) as 'last_expend',
2 as 'type' 2 as 'type'
from dc_report_cash_flow_log where pay_time>=@lastBtime and data_type in (2,3,5,8,9,10,11,12) from dc_report_cash_flow_log where pay_time>=@lastBtime and data_type in (2,3,5,8,9,10,11,12) and warehouse_code!=''
GROUP BY bailun_sku; GROUP BY bailun_sku,warehouse_code;
alter table dc_report_cash_flow_sku_group rename dc_report_cash_flow_sku_groupTemp; alter table dc_report_cash_flow_sku_group rename dc_report_cash_flow_sku_groupTemp;
......
...@@ -77,9 +77,9 @@ namespace AutoTurnOver.DB ...@@ -77,9 +77,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item5.occur_time_year_month_no = $"{item5.occur_time.Year}-{item5.occur_time.Month}-{item5.bailun_sku}"; item5.occur_time_year_month_no = $"{item5.occur_time.Year}-{item5.occur_time.Month}-{item5.data_type}-{item5.platform_type}-{item5.web_site}";
item5.pay_time = CalculationPayTime(configs, item5.occur_time, item5.data_type, item5.platform_type,item5.web_site); item5.pay_time = CalculationPayTime(configs, item5.occur_time, item5.data_type, item5.platform_type,item5.web_site);
item5.pay_time_year_month_no = $"{item5.pay_time.Year}-{item5.pay_time.Month}-{item5.bailun_sku}"; item5.pay_time_year_month_no = $"{item5.pay_time.Year}-{item5.pay_time.Month}--{item5.data_type}-{item5.platform_type}-{item5.web_site}";
item5.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item5.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item5.data_type, data_type = item5.data_type,
...@@ -118,9 +118,9 @@ namespace AutoTurnOver.DB ...@@ -118,9 +118,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item8.occur_time_year_month_no = $"{item8.occur_time.Year}-{item8.occur_time.Month}-{item8.bailun_sku}"; item8.occur_time_year_month_no = $"{item8.occur_time.Year}-{item8.occur_time.Month}-{item8.data_type}-{item8.platform_type}-{item8.web_site}";
item8.pay_time = CalculationPayTime(configs, item8.occur_time, item8.data_type, item8.platform_type, item8.web_site); item8.pay_time = CalculationPayTime(configs, item8.occur_time, item8.data_type, item8.platform_type, item8.web_site);
item8.pay_time_year_month_no = $"{item8.pay_time.Year}-{item8.pay_time.Month}-{item8.bailun_sku}"; item8.pay_time_year_month_no = $"{item8.pay_time.Year}-{item8.pay_time.Month}-{item8.data_type}-{item8.platform_type}-{item8.web_site}";
item8.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item8.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item8.data_type, data_type = item8.data_type,
...@@ -159,9 +159,9 @@ namespace AutoTurnOver.DB ...@@ -159,9 +159,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item7.occur_time_year_month_no = $"{item7.occur_time.Year}-{item7.occur_time.Month}-{item7.bailun_sku}"; item7.occur_time_year_month_no = $"{item7.occur_time.Year}-{item7.occur_time.Month}-{item7.data_type}-{item7.platform_type}-{item7.web_site}";
item7.pay_time = CalculationPayTime(configs, item7.occur_time, item7.data_type, item7.platform_type,item7.web_site); item7.pay_time = CalculationPayTime(configs, item7.occur_time, item7.data_type, item7.platform_type,item7.web_site);
item7.pay_time_year_month_no = $"{item7.pay_time.Year}-{item7.pay_time.Month}-{item7.bailun_sku}"; item7.pay_time_year_month_no = $"{item7.pay_time.Year}-{item7.pay_time.Month}-{item7.data_type}-{item7.platform_type}-{item7.web_site}";
item7.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item7.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item7.data_type, data_type = item7.data_type,
...@@ -200,9 +200,9 @@ namespace AutoTurnOver.DB ...@@ -200,9 +200,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item6.occur_time_year_month_no = $"{item6.occur_time.Year}-{item6.occur_time.Month}-{item6.bailun_sku}"; item6.occur_time_year_month_no = $"{item6.occur_time.Year}-{item6.occur_time.Month}-{item6.data_type}-{item6.platform_type}-{item6.web_site}";
item6.pay_time = CalculationPayTime(configs, item6.occur_time, item6.data_type, item6.platform_type,item6.web_site); item6.pay_time = CalculationPayTime(configs, item6.occur_time, item6.data_type, item6.platform_type,item6.web_site);
item6.pay_time_year_month_no = $"{item6.pay_time.Year}-{item6.pay_time.Month}-{item6.bailun_sku}"; item6.pay_time_year_month_no = $"{item6.pay_time.Year}-{item6.pay_time.Month}-{item6.data_type}-{item6.platform_type}-{item6.web_site}";
item6.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item6.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item6.data_type, data_type = item6.data_type,
...@@ -241,9 +241,9 @@ namespace AutoTurnOver.DB ...@@ -241,9 +241,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item3.occur_time_year_month_no = $"{item3.occur_time.Year}-{item3.occur_time.Month}-{item3.bailun_sku}"; item3.occur_time_year_month_no = $"{item3.occur_time.Year}-{item3.occur_time.Month}-{item3.data_type}-{item3.platform_type}-{item3.web_site}";
item3.pay_time = CalculationPayTime(configs, item3.occur_time, item3.data_type, item3.platform_type,item3.web_site); item3.pay_time = CalculationPayTime(configs, item3.occur_time, item3.data_type, item3.platform_type,item3.web_site);
item3.pay_time_year_month_no = $"{item3.pay_time.Year}-{item3.pay_time.Month}-{item3.bailun_sku}"; item3.pay_time_year_month_no = $"{item3.pay_time.Year}-{item3.pay_time.Month}-{item3.data_type}-{item3.platform_type}-{item3.web_site}";
item3.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item3.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item3.data_type, data_type = item3.data_type,
...@@ -282,9 +282,9 @@ namespace AutoTurnOver.DB ...@@ -282,9 +282,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item2.occur_time_year_month_no = $"{item2.occur_time.Year}-{item2.occur_time.Month}-{item2.bailun_sku}"; item2.occur_time_year_month_no = $"{item2.occur_time.Year}-{item2.occur_time.Month}-{item2.data_type}-{item2.platform_type}-{item2.web_site}";
item2.pay_time = CalculationPayTime(configs, item2.occur_time, item2.data_type, item2.platform_type,item2.web_site); item2.pay_time = CalculationPayTime(configs, item2.occur_time, item2.data_type, item2.platform_type,item2.web_site);
item2.pay_time_year_month_no = $"{item2.pay_time.Year}-{item2.pay_time.Month}-{item2.bailun_sku}"; item2.pay_time_year_month_no = $"{item2.pay_time.Year}-{item2.pay_time.Month}-{item2.data_type}-{item2.platform_type}-{item2.web_site}";
item2.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item2.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item2.data_type, data_type = item2.data_type,
...@@ -323,9 +323,9 @@ namespace AutoTurnOver.DB ...@@ -323,9 +323,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item1.occur_time_year_month_no = $"{item1.occur_time.Year}-{item1.occur_time.Month}-{item1.bailun_sku}"; item1.occur_time_year_month_no = $"{item1.occur_time.Year}-{item1.occur_time.Month}-{item1.data_type}-{item1.platform_type}-{item1.web_site}";
item1.pay_time = CalculationPayTime(configs, item1.occur_time, item1.data_type, item1.platform_type,item1.web_site); item1.pay_time = CalculationPayTime(configs, item1.occur_time, item1.data_type, item1.platform_type,item1.web_site);
item1.pay_time_year_month_no = $"{item1.pay_time.Year}-{item1.pay_time.Month}-{item1.bailun_sku}"; item1.pay_time_year_month_no = $"{item1.pay_time.Year}-{item1.pay_time.Month}-{item1.data_type}-{item1.platform_type}-{item1.web_site}";
item1.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item1.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item1.data_type, data_type = item1.data_type,
...@@ -364,9 +364,9 @@ namespace AutoTurnOver.DB ...@@ -364,9 +364,9 @@ namespace AutoTurnOver.DB
item_no = order_item.bailun_order_id, item_no = order_item.bailun_order_id,
web_site = order_item.website web_site = order_item.website
}; };
item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.bailun_sku}"; item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time = CalculationPayTime(configs, item.occur_time, item.data_type, item.platform_type,item.web_site); item.pay_time = CalculationPayTime(configs, item.occur_time, item.data_type, item.platform_type,item.web_site);
item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.bailun_sku}"; item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item.data_type, data_type = item.data_type,
...@@ -497,7 +497,8 @@ namespace AutoTurnOver.DB ...@@ -497,7 +497,8 @@ namespace AutoTurnOver.DB
occur_time = order_item.paid_time ?? new DateTime(1991, 1, 1), occur_time = order_item.paid_time ?? new DateTime(1991, 1, 1),
warehouse_code = order_item.warehouse_code, warehouse_code = order_item.warehouse_code,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付, pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = order_item.bailun_order_id item_no = order_item.bailun_order_id,
web_site = order_item.website
}; };
var pick_data_logistics_order_id = conn.QueryFirstOrDefault<string>(" select logistics_order_id from dc_base_oms_pick where bailun_order_id=@bailun_order_id and bailun_sku=@bailun_sku limit 1 ", new var pick_data_logistics_order_id = conn.QueryFirstOrDefault<string>(" select logistics_order_id from dc_base_oms_pick where bailun_order_id=@bailun_order_id and bailun_sku=@bailun_sku limit 1 ", new
...@@ -506,9 +507,9 @@ namespace AutoTurnOver.DB ...@@ -506,9 +507,9 @@ namespace AutoTurnOver.DB
bailun_sku = order_item.bailun_sku bailun_sku = order_item.bailun_sku
}); });
var remarks = ""; var remarks = "";
item4.occur_time_year_month_no = $"{item4.occur_time.Year}-{item4.occur_time.Month}-{item4.bailun_sku}"; item4.occur_time_year_month_no = $"{item4.occur_time.Year}-{item4.occur_time.Month}-{item4.data_type}-{item4.platform_type}-{item4.web_site}";
item4.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item4.occur_time, pick_data_logistics_order_id, out remarks); item4.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item4.occur_time, pick_data_logistics_order_id, out remarks);
item4.pay_time_year_month_no = $"{item4.pay_time.Year}-{item4.pay_time.Month}-{item4.bailun_sku}"; item4.pay_time_year_month_no = $"{item4.pay_time.Year}-{item4.pay_time.Month}-{item4.data_type}-{item4.platform_type}-{item4.web_site}";
item4.remarks = remarks; item4.remarks = remarks;
item4.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item4.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
...@@ -569,6 +570,7 @@ namespace AutoTurnOver.DB ...@@ -569,6 +570,7 @@ namespace AutoTurnOver.DB
int page = 1; int page = 1;
int rows = 1000; int rows = 1000;
List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList(); List<dc_report_cash_flow_config> configs = conn.Query<dc_report_cash_flow_config>(" select * from dc_report_cash_flow_config ").AsList();
List<dc_auto_config_safe_inventory> inventoryConfigs = conn.Query<dc_auto_config_safe_inventory>(" select * from dc_auto_config_safe_inventory ").AsList();
while (true) while (true)
{ {
var now = DateTime.Now; var now = DateTime.Now;
...@@ -587,6 +589,68 @@ namespace AutoTurnOver.DB ...@@ -587,6 +589,68 @@ namespace AutoTurnOver.DB
{ {
try try
{ {
var warehouse_code = order_item.isallot == 1 ? order_item.warehouse_into_code : order_item.warehouse_from_code;
var platforms = GetPlatformShare(now,conn, inventoryConfigs, warehouse_code,order_item.bailun_sku);
if(platforms!=null && platforms.Count >= 1)
{
// 把原本未挂载平台的数据删除
conn.Execute(" delete from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and `no`=@purchase_id and platform_type='' ", new {
bailun_sku = order_item.bailun_sku,
purchase_id = order_item.purchase_id,
data_type = (int)dc_report_cash_flow_log_data_type_enum.新增采购费用
});
foreach (var platformItem in platforms)
{
#region 采购支出
dc_report_cash_flow_log item = new dc_report_cash_flow_log()
{
bailun_sku = order_item.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.新增采购费用,
is_delete = (order_item.status == -1) ? 1 : 0,
item = order_item.purchase_id,
update_time = now,
no = order_item.purchase_id,
platform_type = platformItem.platform_type,
web_site = platformItem.web_stie,
remarks = $" 原采购费用 {order_item.amount_paid} , 该平台-站点 日均加权值 {platformItem.sales_weight} 占比 {platformItem.ratio} ",
val = 0 - (Math.Abs(order_item.amount_paid) * platformItem.ratio),
occur_time = order_item.create_time ?? new DateTime(1991, 1, 1),
warehouse_code = warehouse_code,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = $"{order_item.purchase_id}-{platformItem.platform_type}-{platformItem.web_stie}"
};
if (order_item.pay_type == 3) // 无需付款
{
item.pay_time = order_item.create_time ?? new DateTime(1991, 1, 1);
}
else
{
item.pay_time = order_item.pay_time ?? new DateTime(1991, 1, 1);
}
item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{
data_type = item.data_type,
bailun_sku = item.bailun_sku,
item_no = item.item_no
}) ?? 0;
if (item.id > 0)
{
conn.Update(item);
}
else
{
conn.Insert(item);
}
#endregion
}
}
else
{
#region 采购支出 #region 采购支出
dc_report_cash_flow_log item = new dc_report_cash_flow_log() dc_report_cash_flow_log item = new dc_report_cash_flow_log()
...@@ -598,12 +662,13 @@ namespace AutoTurnOver.DB ...@@ -598,12 +662,13 @@ namespace AutoTurnOver.DB
update_time = now, update_time = now,
no = order_item.purchase_id, no = order_item.purchase_id,
platform_type = "", platform_type = "",
remarks = "", web_site = "",
val = 0 - Math.Abs(order_item.amount_paid), remarks = $" 最新30天无订单,暂时不挂载平台 ",
val = 0 - (Math.Abs(order_item.amount_paid) ),
occur_time = order_item.create_time ?? new DateTime(1991, 1, 1), occur_time = order_item.create_time ?? new DateTime(1991, 1, 1),
warehouse_code = order_item.warehouse_from_code, warehouse_code = warehouse_code,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付, pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = order_item.purchase_id item_no = $"{order_item.purchase_id}"
}; };
if (order_item.pay_type == 3) // 无需付款 if (order_item.pay_type == 3) // 无需付款
{ {
...@@ -613,8 +678,8 @@ namespace AutoTurnOver.DB ...@@ -613,8 +678,8 @@ namespace AutoTurnOver.DB
{ {
item.pay_time = order_item.pay_time ?? new DateTime(1991, 1, 1); item.pay_time = order_item.pay_time ?? new DateTime(1991, 1, 1);
} }
item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.bailun_sku}"; item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.bailun_sku}"; item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
data_type = item.data_type, data_type = item.data_type,
...@@ -632,6 +697,8 @@ namespace AutoTurnOver.DB ...@@ -632,6 +697,8 @@ namespace AutoTurnOver.DB
#endregion #endregion
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine($"现金流-采购单-{order_item.purchase_id}-异常" + ex.Message); Console.WriteLine($"现金流-采购单-{order_item.purchase_id}-异常" + ex.Message);
...@@ -693,7 +760,8 @@ where t1.gmt_create>=@btime and t1.gmt_create<=@etime "; ...@@ -693,7 +760,8 @@ where t1.gmt_create>=@btime and t1.gmt_create<=@etime ";
item = order_item.origin_order_id, item = order_item.origin_order_id,
update_time = now, update_time = now,
no = order_item.origin_order_id, no = order_item.origin_order_id,
platform_type = "", platform_type = order_item.platform_type,
web_site = order_item.website,
remarks = "", remarks = "",
val = 0 - Math.Abs(order_item.amount_refund_rmb), val = 0 - Math.Abs(order_item.amount_refund_rmb),
occur_time = order_item.refund_time ?? new DateTime(1991, 1, 1), occur_time = order_item.refund_time ?? new DateTime(1991, 1, 1),
...@@ -703,7 +771,7 @@ where t1.gmt_create>=@btime and t1.gmt_create<=@etime "; ...@@ -703,7 +771,7 @@ where t1.gmt_create>=@btime and t1.gmt_create<=@etime ";
}; };
item.pay_time = order_item.refund_time ?? new DateTime(1991, 1, 1); item.pay_time = order_item.refund_time ?? new DateTime(1991, 1, 1);
item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.bailun_sku}"; item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.bailun_sku}"; item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.bailun_sku}";
item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{ {
...@@ -776,6 +844,64 @@ where t1.create_time>=@btime and t1.create_time<=@etime "; ...@@ -776,6 +844,64 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
{ {
try try
{ {
List<dc_auto_config_safe_inventory> inventoryConfigs = conn.Query<dc_auto_config_safe_inventory>(" select * from dc_auto_config_safe_inventory ").AsList();
var platforms = GetPlatformShare(now, conn, inventoryConfigs, order_item.warehouse_code, order_item.bailun_sku);
if(platforms!=null && platforms.Count >= 1)
{
// 把原本未挂载平台的数据删除
conn.Execute(" delete from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and `no`=@transfer_order_id and platform_type='' ", new
{
bailun_sku = order_item.bailun_sku,
transfer_order_id = order_item.transfer_order_id,
data_type = (int)dc_report_cash_flow_log_data_type_enum.新增头程费用
});
foreach (var platformItem in platforms)
{
#region 调拨支出
dc_report_cash_flow_log item = new dc_report_cash_flow_log()
{
bailun_sku = order_item.bailun_sku,
data_type = (int)dc_report_cash_flow_log_data_type_enum.新增头程费用,
is_delete = (order_item.deleted == 1) ? 1 : 0,
item = order_item.transfer_order_id,
update_time = now,
no = order_item.transfer_order_id,
platform_type = platformItem.platform_type,
web_site = platformItem.web_stie,
remarks = $" 原本调拨费用 {order_item.cost_first} 该平台站点 日均加权销量 {platformItem.sales_weight} 占比 {platformItem.ratio} ",
val = 0 - (Math.Abs(order_item.cost_first) * platformItem.ratio),
occur_time = order_item.create_time,
warehouse_code = order_item.warehouse_code,
pay_type = (int)dc_report_cash_flow_log_pay_type_enum.后付,
item_no = $"{order_item.transfer_order_id}-{platformItem.platform_type}-{platformItem.web_stie}"
};
var remarks = "";
item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item.occur_time, order_item.logisticscode, out remarks);
item.remarks += remarks;
item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
{
data_type = item.data_type,
bailun_sku = item.bailun_sku,
item_no = item.item_no
}) ?? 0;
if (item.id > 0)
{
conn.Update(item);
}
else
{
conn.Insert(item);
}
#endregion
}
}
else
{
#region 调拨支出 #region 调拨支出
dc_report_cash_flow_log item = new dc_report_cash_flow_log() dc_report_cash_flow_log item = new dc_report_cash_flow_log()
...@@ -787,6 +913,7 @@ where t1.create_time>=@btime and t1.create_time<=@etime "; ...@@ -787,6 +913,7 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
update_time = now, update_time = now,
no = order_item.transfer_order_id, no = order_item.transfer_order_id,
platform_type = "", platform_type = "",
web_site = "",
remarks = "", remarks = "",
val = 0 - Math.Abs(order_item.cost_first), val = 0 - Math.Abs(order_item.cost_first),
occur_time = order_item.create_time, occur_time = order_item.create_time,
...@@ -795,8 +922,8 @@ where t1.create_time>=@btime and t1.create_time<=@etime "; ...@@ -795,8 +922,8 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
item_no = order_item.transfer_order_id item_no = order_item.transfer_order_id
}; };
var remarks = ""; var remarks = "";
item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.bailun_sku}"; item.occur_time_year_month_no = $"{item.occur_time.Year}-{item.occur_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.bailun_sku}"; item.pay_time_year_month_no = $"{item.pay_time.Year}-{item.pay_time.Month}-{item.data_type}-{item.platform_type}-{item.web_site}";
item.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item.occur_time, order_item.logisticscode, out remarks); item.pay_time = CalculationLogisticsPayTime(logisticsList, logistics_company_list, item.occur_time, order_item.logisticscode, out remarks);
item.remarks = remarks; item.remarks = remarks;
item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new item.id = conn.QuerySingleOrDefault<int?>(" select id from dc_report_cash_flow_log where data_type=@data_type and bailun_sku=@bailun_sku and item_no=@item_no ", new
...@@ -816,6 +943,8 @@ where t1.create_time>=@btime and t1.create_time<=@etime "; ...@@ -816,6 +943,8 @@ where t1.create_time>=@btime and t1.create_time<=@etime ";
#endregion #endregion
} }
}
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine($"现金流-调拨单-{order_item.transfer_order_id}-异常" + ex.Message); Console.WriteLine($"现金流-调拨单-{order_item.transfer_order_id}-异常" + ex.Message);
...@@ -1104,5 +1233,69 @@ where t1.type=@type "; ...@@ -1104,5 +1233,69 @@ where t1.type=@type ";
return _connection.Page<dc_report_cash_flow_sku_group_dto>(sql, search, parameters); return _connection.Page<dc_report_cash_flow_sku_group_dto>(sql, search, parameters);
} }
/// <summary>
/// 取安全库存规则
/// </summary>
/// <returns></returns>
public static dc_auto_config_safe_inventory GetInventoryRule(List<dc_auto_config_safe_inventory> configs,string warehouse_code)
{
return (configs.Where(s => s.warehouse_code == warehouse_code).FirstOrDefault() ?? new dc_auto_config_safe_inventory {weighting_coefficient_seven = 0.5M,weighting_coefficient_fourteen = 0.25M,weighting_coefficient_thirty = 0.25M });
}
/// <summary>
/// 获取平台分摊比例
/// </summary>
/// <returns></returns>
public static List<dc_report_cash_flow_platform_share_dto> GetPlatformShare(DateTime occurDate, MySqlConnection conn, List<dc_auto_config_safe_inventory> configs, string warehouse_code,string bailun_sku)
{
var rule = GetInventoryRule(configs, warehouse_code);
var sql = @"SELECT platform_type,website,
sum( case when paid_time >= @btime7 then bailun_sku_quantity_ordered else 0 end) as 'sales_7',
sum( case when paid_time >= @btime14 then bailun_sku_quantity_ordered else 0 end) as 'sales_14',
sum(bailun_sku_quantity_ordered) as 'sales_30'
FROM `dc_base_oms_sku` where bailun_sku =@bailun_sku and warehouse_code = @warehouse_code and paid_time>= @btime30 and paid_time<=@ctime
GROUP BY platform_type,website";
var datas = conn.Query<dc_report_cash_flow_platform_share_dto>(sql, new
{
btime7 = occurDate.AddDays(-7).ToDayHome(),
btime14 = occurDate.AddDays(-14).ToDayHome(),
btime30 = occurDate.AddDays(-30).ToDayHome(),
ctime = occurDate.ToDayEnd(),
bailun_sku = bailun_sku,
warehouse_code = warehouse_code
}).ToList();
if(datas==null|| datas.Count <= 0)
{
var now = occurDate.AddMonths(1);
datas = conn.Query<dc_report_cash_flow_platform_share_dto>(sql, new
{
btime7 = now.AddDays(-7).ToDayHome(),
btime14 = now.AddDays(-14).ToDayHome(),
btime30 = now.AddDays(-30).ToDayHome(),
bailun_sku = bailun_sku,
warehouse_code = warehouse_code
}).ToList();
}
if (datas != null &&datas.Count>=1)
{
foreach (var item in datas)
{
item.sales_weight = Math.Round( ((item.sales_7 * rule.weighting_coefficient_seven)+ (item.sales_14 * rule.weighting_coefficient_fourteen)+ (item.sales_30 * rule.weighting_coefficient_thirty)),2);
}
// 总加权销量
var sales_weight_sum = datas.Sum(s=> s.sales_weight);
foreach (var item in datas)
{
item.ratio = item.sales_weight / sales_weight_sum;
}
// 把精度导致的误差全部算给最高的平台
var sumRatio = datas.Sum(s => s.ratio);
datas.OrderByDescending(s => s.ratio).FirstOrDefault().ratio += (1- sumRatio) ;
}
return datas;
}
} }
} }
...@@ -278,4 +278,25 @@ namespace AutoTurnOver.Models ...@@ -278,4 +278,25 @@ namespace AutoTurnOver.Models
public string supplier_name { get; set; } public string supplier_name { get; set; }
public string product_type { get; set; } public string product_type { get; set; }
} }
public class dc_report_cash_flow_platform_share_dto
{
public string platform_type { get; set; }
public string web_stie { get; set; }
/// <summary>
/// 加权销量
/// </summary>
public decimal sales_7 { get; set; }
public decimal sales_14 { get; set; }
public decimal sales_30 { get; set; }
/// <summary>
/// 最终加权销量
/// </summary>
public decimal sales_weight { get; set; }
/// <summary>
/// 占比
/// </summary>
public decimal ratio { get; set; }
}
} }
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