Browse Source

实时房态

qh 2 years ago
parent
commit
4550d7e6f3

+ 4 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusRoomBookingOrdersService.java

@@ -8,6 +8,8 @@ import org.jeecg.modules.business.entity.BusRoomBookingOrders;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.business.vo.BatchOrderEditVo;
 import org.jeecg.modules.business.vo.BookingOrderEditVo;
+import org.jeecg.modules.rooms.Vo.FloorBuildingRoomVo;
+import org.jeecg.modules.rooms.entity.CesRooms;
 
 import java.util.List;
 import java.util.Map;
@@ -38,4 +40,6 @@ public interface IBusRoomBookingOrdersService extends IService<BusRoomBookingOrd
     String bookingToLive(String bookingRoomId, List<BusLivingCustomer> customers);
 
     String customerLiving(BookingOrderSaveDto livingData, Boolean isTeam);
+
+    List<FloorBuildingRoomVo> getRealtimeInfo(List<CesRooms> rooms);
 }

+ 51 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java

@@ -19,6 +19,9 @@ 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.rooms.Enum.RoomStatusEnum;
+import org.jeecg.modules.rooms.Vo.BookingRealtimeVo;
+import org.jeecg.modules.rooms.Vo.FloorBuildingRoomVo;
+import org.jeecg.modules.rooms.Vo.LivingRealtimeVo;
 import org.jeecg.modules.rooms.entity.CesRooms;
 import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -890,6 +893,54 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
         return bookingOrderNo;
     }
 
