소스 검색

日历房态

覃浩 2 년 전
부모
커밋
94d5e79603

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusRoomBookingOrdersController.java

@@ -406,6 +406,20 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 	 	return  Result.OK(service.forwardFangTai(start,end,hotelId,isContainLeave));
 	 }
 
+	 /**
+	  * 日历房态
+	  * @return
+	  */
+	 @ApiOperation(value="酒店预定订单-日历房态", notes="酒店预定订单-日历房态")
+	 @RequestMapping(value = "/rili-fangtai",method = RequestMethod.GET)
+	 public Result<RiLiFangTaiResultVo> riliFangTai(
+			 String start,
+			 String end,String hotelId) {
+		 return  Result.OK(service.riliFangTai(start,end,hotelId));
+	 }
+
+
+
 
 
  }

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

@@ -11,7 +11,9 @@ import org.jeecg.modules.business.entity.BusRoomBookingOrders;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.business.vo.ForwardFangTaiQueryVo;
 import org.jeecg.modules.business.vo.LayoutRoomCountVo;
+import org.jeecg.modules.business.vo.RiLiFangTaiVo;
 import org.jeecg.modules.business.vo.RoomLivingQueryVo;
+import org.jeecg.modules.rooms.entity.CesRooms;
 import org.springframework.format.annotation.DateTimeFormat;
 
 /**
@@ -34,4 +36,6 @@ public interface BusRoomBookingOrdersMapper extends BaseMapper<BusRoomBookingOrd
                                                     String start,
                                                     String end);
     List<LayoutRoomCountVo> getLayoutRoomCount(String hotelId);
+
+    List<RiLiFangTaiVo> getRiliFangTai(String start, String end,String hotelId);
 }

+ 75 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusRoomBookingOrdersMapper.xml

@@ -124,4 +124,79 @@ cus.id as customer_id,cus.`name` as customer_name,lo.arrival_time,lo.due_out_tim
         where l.hotel_id = #{hotelId}
         group by l.id
     </select>
+
+    <select id="getRiliFangTai" resultType="org.jeecg.modules.business.vo.RiLiFangTaiVo">
+        select * from
+        (
+            select lo.id as order_id,
+            lo.arrival_time,lo.due_out_time, l.market_price,l.`name` as layout_name,
+            r.id as room_id,b.id as floor_id,cus.`name` as customer_name, cus.phone as customer_phone,
+            sum(if(fee.fee_type = 1,fee.money,0)) as xiaofei,
+            sum(if(fee.fee_type = 2 and fee.subject_type != 1,fee.money,0)) as yushou,
+            sum(if(fee.fee_type = 2 and fee.subject_type = 1,fee.money,0)) as yajin,
+            (sum(if(fee.fee_type = 2 and fee.subject_type != 1,fee.money,0))
+                +
+                sum(if(fee.fee_type = 2 and fee.subject_type = 1,fee.money,0))
+                -
+                sum(if(fee.fee_type = 1,fee.money,0))
+            ) as yu_e,
+            1 as is_living ,
+            ifNULL(lo.settle_type,-1) as settle_type
+            from
+            ces_room_building_floor b inner join
+            ces_room_building_floor b1 on b.parent_id = b1.id
+            inner join ces_rooms r on b.id = r.floor_id and r.invalid = 0
+            inner join ces_room_layout l on l.id = r.layout_id
+            inner join bus_booking_rooms br
+
+            on br.room_id= r.id
+            inner join  bus_rooms_living_order lo
+            on br.id = lo.booking_room_id
+            inner join bus_order_fee fee
+            on fee.living_order_id = lo.id
+            inner join bus_customer cus
+            on cus.id = lo.contact_id
+            where
+            r.hotel_id = #{hotelId}
+            and ((lo.arrival_time >= #{start} and lo.arrival_time &lt;=#{end}) or
+	 (lo.due_out_time >= #{start} and lo.due_out_time &lt;=#{end}))
+            GROUP BY lo.id,r.id
+
+            union all
+
+            select lo.id as order_id,
+            lo.arrival_time,lo.due_out_time, l.market_price,l.`name` as layout_name,
+            r.id as room_id,b.id as floor_id,cus.`name` as customer_name, cus.phone as customer_phone,
+            0 as xiaofei,
+            0 as yushou,
+            0 as yajin,
+            0 as yu_e,
+            0 as is_living ,
+            -2 as settle_type
+            from
+            ces_room_building_floor b inner join
+            ces_room_building_floor b1 on b.parent_id = b1.id
+            inner join ces_rooms r on b.id = r.floor_id and r.invalid = 0
+            inner join ces_room_layout l on l.id = r.layout_id
+            inner join bus_booking_rooms br
+
+            on br.room_id= r.id
+            and br.id not in (
+                select booking_room_id from bus_rooms_living_order
+            )
+            inner join  bus_room_booking_orders lo
+            on br.booking_orders_id = lo.id
+            inner join bus_customer cus
+            on cus.id = lo.contact_id
+            where
+            r.hotel_id = #{hotelId}
+            and ((lo.arrival_time >= #{start} and lo.arrival_time &lt;=#{end}) or
+	 (lo.due_out_time >= #{start} and lo.due_out_time &lt;=#{end}))
+
+            GROUP BY lo.id,r.id
+
+
+        ) as t
+        order by t.is_living, t.order_id desc
+    </select>
 </mapper>

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

@@ -63,5 +63,6 @@ public interface IBusRoomBookingOrdersService extends IService<BusRoomBookingOrd
     Boolean unionOrder(String roomId,String targetRoomId, String bookingOrderId, String hotelId);
     Boolean mergeOrder(String livingRoomId, List<String> livingOrderId);
     ForwardFangTaiVo forwardFangTai(String start, String end, String hotelId,Boolean isContainLeave);
+    RiLiFangTaiResultVo riliFangTai(String start, String end, String hotelId);
 
 }

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

@@ -23,8 +23,10 @@ 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.CesRoomBuildingFloor;
 import org.jeecg.modules.rooms.entity.CesRoomLayout;
 import org.jeecg.modules.rooms.entity.CesRooms;
+import org.jeecg.modules.rooms.service.CesRoomBuildingFloorServiceImpl;
 import org.jeecg.modules.rooms.service.CesRoomLayoutServiceImpl;
 import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -95,6 +97,9 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
     @Resource
     private CesRoomLayoutServiceImpl layoutService;
 
+    @Resource
+    private CesRoomBuildingFloorServiceImpl buildingFloorService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public String bookingOrderSave(BookingOrderSaveDto item, Boolean isTeam) {
@@ -1347,6 +1352,43 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
 
         return result;
     }
+    @Override
+    public RiLiFangTaiResultVo riliFangTai(String start, String end, String hotelId) {
+        RiLiFangTaiResultVo result = new RiLiFangTaiResultVo();
+        List<RiLiFangTaiVo> riLiFangTaiVos = baseMapper.getRiliFangTai(start,end,hotelId);
+        result.setRiLiFangTaiVoList(riLiFangTaiVos);
+        List<CesRoomLayout> layouts = layoutService.list(Wrappers.<CesRoomLayout>query()
+        .eq("hotel_id",hotelId).eq("invalid",false));
+        List<CesRooms> rooms = roomsService.list(Wrappers.<CesRooms>query().eq("hotel_id",hotelId).eq("invalid",false));
+        List<CesRoomBuildingFloor> buildingFloors =  buildingFloorService.list(Wrappers.<CesRoomBuildingFloor>query().eq("hotelId",hotelId).eq("invalid",false));
+        rooms.forEach(s-> {
+            Optional<CesRoomLayout> opFindLayout = layouts.stream().filter(a->a.getId().equals(s.getLayoutId())).findFirst();
+            if(!opFindLayout.isPresent()) return;
+            CesRoomLayout layout = opFindLayout.get();
+            s.setMarketPrice(layout.getMarketPrice());
+            s.setLayoutName(layout.getName());
+        });
+        List<RiLiLayoutRoomVo> layoutRoomVos = layouts.stream().map(s->{
+            RiLiLayoutRoomVo item = new RiLiLayoutRoomVo();
+            item.setId(s.getId());
+            item.setName(s.getName());
+            item.setRooms(rooms.stream().filter(a->a.getLayoutId().equals(s.getId())).collect(Collectors.toList()));
+            return  item;
+        }).collect(Collectors.toList());
+        List<RiLiFloorRoomVo> floorRoomVos = buildingFloors.stream().filter(s->!s.getParentId().equals("0")).map(s->{
+            Optional<CesRoomBuildingFloor> floorOptional = buildingFloors.stream().filter(a->a.getId().equals(s.getParentId())).findFirst();
+            if(!floorOptional.isPresent()) return null;
+            CesRoomBuildingFloor building = floorOptional.get();
+            RiLiFloorRoomVo item = new RiLiFloorRoomVo();
+            item.setId(s.getId());
+            item.setName(building.getName() + "-" +s.getName());
+            item.setRooms(rooms.stream().filter(a->a.getFloorId().equals(s.getId())).collect(Collectors.toList()));
+            return  item;
+        }).collect(Collectors.toList());
+        result.setFloorRoomVos(floorRoomVos);
+        result.setLayoutRoomVos(layoutRoomVos);
+        return  result;
+    }
 
     private Boolean mergeSingle(String livingOrderId, String mergeLivingOrderId ) {
         BusRoomsLivingOrder mergeLivingOrder = roomsLivingOrderService.getById(mergeLivingOrderId);

+ 12 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/RiLiFangTaiResultVo.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.business.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RiLiFangTaiResultVo {
+    private List<RiLiFangTaiVo> riLiFangTaiVoList;
+    private List<RiLiFloorRoomVo> floorRoomVos;
+    private List<RiLiLayoutRoomVo> layoutRoomVos;
+}

+ 31 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/RiLiFangTaiVo.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.business.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class RiLiFangTaiVo {
+    private String floorId;
+    private String roomId;
+    private String orderId;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    private Date arrivalTime;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    private Date dueOutTime;
+    private BigDecimal marketPrice;
+    private BigDecimal xiaofei;
+    private BigDecimal yushou;
+    private BigDecimal yajin;
+    private BigDecimal yuE;
+    private Integer isLiving;
+    private Integer settleType;
+    private String customerName;
+    private String customerPhone;
+
+}

+ 13 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/RiLiFloorRoomVo.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.business.vo;
+
+import lombok.Data;
+import org.jeecg.modules.rooms.entity.CesRooms;
+
+import java.util.List;
+
+@Data
+public class RiLiFloorRoomVo {
+    private String id;
+    private String name;
+    private List<CesRooms>  rooms;
+}

+ 13 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/RiLiLayoutRoomVo.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.business.vo;
+
+import lombok.Data;
+import org.jeecg.modules.rooms.entity.CesRooms;
+
+import java.util.List;
+
+@Data
+public class RiLiLayoutRoomVo {
+    private String id;
+    private String name;
+    private List<CesRooms> rooms;
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/entity/CesRooms.java

@@ -109,6 +109,11 @@ public class CesRooms extends Model<CesRooms> {
      */
     @TableField(exist = false)
     private BigDecimal marketPrice;
+    /**
+     * 返回放行名称
+     */
+    @TableField(exist = false)
+    private String layoutName;
 
     @ApiModelProperty(value = "预约单ID")
     private String bookingOrderId;