Преглед на файлове

根据订单添加订单的房间

qh преди 2 години
родител
ревизия
45ceb970f2
променени са 1 файла, в които са добавени 19 реда и са изтрити 1 реда
  1. 19 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomsServiceImpl.java

+ 19 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomsServiceImpl.java

@@ -18,9 +18,11 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.business.entity.BusBookingRooms;
 import org.jeecg.modules.business.entity.BusHotel;
 import org.jeecg.modules.business.enums.BookingOrdersType;
 import org.jeecg.modules.business.enums.CheckInTypeEnum;
+import org.jeecg.modules.business.service.IBusBookingRoomsService;
 import org.jeecg.modules.business.service.impl.BusHotelServiceImpl;
 import org.jeecg.modules.rooms.DTO.*;
 import org.jeecg.modules.rooms.Enum.CouponEnums;
@@ -69,6 +71,9 @@ public class CesRoomsServiceImpl extends ServiceImpl<CesRoomsMapper, CesRooms> i
     @Resource
     private CesHourRoomRuleServiceImpl hourRoomRuleService;
 
+    @Resource
+    private IBusBookingRoomsService bookingRoomsService;
+
     /**
      * 查询房间
      * @param dto
@@ -285,6 +290,13 @@ public class CesRoomsServiceImpl extends ServiceImpl<CesRoomsMapper, CesRooms> i
            hourPrice = hourRoomRule.getAfterOpenRoomPay();
         }
         BigDecimal finalHourPrice = hourPrice;
+        List<CesRooms> choiceRooms = null;
+        if(param.getOrderId() != null && !param.getOrderId().isEmpty()) {
+            List<BusBookingRooms> bookingRooms = bookingRoomsService.list(Wrappers.<BusBookingRooms>query().eq("booking_orders_id",param.getOrderId()));
+            List<String> choiceRoomIds = bookingRooms.stream().map(w->w.getRoomId()).collect(Collectors.toList());
+            choiceRooms = list(Wrappers.<CesRooms>query().in("id",choiceRoomIds));
+        }
+        List<CesRooms> finalChoiceRooms = choiceRooms;
         layouts.forEach(s-> {
            CanUseResultVo item = new CanUseResultVo();
            List<CanUseBuildingRoomsVo> floorVos = new ArrayList<>();
@@ -298,17 +310,23 @@ public class CesRoomsServiceImpl extends ServiceImpl<CesRoomsMapper, CesRooms> i
                s.setFavPrice(finalHourPrice);
            } else
                s.setFavPrice(null);
+
            floors.forEach(c->{
                CanUseBuildingRoomsVo floorRoomsVo  = new CanUseBuildingRoomsVo();
                List<CesRooms> floorRooms = allRooms.stream().filter(e->e.getFloorId().equals(c.getId()) && e.getLayoutId().equals(s.getId())).collect(Collectors.toList());
                Optional<CesRoomBuildingFloor> opBuilding = allBuildingFloors.stream().filter(q->q.getId().equals(c.getParentId())).findFirst();
                if(!opBuilding.isPresent()) return;
-               floorRoomsVo.setFloorRooms(floorRooms);
+
                floorRoomsVo.setFloorName(c.getName());
                floorRoomsVo.setFloorId(c.getId());
                floorRoomsVo.setBuildingName(opBuilding.get().getName());
                floorRoomsVo.setBuildingId(opBuilding.get().getId());
                canUseRoomCount[0] += floorRooms.size();
+               // 设置完size之后添加已用房间 不影响数量
+               List<String> currentFloorRoomIds = floorRooms.stream().map(r->r.getId()).collect(Collectors.toList());
+               List<CesRooms> orderRooms = finalChoiceRooms.stream().filter(y->y.getFloorId().equals(c.getId()) && !currentFloorRoomIds.contains(y.getId())).collect(Collectors.toList());
+               floorRooms.addAll(orderRooms);
+               floorRoomsVo.setFloorRooms(floorRooms);
                floorVos.add(floorRoomsVo);
            });
            // 主要为了排除掉未排房数量