Commit 835e7629 by 泽锋 李

初始化调拨运费滑动平均单价

parent 40e294fa
......@@ -1105,8 +1105,6 @@ from dc_auto_turnover where gmt_modified>=@btime and gmt_modified<=@etime
});
}
public static void WaitTurnoverQueueTask()
{
// 每秒检查一次
......@@ -1117,6 +1115,31 @@ from dc_auto_turnover where gmt_modified>=@btime and gmt_modified<=@etime
WaitTurnoverQueueTask();
}
}
/// <summary>
/// 调拨利润
/// </summary>
/// <returns></returns>
public static List<transfer_profit_dto> TransferProfitList(string bailun_sku, string warehouse_code)
{
List<transfer_profit_dto> datas = new List<transfer_profit_dto>() {
new transfer_profit_dto{ name ="采购单价",days = new List<transfer_profit_dto.day_dto>()}
};
var result = GetModel(bailun_sku, warehouse_code);
var sales_details = result.sales_details.ToObj<List<decimal>>().Select(s => (int)Math.Ceiling(s)).ToList();
var btime = DateTime.Now.AddDays(-30);
var etime = DateTime.Now.AddDays(sales_details.Count-7);
var this_time = btime;
while (this_time.ToDayHome()<= etime.ToDayEnd())
{
this_time = this_time.AddDays(1);
}
return datas;
}
}
......
......@@ -3,6 +3,8 @@ using AutoTurnOver.Utility;
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using Dapper;
namespace AutoTurnOver.DB
{
......@@ -118,24 +120,147 @@ namespace AutoTurnOver.DB
action_date = log_data.gmt_create_date,
action_log_id = log_data.data_id.ToString(),
bailun_sku = log_data.bailun_sku,
current_count = log_data.count,
order_no = log_data.system_order_no,
update_time = DateTime.Now,
warehouse_code = log_data.warehouse_code
};
// 查询该流水是否已经计算过
var oldId = _connection.QuerySingleOrDefault<int>(" select id from dc_base_transfer_freight_log where action_log_id=@action_log_id limit 1 ",new { action_log_id= data_log.action_log_id });
if (oldId > 0)
try
{
return;
// 查询该流水是否已经计算过
var oldId = _connection.QuerySingleOrDefault<int>(" select id from dc_base_transfer_freight_log where action_log_id=@action_log_id limit 1 ", new { action_log_id = data_log.action_log_id });
if (oldId > 0)
{
return;
}
var history_avg_list = _connection.Query<transfer_price_dto>(@"
select t2.sku ,t1.targetwareno,t2.deliverycount,t1.estimatedcost,t3.deliverycount as 'order_deliverycount' from dc_base_transfer_info as t1
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
where t2.sku=@sku and t1.targetwareno=@targetwareno and t1.estimatedcost>0 and t1.creationtime<=@date and t1.stateid=5 and t1.isdeleted=0 order by t1.creationtime DESC
", new
{
sku = data_log.bailun_sku,
targetwareno = data_log.warehouse_code,
date = data_log.action_date
}).AsList();
data_log.freight_unit_price = history_avg_list.Average(s => s.estimatedcost / s.order_deliverycount);
// 记录到最新运费表
dc_base_transfer_freight new_data = new dc_base_transfer_freight()
{
bailun_sku = data_log.bailun_sku,
freight_unit_price = data_log.freight_unit_price,
update_time = DateTime.Now,
warehouse_code = data_log.warehouse_code,
id = (_connection.QueryFirstOrDefault<int?>(" select id from dc_base_transfer_freight where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
bailun_sku = data_log.bailun_sku,
warehouse_code = data_log.warehouse_code
}) ?? 0)
};
if (new_data.id > 0)
{
_connection.Update(new_data);
}
else
{
_connection.Insert(new_data);
}
}
catch (Exception ex)
{
data_log.remarks = ex.Message + "---" + ex.StackTrace;
}
_connection.Insert(data_log);
}
/// <summary>
/// 初始化数据
/// </summary>
public static void Init()
{
//查询所有没有记录的数据
var datas = _connection.Query<stock_dto>(@"select t1.bailun_sku,t1.warehouse_code,t1.usable_stock from dc_base_stock as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code
where t2.hq_type!='国内仓' and t1.usable_stock>0 ").ToList();
foreach (var log_data in datas)
{
try
{
dc_base_transfer_freight_log data_log = new dc_base_transfer_freight_log
{
action_date = new DateTime(2021, 02, 22),
action_log_id = "",
bailun_sku = log_data.bailun_sku,
order_no = "init",
update_time = DateTime.Now,
warehouse_code = log_data.warehouse_code
};
var history_avg_list = _connection.Query<transfer_price_dto>(@"
select t2.sku ,t1.targetwareno,t2.deliverycount,t1.estimatedcost,t3.deliverycount as 'order_deliverycount' from dc_base_transfer_info as t1
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
where t2.sku=@sku and t1.targetwareno=@targetwareno and t1.estimatedcost>0 and t1.stateid=5 and t1.isdeleted=0 order by t1.creationtime DESC
", new
{
sku = data_log.bailun_sku,
targetwareno = data_log.warehouse_code
}).AsList();
data_log.freight_unit_price = history_avg_list.Average(s => s.estimatedcost / s.order_deliverycount);
data_log.id = _connection.QuerySingleOrDefault<int?>(" select * from dc_base_transfer_freight_log where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new {
bailun_sku = data_log.bailun_sku,
warehouse_code = data_log.warehouse_code,
}) ??0;
if (data_log.id <= 0)
{
_connection.Insert(data_log);
_connection.Insert(new dc_base_transfer_freight
{
bailun_sku = data_log.bailun_sku,
warehouse_code = data_log.warehouse_code,
freight_unit_price = data_log.freight_unit_price,
update_time = DateTime.Now
});
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
public class stock_dto
{
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public int usable_stock { get; set; }
}
public class transfer_price_dto
{
public string sku { get; set; }
public string targetwareno { get; set; }
public int deliverycount { get; set; }
/// <summary>
/// 订单总运费
/// </summary>
public decimal estimatedcost { get; set; }
// 查询当前库存总值
var last_data = _connection.QuerySingleOrDefault<int>(" select id from dc_base_transfer_freight_log where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code order by action_date desc limit 1 ", new {
bailun_sku = data_log.bailun_sku,
warehouse_code = data_log.warehouse_code
});
/// <summary>
/// 订单总发货数量
/// </summary>
public int order_deliverycount { get; set; }
}
}
}
......@@ -13,17 +13,14 @@ namespace AutoTurnOver.Models
/// <summary>
/// 运费单价
/// </summary>
public string freight_unit_price { get; set; }
public decimal freight_unit_price { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime update_time { get; set; }
/// <summary>
/// 计算公式
/// </summary>
public string formula { get; set; }
}
public class dc_base_transfer_freight_log
......@@ -32,35 +29,20 @@ namespace AutoTurnOver.Models
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
/// <summary>
/// 运费单价
/// </summary>
public decimal freight_unit_price { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public DateTime update_time { get; set; }
/// <summary>
/// 历史总运费
/// </summary>
public decimal history_freight { get; set; }
/// <summary>
/// 本次运费
/// </summary>
public decimal current_freight { get; set; }
/// <summary>
/// 本次入库数量
/// </summary>
public int current_count { get; set; }
/// <summary>
/// 本次入库后的总运费
/// </summary>
public decimal current_sum_freight { get; set; }
/// <summary>
/// 本次入库的调拨单号
......@@ -68,16 +50,6 @@ namespace AutoTurnOver.Models
public string order_no { get; set; }
/// <summary>
/// 订单总运费
/// </summary>
public decimal order_freight { get; set; }
/// <summary>
/// 订单总发货数量
/// </summary>
public int order_count { get; set; }
/// <summary>
/// 操作时间
/// </summary>
public DateTime action_date { get; set; }
......@@ -86,5 +58,6 @@ namespace AutoTurnOver.Models
/// 操作流水的唯一标识
/// </summary>
public string action_log_id { get; set; }
public string remarks { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class transfer_profit_dto
{
public string name { get; set; }
public List<day_dto> days { get; set; }
public class day_dto
{
public DateTime date { get; set; }
public string date_str { get {
return date.ToString("MM-dd"+$"{Sinicization(date.DayOfWeek)}");
} }
public decimal val { get; set; }
}
public static string Sinicization(DayOfWeek week)
{
switch (week)
{
case DayOfWeek.Friday:
return "周五";
case DayOfWeek.Monday:
return "周一";
case DayOfWeek.Saturday:
return "周六";
case DayOfWeek.Sunday:
return "周日";
case DayOfWeek.Thursday:
return "周四";
case DayOfWeek.Tuesday:
return "周二";
case DayOfWeek.Wednesday:
return "周三";
default:
return "";
break;
}
}
}
}
......@@ -37,7 +37,7 @@ namespace AutoTurnOver.Purchase.AverageTarget
try
{
Console.WriteLine($"开始 init2 ,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
PurchaseAverageTargetServices.Calculation(days:(360*3));
//PurchaseAverageTargetServices.Calculation(days:(360*3));
Console.WriteLine($"结束 init2,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
catch (Exception ex)
......@@ -67,6 +67,26 @@ namespace AutoTurnOver.Purchase.AverageTarget
}
});
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
dc_base_transfer_freight_dao.SynchroOrderBailunTransferLog(5);
}
catch (Exception ex)
{
Console.WriteLine("同步掉系统入库日志:" + ex.Message);
}
Thread.Sleep(10 * 60 * 1000);
}
});
return Task.CompletedTask;
}
......
......@@ -34,6 +34,7 @@ namespace AutoTurnOver.Purchase.AverageTarget
//PurchaseAverageTargetServices.Calculation("368720104", days: 360);
//PurchaseAverageTargetServices.CalculationTransfer("LM-EO-007", 360);
//PurchaseAverageTargetServices.CalculationTransfer(days: (360 * 3),has_transfer:true);
}
catch (Exception ex)
{
......
......@@ -35,6 +35,7 @@ namespace ResetOutofstock
//report.GenerateReportPlatformGoods();
//dc_auto_turnover.ResetHistory();
}
catch (Exception ex)
{
......
......@@ -17,9 +17,9 @@ namespace ResetOutofstock
Task.Factory.StartNew(() =>
{
//Console.WriteLine($"init 开始 ,线程Id:{Thread.CurrentThread.ManagedThreadId},{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
//report.GenerateReportPlatformGoods();
//Console.WriteLine($"init 结束,线程Id:{Thread.CurrentThread.ManagedThreadId},{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Console.WriteLine($"init 开始 ,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
dc_base_transfer_freight_dao.Init();
Console.WriteLine($"init 结束,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
});
......
......@@ -35,5 +35,8 @@
},
"lms-sys": {
"transfer-node": "http://lms.bailuntec.com/api/order/transfer/ApiOrderTransferSkuCurrentNode"
},
"Order": {
"Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord"
}
}
......@@ -36,5 +36,8 @@
},
"lms-sys": {
"transfer-node": "http://lms.bailuntec.com/api/order/transfer/ApiOrderTransferSkuCurrentNode"
},
"Order": {
"Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord"
}
}
......@@ -35,5 +35,8 @@
},
"lms-sys": {
"transfer-node": "http://lms.bailuntec.com/api/order/transfer/ApiOrderTransferSkuCurrentNode"
},
"Order": {
"Bailun_TransferLog": "http://api.wms.bailuntec.com/api/services/app/AllotOrderService/SearchOrderSkuRecord"
}
}
\ No newline at end of file
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