|
|
@@ -1030,6 +1030,75 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public BigDecimal getOrderFeeTotal(String livingOrderId, String bookingOrderId) {
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean settleBillCheckOut(List<BusOrderFee> settleFees, String bookingOrderId) {
|
|
|
+ if(bookingOrderId != null && !bookingOrderId.isEmpty()) {
|
|
|
+ List<BusRoomsLivingOrder> livingOrders = roomsLivingOrderService.list(Wrappers.<BusRoomsLivingOrder>query()
|
|
|
+ .eq("booking_order_id",bookingOrderId));
|
|
|
+ BusBookingRooms mainRoom = bookingRoomsService.getOne(Wrappers.<BusBookingRooms>query().eq("is_main", true)
|
|
|
+ .eq("booking_orders_id",bookingOrderId));
|
|
|
+ if(mainRoom == null) throw new JeecgBootException("没有找到主房");
|
|
|
+ Optional<BusRoomsLivingOrder> opMainRoomOrder = livingOrders.stream().filter(s->s.getBookingRoomId().equals(mainRoom.getId())).findFirst();
|
|
|
+ if(!opMainRoomOrder.isPresent()) throw new JeecgBootException("没有找到主房订单");
|
|
|
+ BusRoomsLivingOrder mainRoomOrder = opMainRoomOrder.get();
|
|
|
+ if(livingOrders.size() > 0) {
|
|
|
+ List<BusOrderFee> feeItems = getLivingOrderFee(bookingOrderId).stream().filter(
|
|
|
+ s->s.getPreferentialStatus().equals(1)// 找到未结账的
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+ // 消费账单
|
|
|
+ List<BusOrderFee> xiaoFeiFees = feeItems.stream().filter(s->s.getFeeType().equals(1)).collect(Collectors.toList());
|
|
|
+ // 收款
|
|
|
+ List<BusOrderFee> shouKuanFees = feeItems.stream().filter(s->s.getFeeType().equals(2)).collect(Collectors.toList());
|
|
|
+ if(settleFees.size() == 0) throw new JeecgBootException("参数错误");
|
|
|
+ BusOrderFee preferFeeItem = null;
|
|
|
+ if(settleFees.stream().anyMatch(s->s.getIsPreferential().equals(true))){
|
|
|
+ preferFeeItem = settleFees.stream().filter(s->s.getIsPreferential().equals(true)).findFirst().get();
|
|
|
+ if(preferFeeItem.getMoney()==null || preferFeeItem.getMoney().compareTo(BigDecimal.valueOf(0)) <= 0) throw new JeecgBootException("优惠价不能小于或等于0");
|
|
|
+ preferFeeItem.setCreateTime(new Date());
|
|
|
+ preferFeeItem.setSubjectType(FeeSubjectType.YOU_HUI.getKey());
|
|
|
+ preferFeeItem.setFeeType(1);
|
|
|
+ preferFeeItem.setRoomId(mainRoom.getRoomId());
|
|
|
+ preferFeeItem.setPayType(null);
|
|
|
+ preferFeeItem.setMoney(preferFeeItem.getMoney().multiply(BigDecimal.valueOf(-1)));// 消费为负数 就是优惠
|
|
|
+ preferFeeItem.setLivingOrderId(mainRoomOrder.getId());
|
|
|
+ preferFeeItem.setPreferentialStatus(2);
|
|
|
+ feeService.save(preferFeeItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ settleFees.forEach(s->{
|
|
|
+ if(s.getIsPreferential().equals(true)) return;
|
|
|
+ s.setCreateTime(new Date());
|
|
|
+ s.setPreferentialStatus(2);
|
|
|
+ s.setFeeType(2);
|
|
|
+ s.setContactId(mainRoomOrder.getContactId());
|
|
|
+ s.setLivingOrderId(mainRoomOrder.getId());
|
|
|
+ s.setRoomId(mainRoom.getRoomId());
|
|
|
+ s.setSubjectType(FeeSubjectType.JIE_ZHANG.getKey());
|
|
|
+ });
|
|
|
+
|
|
|
+ List<BusOrderFee> jiezhangFees = settleFees.stream().filter(s->s.getIsPreferential() == null || s.getIsPreferential().equals(false)).collect(Collectors.toList());
|
|
|
+ if(jiezhangFees.size() > 0) {
|
|
|
+ feeService.saveBatch(jiezhangFees);
|
|
|
+ } else throw new JeecgBootException("参数没有结账收费项目");
|
|
|
+ feeItems.forEach(s->{
|
|
|
+ s.setPreferentialStatus(2);
|
|
|
+ });
|
|
|
+ feeService.updateBatchById(feeItems);
|
|
|
+ // todo 对账
|
|
|
+ } else throw new JeecgBootException("未找到任何入住订单");
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
private Map<String,String> bookingRoomToLiving(BookingOrderSaveDto livingData, List<ExtendBusBookingRoomsVo> roomIds, BookingOrderEditVo bookingOrderVo) {
|
|
|
Map<String,String> results = new HashMap<>();
|
|
|
|