+    @Override
+    public List<FloorBuildingRoomVo> getRealtimeInfo(List<CesRooms> rooms) {
+        List<FloorBuildingRoomVo> roomVos = new ArrayList<>();
+        List<String> bookingOrderIds = rooms.stream().map(s->s.getBookingOrderId()).collect(Collectors.toList());
+        List<String> livingOrderIds = rooms.stream().map(s->s.getLivingOrderId()).collect(Collectors.toList());
+        List<BusRoomBookingOrders> bookingOrders =  this.list(Wrappers.<BusRoomBookingOrders>query().in("id",bookingOrderIds));
+        List<BusBookingLayoutDayPrice> bookingLayoutDayPrices =bookingOrderIds.size() > 0? dayPriceService.list(Wrappers.<BusBookingLayoutDayPrice>query()
+        .in("booking_order_id",bookingOrderIds)):new ArrayList<>();
+        List<String> bookingCusIds = bookingOrders.stream().map(s->s.getContactId()).collect(Collectors.toList());
+        List<BusCustomer> bookingCustomers =bookingCusIds.size() > 0? customerService.list(Wrappers.<BusCustomer>query()
+        .in("id",bookingCusIds)):new ArrayList<>();
+        List<BusRoomsLivingOrder> livingOrders =livingOrderIds.size() > 0? roomsLivingOrderService.list(Wrappers.<BusRoomsLivingOrder>query()
+        .in("id",livingOrderIds)):new ArrayList<>();
+        List<BusLivingCustomer> livingCustomers =livingOrderIds.size() > 0? livingCustomerService.list(Wrappers.<BusLivingCustomer>query()
+        .in("living_order_id",livingOrderIds)):new ArrayList<>();
+        List<BusLivingLayoutDayPrice> livingLayoutDayPrices =livingOrderIds.size()>0? livingLayoutDayPriceService.list(Wrappers.<BusLivingLayoutDayPrice>query()
+        .in("living_order_id",livingOrderIds)):new ArrayList<>();
+        rooms.forEach(s-> {
+            FloorBuildingRoomVo vo = new FloorBuildingRoomVo();
+            vo.setRoomId(s.getId());
+            vo.setBookingData(new BookingRealtimeVo());
+            vo.setLivingData(new LivingRealtimeVo());
+             Optional<BusRoomBookingOrders> opBookingOrder = bookingOrders.stream().filter(a->a.getId().equals(s.getBookingOrderId())).findFirst();
+             if(opBookingOrder.isPresent()) {
+                 vo.getBookingData().setBookingOrder(opBookingOrder.get());
+                 Optional<BusCustomer> opBookingCustomer = bookingCustomers.stream().filter(a->a.getId().equals(opBookingOrder.get().getContactId())).findFirst();
+                 if(opBookingCustomer.isPresent()){
+                     vo.getBookingData().setBookingCustomer(opBookingCustomer.get());
+                 }
+                 vo.getBookingData().setLayoutDayPrices(bookingLayoutDayPrices.stream().filter(a->a.getBookingOrderId().equals(opBookingOrder.get().getId())).collect(Collectors.toList()));
+             }
+
+             Optional<BusRoomsLivingOrder> opLivingOrder=livingOrders.stream().filter(a->a.getId().equals(s.getLivingOrderId())).findFirst();
+             if(opLivingOrder.isPresent()) {
+                 vo.getLivingData().setLivingOrder(opLivingOrder.get());
+                 Optional<BusLivingCustomer> opLivingCustomer = livingCustomers.stream().filter(a->a.getLivingOrderId().equals(opLivingOrder.get().getId())).findFirst();
+                 if(opLivingCustomer.isPresent()) {
+                     vo.getLivingData().setLivingCustomers(opLivingCustomer.get());
+                 }
+                 vo.getLivingData().setPrice(
+                         livingLayoutDayPrices.stream().filter(a->a.getLivingOrderId().equals(opLivingOrder.get().getId())).collect(Collectors.toList())
+                 );
+             }
+            roomVos.add(vo);
+        });
+        return roomVos;
+    }
+
     private Map<String,String> bookingRoomToLiving(BookingOrderSaveDto livingData, List<ExtendBusBookingRoomsVo> roomIds, BookingOrderEditVo bookingOrderVo) {
         Map<String,String> results = new HashMap<>();
         roomIds.forEach(bkRoom-> {

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/Vo/BookingRealtimeVo.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.rooms.Vo;
+
+import lombok.Data;
+import org.jeecg.modules.business.entity.BusBookingLayoutDayPrice;
+import org.jeecg.modules.business.entity.BusCustomer;
+import org.jeecg.modules.business.entity.BusRoomBookingOrders;
+
+import java.util.List;
+
+@Data
+public class BookingRealtimeVo {
+    private BusRoomBookingOrders bookingOrder;
+    private BusCustomer bookingCustomer;
+    private List<BusBookingLayoutDayPrice> layoutDayPrices;
+}

+ 3 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/Vo/FloorBuildingRoomVo.java

@@ -8,7 +8,9 @@ import org.jeecg.modules.rooms.entity.CesRooms;
 @Data
 public class FloorBuildingRoomVo {
     private CesRooms roomInfo;
+    private String roomId;
     private CesRoomLayout layout;
-    private BusRoomBookingOrders bookingOrders;
+    private BookingRealtimeVo bookingData;
+    private LivingRealtimeVo livingData;
 
 }

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/Vo/LivingRealtimeVo.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.rooms.Vo;
+
+import lombok.Data;
+import org.jeecg.modules.business.entity.BusLivingCustomer;
+import org.jeecg.modules.business.entity.BusLivingLayoutDayPrice;
+import org.jeecg.modules.business.entity.BusRoomsLivingOrder;
+
+import java.util.List;
+
+@Data
+public class LivingRealtimeVo {
+    private BusRoomsLivingOrder livingOrder;
+    private BusLivingCustomer livingCustomers;
+    private List<BusLivingLayoutDayPrice> price;
+}

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesRoomsController.java

@@ -14,6 +14,7 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.modules.business.service.IBusRoomBookingOrdersService;
 import org.jeecg.modules.rooms.DTO.*;
 import org.jeecg.modules.rooms.Enum.CouponEnums;
 import org.jeecg.modules.rooms.Enum.RoomStatusEnum;
@@ -56,6 +57,9 @@ public class CesRoomsController {
     @Autowired
     private CesRoomLayoutServiceImpl layoutService;
 
+    @Resource
+    private IBusRoomBookingOrdersService bookingOrdersService;
+
 
     @ApiOperation(value="房间分页列表查询", notes="房间分页列表查询")
     @GetMapping(value = "/list")
@@ -86,17 +90,23 @@ public class CesRoomsController {
             if(allRooms == null || allRooms.size() == 0) {
                 return Result.ok(new ArrayList());
             }
+            List<FloorBuildingRoomVo> otherInfos = bookingOrdersService.getRealtimeInfo(allRooms);
             floors.forEach(s-> {
                 List<CesRooms> floorRooms = allRooms.stream().filter(a->a.getFloorId().equals(s.getId())).collect(Collectors.toList());
                 List<FloorBuildingRoomVo> roomInfos = new ArrayList<>();
                 floorRooms.forEach(a -> {
                     FloorBuildingRoomVo roomVo = new FloorBuildingRoomVo();
+                    Optional<FloorBuildingRoomVo> opFindRoomVo = otherInfos.stream().filter(p->p.getRoomId().equals(a.getId())).findFirst();
                     Optional<CesRoomLayout> opLayout = layouts.stream().filter(c-> c.getId().equals(a.getLayoutId())).findFirst();
                     if(!opLayout.isPresent()) return; // 没有房型的房间给他去掉
                     //房型
                     roomVo.setLayout(opLayout.get());
                     //房间
                     roomVo.setRoomInfo(a);
+                    if(opFindRoomVo.isPresent()) {
+                        roomVo.setLivingData(opFindRoomVo.get().getLivingData());
+                        roomVo.setBookingData(opFindRoomVo.get().getBookingData());
+                    }
                     roomInfos.add(roomVo);
                 });
                 s.setRooms(roomInfos);