Commit 98b9dadb by 泽锋 李

fix

parent 6fa7d598
...@@ -1022,6 +1022,38 @@ from dc_auto_turnover where gmt_modified>=@btime and gmt_modified<=@etime ...@@ -1022,6 +1022,38 @@ from dc_auto_turnover where gmt_modified>=@btime and gmt_modified<=@etime
) )
", new { btime = DateTime.Now.ToDayHome(), etime = DateTime.Now.ToDayEnd() }); ", new { btime = DateTime.Now.ToDayHome(), etime = DateTime.Now.ToDayEnd() });
} }
/// <summary>
/// 获取数据来源
/// </summary>
/// <returns></returns>
public static List<dc_base_order_data_source> GetOrderDataSource(dc_base_order_data_source_search_dto searchData, int offset, int limit, ref int total)
{
var sql = " select * from dc_base_order_data_source as t1 where 1=1 ";
var countSql = " select count(1) from dc_base_order_data_source as t1 where 1=1 ";
DynamicParameters parameters = new DynamicParameters();
if(!string.IsNullOrWhiteSpace(searchData.bailun_sku))
{
sql += " and t1.bailun_sku=@bailun_sku ";
countSql += " and t1.bailun_sku=@bailun_sku ";
parameters.Add("bailun_sku",searchData.bailun_sku);
}
if (!string.IsNullOrWhiteSpace(searchData.warehouse_code))
{
sql += " and t1.warehouse_code=@warehouse_code ";
countSql += " and t1.warehouse_code=@warehouse_code ";
parameters.Add("warehouse_code", searchData.warehouse_code);
}
if (!string.IsNullOrWhiteSpace(searchData.order_type_str))
{
sql += " and t1.order_type=@order_type ";
countSql += " and t1.order_type=@order_type ";
parameters.Add("order_type", searchData.order_type_str);
}
sql += " limit " + offset + "," + limit;
total = _connection.QueryFirstOrDefault<int>(countSql, parameters);
return _connection.Query<dc_base_order_data_source>(sql, parameters).AsList();
}
} }
......
...@@ -20,4 +20,29 @@ namespace AutoTurnOver.Models ...@@ -20,4 +20,29 @@ namespace AutoTurnOver.Models
public string logistics_name { get; set; } public string logistics_name { get; set; }
public string transport_type { get; set; } public string transport_type { get; set; }
} }
public class dc_base_order_data_source_search_dto
{
public int order_type { get; set; }
public string order_type_str { get {
if (order_type == 11)
{
return "采购单-签收天数计算";
}
else if (order_type == 12)
{
return "采购单-质检入库天数计算";
}
else if (order_type == 2)
{
return "调拨单-平均天数计算";
}
else
{
return "";
}
} }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
}
} }
...@@ -31,7 +31,7 @@ namespace AutoTurnOver.Purchase.AverageTarget ...@@ -31,7 +31,7 @@ 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); //PurchaseAverageTargetServices.CalculationTransfer("948890401", days: 360);
} }
catch (Exception ex) catch (Exception ex)
{ {
......
...@@ -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 = "",int days = 30) public static void CalculationTransfer(string bailun_sku = "", int days = 30)
{ {
MyMySqlConnection conn = connectionHelper._connection; MyMySqlConnection conn = connectionHelper._connection;
...@@ -164,210 +164,184 @@ namespace AutoTurnOver.Services ...@@ -164,210 +164,184 @@ namespace AutoTurnOver.Services
var chageSkuList = AveragePurchase.GetTransferChangeSku(days, bailun_sku); var chageSkuList = AveragePurchase.GetTransferChangeSku(days, bailun_sku);
foreach (var skuItem in chageSkuList) foreach (var skuItem in chageSkuList)
{ {
if (skuItem.warehouse_code == "MDBLWYT") try
{ {
if (skuItem.warehouse_code == "QMSUSFBA")
{
} }
var base_wa = conn.QueryFirstOrDefault<string>(" select t2.`code` from dc_base_warehouse as t1 left join dc_base_country as t2 on t1.area_name = t2.`name` where warehouse_code=@warehouse_code ", new { skuItem.warehouse_code }); var base_wa = conn.QueryFirstOrDefault<string>(" select t2.`code` from dc_base_warehouse as t1 left join dc_base_country as t2 on t1.area_name = t2.`name` where warehouse_code=@warehouse_code ", new { skuItem.warehouse_code });
var purchaseWList = AveragePurchase.GetPurchaseListByWode(skuItem, _seed_count).ToList();
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).ToList();
// 清空记录,重新记录数据源 dc_average_warehouse dataWarehouse = new dc_average_warehouse()
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}", bailun_sku = skuItem.bailun_sku,
order_type = "采购单-质检入库天数计算" warehouse_code = skuItem.warehouse_code
}); };
if (inboundList != null && inboundList.Count >= 1) if (purchaseWList != null && purchaseWList.Count() >= 1)
{ {
foreach (var itemLms in inboundList) // 计算平均入库天数
// 查询相关的入库记录
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
{ {
conn.Insert(new dc_base_order_data_source bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
order_type = "采购单-质检入库天数计算"
});
if (inboundList != null && inboundList.Count >= 1)
{
foreach (var itemLms in inboundList)
{ {
bailun_sku = skuItem.bailun_sku, conn.Insert(new dc_base_order_data_source
warehouse_code = skuItem.warehouse_code, {
logistics_code = "", bailun_sku = skuItem.bailun_sku,
bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}", warehouse_code = skuItem.warehouse_code,
bale_days = 0, logistics_code = "",
logistics_name = "", bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
order_no = itemLms.purchase_id, bale_days = 0,
order_type = "采购单-质检入库天数计算", logistics_name = "",
put_days = (decimal)Math.Ceiling((itemLms.update_time - itemLms.arrival_time).TotalHours / 24), order_no = itemLms.purchase_id,
sign_days = 0, order_type = "采购单-质检入库天数计算",
transport_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)
{
dataWarehouse.inbound_days = (int)inboundList.Sum(s => Math.Ceiling((s.update_time - s.arrival_time).TotalHours / 24)) / inboundList.Count();
}
else
{
dataWarehouse.inbound_days = 0;
}
} }
if (inboundList != null && inboundList.Count() >= 1) //头程天数
// 查询是否有默认渠道
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
{ {
dataWarehouse.inbound_days = (int)inboundList.Sum(s => Math.Ceiling((s.update_time - s.arrival_time).TotalHours / 24)) / inboundList.Count(); 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);
var transfer_type = 0;
if (dc_base_head_transport_config_data.head_transport == "陆运")
{
transfer_type = 1;
} }
else else if (dc_base_head_transport_config_data.head_transport == "海运")
{ {
dataWarehouse.inbound_days = 0; transfer_type = 2;
}
else if (dc_base_head_transport_config_data.head_transport == "空运")
{
transfer_type = 3;
} }
}
//如果没有配置渠道,则去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
// 查询最近5次海运(已完成)记录
//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 = 10,
// transfer_type = 2
//});
//if (transport1List != null && transport1List.Count() >= 1)
//{
// dataWarehouse.transfer_type_1_days = (decimal)transport1List.Sum(s => (s.sign_time - s.shipping_time).TotalDays) / transport1List.Count();
// dataWarehouse.transfer_type_1_days = (decimal)transport1List.Sum(s => (s.put_time - s.sign_time).TotalDays) / transport1List.Count();
//}
// 计算平均空运调拨天数
// 查询最近5次空运(已完成)记录
//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.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
{
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);
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 = 10,
// logistics_code = dc_base_head_transport_config_data.logistics_code,
// transfer_type = transfer_type
//});
//如果没有配置渠道,则去lms查哪些渠道可发
if (string.IsNullOrWhiteSpace(dc_base_head_transport_config_data.logistics_code))
{
// 查询物流方案
var logisticsDatas = ApiUtility.RealTimeShipLogisticsList(new Models.ApiDto.LmsShipLogisticsRequstDto
{ {
endCountries = base_wa, //bailun_sku = skuItem.bailun_sku,
character_skus = skuItem.bailun_sku, transfer_type_val = transfer_type,
startPoint = "3" //warehouse_code = skuItem.warehouse_code,
logistics_code = dc_base_head_transport_config_data.logistics_code,
country = base_wa
}); });
if(logisticsDatas!=null && logisticsDatas.Count >= 1)
if (lmsAvg != null && lmsAvg.Count >= 3)
{ {
dc_base_head_transport_config_data.logistics_code = string.Join(",", logisticsDatas.Select(s=>s.Line_Code)); dataWarehouse.transfer_bale_delivery = 1;
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 else if (lmsAvg != null && lmsAvg.Count >= 1)
{ {
dc_base_head_transport_config_data.logistics_code = "无可发渠道"; dataWarehouse.transfer_bale_delivery = 1;
dataWarehouse.transfer_delivery = lmsAvg.Select(s => s.sign_days).Average();
} }
}
var lmsAvg = ApiUtility.GetLmsAvgOrderTransferList(new Models.ApiDto.api_lms_order_transfer_sku_requst_dto
{
//bailun_sku = skuItem.bailun_sku,
transfer_type_val = transfer_type,
//warehouse_code = skuItem.warehouse_code,
logistics_code = dc_base_head_transport_config_data.logistics_code,
country = base_wa
});
if (lmsAvg != null && lmsAvg.Count >= 3)
{
dataWarehouse.transfer_bale_delivery = 1;
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)
{
dataWarehouse.transfer_bale_delivery = 1;
dataWarehouse.transfer_delivery = lmsAvg.Select(s => s.sign_days).Average();
}
if (lmsAvg.Count() >= 3) if (lmsAvg.Count() >= 3)
{ {
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)); 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.put_days != null).Count() >= 1) else if (lmsAvg.Where(s => s.put_days != null).Count() >= 1)
{ {
dataWarehouse.abroad_inbound_delivery = lmsAvg.Where(s => s.put_days != null).Select(s => s.put_days).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 { 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 = "调拨单-平均天数计算" bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
}); order_type = "调拨单-平均天数计算"
if(lmsAvg!=null && lmsAvg.Count >= 1) });
{ if (lmsAvg != null && lmsAvg.Count >= 1)
foreach (var itemLms in lmsAvg)
{ {
conn.Insert(new dc_base_order_data_source foreach (var itemLms in lmsAvg)
{ {
bailun_sku = skuItem.bailun_sku, conn.Insert(new dc_base_order_data_source
warehouse_code = skuItem.warehouse_code, {
logistics_code = itemLms.logistics_code, bailun_sku = skuItem.bailun_sku,
bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}", warehouse_code = skuItem.warehouse_code,
bale_days = 1, logistics_code = itemLms.logistics_code,
logistics_name = itemLms.logistics_name, bailun_sku_warehouse_code = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
order_no = itemLms.order_no, bale_days = 1,
order_type = "调拨单-平均天数计算", logistics_name = itemLms.logistics_name,
put_days = itemLms.put_days, order_no = itemLms.order_no,
sign_days = itemLms.sign_days, order_type = "调拨单-平均天数计算",
transport_type = itemLms.transport_type put_days = itemLms.put_days,
}); sign_days = itemLms.sign_days,
transport_type = itemLms.transport_type
});
}
} }
}
AveragePurchase.Save(dataWarehouse, conn); AveragePurchase.Save(dataWarehouse, conn);
}
catch (Exception ex)
{
conn.Insert(new dc_task_error_log
{
date = DateTime.Now,
task_name = "CalculationTransfer",
message = $"{skuItem.bailun_sku}{skuItem.warehouse_code}",
stack_trace = ex.Message + ": "+ ex.StackTrace
});
}
} }
......
...@@ -31,6 +31,11 @@ namespace AutoTurnOver.Services ...@@ -31,6 +31,11 @@ namespace AutoTurnOver.Services
m.categoryModels = ApiServices.GetNewClientNodesByIds(m.categoryIds.Split(',').Select(s=>int.Parse(s)).ToList()); m.categoryModels = ApiServices.GetNewClientNodesByIds(m.categoryIds.Split(',').Select(s=>int.Parse(s)).ToList());
} }
return DB.dc_auto_turnover.List(m,offset, limit, ref total,order,sort, isSum); return DB.dc_auto_turnover.List(m,offset, limit, ref total,order,sort, isSum);
}
public List<dc_base_order_data_source> GetOrderDataSource(dc_base_order_data_source_search_dto m,int offset, int limit, ref int total)
{
return DB.dc_auto_turnover.GetOrderDataSource(m,offset, limit, ref total);
} }
public IEnumerable<string> GetLabelList() { public IEnumerable<string> GetLabelList() {
......
...@@ -56,6 +56,40 @@ namespace AutoTurnOver.Controllers ...@@ -56,6 +56,40 @@ namespace AutoTurnOver.Controllers
} }
} }
/// <summary>
/// 查看平均数的数据来源
/// </summary>
/// <param name="m"></param>
/// <param name="offset"></param>
/// <param name="limit"></param>
/// <returns></returns>
public JsonResult GetOrderDataSource([FromQuery] dc_base_order_data_source_search_dto m, [FromQuery] int offset, [FromQuery] int limit)
{
try
{
var total = 0;
var service = new Services.SkuAutoTurnServices();
var list = service.GetOrderDataSource(m, offset, limit, ref total);
return new JsonResult(new
{
rows = list,
total = total,
pagecount = (total / limit + (total % limit > 0 ? 1 : 0))
});
}
catch (Exception ex)
{
return new JsonResult(new
{
message = ex.Message,
stack_trace = ex.StackTrace
});
}
}
public JsonResult GetLabelList() public JsonResult GetLabelList()
{ {
......
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