@ -3758,6 +3758,331 @@ namespace Shentun.Peis.CustomerReports
}
///// <summary>
///// 单位实收统计
///// </summary>
///// <returns></returns>
//[HttpPost("api/app/CustomerReport/GetCustomerOrgAmountReceivedStatistics")]
//public async Task<List<GetCustomerOrgAmountReceivedStatisticsDto>> 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<Guid?> CustomerOrgIds = new List<Guid?>();
// 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<GetCustomerOrgAmountReceivedStatisticsDto> entListDto = new List<GetCustomerOrgAmountReceivedStatisticsDto>();
// List<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTemp> tempList = new List<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTemp>();
// 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<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge> payModeTemplist = new List<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge>();
// 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<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge> payModeTemplist = new List<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge>();
// 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<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge> payModeTemplist = new List<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge>();
// 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<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge> payModeTemplist = new List<GetCustomerOrgAmountReceivedStatisticsByPatientRegisterTempCharge>();
// 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;
//}
/// <summary>
/// 单位实收统计
/// </summary>
@ -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 )
{
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
}
/// <summary>
/// 体检类别数据统计 营业额统计
/// </summary>