From 61440c2a1b5e93ee607ba69bc135c3fc2e7384db Mon Sep 17 00:00:00 2001 From: SamSys Date: Mon, 10 Mar 2025 20:01:42 +0330 Subject: [PATCH] report bug fixed --- .../Repository/ReportRepository.cs | 54 +++++++++++++------ 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/CompanyManagment.EFCore/Repository/ReportRepository.cs b/CompanyManagment.EFCore/Repository/ReportRepository.cs index f29c2a90..e6c704a0 100644 --- a/CompanyManagment.EFCore/Repository/ReportRepository.cs +++ b/CompanyManagment.EFCore/Repository/ReportRepository.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using System.Threading.Tasks; using _0_Framework.Application; using AccountMangement.Infrastructure.EFCore; @@ -196,6 +197,8 @@ public class ReportRepository : IReportRepository var allCheckoutLeftworkEmployeeIds = allCheckoutLeftworks.Select(x => x.EmployeeId); var allCheckoutLeftworkWorkshopIds = allCheckoutLeftworks.Select(x => x.WorkshopId).ToList(); + + var allCheckoutToBeTople = allCheckoutLeftworks.Select(x => new { x.EmployeeId, x.WorkshopId }).ToList(); //تمام تصفیه حساب های ایجاد شده ماه مورد نظر var allCheckoutCreated = _context.CheckoutSet .Where(x => allCheckoutLeftworkEmployeeIds.Contains(x.EmployeeId)) @@ -214,8 +217,13 @@ public class ReportRepository : IReportRepository var contractsAccountLeftWorks = _accountContext.AccountLeftWorks .Where(x => x.RoleId == 5) .Where(x => x.StartWorkGr < nextMonthEnd && x.LeftWorkGr > nextMonthStart); - var allContractAccountLeftWorkWorkshopIds = contractsAccountLeftWorks.Select(x => x.WorkshopId).ToList(); +//#if DEBUG +// contractsAccountLeftWorks = contractsAccountLeftWorks.Where(x => x.AccountId == 25); +// allContractAccountLeftWorkWorkshopIds = allContractAccountLeftWorkWorkshopIds.Where(x=>x == 296).ToList(); +//#endif + + //یافتن کارگاه هایی که فعال هستند و طرف حساب انها فعال است var contractWorkshopEmployer = _context.WorkshopEmployers @@ -228,7 +236,7 @@ public class ReportRepository : IReportRepository //یافتن کارگاه های استثنا بدون قردادمالی var contractWithOutInstitutionContract = contractWorkshopEmployer.Where(x => x.Employer.ContractingPartyId == 30428) - .GroupBy(x => x.Workshop).Select(x => x.Key.id); + .GroupBy(x => x.Workshop).Select(x => x.Key.id).ToList(); //یافتن قردادمالی برای کارگاه های یافت شده در تاریخ مورد نظر var contractFindHasInstitutionContract = _context.InstitutionContractSet @@ -236,11 +244,13 @@ public class ReportRepository : IReportRepository .Select(c => c.ContractingPartyId); //فیلتر کارگاه های غیر استثنا با کمک کوئری بالا - var contractWithInstitutionContract = contractWorkshopEmployer.Where(x => x.Employer.ContractingPartyId != 30428 && contractFindHasInstitutionContract.Contains(x.Employer.ContractingPartyId)).GroupBy(x => x.WorkshopId).Select(x => x.Key); + var contractWithInstitutionContract = contractWorkshopEmployer.Where(x => x.Employer.ContractingPartyId != 30428 && contractFindHasInstitutionContract + .Contains(x.Employer.ContractingPartyId)).GroupBy(x => x.WorkshopId) + .Select(x => x.Key).ToList(); //ترکیب کارگاه های استثنا و دارای قراداد - var contractMixWitAndWitOut = contractWithInstitutionContract.Concat(contractWithOutInstitutionContract); + var contractMixWitAndWitOut = contractWithInstitutionContract.Concat(contractWithOutInstitutionContract).ToList(); //تمام پرسنل فعال برای قراداد در ماه مورد نظر @@ -251,6 +261,7 @@ public class ReportRepository : IReportRepository //تمام قرارداد های ایجاد شده ماه مورد نظر var allContractLeftworkEmployeeIds = allContractLeftworks.Select(x => x.EmployeeId); + var allContracToBeTople = allContractLeftworks.Select(x => new { x.EmployeeId , x.WorkshopId}).ToList(); var allContractLeftworkWorkshopIds = allContractLeftworks.Select(x => x.WorkshopId).ToList(); var allContractCreated = _context.Contracts .Where(x => allContractLeftworkEmployeeIds.Contains(x.EmployeeId)) @@ -313,8 +324,9 @@ public class ReportRepository : IReportRepository var checkoutAccountGroupresult = checkoutAccountGroup.Select(grouped => { - - int checkoutToBe = allCheckoutLeftworkWorkshopIds.Count(n => grouped.WorkshopList.Contains(n)); + var toBe = allCheckoutToBeTople.Where(n => grouped.WorkshopList.Contains(n.WorkshopId)).GroupBy(n => n.EmployeeId).Select(n => n.Key).ToList(); + int checkoutToBe = toBe.Count; + //int checkoutToBe = allCheckoutLeftworkWorkshopIds.Count(n => grouped.WorkshopList.Contains(n)); int createdCheckouts = allChekoutCreated.Count(n => grouped.WorkshopList.Contains(n)); int signedCheckout = allCheckoutSignedList.Count(n => grouped.WorkshopList.Contains(n)); @@ -356,8 +368,8 @@ public class ReportRepository : IReportRepository var contractAccountGroupResult = contractAccountGroup.Select(grouped => { - - int contractToBe = allContractLeftworkWorkshopIds.Count(n => grouped.WorkshopList.Contains(n)); + var toBe = allContracToBeTople.Where(n => grouped.WorkshopList.Contains(n.WorkshopId)).GroupBy(n=>n.EmployeeId).Select(n=>n.Key).ToList(); + int contractToBe = toBe.Count; int createdContracts = allContractCreatedlist.Count(n => grouped.WorkshopList.Contains(n)); int signedContracts = allContractSignedList.Count(n => grouped.WorkshopList.Contains(n)); if (contractToBe > 0) @@ -389,7 +401,7 @@ public class ReportRepository : IReportRepository //قرارداد - var contractPercent = (createdContracts * 100) / contractToBe; + var contractPercent = contractToBe > 0 ? (createdContracts * 100) / contractToBe : 0; //امضاء قراداد var contractSignaturePercent = createdContracts > 0 ? (signedContracts * 100) / createdContracts : 0; // تصفیه @@ -817,12 +829,17 @@ public class ReportRepository : IReportRepository //قرارداد هایی که امضاء شده var allContractSigned = allContractCreated.Count(x => x.Signature == "1"); Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); - var workshops = _context.Workshops.Where(x => allContractLeftworksWorkshopIdList.Contains(x.id)).ToList(); + var workshops = _context.Workshops.Include(x=>x.LeftWorks).Where(x => allContractLeftworksWorkshopIdList.Contains(x.id)).ToList(); var workshopListResult = workshops - .Select(workshop => - { - var contractToBe = allContractLeftworkEmployeeIdsList.Count(x=> x.WorkshopId == workshop.id); - var contractCreated = allContractCreatedWorkshopIdList.Count(x => x.WorkshopIds == workshop.id); + .Select(workshop => + { + var toBe = workshop.LeftWorks.Where(x => + x.StartWorkDate <= nextMonthEnd && x.LeftWorkDate > nextMonthStart) + .GroupBy(x => x.EmployeeId) + .Select(x => x.Key).ToList(); + var contractToBe = toBe.Count(); + //var contractToBe = allContractLeftworkEmployeeIdsList.Count(x=> x.WorkshopId == workshop.id); + var contractCreated = allContractCreatedWorkshopIdList.Count(x => x.WorkshopIds == workshop.id); if (contractToBe > 0) { return new workshopSearch() @@ -1257,11 +1274,16 @@ public class ReportRepository : IReportRepository //قرارداد هایی که امضاء شده var allContractSigned = allContractCreated.Count(x => x.Signature == "1"); Console.WriteLine("ajax 1 >>>>>: " + watch.Elapsed); - var workshops = _context.Workshops.Where(x => allContractLeftworkWorkshopIds.Contains(x.id)).ToList(); + var workshops = _context.Workshops.Include(x=>x.LeftWorks).Where(x => allContractLeftworkWorkshopIds.Contains(x.id)).ToList(); var workshopListResult = workshops .Select(workshop => { - var contractToBe = allContractToBe.Count(x => x.WorkshopId == workshop.id); + var toBe = workshop.LeftWorks.Where(x => + x.StartWorkDate <= currentMonthEnd && x.LeftWorkDate > currentMonthStart) + .GroupBy(x => x.EmployeeId) + .Select(x => x.Key).ToList(); + var contractToBe = toBe.Count(); + //var contractToBe = allContractToBe.Count(x => x.WorkshopId == workshop.id); var contractCreated = createdContractTople.Count(x => x.WorkshopId == workshop.id); if (contractToBe > 0) {