diff --git a/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/GetIsOutsendAsbitemByLisBarCodeInputDto.cs b/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/GetIsOutsendAsbitemByLisBarCodeInputDto.cs index c1d77cd2..0eefbe81 100644 --- a/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/GetIsOutsendAsbitemByLisBarCodeInputDto.cs +++ b/src/Shentun.Peis.Application.Contracts/ThirdPartyPublicInterfaces/GetIsOutsendAsbitemByLisBarCodeInputDto.cs @@ -6,6 +6,11 @@ namespace Shentun.Peis.ThirdPartyPublicInterfaces { public class GetIsOutsendAsbitemByLisBarCodeInputDto { + /// + /// dian-迪安 + /// + public string SourceFlag { get; set; } + /// /// 条码号 /// diff --git a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs index 298ba6ba..8e033f24 100644 --- a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs +++ b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs @@ -3758,6 +3758,331 @@ namespace Shentun.Peis.CustomerReports } + ///// + ///// 单位实收统计 + ///// + ///// + //[HttpPost("api/app/CustomerReport/GetCustomerOrgAmountReceivedStatistics")] + //public async Task> GetCustomerOrgAmountReceivedStatisticsAsync(GetCustomerOrgAmountReceivedStatisticsInputDto input) + //{ + // var query = from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + // join customerOrg in await _customerOrgRepository.GetQueryableAsync() on patientRegister.CustomerOrgId equals customerOrg.Id + // join customerOrgRegister in await _customerOrgRegisterRepository.GetQueryableAsync() on patientRegister.CustomerOrgRegisterId equals customerOrgRegister.Id + // join charge in await _chargeRepository.GetQueryableAsync() on patientRegister.Id equals charge.PatientRegisterId + // join chargePay in await _chargePayRepository.GetQueryableAsync() on charge.Id equals chargePay.ChargeId + // join payMode in await _payModeRepository.GetQueryableAsync() on chargePay.PayModeId equals payMode.Id + // join chargeBack in await _chargeBackRepository.GetQueryableAsync() on charge.Id equals chargeBack.ChargeId into chargeBackTemp + // from chargeBackHaveEmpty in chargeBackTemp.DefaultIfEmpty() + // join chargeBackPay in await _chargeBackPayRepository.GetQueryableAsync() on chargeBackHaveEmpty.Id equals chargeBackPay.ChargeBackId into chargeBackPayTemp + // from chargeBackPayHaveEmpty in chargeBackPayTemp.DefaultIfEmpty() + // join backPayMode in await _payModeRepository.GetQueryableAsync() on chargeBackPayHaveEmpty.PayModeId equals backPayMode.Id into backPayModeTemp + // from backPayModeHaveEmpty in backPayModeTemp.DefaultIfEmpty() + // select new + // { + // patientRegister, + // customerOrg, + // customerOrgRegister, + // charge, + // chargePay, + // chargePayModeName = payMode.DisplayName, + // chargeBackHaveEmpty, + // chargeBackPayHaveEmpty, + // backPayModeName = backPayModeHaveEmpty != null ? backPayModeHaveEmpty.DisplayName : "" + // }; + + + + // if (input.CustomerOrgIds.Any()) + // { + // List CustomerOrgIds = new List(); + + // foreach (var item in input.CustomerOrgIds) + // { + // CustomerOrgIds.AddRange(await _customerOrgManager.GetCustomerOrgChildrenId(item)); + // } + + // query = query.Where(m => CustomerOrgIds.Contains(m.patientRegister.CustomerOrgId)); + // } + + + // if (input.MedicalTypeIds.Any()) + // { + // query = query.Where(m => m.patientRegister.MedicalTypeId != null && input.MedicalTypeIds.Contains(m.patientRegister.MedicalTypeId.Value)); + // } + + // if (input.PersonnelTypeIds.Any()) + // { + // query = query.Where(m => m.patientRegister.PersonnelTypeId != null && input.PersonnelTypeIds.Contains(m.patientRegister.PersonnelTypeId.Value)); + // } + + // if (input.Salesmans.Any()) + // { + // query = query.Where(m => input.Salesmans.Contains(m.patientRegister.Salesman)); + // } + + // if (input.IsPreRegistration == 'N') + // { + // query = query.Where(m => m.patientRegister.CompleteFlag != PatientRegisterCompleteFlag.PreRegistration); + // } + + // if (input.PayModeIds.Any()) + // { + // query = query.Where(m => input.PayModeIds.Contains(m.chargePay.PayModeId)); + // } + + // if (input.FeeUserIds.Any()) + // { + // query = query.Where(c => input.FeeUserIds.Contains(c.charge.CreatorId.Value)); + // } + + // if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) + // { + // query = query.Where(c => c.charge.CreationTime >= Convert.ToDateTime(input.StartDate) && c.charge.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); + // } + + + // char groupMode = '0'; //0-按一级单位 1-按一级单位+体检次数 2-按部门 3-按部门+体检次数 + // if (input.IsChild == 'Y') + // { + // if (input.IsCustomerOrgRegister == 'Y') + // { + // groupMode = '3'; + // } + // else + // { + // groupMode = '2'; + // } + // } + // else + // { + // if (input.IsCustomerOrgRegister == 'Y') + // { + // groupMode = '1'; + // } + // else + // { + // groupMode = '0'; + // } + // } + + + // var groupQuery = query.ToList().GroupBy(g => g.patientRegister); + + // List entListDto = new List(); + // List tempList = new List(); + + // foreach (var item in groupQuery) + // { + // var tempEnt = new GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTemp + // { + // PatientRegisterId = item.Key.Id, + // DepartmentId = item.Key.CustomerOrgId, + // CustomerOrgId = (await _cacheService.GetTopCustomerOrgAsync(item.Key.CustomerOrgId)).Id, + // MedicalTimes = item.First().customerOrgRegister.MedicalTimes, + // ChargeCount = 1, + // RefundCount = 0 + // }; + + // tempEnt.ChargeDetail = item.GroupBy(g => g.chargePay).Select(s => new GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge + // { + // BillMoney = s.Key.ChargeMoney, + // PayModeName = s.First().chargePayModeName, + // BillFlag = '1' + // }).ToList(); + + // if (item.Count(m => m.chargeBackHaveEmpty != null) > 0) + // { + // tempEnt.RefundCount = 1; + + // tempEnt.RefundDetail = item.Where(m => m.chargeBackPayHaveEmpty != null).GroupBy(g => g.chargeBackPayHaveEmpty) + // .Select(s => new GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge + // { + // BillMoney = s.Key.BackMoeny, + // PayModeName = s.First().backPayModeName, + // BillFlag = '2' + // }).ToList(); + // } + + + // tempList.Add(tempEnt); + + // } + + // if (groupMode == '0') + // { + // var customerOrgIdGroup = tempList.GroupBy(g => g.CustomerOrgId); + // foreach (var item in customerOrgIdGroup) + // { + // var entDto = new GetCustomerOrgAmountReceivedStatisticsDto + // { + // ChargeCount = item.Sum(s => s.ChargeCount), + // RefundCount = item.Sum(s => s.RefundCount), + // CustomerOrgName = await _cacheService.GetCustomerOrgNameAsync(item.Key), + // MedicalTimes = 0, + // DepartmentName = "" + // }; + + // List payModeTemplist = new List(); + + // var chargeDetailList = item.Select(s => s.ChargeDetail).ToList(); + // var refundDetailList = item.Select(s => s.RefundDetail).ToList(); + + // foreach (var chargeDetail in chargeDetailList) + // { + // payModeTemplist.AddRange(chargeDetail); + // } + + // foreach (var refundDetail in refundDetailList) + // { + // payModeTemplist.AddRange(refundDetail); + // } + + // if (payModeTemplist.Any()) + // { + // entDto.FeeDetail = payModeTemplist.GroupBy(ga => ga.PayModeName).Select(s => new GetCustomerOrgAmountReceivedStatisticsFeeDetail + // { + // PayModeName = s.Key, + // ChargeMoney = s.Where(m => m.BillFlag == '1').Sum(s => s.BillMoney), + // RefundMoney = s.Where(m => m.BillFlag == '2').Sum(s => -s.BillMoney), + // }).ToList(); + // } + + // entListDto.Add(entDto); + // } + // } + // else if (groupMode == '1') + // { + // var customerOrgIdGroup = tempList.GroupBy(g => new { g.CustomerOrgId, g.MedicalTimes }); + // foreach (var item in customerOrgIdGroup) + // { + // var entDto = new GetCustomerOrgAmountReceivedStatisticsDto + // { + // ChargeCount = item.Sum(s => s.ChargeCount), + // RefundCount = item.Sum(s => s.RefundCount), + // MedicalTimes = item.Key.MedicalTimes, + // CustomerOrgName = await _cacheService.GetCustomerOrgNameAsync(item.Key.CustomerOrgId), + // DepartmentName = "" + // }; + + // List payModeTemplist = new List(); + + // var chargeDetailList = item.Select(s => s.ChargeDetail).ToList(); + // var refundDetailList = item.Select(s => s.RefundDetail).ToList(); + + // foreach (var chargeDetail in chargeDetailList) + // { + // payModeTemplist.AddRange(chargeDetail); + // } + + // foreach (var refundDetail in refundDetailList) + // { + // payModeTemplist.AddRange(refundDetail); + // } + + // if (payModeTemplist.Any()) + // { + // entDto.FeeDetail = payModeTemplist.GroupBy(ga => ga.PayModeName).Select(s => new GetCustomerOrgAmountReceivedStatisticsFeeDetail + // { + // PayModeName = s.Key, + // ChargeMoney = s.Where(m => m.BillFlag == '1').Sum(s => s.BillMoney), + // RefundMoney = s.Where(m => m.BillFlag == '2').Sum(s => -s.BillMoney), + // }).ToList(); + // } + + // entListDto.Add(entDto); + // } + // } + // else if (groupMode == '2') + // { + // var customerOrgIdGroup = tempList.GroupBy(g => g.DepartmentId); + // foreach (var item in customerOrgIdGroup) + // { + // var entDto = new GetCustomerOrgAmountReceivedStatisticsDto + // { + // ChargeCount = item.Sum(s => s.ChargeCount), + // RefundCount = item.Sum(s => s.RefundCount), + // CustomerOrgName = await _cacheService.GetCustomerOrgNameAsync(item.First().CustomerOrgId), + // DepartmentName = await _cacheService.GetCustomerOrgNameAsync(item.Key), + // MedicalTimes = 0 + // }; + + // List payModeTemplist = new List(); + + // var chargeDetailList = item.Select(s => s.ChargeDetail).ToList(); + // var refundDetailList = item.Select(s => s.RefundDetail).ToList(); + + // foreach (var chargeDetail in chargeDetailList) + // { + // payModeTemplist.AddRange(chargeDetail); + // } + + // foreach (var refundDetail in refundDetailList) + // { + // payModeTemplist.AddRange(refundDetail); + // } + + // if (payModeTemplist.Any()) + // { + // entDto.FeeDetail = payModeTemplist.GroupBy(ga => ga.PayModeName).Select(s => new GetCustomerOrgAmountReceivedStatisticsFeeDetail + // { + // PayModeName = s.Key, + // ChargeMoney = s.Where(m => m.BillFlag == '1').Sum(s => s.BillMoney), + // RefundMoney = s.Where(m => m.BillFlag == '2').Sum(s => -s.BillMoney), + // }).ToList(); + // } + + // entListDto.Add(entDto); + // } + // } + // else if (groupMode == '3') + // { + // var customerOrgIdGroup = tempList.GroupBy(g => new { g.DepartmentId, g.MedicalTimes }); + // foreach (var item in customerOrgIdGroup) + // { + // var entDto = new GetCustomerOrgAmountReceivedStatisticsDto + // { + // ChargeCount = item.Sum(s => s.ChargeCount), + // RefundCount = item.Sum(s => s.RefundCount), + // MedicalTimes = item.Key.MedicalTimes, + // CustomerOrgName = await _cacheService.GetCustomerOrgNameAsync(item.First().CustomerOrgId), + // DepartmentName = await _cacheService.GetCustomerOrgNameAsync(item.Key.DepartmentId) + // }; + + // List payModeTemplist = new List(); + + // var chargeDetailList = item.Select(s => s.ChargeDetail).ToList(); + // var refundDetailList = item.Select(s => s.RefundDetail).ToList(); + + // foreach (var chargeDetail in chargeDetailList) + // { + // payModeTemplist.AddRange(chargeDetail); + // } + + // foreach (var refundDetail in refundDetailList) + // { + // payModeTemplist.AddRange(refundDetail); + // } + + // if (payModeTemplist.Any()) + // { + // entDto.FeeDetail = payModeTemplist.GroupBy(ga => ga.PayModeName).Select(s => new GetCustomerOrgAmountReceivedStatisticsFeeDetail + // { + // PayModeName = s.Key, + // ChargeMoney = s.Where(m => m.BillFlag == '1').Sum(s => s.BillMoney), + // RefundMoney = s.Where(m => m.BillFlag == '2').Sum(s => -s.BillMoney), + // }).ToList(); + // } + + // entListDto.Add(entDto); + // } + // } + + // return entListDto; + + //} + + + /// /// 单位实收统计 /// @@ -3837,7 +4162,8 @@ namespace Shentun.Peis.CustomerReports if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate)) { - query = query.Where(c => c.charge.CreationTime >= Convert.ToDateTime(input.StartDate) && c.charge.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); + query = query.Where(c => (c.charge.CreationTime >= Convert.ToDateTime(input.StartDate) && c.charge.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)) || + (c.chargeBackHaveEmpty.CreationTime >= Convert.ToDateTime(input.StartDate) && c.chargeBackHaveEmpty.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1))); } @@ -3883,18 +4209,24 @@ namespace Shentun.Peis.CustomerReports RefundCount = 0 }; - tempEnt.ChargeDetail = item.GroupBy(g => g.chargePay).Select(s => new GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge + var chargeGroup = item.Where(c => c.charge.CreationTime >= Convert.ToDateTime(input.StartDate) && c.charge.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); + if (chargeGroup.Count() > 0) { - BillMoney = s.Key.ChargeMoney, - PayModeName = s.First().chargePayModeName, - BillFlag = '1' - }).ToList(); + tempEnt.ChargeDetail = chargeGroup.GroupBy(g => g.chargePay).Select(s => new GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge + { + BillMoney = s.Key.ChargeMoney, + PayModeName = s.First().chargePayModeName, + BillFlag = '1' + }).ToList(); + } - if (item.Count(m => m.chargeBackHaveEmpty != null) > 0) + var chargeBackGroup = item.Where(c => c.chargeBackHaveEmpty != null && c.chargeBackHaveEmpty.CreationTime >= Convert.ToDateTime(input.StartDate) && c.chargeBackHaveEmpty.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); + + if (chargeBackGroup.Count() > 0) { tempEnt.RefundCount = 1; - tempEnt.RefundDetail = item.Where(m => m.chargeBackPayHaveEmpty != null).GroupBy(g => g.chargeBackPayHaveEmpty) + tempEnt.RefundDetail = chargeBackGroup.GroupBy(g => g.chargeBackPayHaveEmpty) .Select(s => new GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge { BillMoney = s.Key.BackMoeny, @@ -4082,7 +4414,6 @@ namespace Shentun.Peis.CustomerReports } - /// /// 体检类别数据统计 营业额统计 ///