Commit c51fce03 by 泽锋 李

周转表导出新增配置交期

parent 427d109f
......@@ -76,6 +76,7 @@ t13.quantity_transfer_order as 'quantity_transfer_order',
t13.quantity_transfer_temp_schedule as 'quantity_transfer_temp_schedule',
t13.quantity_transfer_temporary_storage as 'quantity_transfer_temporary_storage',
(case when t3.hq_type='国内仓' then t4.supplier_delivery else t4.transfer_delivery end ) as 'supplier_delivery_config',
t13.quantity_land_purchase as 'quantity_land_purchase',
t13.quantity_ocean_purchase as 'quantity_ocean_purchase',
......@@ -89,7 +90,10 @@ dat.dc_auto_sales_forecast_title,
-- t14.title as 'dc_auto_sales_forecast_title',
t4.`status` as 'sku_status'-- ,
-- t11.label as 'sku_label'
-- ,t10.`name` as 'group_name'
-- ,t10.`name` as 'group_name',
from dc_auto_turnover as dat
left join dc_auto_sales as t2 on t2.bailun_sku=dat.bailun_sku and dat.warehouse_code = t2.warehouse_code
left join dc_base_warehouse as t3 on dat.warehouse_code = t3.warehouse_code
......
using AutoTurnOver.Models;
using Dapper;
using System;
using System.Collections.Generic;
using System.Linq;
using AutoTurnOver.Models.ApiDto;
using MySql.Data.MySqlClient;
using System.Text;
using AutoTurnOver.Utility;
using AutoTurnOver.Models.Report;
namespace AutoTurnOver.DB
{
/// <summary>
///
/// </summary>
public class dc_base_full_link_wait_order_dao : connectionHelper
{
public static void ResetDatas()
{
List<dc_base_full_link_wait_order_temp> datas = new List<dc_base_full_link_wait_order_temp>();
datas.AddRange(GetPurchaseOrder());
datas.AddRange(GetTransferOrder());
var tempOrders = GetTransferTempOrder();
datas.AddRange(tempOrders);
datas.AddRange(GetTransferPlanOrder(tempOrders));
var conn = MyMySqlConnection._connection;
conn.Execute(" TRUNCATE table dc_base_full_link_wait_order_temp; ");
foreach (var item in datas)
{
item.update_date = DateTime.Now;
conn.Insert(item);
}
_connection.Execute(@"
alter table dc_base_full_link_wait_order rename dc_base_full_link_wait_orderTemp;
alter table dc_base_full_link_wait_order_temp rename dc_base_full_link_wait_order;
alter table dc_base_full_link_wait_orderTemp rename dc_base_full_link_wait_order_temp;
truncate table dc_base_full_link_wait_order_temp;
");
}
/// <summary>
/// 查询采购在途订单
/// </summary>
/// <returns></returns>
public static List<dc_base_full_link_wait_order_temp> GetPurchaseOrder(string bailun_sku = null, List<string> purchase_ids = null)
{
List<dc_base_full_link_wait_order_temp> datas = new List<dc_base_full_link_wait_order_temp>();
DynamicParameters parameters = new DynamicParameters();
var sql = @"select
t1.bailun_sku as 'bailun_sku',
t1.warehouse_code as 'warehouse_code',
CONCAT(t1.bailun_sku,t1.warehouse_code) as 'bailun_sku_warehouse_code',
t1.purchase_id as 'purchase_no',
t1.create_time as 'purchase_create_time',
t1.estimated_arrival_time as 'purchase_arrivaldate',
t3.last_signtime as 'purchase_sign_time',
max(t2.create_time) as 'purchase_put_time',
t1.`count` as 'purchase_quantity',
t3.quantity_arrival as 'purchase_quantity_arrival',
ifnull( sum(t2.`count`),0) as 'purchase_quantity_inbound',
t1.`count` - ifnull( sum(t2.`count`),0) as 'purchase_quantity_not_inbound',
(case when t1.transport_type=1 then '铁路运输' when t1.transport_type=2 then '海运' when t1.transport_type=3 then '空运' else '' end ) as 'transfer_transporttype',
t1.buy_status as 'purchase_status'
from dc_base_purchase as t1
left join dc_base_purchase_inbound t2 on t1.bailun_sku = t2.bailun_sku and t1.parent_id = t2.parent_id
left join dc_base_purchase_details t3 on t1.bailun_sku = t3.bailun_sku and t1.purchase_id = t3.purchase_id
where 1=1
";
if (string.IsNullOrWhiteSpace(bailun_sku))
{
sql += @" and t1.buy_status in (0, 1, 2, 3, 9)
and t1.has_delete = 0
and t1.`count` > 0
and (t1.`count` > t2.`count` or t2.`count` is null) ";
}
else
{
sql += " and t1.bailun_sku=@bailun_sku and t1.purchase_id in @purchase_ids ";
parameters.Add("bailun_sku", bailun_sku);
parameters.Add("purchase_ids", purchase_ids);
}
sql += " group by t1.id ";
datas = _connection.Query<dc_base_full_link_wait_order_temp>(sql, parameters).ToList();
if (string.IsNullOrWhiteSpace(bailun_sku))
{
datas= datas.Where(s => s.purchase_quantity_not_inbound > 0).ToList();
}
return datas;
}
/// <summary>
/// 查询调拨在途订单
/// </summary>
/// <returns></returns>
public static List<dc_base_full_link_wait_order_temp> GetTransferOrder()
{
List<dc_base_full_link_wait_order_temp> datas = new List<dc_base_full_link_wait_order_temp>();
var sql = @"select
t2.sku as 'bailun_sku',
t1.targetwareno as 'warehouse_code',
CONCAT(t2.sku,t1.targetwareno) as 'bailun_sku_warehouse_code',
t1.creationtime as 'transfer_create_time',
(t2.deliverycount - t2.storagecount) as 'transfer_quantity_not_inbound',
t1.transporttype as 'transfer_transporttype',
t1.logisticsname as 'transfer_logistics_name',
t1.logisticscode as 'transfer_logistics_code',
(case when t1.expectarrivaltime>'1991-01-01' then t1.expectarrivaltime else null end) as 'transfer_expectarrivaltime',
t2.deliverycount as 'transfer_quantity',
t2.storagecount as 'transfer_put_quantity',
t1.`code` as 'transfer_no',
t1.purchasecode as 'purchase_no'
from dc_base_transfer_info as t1
left join dc_base_transfer_info_skus as t2 on t1.dataid =t2.dataid
where t1.stateid !=5 and t2.deliverycount > t2.storagecount and t1.isdeleted=0 and t1.isexception=0
";
var temp_datas = _connection.Query<dc_base_full_link_wait_order_temp>(sql).ToList().Where(s => s.transfer_quantity_not_inbound > 0).ToList();
foreach (var item in temp_datas)
{
if (!string.IsNullOrWhiteSpace(item.purchase_no))
{
// 匹配采购单
var purchaseOrders = GetPurchaseOrder(item.bailun_sku, item.purchase_no.Split(' ').ToList());
if(purchaseOrders!=null && purchaseOrders.Count >= 1)
{
foreach (var purchaseItem in purchaseOrders)
{
var newItem = item.ToJson().ToObj<dc_base_full_link_wait_order_temp>();
newItem.purchase_arrivaldate = purchaseItem.purchase_arrivaldate;
newItem.purchase_create_time = purchaseItem.purchase_create_time;
newItem.purchase_no = purchaseItem.purchase_no;
newItem.purchase_put_time = purchaseItem.purchase_put_time;
newItem.purchase_quantity = purchaseItem.purchase_quantity;
newItem.purchase_quantity_arrival = purchaseItem.purchase_quantity_arrival;
newItem.purchase_quantity_inbound = purchaseItem.purchase_quantity_inbound;
newItem.purchase_quantity_not_inbound = purchaseItem.purchase_quantity_not_inbound;
newItem.purchase_sign_time = purchaseItem.purchase_sign_time;
newItem.purchase_status = purchaseItem.purchase_status;
datas.Add(newItem);
}
}
else
{
datas.Add(item);
}
}
else
{
datas.Add(item);
}
}
return datas;
}
/// <summary>
/// 查询调拨 临时暂存数据
/// </summary>
/// <returns></returns>
public static List<dc_base_full_link_wait_order_temp> GetTransferPlanOrder(List<dc_base_full_link_wait_order_temp> tempOrderDatas)
{
List<dc_base_full_link_wait_order_temp> datas = new List<dc_base_full_link_wait_order_temp>();
var sql = @"select
t1.purchase_id as 'purchase_no',
t1.bailun_sku as 'bailun_sku',
t1.warehouse_code as 'warehouse_code',
CONCAT(t1.bailun_sku,t1.warehouse_code) as 'bailun_sku_warehouse_code',
t1.count as 'transfer_plan_quantity',
t1.transfer_plan_order_id as 'transfer_plan_no'
from dc_base_transfer_plan as t1
left join dc_base_warehouse as t2 on t1.warehouse_code = t2.warehouse_code
where t1.`status`=1 and t2.hq_type not IN ('国内仓') and t1.deleted=0
";
var temp_datas = _connection.Query<dc_base_full_link_wait_order_temp>(sql).ToList().Where(s => s.transfer_quantity_not_inbound > 0).ToList();
// 剔除临时数据跟暂存数据
temp_datas = temp_datas.Where(s=> !tempOrderDatas.Any(v=>v.bailun_sku_warehouse_code==s.bailun_sku_warehouse_code
&& (s.transfer_plan_no==v.transfer_temp_purchase_no|| s.transfer_plan_no == v.transfer_temp_schedule_no))).ToList();
foreach (var item in temp_datas)
{
if (!string.IsNullOrWhiteSpace(item.purchase_no))
{
// 匹配采购单
var purchaseOrders = GetPurchaseOrder(item.bailun_sku, item.purchase_no.Split(' ').ToList());
if (purchaseOrders != null && purchaseOrders.Count >= 1)
{
foreach (var purchaseItem in purchaseOrders)
{
var newItem = item.ToJson().ToObj<dc_base_full_link_wait_order_temp>();
newItem.purchase_arrivaldate = purchaseItem.purchase_arrivaldate;
newItem.purchase_create_time = purchaseItem.purchase_create_time;
newItem.purchase_no = purchaseItem.purchase_no;
newItem.purchase_put_time = purchaseItem.purchase_put_time;
newItem.purchase_quantity = purchaseItem.purchase_quantity;
newItem.purchase_quantity_arrival = purchaseItem.purchase_quantity_arrival;
newItem.purchase_quantity_inbound = purchaseItem.purchase_quantity_inbound;
newItem.purchase_quantity_not_inbound = purchaseItem.purchase_quantity_not_inbound;
newItem.purchase_sign_time = purchaseItem.purchase_sign_time;
newItem.purchase_status = purchaseItem.purchase_status;
datas.Add(newItem);
}
}
else
{
datas.Add(item);
}
}
else
{
datas.Add(item);
}
}
return datas;
}
/// <summary>
/// 查询调拨 临时暂存数据
/// </summary>
/// <returns></returns>
public static List<dc_base_full_link_wait_order_temp> GetTransferTempOrder()
{
List<dc_base_full_link_wait_order_temp> datas = new List<dc_base_full_link_wait_order_temp>();
var sql = @"select
t1.purchase_code as 'purchase_no',
t1.sku as 'bailun_sku',
t1.target_ware_no as 'warehouse_code' ,
CONCAT(t1.sku,t1.target_ware_no) as 'bailun_sku_warehouse_code',
(case when t1.create_state=0 then t1.product_num else 0 end) as 'transfer_temp_purchase_quantity',
(case when t1.create_state=1 then t1.temp_delivery_count else 0 end) as 'transfer_temp_schedule_quantity',
(case when t1.create_state=0 then t1.code else '' end) as 'transfer_temp_purchase_no',
(case when t1.create_state=1 then t1.code else '' end) as 'transfer_temp_schedule_no'
from dc_base_trans_temp_schedule as t1
left join dc_base_warehouse as t2 on t1.target_ware_no = t2.warehouse_code
where t1.is_delete=0 and t1.is_temp_data=1 and t1.is_exception=0 and t2.hq_type in ('fba仓') and t1.create_state in (0,1)
";
var temp_datas = _connection.Query<dc_base_full_link_wait_order_temp>(sql).ToList().Where(s => s.transfer_quantity_not_inbound > 0).ToList();
foreach (var item in temp_datas)
{
if (!string.IsNullOrWhiteSpace(item.purchase_no))
{
// 匹配采购单
var purchaseOrders = GetPurchaseOrder(item.bailun_sku, item.purchase_no.Split(' ').ToList());
if (purchaseOrders != null && purchaseOrders.Count >= 1)
{
foreach (var purchaseItem in purchaseOrders)
{
var newItem = item.ToJson().ToObj<dc_base_full_link_wait_order_temp>();
newItem.purchase_arrivaldate = purchaseItem.purchase_arrivaldate;
newItem.purchase_create_time = purchaseItem.purchase_create_time;
newItem.purchase_no = purchaseItem.purchase_no;
newItem.purchase_put_time = purchaseItem.purchase_put_time;
newItem.purchase_quantity = purchaseItem.purchase_quantity;
newItem.purchase_quantity_arrival = purchaseItem.purchase_quantity_arrival;
newItem.purchase_quantity_inbound = purchaseItem.purchase_quantity_inbound;
newItem.purchase_quantity_not_inbound = purchaseItem.purchase_quantity_not_inbound;
newItem.purchase_sign_time = purchaseItem.purchase_sign_time;
newItem.purchase_status = purchaseItem.purchase_status;
datas.Add(newItem);
}
}
else
{
datas.Add(item);
}
}
else
{
datas.Add(item);
}
}
return datas;
}
}
}
......@@ -998,6 +998,7 @@ namespace AutoTurnOver.Models
/// 供应商交期
/// </summary>
public int supplier_delivery { get; set; }
public int? supplier_delivery_config { get; set; }
/// <summary>
/// 调拨交运时长
......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace AutoTurnOver.Models
{
/// <summary>
/// 全链路在途订单
/// </summary>
public class dc_base_full_link_wait_order
{
/// <summary>
///
/// </summary>
[Description(@"")]
public int id { get; set; }
/// <summary>
///
/// </summary>
[Description(@"")]
public string bailun_sku { get; set; }
/// <summary>
///
/// </summary>
[Description(@"")]
public string warehouse_code { get; set; }
/// <summary>
///
/// </summary>
[Description(@"")]
public string bailun_sku_warehouse_code { get; set; }
/// <summary>
/// 采购单号
/// </summary>
[Description(@"采购单号")]
public string purchase_no { get; set; }
/// <summary>
/// 调拨单号
/// </summary>
[Description(@"调拨单号")]
public string transfer_no { get; set; }
/// <summary>
/// 采购单创建时间
/// </summary>
[Description(@"采购单创建时间")]
public DateTime? purchase_create_time { get; set; }
/// <summary>
/// 采购单预计到货时间
/// </summary>
[Description(@"采购单预计到货时间")]
public DateTime? purchase_arrivaldate { get; set; }
/// <summary>
/// 采购单签收时间
/// </summary>
[Description(@"采购单签收时间")]
public DateTime? purchase_sign_time { get; set; }
/// <summary>
/// 采购单入库时间
/// </summary>
[Description(@"采购单入库时间")]
public DateTime? purchase_put_time { get; set; }
/// <summary>
/// 采购数量
/// </summary>
[Description(@"采购数量")]
public int? purchase_quantity { get; set; }
/// <summary>
/// 已采购到货数量
/// </summary>
[Description(@"已采购到货数量")]
public int? purchase_quantity_arrival { get; set; }
/// <summary>
/// 已采购入库数量
/// </summary>
[Description(@"已采购入库数量")]
public int? purchase_quantity_inbound { get; set; }
/// <summary>
/// 采购在途数量
/// </summary>
[Description(@"采购在途数量")]
public int? purchase_quantity_not_inbound { get; set; }
/// <summary>
/// 采购状态
/// </summary>
[Description(@"采购状态")]
public int? purchase_status { get; set; }
/// <summary>
/// 调拨单创建时间
/// </summary>
[Description(@"调拨单创建时间")]
public DateTime? transfer_create_time { get; set; }
/// <summary>
/// 调拨在途数量
/// </summary>
[Description(@"调拨在途数量")]
public int? transfer_quantity_not_inbound { get; set; }
/// <summary>
/// 调拨方式
/// </summary>
[Description(@"调拨方式")]
public string transfer_transporttype { get; set; }
/// <summary>
/// 物流渠道
/// </summary>
[Description(@"物流渠道")]
public string transfer_logistics_name { get; set; }
/// <summary>
/// 渠道编码
/// </summary>
[Description(@"渠道编码")]
public string transfer_logistics_code { get; set; }
/// <summary>
/// 目标到货时间
/// </summary>
[Description(@"目标到货时间")]
public DateTime? transfer_expectarrivaltime { get; set; }
/// <summary>
/// 调拨数量
/// </summary>
[Description(@"调拨数量")]
public int? transfer_quantity { get; set; }
/// <summary>
/// 调拨入库数量
/// </summary>
[Description(@"调拨入库数量")]
public int? transfer_put_quantity { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
public DateTime update_date { get; set; }
public string transfer_plan_no { get; set; }
public string transfer_temp_schedule_no { get; set; }
public string transfer_temp_purchase_no { get; set; }
}
public class dc_base_full_link_wait_order_temp: dc_base_full_link_wait_order
{
}
}
......@@ -315,7 +315,8 @@ namespace AutoTurnOver.Services
,"采购陆运在途数量","采购海运在途数量","采购空运在途数量","采购铁路在途数量"
,"调拨陆运在途数量","调拨海运在途数量","调拨空运在途数量","调拨铁路在途数量","首次入库时间","供应链累计销量","销量预测规则","默认头程运输方式","默认头程渠道","计算时间",
"日均出单次数","首次出单日期","首次出单订单号",
"备货数量","产品类型","头程平均值取值来源","Walmart最近7天日均销量","Walmart最近14天日均销量","Walmart最近30天日均销量"
"备货数量","产品类型","头程平均值取值来源","Walmart最近7天日均销量","Walmart最近14天日均销量","Walmart最近30天日均销量",
"平均交期","配置交期"
};
foreach (var item in cols)
{
......@@ -325,6 +326,9 @@ namespace AutoTurnOver.Services
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["平均交期"] = itemData.supplier_delivery;
row["配置交期"] = itemData.supplier_delivery_config;
row["Walmart最近7天日均销量"] = itemData.history_sevenday_sales_walmart;
row["Walmart最近14天日均销量"] = itemData.history_fourteenday_sales_walmart;
row["Walmart最近30天日均销量"] = itemData.history_thirtyday_sales_walmart;
......
......@@ -33,6 +33,7 @@ namespace ResetOutofstock
//dc_base_mother_sku_dao.SynchroCalculationTurnOver();
//dc_base_mother_sku_dao.ResetTurnOver("M-test123", "MMDUSFBA");
//dc_base_transfer_extend_dao.SynchroLmsTransferOrder();
dc_base_full_link_wait_order_dao.ResetDatas();
}
catch (Exception ex)
{
......
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