From c67b362b829921e816e614d8646f9790f24e97a3 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Tue, 6 Aug 2024 19:37:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=8C=E4=B8=9A=E7=97=85=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OccupationalDiseaseReportAppService.cs | 115 ++++++++++++++++-- 1 file changed, 108 insertions(+), 7 deletions(-) diff --git a/src/Shentun.Peis.Application/OccupationalDiseaseReports/OccupationalDiseaseReportAppService.cs b/src/Shentun.Peis.Application/OccupationalDiseaseReports/OccupationalDiseaseReportAppService.cs index b9f51b4..f1086fd 100644 --- a/src/Shentun.Peis.Application/OccupationalDiseaseReports/OccupationalDiseaseReportAppService.cs +++ b/src/Shentun.Peis.Application/OccupationalDiseaseReports/OccupationalDiseaseReportAppService.cs @@ -132,7 +132,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports #endregion - + var patientRegisterList = query.ToList(); var msg = new GetCompanyOccupationalDiseaseSummaryReportDto @@ -190,7 +190,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports foreach (var item in occupationalAbnormalList) { var conclusionCount = patientRegisterList.Where(m => m.patientPoisonHaveEmpty.OccupationalAbnormalId == item.Id).Select(s => s.patientRegister.Id).Distinct().Count(); - var conclusionRatio = Convert.ToDecimal(conclusionCount * 100) / patientRegisters.Count; + var conclusionRatio = Decimal.Round(Convert.ToDecimal(conclusionCount * 100) / patientRegisters.Count, 2); var conclusionDetail = new GetCompanyOccupationalDiseaseSummaryReportConclusionDetailDto { ConclusionName = item.DisplayName, @@ -207,19 +207,25 @@ namespace Shentun.Peis.OccupationalDiseaseReports //相关检查情况 - var asbitemAbnormalQuery = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + var asbitemAbnormalQuery = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id into asbitemTemp from asbitemHaveEmpty in asbitemTemp.DefaultIfEmpty() join registerCheckSummary in await _registerCheckSummaryRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckSummary.RegisterCheckId - //where !registerCheckSummary.Summary.Contains("未见异常") + join patientOccupationalDisease in await _patientOccupationalDiseaseRepository.GetQueryableAsync() on patientRegister.Id equals patientOccupationalDisease.PatientRegisterId + where patientRegister.CustomerOrgRegisterId == customerOrgPara.CustomerOrgRegisterId + &&!registerCheckSummary.Summary.Contains("未见异常") + && patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck select new { patientRegister, asbitemName = asbitemHaveEmpty.DisplayName }); + + + if (!string.IsNullOrEmpty(customerOrgPara.StartDate) && !string.IsNullOrEmpty(customerOrgPara.EndDate)) { if (customerOrgPara.DateType == '1') @@ -245,7 +251,9 @@ namespace Shentun.Peis.OccupationalDiseaseReports asbitemAbnormalQuery = asbitemAbnormalQuery.Where(m => m.patientRegister.CustomerOrgGroupId != null && customerOrgPara.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value)); } - + + var ggggg = asbitemAbnormalQuery.ToQueryString(); + var asbitemAbnormalList = asbitemAbnormalQuery.ToList(); @@ -257,7 +265,7 @@ namespace Shentun.Peis.OccupationalDiseaseReports { AbnormalAsbitemName = s.Key, AbnormalCount = s.Select(ss => ss.patientRegister.Id).Distinct().Count(), - AbnormalRatio = Convert.ToDecimal(s.Select(ss => ss.patientRegister.Id).Distinct().Count() * 100) / abnormalSumCount, + AbnormalRatio = Decimal.Round(Convert.ToDecimal(s.Select(ss => ss.patientRegister.Id).Distinct().Count() * 100) / abnormalSumCount, 2), DisplayOrder = index + 1 }).ToList(); @@ -290,10 +298,103 @@ namespace Shentun.Peis.OccupationalDiseaseReports if (customerOrgPara.CustomerOrgRegisterId == null || customerOrgPara.CustomerOrgRegisterId == Guid.Empty) throw new UserFriendlyException("单位体检次数不能为空"); + #region 人员信息 + var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join patientOccupationalDisease in await _patientOccupationalDiseaseRepository.GetQueryableAsync() on patientRegister.Id equals patientOccupationalDisease.PatientRegisterId + join patientPoison in await _patientPoisonRepository.GetQueryableAsync() on patientRegister.Id equals patientPoison.PatientRegisterId into patientPoisonTemp + from patientPoisonHaveEmpty in patientPoisonTemp.DefaultIfEmpty() + join poison in await _poisonRepository.GetQueryableAsync() on patientPoisonHaveEmpty.PoisonId equals poison.Id into poisonTemp + from posionHaveEmpty in poisonTemp.DefaultIfEmpty() + join occupationalAbnormal in await _occupationalAbnormalRepository.GetQueryableAsync() on patientPoisonHaveEmpty.OccupationalAbnormalId equals occupationalAbnormal.Id into occupationalAbnormalTemp + from occupationalAbnormalHaveEmpty in occupationalAbnormalTemp.DefaultIfEmpty() + where patientRegister.CustomerOrgRegisterId == customerOrgPara.CustomerOrgRegisterId + && patientRegister.CompleteFlag == PatientRegisterCompleteFlag.SumCheck + select new + { + patientRegister, + patientOccupationalDisease, + posionHaveEmpty, + patientPoisonHaveEmpty, + occupationalAbnormalHaveEmpty + }; + + + if (!string.IsNullOrEmpty(customerOrgPara.StartDate) && !string.IsNullOrEmpty(customerOrgPara.EndDate)) + { + if (customerOrgPara.DateType == '1') + { + query = query.Where(m => m.patientRegister.CreationTime >= Convert.ToDateTime(customerOrgPara.StartDate) && + m.patientRegister.CreationTime < Convert.ToDateTime(customerOrgPara.EndDate).AddDays(1)); + } + else if (customerOrgPara.DateType == '2') + { + query = query.Where(m => m.patientRegister.MedicalStartDate != null && m.patientRegister.MedicalStartDate.Value >= Convert.ToDateTime(customerOrgPara.StartDate) && + m.patientRegister.MedicalStartDate.Value < Convert.ToDateTime(customerOrgPara.EndDate).AddDays(1)); + } + else if (customerOrgPara.DateType == '3') + { + query = query.Where(m => m.patientRegister.SummaryDate != null && m.patientRegister.SummaryDate.Value >= Convert.ToDateTime(customerOrgPara.StartDate) && + m.patientRegister.SummaryDate.Value < Convert.ToDateTime(customerOrgPara.EndDate).AddDays(1)); + } + } + + + if (customerOrgPara.CustomerOrgGroupId.Any()) + { + query = query.Where(m => m.patientRegister.CustomerOrgGroupId != null && customerOrgPara.CustomerOrgGroupId.Contains(m.patientRegister.CustomerOrgGroupId.Value)); + } + + #endregion + + + var patientRegisterList = query.ToList(); + + + var msg = new GetCompanyOccupationalDiseaseDetailReportDto + { + MedicalResultDesc = "", + DiagnosisAndTreatmentDetails = new List(), + ListOfMissingItemsDetails = new List(), + MedicalResultAbnormalRateDetails = new List(), + MedicalResultDetails = new List(), + OcCheckTypeDetails = new List(), + OcCheckTypeNames = new List(), + OccupationalAbnormalDetails = new List(), + OccupationalContraindicationDetails = new List(), + ReviewPersonnelDetails = new List(), + SuspectedOccupationalDiseaseDetails = new List() + }; + + + if (patientRegisterList.Any()) + { + + //人员id + var patientRegisters = query.Select(m => m.patientRegister).Distinct().ToList(); + + var patientRegisterfisrt = query.First(); + + msg.CertificateNo = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "medical_center_qualification_certificate_number"); + msg.CustomerOrgName = await _cacheService.GetTopCustomerOrgNameAsync(patientRegisterfisrt.patientRegister.CustomerOrgId); + msg.MedicalCenterName = (await _organizationUnitRepository.GetAsync(patientRegisterfisrt.patientRegister.MedicalCenterId)).DisplayName; + msg.MedicalStartDate = Convert.ToDateTime(customerOrgPara.StartDate).ToString("yyyy年MM月dd日"); + msg.RecordNumber = await _sysParmValueManager.GetSysParmValueAsync(Guid.Empty, "medical_center_record_number"); + msg.ReportDate = DateTime.Now.ToString("yyyy年MM月dd日"); + - return new GetCompanyOccupationalDiseaseDetailReportDto(); + + + + } + + + + + + + return msg; }