OMS - это система управления заказами, построенная на архитектуре Clean Architecture с использованием .NET. Система предназначена для автоматизации процессов работы с заявками и заказами, интеграции с внешними системами и управления документооборотом.
Проект построен по принципам Clean Architecture и состоит из следующих слоев:
OMS/
├── Domain/ # Доменный слой
│ ├── Bid.cs # Заявка
│ ├── Order.cs # Заказ
│ ├── SaleInfo.cs # Базовый класс для продаж
│ ├── Item.cs # Товарная позиция
│ └── ...
├── Application/ # Слой приложения
│ ├── Service/ # Бизнес-сервисы
│ ├── Converters/ # Конверторы данных
│ └── Models/ # Модели приложения
├── Infrastructure/ # Инфраструктурный слой
│ ├── Database/ # Работа с БД
│ ├── AgentPlus/ # Интеграция с AgentPlus
│ ├── Cheetah/ # Интеграция с Cheetah
│ ├── Kontur/ # Интеграция с Kontur EDI
│ ├── Advantage/ # Интеграция с Advantage
│ └── Email/ # Email сервисы
└── OMS/ # Веб API слой
├── Controllers/ # API контроллеры
├── Program.cs # Точка входа
└── appsettings.json # Конфигурация
- Создание заявок из EDI-сообщений
- Обработка заявок от AgentPlus
- Валидация и проверка данных
- Отслеживание статусов обработки
- Конвертация заявок в заказы
- Генерация накладных
- Интеграция с учетными системами
- Печать документов
- Kontur EDI - электронный документооборот
- AgentPlus - система работы с агентами
- Cheetah - каталог товаров и контрагентов
- Advantage - учетная система
- TMS - управление транспортом
- .NET 6+ - основной фреймворк
- ASP.NET Core - веб API
- Entity Framework Core - ORM
- SQLite - база данных
- Serilog - логирование
- JWT - аутентификация
- Swagger - документация API
- .NET 6 SDK или выше
- SQLite
# Клонирование репозитория
git clone [repository-url]
# Переход в директорию проекта
cd OMS
# Восстановление зависимостей
dotnet restore
# Применение миграций
dotnet ef database update
# Запуск приложения
dotnet run --project OMSОсновные настройки находятся в appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "DataSource=moms.db;Cache=Shared",
"IdentityConnection": "DataSource=user.db;Cache=Shared"
},
"EdiSettings": {
"keyDev": "...",
"pathToEdi": "https://edi-api.kontur.ru/",
"workBox": "..."
},
"Advantage": {
"Base": "http://192.168.1.222:8079/Advantage/"
}
// ... другие настройки
}GET /api/bid- получение списка заявокPOST /api/bid- создание заявкиPUT /api/bid/{id}- обновление заявкиDELETE /api/bid/{id}- удаление заявки
GET /api/order- получение списка заказовPOST /api/order- создание заказаPUT /api/order/{id}- обновление заказа
GET /api/edi/inbox- получение входящих EDI сообщенийPOST /api/edi/process- обработка EDI сообщений
POST /api/print/invoice- печать накладнойPOST /api/print/report- печать отчета
public class Bid : SaleInfo<BidItem>
{
public string? ProbableOperationType { get; set; }
public bool isRegister { get; set; }
public bool HasError { get; set; }
public string ErrorDetails { get; set; }
public string? DepartamentCode { get; set; }
public string? TypeIdent { get; set; }
}public class Order : SaleInfo<OrderItem>
{
public Guid BidId { get; set; }
public string InvoiceNumber { get; set; }
public string DepartamentId { get; set; }
public string OperationType { get; set; }
public uint EdiStatus { get; set; }
public string? TypeIdent { get; set; }
}- Содержит общие поля для заявок и заказов
- Автоматически вычисляет суммы и количества
- Включает информацию о продавце, покупателе, плательщике
- JWT-аутентификация
- Ролевая модель доступа
- Логирование действий пользователей
- Валидация входных данных
- Структурированное логирование через Serilog
- Запись в файлы с ротацией
- Отслеживание ошибок интеграций
- Мониторинг производительности
- Настройка строк подключения к БД
- Конфигурация внешних сервисов
- Настройка логирования
- Настройка HTTPS и сертификатов
# Пример Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "OMS.dll"]# Запуск тестов
dotnet test
# Запуск с покрытием кода
dotnet test --collect:"XPlat Code Coverage"При возникновении вопросов:
- Проверьте логи в папке
Logs/ - Убедитесь в корректности настроек внешних сервисов
- Проверьте доступность сетевых ресурсов
[Укажите лицензию проекта]
Документация актуальна на [текущая дата]