|
@@ -166,12 +166,12 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
public PageResult<ExpenseOrderDO> getExpenseBillPage(ExpenseBillPageReqVO pageReqVO) {
|
|
public PageResult<ExpenseOrderDO> getExpenseBillPage(ExpenseBillPageReqVO pageReqVO) {
|
|
|
Page<ExpenseOrderDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
|
Page<ExpenseOrderDO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
|
|
List<ExpenseOrderDO> list = expenseOrderMapper.getExpenseBillPage(page, pageReqVO);
|
|
List<ExpenseOrderDO> list = expenseOrderMapper.getExpenseBillPage(page, pageReqVO);
|
|
|
- Map<String,BigDecimal> categoryAmountMap = new HashMap<>();
|
|
|
|
|
- Map<Integer,String> typeCategoryMap = new HashMap<>();
|
|
|
|
|
for (ExpenseOrderDO expenseOrderDO : list) {
|
|
for (ExpenseOrderDO expenseOrderDO : list) {
|
|
|
|
|
+ Map<String,BigDecimal> categoryAmountMap = new HashMap<>();
|
|
|
|
|
+ Map<Integer,String> typeCategoryMap = new HashMap<>();
|
|
|
BigDecimal otherAmount = BigDecimal.ZERO;
|
|
BigDecimal otherAmount = BigDecimal.ZERO;
|
|
|
BigDecimal otherRoundAmount = BigDecimal.ZERO;
|
|
BigDecimal otherRoundAmount = BigDecimal.ZERO;
|
|
|
- BigDecimal paidAmount = BigDecimal.ZERO;
|
|
|
|
|
|
|
+ BigDecimal payAmountTotal = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
String fullBedName = buildService.getFullBedName(expenseOrderDO.getElderId());
|
|
String fullBedName = buildService.getFullBedName(expenseOrderDO.getElderId());
|
|
|
expenseOrderDO.setBedName(fullBedName);
|
|
expenseOrderDO.setBedName(fullBedName);
|
|
@@ -184,44 +184,63 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
List<ExpensePayOrderDO> payInfos = expensePayOrderMapper.selectList(new LambdaQueryWrapperX<ExpensePayOrderDO>()
|
|
List<ExpensePayOrderDO> payInfos = expensePayOrderMapper.selectList(new LambdaQueryWrapperX<ExpensePayOrderDO>()
|
|
|
.eq(ExpensePayOrderDO::getExpenseOrderId, expenseOrderDO.getId()));
|
|
.eq(ExpensePayOrderDO::getExpenseOrderId, expenseOrderDO.getId()));
|
|
|
for (ExpensePayOrderDO payInfo : payInfos) {
|
|
for (ExpensePayOrderDO payInfo : payInfos) {
|
|
|
- paidAmount = paidAmount.add(payInfo.getRoundPayTwoDecimalAmount() == null ? BigDecimal.ZERO : payInfo.getRoundPayTwoDecimalAmount());
|
|
|
|
|
|
|
+ payAmountTotal = payAmountTotal.add(payInfo.getRoundPayTwoDecimalAmount() == null ? BigDecimal.ZERO : payInfo.getRoundPayTwoDecimalAmount());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
for (ExpenseOrderItemDO orderItem : orderItems) {
|
|
for (ExpenseOrderItemDO orderItem : orderItems) {
|
|
|
String categoryKey = StringUtils.isBlank(orderItem.getItemCategoryName()) ? "" :orderItem.getItemCategoryName().replaceAll("-", "").replace("/", "");
|
|
String categoryKey = StringUtils.isBlank(orderItem.getItemCategoryName()) ? "" :orderItem.getItemCategoryName().replaceAll("-", "").replace("/", "");
|
|
|
|
|
+ BigDecimal totalAmount = orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP);
|
|
|
if(orderItem.getExpenseSource().equals(BusinessConstants.EXPENSE_ITEM)){
|
|
if(orderItem.getExpenseSource().equals(BusinessConstants.EXPENSE_ITEM)){
|
|
|
if (orderItem.getType() != null && orderItem.getType() == 1) {
|
|
if (orderItem.getType() != null && orderItem.getType() == 1) {
|
|
|
typeCategoryMap.put(orderItem.getType(), categoryKey);
|
|
typeCategoryMap.put(orderItem.getType(), categoryKey);
|
|
|
- categoryAmountMap.put(categoryKey,orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
|
+ categoryAmountMap.compute(categoryKey, (k,v)->{
|
|
|
|
|
+ if(v == null){
|
|
|
|
|
+ v = BigDecimal.ZERO;
|
|
|
|
|
+ }
|
|
|
|
|
+ return v.add(totalAmount);
|
|
|
|
|
+ });
|
|
|
} else if (orderItem.getType() != null && orderItem.getType() == 2) {
|
|
} else if (orderItem.getType() != null && orderItem.getType() == 2) {
|
|
|
typeCategoryMap.put(orderItem.getType(), categoryKey);
|
|
typeCategoryMap.put(orderItem.getType(), categoryKey);
|
|
|
- categoryAmountMap.put(categoryKey,orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
|
+ categoryAmountMap.compute(categoryKey, (k,v)->{
|
|
|
|
|
+ if(v == null){
|
|
|
|
|
+ v = BigDecimal.ZERO;
|
|
|
|
|
+ }
|
|
|
|
|
+ return v.add(totalAmount);
|
|
|
|
|
+ });
|
|
|
} else if (orderItem.getType() != null && orderItem.getType() == 3) {
|
|
} else if (orderItem.getType() != null && orderItem.getType() == 3) {
|
|
|
typeCategoryMap.put(orderItem.getType(), categoryKey);
|
|
typeCategoryMap.put(orderItem.getType(), categoryKey);
|
|
|
- categoryAmountMap.put(categoryKey,orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
|
+ categoryAmountMap.compute(categoryKey, (k,v)->{
|
|
|
|
|
+ if(v == null){
|
|
|
|
|
+ v = BigDecimal.ZERO;
|
|
|
|
|
+ }
|
|
|
|
|
+ return v.add(totalAmount);
|
|
|
|
|
+ });
|
|
|
}else {
|
|
}else {
|
|
|
- otherAmount = otherAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
- otherRoundAmount = otherRoundAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
|
+ otherAmount = otherAmount.add(totalAmount);
|
|
|
|
|
+ otherRoundAmount = otherRoundAmount.add(totalAmount);
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
BigDecimal categoryAmount = categoryAmountMap.get(categoryKey);
|
|
BigDecimal categoryAmount = categoryAmountMap.get(categoryKey);
|
|
|
if(categoryAmount != null){
|
|
if(categoryAmount != null){
|
|
|
- categoryAmountMap.put(categoryKey,categoryAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP)));
|
|
|
|
|
|
|
+ categoryAmountMap.put(categoryKey,categoryAmount.add(totalAmount));
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
- otherAmount = otherAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
- otherRoundAmount = otherRoundAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
|
+ otherAmount = otherAmount.add(totalAmount);
|
|
|
|
|
+ otherRoundAmount = otherRoundAmount.add(totalAmount);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
expenseOrderDO.setBedAmount(categoryAmountMap.getOrDefault(typeCategoryMap.get(1),BigDecimal.ZERO));
|
|
expenseOrderDO.setBedAmount(categoryAmountMap.getOrDefault(typeCategoryMap.get(1),BigDecimal.ZERO));
|
|
|
expenseOrderDO.setNurseAmount(categoryAmountMap.getOrDefault(typeCategoryMap.get(2),BigDecimal.ZERO));
|
|
expenseOrderDO.setNurseAmount(categoryAmountMap.getOrDefault(typeCategoryMap.get(2),BigDecimal.ZERO));
|
|
|
expenseOrderDO.setMealAmount(categoryAmountMap.getOrDefault(typeCategoryMap.get(3),BigDecimal.ZERO));
|
|
expenseOrderDO.setMealAmount(categoryAmountMap.getOrDefault(typeCategoryMap.get(3),BigDecimal.ZERO));
|
|
|
expenseOrderDO.setOtherAmount(otherAmount);
|
|
expenseOrderDO.setOtherAmount(otherAmount);
|
|
|
- expenseOrderDO.setPayableAmount(expenseOrderDO.getBedAmount().add(expenseOrderDO.getNurseAmount()).add(expenseOrderDO.getMealAmount()).add(expenseOrderDO.getOtherAmount()).setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
expenseOrderDO.setOtherRoundAmount(otherRoundAmount);
|
|
expenseOrderDO.setOtherRoundAmount(otherRoundAmount);
|
|
|
- expenseOrderDO.setPaidAmount(paidAmount.setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
|
|
+ expenseOrderDO.setPaidAmount(payAmountTotal.setScale(2, RoundingMode.HALF_UP));
|
|
|
|
|
+ expenseOrderDO.setActualAmount(expenseOrderDO.getBedAmount()
|
|
|
|
|
+ .add(expenseOrderDO.getNurseAmount())
|
|
|
|
|
+ .add(expenseOrderDO.getMealAmount())
|
|
|
|
|
+ .add(expenseOrderDO.getOtherAmount())
|
|
|
|
|
+ .setScale(2, RoundingMode.HALF_UP));
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
return new PageResult<>(list, page.getTotal());
|
|
return new PageResult<>(list, page.getTotal());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -378,6 +397,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
payOrder.setCreatedTime(saveReqVO.getPayTime());
|
|
payOrder.setCreatedTime(saveReqVO.getPayTime());
|
|
|
payOrder.setType(BusinessConstants.EXPENSE_PAY_ORDER_MONTH);
|
|
payOrder.setType(BusinessConstants.EXPENSE_PAY_ORDER_MONTH);
|
|
|
payOrder.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
payOrder.setCreatedBy(SecurityFrameworkUtils.getLoginUserNickname());
|
|
|
|
|
+ payOrder.setRemarks(saveReqVO.getRemarks());
|
|
|
payOrder.setTenantId(expenseOrder.getTenantId());
|
|
payOrder.setTenantId(expenseOrder.getTenantId());
|
|
|
expensePayOrderMapper.insert(payOrder);
|
|
expensePayOrderMapper.insert(payOrder);
|
|
|
|
|
|
|
@@ -446,7 +466,9 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
}
|
|
}
|
|
|
boolean isPartialPay = false;
|
|
boolean isPartialPay = false;
|
|
|
if (items.size() == 1 && items.size() == saveReqVO.getExpenseOrderItems().size()) {
|
|
if (items.size() == 1 && items.size() == saveReqVO.getExpenseOrderItems().size()) {
|
|
|
- isPartialPay = !items.get(0).getPayAmount().equals(saveReqVO.getExpenseOrderItems().get(0).getTotalAmount());
|
|
|
|
|
|
|
+ ExpenseOrderItemDO expenseOrderItemDO = saveReqVO.getExpenseOrderItems().get(0);
|
|
|
|
|
+ BigDecimal needPayAmount = expenseOrderItemDO.getTotalAmount().subtract(expenseOrderItemDO.getPayAmount() == null ? BigDecimal.ZERO : expenseOrderItemDO.getPayAmount());
|
|
|
|
|
+ isPartialPay = !items.get(0).getPayAmount().equals(needPayAmount);
|
|
|
}
|
|
}
|
|
|
//修改勾选的收费项状态
|
|
//修改勾选的收费项状态
|
|
|
for (ExpenseOrderItemDO expenseOrderItem : saveReqVO.getExpenseOrderItems()) {
|
|
for (ExpenseOrderItemDO expenseOrderItem : saveReqVO.getExpenseOrderItems()) {
|
|
@@ -455,7 +477,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
expenseOrderItem.setPayOrderId(payOrder.getId());
|
|
expenseOrderItem.setPayOrderId(payOrder.getId());
|
|
|
// 某个项目部分缴费,只能是一个
|
|
// 某个项目部分缴费,只能是一个
|
|
|
if(isPartialPay){
|
|
if(isPartialPay){
|
|
|
- expenseOrderItem.setPayAmount(items.get(0).getPayAmount());
|
|
|
|
|
|
|
+ expenseOrderItem.setPayAmount(items.get(0).getPayAmount().add(expenseOrderItem.getPayAmount() == null ? BigDecimal.ZERO : expenseOrderItem.getPayAmount()));
|
|
|
}else {
|
|
}else {
|
|
|
expenseOrderItem.setPayAmount(expenseOrderItem.getTotalAmount());
|
|
expenseOrderItem.setPayAmount(expenseOrderItem.getTotalAmount());
|
|
|
}
|
|
}
|
|
@@ -559,7 +581,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
List<ExpenseOrderItemDO> expenseOrderItems = expenseOrderItemMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderItemDO>()
|
|
List<ExpenseOrderItemDO> expenseOrderItems = expenseOrderItemMapper.selectList(new LambdaQueryWrapperX<ExpenseOrderItemDO>()
|
|
|
.eq(ExpenseOrderItemDO::getExpenseOrderId, expenseOrder.getId())
|
|
.eq(ExpenseOrderItemDO::getExpenseOrderId, expenseOrder.getId())
|
|
|
.eq(ExpenseOrderItemDO::getIsShow, BooleanEnum.TRUE.getValue()));
|
|
.eq(ExpenseOrderItemDO::getIsShow, BooleanEnum.TRUE.getValue()));
|
|
|
- List<ExpenseOrderItemDO> paySuccessCollect = expenseOrderItems.stream().filter(e -> !Objects.equals(e.getPayStatus(), BooleanEnum.FALSE.getValue())).collect(Collectors.toList());
|
|
|
|
|
|
|
+ List<ExpenseOrderItemDO> paySuccessCollect = expenseOrderItems.stream().filter(e -> Objects.equals(e.getPayStatus(), BooleanEnum.TRUE.getValue())).collect(Collectors.toList());
|
|
|
if (expenseOrder.getPayableAmount() == null) {
|
|
if (expenseOrder.getPayableAmount() == null) {
|
|
|
expenseOrder.setPayableAmount(BigDecimal.ZERO);
|
|
expenseOrder.setPayableAmount(BigDecimal.ZERO);
|
|
|
}
|
|
}
|