feat(all): Проекты под задачи синхронизации нарядов еспп и агентов

This commit is contained in:
Mikhail Trubnikov
2023-10-19 15:59:57 +10:00
parent 2f88078d37
commit 526140eea4
37 changed files with 508 additions and 11 deletions

View File

@@ -35,6 +35,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.GeneratorTemplates", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PARR.GeneratorTemplatesWorker", "PARR.GeneratorTemplatesWorker\PARR.GeneratorTemplatesWorker.csproj", "{BE11D005-D3FE-4F29-93A2-7379E729C78D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.EsppOrderLoader", "PARR.EsppOrderLoader\PARR.EsppOrderLoader.csproj", "{F83395F9-CE33-40A5-BA1A-4A1233E9AA67}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.EsppOrderLoaderWorker", "PARR.EsppOrderLoaderWorker\PARR.EsppOrderLoaderWorker.csproj", "{868ED9E0-42AD-4540-90BE-31A57A21CD93}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.Master", "PARR.Master\PARR.Master.csproj", "{EB730B71-83BB-4787-8096-07F1D45CB55B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.MasterWorker", "PARR.MasterWorker\PARR.MasterWorker.csproj", "{DC64DE01-2C7F-4557-9F97-DBFA21E74C1C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.EsppOrderManager", "PARR.EsppOrderManager\PARR.EsppOrderManager.csproj", "{771E46EC-8EB5-4BBE-9631-C6EBF7A237C1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.EsppOrderManagerWorker", "PARR.EsppOrderManagerWorker\PARR.EsppOrderManagerWorker.csproj", "{026C7940-9938-4294-B896-A6FFB0A33017}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.EsppApi", "PARR.EsppApi\PARR.EsppApi.csproj", "{47A87CEC-9A16-4044-A7A3-E1430BE6C3AC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PARR.Test", "PARR.Test\PARR.Test.csproj", "{CFE2A198-67BF-4828-8E8D-31A01858FDA7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -87,6 +103,38 @@ Global
{BE11D005-D3FE-4F29-93A2-7379E729C78D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE11D005-D3FE-4F29-93A2-7379E729C78D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE11D005-D3FE-4F29-93A2-7379E729C78D}.Release|Any CPU.Build.0 = Release|Any CPU
{F83395F9-CE33-40A5-BA1A-4A1233E9AA67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83395F9-CE33-40A5-BA1A-4A1233E9AA67}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83395F9-CE33-40A5-BA1A-4A1233E9AA67}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83395F9-CE33-40A5-BA1A-4A1233E9AA67}.Release|Any CPU.Build.0 = Release|Any CPU
{868ED9E0-42AD-4540-90BE-31A57A21CD93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{868ED9E0-42AD-4540-90BE-31A57A21CD93}.Debug|Any CPU.Build.0 = Debug|Any CPU
{868ED9E0-42AD-4540-90BE-31A57A21CD93}.Release|Any CPU.ActiveCfg = Release|Any CPU
{868ED9E0-42AD-4540-90BE-31A57A21CD93}.Release|Any CPU.Build.0 = Release|Any CPU
{EB730B71-83BB-4787-8096-07F1D45CB55B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB730B71-83BB-4787-8096-07F1D45CB55B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB730B71-83BB-4787-8096-07F1D45CB55B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB730B71-83BB-4787-8096-07F1D45CB55B}.Release|Any CPU.Build.0 = Release|Any CPU
{DC64DE01-2C7F-4557-9F97-DBFA21E74C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC64DE01-2C7F-4557-9F97-DBFA21E74C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC64DE01-2C7F-4557-9F97-DBFA21E74C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC64DE01-2C7F-4557-9F97-DBFA21E74C1C}.Release|Any CPU.Build.0 = Release|Any CPU
{771E46EC-8EB5-4BBE-9631-C6EBF7A237C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{771E46EC-8EB5-4BBE-9631-C6EBF7A237C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{771E46EC-8EB5-4BBE-9631-C6EBF7A237C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{771E46EC-8EB5-4BBE-9631-C6EBF7A237C1}.Release|Any CPU.Build.0 = Release|Any CPU
{026C7940-9938-4294-B896-A6FFB0A33017}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{026C7940-9938-4294-B896-A6FFB0A33017}.Debug|Any CPU.Build.0 = Debug|Any CPU
{026C7940-9938-4294-B896-A6FFB0A33017}.Release|Any CPU.ActiveCfg = Release|Any CPU
{026C7940-9938-4294-B896-A6FFB0A33017}.Release|Any CPU.Build.0 = Release|Any CPU
{47A87CEC-9A16-4044-A7A3-E1430BE6C3AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47A87CEC-9A16-4044-A7A3-E1430BE6C3AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47A87CEC-9A16-4044-A7A3-E1430BE6C3AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47A87CEC-9A16-4044-A7A3-E1430BE6C3AC}.Release|Any CPU.Build.0 = Release|Any CPU
{CFE2A198-67BF-4828-8E8D-31A01858FDA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFE2A198-67BF-4828-8E8D-31A01858FDA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFE2A198-67BF-4828-8E8D-31A01858FDA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFE2A198-67BF-4828-8E8D-31A01858FDA7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@@ -0,0 +1,21 @@
using Microsoft.Extensions.Logging;
using PARR.EsppApi.Models;
namespace PARR.EsppApi
{
internal class EsppApiService : IEsppApiService
{
private readonly ILogger<EsppApiService> logger;
public EsppApiService(ILogger<EsppApiService> logger)
{
this.logger = logger;
}
public async Task<IEnumerable<EsppOrder>> FindOrdersByPrefixAsync(string prefix)
{
logger.LogInformation("Привет!");
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,13 @@
using PARR.EsppApi.Models;
namespace PARR.EsppApi
{
public interface IEsppApiService
{
/// <summary>
/// Найти наряды в ЕСПП по префиксу
/// </summary>
/// <returns></returns>
Task<IEnumerable<EsppOrder>> FindOrdersByPrefixAsync(string prefix);
}
}

View File

@@ -0,0 +1,9 @@
namespace PARR.EsppApi.Models
{
/// <summary>
/// Модель наряда из еспп
/// </summary>
public class EsppOrder
{
}
}

View File

@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="7.0.4" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="7.0.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Settings\" />
<Folder Include="Services\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,21 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace PARR.EsppApi
{
public static class ParrEsppApiInstaller
{
public static void InstallEsppApiServices(this IServiceCollection services, IConfiguration configuration)
{
// settings
//SettingsFromDb configuration
//var settingsFromDb = new SettingsFromDb();
//configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb);
//services.AddSingleton(settingsFromDb);
services.AddTransient<IEsppApiService, EsppApiService>();
//add other services
}
}
}

View File

@@ -0,0 +1,7 @@
namespace PARR.EsppOrderLoader
{
public class Class1
{
}
}

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-PARR.EsppOrderLoaderWorker-9450cc7f-81ad-4405-8442-7d14419c7952</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PARR.EsppOrderLoader\PARR.EsppOrderLoader.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,10 @@
using PARR.EsppOrderLoaderWorker;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();
host.Run();

View File

@@ -0,0 +1,11 @@
{
"profiles": {
"PARR.EsppOrderLoaderWorker": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,21 @@
namespace PARR.EsppOrderLoaderWorker
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,7 @@
namespace PARR.EsppOrderManager
{
public class Class1
{
}
}

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-PARR.EsppOrderManagerWorker-a4ce7a82-5723-4e74-87e1-eca04735f524</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PARR.EsppOrderManager\PARR.EsppOrderManager.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,10 @@
using PARR.EsppOrderManagerWorker;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();
host.Run();

View File

@@ -0,0 +1,11 @@
{
"profiles": {
"PARR.EsppOrderManagerWorker": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,21 @@
namespace PARR.EsppOrderManagerWorker
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

7
PARR.Master/Class1.cs Normal file
View File

@@ -0,0 +1,7 @@
namespace PARR.Master
{
public class Class1
{
}
}

View File

@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-PARR.MasterWorker-55f789f6-6e2b-42fa-b92e-3e56c1142316</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PARR.Master\PARR.Master.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,10 @@
using PARR.MasterWorker;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build();
host.Run();

View File

@@ -0,0 +1,11 @@
{
"profiles": {
"PARR.MasterWorker": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
}
}
}

View File

@@ -0,0 +1,21 @@
namespace PARR.MasterWorker
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk.Worker">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>dotnet-PARR.Test-4ed55577-3528-48f9-99c8-33eb108a33bb</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\PARR.EsppApi\PARR.EsppApi.csproj" />
</ItemGroup>
</Project>

13
PARR.Test/Program.cs Normal file
View File

@@ -0,0 +1,13 @@
using PARR.EsppApi;
using PARR.Test;
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.InstallEsppApiServices(hostContext.Configuration);
services.AddHostedService<Worker>();
})
.Build();
host.Run();

View File

@@ -0,0 +1,11 @@
{
"profiles": {
"PARR.Test": {
"commandName": "Project",
"dotnetRunMessages": true,
"environmentVariables": {
"DOTNET_ENVIRONMENT": "Development"
}
}
}
}

34
PARR.Test/Worker.cs Normal file
View File

@@ -0,0 +1,34 @@
using PARR.EsppApi;
namespace PARR.Test
{
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
private readonly IEsppApiService esppApiService;
public Worker(ILogger<Worker> logger, IEsppApiService esppApiService)
{
_logger = logger;
this.esppApiService = esppApiService;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
//while (!stoppingToken.IsCancellationRequested)
//{
// _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
// await Task.Delay(1000, stoppingToken);
//}
await TestEsppApi();
}
private async Task TestEsppApi()
{
// var orders = await esppApiService.FindOrdersByPrefixAsync("ПАРР__");
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}

View File

@@ -10,26 +10,26 @@
- PARR.API - API
- PARR.BLL - общие методы и настройки для проектов
- PARR.DAL - модели, сервисы по работе с БД PARR
- PARR.EsppApi - сервисы по работе с Api ЕСПП
- PARR.EsppOrderLoader - загрузка нарядов ПАРР из ЕСПП в БД
- PARR.EsppOrderLoaderWorker
- PARR.EsppOrderManager - управление нарядами в ЕСПП (в работу, выполнить, и т.п.)
- PARR.EsppOrderManagerWorker
- PARR.EsppTemplateSync - логика синхронизации шаблонов ESPP с БД PARR
- PARR.EsppTemplateSyncWorker - worker для PARR.EsppTemplateSync
- PARR.GeneratorTemplates - логика генерации шаблонов в ПАРР
- PARR.GeneratorTemplatesWorker - Worker для PARR.GeneratorTemplates
- PARR.Mail - сервис по работе с почтой
- PARR.Master - логика связывания нарядов ЕСПП и Агентов ПАРР, связывание нарядов и шаблонов, добавление нарядов в очередь на закрытие
- PARR.MasterWorker
- PARR.MockData - загрузка тестовых данных
- PARR.Test - тестирование функций ПАРР
## CICD
### Теги:
~~## Настройка хранилища~~
- v1.0.0 - PARR.API
- et1.0.0 - PARR.EsppTemplateSyncWorker
- as1.0.0 - PARR.AIHITWorker
- gt1.0.0 - PARR.GeneratorTemplates
## Настройка хранилища
### Не используется
```
```bash
#не используется
#dev
\\dvgd-appfs-01\parr_storage_dev
parruserdev