|
|
@@ -14,10 +14,7 @@ import org.jeecg.modules.business.entity.*;
|
|
|
import org.jeecg.modules.business.enums.*;
|
|
|
import org.jeecg.modules.business.mapper.BusRoomBookingOrdersMapper;
|
|
|
import org.jeecg.modules.business.service.*;
|
|
|
-import org.jeecg.modules.business.vo.BatchOrderEditVo;
|
|
|
-import org.jeecg.modules.business.vo.BookingBatchRoomsVo;
|
|
|
-import org.jeecg.modules.business.vo.BookingOrderEditVo;
|
|
|
-import org.jeecg.modules.business.vo.ExtendBusBookingRoomsVo;
|
|
|
+import org.jeecg.modules.business.vo.*;
|
|
|
import org.jeecg.modules.rooms.Enum.RoomStatusEnum;
|
|
|
import org.jeecg.modules.rooms.Vo.BookingRealtimeVo;
|
|
|
import org.jeecg.modules.rooms.Vo.FloorBuildingRoomVo;
|
|
|
@@ -1052,45 +1049,11 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
|
|
|
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);
|
|
|
+// // 消费账单
|
|
|
+// 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());
|
|
|
+ settleFee(mainRoom, mainRoomOrder, feeItems, settleFees);
|
|
|
List<CesRooms> baseRooms = roomsService.list(Wrappers.<CesRooms>query()
|
|
|
.in("living_order_id",livingOrders.stream().map(s->s.getId()).collect(Collectors.toList()))
|
|
|
);
|
|
|
@@ -1101,14 +1064,127 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
|
|
|
});
|
|
|
roomsService.updateBatchById(baseRooms);
|
|
|
}
|
|
|
+ return true;
|
|
|
// todo 对账
|
|
|
} else throw new JeecgBootException("未找到任何入住订单");
|
|
|
- } else {
|
|
|
+ } throw new JeecgBootException("参数错误");
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean livingSettleBillCheckOut(List<BusOrderFee> settleFees, String livingOrderId) {
|
|
|
+ if(livingOrderId == null || livingOrderId.isEmpty()) throw new JeecgBootException("参数错误");
|
|
|
+ BusRoomsLivingOrder livingOrder = roomsLivingOrderService.getOne(Wrappers.<BusRoomsLivingOrder>query()
|
|
|
+ .eq("id",livingOrderId));
|
|
|
+ if(livingOrder == null) throw new JeecgBootException("未找到任何入住订单");
|
|
|
+ BusBookingRooms mainRoom = bookingRoomsService.getOne(Wrappers.<BusBookingRooms>query()
|
|
|
+ .eq("id",livingOrder.getBookingRoomId()));
|
|
|
+ if(mainRoom.getIsMain().equals(true)) throw new JeecgBootException("主房不能单独结账退房");
|
|
|
+ if(mainRoom == null) throw new JeecgBootException("没有找到主房");
|
|
|
+
|
|
|
+ BusRoomsLivingOrder mainRoomOrder = livingOrder;
|
|
|
+
|
|
|
+
|
|
|
+ List<BusOrderFee> feeItems = getLivingOrderFees(livingOrderId).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());
|
|
|
+ settleFee(mainRoom, mainRoomOrder, feeItems, settleFees);
|
|
|
+ List<CesRooms> baseRooms = roomsService.list(Wrappers.<CesRooms>query()
|
|
|
+ .eq("living_order_id",livingOrderId)
|
|
|
+ );
|
|
|
+ if(baseRooms.size() > 0) {
|
|
|
+ baseRooms.forEach(s->{
|
|
|
+ s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
|
|
|
+ s.setLivingOrderId(null);
|
|
|
+ });
|
|
|
+ roomsService.updateBatchById(baseRooms);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean partialSettle(PartialSettleVo param){
|
|
|
+ BusRoomsLivingOrder livingOrder = roomsLivingOrderService.getById(param.getLivingOrderId());
|
|
|
+ if(livingOrder == null) throw new JeecgBootException("未找到任何入住订单");
|
|
|
+ BusBookingRooms mainRoom = bookingRoomsService.getOne(Wrappers.<BusBookingRooms>query()
|
|
|
+ .eq("id",livingOrder.getBookingRoomId()));
|
|
|
+ if(mainRoom == null) throw new JeecgBootException("没有找到主房");
|
|
|
+
|
|
|
+ BusRoomsLivingOrder mainRoomOrder = livingOrder;
|
|
|
+ List<BusOrderFee> feeItems = getLivingOrderFees(param.getLivingOrderId()).stream().filter(
|
|
|
+ s->s.getPreferentialStatus().equals(1) // 找到未结账的
|
|
|
+ && param.getSelectedFeeIds().contains(s.getId()) // 找到要结账的项目
|
|
|
+ ).collect(Collectors.toList());
|
|
|
+ List<BusOrderFee> settleFees = param.getFees();
|
|
|
+ settleFee(mainRoom, mainRoomOrder, feeItems, settleFees);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean splitLiving(String livingOrderId) {
|
|
|
+ BusRoomsLivingOrder livingOrder = roomsLivingOrderService.getById(livingOrderId);
|
|
|
+ if(livingOrder == null) throw new JeecgBootException("订单不存在");
|
|
|
+ BusBookingRooms bookingRoom = bookingRoomsService.getById(livingOrder.getBookingRoomId());
|
|
|
+ if(bookingRoom == null) throw new JeecgBootException("订单房间不存在");
|
|
|
+ BusRoomBookingOrders newBookingOrder = copyBookingToAcceptOrder(livingOrder);
|
|
|
+ save(newBookingOrder);
|
|
|
+ livingOrder.setBookingOrderId(newBookingOrder.getId());
|
|
|
+ roomsLivingOrderService.updateById(livingOrder);
|
|
|
+ bookingRoom.setBookingOrdersId(newBookingOrder.getId());
|
|
|
+ bookingRoomsService.updateById(bookingRoom);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void settleFee(BusBookingRooms mainRoom, BusRoomsLivingOrder mainRoomOrder, List<BusOrderFee> feeItems, List<BusOrderFee> settleFees) {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<BusOrderFee> getLivingOrderFees(String livingOrderId) {
|
|
|
+ return feeService.list(Wrappers.<BusOrderFee>query()
|
|
|
+ .eq("living_order_id",livingOrderId));
|
|
|
+ }
|
|
|
+
|
|
|
private Map<String,String> bookingRoomToLiving(BookingOrderSaveDto livingData, List<ExtendBusBookingRoomsVo> roomIds, BookingOrderEditVo bookingOrderVo) {
|
|
|
Map<String,String> results = new HashMap<>();
|
|
|
|
|
|
@@ -1201,6 +1277,41 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
|
|
|
return livingOrder;
|
|
|
}
|
|
|
|
|
|
+ private BusRoomBookingOrders copyBookingToAcceptOrder(BusRoomsLivingOrder bkOrder) {
|
|
|
+ BusRoomBookingOrders livingOrder = new BusRoomBookingOrders();
|
|
|
+ livingOrder.setAgencyName(bkOrder.getAgencyName());
|
|
|
+ livingOrder.setArrivalTime(bkOrder.getArrivalTime());
|
|
|
+ livingOrder.setBreakfastNum(bkOrder.getBreakfastNum());
|
|
|
+ livingOrder.setContactId(bkOrder.getContactId());
|
|
|
+ livingOrder.setCreateTime(new Date());
|
|
|
+ livingOrder.setCreateUser("");
|
|
|
+ livingOrder.setCustomerSource(bkOrder.getCustomerSource());
|
|
|
+ livingOrder.setBookingOrdersType(bkOrder.getLivingOrdersType());
|
|
|
+ livingOrder.setBookingType(bkOrder.getLivingType());
|
|
|
+ livingOrder.setOuterOrdersNo(bkOrder.getOuterOrdersNo());
|
|
|
+ livingOrder.setContractTeamId(bkOrder.getContractTeamId());
|
|
|
+ livingOrder.setContractTeamProtocolId(bkOrder.getContractTeamProtocolId());
|
|
|
+ livingOrder.setDayCount(bkOrder.getDayCount());
|
|
|
+ livingOrder.setCustomerType(bkOrder.getCustomerType());
|
|
|
+ livingOrder.setDinnerNum(bkOrder.getDinnerNum());
|
|
|
+ livingOrder.setLunchNum(bkOrder.getLunchNum());
|
|
|
+ livingOrder.setDueOutTime(bkOrder.getDueOutTime());
|
|
|
+ livingOrder.setHourRoomId(bkOrder.getHourRoomId());
|
|
|
+ livingOrder.setWarranter(bkOrder.getWarranter());
|
|
|
+ livingOrder.setWarrantType(bkOrder.getWarrantType());
|
|
|
+ livingOrder.setVipCustomerId(bkOrder.getVipCustomerId());
|
|
|
+ livingOrder.setTeamName(bkOrder.getTeamName());
|
|
|
+ livingOrder.setTeamTypeDicId(bkOrder.getTeamTypeDicId());
|
|
|
+ livingOrder.setRoomPriceSlnId(bkOrder.getRoomPriceSlnId());
|
|
|
+ livingOrder.setLeaderName(bkOrder.getLeaderName());
|
|
|
+ livingOrder.setPublicConsumeFee(bkOrder.getPublicConsumeFee());
|
|
|
+ livingOrder.setPublicMeetingFee(bkOrder.getPublicMeetingFee());
|
|
|
+ livingOrder.setPublicVipFee(bkOrder.getPublicVipFee());
|
|
|
+ livingOrder.setPublicRoomFee(bkOrder.getPublicRoomFee());
|
|
|
+ livingOrder.setTeamPeopleNumber(bkOrder.getTeamPeopleNumber());
|
|
|
+ return livingOrder;
|
|
|
+ }
|
|
|
+
|
|
|
private BusRoomsLivingOrder copyBookingToAcceptOrder(BusBookingBatch bkOrder, BusRoomBookingOrders bookingOrder) {
|
|
|
BusRoomsLivingOrder livingOrder = new BusRoomsLivingOrder();
|
|
|
livingOrder.setAgencyName(bkOrder.getAgencyName());
|