diff --git a/ProductionInCehOTP/Entities/ArrivalMaterials.cs b/ProductionInCehOTP/Entities/ArrivalMaterials.cs index 1b94110..9bc35af 100644 --- a/ProductionInCehOTP/Entities/ArrivalMaterials.cs +++ b/ProductionInCehOTP/Entities/ArrivalMaterials.cs @@ -1,12 +1,17 @@ using ProductionInCehOTP.Entities.Enums; +using System.ComponentModel; namespace ProductionInCehOTP.Entities; public class ArrivalMaterials { public int Id { get; private set; } + [DisplayName("Дата")] public DateTime Date { get; private set; } + [DisplayName("Перечь поставленных материалов")] public NameOfMaterials Name { get; private set; } + + [DisplayName("Количество")] public int Count { get; private set; } public static ArrivalMaterials CreateArrivalMaterials(int id, DateTime Date, NameOfMaterials name, int count) diff --git a/ProductionInCehOTP/Entities/Material.cs b/ProductionInCehOTP/Entities/Material.cs index 1b3673d..97c62d5 100644 --- a/ProductionInCehOTP/Entities/Material.cs +++ b/ProductionInCehOTP/Entities/Material.cs @@ -1,16 +1,31 @@  using ProductionInCehOTP.Entities.Enums; +using System.ComponentModel; namespace ProductionInCehOTP.Entities; public class Material { public int Id { get; private set; } + + [DisplayName("Материал")] public NameOfMaterials Name { get; private set; } + + [DisplayName("Номеер поставки")] public int ArrivalMaterialID { get; private set; } + + [DisplayName("Количество переданного")] + + public string CountToProduct => MaterialForProducts != null ? + string.Join(", ", MaterialForProducts.Select(x => $"{x.Name}{x.Count}")) : + string.Empty; + + [Browsable(false)] public IEnumerable MaterialForProducts { get; private set; } + [DisplayName("Дата передачи в производство")] public DateTime DateArrivalToProduct { get; private set; } + public static Material TransferMaterial(int id, NameOfMaterials name, int arrivalMaterialsID, DateTime dateArrivalToProduct,IEnumerable materialForProducts ) { return new Material @@ -23,16 +38,12 @@ public class Material }; } - public static Material TransferMaterial(TempMaterialForProduct tempMaterialForProduct, IEnumerable materialForProducts) + public void SetMaterialForProduct(IEnumerable materialForProducts) { - return new Material + if(materialForProducts != null && materialForProducts.Any()) { - Id = tempMaterialForProduct.ID, - Name = tempMaterialForProduct.Name, - ArrivalMaterialID = tempMaterialForProduct.ArrivalMaterialID, - DateArrivalToProduct = tempMaterialForProduct.DateArrivalToProduct, - MaterialForProducts = materialForProducts - }; + MaterialForProducts = materialForProducts; + } } } diff --git a/ProductionInCehOTP/Entities/MaterialForProduct.cs b/ProductionInCehOTP/Entities/MaterialForProduct.cs index 60de479..f18268b 100644 --- a/ProductionInCehOTP/Entities/MaterialForProduct.cs +++ b/ProductionInCehOTP/Entities/MaterialForProduct.cs @@ -10,6 +10,8 @@ public class MaterialForProduct { public int ProductID { get; private set; } public int MaterialID { get; private set; } + + public string Name { get; private set; } public int Count { get; private set; } public static MaterialForProduct CreateDependenceMaterialsToProduct(int productID, int materialsId, int count) diff --git a/ProductionInCehOTP/Entities/PlanWork.cs b/ProductionInCehOTP/Entities/PlanWork.cs index 2830b49..a6021cb 100644 --- a/ProductionInCehOTP/Entities/PlanWork.cs +++ b/ProductionInCehOTP/Entities/PlanWork.cs @@ -1,10 +1,17 @@ -namespace ProductionInCehOTP.Entities; +using System.ComponentModel; + +namespace ProductionInCehOTP.Entities; public class PlanWork { public int Id { get; private set; } + [DisplayName("Запланированное количество готовой продукции")] public int Plan { get; private set; } + + [DisplayName("Дата установки плана")] public DateTime Date { get; private set; } = DateTime.Now; + + [Browsable(false)] public int WorkerId { get; private set; } public IEnumerable PlanWorkForProducts { get; private set; } = []; diff --git a/ProductionInCehOTP/Entities/Product.cs b/ProductionInCehOTP/Entities/Product.cs index 0d645bf..429aa9c 100644 --- a/ProductionInCehOTP/Entities/Product.cs +++ b/ProductionInCehOTP/Entities/Product.cs @@ -1,13 +1,22 @@ using ProductionInCehOTP.Entities.Enums; +using System.ComponentModel; namespace ProductionInCehOTP.Entities; public class Product { public int Id { get; private set; } + + [DisplayName("Наименование продукта")] public string Name { get; private set; } + + [DisplayName("Цена")] public int Price { get; private set; } + + [DisplayName("Официальный регистрационный номер")] public string ProductionId { get; private set; } + + [DisplayName("Наименование типа изделия")] public NameOfProductTypes ProductionTypeID { get; private set; } public static Product CreateProducts(int id, string name, int price, string productionId, NameOfProductTypes productionType) diff --git a/ProductionInCehOTP/Entities/TempMaterialForProduct.cs b/ProductionInCehOTP/Entities/TempMaterialForProduct.cs deleted file mode 100644 index 37cc145..0000000 --- a/ProductionInCehOTP/Entities/TempMaterialForProduct.cs +++ /dev/null @@ -1,21 +0,0 @@ -using ProductionInCehOTP.Entities.Enums; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProductionInCehOTP.Entities; - -public class TempMaterialForProduct -{ - public int ID { get; private set; } - - public NameOfMaterials Name { get; private set; } - public int ArrivalMaterialID { get; private set; } - - public int MaterialID { get; private set; } - - public DateTime DateArrivalToProduct { get; private set; } - public int Count { get; private set; } -} diff --git a/ProductionInCehOTP/Entities/Worker.cs b/ProductionInCehOTP/Entities/Worker.cs index 972fb65..02f348f 100644 --- a/ProductionInCehOTP/Entities/Worker.cs +++ b/ProductionInCehOTP/Entities/Worker.cs @@ -1,13 +1,24 @@ -using System.Runtime.CompilerServices; +using System.ComponentModel; +using System.Runtime.CompilerServices; namespace ProductionInCehOTP.Entities; public class Worker { + public int Id { get; private set; } + [Browsable(false)] public string Name { get; private set; } = string.Empty; + [DisplayName("ФИО(разряд)")] + public string NameClass => $"{Name}({Class})"; + + [DisplayName("Рабочий стаж")] public DateTime Experience { get; private set; } + + [Browsable(false)] public int Class { get; private set; } + + [DisplayName("Дневная норма выработки")] public int PlanWork { get; private set; } public static Worker CreateWorker(int id, string name, DateTime experience, int classOfWorker, int planWorkID) diff --git a/ProductionInCehOTP/Forms/ArrivalsMaterials_Forms/FormArrivalsOfMaterials.cs b/ProductionInCehOTP/Forms/ArrivalsMaterials_Forms/FormArrivalsOfMaterials.cs index 0106714..9827df7 100644 --- a/ProductionInCehOTP/Forms/ArrivalsMaterials_Forms/FormArrivalsOfMaterials.cs +++ b/ProductionInCehOTP/Forms/ArrivalsMaterials_Forms/FormArrivalsOfMaterials.cs @@ -82,8 +82,12 @@ namespace ProductionInCehOTP.Forms.ArrivalsMaterials_Forms } } - private void LoadList() => dataGridViewData.DataSource = _arrivalMaterialsRepository.GetArrivalMaterials(); + private void LoadList() + { + dataGridViewData.DataSource = _arrivalMaterialsRepository.GetArrivalMaterials(); + dataGridViewData.Columns["Id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/ProductionInCehOTP/Forms/Material_Forms/FormMaterials.cs b/ProductionInCehOTP/Forms/Material_Forms/FormMaterials.cs index ae5d009..b7057c1 100644 --- a/ProductionInCehOTP/Forms/Material_Forms/FormMaterials.cs +++ b/ProductionInCehOTP/Forms/Material_Forms/FormMaterials.cs @@ -32,6 +32,9 @@ namespace ProductionInCehOTP.Forms.Material_Forms private void LoadList() { dataGridViewData.DataSource = _materialRepository.GetMaterials(); + dataGridViewData.Columns["Id"].Visible = false; + dataGridViewData.Columns["DateArrivalToProduct"].DefaultCellStyle.Format = "dd MMMM yyyy hh:mm"; + } private void FormMaterials_Load(object sender, EventArgs e) diff --git a/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlanWork.cs b/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlanWork.cs index aedeff6..7e93da5 100644 --- a/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlanWork.cs +++ b/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlanWork.cs @@ -28,7 +28,7 @@ namespace ProductionInCehOTP.Forms ColumnProduct.ValueMember = "Id"; comboBoxName.DataSource = workerRepository.GetWorkers(); - comboBoxName.DisplayMember = "Name"; + comboBoxName.DisplayMember = "NameClass"; comboBoxName.ValueMember = "Id"; } diff --git a/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlansWork.cs b/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlansWork.cs index 0bacdd8..b484384 100644 --- a/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlansWork.cs +++ b/ProductionInCehOTP/Forms/PlanWork_Forms/FormPlansWork.cs @@ -20,7 +20,7 @@ namespace ProductionInCehOTP.Forms.PlanWork_Forms { private readonly IUnityContainer _container; private readonly IPlanWorkRepository _planWorkRepository; - public FormPlansWork(IUnityContainer container,IPlanWorkRepository planWorkRepository) + public FormPlansWork(IUnityContainer container, IPlanWorkRepository planWorkRepository) { InitializeComponent(); _container = container ?? @@ -40,8 +40,13 @@ namespace ProductionInCehOTP.Forms.PlanWork_Forms MessageBox.Show(ex.Message, "Ошибка добавления элемента", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void LoadList() => dataGridViewData.DataSource = _planWorkRepository.GetPlanWorks(); + private void LoadList() + { + dataGridViewData.DataSource = _planWorkRepository.GetPlanWorks(); + dataGridViewData.Columns["Id"].Visible = false; + dataGridViewData.Columns["Date"].DefaultCellStyle.Format = "dddd.MM.yyyy"; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/ProductionInCehOTP/Forms/Product_Forms/FormProducts.cs b/ProductionInCehOTP/Forms/Product_Forms/FormProducts.cs index 6190d40..55e0f73 100644 --- a/ProductionInCehOTP/Forms/Product_Forms/FormProducts.cs +++ b/ProductionInCehOTP/Forms/Product_Forms/FormProducts.cs @@ -93,7 +93,11 @@ namespace ProductionInCehOTP.Forms MessageBox.Show(ex.Message, "Ошибка при загрузке данных", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void LoadList() => dataGridViewData.DataSource = _productRepository.GetProducts(); + private void LoadList() + { + dataGridViewData.DataSource = _productRepository.GetProducts(); + dataGridViewData.Columns["Id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { diff --git a/ProductionInCehOTP/Forms/Worker_Forms/FormWorkers.cs b/ProductionInCehOTP/Forms/Worker_Forms/FormWorkers.cs index 6d66a7d..4643fa8 100644 --- a/ProductionInCehOTP/Forms/Worker_Forms/FormWorkers.cs +++ b/ProductionInCehOTP/Forms/Worker_Forms/FormWorkers.cs @@ -81,8 +81,14 @@ namespace ProductionInCehOTP.Forms } } - private void LoadList() => dataGridViewData.DataSource = _workerRepository.GetWorkers(); + private void LoadList() + { + dataGridViewData.DataSource = _workerRepository.GetWorkers(); + dataGridViewData.Columns["Id"].Visible = false; + dataGridViewData.Columns["DateArrivalToProduct"].DefaultCellStyle.Format = "dd MMMM yyyy hh:mm"; + + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/ProductionInCehOTP/Repositories/Implementations/MaterialRepository.cs b/ProductionInCehOTP/Repositories/Implementations/MaterialRepository.cs index abdda9a..f12e02f 100644 --- a/ProductionInCehOTP/Repositories/Implementations/MaterialRepository.cs +++ b/ProductionInCehOTP/Repositories/Implementations/MaterialRepository.cs @@ -29,16 +29,32 @@ public class MaterialRepository : IMaterialReposirory { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var querySelect = @" -SELECT mat.*, mp.MaterialID, mp.Count -FROM Material mat -INNER JOIN material_product mp ON mp.MaterialID = mat.id"; - var material = - connection.Query(querySelect); - _logger.LogDebug("Полученные объекты: {json}", - JsonConvert.SerializeObject(material)); +SELECT mat.*, +mfp.Count as countofmaterialtoproduct, +pr.Name as nameofproduct +from material mat +inner join material_product mfp on mfp.MaterialId = mat.id +left join product pr on pr.productiontypeid = mfp.productid"; + var materialDict = new Dictionary>(); - return material.GroupBy(x => x.ID, y => y, - (key, value) => Material.TransferMaterial(value.First(), value.Select(z => MaterialForProduct.CreateDependenceMaterialsToProduct(0,z.MaterialID, z.Count)))).ToList(); + var material = connection.Query(querySelect, + (matat, material) => + { + if (!materialDict.TryGetValue(matat.Id, out var frr)) + { + frr = []; + materialDict.Add(matat.Id, frr); + } + frr.Add(material); + return matat; + }, splitOn: "Count", param: new {name, arrivalMaterialsid}); + _logger.LogDebug("Полученные объекты {json}", JsonConvert.SerializeObject(material)); + return materialDict.Select(x => + { + var fr = material.First(y => y.Id == x.Key); + fr.SetMaterialForProduct(x.Value); + return fr; + }).ToArray(); } catch (Exception ex) {