Commit fc9ac37c by 泽锋 李

fix

parent a713b341
...@@ -973,7 +973,7 @@ where t1.`code`=@code limit 1 ...@@ -973,7 +973,7 @@ where t1.`code`=@code limit 1
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new Exception("推送调拨计划异常") throw new Exception("推送调拨计划异常");
} }
} }
} }
......
...@@ -5,6 +5,7 @@ using System.Linq; ...@@ -5,6 +5,7 @@ using System.Linq;
using Dapper; using Dapper;
using AutoTurnOver.Models.Report; using AutoTurnOver.Models.Report;
using AutoTurnOver.Models; using AutoTurnOver.Models;
using Bailun.ServiceFabric;
namespace AutoTurnOver.DB namespace AutoTurnOver.DB
{ {
...@@ -18,44 +19,82 @@ namespace AutoTurnOver.DB ...@@ -18,44 +19,82 @@ namespace AutoTurnOver.DB
/// </summary> /// </summary>
public static void ChangeWarehouseStockUp() public static void ChangeWarehouseStockUp()
{ {
var abroad_warehouse_list = new List<string> {"" }; var abroad_warehouse_list = new List<string> { "AU4PXBL", "US4PXBL", "BL4PXCA" };
// 找出最近30t天有在lm仓出单的sku // 找出最近30t天有在lm仓出单的sku
var bailun_skus = _connection.Query<dc_base_oms_sku>(" select * from dc_base_oms_sku_30 where warehouse_code='GZBLLM' and paid_time>=@btime ", new var bailun_skus = _connection.Query<dc_base_oms_sku>(" select * from dc_base_oms_sku_30 where warehouse_code='GZBLLM' and paid_time>=@btime ", new
{ {
btime = DateTime.Now.AddDays(-30) btime = DateTime.Now.AddDays(-30)
},commandTimeout:0).ToList(); }, commandTimeout: 0).ToList();
if(bailun_skus!=null && bailun_skus.Count >= 1) if (bailun_skus != null && bailun_skus.Count >= 1)
{ {
// 找出这些sku是否有在海外仓有库存或者发货过 // 找出这些sku是否有在海外仓有库存或者发货过
var stockDatas = _connection.Query<dc_base_stock_warehouse_dto>($@" select t1.*,t2.area_name from dc_base_stock as t1 var stockDatas = _connection.Query<dc_base_stock_warehouse_dto>($@" select t1.*,t2.area_name from dc_base_stock as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code
where t2.hq_type in ('海外仓','第三方仓') and t1.warehouse_code in @warehouse_codes and t1.bailun_sku in @bailun_skus and (t1.usable_stock>0 || t1.shipped_stock>0) ", new { where t2.hq_type in ('海外仓','第三方仓') and t1.warehouse_code in @warehouse_codes and t1.bailun_sku in @bailun_skus and (t1.usable_stock>0 || t1.shipped_stock>0) ", new
{
bailun_skus = bailun_skus.Select(s => s.bailun_sku).ToList(), bailun_skus = bailun_skus.Select(s => s.bailun_sku).ToList(),
warehouse_codes = abroad_warehouse_list warehouse_codes = abroad_warehouse_list
}, commandTimeout: 0).ToList(); }, commandTimeout: 0).ToList();
if (stockDatas != null && stockDatas.Count >= 1) if (stockDatas != null && stockDatas.Count >= 1)
{ {
// 把这些国家的单转移到海外仓 // 把这些国家的单转移到海外仓
foreach (var item in stockDatas.GroupBy(s=>s.warehouse_code)) foreach (var item in stockDatas.GroupBy(s => s.warehouse_code))
{ {
var country_code = _connection.QueryFirstOrDefault<string>(" select `code` from dc_base_country where `name`=@name ",new { var country_code = _connection.QueryFirstOrDefault<string>(" select `code` from dc_base_country where `name`=@name ", new
{
name = item.FirstOrDefault().area_name name = item.FirstOrDefault().area_name
}); });
// 把这个国家的单,都转到海外仓 // 把这个国家的单,都转到海外仓
_connection.Execute(" update dc_base_oms_sku_30 set warehouse_code=@warehouse_code where bailun_order_id in @bailun_order_ids and bailun_sku in @bailun_skus and receipt_country=@receipt_country ",new { _connection.Execute(" update dc_base_oms_sku_30 set warehouse_code=@warehouse_code where bailun_order_id in @bailun_order_ids and bailun_sku in @bailun_skus and receipt_country=@receipt_country ", new
{
warehouse_code = item.Key, warehouse_code = item.Key,
bailun_order_ids = bailun_skus.Select(s=>s.bailun_order_id).ToList(), bailun_order_ids = bailun_skus.Select(s => s.bailun_order_id).ToList(),
bailun_skus = item.Select(s=>s.bailun_sku).ToList(), bailun_skus = item.Select(s => s.bailun_sku).ToList(),
receipt_country = country_code receipt_country = country_code
},commandTimeout:0); }, commandTimeout: 0);
// 把这个国家的单,都转到海外仓 // 把这个国家的单,都转到海外仓
_connection.Execute(" update dc_base_oms_sku set warehouse_code=@warehouse_code where bailun_order_id in @bailun_order_ids and bailun_sku in @bailun_skus and receipt_country=@receipt_country ",new { _connection.Execute(" update dc_base_oms_sku set warehouse_code=@warehouse_code where bailun_order_id in @bailun_order_ids and bailun_sku in @bailun_skus and receipt_country=@receipt_country ", new
{
warehouse_code = item.Key, warehouse_code = item.Key,
bailun_order_ids = bailun_skus.Select(s=>s.bailun_order_id).ToList(), bailun_order_ids = bailun_skus.Select(s => s.bailun_order_id).ToList(),
bailun_skus = item.Select(s=>s.bailun_sku).ToList(), bailun_skus = item.Select(s => s.bailun_sku).ToList(),
receipt_country = country_code receipt_country = country_code
}, commandTimeout: 0); }, commandTimeout: 0);
// 查询迁移成功的单
var successDatas = _connection.Query<dc_base_oms_sku>(" select * from dc_base_oms_sku_30 where bailun_order_id in @bailun_order_ids and bailun_sku in @bailun_skus and warehouse_code=@warehouse_code ", new
{
warehouse_code = item.Key,
bailun_order_ids = bailun_skus.Select(s => s.bailun_order_id).ToList(),
bailun_skus = item.Select(s => s.bailun_sku).ToList(),
}).ToList();
if (successDatas != null && successDatas.Count >= 1)
{
foreach (var itemOrder in successDatas)
{
dc_base_oms_transfer_warehouse_log log_data = new dc_base_oms_transfer_warehouse_log
{
bailun_order_id = itemOrder.bailun_order_id,
bailun_sku = itemOrder.bailun_sku,
create_time = DateTime.Now,
from_warehouse_code = "GZBLLM",
to_warehouse_code = item.Key
};
log_data.id = _connection.QueryFirstOrDefault<int?>(" select id from dc_base_oms_transfer_warehouse_log where bailun_order_id=@bailun_order_id and bailun_sku=@bailun_sku and to_warehouse_code=@to_warehouse_code and from_warehouse_code=@from_warehouse_code ", new
{
bailun_order_id = log_data.bailun_order_id,
bailun_sku = log_data.bailun_sku,
to_warehouse_code = log_data.to_warehouse_code,
from_warehouse_code = log_data.from_warehouse_code,
}) ?? 0;
if (log_data.id <= 0)
{
_connection.Insert(log_data);
}
}
}
} }
} }
} }
...@@ -63,6 +102,96 @@ where t2.hq_type in ('海外仓','第三方仓') and t1.warehouse_code in @wareh ...@@ -63,6 +102,96 @@ where t2.hq_type in ('海外仓','第三方仓') and t1.warehouse_code in @wareh
} }
/// <summary>
/// 生成调拨计划
/// </summary>
public static List<dc_auto_purchase_advise_detailed> GenerateTransferPlan(List<dc_auto_purchase_advise_detailed> original_datas)
{
// 清理未执行的调拨推送
_connection.Execute(" delete from dc_sys_allot_plan where status='待推送' ");
var skuStocks = new List<dc_base_stock_auto>();
foreach (var item in original_datas)
{
// 查询转仓记录
var dc_base_oms_transfer_warehouse_log_item = _connection.Query<dc_base_oms_transfer_warehouse_log>(" select * from dc_base_oms_transfer_warehouse_log where from_warehouse_code='GZBLLM' and bailun_sku=@bailun_sku and to_warehouse_code=@to_warehouse_code ", new
{
bailun_sku = item.bailun_sku,
to_warehouse_code = item.warehouse_code
});
// 有过转仓记录
if (dc_base_oms_transfer_warehouse_log_item != null)
{
// 查询国内仓的库存和在途
if (!skuStocks.Any(s => s.bailun_sku == item.bailun_sku))
{
var itemSkuStock = _connection.QueryFirstOrDefault<dc_base_stock>(" select * from dc_base_stock where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
bailun_sku = item.bailun_sku,
warehouse_code = "GZBLLM"
});
if (itemSkuStock != null)
{
// 查询这个sku在国内仓是否冗余
// 查询国内仓周转表
var auto_data = _connection.QueryFirstOrDefault<Models.dc_auto_turnover>(" select * from dc_auto_turnover where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
warehouse_code = "GZBLLM",
bailun_sku = item.bailun_sku
});
var autoStock = itemSkuStock.ToJson().ToObject<dc_base_stock_auto>();
autoStock.redundant_quantity = 0 - ((int)auto_data.quantity_init_advise);
if (autoStock.redundant_quantity <= 0)
{
continue;
}
skuStocks.Add(autoStock);
}
}
// 有库存或者在途数据
if (skuStocks.Any(s => s.bailun_sku == item.bailun_sku))
{
var skuStockItem = skuStocks.FirstOrDefault(s => s.bailun_sku == item.bailun_sku);
if (skuStockItem.redundant_quantity > 0)
{
var transferStock = 0;
if (skuStockItem.redundant_quantity >= item.quantity_final_advise)
{
transferStock = item.quantity_final_advise;
skuStockItem.redundant_quantity -= transferStock;
item.quantity_final_advise = 0;
item.remarks = "由于lm的国内仓有冗余库存,等国内仓调就行了";
}
else
{
transferStock = skuStockItem.redundant_quantity;
item.quantity_final_advise -= transferStock;
skuStockItem.redundant_quantity = 0;
item.remarks = "由于lm的国内仓有冗余库存,从国内仓调一部分";
}
_connection.Insert(new dc_sys_allot_plan
{
bailun_sku = item.bailun_sku,
warehouse_code_from = "GZBLLM",
create_time = DateTime.Now,
push_time = null,
question = transferStock,
status = "待推送",
trans_sys_no = null,
warehouse_code_to = item.warehouse_code
});
}
}
}
}
return original_datas;
}
} }
} }
...@@ -548,7 +548,10 @@ and ( t5.`status`=0 or t5.`status` is null ) and t7.sum_quantity_init_advise>0 ...@@ -548,7 +548,10 @@ and ( t5.`status`=0 or t5.`status` is null ) and t7.sum_quantity_init_advise>0
var datas4 = AreaRedundancyClear(datas3); var datas4 = AreaRedundancyClear(datas3);
// 如果广州01,最近7天订单数量小于3 则只补缺货 // 如果广州01,最近7天订单数量小于3 则只补缺货
var datas2 = ClearOrders7(datas4); var datas21 = ClearOrders7(datas4);
//独立站的海外仓要先考虑国内仓是否有冗余
var datas2 = lm_dao.GenerateTransferPlan(datas21);
if (datas2 != null && datas2.Count >= 1) if (datas2 != null && datas2.Count >= 1)
{ {
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_base_oms_transfer_warehouse_log
{
public int id { get; set; }
public string from_warehouse_code { get; set; }
public string to_warehouse_code { get; set; }
public string bailun_order_id { get; set; }
public DateTime create_time { get; set; }
public string bailun_sku { get; set; }
}
}
...@@ -8,4 +8,9 @@ namespace AutoTurnOver.Models ...@@ -8,4 +8,9 @@ namespace AutoTurnOver.Models
{ {
public string area_name { get; set; } public string area_name { get; set; }
} }
public class dc_base_stock_auto: dc_base_stock
{
public int redundant_quantity { get; set; }
}
} }
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models
{
public class dc_sys_allot_plan
{
public int id { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code_from { get; set; }
public string warehouse_code_to { get; set; }
public int question { get; set; }
public DateTime create_time { get; set; }
/// <summary>
/// 待推送、已推送、推送失败
/// </summary>
public string status { get; set; }
public string trans_sys_no { get; set; }
public DateTime? push_time { get; set; }
}
}
...@@ -474,6 +474,28 @@ namespace ResetOutofstock ...@@ -474,6 +474,28 @@ namespace ResetOutofstock
} }
}); });
Task.Factory.StartNew(() =>
{
while (true)
{
try
{
Console.WriteLine($"开始 lm 产品换仓备货,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
lm_dao.ChangeWarehouseStockUp();
Console.WriteLine($"结束 lm 产品换仓备货,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
Thread.Sleep(60 * 1000);
}
catch (Exception ex)
{
Console.WriteLine(" lm 产品换仓备货:" + ex.Message);
Console.WriteLine(" lm 产品换仓备货:" + ex.StackTrace);
}
}
});
......
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