Commit 0fd53f7a by lizefeng

aims 周转表,调拨在途点击查看明细

parent 5cab1cee
using AutoTurnOver.Models; using AutoTurnOver.Models;
using Dapper; using Dapper;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
namespace AutoTurnOver.DB namespace AutoTurnOver.DB
{ {
public class daily : connectionHelper public class daily : connectionHelper
{ {
/// <summary> /// <summary>
/// 查询采购在途数据 /// 查询采购在途数据
/// </summary> /// </summary>
/// <param name="sku">sku</param> /// <param name="sku">sku</param>
/// <param name="warehouse_code">仓库编码</param> /// <param name="warehouse_code">仓库编码</param>
/// <returns></returns> /// <returns></returns>
public static IEnumerable<dc_purchase_daily_dto> List(string sku, string warehouse_code) public static IEnumerable<dc_purchase_daily_dto> List(string sku, string warehouse_code)
{ {
var sql = @" var sql = @"
select t1.create_time, SELECT
t1.bailun_sku, tb1.bailun_sku AS bailun_sku,
t1.sku_name, tb1.warehouse_code AS warehouse_code,
t1.purchase_id, tb1.purchase_id AS purchase_id,
t1.warehouse_code, tb1.estimated_arrival_time AS estimated_arrival_time,
t1.warehouse_name, -- tb1.has_transfer AS has_transfer,
t1.count as 'purchaseQuantity', sum( ( tb1.count - IFNULL( tb2.count, 0 ) ) ) AS dailyQuantity ,
t2.inboundQuantity (case when t_w.hq_type='fba仓' then t_w.bailun_account else t_w.warehouse_name end) as warehouse_name
from dc_base_purchase as t1 FROM
left join ( (
select t2_1.purchase_id,t2_1.warehouse_code,t2_1.bailun_sku,sum(t2_1.count) as 'inboundQuantity' from dc_base_purchase_inbound as t2_1 SELECT
where t2_1.warehouse_code=@warehouse_code and t2_1.bailun_sku=@bailun_sku bailun_sku,
GROUP BY t2_1.warehouse_code,t2_1.bailun_sku,t2_1.purchase_id warehouse_code,
) as t2 on t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code and t1.purchase_id = t2.purchase_id parent_id,
where t1.count>t2.inboundQuantity and t1.warehouse_code=@warehouse_code and t1.bailun_sku=@bailun_sku purchase_id,
"; estimated_arrival_time,
DynamicParameters parameters = new DynamicParameters(); has_transfer,
parameters.Add("bailun_sku", sku); sum( count ) AS count
parameters.Add("warehouse_code", warehouse_code); FROM
return _connection.Query<dc_purchase_daily_dto>(sql, parameters); dc_base_purchase
} WHERE
buy_status IN ( 0, 1, 2, 3 )
AND has_delete = 0
/// <summary> AND bailun_sku = @bailun_sku
/// 查询时实库存数据 AND warehouse_code = @warehouse_code
/// </summary> GROUP BY
/// <param name="sku">sku</param> bailun_sku,
/// <param name="warehouse_code">仓库编码</param> parent_id
/// <returns></returns> ) tb1
public static IEnumerable<dc_base_stock_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea) LEFT JOIN ( SELECT bailun_sku, warehouse_code, parent_id, sum( count ) AS count FROM dc_base_purchase_inbound GROUP BY bailun_sku, parent_id ) tb2 ON tb1.bailun_sku = tb2.bailun_sku
{ AND tb1.parent_id = tb2.parent_id
var sql = @" left join dc_base_warehouse as t_w on tb1.warehouse_code = t_w.warehouse_code
select GROUP BY
dbw.warehouse_name, tb1.bailun_sku,
t3.sku_title_cn as 'sku_name', tb1.warehouse_code,
t2.quantity as 'purchase_daily_quantity', tb1.purchase_id
t3.buyer_name,t3.sku_title_cn,t3.sku_title_en,t3.product_inner_code, ";
t1.* DynamicParameters parameters = new DynamicParameters();
from dc_base_stock as t1 parameters.Add("bailun_sku", sku);
left join ( select * from dc_daily_purchase where record_time>=@time and type=1) as t2 on t1.warehouse_code = t2.warehouse_code and t1.bailun_sku = t2.bailun_sku parameters.Add("warehouse_code", warehouse_code);
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku return _connection.Query<dc_purchase_daily_dto>(sql, parameters);
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code }
where 1=1
"; // <summary>
/// 查询调拨在途数据
var countSql = @" /// </summary>
select /// <param name="sku">sku</param>
count(1) /// <param name="warehouse_code">仓库编码</param>
from dc_base_stock as t1 /// <returns></returns>
-- left join ( select * from dc_daily_purchase where record_time>=@time and type=1) as t2 on t1.warehouse_code = t2.warehouse_code and t1.bailun_sku = t2.bailun_sku public static IEnumerable<dc_transfer_daily_dto> TransferList(string sku, string warehouse_code)
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku {
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code var sql = @"
where 1=1 SELECT
"; tb5.bailun_sku bailun_sku,
DynamicParameters parameters = new DynamicParameters(); tb5.warehouse_code warehouse_code,
parameters.Add("time", DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); tb5.transfer_order_id transfer_order_id,
tb5.estimated_arrival_time estimated_arrival_time,
if (!string.IsNullOrWhiteSpace(warehousetype)) tb5.create_time create_time,
{ ( tb5.count - IFNULL( tb4.count, 0 ) ) AS count ,
sql += " and dbw.hq_type = @hq_type "; (case when t_w.hq_type='fba仓' then t_w.bailun_account else t_w.warehouse_name end) as warehouse_name
countSql += " and dbw.hq_type = @hq_type "; FROM
(
parameters.Add("hq_type", warehousetype); SELECT
} tb1.bailun_sku,
if (warehousearea>0) tb1.warehouse_code,
{ tb1.transfer_order_id,
sql += " and dbw.area_id = @area_id "; tb1.estimated_arrival_time,
countSql += " and dbw.area_id = @area_id "; tb1.create_time,
sum( tb1.count ) count
parameters.Add("area_id", warehousearea); FROM
} dc_base_transfer_verify tb1
LEFT JOIN dc_base_transfer_complete tb2 ON tb1.deleted = tb2.deleted
if (!string.IsNullOrWhiteSpace(product_inner_code)) AND tb1.bailun_sku = tb2.bailun_sku
{ AND tb1.warehouse_code = tb2.warehouse_code
sql += " and t3.product_inner_code like @product_inner_code "; AND tb1.transfer_order_id = tb2.transfer_order_id
countSql += " and t3.product_inner_code like @product_inner_code "; WHERE
tb2.bailun_sku IS NULL
parameters.Add("product_inner_code", $"%{product_inner_code}%"); AND tb1.bailun_sku = @bailun_sku
}
if (!string.IsNullOrWhiteSpace(sku_title_cn)) AND tb1.warehouse_code = @warehouse_code
{
sql += " and t3.sku_title_cn like @sku_title_cn "; AND tb1.deleted = 0
countSql += " and t3.sku_title_cn like @sku_title_cn "; GROUP BY
bailun_sku,
parameters.Add("sku_title_cn", $"%{sku_title_cn}%"); warehouse_code,
} transfer_order_id
if (!string.IsNullOrWhiteSpace(sku)) ) tb5
{ LEFT JOIN (
sql += " and t1.bailun_sku=@bailun_sku "; SELECT
countSql += " and t1.bailun_sku=@bailun_sku "; bailun_sku,
warehouse_code,
parameters.Add("bailun_sku", sku); transfer_order_id,
} sum( count ) count
if (!string.IsNullOrWhiteSpace(warehouse_code)) FROM
{ (
sql += " and t1.warehouse_code=@warehouse_code "; SELECT
countSql += " and t1.warehouse_code=@warehouse_code "; tb1.bailun_sku,
parameters.Add("warehouse_code", warehouse_code); tb1.warehouse_code,
} max( tb1.count ) count,
tb1.transfer_order_id
FROM
var obj = _connection.Query<dc_base_stock_dto>(sql + " limit " + offset + "," + limit, parameters,buffered:false,commandTimeout:0); dc_base_transfer_inbound tb1
total = _connection.QueryFirst<int>(countSql, parameters); LEFT JOIN dc_base_transfer_complete tb2 ON tb2.deleted = 0
return obj.AsList(); AND tb1.bailun_sku = tb2.bailun_sku
} AND tb1.warehouse_code = tb2.warehouse_code
AND tb1.transfer_order_id = tb2.transfer_order_id
} WHERE
} tb2.bailun_sku IS NULL
AND tb1.deleted = 0
GROUP BY
bailun_sku,
warehouse_code,
transfer_order_id
) tb3
GROUP BY
bailun_sku,
warehouse_code,
transfer_order_id
) tb4 ON tb5.bailun_sku = tb4.bailun_sku
AND tb5.warehouse_code = tb4.warehouse_code
AND tb5.transfer_order_id = tb4.transfer_order_id
left join dc_base_warehouse as t_w on tb5.warehouse_code = t_w.warehouse_code
WHERE
( tb5.count - IFNULL( tb4.count, 0 ) ) > 0
";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("bailun_sku", sku);
parameters.Add("warehouse_code", warehouse_code);
return _connection.Query<dc_transfer_daily_dto>(sql, parameters);
}
/// <summary>
/// 查询时实库存数据
/// </summary>
/// <param name="sku">sku</param>
/// <param name="warehouse_code">仓库编码</param>
/// <returns></returns>
public static IEnumerable<dc_base_stock_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea)
{
var sql = @"
select
(case when dbw.hq_type='fba仓' then dbw.bailun_account else dbw.warehouse_name end) as warehouse_name,
t3.sku_title_cn as 'sku_name',
t2.quantity as 'purchase_daily_quantity',
t3.buyer_name,t3.sku_title_cn,t3.sku_title_en,t3.product_inner_code,
t4.quantity_purchase as 'realtime_quantity_purchase',t4.quantity_transfer as 'realtime_quantity_transfer',
t1.*
from dc_base_stock as t1
left join ( select * from dc_daily_purchase where record_time>=@time and type=1) as t2 on t1.warehouse_code = t2.warehouse_code and t1.bailun_sku = t2.bailun_sku
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code
left join dc_mid_transit as t4 on t1.bailun_sku = t4.bailun_sku and t1.warehouse_code = t4.warehouse_code
where 1=1
";
var countSql = @"
select
count(1)
from dc_base_stock as t1
-- left join ( select * from dc_daily_purchase where record_time>=@time and type=1) as t2 on t1.warehouse_code = t2.warehouse_code and t1.bailun_sku = t2.bailun_sku
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code
where 1=1
";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("time", DateTime.Now.ToString("yyyy-MM-dd 00:00:00"));
if (!string.IsNullOrWhiteSpace(warehousetype))
{
sql += " and dbw.hq_type = @hq_type ";
countSql += " and dbw.hq_type = @hq_type ";
parameters.Add("hq_type", warehousetype);
}
if (warehousearea>0)
{
sql += " and dbw.area_id = @area_id ";
countSql += " and dbw.area_id = @area_id ";
parameters.Add("area_id", warehousearea);
}
if (!string.IsNullOrWhiteSpace(product_inner_code))
{
sql += " and t3.product_inner_code like @product_inner_code ";
countSql += " and t3.product_inner_code like @product_inner_code ";
parameters.Add("product_inner_code", $"%{product_inner_code}%");
}
if (!string.IsNullOrWhiteSpace(sku_title_cn))
{
sql += " and t3.sku_title_cn like @sku_title_cn ";
countSql += " and t3.sku_title_cn like @sku_title_cn ";
parameters.Add("sku_title_cn", $"%{sku_title_cn}%");
}
if (!string.IsNullOrWhiteSpace(sku))
{
sql += " and t1.bailun_sku=@bailun_sku ";
countSql += " and t1.bailun_sku=@bailun_sku ";
parameters.Add("bailun_sku", sku);
}
if (!string.IsNullOrWhiteSpace(warehouse_code))
{
sql += " and t1.warehouse_code=@warehouse_code ";
countSql += " and t1.warehouse_code=@warehouse_code ";
parameters.Add("warehouse_code", warehouse_code);
}
var obj = _connection.Query<dc_base_stock_dto>(sql + " limit " + offset + "," + limit, parameters,buffered:false,commandTimeout:0);
total = _connection.QueryFirst<int>(countSql, parameters);
return obj.AsList();
}
}
}
...@@ -40,7 +40,8 @@ sum(dat.quantity_transfer) as 'quantity_transfer', ...@@ -40,7 +40,8 @@ sum(dat.quantity_transfer) as 'quantity_transfer',
sum(t2.oneday_sales) as 'oneday_sales', sum(t2.oneday_sales) as 'oneday_sales',
sum(t2.forecast_oneday_sales) as 'forecast_oneday_sales2', sum(t2.forecast_oneday_sales) as 'forecast_oneday_sales2',
sum(dat.quantity_final_advise) as 'quantity_final_advise', sum(dat.quantity_final_advise) as 'quantity_final_advise',
sum(dat.quantity_promotion) as 'quantity_promotion' sum(dat.quantity_promotion) as 'quantity_promotion',
sum(dat.quantity_safe_inventory) as 'quantity_safe_inventory'
from dc_auto_turnover as dat 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_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 left join dc_base_warehouse as t3 on dat.warehouse_code = t3.warehouse_code
......
...@@ -186,5 +186,15 @@ namespace AutoTurnOver.Models ...@@ -186,5 +186,15 @@ namespace AutoTurnOver.Models
/// 产品内部编码 /// 产品内部编码
/// </summary> /// </summary>
public string product_inner_code { get; set; } public string product_inner_code { get; set; }
/// <summary>
/// 实时采购在途
/// </summary>
public int realtime_quantity_purchase { get; set; }
/// <summary>
/// 实时调拨在途
/// </summary>
public int realtime_quantity_transfer { get; set; }
} }
} }
...@@ -33,23 +33,41 @@ namespace AutoTurnOver.Models ...@@ -33,23 +33,41 @@ namespace AutoTurnOver.Models
/// </summary> /// </summary>
public string purchase_id { get; set; } public string purchase_id { get; set; }
/// <summary> /// <summary>
/// 采购数量 /// 在途数量
/// </summary> /// </summary>
public int purchaseQuantity { get; set; } public int dailyQuantity { get; set; }
/// <summary> /// <summary>
/// 入库数量 /// 预计到货
/// </summary> /// </summary>
public int inboundQuantity { get; set; } public DateTime? estimated_arrival_time { get; set; }
}
/// <summary>
/// 调拨明细
/// </summary>
public class dc_transfer_daily_dto
{
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string transfer_order_id { get; set; }
public string estimated_arrival_time { get; set; }
public string create_time { get; set; }
/// <summary> /// <summary>
/// 在途数量 /// 在途数量
/// </summary> /// </summary>
public int dailyQuantity { get public string count { get; set; }
{
return purchaseQuantity - inboundQuantity;
} }
public string warehouse_name { get; set; }
} }
} }
...@@ -21,6 +21,18 @@ namespace AutoTurnOver.Services ...@@ -21,6 +21,18 @@ namespace AutoTurnOver.Services
return DB.daily.List(sku, warehouse_code); return DB.daily.List(sku, warehouse_code);
} }
/// <summary>
/// 查询调拨在途数据
/// </summary>
/// <param name="sku">sku</param>
/// <param name="warehouse_code">仓库编码</param>
/// <returns></returns>
public IEnumerable<dc_transfer_daily_dto> TransferList(string sku, string warehouse_code)
{
return DB.daily.TransferList(sku, warehouse_code);
}
public IEnumerable<dc_base_stock_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea) public IEnumerable<dc_base_stock_dto> RealtimeList(string sku, string warehouse_code, string product_inner_code, string sku_title_cn, int offset, int limit, ref int total, string warehousetype, int? warehousearea)
{ {
return DB.daily.RealtimeList(sku, warehouse_code,product_inner_code,sku_title_cn,offset, limit, ref total,warehousetype,warehousearea); return DB.daily.RealtimeList(sku, warehouse_code,product_inner_code,sku_title_cn,offset, limit, ref total,warehousetype,warehousearea);
......
...@@ -31,6 +31,28 @@ namespace AutoTurnOver.Controllers ...@@ -31,6 +31,28 @@ namespace AutoTurnOver.Controllers
} }
/// <summary> /// <summary>
/// 调拨在途
/// </summary>
/// <param name="warehousecode"></param>
/// <param name="sku"></param>
/// <returns></returns>
[HttpGet]
public JsonResult TransferList(string warehousecode, string sku)
{
var service = new Services.DailyServices();
var list = service.TransferList(sku, warehousecode);
return new JsonResult(new
{
rows = list,
total = list.Count()
});
}
/// <summary>
/// 实时库存 /// 实时库存
/// </summary> /// </summary>
/// <param name="sku"></param> /// <param name="sku"></param>
...@@ -65,7 +87,7 @@ namespace AutoTurnOver.Controllers ...@@ -65,7 +87,7 @@ namespace AutoTurnOver.Controllers
var list = services.RealtimeList(sku, warehousecode, product_inner_code, sku_title_cn, 0, int.MaxValue, ref total,warehousetype,warehousearea); var list = services.RealtimeList(sku, warehousecode, product_inner_code, sku_title_cn, 0, int.MaxValue, ref total,warehousetype,warehousearea);
DataTable table = new DataTable(); DataTable table = new DataTable();
string[] cols = new string[] { "Sku", "采购名称", "中文名", "英文名称","内部编码", "仓库编码", "仓库名称", "货主编码" string[] cols = new string[] { "Sku", "采购名称", "中文名", "英文名称","内部编码", "仓库编码", "仓库名称", "货主编码","实时采购在途","实时调拨在途"
,"订货数量","运输在途","中转仓库存","冻结库存","供应商库存","预售库存","不良品库存","在途库存","收货待检" ,"订货数量","运输在途","中转仓库存","冻结库存","供应商库存","预售库存","不良品库存","在途库存","收货待检"
,"待上架","可配库存","销售可用库存(聚合)","销售可用库存(私有)","销售可用库存(共享)","在仓库存(共享)","在仓库存(私有)","在仓库存(聚合)","仓库占用(共享)" ,"待上架","可配库存","销售可用库存(聚合)","销售可用库存(私有)","销售可用库存(共享)","在仓库存(共享)","在仓库存(私有)","在仓库存(聚合)","仓库占用(共享)"
,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间" ,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间"
...@@ -113,6 +135,9 @@ namespace AutoTurnOver.Controllers ...@@ -113,6 +135,9 @@ namespace AutoTurnOver.Controllers
row["订单占用(聚合)"] = itemData.occupy_order_share; row["订单占用(聚合)"] = itemData.occupy_order_share;
row["环球更新时间"] = itemData.update_time; row["环球更新时间"] = itemData.update_time;
row["实时采购在途"] = itemData.realtime_quantity_purchase;
row["实时调拨在途"] = itemData.realtime_quantity_transfer;
table.Rows.Add(row); table.Rows.Add(row);
} }
......
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