Commit abea2aff by guanzhenshan

增加 每日同步SKU仓库库存+销量统计信息

parent 7c95cd06
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="1.60.6" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.2.0" />
<PackageReference Include="MySql.Data" Version="8.0.16" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" />
<ProjectReference Include="..\Bailun.DC.DB\Bailun.DC.DB.csproj" />
<ProjectReference Include="..\Bailun.DC.Models\Bailun.DC.Models.csproj" />
</ItemGroup>
</Project>
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading.Tasks;
namespace Bailun.DC.LogicWareHouse
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("进入 每日同步SKU仓库库存+销量统计信息");
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
await builder.RunConsoleAsync();
}
//static void Main(string[] args)
//{
// //Console.WriteLine("Hello World!");
// new Services().Save();
//}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using Bailun.DC.Models;
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
namespace Bailun.DC.LogicWareHouse
{
public class Services : BackgroundService
{
private Timer _timer;
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(1));
return Task.CompletedTask;
}
private void DoWork(object state)
{
try
{
var now = DateTime.Now;
if (now.Hour == 0 && now.Minute == 30)
{
Save();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public bool Save()
{
Console.WriteLine("进去方法," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
try
{
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
cn.Execute("delete from dc_skuwarehouse_stock_sales", 20 * 60);
var page = 1;
var pagesize = 5000;
var listcount = cn.QueryFirstOrDefault<int>("select count(id) from dc_base_stock");
var resultcount = 0;
while (page == 1 || (resultcount == pagesize && resultcount != 0))
{
var strlimit = (((page - 1) * pagesize) + "," + pagesize);
var sql = $@"select t1.bailun_sku,t1.warehouse_code,t4.warehouse_name,t4.hq_type,(t1.usable_stock) usable_stock,(t1.usable_stock*t1.unit_price) amount_stock,(t2.quantity_purchase) quantity_purchase,(t2.quantity_purchase*t1.unit_price) purchase_amount,(t2.quantity_transfer) quantity_transfer,(t2.quantity_transfer*t1.unit_price) amount_transit,(t5.oneday_total_sales) oneday_total_sales,(t5.oneday_total_sales*t1.unit_price) amount_onedaysale,(t5.sevenday_total_sales) sevenday_total_sales,(t5.fourteenday_total_sales) fourteenday_total_sales,(t5.thirtyday_total_sales) thirtyday_total_sales
from (select t01.bailun_sku,t01.warehouse_code,t01.usable_stock,t02.unit_price from dc_base_stock t01
join dc_base_sku t02 on t01.bailun_sku=t02.bailun_sku and t02.company_id=1
limit {strlimit}) t1
left join dc_mid_transit t2 on t1.warehouse_code=t2.warehouse_code and t1.bailun_sku=t2.bailun_sku
left join dc_daily_sales t5 on t5.record_date = '{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' and t1.warehouse_code=t5.warehouse_code and t1.bailun_sku =t5.bailun_sku
join dc_base_warehouse t4 on t1.warehouse_code=t4.warehouse_code";
var liststock = cn.Query<Models.Warehouse.dc_skuwarehouse_stock_sales>(sql, null, null, true, 30 * 60);
resultcount = liststock.AsList().Count;
var str = @"insert dc_skuwarehouse_stock_sales (bailun_sku,warehouse_code,warehouse_name,hq_type,usable_stock,amount_stock,quantity_purchase,purchase_amount,quantity_transfer,amount_transit,oneday_total_sales,amount_onedaysale,sevenday_total_sales,fourteenday_total_sales,thirtyday_total_sales) values ";
foreach (var item in liststock)
{
str += $@"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.hq_type}',{item.usable_stock ?? 0},{item.amount_stock ?? 0},{(item.quantity_purchase ?? 0)},{item.purchase_amount ?? 0},{item.quantity_transfer ?? 0},{item.amount_transit ?? 0},{(item.oneday_total_sales ?? 0)},{item.amount_onedaysale ?? 0},{item.sevenday_total_sales ?? 0},{item.fourteenday_total_sales ?? 0},{item.thirtyday_total_sales ?? 0}),";
}
if (resultcount > 0)
{
str = str.Substring(0, str.Length - 1);
cn.Execute(str, null, null, 5 * 60);
Console.WriteLine("当前页:" + page + ",每页记录:" + pagesize + ";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
page++;
}
Console.WriteLine("成品运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//半成品
var result = SemiStock(cn);
return true;
}
}
catch (Exception ex)
{
Console.WriteLine("出现异常:" + ex.Message);
return false;
}
}
/// <summary>
/// 半成品
/// </summary>
/// <returns></returns>
private bool SemiStock(MySqlConnection cn)
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
var page = 1;
var pagesize = 5000;
var listcount = cn.QueryFirstOrDefault<int>("select count(id) from dc_semi_daily_stock where `day`= '"+DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")+"'");
var resultcount = 0;
while (page == 1 || (resultcount == pagesize && resultcount != 0))
{
var strlimit = (((page - 1) * pagesize) + "," + pagesize);
var sql = $@"select sku_code as bailun_sku,warehouse_id as warehouse_code,warehouse_name,'半成品仓' as hq_type,stock_quantity as usable_stock,inventory_amount as amount_stock from dc_semi_daily_stock where `day`= '{DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")}' limit "+strlimit;
var liststock = cn.Query<Models.Warehouse.dc_skuwarehouse_stock_sales>(sql, null, null, true, 30 * 60);
resultcount = liststock.AsList().Count;
var str = @"insert dc_skuwarehouse_stock_sales (bailun_sku,warehouse_code,warehouse_name,hq_type,usable_stock,amount_stock,quantity_purchase,purchase_amount,quantity_transfer,amount_transit,oneday_total_sales,amount_onedaysale,sevenday_total_sales,fourteenday_total_sales,thirtyday_total_sales) values ";
foreach (var item in liststock)
{
str += $@"('{item.bailun_sku}','{item.warehouse_code}','{item.warehouse_name}','{item.hq_type}',{item.usable_stock ?? 0},{item.amount_stock ?? 0},{(item.quantity_purchase ?? 0)},{item.purchase_amount ?? 0},{item.quantity_transfer ?? 0},{item.amount_transit ?? 0},{(item.oneday_total_sales ?? 0)},{item.amount_onedaysale ?? 0},{item.sevenday_total_sales ?? 0},{item.fourteenday_total_sales ?? 0},{item.thirtyday_total_sales ?? 0}),";
}
if (resultcount > 0)
{
str = str.Substring(0, str.Length - 1);
cn.Execute(str, null, null, 5 * 60);
Console.WriteLine("当前页:" + page + ",每页记录:" + pagesize + ";" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
page++;
}
Console.WriteLine("半成品 运行成功,时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
return true;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models.Warehouse
{
public class dc_skuwarehouse_stock_sales
{
public int id { get; set; }
public string bailun_sku { get; set; }
public string warehouse_code { get; set; }
public string warehouse_name { get; set; }
public string hq_type { get; set; }
public int? usable_stock { get; set; }
public decimal? amount_stock { get; set; }
public int? quantity_purchase { get; set; }
public decimal? purchase_amount { get; set; }
public int? quantity_transfer { get; set; }
public decimal? amount_transit { get; set; }
public int? oneday_total_sales { get; set; }
public decimal? amount_onedaysale { get; set; }
public int? sevenday_total_sales { get; set; }
public int? fourteenday_total_sales { get; set; }
public int? thirtyday_total_sales { get; set; }
public DateTime? createtime { get; set; }
}
}
......@@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.Common", "Bailun.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SaveWHSalesService", "Bailun.DC.SaveWHSalesService\Bailun.DC.SaveWHSalesService.csproj", "{121E5FDF-0CE9-46A3-BE01-D638B7275213}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.LogicWareHouse", "Bailun.DC.LogicWareHouse\Bailun.DC.LogicWareHouse.csproj", "{75782F98-28B6-4618-BAF2-56C68846CC92}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
......@@ -65,6 +67,10 @@ Global
{121E5FDF-0CE9-46A3-BE01-D638B7275213}.Debug|Any CPU.Build.0 = Debug|Any CPU
{121E5FDF-0CE9-46A3-BE01-D638B7275213}.Release|Any CPU.ActiveCfg = Release|Any CPU
{121E5FDF-0CE9-46A3-BE01-D638B7275213}.Release|Any CPU.Build.0 = Release|Any CPU
{75782F98-28B6-4618-BAF2-56C68846CC92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{75782F98-28B6-4618-BAF2-56C68846CC92}.Debug|Any CPU.Build.0 = Debug|Any CPU
{75782F98-28B6-4618-BAF2-56C68846CC92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75782F98-28B6-4618-BAF2-56C68846CC92}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -73,6 +79,7 @@ Global
{75536DAE-6ADD-463C-954E-55C95A991293} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{070FDDD3-6461-4A06-B8E2-4E099B51D11B} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{121E5FDF-0CE9-46A3-BE01-D638B7275213} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{75782F98-28B6-4618-BAF2-56C68846CC92} = {AE2CE86A-8538-4142-920F-684DCF47C064}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6E53AF28-A282-4FB0-A769-EAEA9769C02A}
......
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