Commit a7672bd1 by huangruiyao
parents 8c3a1ab7 ffc40343
...@@ -13,8 +13,17 @@ namespace AutoGeneratePurchaseAdvise ...@@ -13,8 +13,17 @@ namespace AutoGeneratePurchaseAdvise
static async Task Main(string[] args) static async Task Main(string[] args)
{ {
Console.WriteLine("采购建议计算任务启动..."); Console.WriteLine("采购建议计算任务启动...");
//PurchaseAdviseServices.AutoPushBuySys(2);
//PurchaseAdviseServices.AutoPushBuySys(6); try
{
//PurchaseAdviseServices.AutoPushBuySys(2);
//PurchaseAdviseServices.AutoPushBuySys(6);
}
catch (Exception ex)
{
throw;
}
var builder = new HostBuilder().ConfigureServices((hostContext, services) => var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{ {
services.AddHostedService<GeneratePurchaseAdviseBackgroundService>(); services.AddHostedService<GeneratePurchaseAdviseBackgroundService>();
......
...@@ -7,6 +7,7 @@ using Dapper; ...@@ -7,6 +7,7 @@ using Dapper;
using System.Linq; using System.Linq;
using AutoTurnOver.Models.Base; using AutoTurnOver.Models.Base;
using AutoTurnOver.DB.Base; using AutoTurnOver.DB.Base;
using AutoTurnOver.Models.stock;
namespace AutoTurnOver.DB namespace AutoTurnOver.DB
{ {
...@@ -512,6 +513,19 @@ from dc_auto_turnover as dat ...@@ -512,6 +513,19 @@ from dc_auto_turnover as dat
return _connection.QueryFirstOrDefault<dc_auto_inventory>(sql); return _connection.QueryFirstOrDefault<dc_auto_inventory>(sql);
} }
/// <summary>
/// 历史库存
/// </summary>
/// <returns></returns>
public static List<dc_daily_stock_dto> GetDailyStock(string bailun_sku,string warehouse_code,DateTime date)
{
return _connection.Query<dc_daily_stock_dto>(" select * from dc_daily_stock where bailun_sku=@bailun_sku and warehouse_code=@warehouse_code and record_time>=@record_time ", new {
bailun_sku = bailun_sku,
warehouse_code = warehouse_code,
record_time = date
}).ToList();
}
#endregion #endregion
#region 预测入库 #region 预测入库
......
...@@ -138,7 +138,7 @@ dc_mid_transit as t2 , ...@@ -138,7 +138,7 @@ dc_mid_transit as t2 ,
dc_base_sku as t3 dc_base_sku as t3
set t1.quantity_final_advise=GREATEST(0,t1.quantity_final_advise-t2.quantity_out_stock) set t1.quantity_final_advise=GREATEST(0,t1.quantity_final_advise-t2.quantity_out_stock)
where t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code and t1.bailun_sku=t3.bailun_sku where t1.bailun_sku = t2.bailun_sku and t1.warehouse_code = t2.warehouse_code and t1.bailun_sku=t3.bailun_sku
and t1.quantity_init_advise>=0 and ( t3.buyer_name in ('张莹霞1') and t1.warehouse_code!='GZBLWH' ) and t1.main_id=@main_id ", new { main_id = mainID }, commandTimeout: 0); and t1.quantity_init_advise>=0 and ( t3.buyer_name in ('张莹霞1') and t1.warehouse_code='GZBLWH' ) and t1.main_id=@main_id ", new { main_id = mainID }, commandTimeout: 0);
// 调整因为舍弃小数导致的moq不足 // 调整因为舍弃小数导致的moq不足
......
...@@ -902,9 +902,10 @@ group by t1.transfer_order_id,t1.box_id ...@@ -902,9 +902,10 @@ group by t1.transfer_order_id,t1.box_id
// 查询是否有真实费用 // 查询是否有真实费用
var is_real = 0; var is_real = 0;
var real_cost = order_item_sku.cost_first; var real_cost = order_item_sku.cost_first;
var real_data = conn.QuerySingleOrDefault<dc_base_transfer_cost_real>(" select * from dc_base_transfer_cost_real where bailun_sku=@bailun_sku and transfer_order_id=@transfer_order_id ",new { var real_data = conn.QuerySingleOrDefault<dc_base_transfer_cost_real>(" select * from dc_base_transfer_cost_real where bailun_sku=@bailun_sku and transfer_order_id=@transfer_order_id and box_id=@box_id ",new {
bailun_sku = order_item_sku.bailun_sku, bailun_sku = order_item_sku.bailun_sku,
transfer_order_id = order_item.transfer_order_id transfer_order_id = order_item.transfer_order_id,
box_id = order_item.box_id
}); });
if (real_data != null) if (real_data != null)
{ {
...@@ -1788,7 +1789,8 @@ from dc_report_cash_flow_log as t1 left join dc_base_warehouse as t2 on t1.wareh ...@@ -1788,7 +1789,8 @@ from dc_report_cash_flow_log as t1 left join dc_base_warehouse as t2 on t1.wareh
search.data_type = 1; search.data_type = 1;
} }
var sql = @" select t1.*,t2.sku_title_cn as 'sku_name',t2.`status` as 'sku_status',t2.buyer_name,ifnull(t3.warehouse_name,t3.warehouse_extend_name) as 'warehouse_name',ifnull(t4.usable_stock,0) as 'usable_stock',(ifnull(t5.quantity_transfer,0)+ifnull(t5.quantity_purchase,0)) as 'on_the_way', var sql = @" select t1.*,t2.sku_title_cn as 'sku_name',t2.`status` as 'sku_status',t2.buyer_name,ifnull(t3.warehouse_name,t3.warehouse_extend_name) as 'warehouse_name',ifnull(t4.usable_stock,0) as 'usable_stock',(ifnull(t5.quantity_transfer,0)+ifnull(t5.quantity_purchase,0)) as 'on_the_way',
(ifnull(t4.usable_stock,0) * t2.unit_price) as 'stock_amount',(ifnull(t5.quantity_transfer,0)+ifnull(t5.quantity_purchase,0)) as 'on_the_way_amount',ifnull(t8.history_sevenday_sales,0) as 'history_sevenday_sales',ifnull(t8.history_fourteenday_sales,0) as 'history_fourteenday_sales',ifnull(t8.history_thirtyday_sales,0) as 'history_thirtyday_sales' (ifnull(t4.usable_stock,0) * t2.unit_price) as 'stock_amount',(ifnull(t5.quantity_transfer,0)+ifnull(t5.quantity_purchase,0)) as 'on_the_way_amount',ifnull(t8.history_sevenday_sales,0) as 'history_sevenday_sales',ifnull(t8.history_fourteenday_sales,0) as 'history_fourteenday_sales',ifnull(t8.history_thirtyday_sales,0) as 'history_thirtyday_sales',
(0-ifnull(t4.pay_amount_30,0)) as 'pay_amount_30',ifnull(t4.income_amount_30,0) as 'income_amount_30'
from dc_report_cash_flow_sku_group as t1 from dc_report_cash_flow_sku_group as t1
left join dc_base_sku as t2 on t1.bailun_sku=t2.bailun_sku left join dc_base_sku as t2 on t1.bailun_sku=t2.bailun_sku
left join dc_base_warehouse as t3 on t1.warehouse_code = t3.warehouse_code left join dc_base_warehouse as t3 on t1.warehouse_code = t3.warehouse_code
...@@ -1798,6 +1800,33 @@ left join dc_auto_config_sku_label as t6 on t1.bailun_sku = t6.bailun_sku ...@@ -1798,6 +1800,33 @@ left join dc_auto_config_sku_label as t6 on t1.bailun_sku = t6.bailun_sku
left join dc_auto_config_sku_warehouse as t7 on t1.bailun_sku = t7.bailun_sku and t1.warehouse_code = t7.warehouse_code left join dc_auto_config_sku_warehouse as t7 on t1.bailun_sku = t7.bailun_sku and t1.warehouse_code = t7.warehouse_code
left join dc_auto_turnover as t8 on t1.bailun_sku = t8.bailun_sku and t1.warehouse_code = t8.warehouse_code left join dc_auto_turnover as t8 on t1.bailun_sku = t8.bailun_sku and t1.warehouse_code = t8.warehouse_code
where t1.type=@type "; where t1.type=@type ";
if (search.is_sum == true)
{
sql = @" select
sum(t1.balance) as 'balance',
sum(t1.current_balance) as 'current_balance',
sum(t1.current_income) as 'current_income',
sum(t1.current_expend) as 'current_expend',
sum(t1.last_balance) as 'last_balance',
sum(t1.last_income) as 'last_income',
sum(t1.last_expend) as 'last_expend',
sum(ifnull(t4.usable_stock,0)) as 'usable_stock',
sum(ifnull(t5.quantity_transfer,0)+ifnull(t5.quantity_purchase,0)) as 'on_the_way',
sum(ifnull(t4.usable_stock,0) * t2.unit_price) as 'stock_amount',
sum(ifnull(t5.quantity_transfer,0)+ifnull(t5.quantity_purchase,0)) as 'on_the_way_amount',
sum(0-ifnull(t4.pay_amount_30,0)) as 'pay_amount_30',
sum(ifnull(t4.income_amount_30,0)) as 'income_amount_30'
from dc_report_cash_flow_sku_group as t1
left join dc_base_sku as t2 on t1.bailun_sku=t2.bailun_sku
left join dc_base_warehouse as t3 on t1.warehouse_code = t3.warehouse_code
left join dc_base_stock as t4 on t1.bailun_sku = t4.bailun_sku and t1.warehouse_code = t4.warehouse_code
left join dc_mid_transit as t5 on t1.bailun_sku = t5.bailun_sku and t1.warehouse_code = t5.warehouse_code
left join dc_auto_config_sku_label as t6 on t1.bailun_sku = t6.bailun_sku
left join dc_auto_config_sku_warehouse as t7 on t1.bailun_sku = t7.bailun_sku and t1.warehouse_code = t7.warehouse_code
left join dc_auto_turnover as t8 on t1.bailun_sku = t8.bailun_sku and t1.warehouse_code = t8.warehouse_code
where t1.type=@type";
}
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
parameters.Add("type", search.data_type); parameters.Add("type", search.data_type);
...@@ -1851,9 +1880,18 @@ where t1.type=@type "; ...@@ -1851,9 +1880,18 @@ where t1.type=@type ";
} }
} }
if (search.is_sum)
{
return new Page<dc_report_cash_flow_sku_group_dto>() {
Items = new List<dc_report_cash_flow_sku_group_dto> { _connection.QuerySingleOrDefault<dc_report_cash_flow_sku_group_dto>(sql, parameters) }
};
}
else
{
return _connection.Page<dc_report_cash_flow_sku_group_dto>(sql, search, parameters);
}
return _connection.Page<dc_report_cash_flow_sku_group_dto>(sql, search, parameters);
} }
/// <summary> /// <summary>
...@@ -1881,11 +1919,13 @@ where t1.type=@type "; ...@@ -1881,11 +1919,13 @@ where t1.type=@type ";
{ {
bailun_sku = skuItem.sku, bailun_sku = skuItem.sku,
sku_avg_cost = skuItem.skuAvgCost, sku_avg_cost = skuItem.skuAvgCost,
transfer_order_id = item.orderCode transfer_order_id = item.orderCode,
box_id = item.boxCode
}; };
db_data.id = conn.QuerySingleOrDefault<int?>(" select id from dc_base_transfer_cost_real where bailun_sku=@bailun_sku and transfer_order_id=@transfer_order_id limit 1 ", new { db_data.id = conn.QuerySingleOrDefault<int?>(" select id from dc_base_transfer_cost_real where bailun_sku=@bailun_sku and transfer_order_id=@transfer_order_id and box_id=@box_id limit 1 ", new {
bailun_sku = db_data.bailun_sku, bailun_sku = db_data.bailun_sku,
transfer_order_id = db_data.transfer_order_id transfer_order_id = db_data.transfer_order_id,
box_id = item.boxCode
})??0; })??0;
if (db_data.id > 0) if (db_data.id > 0)
{ {
......
...@@ -25,6 +25,7 @@ namespace AutoTurnOver.Models.Report ...@@ -25,6 +25,7 @@ namespace AutoTurnOver.Models.Report
public string label { get; set; } public string label { get; set; }
public string website { get; set; } public string website { get; set; }
public string warehouse_code { get; set; }
public int year { get; set; } public int year { get; set; }
public int month { get; set; } public int month { get; set; }
...@@ -56,6 +57,30 @@ namespace AutoTurnOver.Models.Report ...@@ -56,6 +57,30 @@ namespace AutoTurnOver.Models.Report
} }
} }
public class bailun_sku_warehouse_code_dto
{
public string label { get; set; }
public string warehouse_name { get; set; }
public string warehouse_code { get; set; }
public List<string> labels { get; set; }
public List<bailun_sku_warehouse_code_date_dto> days { get; set; }
public class bailun_sku_warehouse_code_date_dto
{
public int year { get; set; }
public int month { get; set; }
public int day { get; set; }
public decimal count { get; set; }
public decimal sum { get; set; }
}
}
public class bailun_sku_goods_search_dto public class bailun_sku_goods_search_dto
{ {
public bool? has_sum { get; set; } public bool? has_sum { get; set; }
......
...@@ -14,6 +14,8 @@ namespace AutoTurnOver.Models.Report ...@@ -14,6 +14,8 @@ namespace AutoTurnOver.Models.Report
/// 【品牌 /// 【品牌
/// </summary> /// </summary>
public string brand { get; set; } public string brand { get; set; }
//实际最后发货时间
public DateTime shipping_deadline_real { get; set; }
/// <summary> /// <summary>
/// 缺货更新时间 /// 缺货更新时间
/// </summary> /// </summary>
......
...@@ -25,6 +25,7 @@ namespace AutoTurnOver.Models ...@@ -25,6 +25,7 @@ namespace AutoTurnOver.Models
public string bailun_sku { get; set; } public string bailun_sku { get; set; }
public string warehouse_code { get; set; } public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
public string bailun_sku_title_cn { get; set; } public string bailun_sku_title_cn { get; set; }
......
...@@ -13,5 +13,6 @@ namespace AutoTurnOver.Models ...@@ -13,5 +13,6 @@ namespace AutoTurnOver.Models
public string transfer_order_id { get; set; } public string transfer_order_id { get; set; }
public string bailun_sku { get; set; } public string bailun_sku { get; set; }
public decimal sku_avg_cost { get; set; } public decimal sku_avg_cost { get; set; }
public string box_id { get; set; }
} }
} }
...@@ -92,7 +92,7 @@ namespace AutoTurnOver.Models ...@@ -92,7 +92,7 @@ namespace AutoTurnOver.Models
} }
else if((int)dc_report_cash_flow_log_data_type_enum.新增头程费用 == data_type || (int)dc_report_cash_flow_log_data_type_enum.新增头程费用_首单 == data_type) else if((int)dc_report_cash_flow_log_data_type_enum.新增头程费用 == data_type || (int)dc_report_cash_flow_log_data_type_enum.新增头程费用_首单 == data_type)
{ {
return "http://trans.bailuntec.com/#/allot-manage/ordinaryAllotOrderList?ordercode=" + no; return "http://trans.bailuntec.com/#/allot-manage/ordinaryAllotOrderList?ordercode=" + item;
} }
else if ((int)dc_report_cash_flow_log_data_type_enum.新增采购费用 == data_type || (int)dc_report_cash_flow_log_data_type_enum.新增采购费用_首单 == data_type) else if ((int)dc_report_cash_flow_log_data_type_enum.新增采购费用 == data_type || (int)dc_report_cash_flow_log_data_type_enum.新增采购费用_首单 == data_type)
{ {
...@@ -301,6 +301,20 @@ namespace AutoTurnOver.Models ...@@ -301,6 +301,20 @@ namespace AutoTurnOver.Models
} }
public class dc_report_cash_flow_sku_group_dto : dc_report_cash_flow_sku_group public class dc_report_cash_flow_sku_group_dto : dc_report_cash_flow_sku_group
{ {
public string last_date_begin_30 { get
{
return DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd 00:00:00");
} }
public string last_date_end_30
{
get
{
return DateTime.Now.ToString("yyyy-MM-dd 10:00:00");
}
}
public decimal pay_amount_30 { get; set; }
public decimal income_amount_30 { get; set; }
public string sku_name { get; set; } public string sku_name { get; set; }
public int sku_status { get; set; } public int sku_status { get; set; }
public string buyer_name { get; set; } public string buyer_name { get; set; }
...@@ -359,6 +373,7 @@ namespace AutoTurnOver.Models ...@@ -359,6 +373,7 @@ namespace AutoTurnOver.Models
public string buyer_name { get; set; } public string buyer_name { get; set; }
public string supplier_name { get; set; } public string supplier_name { get; set; }
public string product_type { get; set; } public string product_type { get; set; }
public bool is_sum { get; set; }
} }
public class dc_report_cash_flow_platform_share_dto public class dc_report_cash_flow_platform_share_dto
......
using System;
using System.Collections.Generic;
using System.Text;
namespace AutoTurnOver.Models.stock
{
/// <summary>
/// 每日库存
/// </summary>
public class dc_daily_stock_dto
{
public int id { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public decimal usable_stock { get; set; }
public decimal occupy_stock { get; set; }
/// <summary>
/// 时间
/// </summary>
public DateTime record_time { get; set; }
}
}
...@@ -24,6 +24,7 @@ namespace AutoTurnOver.Services ...@@ -24,6 +24,7 @@ namespace AutoTurnOver.Services
{ {
var dic = (IDictionary<string, object>)o; var dic = (IDictionary<string, object>)o;
dic["occur_" + (dat_item.date_title)] = new { val = Math.Round(dat_item.occur_val, 2), btime = dat_item.btime, etime = dat_item.etime, data_type = item.date_type }; dic["occur_" + (dat_item.date_title)] = new { val = Math.Round(dat_item.occur_val, 2), btime = dat_item.btime, etime = dat_item.etime, data_type = item.date_type };
dic["v_occur_" + (dat_item.date_title)] = Math.Round(dat_item.occur_val, 2);
if( if(
item.date_type .Contains( (int)dc_report_cash_flow_log_data_type_enum.销售数量) item.date_type .Contains( (int)dc_report_cash_flow_log_data_type_enum.销售数量)
//|| item.date_type==(int)dc_report_cash_flow_log_data_type_enum.利润 //|| item.date_type==(int)dc_report_cash_flow_log_data_type_enum.利润
...@@ -33,11 +34,13 @@ namespace AutoTurnOver.Services ...@@ -33,11 +34,13 @@ namespace AutoTurnOver.Services
//|| item.date_type == (int)dc_report_cash_flow_log_data_type_enum.释放头程费用 //|| item.date_type == (int)dc_report_cash_flow_log_data_type_enum.释放头程费用
) )
{ {
dic["pay_" + (dat_item.date_title)] = null;
dic["v_pay_" + (dat_item.date_title)] = null;
} }
else else
{ {
dic["pay_" + (dat_item.date_title)] = new { val = Math.Round(dat_item.pay_val, 2), btime = dat_item.btime, etime = dat_item.etime, data_type = item.date_type }; dic["pay_" + (dat_item.date_title)] = new { val = Math.Round(dat_item.pay_val, 2), btime = dat_item.btime, etime = dat_item.etime, data_type = item.date_type };
dic["v_pay_" + (dat_item.date_title)] = Math.Round(dat_item.pay_val, 2);
} }
} }
......
...@@ -42,6 +42,9 @@ namespace AutoTurnOver.Services ...@@ -42,6 +42,9 @@ namespace AutoTurnOver.Services
// 预计入库 // 预计入库
var putin = DB.dc_auto_turnover.GetAutoInboundBySkuWH(sku, warehousecode, 0); var putin = DB.dc_auto_turnover.GetAutoInboundBySkuWH(sku, warehousecode, 0);
//历史库存
var dailyStock = DB.dc_auto_turnover.GetDailyStock(sku, warehousecode, DateTime.Now.AddDays(-7).ToDayHome());
//可用库存 //可用库存
var inventory = DB.dc_auto_turnover.GetAutoInventoryBySkuWH(sku, warehousecode); var inventory = DB.dc_auto_turnover.GetAutoInventoryBySkuWH(sku, warehousecode);
...@@ -49,6 +52,26 @@ namespace AutoTurnOver.Services ...@@ -49,6 +52,26 @@ namespace AutoTurnOver.Services
var shortsupply = DB.dc_auto_turnover.GetAutoShortSupplyBySkuWH(sku, warehousecode); var shortsupply = DB.dc_auto_turnover.GetAutoShortSupplyBySkuWH(sku, warehousecode);
if (sales.inventory_details!=null)
{
var tempinventory_details_list = sales.inventory_details.ToObj<List<decimal>>();
var tempinventory_details_list2 = sales.inventory_details.ToObj<List<decimal>>();
var i = 7;
foreach (var item in tempinventory_details_list)
{
if (i >= 1)
{
var this_date = DateTime.Now.AddDays(0 - i);
tempinventory_details_list2[7-i] = (dailyStock.FirstOrDefault(s => this_date.Year == s.record_time.Year && this_date.Month == s.record_time.Month && this_date.Day == s.record_time.Day) ?? new dc_daily_stock_dto()).usable_stock;
}
i--;
}
sales.inventory_details = tempinventory_details_list2.Select(s => (int)Math.Ceiling(s)).ToJson();
}
list.Add(sales != null ? sales.sales_details.ToObj<List<decimal>>().Select(s => (int)Math.Ceiling(s)).ToJson() : "[]"); list.Add(sales != null ? sales.sales_details.ToObj<List<decimal>>().Select(s => (int)Math.Ceiling(s)).ToJson() : "[]");
list.Add(sales != null&& (!string.IsNullOrWhiteSpace(sales.sales_details_formula)) ? sales.sales_details_formula.ToObj<List<string>>().Select(s => s).ToJson() : "[]"); list.Add(sales != null&& (!string.IsNullOrWhiteSpace(sales.sales_details_formula)) ? sales.sales_details_formula.ToObj<List<string>>().Select(s => s).ToJson() : "[]");
list.Add(sales != null ? sales.sales_explain_details.Replace("[", "").Replace("]", "").Split(',').ToJson() : "[]"); list.Add(sales != null ? sales.sales_explain_details.Replace("[", "").Replace("]", "").Split(',').ToJson() : "[]");
...@@ -609,6 +632,31 @@ namespace AutoTurnOver.Services ...@@ -609,6 +632,31 @@ namespace AutoTurnOver.Services
return datas; return datas;
} }
public List<dynamic> GetSkuWarehouseSales(bailun_sku_website_sales_search_dto search_data)
{
var order_list = report.GetSkuWarehouseSales(search_data);
List<dynamic> datas = new List<dynamic>();
foreach (var item in order_list)
{
dynamic o = new ExpandoObject();
o.label = item.label;
o.warehouse_name = item.warehouse_name;
o.warehouse_code = item.warehouse_code;
foreach (var dat_item in item.days)
{
var dic = (IDictionary<string, object>)o;
dic["count_" + (dat_item.month + "-" + dat_item.day)] = new { val = Math.Round(dat_item.count, 2), year = dat_item.year, month = dat_item.month, day = dat_item.day };
dic["v_count_" + (dat_item.month + "-" + dat_item.day)] = Math.Round(dat_item.count, 2);
dic["sum_" + (dat_item.month + "-" + dat_item.day)] = Math.Round(dat_item.sum,2);
dic["v_sum_" + (dat_item.month + "-" + dat_item.day)] = Math.Round(dat_item.sum,2);
}
datas.Add(o);
}
return datas;
}
public MemoryStream SkuWebsiteSalesExport(bailun_sku_website_sales_detailed_search_dto search_data,UserData user) public MemoryStream SkuWebsiteSalesExport(bailun_sku_website_sales_detailed_search_dto search_data,UserData user)
{ {
......
...@@ -12,6 +12,7 @@ using AutoTurnOver.Utility; ...@@ -12,6 +12,7 @@ using AutoTurnOver.Utility;
using Dapper; using Dapper;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using AutoTurnOver.Utility;
namespace AutoTurnOver.Controllers namespace AutoTurnOver.Controllers
{ {
...@@ -40,6 +41,78 @@ namespace AutoTurnOver.Controllers ...@@ -40,6 +41,78 @@ namespace AutoTurnOver.Controllers
}); });
} }
public FileResult ExportView(DateTime? btime, DateTime? etime, string platform_type, string web_site, string bailun_sku, string warehouse_code)
{
report_cash_flow_view_search_dto search_data = new report_cash_flow_view_search_dto
{
etime = etime,
btime = btime,
web_site = web_site,
platform_type = platform_type,
warehouse_code = warehouse_code,
bailun_sku = bailun_sku
};
var e_btime = DateTime.Now.AddDays(-8).ToDayHome();
var e_etime = DateTime.Now.AddDays(-1).ToDayEnd();
if (search_data.btime != null)
{
e_btime = search_data.btime.Value.ToDayHome();
}
if (search_data.etime != null)
{
e_etime = search_data.etime.Value.ToDayEnd();
}
var list = new CashFlowServices().GetView(search_data);
DataTable table = new DataTable();
string[] cols = new string[] { "类型", "汇总-发生", "汇总-支付"};
foreach (var item in cols)
{
table.Columns.Add(item);
}
var col_this_date =e_etime;
while (col_this_date.ToDayHome()> e_btime.ToDayHome())
{
table.Columns.Add($"{col_this_date.ToString("MM-dd")}-发生");
table.Columns.Add($"{col_this_date.ToString("MM-dd")}-支付");
col_this_date = col_this_date.AddDays(-1);
}
foreach (var itemDataD in list)
{
DataRow row = table.NewRow();
var itemData = (IDictionary<string, object>)itemDataD;
row["类型"] = itemData["date_type_str"];
row["汇总-发生"] = itemData["v_occur_汇总"];
row["汇总-支付"] = itemData["v_pay_汇总"];
var row_this_date = e_etime;
while (row_this_date.ToDayHome() > e_btime.ToDayHome())
{
row[$"{row_this_date.ToString("MM-dd")}-发生"] =itemData["v_occur_" + $"{row_this_date.Month}-{row_this_date.Day}"];
row[$"{row_this_date.ToString("MM-dd")}-支付"] =itemData["v_pay_" + $"{row_this_date.Month}-{row_this_date.Day}"];
row_this_date = row_this_date.AddDays(-1);
}
table.Rows.Add(row);
}
var fileName = AppContext.BaseDirectory + @"Result\RealtimeStock\现金流报表.csv";
DataTableHelper.SaveCSV(table, fileName);
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return File(memory, "text/csv", "现金流报表.csv");
}
public FileResult Export(DateTime? btime, DateTime? etime, string bailun_sku, string data_type = null, int? type = null, string platform_type = null, string warehouse_code = null, string web_site = "", int? view_type = 1) public FileResult Export(DateTime? btime, DateTime? etime, string bailun_sku, string data_type = null, int? type = null, string platform_type = null, string warehouse_code = null, string web_site = "", int? view_type = 1)
{ {
var m = new dc_report_cash_flow_log_export_page_search_dto var m = new dc_report_cash_flow_log_export_page_search_dto
...@@ -121,7 +194,8 @@ namespace AutoTurnOver.Controllers ...@@ -121,7 +194,8 @@ namespace AutoTurnOver.Controllers
warehouse_code = warehousecode, warehouse_code = warehousecode,
monitor_status = monitor_status, monitor_status = monitor_status,
warehousearea = warehousearea, warehousearea = warehousearea,
warehousetype = warehousetype warehousetype = warehousetype,
is_sum = false
}; };
var services = new CashFlowServices(); var services = new CashFlowServices();
var page_data = services.SkuView(m); var page_data = services.SkuView(m);
...@@ -142,6 +216,105 @@ namespace AutoTurnOver.Controllers ...@@ -142,6 +216,105 @@ namespace AutoTurnOver.Controllers
} }
public JsonResult SkuViewSumFooter(int? data_type, string sku_label, string bailun_sku, int offset, int limit, string order, string sort, string buyer_name, string warehousecode, string supplier_name, string warehousetype, int? warehousearea, int? monitor_status = null, string product_type = null)
{
var m = new dc_report_cash_flow_sku_group_search_dto
{
bailun_sku = bailun_sku,
page = 1,
rows = 1,
sidx = sort,
sord = order,
buyer_name = buyer_name,
sku_label = string.IsNullOrWhiteSpace(sku_label) ? null : WebUtility.UrlDecode(sku_label),
data_type = data_type,
supplier_name = supplier_name,
product_type = product_type,
warehouse_code = warehousecode,
monitor_status = monitor_status,
warehousearea = warehousearea,
warehousetype = warehousetype,
is_sum = true
};
var services = new CashFlowServices();
var list = services.SkuView(m);
return new JsonResult(list == null || list.Items.Count <= 0 ? new dc_report_cash_flow_sku_group_dto() : list.Items[0]);
}
public FileResult ExportSkuView(int? data_type, string sku_label, string bailun_sku, int offset, int limit, string order, string sort, string buyer_name, string warehousecode, string supplier_name, string warehousetype, int? warehousearea, int? monitor_status = null, string product_type = null)
{
var m = new dc_report_cash_flow_sku_group_search_dto
{
bailun_sku = bailun_sku,
page = 1,
rows = int.MaxValue,
sidx = sort,
sord = order,
buyer_name = buyer_name,
sku_label = string.IsNullOrWhiteSpace(sku_label) ? null : WebUtility.UrlDecode(sku_label),
data_type = data_type,
supplier_name = supplier_name,
product_type = product_type,
warehouse_code = warehousecode,
monitor_status = monitor_status,
warehousearea = warehousearea,
warehousetype = warehousetype
};
var services = new CashFlowServices();
var list = services.SkuView(m).Items;
DataTable table = new DataTable();
string[] cols = new string[] { "sku","仓库编码","仓库名称","名称","累计值","本月结余","本月正数","本月负数","上月结余","上月正数","上月负数","采购员","可用库存"
,"可用库存金额","在途数量","在途金额","7日日均","14日日均","30日日均","停售状态"
};
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.warehouse_code;
row["仓库名称"] = itemData.warehouse_name;
row["名称"] = itemData.sku_name;
row["累计值"] = itemData.balance;
row["本月结余"] = itemData.current_balance;
row["本月正数"] = itemData.current_income;
row["本月负数"] = itemData.current_expend;
row["上月结余"] = itemData.last_balance;
row["上月正数"] = itemData.last_income;
row["上月负数"] = itemData.last_expend;
row["采购员"] = itemData.buyer_name;
row["可用库存"] = itemData.usable_stock;
row["可用库存金额"] = itemData.stock_amount;
row["在途数量"] = itemData.on_the_way;
row["在途金额"] = itemData.on_the_way_amount;
row["7日日均"] = itemData.history_sevenday_sales;
row["14日日均"] = itemData.history_fourteenday_sales;
row["30日日均"] = itemData.history_thirtyday_sales;
row["停售状态"] = itemData.sku_status==1? "停售" : "在售";
table.Rows.Add(row);
}
var fileName = AppContext.BaseDirectory + @"Result\RealtimeStock\现金流明细.csv";
DataTableHelper.SaveCSV(table, fileName);
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return File(memory, "text/csv", "现金流明细.csv");
}
[HttpGet] [HttpGet]
public JsonResult LogPage(int limit, int offset, string order, string sort, DateTime? btime, DateTime? etime, string bailun_sku, string data_type = null, int? type = null, string platform_type = null, string warehouse_code = null, string web_site = "", int? view_type = 1) public JsonResult LogPage(int limit, int offset, string order, string sort, DateTime? btime, DateTime? etime, string bailun_sku, string data_type = null, int? type = null, string platform_type = null, string warehouse_code = null, string web_site = "", int? view_type = 1)
{ {
......
...@@ -302,7 +302,7 @@ namespace AutoTurnOver.Controllers ...@@ -302,7 +302,7 @@ namespace AutoTurnOver.Controllers
DataTable table = new DataTable(); DataTable table = new DataTable();
string[] cols = new string[] { "缺货统计时间", "平台订单号", "平台类型", "百伦订单号", "付款交易号", "站点", "付款时间", "销售账号","国家","sku","订单所有itemid", string[] cols = new string[] { "缺货统计时间", "平台订单号", "平台类型", "百伦订单号", "付款交易号", "站点", "付款时间", "销售账号","国家","sku","订单所有itemid",
"产品名称", "订单sku销量", "发货数量","发货仓库编码","发货仓库", "是否缺货", "仓库总缺货", "国内仓总缺货", "其他有库存仓库", "其他仓库库存数","国内仓是否缺货","采购员", "产品名称", "订单sku销量", "发货数量","发货仓库编码","发货仓库", "是否缺货", "仓库总缺货", "国内仓总缺货", "其他有库存仓库", "其他仓库库存数","国内仓是否缺货","采购员",
"平台物流方式", "发货物流方式", "sku监控状态", "销售状态", "总在途库存数", "最先到货采购单","最快到货时间","采购单供应商","采购单阿里巴巴单号","采购单物流单号","品牌" "平台物流方式", "发货物流方式", "sku监控状态", "销售状态", "总在途库存数", "最先到货采购单","最快到货时间","采购单供应商","采购单阿里巴巴单号","采购单物流单号","品牌","订单最后发货时间"
}; };
foreach (var item in cols) foreach (var item in cols)
{ {
...@@ -347,6 +347,7 @@ namespace AutoTurnOver.Controllers ...@@ -347,6 +347,7 @@ namespace AutoTurnOver.Controllers
row["采购单阿里巴巴单号"] = itemData.min_buy.alibaba_order_id; row["采购单阿里巴巴单号"] = itemData.min_buy.alibaba_order_id;
row["采购单物流单号"] = itemData.min_buy.logistics_order_id; row["采购单物流单号"] = itemData.min_buy.logistics_order_id;
row["品牌"] = itemData.brand; row["品牌"] = itemData.brand;
row["订单最后发货时间"] = itemData.shipping_deadline_real;
table.Rows.Add(row); table.Rows.Add(row);
} }
...@@ -650,8 +651,100 @@ namespace AutoTurnOver.Controllers ...@@ -650,8 +651,100 @@ namespace AutoTurnOver.Controllers
total = 0, total = 0,
}); });
} }
public JsonResult GetSkuWarehouseSales(string platform_type,string warehousetype, int? warehousearea, string warehousecode,DateTime? btime,DateTime? etime)
{
bailun_sku_website_sales_search_dto search_data = new bailun_sku_website_sales_search_dto {
platform_type = platform_type,
warehousetype = warehousetype,
etime = etime,
btime = btime,
warehousearea =warehousearea,
warehouse_code = warehousecode
};
public FileResult SkuWebsiteSalesExport(string platform_type,string label,string website,int? year,int? month,int? day) var list = new ReportServices().GetSkuWarehouseSales(search_data);
return new JsonResult(new
{
rows = list,
total = 0,
});
}
public FileResult ExportTableSkuWarehouse(string platform_type, string warehousetype, int? warehousearea, string warehousecode, DateTime? btime, DateTime? etime)
{
bailun_sku_website_sales_search_dto search_data = new bailun_sku_website_sales_search_dto
{
platform_type = platform_type,
warehousetype = warehousetype,
etime = etime,
btime = btime,
warehousearea = warehousearea,
warehouse_code = warehousecode
};
var e_btime = DateTime.Now.AddDays(-8).ToDayHome();
var e_etime = DateTime.Now.AddDays(-1).ToDayEnd();
if (search_data.btime != null)
{
e_btime = search_data.btime.Value.ToDayHome();
}
if (search_data.etime != null)
{
e_etime = search_data.etime.Value.ToDayEnd();
}
var list = new ReportServices().GetSkuWarehouseSales(search_data);
DataTable table = new DataTable();
string[] cols = new string[] { "分类", "仓库"};
foreach (var item in cols)
{
table.Columns.Add(item);
}
var col_this_date = e_etime;
while (col_this_date.ToDayHome() > e_btime.ToDayHome())
{
table.Columns.Add($"{col_this_date.ToString("MM-dd")}-销量");
table.Columns.Add($"{col_this_date.ToString("MM-dd")}-销售额");
col_this_date = col_this_date.AddDays(-1);
}
foreach (var itemDataD in list)
{
DataRow row = table.NewRow();
var itemData = (IDictionary<string, object>)itemDataD;
row["分类"] = itemData["label"];
row["仓库"] = itemData["warehouse_name"];
var row_this_date = e_etime;
while (row_this_date.ToDayHome() > e_btime.ToDayHome())
{
row[$"{row_this_date.ToString("MM-dd")}-销量"] = itemData["v_count_" + $"{row_this_date.Month}-{row_this_date.Day}"];
row[$"{row_this_date.ToString("MM-dd")}-销售额"] = itemData["v_sum_" + $"{row_this_date.Month}-{row_this_date.Day}"];
row_this_date = row_this_date.AddDays(-1);
}
table.Rows.Add(row);
}
var fileName = AppContext.BaseDirectory + @"Result\RealtimeStock\商品汇总_仓库.csv";
DataTableHelper.SaveCSV(table, fileName);
var memory = new MemoryStream();
using (var stream = new FileStream(fileName, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0;
return File(memory, "text/csv", "商品汇总_仓库.csv");
}
public FileResult SkuWebsiteSalesExport(string platform_type,string label,string website,string warehouse_code, int? year,int? month,int? day)
{ {
var user = AutoUtility.GetUser(); var user = AutoUtility.GetUser();
var memory = new ReportServices().SkuWebsiteSalesExport(new bailun_sku_website_sales_detailed_search_dto { var memory = new ReportServices().SkuWebsiteSalesExport(new bailun_sku_website_sales_detailed_search_dto {
...@@ -660,6 +753,7 @@ namespace AutoTurnOver.Controllers ...@@ -660,6 +753,7 @@ namespace AutoTurnOver.Controllers
month = month??0, month = month??0,
platform_type = platform_type, platform_type = platform_type,
website =website, website =website,
warehouse_code = warehouse_code,
year = year??0 year = year??0
}, AutoUtility.GetUser()); }, AutoUtility.GetUser());
return File(memory, "text/csv", $"{user.UserAccount}商品分类数据信息.csv"); return File(memory, "text/csv", $"{user.UserAccount}商品分类数据信息.csv");
...@@ -681,6 +775,25 @@ namespace AutoTurnOver.Controllers ...@@ -681,6 +775,25 @@ namespace AutoTurnOver.Controllers
var list = new ReportServices().GetSkuWebsiteSales(search_data); var list = new ReportServices().GetSkuWebsiteSales(search_data);
return new JsonResult(list == null || list.Count <= 0 ? new dc_base_stock_dto() : list[0]); return new JsonResult(list == null || list.Count <= 0 ? new dc_base_stock_dto() : list[0]);
}
public JsonResult GetSkuWarehouseSalesSumFooter(string platform_type,string warehousetype, int? warehousearea, string warehousecode, DateTime? btime, DateTime? etime)
{
bailun_sku_website_sales_search_dto search_data = new bailun_sku_website_sales_search_dto
{
platform_type = platform_type,
warehousetype = warehousetype,
has_sum =true,
etime = etime,
btime = btime,
warehousearea = warehousearea,
warehouse_code = warehousecode
};
var list = new ReportServices().GetSkuWarehouseSales(search_data);
return new JsonResult(list == null || list.Count <= 0 ? new dc_base_stock_dto() : list[0]);
} }
[UseAction] [UseAction]
......
...@@ -13,11 +13,19 @@ namespace ResetOutofstock ...@@ -13,11 +13,19 @@ namespace ResetOutofstock
static async Task Main(string[] args) static async Task Main(string[] args)
{ {
Console.WriteLine("刷新缺货数据任务启动..."); Console.WriteLine("刷新缺货数据任务启动...");
try
{
var now = DateTime.Now;
//report_cash_flow_dao.CalculationTransferOrder(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59")));
//report_cash_flow_dao.SynchroTransferCost();
}
catch (Exception ex)
{
var now = DateTime.Now; throw;
//report_cash_flow_dao.CalculationTransferOrder(now.AddMonths(-3), DateTime.Parse(now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"))); }
var builder = new HostBuilder().ConfigureServices((hostContext, services) => var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{ {
services.AddHostedService<ResetOutofstockBackgrounService>(); services.AddHostedService<ResetOutofstockBackgrounService>();
......
...@@ -95,9 +95,18 @@ namespace ResetOutofstock ...@@ -95,9 +95,18 @@ namespace ResetOutofstock
{ {
try try
{ {
Console.WriteLine($"开始刷新缺货明细数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); var now = DateTime.Now;
report.ResetOutofstock(); if (now.Hour>2 && now.Hour<=8)
Console.WriteLine($"结束刷新缺货明细数据任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); {
Console.WriteLine(" 刷新缺货明细数据 * (数据库忙时,暂停)");
}
else
{
Console.WriteLine($"开始刷新缺货明细数据,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
report.ResetOutofstock();
Console.WriteLine($"结束刷新缺货明细数据任务,线程Id:{Thread.CurrentThread.ManagedThreadId}{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
} }
catch (Exception ex) 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