Commit 6fa7d598 by 泽锋 李

刷新调拨平均值

parent 8864702f
...@@ -490,6 +490,34 @@ namespace AutoTurnOver.DB ...@@ -490,6 +490,34 @@ namespace AutoTurnOver.DB
/// 获取lms 的调拨单时效 /// 获取lms 的调拨单时效
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public static List<api_avg_order_transfer_dto> GetLmsAvgOrderTransferList(api_lms_order_transfer_sku_requst_dto data)
{
try
{
//查询采购建议明细
string url = ConfigHelper.GetValue("api_lms_avg_order_transfer_list");
string resultStr = HttpHelper.Request(url, RequestType.POST, data.ToJson(), entype: "application/json; charset=utf-8", timeout: 1000 * 60 * 60 * 24);
var result = resultStr.ToObj<List<api_avg_order_transfer_dto>>();
if (result == null)
{
return new List<api_avg_order_transfer_dto>() { };
}
else
{
return result;
}
}
catch (Exception ex)
{
return new List<api_avg_order_transfer_dto>();
//throw new Exception("lms 调拨单时效 接口异常: " + ex.Message);
//throw new Exception("lms 调拨单时效 接口异常: " + ex.StackTrace);
}
}
/// <summary>
/// 获取lms 的调拨单时效
/// </summary>
/// <returns></returns>
public static List<api_avg_days_dto> GetLmsOrderTransferAvg(api_lms_order_transfer_sku_requst_dto data) public static List<api_avg_days_dto> GetLmsOrderTransferAvg(api_lms_order_transfer_sku_requst_dto data)
{ {
try try
......
...@@ -49,6 +49,7 @@ where t1.isdeleted=0 and t1.`timestamp`>=@c_time ...@@ -49,6 +49,7 @@ where t1.isdeleted=0 and t1.`timestamp`>=@c_time
sql += " and tsku.sku=@bailun_sku "; sql += " and tsku.sku=@bailun_sku ";
parameters.Add("bailun_sku", bailun_sku); parameters.Add("bailun_sku", bailun_sku);
} }
sql += " group by tsku.sku,t1.targetwareno ";
return _connection.Query<temp_sku_dto>(sql, parameters); return _connection.Query<temp_sku_dto>(sql, parameters);
......
...@@ -250,6 +250,16 @@ namespace AutoTurnOver.Models.ApiDto ...@@ -250,6 +250,16 @@ namespace AutoTurnOver.Models.ApiDto
public string transport_type { get; set; } public string transport_type { get; set; }
} }
public class api_avg_order_transfer_dto
{
public string order_no { get; set; }
public string logistics_code { get; set; }
public string logistics_name { get; set; }
public string transport_type { get; set; }
public decimal sign_days { get; set; }
public decimal put_days { get; set; }
}
public class api_lms_order_transfer_sku_requst_dto public class api_lms_order_transfer_sku_requst_dto
{ {
public string bailun_sku { get; set; } public string bailun_sku { get; set; }
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_base_order_data_source
{
public int id { get; set; }
public string order_no { get; set; }
public string order_type { get; set; }
public string bailun_sku_warehouse_code { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public decimal sign_days { get; set; }
public decimal bale_days { get; set; }
public decimal put_days { get; set; }
public string logistics_code { get; set; }
public string logistics_name { get; set; }
public string transport_type { get; set; }
}
}
...@@ -22,7 +22,7 @@ namespace AutoTurnOver.Purchase.AverageTarget ...@@ -22,7 +22,7 @@ namespace AutoTurnOver.Purchase.AverageTarget
try try
{ {
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")}");
PurchaseAverageTargetServices.CalculationTransfer(); PurchaseAverageTargetServices.CalculationTransfer(days:360);
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")}");
} }
catch (Exception ex) catch (Exception ex)
......
...@@ -30,8 +30,8 @@ namespace AutoTurnOver.Purchase.AverageTarget ...@@ -30,8 +30,8 @@ namespace AutoTurnOver.Purchase.AverageTarget
//PurchaseAverageTargetServices.CalculationTransfer(); //PurchaseAverageTargetServices.CalculationTransfer();
//report.ResetTransExpectArrivaltime(); //report.ResetTransExpectArrivaltime();
dc_auto_return_goods_config_dao.NewCalculation(); //dc_auto_return_goods_config_dao.NewCalculation();
//PurchaseAverageTargetServices.CalculationTransfer(days: 180);
} }
catch (Exception ex) catch (Exception ex)
{ {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory", "api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory",
"api_lms_order_transfer_sku": "http://lms.bailuntec.com/api/order/transfer/list", "api_lms_order_transfer_sku": "http://lms.bailuntec.com/api/order/transfer/list",
"api_lms_order_transfer_sku_avg": "http://lms.bailuntec.com/api/order/transfer/avglist", "api_lms_order_transfer_sku_avg": "http://lms.bailuntec.com/api/order/transfer/avglist",
"api_lms_avg_order_transfer_list": "http://lms.bailuntec.com/api/order/transfer/avgorderlist",
"BrowseLogSetting": { "BrowseLogSetting": {
"Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo", "Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo",
"CanLog": "yes" "CanLog": "yes"
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory", "api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory",
"api_lms_order_transfer_sku": "http://lms.bailuntec.com/api/order/transfer/list", "api_lms_order_transfer_sku": "http://lms.bailuntec.com/api/order/transfer/list",
"api_lms_order_transfer_sku_avg": "http://lms.bailuntec.com/api/order/transfer/avglist", "api_lms_order_transfer_sku_avg": "http://lms.bailuntec.com/api/order/transfer/avglist",
"api_lms_avg_order_transfer_list": "http://lms.bailuntec.com/api/order/transfer/avgorderlist",
"BrowseLogSetting": { "BrowseLogSetting": {
"Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo", "Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo",
"CanLog": "yes" "CanLog": "yes"
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory", "api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory",
"api_lms_order_transfer_sku": "http://lms.bailuntec.com/api/order/transfer/list", "api_lms_order_transfer_sku": "http://lms.bailuntec.com/api/order/transfer/list",
"api_lms_order_transfer_sku_avg": "http://lms.bailuntec.com/api/order/transfer/avglist", "api_lms_order_transfer_sku_avg": "http://lms.bailuntec.com/api/order/transfer/avglist",
"api_lms_avg_order_transfer_list": "http://lms.bailuntec.com/api/order/transfer/avgorderlist",
"BrowseLogSetting": { "BrowseLogSetting": {
"Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo", "Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo",
"CanLog": "yes" "CanLog": "yes"
......
...@@ -142,7 +142,7 @@ namespace AutoTurnOver.Services ...@@ -142,7 +142,7 @@ namespace AutoTurnOver.Services
conn.Update(task_log); conn.Update(task_log);
} }
public static void CalculationTransfer(string bailun_sku = "") public static void CalculationTransfer(string bailun_sku = "",int days = 30)
{ {
MyMySqlConnection conn = connectionHelper._connection; MyMySqlConnection conn = connectionHelper._connection;
...@@ -161,7 +161,7 @@ namespace AutoTurnOver.Services ...@@ -161,7 +161,7 @@ namespace AutoTurnOver.Services
{ {
// 获取最近2天发送变化的SKU 用于计算 // 获取最近2天发送变化的SKU 用于计算
var chageSkuList = AveragePurchase.GetTransferChangeSku(30, bailun_sku); var chageSkuList = AveragePurchase.GetTransferChangeSku(days, bailun_sku);
foreach (var skuItem in chageSkuList) foreach (var skuItem in chageSkuList)
{ {
if (skuItem.warehouse_code == "MDBLWYT") if (skuItem.warehouse_code == "MDBLWYT")
...@@ -182,7 +182,36 @@ namespace AutoTurnOver.Services ...@@ -182,7 +182,36 @@ namespace AutoTurnOver.Services
{ {
// 计算平均入库天数 // 计算平均入库天数
// 查询相关的入库记录 // 查询相关的入库记录
var inboundList = AveragePurchase.GetInboundList(purchaseWList.Select(s => s.purchase_id), skuItem.bailun_sku); var inboundList = AveragePurchase.GetInboundList(purchaseWList.Select(s => s.purchase_id), skuItem.bailun_sku).ToList();
// 清空记录,重新记录数据源
conn.Execute(" delete from dc_base_order_data_source where bailun_sku_warehouse_code=@bailun_sku_warehouse_code and order_type=@order_type ", new
{
bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
order_type = "采购单-质检入库天数计算"
});
if (inboundList != null && inboundList.Count >= 1)
{
foreach (var itemLms in inboundList)
{
conn.Insert(new dc_base_order_data_source
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code,
logistics_code = "",
bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
bale_days = 0,
logistics_name = "",
order_no = itemLms.purchase_id,
order_type = "采购单-质检入库天数计算",
put_days = (decimal)Math.Ceiling((itemLms.update_time - itemLms.arrival_time).TotalHours / 24),
sign_days = 0,
transport_type = ""
});
}
}
if (inboundList != null && inboundList.Count() >= 1) if (inboundList != null && inboundList.Count() >= 1)
{ {
dataWarehouse.inbound_days = (int)inboundList.Sum(s => Math.Ceiling((s.update_time - s.arrival_time).TotalHours / 24)) / inboundList.Count(); dataWarehouse.inbound_days = (int)inboundList.Sum(s => Math.Ceiling((s.update_time - s.arrival_time).TotalHours / 24)) / inboundList.Count();
...@@ -256,11 +285,31 @@ namespace AutoTurnOver.Services ...@@ -256,11 +285,31 @@ namespace AutoTurnOver.Services
// transfer_type = transfer_type // transfer_type = transfer_type
//}); //});
var lmsAvg = ApiUtility.GetLmsOrderTransferAvg(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto //如果没有配置渠道,则去lms查哪些渠道可发
if (string.IsNullOrWhiteSpace(dc_base_head_transport_config_data.logistics_code))
{
// 查询物流方案
var logisticsDatas = ApiUtility.RealTimeShipLogisticsList(new Models.ApiDto.LmsShipLogisticsRequstDto
{
endCountries = base_wa,
character_skus = skuItem.bailun_sku,
startPoint = "3"
});
if(logisticsDatas!=null && logisticsDatas.Count >= 1)
{
dc_base_head_transport_config_data.logistics_code = string.Join(",", logisticsDatas.Select(s=>s.Line_Code));
}
else
{
dc_base_head_transport_config_data.logistics_code = "无可发渠道";
}
}
var lmsAvg = ApiUtility.GetLmsAvgOrderTransferList(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto
{ {
//bailun_sku = skuItem.bailun_sku, //bailun_sku = skuItem.bailun_sku,
transfer_type_val = transfer_type, transfer_type_val = transfer_type,
warehouse_code = skuItem.warehouse_code, //warehouse_code = skuItem.warehouse_code,
logistics_code = dc_base_head_transport_config_data.logistics_code, logistics_code = dc_base_head_transport_config_data.logistics_code,
country = base_wa country = base_wa
}); });
...@@ -268,37 +317,55 @@ namespace AutoTurnOver.Services ...@@ -268,37 +317,55 @@ namespace AutoTurnOver.Services
if (lmsAvg != null && lmsAvg.Count >= 3) if (lmsAvg != null && lmsAvg.Count >= 3)
{ {
dataWarehouse.transfer_bale_delivery = 1; dataWarehouse.transfer_bale_delivery = 1;
dataWarehouse.transfer_delivery = ((lmsAvg.Sum(s => s.avg_sign_days) - lmsAvg.Max(s => s.avg_sign_days) - lmsAvg.Min(s => s.avg_sign_days)) / (lmsAvg.Count - 2)); dataWarehouse.transfer_delivery = ((lmsAvg.Sum(s => s.sign_days) - lmsAvg.Max(s => s.sign_days) - lmsAvg.Min(s => s.sign_days)) / (lmsAvg.Count - 2));
} }
else if (lmsAvg != null && lmsAvg.Count >= 1) else if (lmsAvg != null && lmsAvg.Count >= 1)
{ {
dataWarehouse.transfer_bale_delivery = 1; dataWarehouse.transfer_bale_delivery = 1;
dataWarehouse.transfer_delivery = lmsAvg.Select(s => s.avg_sign_days).Average(); dataWarehouse.transfer_delivery = lmsAvg.Select(s => s.sign_days).Average();
} }
if (lmsAvg.Where(s => s.avg_put_days != null).Count() >= 3) if (lmsAvg.Count() >= 3)
{ {
dataWarehouse.abroad_inbound_delivery = ((lmsAvg.Where(s => s.avg_put_days!=null).Sum(s => s.avg_put_days.Value) - lmsAvg.Max(s => s.avg_put_days.Value) - lmsAvg.Min(s => s.avg_put_days.Value)) / (lmsAvg.Count - 2)); dataWarehouse.abroad_inbound_delivery = ((lmsAvg.Where(s => s.put_days!=null).Sum(s => s.put_days) - lmsAvg.Max(s => s.put_days) - lmsAvg.Min(s => s.put_days)) / (lmsAvg.Count - 2));
} }
else if (lmsAvg.Where(s => s.avg_put_days != null).Count() >= 1) else if (lmsAvg.Where(s => s.put_days != null).Count() >= 1)
{ {
dataWarehouse.abroad_inbound_delivery = lmsAvg.Where(s => s.avg_put_days != null).Select(s => s.avg_put_days.Value).Average(); dataWarehouse.abroad_inbound_delivery = lmsAvg.Where(s => s.put_days != null).Select(s => s.put_days).Average();
} }
else else
{ {
dataWarehouse.abroad_inbound_delivery = 0; dataWarehouse.abroad_inbound_delivery = 0;
} }
// 清空记录,重新记录数据源
conn.Execute(" delete from dc_base_order_data_source where bailun_sku_warehouse_code=@bailun_sku_warehouse_code and order_type=@order_type ",new {
bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
order_type = "调拨单-平均天数计算"
});
if(lmsAvg!=null && lmsAvg.Count >= 1)
{
foreach (var itemLms in lmsAvg)
{
conn.Insert(new dc_base_order_data_source
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code,
logistics_code = itemLms.logistics_code,
bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
bale_days = 1,
logistics_name = itemLms.logistics_name,
order_no = itemLms.order_no,
order_type = "调拨单-平均天数计算",
put_days = itemLms.put_days,
sign_days = itemLms.sign_days,
transport_type = itemLms.transport_type
});
}
}
// 大于两条记录,才计算平均值,否则没有意义
//if (transport3List != null && transport3List.Count() >= 2)
//{
// dataWarehouse.transfer_bale_delivery = 0;
// dataWarehouse.transfer_delivery = (decimal)transport3List.Sum(s => (s.sign_time - s.shipping_time).TotalDays) / transport3List.Count();
// dataWarehouse.abroad_inbound_delivery = (decimal)transport3List.Sum(s => (s.put_time - s.sign_time).TotalDays) / transport3List.Count();
//}
AveragePurchase.Save(dataWarehouse, conn); AveragePurchase.Save(dataWarehouse, conn);
......
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