Commit 5d8660ab by lizefeng

实时库存定时推送

parent e64fa403
...@@ -48,9 +48,9 @@ namespace AutoGeneratePurchaseAdvise ...@@ -48,9 +48,9 @@ namespace AutoGeneratePurchaseAdvise
if (now.Hour == 7 && now.Minute == 29) if (now.Hour == 7 && now.Minute == 29)
{ {
Console.WriteLine($"开始推送广州01周转数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); Console.WriteLine($"开始推送 国内仓实时库存,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
new SkuAutoTurnServices().GenerateData(); new DailyServices().GenerateData();
Console.WriteLine($"结束推送广州01周转数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); Console.WriteLine($"结束推送 国内仓实时库存,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
} }
......
...@@ -18,7 +18,7 @@ namespace AutoGeneratePurchaseAdvise ...@@ -18,7 +18,7 @@ namespace AutoGeneratePurchaseAdvise
//purchase_advise.ImportJITShortageDetailed(0); //purchase_advise.ImportJITShortageDetailed(0);
//PurchaseAdviseServices.Generate(); //PurchaseAdviseServices.Generate();
//PurchaseAdviseServices.Generate(); //PurchaseAdviseServices.Generate();
new SkuAutoTurnServices().GenerateData(); new DailyServices().GenerateData();
var builder = new HostBuilder().ConfigureServices((hostContext, services) => var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{ {
services.AddHostedService<GeneratePurchaseAdviseBackgroundService>(); services.AddHostedService<GeneratePurchaseAdviseBackgroundService>();
......
using AutoTurnOver.Models; using AutoTurnOver.Models;
using AutoTurnOver.Utility;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Text; using System.Text;
namespace AutoTurnOver.Services namespace AutoTurnOver.Services
...@@ -63,5 +66,121 @@ namespace AutoTurnOver.Services ...@@ -63,5 +66,121 @@ namespace AutoTurnOver.Services
return DB.daily.OutOfStockOrderList(sku, warehouse_code); return DB.daily.OutOfStockOrderList(sku, warehouse_code);
} }
public MemoryStream Export(UserData user, string sku, string bailun_sku, string warehousecode, string product_inner_code, string sku_title_cn, string supplier_name, int offset, int limit, ref int total, string warehousetype, int? warehousearea, bool isSum = false, string order = null, string sort = null, int? has_tort = null)
{
var services = new DailyServices();
var fileName = AppContext.BaseDirectory + $@"Result\RealtimeStock\{user.UserAccount}实时库存.csv";
int page = 1;
int rows = 50000;
while (true)
{
var list = services.RealtimeList(sku, bailun_sku, warehousecode, product_inner_code, sku_title_cn, supplier_name, (page - 1) * rows, rows, ref total, warehousetype, warehousearea, has_tort: has_tort);
if (list == null || list.Count <= 0) break;
DataTable table = new DataTable();
string[] cols = new string[] { "Sku", "采购名称", "中文名", "英文名称","内部编码", "仓库编码", "仓库名称", "货主编码","实时采购在途","实时调拨在途"
,"订货数量","运输在途","中转仓库存","冻结库存","供应商库存","预售库存","不良品库存","在途库存","收货待检"
,"待上架","可配库存","销售可用库存(聚合)","销售可用库存(私有)","销售可用库存(共享)","在仓库存(共享)","在仓库存(私有)","在仓库存(聚合)","仓库占用(共享)"
,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间","供应商","采购员","重量","单价","已发货库存","实时缺货","是否侵权",
"过去7日日均销量", "过去14日日均销量", "过去30日日均销量", "过去7日Eaby日均销量", "过去14日Eaby日均销量", "过去30日Eaby日均销量","监控状态"
};
foreach (var item in cols)
{
table.Columns.Add(item);
}
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["Sku"] = itemData.bailun_sku;
row["采购名称"] = itemData.buyer_name;
row["中文名"] = itemData.sku_title_cn;
row["英文名称"] = itemData.sku_title_en;
row["内部编码"] = itemData.product_inner_code;
row["仓库编码"] = itemData.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["货主编码"] = itemData.owner_code;
row["订货数量"] = itemData.quantity_reservation;
row["运输在途"] = itemData.quantity_transport;
row["中转仓库存"] = itemData.quantity_transfer;
row["冻结库存"] = itemData.quantity_freeze;
row["供应商库存"] = itemData.quantity_supplier;
row["预售库存"] = itemData.quantity_presell;
row["不良品库存"] = itemData.quantity_defective;
row["在途库存"] = itemData.quantity_transit;
row["收货待检"] = itemData.wait_check;
row["待上架"] = itemData.wait_putaway;
row["可配库存"] = itemData.usable_stock;
row["销售可用库存(聚合)"] = itemData.usable_sales;
row["销售可用库存(私有)"] = itemData.usable_sales_private;
row["销售可用库存(共享)"] = itemData.usable_sales_share;
row["在仓库存(共享)"] = itemData.in_warehouse_share;
row["在仓库存(私有)"] = itemData.in_warehouse_private;
row["在仓库存(聚合)"] = itemData.in_warehouse;
row["仓库占用(共享)"] = itemData.occupy_stock_share;
row["仓库占用(私有)"] = itemData.occupy_stock_private;
row["仓库占用(聚合)"] = itemData.occupy_stock;
row["活动占用"] = itemData.occupy_activity;
row["单占用(私有)"] = itemData.occupy_order_private;
row["订单占用(共享)"] = itemData.occupy_order;
row["订单占用(聚合)"] = itemData.occupy_order_share;
row["环球更新时间"] = itemData.update_time;
row["实时采购在途"] = itemData.realtime_quantity_purchase;
row["实时调拨在途"] = itemData.realtime_quantity_transfer;
row["供应商"] = itemData.suppliers_name;
row["采购员"] = itemData.buyer_name;
row["重量"] = itemData.weight;
row["单价"] = itemData.unit_price;
row["已发货库存"] = itemData.shipped_stock;
row["实时缺货"] = itemData.quantity_out_stock;
row["是否侵权"] = itemData.has_tort;
row["过去7日日均销量"] = itemData.history_sevenday_sales;
row["过去14日日均销量"] = itemData.history_fourteenday_sales;
row["过去30日日均销量"] = itemData.history_thirtyday_sales;
row["过去7日Eaby日均销量"] = itemData.history_sevenday_sales_ebay;
row["过去14日Eaby日均销量"] = itemData.history_fourteenday_sales_ebay;
row["过去30日Eaby日均销量"] = itemData.history_thirtyday_sales_ebay;
row["监控状态"] = itemData.monitor_status == 0 ? "监控中" : "停止监控";
table.Rows.Add(row);
}
CsvFileHelper.SaveCSV(table, fileName, page == 1);
page++;
}
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return memory;
}
public async void GenerateData()
{
try
{
var total = 0;
var memory = Export(new UserData { UserAccount = "admin" }, null, null, null, null, null, null, 0, 0, ref total, "国内仓", null);
var fileData = await QiNiuCloudHelper.UploadAsync(memory, $"stock_{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}.csv");
ApiServices.QiYeJiQiRenMsPush(new QiYeJiQiRenMsDto { msgtype = "text", text = new QiYeJiQiRenMsDto.text_dto { content = "国内仓实时库存:" + fileData } });
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
} }
} }
...@@ -119,102 +119,8 @@ namespace AutoTurnOver.Controllers ...@@ -119,102 +119,8 @@ namespace AutoTurnOver.Controllers
public FileResult ExportRealtime(string sku, string bailun_sku, string warehousecode, string product_inner_code, string sku_title_cn, string supplier_name, int offset, int limit, string order, string sort, string warehousetype, int? warehousearea, int? has_tort = null) public FileResult ExportRealtime(string sku, string bailun_sku, string warehousecode, string product_inner_code, string sku_title_cn, string supplier_name, int offset, int limit, string order, string sort, string warehousetype, int? warehousearea, int? has_tort = null)
{ {
var user = AutoUtility.GetUser(); var user = AutoUtility.GetUser();
var services = new DailyServices(); int total = 0;
var total = 0; var memory = new DailyServices().Export(user,sku, bailun_sku, warehousecode, product_inner_code, sku_title_cn, supplier_name, offset, limit, ref total, warehousetype, warehousearea, has_tort: has_tort);
var fileName = AppContext.BaseDirectory + $@"Result\RealtimeStock\{user.UserAccount}实时库存.csv";
int page = 1;
int rows = 50000;
while (true)
{
var list = services.RealtimeList(sku, bailun_sku, warehousecode, product_inner_code, sku_title_cn, supplier_name, (page-1)*rows, rows, ref total, warehousetype, warehousearea, has_tort: has_tort);
if (list == null || list.Count <= 0) break;
DataTable table = new DataTable();
string[] cols = new string[] { "Sku", "采购名称", "中文名", "英文名称","内部编码", "仓库编码", "仓库名称", "货主编码","实时采购在途","实时调拨在途"
,"订货数量","运输在途","中转仓库存","冻结库存","供应商库存","预售库存","不良品库存","在途库存","收货待检"
,"待上架","可配库存","销售可用库存(聚合)","销售可用库存(私有)","销售可用库存(共享)","在仓库存(共享)","在仓库存(私有)","在仓库存(聚合)","仓库占用(共享)"
,"仓库占用(私有)","仓库占用(聚合)","活动占用","单占用(私有)","订单占用(共享)","订单占用(聚合)","环球更新时间","供应商","采购员","重量","单价","已发货库存","实时缺货","是否侵权",
"过去7日日均销量", "过去14日日均销量", "过去30日日均销量", "过去7日Eaby日均销量", "过去14日Eaby日均销量", "过去30日Eaby日均销量","监控状态"
};
foreach (var item in cols)
{
table.Columns.Add(item);
}
foreach (var itemData in list)
{
DataRow row = table.NewRow();
row["Sku"] = itemData.bailun_sku;
row["采购名称"] = itemData.buyer_name;
row["中文名"] = itemData.sku_title_cn;
row["英文名称"] = itemData.sku_title_en;
row["内部编码"] = itemData.product_inner_code;
row["仓库编码"] = itemData.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["货主编码"] = itemData.owner_code;
row["订货数量"] = itemData.quantity_reservation;
row["运输在途"] = itemData.quantity_transport;
row["中转仓库存"] = itemData.quantity_transfer;
row["冻结库存"] = itemData.quantity_freeze;
row["供应商库存"] = itemData.quantity_supplier;
row["预售库存"] = itemData.quantity_presell;
row["不良品库存"] = itemData.quantity_defective;
row["在途库存"] = itemData.quantity_transit;
row["收货待检"] = itemData.wait_check;
row["待上架"] = itemData.wait_putaway;
row["可配库存"] = itemData.usable_stock;
row["销售可用库存(聚合)"] = itemData.usable_sales;
row["销售可用库存(私有)"] = itemData.usable_sales_private;
row["销售可用库存(共享)"] = itemData.usable_sales_share;
row["在仓库存(共享)"] = itemData.in_warehouse_share;
row["在仓库存(私有)"] = itemData.in_warehouse_private;
row["在仓库存(聚合)"] = itemData.in_warehouse;
row["仓库占用(共享)"] = itemData.occupy_stock_share;
row["仓库占用(私有)"] = itemData.occupy_stock_private;
row["仓库占用(聚合)"] = itemData.occupy_stock;
row["活动占用"] = itemData.occupy_activity;
row["单占用(私有)"] = itemData.occupy_order_private;
row["订单占用(共享)"] = itemData.occupy_order;
row["订单占用(聚合)"] = itemData.occupy_order_share;
row["环球更新时间"] = itemData.update_time;
row["实时采购在途"] = itemData.realtime_quantity_purchase;
row["实时调拨在途"] = itemData.realtime_quantity_transfer;
row["供应商"] = itemData.suppliers_name;
row["采购员"] = itemData.buyer_name;
row["重量"] = itemData.weight;
row["单价"] = itemData.unit_price;
row["已发货库存"] = itemData.shipped_stock;
row["实时缺货"] = itemData.quantity_out_stock;
row["是否侵权"] = itemData.has_tort;
row["过去7日日均销量"] = itemData.history_sevenday_sales;
row["过去14日日均销量"] = itemData.history_fourteenday_sales;
row["过去30日日均销量"] = itemData.history_thirtyday_sales;
row["过去7日Eaby日均销量"] = itemData.history_sevenday_sales_ebay;
row["过去14日Eaby日均销量"] = itemData.history_fourteenday_sales_ebay;
row["过去30日Eaby日均销量"] = itemData.history_thirtyday_sales_ebay;
row["监控状态"] = itemData.monitor_status==0?"监控中":"停止监控";
table.Rows.Add(row);
}
CsvFileHelper.SaveCSV(table, fileName,page==1);
page++;
}
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return File(memory, "text/csv", $"{user.UserAccount}实时库存.csv"); return File(memory, "text/csv", $"{user.UserAccount}实时库存.csv");
} }
......
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