|
@@ -923,8 +923,8 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
respVO.setExpenseType(7);
|
|
respVO.setExpenseType(7);
|
|
|
respVO.setExpenseSource(BusinessConstants.LONG_TERM_CARE_INSURANCE);
|
|
respVO.setExpenseSource(BusinessConstants.LONG_TERM_CARE_INSURANCE);
|
|
|
respVO.setSourceExpenseItemId(subsidy.getId());
|
|
respVO.setSourceExpenseItemId(subsidy.getId());
|
|
|
- respVO.setPrice(subsidy.getAmount().negate());
|
|
|
|
|
- respVO.setTotalAmount(subsidy.getAmount().negate());
|
|
|
|
|
|
|
+ respVO.setPrice(subsidy.getAmount());
|
|
|
|
|
+ respVO.setTotalAmount(subsidy.getAmount());
|
|
|
respVO.setItemName("长护险抵扣");
|
|
respVO.setItemName("长护险抵扣");
|
|
|
respVO.setItemCategory("长护险");
|
|
respVO.setItemCategory("长护险");
|
|
|
respVO.setCount(1);
|
|
respVO.setCount(1);
|
|
@@ -958,8 +958,8 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
respVO.setExpenseType(7);
|
|
respVO.setExpenseType(7);
|
|
|
respVO.setExpenseSource(BusinessConstants.CONSUMER_VOUCHER);
|
|
respVO.setExpenseSource(BusinessConstants.CONSUMER_VOUCHER);
|
|
|
respVO.setSourceExpenseItemId(voucher.getId());
|
|
respVO.setSourceExpenseItemId(voucher.getId());
|
|
|
- respVO.setPrice(voucher.getAmount().negate());
|
|
|
|
|
- respVO.setTotalAmount(voucher.getAmount().negate());
|
|
|
|
|
|
|
+ respVO.setPrice(voucher.getAmount());
|
|
|
|
|
+ respVO.setTotalAmount(voucher.getAmount());
|
|
|
respVO.setItemName("消费券抵扣");
|
|
respVO.setItemName("消费券抵扣");
|
|
|
respVO.setItemCategory("消费券");
|
|
respVO.setItemCategory("消费券");
|
|
|
respVO.setCount(1);
|
|
respVO.setCount(1);
|
|
@@ -1068,6 +1068,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
+ @Transactional
|
|
|
public void generateExpenseBill(ExpenseOrderSaveVO saveVO) {
|
|
public void generateExpenseBill(ExpenseOrderSaveVO saveVO) {
|
|
|
// 获取长者信息,用于判断入住类型
|
|
// 获取长者信息,用于判断入住类型
|
|
|
ElderlyInfoDO elderlyInfo = elderlyInfoMapper.selectById(saveVO.getElderId());
|
|
ElderlyInfoDO elderlyInfo = elderlyInfoMapper.selectById(saveVO.getElderId());
|
|
@@ -1104,7 +1105,7 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
// 单个处理时校验账单是否已缴费
|
|
// 单个处理时校验账单是否已缴费
|
|
|
isExpenseOrderPay(dbExpenseOrder);
|
|
isExpenseOrderPay(dbExpenseOrder);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ List<ExpenseOrderItemDO> preHandleConsumerVouchers = new ArrayList<>();
|
|
|
if (dbExpenseOrder == null) {
|
|
if (dbExpenseOrder == null) {
|
|
|
//当前月份不存在账单,生成新的账单
|
|
//当前月份不存在账单,生成新的账单
|
|
|
ExpenseOrderDO expenseOrder = new ExpenseOrderDO();
|
|
ExpenseOrderDO expenseOrder = new ExpenseOrderDO();
|
|
@@ -1147,6 +1148,9 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
if (item.getExpenseSource().equals(BusinessConstants.DISCOUNT_DEDUCTION)) {
|
|
if (item.getExpenseSource().equals(BusinessConstants.DISCOUNT_DEDUCTION)) {
|
|
|
addDiscountRecord(saveVO.getElderId(), saveVO.getBillingMonth(), item);
|
|
addDiscountRecord(saveVO.getElderId(), saveVO.getBillingMonth(), item);
|
|
|
}
|
|
}
|
|
|
|
|
+ if(item.getExpenseSource().equals(BusinessConstants.CONSUMER_VOUCHER)){
|
|
|
|
|
+ preHandleConsumerVouchers.add(orderItem);
|
|
|
|
|
+ }
|
|
|
//判断是否生成过账单(用于标记那些生成账单后再生成的费用项)
|
|
//判断是否生成过账单(用于标记那些生成账单后再生成的费用项)
|
|
|
DailyExpensesDO dailyExpenses = dailyExpensesMapper.selectById(item.getSourceExpenseItemId());
|
|
DailyExpensesDO dailyExpenses = dailyExpensesMapper.selectById(item.getSourceExpenseItemId());
|
|
|
if (dailyExpenses != null) {
|
|
if (dailyExpenses != null) {
|
|
@@ -1163,6 +1167,8 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
|
|
|
|
|
totalAmount = totalAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.DOWN));
|
|
totalAmount = totalAmount.add(orderItem.getTotalAmount().setScale(2, RoundingMode.DOWN));
|
|
|
}
|
|
}
|
|
|
|
|
+ // 消费券处理
|
|
|
|
|
+ updateElderlyConsumerVouchers(preHandleConsumerVouchers,expenseOrder.getBillOrderNumber());
|
|
|
expenseOrder.setActualAmount(totalAmount);
|
|
expenseOrder.setActualAmount(totalAmount);
|
|
|
expenseOrderMapper.updateById(expenseOrder);
|
|
expenseOrderMapper.updateById(expenseOrder);
|
|
|
} else {
|
|
} else {
|
|
@@ -1208,6 +1214,8 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
expenseSubsidyMapper.updateById(expenseSubsidyDO);
|
|
expenseSubsidyMapper.updateById(expenseSubsidyDO);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 消费券处理
|
|
|
|
|
+ updateElderlyConsumerVouchers(preHandleConsumerVouchers,dbExpenseOrder.getBillOrderNumber());
|
|
|
dbExpenseOrder.setPayStatus(BooleanEnum.FALSE.getValue());
|
|
dbExpenseOrder.setPayStatus(BooleanEnum.FALSE.getValue());
|
|
|
// dbExpenseOrder.setPayableAmount(amount); //更新总金额
|
|
// dbExpenseOrder.setPayableAmount(amount); //更新总金额
|
|
|
dbExpenseOrder.setActualAmount(dbExpenseOrder.getActualAmount().add(amount));
|
|
dbExpenseOrder.setActualAmount(dbExpenseOrder.getActualAmount().add(amount));
|
|
@@ -2793,7 +2801,6 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
// 3. 删除账单明细项
|
|
// 3. 删除账单明细项
|
|
|
List<ExpenseOrderItemDO> orderItems = expenseOrderItemMapper.selectList(
|
|
List<ExpenseOrderItemDO> orderItems = expenseOrderItemMapper.selectList(
|
|
|
new LambdaQueryWrapperX<ExpenseOrderItemDO>().eq(ExpenseOrderItemDO::getExpenseOrderId, id));
|
|
new LambdaQueryWrapperX<ExpenseOrderItemDO>().eq(ExpenseOrderItemDO::getExpenseOrderId, id));
|
|
|
-
|
|
|
|
|
for (ExpenseOrderItemDO orderItem : orderItems) {
|
|
for (ExpenseOrderItemDO orderItem : orderItems) {
|
|
|
// 4. 如果是日常费用,需要更新日常费用状态
|
|
// 4. 如果是日常费用,需要更新日常费用状态
|
|
|
if (BusinessConstants.DAILY_EXPENSES.equals(orderItem.getExpenseSource())) {
|
|
if (BusinessConstants.DAILY_EXPENSES.equals(orderItem.getExpenseSource())) {
|
|
@@ -2821,8 +2828,20 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
.setStatus(BooleanEnum.FALSE.getValue()),
|
|
.setStatus(BooleanEnum.FALSE.getValue()),
|
|
|
new LambdaUpdateWrapper<ExpenseSubsidyDO>()
|
|
new LambdaUpdateWrapper<ExpenseSubsidyDO>()
|
|
|
.eq(ExpenseSubsidyDO::getElderId, expenseOrder.getElderId())
|
|
.eq(ExpenseSubsidyDO::getElderId, expenseOrder.getElderId())
|
|
|
|
|
+ .eq(ExpenseSubsidyDO::getOrderNumber,expenseOrder.getBillOrderNumber())
|
|
|
.eq(ExpenseSubsidyDO::getDeductionBillMonth, expenseOrder.getBillingMonth())
|
|
.eq(ExpenseSubsidyDO::getDeductionBillMonth, expenseOrder.getBillingMonth())
|
|
|
.eq(ExpenseSubsidyDO::getTenantId, TenantContextHolder.getTenantId()));
|
|
.eq(ExpenseSubsidyDO::getTenantId, TenantContextHolder.getTenantId()));
|
|
|
|
|
+ // 消费券更新为未抵扣状态
|
|
|
|
|
+ LambdaUpdateWrapper<ElderlyConsumerVouchersDO> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
+ wrapper.eq(ElderlyConsumerVouchersDO::getElderId, expenseOrder.getElderId())
|
|
|
|
|
+ .eq(ElderlyConsumerVouchersDO::getOrderId, expenseOrder.getId())
|
|
|
|
|
+ .eq(ElderlyConsumerVouchersDO::getBillingMonth, expenseOrder.getBillingMonth())
|
|
|
|
|
+ .eq(ElderlyConsumerVouchersDO::getTenantId, TenantContextHolder.getTenantId())
|
|
|
|
|
+ .set(ElderlyConsumerVouchersDO::getStatus, BooleanEnum.FALSE.getValue())
|
|
|
|
|
+ .set(ElderlyConsumerVouchersDO::getOrderId, null)
|
|
|
|
|
+ .set(ElderlyConsumerVouchersDO::getOrderNumber, null);
|
|
|
|
|
+ elderlyConsumerVouchersMapper.update(null, wrapper);
|
|
|
|
|
+
|
|
|
// 5. 删除主账单
|
|
// 5. 删除主账单
|
|
|
expenseOrderMapper.deleteById(id);
|
|
expenseOrderMapper.deleteById(id);
|
|
|
}
|
|
}
|
|
@@ -3904,4 +3923,17 @@ public class ExpenseOrderServiceImpl implements ExpenseOrderService {
|
|
|
|
|
|
|
|
return adjustedDiscountCollect;
|
|
return adjustedDiscountCollect;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private void updateElderlyConsumerVouchers(List<ExpenseOrderItemDO> list,String orderNumber){
|
|
|
|
|
+ List<ElderlyConsumerVouchersDO> vouchersDOList = new ArrayList<>();
|
|
|
|
|
+ for (ExpenseOrderItemDO item : list) {
|
|
|
|
|
+ ElderlyConsumerVouchersDO vouchersDO = new ElderlyConsumerVouchersDO();
|
|
|
|
|
+ vouchersDO.setId(item.getSourceExpenseItemId());
|
|
|
|
|
+ vouchersDO.setStatus(BooleanEnum.TRUE.getValue());
|
|
|
|
|
+ vouchersDO.setOrderId(item.getExpenseOrderId());
|
|
|
|
|
+ vouchersDO.setOrderNumber(orderNumber);
|
|
|
|
|
+ vouchersDOList.add(vouchersDO);
|
|
|
|
|
+ }
|
|
|
|
|
+ elderlyConsumerVouchersMapper.updateBatch(vouchersDOList);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|