|
|
@@ -919,114 +919,12 @@ public class ElderlyInfoServiceImpl implements ElderlyInfoService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- CheckInRecordDetailRespVO detailRespVO = new CheckInRecordDetailRespVO();
|
|
|
ElderlyCheckInRecordDO checkInRecord = elderlyCheckInRecordMapper.selectOne(new LambdaQueryWrapperX<ElderlyCheckInRecordDO>()
|
|
|
.eq(ElderlyCheckInRecordDO::getElderId, elderlyInfo.getId())
|
|
|
.eq(ElderlyCheckInRecordDO::getCurrentFlag, 0)
|
|
|
.orderByDesc(ElderlyCheckInRecordDO::getCreatedTime)
|
|
|
.last("LIMIT 1"));
|
|
|
- if (checkInRecord != null) {
|
|
|
- CheckInRecordDetailRespVO currentCheckInDetail = getCheckInDetail(checkInRecord.getId());
|
|
|
- if (currentCheckInDetail != null) {
|
|
|
- detailRespVO.setStatus(currentCheckInDetail.getStatus());
|
|
|
- detailRespVO.setProcessInstanceId(currentCheckInDetail.getProcessInstanceId());
|
|
|
- detailRespVO.setType(currentCheckInDetail.getType());
|
|
|
- detailRespVO.setBpmStatus(currentCheckInDetail.getBpmStatus());
|
|
|
- }
|
|
|
- }
|
|
|
- detailRespVO.setElderId(String.valueOf(elderlyInfo.getId()));
|
|
|
- detailRespVO.setElderName(elderlyInfo.getElderName());
|
|
|
- detailRespVO.setElderAge(elderlyInfo.getElderAge() == null ? null : elderlyInfo.getElderAge().longValue());
|
|
|
- detailRespVO.setElderSex(elderlyInfo.getElderSex());
|
|
|
- detailRespVO.setIdCard(elderlyInfo.getIdCard());
|
|
|
- detailRespVO.setBedId(elderlyInfo.getBedId() == null ? null : String.valueOf(elderlyInfo.getBedId()));
|
|
|
- detailRespVO.setBedName(buildService.getFullBedName(elderlyInfo.getId()));
|
|
|
- detailRespVO.setIsPrivateRoom(elderlyInfo.getIsPrivateRoom());
|
|
|
- detailRespVO.setSpecialCareNotes(elderlyInfo.getSpecialCareNotes());
|
|
|
- detailRespVO.setTenantId(elderlyInfo.getTenantId());
|
|
|
- detailRespVO.setRelativesList(relativesMapper.selectList(new LambdaQueryWrapper<RelativesDO>()
|
|
|
- .eq(RelativesDO::getPeopleId, elderlyInfo.getId())));
|
|
|
- detailRespVO.setNurseLevelId(elderlyInfo.getNurseLevelId());
|
|
|
- NurseLevelDO nurseLevelDO = nurseLevelMapper.selectById(elderlyInfo.getNurseLevelId());
|
|
|
- detailRespVO.setNurseLevelName(nurseLevelDO == null ? elderlyInfo.getNurseLevelName() : nurseLevelDO.getNurseLevelName());
|
|
|
- detailRespVO.setCheckInTime(toLocalDate(elderlyContract.getBeginTime()));
|
|
|
- detailRespVO.setCheckInDeadlineTime(toLocalDate(elderlyContract.getExpireTime()));
|
|
|
- detailRespVO.setBirthday(elderlyInfo.getBirthday());
|
|
|
- detailRespVO.setPapersAddress(elderlyInfo.getPapersAddress());
|
|
|
- detailRespVO.setRegisteredResidenceAddress(elderlyInfo.getRegisteredResidenceAddress());
|
|
|
- detailRespVO.setPapersType(elderlyInfo.getPapersType());
|
|
|
-
|
|
|
- CheckInContractReqVO contractReqVO = new CheckInContractReqVO();
|
|
|
- BeanUtils.copyProperties(elderlyContract, contractReqVO);
|
|
|
- detailRespVO.setElderlyContractDO(contractReqVO);
|
|
|
-
|
|
|
- List<ExpenseDO> expenseList = expenseMapper.selectList(new LambdaQueryWrapperX<ExpenseDO>()
|
|
|
- .eq(ExpenseDO::getContractId, contractId)
|
|
|
- .orderByDesc(ExpenseDO::getCreatedTime));
|
|
|
- if (CollectionUtil.isEmpty(expenseList)) {
|
|
|
- detailRespVO.setExpenseItems(Collections.emptyList());
|
|
|
- detailRespVO.setMonthlyExpenses(Collections.emptyList());
|
|
|
- detailRespVO.setOneTimeExpenses(Collections.emptyList());
|
|
|
- detailRespVO.setStageExpenses(Collections.emptyList());
|
|
|
- return detailRespVO;
|
|
|
- }
|
|
|
-
|
|
|
- List<Long> expenseIds = expenseList.stream().map(ExpenseDO::getId).collect(Collectors.toList());
|
|
|
- List<ExpenseItemDO> expenseItems = expenseItemMapper.selectList(new LambdaQueryWrapperX<ExpenseItemDO>()
|
|
|
- .in(ExpenseItemDO::getExpenseId, expenseIds)
|
|
|
- .orderByAsc(ExpenseItemDO::getCreateTime)
|
|
|
- .orderByAsc(ExpenseItemDO::getId));
|
|
|
-
|
|
|
- detailRespVO.setExpenseItems(expenseItems);
|
|
|
- detailRespVO.setRemark(expenseList.stream()
|
|
|
- .map(ExpenseDO::getRemark)
|
|
|
- .filter(StringUtils::isNotBlank)
|
|
|
- .findFirst()
|
|
|
- .orElse(null));
|
|
|
- detailRespVO.setTotalAmount(expenseItems.stream()
|
|
|
- .map(this::resolveExpenseAmount)
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add));
|
|
|
-
|
|
|
- List<CheckInExpenseItemReqVo> allExpenseItems = expenseItems.stream().map(item -> {
|
|
|
- CheckInExpenseItemReqVo reqVo = new CheckInExpenseItemReqVo();
|
|
|
- BeanUtils.copyProperties(item, reqVo);
|
|
|
- return reqVo;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- detailRespVO.setMonthlyExpenses(allExpenseItems.stream()
|
|
|
- .filter(item -> Objects.equals(item.getIsMonthlyExpense(), 1))
|
|
|
- .collect(Collectors.toList()));
|
|
|
- detailRespVO.setOneTimeExpenses(allExpenseItems.stream()
|
|
|
- .filter(item -> Objects.equals(item.getIsOneTimeFee(), 1) || Objects.equals(item.getIsDeposit(), 1))
|
|
|
- .collect(Collectors.toList()));
|
|
|
- detailRespVO.setStageExpenses(allExpenseItems.stream()
|
|
|
- .filter(item -> !Objects.equals(item.getIsMonthlyExpense(), 1))
|
|
|
- .filter(item -> !Objects.equals(item.getIsOneTimeFee(), 1))
|
|
|
- .filter(item -> !Objects.equals(item.getIsDeposit(), 1))
|
|
|
- .collect(Collectors.toList()));
|
|
|
- detailRespVO.setBedType(allExpenseItems.stream()
|
|
|
- .filter(item -> Objects.equals(item.getType(), 1))
|
|
|
- .map(CheckInExpenseItemReqVo::getItemName)
|
|
|
- .filter(StringUtils::isNotBlank)
|
|
|
- .findFirst()
|
|
|
- .orElse(null));
|
|
|
- return detailRespVO;
|
|
|
- }
|
|
|
-
|
|
|
- private LocalDate toLocalDate(Date date) {
|
|
|
- return date == null ? null : date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
- }
|
|
|
-
|
|
|
- private BigDecimal resolveExpenseAmount(ExpenseItemDO expenseItem) {
|
|
|
- if (expenseItem.getTotalAmount() != null) {
|
|
|
- return expenseItem.getTotalAmount();
|
|
|
- }
|
|
|
- if (expenseItem.getActualAmount() != null) {
|
|
|
- return expenseItem.getActualAmount();
|
|
|
- }
|
|
|
- if (expenseItem.getAmount() != null) {
|
|
|
- return expenseItem.getAmount();
|
|
|
- }
|
|
|
- return BigDecimal.ZERO;
|
|
|
+ return getCheckInDetail(checkInRecord.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|