Commit d9385551 by guanzhenshan

增加数据仓数据生成服务

parent 68f0bf1b
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.Models
{
/// <summary>
/// 数据仓表
/// </summary>
public class dc_datawarehouse
{
/// <summary>
///
/// </summary>
public int id { get; set; }
/// <summary>
/// 仓库类型
/// </summary>
public string warehousetype { get; set; }
/// <summary>
/// 仓库所在国家id
/// </summary>
public int area_id { get; set; }
/// <summary>
/// 仓库所在国家
/// </summary>
public string area_name { get; set; }
/// <summary>
/// 仓库名称
/// </summary>
public string warehousename { get; set; }
/// <summary>
/// 仓库编码
/// </summary>
public string warehouse_code { get; set; }
/// <summary>
///
/// </summary>
public string sku { get; set; }
/// <summary>
/// 分类id
/// </summary>
public int category_id { get; set; }
/// <summary>
/// 分类名称
/// </summary>
public string categoryname { get; set; }
/// <summary>
/// SKU中文名称
/// </summary>
public string skuname { get; set; }
/// <summary>
/// 监控状态,1:正在监控,0:停止监控
/// </summary>
public int monitorstatus { get; set; }
/// <summary>
/// 清货状态,1:正在清货,0:未清货
/// </summary>
public int clearancestatus { get; set; }
/// <summary>
/// 侵权状态:1:已侵权,0:未侵权
/// </summary>
public int tortstatus { get; set; }
/// <summary>
/// Sku标签
/// </summary>
public string str_skutag { get; set; }
/// <summary>
/// 采购价
/// </summary>
public decimal buyprice { get; set; }
/// <summary>
/// 库存数量
/// </summary>
public int usable_stock { get; set; }
/// <summary>
/// 库存金额
/// </summary>
public decimal amount_stock { get; set; }
/// <summary>
/// 采购在途数量
/// </summary>
public int quantity_purchase { get; set; }
/// <summary>
/// 采购在途金额
/// </summary>
public decimal purchase_amount { get; set; }
/// <summary>
/// 调拨在途数量
/// </summary>
public int quantity_transfer { get; set; }
/// <summary>
/// 调拨在途金额
/// </summary>
public decimal amount_transit { get; set; }
/// <summary>
/// 缺货数量
/// </summary>
public int quantity_out_stock { get; set; }
/// <summary>
/// 昨日销量
/// </summary>
public int oneday_total_sales { get; set; }
/// <summary>
/// 昨日销量金额
/// </summary>
public decimal amount_onedaysale { get; set; }
/// <summary>
/// 7日总销量
/// </summary>
public int sevenday_total_sales { get; set; }
/// <summary>
/// 7日总销售额
/// </summary>
public decimal amount_sevendaysale { get; set; }
/// <summary>
/// 14日总销量
/// </summary>
public int fourteenday_total_sales { get; set; }
/// <summary>
/// 30日总销量
/// </summary>
public int thirtyday_total_sales { get; set; }
/// <summary>
/// 近7日日均
/// </summary>
public decimal sevenday_average_sales { get; set; }
/// <summary>
/// 近14日日均
/// </summary>
public decimal fourteenday_average_sales { get; set; }
/// <summary>
/// 近30日日均
/// </summary>
public decimal thirtyday_average_sales { get; set; }
/// <summary>
/// sku开发时间
/// </summary>
public DateTime skucreatetime { get; set; }
/// <summary>
/// 数据更新时间
/// </summary>
public DateTime lastupdatetime { get; set; }
}
}
......@@ -183,6 +183,7 @@ namespace Bailun.DC.Services
sqlparams.Add("groupname", groupname);
}
sql += " ";
var ordersql = "";
if (!string.IsNullOrEmpty(request.sort))
{
......
<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.Models\Bailun.DC.Models.csproj" />
</ItemGroup>
</Project>
FROM microsoft/dotnet:2.1-runtime AS base
WORKDIR /app
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY Bailun.DC.SkuDataWareHouse/Bailun.DC.SkuDataWareHouse.csproj Bailun.DC.SkuDataWareHouse/
COPY Bailun.DC.Common/Bailun.DC.Common.csproj Bailun.DC.Common/
COPY Bailun.DC.Models/Bailun.DC.Models.csproj Bailun.DC.Models/
RUN dotnet restore Bailun.DC.SkuDataWareHouse/Bailun.DC.SkuDataWareHouse.csproj
COPY . .
WORKDIR /src/Bailun.DC.SkuDataWareHouse
RUN dotnet build Bailun.DC.SkuDataWareHouse.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Bailun.DC.SkuDataWareHouse.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Bailun.DC.SkuDataWareHouse.dll"]
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading.Tasks;
namespace Bailun.DC.SkuDataWareHouse
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("进入 数据仓生成服务");
var builder = new HostBuilder().ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Services>();
});
await builder.RunConsoleAsync();
}
//static void Main(string[] args)
//{
// Console.WriteLine("运行成功!");
// new Services().Save();
//}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Dapper;
using MySql.Data.MySqlClient;
using Bailun.DC.Common;
using Bailun.DC.Models;
using System.Threading.Tasks;
using System.Threading;
using Microsoft.Extensions.Hosting;
namespace Bailun.DC.SkuDataWareHouse
{
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 == 4 && now.Minute == 1)
{
Save();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void 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_datawarehouse;", 5 * 60);
var page = 1;
var pagesize = 8000;
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 t2.hq_type as warehousetype,t2.warehouse_name as warehousename,t2.warehouse_code,t1.bailun_sku as sku,t1.category_id,t1.category_name,t1.sku_title_cn as skuname,(case when t4.status=0 then 1 else 2 end) monitorstatus,t5.clearancestatus,t5.tortstatus,t5.str_skutag,t1.unit_price as buyprice,t1.usable_stock,(t1.usable_stock*t1.unit_price) amount_stock,t6.quantity_purchase,(t6.quantity_purchase*t1.unit_price) as purchase_amount,t6.quantity_transfer,(t6.quantity_transfer*t1.unit_price) amount_transit,t6.quantity_out_stock,t7.oneday_total_sales,(t7.oneday_total_sales*t1.unit_price) as amount_onedaysale,t7.sevenday_total_sales,(t7.sevenday_total_sales*t1.unit_price) amount_sevendaysale,t7.fourteenday_total_sales,t7.thirtyday_total_sales,t7.sevenday_average_sales,t7.fourteenday_average_sales,t7.thirtyday_average_sales,t1.create_time as skucreatetime,t2.area_id,t2.area_name
from (select t01.bailun_sku,t01.warehouse_code,t01.usable_stock,t02.unit_price,t02.create_time,t02.category_id,t02.category_name,t02.sku_title_cn 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_base_warehouse t2 on t1.warehouse_code=t2.warehouse_code
left join dc_auto_config_sku_warehouse t4 on t4.bailun_sku=t1.bailun_sku and t4.warehouse_code=t1.warehouse_code
left join dc_sku_monitor t5 on t5.sku=t1.bailun_sku and t5.warehousecode=t1.warehouse_code
left join dc_mid_transit t6 on t1.bailun_sku=t6.bailun_sku and t1.warehouse_code=t6.warehouse_code
left join dc_daily_sales t7 on t7.record_date = DATE_SUB(curdate(),INTERVAL 1 DAY) and t1.bailun_sku=t7.bailun_sku and t7.warehouse_code=t1.warehouse_code";
var liststock = cn.Query<Models.dc_datawarehouse>(sql, null, null, true, 30 * 60);
resultcount = liststock.AsList().Count;
var str = @"insert dc_datawarehouse (warehousetype,area_id,area_name,warehousename,warehouse_code,sku,category_id,categoryname,skuname,monitorstatus,clearancestatus,tortstatus,str_skutag,buyprice,usable_stock,amount_stock,quantity_purchase,purchase_amount,quantity_transfer,amount_transit,quantity_out_stock,oneday_total_sales,amount_onedaysale,sevenday_total_sales,amount_sevendaysale,fourteenday_total_sales,thirtyday_total_sales,sevenday_average_sales,fourteenday_average_sales,thirtyday_average_sales,skucreatetime,lastupdatetime) values ";
foreach (var item in liststock)
{
str += $@"('{item.warehousetype}','{item.area_id}','{item.area_name}','{item.warehousename}','{item.warehouse_code}','{item.sku}',{item.category_id},'{(!string.IsNullOrEmpty(item.categoryname) ? item.categoryname.Replace("'", "") : "")}','{item.skuname.Replace("'", "")}',{item.monitorstatus},{item.clearancestatus},{item.tortstatus},'{item.str_skutag}',{item.buyprice},{item.usable_stock},{item.amount_stock},{item.quantity_purchase},{item.purchase_amount},{item.quantity_transfer},{item.amount_transit},{item.quantity_out_stock},{item.oneday_total_sales},{item.amount_onedaysale},{item.sevenday_total_sales},{item.amount_sevendaysale},{item.fourteenday_total_sales},{item.thirtyday_total_sales},{item.sevenday_average_sales},{item.fourteenday_average_sales},{item.thirtyday_average_sales},'{item.skucreatetime.ToString("yyyy-MM-dd HH:mm:ss")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}'),";
}
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"));
}
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") +" 运行失败,异常信息:"+ex.Message);
}
}
}
}
......@@ -15,17 +15,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows Console", "Windows
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.SaveSkuDeliverWeighDiff", "Bailun.DC.SaveSkuDeliverWeighDiff\Bailun.DC.SaveSkuDeliverWeighDiff.csproj", "{75536DAE-6ADD-463C-954E-55C95A991293}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SkuWHRedundancyService", "SkuWHRedundancyService\SkuWHRedundancyService.csproj", "{070FDDD3-6461-4A06-B8E2-4E099B51D11B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkuWHRedundancyService", "SkuWHRedundancyService\SkuWHRedundancyService.csproj", "{070FDDD3-6461-4A06-B8E2-4E099B51D11B}"
EndProject
Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{4D94867E-FE5E-41EF-A6DD-EAA47A96269F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.Common", "Bailun.DC.Common\Bailun.DC.Common.csproj", "{E065C258-1730-494F-81C7-45CCD3523A2D}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.Common", "Bailun.DC.Common\Bailun.DC.Common.csproj", "{E065C258-1730-494F-81C7-45CCD3523A2D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SaveWHSalesService", "Bailun.DC.SaveWHSalesService\Bailun.DC.SaveWHSalesService.csproj", "{121E5FDF-0CE9-46A3-BE01-D638B7275213}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "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}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.LogicWareHouse", "Bailun.DC.LogicWareHouse\Bailun.DC.LogicWareHouse.csproj", "{75782F98-28B6-4618-BAF2-56C68846CC92}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SkuProfitService", "Bailun.DC.SkuProfitService\Bailun.DC.SkuProfitService.csproj", "{91F08169-1D64-479B-B877-88FCBDDDE90B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Bailun.DC.SkuProfitService", "Bailun.DC.SkuProfitService\Bailun.DC.SkuProfitService.csproj", "{91F08169-1D64-479B-B877-88FCBDDDE90B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SkuDataWareHouse", "Bailun.DC.SkuDataWareHouse\Bailun.DC.SkuDataWareHouse.csproj", "{FAB2A012-44D0-42D0-9EAD-1798D8332B66}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
......@@ -77,6 +79,10 @@ Global
{91F08169-1D64-479B-B877-88FCBDDDE90B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{91F08169-1D64-479B-B877-88FCBDDDE90B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{91F08169-1D64-479B-B877-88FCBDDDE90B}.Release|Any CPU.Build.0 = Release|Any CPU
{FAB2A012-44D0-42D0-9EAD-1798D8332B66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAB2A012-44D0-42D0-9EAD-1798D8332B66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAB2A012-44D0-42D0-9EAD-1798D8332B66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAB2A012-44D0-42D0-9EAD-1798D8332B66}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -87,6 +93,7 @@ Global
{121E5FDF-0CE9-46A3-BE01-D638B7275213} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{75782F98-28B6-4618-BAF2-56C68846CC92} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{91F08169-1D64-479B-B877-88FCBDDDE90B} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{FAB2A012-44D0-42D0-9EAD-1798D8332B66} = {AE2CE86A-8538-4142-920F-684DCF47C064}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6E53AF28-A282-4FB0-A769-EAEA9769C02A}
......
......@@ -27,3 +27,10 @@ services:
context: .
dockerfile: Bailun.DC.SkuProfitService/Dockerfile
bailun.dc.skudatawarehouse:
image: ${DOCKER_REGISTRY}bailundcskudatawarehouse
build:
context: .
dockerfile: Bailun.DC.SkuDataWareHouse/Dockerfile
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