6 лаба как будто работает

This commit is contained in:
bulatova_karina 2024-05-05 13:40:33 +04:00
parent 1e17365f7f
commit 0b13bfad2d
4 changed files with 15 additions and 23 deletions

View File

@ -15,15 +15,12 @@ namespace ComputersShopBusinessLogic.BusinessLogics
public class ImplementerLogic : IImplementerLogic
{
private readonly ILogger _logger;
private readonly IImplementerStorage _implementerStorage;
public ImplementerLogic(ILogger<ImplementerLogic> logger, IImplementerStorage implementerStorage)
{
_logger = logger;
_implementerStorage = implementerStorage;
}
public List<ImplementerViewModel>? ReadList(ImplementerSearchModel? model)
{
_logger.LogInformation("ReadList. ImplementerFIO: {ImplementerFIO}. Id: {Id}", model?.ImplementerFIO, model?.Id);
@ -36,7 +33,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
_logger.LogInformation("ReadList. Count: {Count}", list.Count);
return list;
}
public ImplementerViewModel? ReadElement(ImplementerSearchModel model)
{
if (model == null)
@ -53,7 +49,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
_logger.LogInformation("ReadElement find. Id: {Id}", element.Id);
return element;
}
public bool Create(ImplementerBindingModel model)
{
CheckModel(model);
@ -64,7 +59,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
}
return true;
}
public bool Update(ImplementerBindingModel model)
{
CheckModel(model);
@ -75,7 +69,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
}
return true;
}
public bool Delete(ImplementerBindingModel model)
{
CheckModel(model, false);
@ -87,7 +80,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
}
return true;
}
private void CheckModel(ImplementerBindingModel model, bool withParams = true)
{
if (model == null)

View File

@ -15,18 +15,15 @@ namespace ComputersShopBusinessLogic.BusinessLogics
public class WorkModeling : IWorkProcess
{
private readonly ILogger _logger;
private readonly Random _rnd;
private IOrderLogic? _orderLogic;
public WorkModeling(ILogger<WorkModeling> logger)
{
_logger = logger;
_rnd = new Random(1000);
}
public void DoWork(IImplementerLogic implementerLogic, IOrderLogic orderLogic)
public void DoWork(IImplementerLogic implementerLogic, IOrderLogic
orderLogic)
{
_orderLogic = orderLogic;
var implementers = implementerLogic.ReadList(null);
@ -35,7 +32,11 @@ namespace ComputersShopBusinessLogic.BusinessLogics
_logger.LogWarning("DoWork. Implementers is null");
return;
}
var orders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Принят });
var orders = _orderLogic.ReadList(new OrderSearchModel
{
Status =
OrderStatus.Принят
});
if (orders == null || orders.Count == 0)
{
_logger.LogWarning("DoWork. Orders is null or empty");
@ -47,27 +48,26 @@ namespace ComputersShopBusinessLogic.BusinessLogics
Task.Run(() => WorkerWorkAsync(implementer, orders));
}
}
/// <summary>
/// Иммитация работы исполнителя
/// </summary>
/// <param name="implementer"></param>
/// <param name="orders"></param>
private async Task WorkerWorkAsync(ImplementerViewModel implementer, List<OrderViewModel> orders)
private async Task WorkerWorkAsync(ImplementerViewModel implementer,
List<OrderViewModel> orders)
{
if (_orderLogic == null || implementer == null)
{
return;
}
await RunOrderInWork(implementer);
await Task.Run(() =>
{
foreach (var order in orders)
{
try
{
_logger.LogDebug("DoWork. Worker {Id} try get order {Order}", implementer.Id, order.Id);
_logger.LogDebug("DoWork. Worker {Id} try get order { Order}", implementer.Id, order.Id);
// пытаемся назначить заказ на исполнителя
_orderLogic.TakeOrderInWork(new OrderBindingModel
{
@ -76,7 +76,7 @@ namespace ComputersShopBusinessLogic.BusinessLogics
});
// делаем работу
Thread.Sleep(implementer.WorkExperience * _rnd.Next(100, 1000) * order.Count);
_logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, order.Id);
_logger.LogDebug("DoWork. Worker {Id} finish order{ Order}", implementer.Id, order.Id);
_orderLogic.FinishOrder(new OrderBindingModel
{
Id = order.Id
@ -98,7 +98,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
}
});
}
/// <summary>
/// Ищем заказ, которые уже в работе (вдруг исполнителя прервали)
/// </summary>
@ -112,7 +111,8 @@ namespace ComputersShopBusinessLogic.BusinessLogics
}
try
{
var runOrder = await Task.Run(() => _orderLogic.ReadElement(new OrderSearchModel
var runOrder = await Task.Run(() => _orderLogic.ReadElement(new
OrderSearchModel
{
ImplementerId = implementer.Id,
Status = OrderStatus.Выполняется
@ -121,7 +121,6 @@ namespace ComputersShopBusinessLogic.BusinessLogics
{
return;
}
_logger.LogDebug("DoWork. Worker {Id} back to order {Order}", implementer.Id, runOrder.Id);
// доделываем работу
Thread.Sleep(implementer.WorkExperience * _rnd.Next(100, 300) * runOrder.Count);

View File

@ -51,7 +51,7 @@ namespace ComputersShopView
_logger.LogInformation("Loading clients for order");
try
{
var clientList = _logicC.ReadList(null);
var clientList = _logicCl.ReadList(null);
if (clientList != null)
{
comboBoxClient.DisplayMember = "ClientFIO";

View File

@ -98,6 +98,7 @@
this.Controls.Add(this.dataGridView);
this.Name = "FormImplementers";
this.Text = "Исполнители";
this.Load += new System.EventHandler(this.FormImplementers_Load);
((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
this.ResumeLayout(false);