Commit cc5cee54 by 泽锋 李

采购建议fix

parent 401bc82d
...@@ -638,82 +638,86 @@ and t1.quantity_init_advise>=0 and ( t3.buyer_name in ('张莹霞1') and t1.ware ...@@ -638,82 +638,86 @@ and t1.quantity_init_advise>=0 and ( t3.buyer_name in ('张莹霞1') and t1.ware
//只计算有监控库容的母sku //只计算有监控库容的母sku
mother_datas = mother_datas.Where(s=> mother_storage_capacity_configs.Any(v=> s.bailun_sku_warehouse_code==s.bailun_sku_warehouse_code)).ToList(); mother_datas = mother_datas.Where(s=> mother_storage_capacity_configs.Any(v=> s.bailun_sku_warehouse_code==s.bailun_sku_warehouse_code)).ToList();
// 查询母sku锁包含的子sku全部清除 if(mother_datas!=null && mother_datas.Count >= 1)
var maps = _connection.Query<dc_base_mother_sku_map>(" select * from dc_base_mother_sku_map where mother_sku_warehouse_code in @mother_sku_warehouse_codes ", new
{ {
mother_sku_warehouse_codes = mother_datas.Select(s => s.bailun_sku_warehouse_code).ToList() // 查询母sku锁包含的子sku全部清除
}); var maps = _connection.Query<dc_base_mother_sku_map>(" select * from dc_base_mother_sku_map where mother_sku_warehouse_code in @mother_sku_warehouse_codes ", new
{
mother_sku_warehouse_codes = mother_datas.Select(s => s.bailun_sku_warehouse_code).ToList()
});
if (maps != null && maps.Count() >= 1) if (maps != null && maps.Count() >= 1)
{
foreach (var item in mother_datas)
{ {
var itemMaps = maps.Where(s => s.mother_sku_warehouse_code == item.bailun_sku_warehouse_code).ToList(); foreach (var item in mother_datas)
if (itemMaps != null && itemMaps.Count >= 1)
{ {
// 查询这些子sku的库容 var itemMaps = maps.Where(s => s.mother_sku_warehouse_code == item.bailun_sku_warehouse_code).ToList();
var skuStorageCapacityList = _connection.Query<dc_base_storage_capacity>(" select * from dc_base_storage_capacity where bailun_sku_warehouse_code in @bailun_sku_warehouse_codes ", new if (itemMaps != null && itemMaps.Count >= 1)
{ {
bailun_sku_warehouse_codes = itemMaps.Select(s => s.bailun_sku_warehouse_code).ToList() // 查询这些子sku的库容
}).Where(s => s.stock > 0).ToList(); var skuStorageCapacityList = _connection.Query<dc_base_storage_capacity>(" select * from dc_base_storage_capacity where bailun_sku_warehouse_code in @bailun_sku_warehouse_codes ", new
var new_datas = new List<dc_auto_purchase_advise_detailed>();
var sum_stock = item.quantity_final_advise;
//根据每个有库容的sku分摊需求
foreach (var itemMap in itemMaps)
{
if (sum_stock <= 0) break;
var skuTransit = _connection.QueryFirstOrDefault<dc_mid_transit>(" select * from dc_mid_transit where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{ {
bailun_sku = itemMap.bailun_sku, bailun_sku_warehouse_codes = itemMaps.Select(s => s.bailun_sku_warehouse_code).ToList()
warehouse_code = itemMap.warehouse_code }).Where(s => s.stock > 0).ToList();
}) ?? new dc_mid_transit();
var itemStorageCapacity = (skuStorageCapacityList.FirstOrDefault(s => s.bailun_sku_warehouse_code == itemMap.bailun_sku_warehouse_code) ?? new dc_base_storage_capacity() { });
// 扣除采购在途,调拨采购临时,调拨暂存,调拨计划 var new_datas = new List<dc_auto_purchase_advise_detailed>();
itemStorageCapacity.stock = (itemStorageCapacity.stock - skuTransit.quantity_purchase - skuTransit.quantity_transfer_temporary_storage - skuTransit.quantity_transfer_temp_schedule - skuTransit.quantity_transfer_plan); var sum_stock = item.quantity_final_advise;
//根据每个有库容的sku分摊需求
var use_quantity = 0; foreach (var itemMap in itemMaps)
if (itemStorageCapacity.stock >= sum_stock)
{
use_quantity = sum_stock;
sum_stock = 0;
}
else
{ {
use_quantity = (int)Math.Ceiling(itemStorageCapacity.stock); if (sum_stock <= 0) break;
sum_stock -= use_quantity;
var skuTransit = _connection.QueryFirstOrDefault<dc_mid_transit>(" select * from dc_mid_transit where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code ", new
{
bailun_sku = itemMap.bailun_sku,
warehouse_code = itemMap.warehouse_code
}) ?? new dc_mid_transit();
var itemStorageCapacity = (skuStorageCapacityList.FirstOrDefault(s => s.bailun_sku_warehouse_code == itemMap.bailun_sku_warehouse_code) ?? new dc_base_storage_capacity() { });
// 扣除采购在途,调拨采购临时,调拨暂存,调拨计划
itemStorageCapacity.stock = (itemStorageCapacity.stock - skuTransit.quantity_purchase - skuTransit.quantity_transfer_temporary_storage - skuTransit.quantity_transfer_temp_schedule - skuTransit.quantity_transfer_plan);
var use_quantity = 0;
if (itemStorageCapacity.stock >= sum_stock)
{
use_quantity = sum_stock;
sum_stock = 0;
}
else
{
use_quantity = (int)Math.Ceiling(itemStorageCapacity.stock);
sum_stock -= use_quantity;
}
var new_data = item.ToJson().ToObj<dc_auto_purchase_advise_detailed>();
new_data.quantity_init_advise = item.quantity_final_advise;
new_data.quantity_final_advise = use_quantity;
new_data.mother_sku = item.bailun_sku;
new_data.product_inner_code = "";
new_data.good_sku_codes = "";
new_data.is_mother_map_sku = 1;
new_data.mother_sku_quantity = item.quantity_final_advise;
new_data.mother_sku_warehouse_code = item.bailun_sku_warehouse_code;
new_datas.Add(new_data);
} }
var new_data = item.ToJson().ToObj<dc_auto_purchase_advise_detailed>(); if (new_datas != null && new_datas.Count >= 1)
new_data.quantity_init_advise = item.quantity_final_advise;
new_data.quantity_final_advise = use_quantity;
new_data.mother_sku = item.bailun_sku;
new_data.product_inner_code = "";
new_data.good_sku_codes = "";
new_data.is_mother_map_sku = 1;
new_data.mother_sku_quantity = item.quantity_final_advise;
new_data.mother_sku_warehouse_code = item.bailun_sku_warehouse_code;
new_datas.Add(new_data);
}
if (new_datas != null && new_datas.Count >= 1)
{
// 写入子sku分摊结果
var storage_capacity_lack_quantity = item.quantity_final_advise - new_datas.Sum(s => s.quantity_final_advise);
foreach (var itemNewData in new_datas)
{ {
itemNewData.storage_capacity_lack_quantity = storage_capacity_lack_quantity; // 写入子sku分摊结果
itemNewData.quantity_final_advise = Math.Max(0, itemNewData.quantity_final_advise); var storage_capacity_lack_quantity = item.quantity_final_advise - new_datas.Sum(s => s.quantity_final_advise);
datas.Add(itemNewData); foreach (var itemNewData in new_datas)
{
itemNewData.storage_capacity_lack_quantity = storage_capacity_lack_quantity;
itemNewData.quantity_final_advise = Math.Max(0, itemNewData.quantity_final_advise);
datas.Add(itemNewData);
}
} }
} }
} }
} }
} }
} }
// 再查询需要监控库容的非子母sku // 再查询需要监控库容的非子母sku
......
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