Commit 885c81af by zhoujinhui

新增精简导出实时库存

parent c5f8b458
......@@ -744,6 +744,90 @@ left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code
return obj;
}
/// <summary>
/// 快速查询导出时实库存数据 精简字段
/// </summary>
/// <param name="sku">sku</param>
/// <param name="warehouse_code">仓库编码</param>
/// <returns></returns>
public static List<dc_base_stock_dto> QuickExportRealtimeList(dc_base_stock_search_dto search_data)
{
DynamicParameters parameters = new DynamicParameters();
var sql = @"
SELECT
t1.bailun_sku,
t3.product_inner_code as 'sku_product_inner_code',
t3.buyer_name,
t1.warehouse_code,
dbw.warehouse_name as warehouse_name,
t4.quantity_purchase as 'realtime_quantity_purchase',
t1.usable_stock,
t4.quantity_out_stock,
t3.unit_price
FROM dc_base_stock AS t1
left join dc_base_warehouse as dbw on t1.warehouse_code = dbw.warehouse_code
left join dc_base_sku as t3 on t1.bailun_sku = t3.bailun_sku
left join dc_mid_transit as t4 on t1.bailun_sku = t4.bailun_sku and t1.warehouse_code = t4.warehouse_code
WHERE 1=1
";
if (!string.IsNullOrWhiteSpace(search_data.warehousetype))
{
sql += " and dbw.hq_type = @hq_type ";
parameters.Add("hq_type", search_data.warehousetype);
}
if (search_data.warehousearea > 0)
{
sql += " and dbw.area_id = @area_id ";
parameters.Add("area_id", search_data.warehousearea);
}
if (search_data.searchType > 0 && !string.IsNullOrWhiteSpace(search_data.key_words))
{
switch (search_data.searchType)
{
case 1:
sql += " and t1.bailun_sku in @bailun_skus ";
parameters.Add("bailun_skus", search_data.key_words.Split(','));
break;
case 2:
sql += " and t1.bailun_sku like @bailun_sku ";
parameters.Add("bailun_sku", $"%{search_data.key_words}%");
break;
case 3:
sql += " and t1.product_inner_code like @product_inner_code ";
parameters.Add("product_inner_code", $"%{search_data.key_words}%");
break;
case 4:
sql += " and t1.sku_title_cn like @sku_title_cn ";
parameters.Add("sku_title_cn", $"%{search_data.key_words}%");
break;
case 5:
sql += " and t1.product_inner_code = @product_inner_code ";
parameters.Add("product_inner_code", $"{search_data.key_words}");
break;
case 6:
sql += " and t3.article_number = @article_number ";
parameters.Add("article_number", $"{search_data.key_words}");
break;
}
}
if (!string.IsNullOrWhiteSpace(search_data.warehousecode))
{
sql += " and t1.warehouse_code=@warehouse_code ";
parameters.Add("warehouse_code", search_data.warehousecode);
}
if (!string.IsNullOrWhiteSpace(search_data.supplier_name))
{
sql += " and t1.suppliers_name =@suppliers_name ";
parameters.Add("suppliers_name", search_data.supplier_name);
}
var obj = _connection.Query<dc_base_stock_dto>(sql, parameters, buffered: false, commandTimeout: 0).AsList();
return obj;
}
public static List<api_stock_warehouse_response_dto> GetStockWarehouseList(api_stock_warehouse_request_dto search_data)
{
return _connection.Query<api_stock_warehouse_response_dto>($@" select t1.bailun_sku as 'skuCode', t1.warehouse_code as 'warehouseCode',t1.usable_stock as 'stock',t4.first_purchase_date ,(t2.quantity_purchase+t2.quantity_transfer_order) as 'transit_quantity',t5.unit_price
......
......@@ -885,5 +885,48 @@ namespace AutoTurnOver.Services
{
return DB.daily.GetProductTypeList();
}
/// <summary>
/// 快速查询导出时实库存数据 精简字段
/// </summary>
/// <param name="search_data"></param>
/// <returns></returns>
public string QuickExportRealtimeList(dc_base_stock_search_dto search_data,out int rowCount)
{
try
{
var services = new DailyServices();
var fileName = AppContext.BaseDirectory + $@"实时库存-{DateTime.Now.ToString("yyyyMMddHHmmss")}{Guid.NewGuid()}.csv";
DataTable table = new DataTable();
string[] cols = new string[] { "Sku", "内部编码", "采购名称", "仓库编码", "仓库名称", "采购在途", "可配库存", "实时缺货", "单价" };
foreach (var item in cols)
{
table.Columns.Add(item);
}
var findDataList = DB.daily.QuickExportRealtimeList(search_data);
rowCount = findDataList.Count;
foreach (var itemData in findDataList)
{
DataRow row = table.NewRow();
row["Sku"] = itemData.bailun_sku;
row["内部编码"] = itemData.sku_product_inner_code;
row["采购名称"] = itemData.buyer_name;
row["仓库编码"] = itemData.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["采购在途"] = itemData.realtime_quantity_purchase;
row["可配库存"] = itemData.usable_stock;
row["实时缺货"] = itemData.quantity_out_stock;
row["单价"] = itemData.unit_price;
table.Rows.Add(row);
}
CsvFileHelper.SaveCSV(table, fileName);
return fileName;
}
catch (Exception)
{
throw;
}
}
}
}
......@@ -83,6 +83,9 @@ namespace AutoTurnOver.Services
case "投资回报分析":
item.result_file_url = await ReportInvestReturnAnalysis(item.parameter, item);
break;
case "快速导出实时库存":
item.result_file_url = await DownloadQuickExportStock(item.parameter, item);
break;
default: throw new Exception("无法识别的任务");
}
item.end_date = DateTime.Now;
......@@ -386,6 +389,22 @@ namespace AutoTurnOver.Services
Console.WriteLine("DownloadStock - 上传完毕");
return fileData;
}
/// <summary>
/// 下载快速导出库存
/// </summary>
public async Task<string> DownloadQuickExportStock(string par_json, dc_task_download download_data)
{
var rows = 0;
dc_base_stock_search_dto search_data = par_json.ToObject<dc_base_stock_search_dto>();
Console.WriteLine("DownloadStock - 开始生成文件");
var memory = new DailyServices().QuickExportRealtimeList(search_data, out rows);
download_data.rows = rows;
Console.WriteLine("DownloadStock - 开始生成上传文件");
var fileData = await AutoTurnOver.Utility.QiNiuCloudHelper.UploadSectioningAsync(memory);
Console.WriteLine("DownloadStock - 上传完毕");
return fileData;
}
}
}
......@@ -498,7 +498,7 @@ namespace AutoTurnOver.Controllers
}
}
public JsonResult ExportFullLinkTransfer([FromQuery]dc_base_stock_search_dto search_data)
{
try
......@@ -714,6 +714,37 @@ namespace AutoTurnOver.Controllers
return File(memory, "text/csv", $"{user.UserAccount}库存监控.csv");
}
/// <summary>
/// 快速导出实时库存
/// </summary>
/// <param name="sku"></param>
/// <param name="warehousecode"></param>
/// <returns></returns>
[UseAction]
public JsonResult QuickExportStock([FromQuery] dc_base_stock_search_dto search_data)
{
try
{
if(string.IsNullOrWhiteSpace(search_data.warehousecode)&& string.IsNullOrWhiteSpace(search_data.warehousetype)
&& string.IsNullOrWhiteSpace(search_data.key_words) && !search_data.warehousearea.HasValue && string.IsNullOrWhiteSpace(search_data.supplier_name))
{
return new JsonResult(new { success = false, message = "导出条件必须选择一项(仓库、仓库类型、SKU、仓库区域、供应商)" });
}
var user = AutoUtility.GetUser();
search_data.limit = int.MaxValue;
//var memory = new DailyServices().QuickExportRealtimeList(search_data, out int rows);
dc_task_download_dao.PushData<dc_base_stock_search_dto>(new dc_task_download
{
parameter = search_data.ToJson(),
task_name = "快速导出实时库存"
}, user);
return new JsonResult(new { success = true });
}
catch (Exception ex)
{
return new JsonResult(new { success = false, message = ex.Message });
}
}
}
}
\ No newline at end of file
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