Commit f80b7a72 by guanzhenshan

增加同步半成品库存、销量、发货情况的数据

parent 2cbf94f5
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Bailun.DC.Common\Bailun.DC.Common.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.0.35" />
<PackageReference Include="Dapper.SimpleCRUD" Version="2.2.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.7" />
<PackageReference Include="MySql.Data" Version="8.0.21" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
</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.SemiSkuWarehouseSales/Bailun.DC.SemiSkuWarehouseSales.csproj Bailun.DC.SemiSkuWarehouseSales/
COPY Bailun.DC.Common/Bailun.DC.Common.csproj Bailun.DC.Common/
RUN dotnet restore Bailun.DC.SemiSkuWarehouseSales/Bailun.DC.SemiSkuWarehouseSales.csproj
COPY . .
WORKDIR /src/Bailun.DC.SemiSkuWarehouseSales
RUN dotnet build Bailun.DC.SemiSkuWarehouseSales.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish Bailun.DC.SemiSkuWarehouseSales.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Bailun.DC.SemiSkuWarehouseSales.dll"]
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.SemiSkuWarehouseSales.Models
{
public class dc_semi_stock_sales_shipping
{
public int id { get; set; }
public int material_id { get; set; }
public int material_data_center { get; set; }
public string sku { get; set; }
public decimal redundancy_stock { get; set; }
public string warehouse_name { get; set; }
public string sku_name { get; set; }
public int warehouse_id { get; set; }
public decimal buyer_price { get; set; }
public decimal stock { get; set; }
public decimal stock_amount { get; set; }
public decimal on_the_way_count { get; set; }
public decimal on_the_way_amount { get; set; }
public decimal need_quantity { get; set; }
public decimal out_of_stock { get; set; }
public decimal sales_1 { get; set; }
public decimal sales_7 { get; set; }
public decimal sales_14 { get; set; }
public decimal sales_30 { get; set; }
public decimal stock_amount_1 { get; set; }
public decimal out_stock_30 { get; set; }
public decimal put_stock_30 { get; set; }
public int available_days { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Bailun.DC.SemiSkuWarehouseSales.Models
{
public class mResponse
{
public bool success { get; set; }
public ResponseData data {get;set;}
public string message { get; set; }
}
public class ResponseData
{
public int CurrentPage { get; set; }
public int TotalPages { get; set; }
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public List<ItemData> Items { get; set; }
}
public class ItemData
{
public int material_id { get; set; }
public int material_data_center { get; set; }
public string sku { get; set; }
public decimal redundancy_stock { get; set; }
public string warehouse_name { get; set; }
public string sku_name { get; set; }
public int warehouse_id { get; set; }
public decimal buyer_price { get; set; }
public decimal stock { get; set; }
public decimal stock_amount { get; set; }
public decimal on_the_way_count { get; set; }
public decimal on_the_way_amount { get; set; }
public decimal need_quantity { get; set; }
public decimal out_of_stock { get; set; }
public decimal sales_1 { get; set; }
public decimal sales_7 { get; set; }
public decimal sales_14 { get; set; }
public decimal sales_30 { get; set; }
public decimal stock_amount_1 { get; set; }
public decimal out_stock_30 { get; set; }
public decimal put_stock_30 { get; set; }
public int available_days { get; set; }
}
}
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Threading.Tasks;
namespace Bailun.DC.SemiSkuWarehouseSales
{
/// <summary>
/// 半成品SKU+仓库维度的库存,销量,在途,缺货,冗余数据
/// </summary>
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)
{
var _service = new Services();
_service.Init();
}
}
}
using Bailun.DC.SemiSkuWarehouseSales.Models;
using System;
using System.Collections.Generic;
using System.Text;
using MySql.Data.MySqlClient;
using Dapper;
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
namespace Bailun.DC.SemiSkuWarehouseSales
{
public class Services : BackgroundService
{
public Services()
{
Dapper.SimpleCRUD.SetDialect(SimpleCRUD.Dialect.MySQL);
}
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.Minute == 45) //每小时跑一次
{
Init();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Init()
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 执行任务...");
var _url = "http://mjzz.bailuntec.com/api/StockReport?rows=1000";
int page = 1;
int totalpage = 0;
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
//删除旧数据
cn.Execute("truncate dc_semi_stock_sales_shipping;");
}
while (page == 1 || (page <= totalpage))
{
var result = Bailun.DC.Common.HttpHelper.NetHelper.Request(_url + "&page="+page);
if (!string.IsNullOrEmpty(result))
{
var json = Newtonsoft.Json.JsonConvert.DeserializeObject<mResponse>(result);
if (json.success)
{
Console.WriteLine("总页数:" + json.data.TotalPages + ",当前页:" + json.data.CurrentPage);
using (var cn = new MySqlConnection(Common.GlobalConfig.ConnectionString))
{
if (cn.State == System.Data.ConnectionState.Closed)
{
cn.Open();
}
//保存数据
foreach (var item in json.data.Items)
{
var m = new dc_semi_stock_sales_shipping()
{
material_id = item.material_id,
available_days = item.available_days,
buyer_price = item.buyer_price,
material_data_center = item.material_data_center,
need_quantity = item.need_quantity,
on_the_way_amount = item.on_the_way_amount,
on_the_way_count = item.on_the_way_count,
out_of_stock = item.out_of_stock,
out_stock_30 = item.out_stock_30,
put_stock_30 = item.put_stock_30,
redundancy_stock = item.redundancy_stock,
sales_1 = item.sales_1,
sales_14 = item.sales_14,
sales_30 = item.sales_30,
sales_7 = item.sales_7,
sku = item.sku,
sku_name = item.sku_name,
stock = item.stock,
stock_amount = item.stock_amount,
stock_amount_1 = item.stock_amount_1,
warehouse_id = item.warehouse_id,
warehouse_name = item.warehouse_name
};
cn.Insert<dc_semi_stock_sales_shipping>(m);
}
}
totalpage = json.data.TotalPages;
page++;
}
else
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+" 接口返回错误信息:" +json.message);
}
}
}
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 结束任务");
}
}
}
...@@ -65,6 +65,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SyncSkuFinanceCat ...@@ -65,6 +65,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SyncSkuFinanceCat
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SkuStatistics", "Bailun.DC.SkuStatistics\Bailun.DC.SkuStatistics.csproj", "{08962ABF-57F6-4B3A-B46E-32B57C1BE126}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SkuStatistics", "Bailun.DC.SkuStatistics\Bailun.DC.SkuStatistics.csproj", "{08962ABF-57F6-4B3A-B46E-32B57C1BE126}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bailun.DC.SemiSkuWarehouseSales", "Bailun.DC.SemiSkuWarehouseSales\Bailun.DC.SemiSkuWarehouseSales.csproj", "{39AFD398-27D0-4C3D-98C7-7BDDC7A7BCBA}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
...@@ -191,6 +193,10 @@ Global ...@@ -191,6 +193,10 @@ Global
{08962ABF-57F6-4B3A-B46E-32B57C1BE126}.Debug|Any CPU.Build.0 = Debug|Any CPU {08962ABF-57F6-4B3A-B46E-32B57C1BE126}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08962ABF-57F6-4B3A-B46E-32B57C1BE126}.Release|Any CPU.ActiveCfg = Release|Any CPU {08962ABF-57F6-4B3A-B46E-32B57C1BE126}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08962ABF-57F6-4B3A-B46E-32B57C1BE126}.Release|Any CPU.Build.0 = Release|Any CPU {08962ABF-57F6-4B3A-B46E-32B57C1BE126}.Release|Any CPU.Build.0 = Release|Any CPU
{39AFD398-27D0-4C3D-98C7-7BDDC7A7BCBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{39AFD398-27D0-4C3D-98C7-7BDDC7A7BCBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{39AFD398-27D0-4C3D-98C7-7BDDC7A7BCBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{39AFD398-27D0-4C3D-98C7-7BDDC7A7BCBA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
...@@ -220,6 +226,7 @@ Global ...@@ -220,6 +226,7 @@ Global
{6B9F7624-DE1C-4A54-9947-19124022DEE1} = {AE2CE86A-8538-4142-920F-684DCF47C064} {6B9F7624-DE1C-4A54-9947-19124022DEE1} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{47F8A4B4-D549-4E93-80F7-1B6B8035F7F9} = {AE2CE86A-8538-4142-920F-684DCF47C064} {47F8A4B4-D549-4E93-80F7-1B6B8035F7F9} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{08962ABF-57F6-4B3A-B46E-32B57C1BE126} = {AE2CE86A-8538-4142-920F-684DCF47C064} {08962ABF-57F6-4B3A-B46E-32B57C1BE126} = {AE2CE86A-8538-4142-920F-684DCF47C064}
{39AFD398-27D0-4C3D-98C7-7BDDC7A7BCBA} = {AE2CE86A-8538-4142-920F-684DCF47C064}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6E53AF28-A282-4FB0-A769-EAEA9769C02A} SolutionGuid = {6E53AF28-A282-4FB0-A769-EAEA9769C02A}
......
...@@ -167,3 +167,10 @@ services: ...@@ -167,3 +167,10 @@ services:
context: . context: .
dockerfile: Bailun.DC.SkuStatistics/Dockerfile dockerfile: Bailun.DC.SkuStatistics/Dockerfile
bailun.dc.semiskuwarehousesales:
image: ${DOCKER_REGISTRY}bailundcsemiskuwarehousesales
build:
context: .
dockerfile: Bailun.DC.SemiSkuWarehouseSales/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