Commit 5b2cc63e by 泽锋 李

fix 计算调拨评价值

parent c1d014dc
......@@ -399,5 +399,36 @@ namespace AutoTurnOver.DB
throw new Exception("Oms系统 退货单推送接口异常: " + ex.StackTrace);
}
}
/// <summary>
/// 获取lms 的调拨单时效
/// </summary>
/// <returns></returns>
public static List<api_lms_order_transfer_sku_dto> GetLmsOrderTransfer(api_lms_order_transfer_sku_requst_dto data)
{
try
{
//查询采购建议明细
string url = ConfigHelper.GetValue("api_lms_order_transfer_sku");
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_lms_order_transfer_sku_dto>>();
if (result == null)
{
return new List<api_lms_order_transfer_sku_dto>() { };
}
else
{
return result;
}
}
catch (Exception ex)
{
return new List<api_lms_order_transfer_sku_dto>();
//throw new Exception("lms 调拨单时效 接口异常: " + ex.Message);
//throw new Exception("lms 调拨单时效 接口异常: " + ex.StackTrace);
}
}
}
}
......@@ -34,6 +34,19 @@ GROUP BY t1.bailun_sku,t1.warehouse_code,t1.supplier_id ", new { c_time = DateT
//return _connection.Query<temp_sku_dto>("select t1.bailun_sku,t1.warehouse_code,t1.supplier_id from dc_base_purchase as t1 where t1.update_time>=@time group by t1.bailun_sku,t1.warehouse_code,t1.supplier_id ", parameters);
}
public static IEnumerable<temp_sku_dto> GetTransferChangeSku(int day)
{
DynamicParameters parameters = new DynamicParameters();
parameters.Add("time", DateTime.Now.AddDays(0 - day).ToString("yyyy-MM-dd 00:00:00"));
return _connection.Query<temp_sku_dto>(@"select t2.hq_type,tsku.sku as 'bailun_sku',t1.targetwareno as 'warehouse_code'
from dc_base_transfer_info as t1
left join dc_base_transfer_info_skus as tsku on t1.dataid = tsku.dataid
left join dc_base_warehouse as t2 on t1.targetwareno = t2.warehouse_code
where t1.isdeleted=0 and t1.`timestamp`>=@c_time
GROUP BY tsku.sku,t1.targetwareno ", new { c_time = DateTime.Now.AddDays(-7) });
//return _connection.Query<temp_sku_dto>("select t1.bailun_sku,t1.warehouse_code,t1.supplier_id from dc_base_purchase as t1 where t1.update_time>=@time group by t1.bailun_sku,t1.warehouse_code,t1.supplier_id ", parameters);
}
public static IEnumerable<dc_average_purchase> GetListByWCode(string sku, string warehouse_code)
{
DynamicParameters parameters = new DynamicParameters();
......@@ -160,7 +173,7 @@ and t2.update_time is not null and t1.update_time>t2.update_time
/// <param name="type">调拨类型</param>
/// <param name="seed_count"></param>
/// <returns></returns>
public static IEnumerable<dc_base_transfer_log> GetTransportList(string bailun_sku,string warehouse_code, string type,string logistics_code, int seed_count)
public static IEnumerable<dc_base_transfer_log> GetTransportList_bak(string bailun_sku,string warehouse_code, string type,string logistics_code, int seed_count)
{
DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", bailun_sku);
......@@ -224,7 +237,6 @@ and t_w.hq_type!='国内仓'
}
/// <summary>
/// 保存数据
/// </summary>
......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace AutoTurnOver.Models.ApiDto
{
/// <summary>
/// 从aims拿到的调拨单数据
/// </summary>
public class api_lms_order_transfer_sku_dto
{
public int id { get; set; }
/// <summary>
/// 系统单号
/// </summary>
[Description("系统单号")]
public string system_order_no { get; set; }
/// <summary>
/// 物流单号
/// </summary>
[Description("物流单号")]
public string trackingno { get; set; }
/// <summary>
/// 目标送达时间
/// </summary>
[Description("目标送达时间")]
public DateTime target_delivery_date { get; set; }
/// <summary>
/// 目的国家
/// </summary>
[Description("目的国家")]
public string country { get; set; }
/// <summary>
/// 目的仓
/// </summary>
[Description("目的仓")]
public string target_ware_name { get; set; }
/// <summary>
/// 目的仓
/// </summary>
[Description("目的仓")]
public string target_ware_no { get; set; }
/// <summary>
/// 抓取时间
/// </summary>
[Description("抓取时间")]
public DateTime gmt_create_date { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Description("创建时间")]
public DateTime create_date { get; set; }
/// <summary>
/// 邮编
/// </summary>
[Description("邮编")]
public string postal_code { get; set; }
/// <summary>
/// 货物总价值
/// </summary>
[Description("货物总价值")]
public decimal goods_cost { get; set; }
/// <summary>
/// 货物总重量
/// </summary>
[Description("货物总重量")]
public decimal goods_weight { get; set; }
/// <summary>
/// 总费用
/// </summary>
[Description("总费用")]
public decimal cost { get; set; }
/// <summary>
/// 基础运费
/// </summary>
[Description("基础运费")]
public decimal freight_cost { get; set; }
/// <summary>
/// 文件费用
/// </summary>
[Description("文件费用")]
public decimal file_cost { get; set; }
/// <summary>
/// 燃油费
/// </summary>
[Description("燃油费")]
public decimal fuel_cost { get; set; }
/// <summary>
/// 清关费
/// </summary>
[Description("清关费")]
public decimal clearance_cost { get; set; }
/// <summary>
/// 报关费
/// </summary>
[Description("报关费")]
public decimal declare_cost { get; set; }
/// <summary>
/// vat 手续费
/// </summary>
[Description("vat 手续费")]
public decimal vat_cost { get; set; }
/// <summary>
/// fda 手续费
/// </summary>
[Description("fda 手续费")]
public decimal fda_cost { get; set; }
/// <summary>
/// 偏远费
/// </summary>
[Description("偏远费")]
public decimal remote_cost { get; set; }
/// <summary>
/// 关税附加费
/// </summary>
[Description("关税附加费")]
public decimal tariff_add_cost { get; set; }
/// <summary>
/// 揽收时间
/// </summary>
[Description("揽收时间")]
public DateTime collect_time { get; set; }
/// <summary>
/// 上航时间
/// </summary>
[Description("揽收时间")]
public DateTime flight_time { get; set; }
/// <summary>
/// 转运时间
/// </summary>
[Description("转运时间")]
public DateTime transport_time { get; set; }
/// <summary>
/// 上网时间
/// </summary>
[Description("上网时间")]
public DateTime ascan_time { get; set; }
/// <summary>
/// 到港时间
/// </summary>
[Description("到港时间")]
public DateTime arrival_time { get; set; }
/// <summary>
/// 清关时间
/// </summary>
[Description("清关时间")]
public DateTime clearance_time { get; set; }
/// <summary>
/// 签收时间
/// </summary>
[Description("签收时间")]
public DateTime sign_time { get; set; }
/// <summary>
/// 入库时间
/// </summary>
[Description("入库时间")]
public DateTime put_time { get; set; }
/// <summary>
/// sku
/// </summary>
[Description("sku")]
public string sku { get; set; }
/// <summary>
/// sku 名称
/// </summary>
[Description("sku 名称")]
public string sku_title { get; set; }
/// <summary>
///数量
/// </summary>
[Description("数量")]
public int quantity { get; set; }
/// <summary>
/// 是否删除
/// </summary>
[Description("是否删除")]
public int? is_delete { get; set; }
/// <summary>
/// 发货时间
/// </summary>
[Description("发货时间")]
public DateTime shipping_time { get; set; }
/// <summary>
/// 运输方式
/// </summary>
[Description("运输方式")]
public int transport_type_val { get; set; }
/// <summary>
/// 运输方式
/// </summary>
[Description("运输方式")]
public string transport_type { get; set; }
/// <summary>
/// 物流编码
/// </summary>
[Description("物流编码")]
public string logistics_code { get; set; }
/// <summary>
/// 物流名称
/// </summary>
[Description("物流名称")]
public string logistics_name { get; set; }
}
public class api_lms_order_transfer_sku_requst_dto
{
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public int orders { get; set; }
public int transfer_type { get; set; }
public string logistics_code { get; set; }
}
}
......@@ -64,6 +64,12 @@ namespace AutoTurnOver.Purchase.AverageTarget
PurchaseAverageTargetServices.Calculation();
Console.WriteLine($"结束采购平均值统计任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
if (now.Hour == 23 && now.Minute == 57)
{
Console.WriteLine($"开始调拨平均值统计任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
//PurchaseAverageTargetServices.CalculationTransfer();
Console.WriteLine($"结束调拨平均值统计任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
}
catch (Exception ex)
{
......
......@@ -27,7 +27,6 @@ namespace AutoTurnOver.Purchase.AverageTarget
}
catch (Exception ex)
{
throw;
}
......
......@@ -8,6 +8,7 @@
"Lms_GetLogistics": "http://lms.bailuntec.com/api/DataInfo/ApiLogistics/GetLogistics",
"PostPlatCategoryRate": "http://test.profit.bailuntec.com/api/platfee/ProfitPlatfee/PostPlatCategoryRate",
"api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory",
"api_lms_order_transfer_sku": "http://api.lms2.bailuntec.com/api/order/transfer/list",
"BrowseLogSetting": {
"Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo",
"CanLog": "yes"
......
......@@ -8,6 +8,7 @@
"Lms_GetLogistics": "http://lms.bailuntec.com/api/DataInfo/ApiLogistics/GetLogistics",
"PostPlatCategoryRate": "http://test.profit.bailuntec.com/api/platfee/ProfitPlatfee/PostPlatCategoryRate",
"api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory",
"api_lms_order_transfer_sku": "http://api.lms2.bailuntec.com/api/order/transfer/list",
"BrowseLogSetting": {
"Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo",
"CanLog": "yes"
......
......@@ -8,6 +8,7 @@
"Lms_GetLogistics": "http://lms.bailuntec.com/api/DataInfo/ApiLogistics/GetLogistics",
"PostPlatCategoryRate": "http://172.31.255.11/api/platfee/ProfitPlatfee/PostPlatCategoryRate",
"api_plat_category": "http://doc.bailuntec.com:6040/profitplatfee/getplatcategory",
"api_lms_order_transfer_sku": "http://10.0.3.13/api/order/transfer/list",
"BrowseLogSetting": {
"Url": "http://saas.admin.bailuntec.com/Api/Ssoadmin/operationloginfo/addoperationloginfo",
"CanLog": "yes"
......
......@@ -90,7 +90,7 @@ namespace AutoTurnOver.Services
var temp_delivery_days = delivery_days / purchaseList.Count;
//够5个单才算平均值给系统用
// 如果是海外仓暂时不算,否则算出来30几天的平均值,影响计划单交期调整的推进
if (purchase_order_count >= 5 && skuItem.hq_type=="国内仓")
if (purchase_order_count >= 5 && skuItem.hq_type == "国内仓")
{
data.delivery_days = temp_delivery_days;
}
......@@ -127,15 +127,54 @@ namespace AutoTurnOver.Services
AveragePurchase.Save(data, conn);
}
var purchaseWList = AveragePurchase.GetPurchaseListByWode(skuItem, _seed_count).ToList();
if (purchaseWList != null && purchaseWList.Count() >= 1)
}
task_log.CompleteTime = DateTime.Now;
}
catch (Exception ex)
{
task_log.ErrorMsg = ex.Message + "--------" + ex.StackTrace;
}
conn.Update(task_log);
}
public static void CalculationTransfer()
{
MyMySqlConnection conn = connectionHelper._connection;
var task_log = new dc_task_log
{
StartTime = DateTime.Now,
Type = 2,
Count = 0
};
var taskID = conn.Insert(task_log);
task_log.ID = taskID.Value;
try
{
// 获取最近2天发送变化的SKU 用于计算
var chageSkuList = AveragePurchase.GetTransferChangeSku(30);
foreach (var skuItem in chageSkuList)
{
var purchaseWList = AveragePurchase.GetPurchaseListByWode(skuItem, _seed_count).ToList();
dc_average_warehouse dataWarehouse = new dc_average_warehouse()
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code
};
if (purchaseWList != null && purchaseWList.Count() >= 1)
{
// 计算平均入库天数
// 查询相关的入库记录
var inboundList = AveragePurchase.GetInboundList(purchaseWList.Select(s => s.purchase_id), skuItem.bailun_sku);
......@@ -147,45 +186,78 @@ namespace AutoTurnOver.Services
{
dataWarehouse.inbound_days = 0;
}
}
// 计算平均海运调拨天数
// 查询最近5次海运(已完成)记录
var transport1List = AveragePurchase.GetTransportList(skuItem.bailun_sku, skuItem.warehouse_code, "海运","", _seed_count);
//var transport1List = AveragePurchase.GetTransportList(skuItem.bailun_sku, skuItem.warehouse_code, "海运", "", _seed_count);
var transport1List = ApiUtility.GetLmsOrderTransfer(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code,
orders = _seed_count,
transfer_type = 2
});
if (transport1List != null && transport1List.Count() >= 1)
{
dataWarehouse.transfer_type_1_days = (decimal)transport1List.Sum(s => (s.inbound_time - s.bale_time).TotalDays) / transport1List.Count();
dataWarehouse.transfer_type_1_days = (decimal)transport1List.Sum(s => (s.put_time - s.shipping_time).TotalDays) / transport1List.Count();
}
// 计算平均空运调拨天数
// 查询最近5次空运(已完成)记录
var transport2List = AveragePurchase.GetTransportList(skuItem.bailun_sku, skuItem.warehouse_code, "空运","", _seed_count);
//var transport2List = AveragePurchase.GetTransportList(skuItem.bailun_sku, skuItem.warehouse_code, "空运", "", _seed_count);
var transport2List = ApiUtility.GetLmsOrderTransfer(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code,
orders = _seed_count,
transfer_type = 3
});
if (transport2List != null && transport2List.Count() >= 1)
{
dataWarehouse.transfer_type_2_days = (decimal)transport2List.Sum(s => (s.inbound_time - s.bale_time).TotalDays) / transport2List.Count();
dataWarehouse.transfer_type_2_days = (decimal)transport2List.Sum(s => (s.put_time - s.shipping_time).TotalDays) / transport2List.Count();
}
//头程天数
// 查询是否有默认渠道
var dc_base_head_transport_config_data = conn.QuerySingleOrDefault<dc_base_head_transport_config>(" select * from dc_base_head_transport_config where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code and is_delete=0 ",new {
var dc_base_head_transport_config_data = conn.QuerySingleOrDefault<dc_base_head_transport_config>(" select * from dc_base_head_transport_config where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code and is_delete=0 ", new
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code
})??new dc_base_head_transport_config { };
var transport3List = AveragePurchase.GetTransportList(skuItem.bailun_sku, skuItem.warehouse_code, dc_base_head_transport_config_data.head_transport, dc_base_head_transport_config_data.logistics_code, _seed_count);
}) ?? new dc_base_head_transport_config { };
//var transport3List = AveragePurchase.GetTransportList(skuItem.bailun_sku, skuItem.warehouse_code, dc_base_head_transport_config_data.head_transport, dc_base_head_transport_config_data.logistics_code, _seed_count);
var transfer_type = 0;
if (dc_base_head_transport_config_data.head_transport == "陆运")
{
transfer_type = 1;
}
else if (dc_base_head_transport_config_data.head_transport == "海运")
{
transfer_type = 2;
}
else if (dc_base_head_transport_config_data.head_transport == "空运")
{
transfer_type = 3;
}
var transport3List = ApiUtility.GetLmsOrderTransfer(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto
{
bailun_sku = skuItem.bailun_sku,
warehouse_code = skuItem.warehouse_code,
orders = _seed_count,
logistics_code = dc_base_head_transport_config_data.logistics_code,
transfer_type = transfer_type
});
// 大于两条记录,才计算平均值,否则没有意义
if (transport3List != null && transport3List.Count() >= 2)
{
dataWarehouse.transfer_bale_delivery = (decimal)transport3List.Sum(s => (s.delivery_time - s.bale_time).TotalDays) / transport3List.Count();
dataWarehouse.transfer_delivery = (decimal)transport3List.Sum(s => (s.arrival_time - s.verify_time).TotalDays) / transport3List.Count();
dataWarehouse.abroad_inbound_delivery = (decimal)transport3List.Sum(s => (s.inbound_time - s.arrival_time).TotalDays) / transport3List.Count();
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();
}
if (has_jit)
{
dataWarehouse.inbound_days = 1;
}
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