Browse Source

房态日历增加分房型的占用和空闲数量

wanxl 1 year ago
parent
commit
67e032459c

+ 5 - 1
src/main/java/com/template/controller/HouseNumberStateController.java

@@ -276,7 +276,6 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
 
 
 //        通过房型id获取21天内的所有房态状态
 //        通过房型id获取21天内的所有房态状态
         List<HouseNumberState> houseNumberStates = houseNumberStateService.houseNumberStateList(localDateTime, endLocalDateTime, houseNumberIds);
         List<HouseNumberState> houseNumberStates = houseNumberStateService.houseNumberStateList(localDateTime, endLocalDateTime, houseNumberIds);
-
 //        房间总数
 //        房间总数
         int totalCount = houseNumberList.size();
         int totalCount = houseNumberList.size();
 
 
@@ -285,6 +284,9 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
         for (int i = 0; i < 21; i++) {
         for (int i = 0; i < 21; i++) {
             LocalDateTime localDate1 = localDateTime.plusDays(i);
             LocalDateTime localDate1 = localDateTime.plusDays(i);
             String format = localDate1.format(dateTimeFormatter1);
             String format = localDate1.format(dateTimeFormatter1);
+            List<Map<String,Object>> useNumbers = houseNumberService.houseStateNumbers(keyWord, houseType, houseId, buildingId,format,1);
+            //0为空闲
+            List<Map<String,Object>> freeNumbers = houseNumberService.houseStateNumbers(keyWord, houseType, houseId, buildingId,format,0);
             HouseNumberStateDateVo houseNumberStateDateVo = new HouseNumberStateDateVo();
             HouseNumberStateDateVo houseNumberStateDateVo = new HouseNumberStateDateVo();
             houseNumberStateDateVo.setDate(format);
             houseNumberStateDateVo.setDate(format);
             int count = totalCount;
             int count = totalCount;
@@ -305,6 +307,8 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
                 }
                 }
             }
             }
             houseNumberStateDateVo.setCount(count);
             houseNumberStateDateVo.setCount(count);
+            houseNumberStateDateVo.setFreeNumbers(freeNumbers);
+            houseNumberStateDateVo.setUseNumbers(useNumbers);
             list.add(houseNumberStateDateVo);
             list.add(houseNumberStateDateVo);
         }
         }
 //        时间格式
 //        时间格式

+ 4 - 0
src/main/java/com/template/mapper/HouseNumberMapper.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -57,4 +58,7 @@ public interface HouseNumberMapper extends BaseMapper<HouseNumber> {
     List<Integer> getStateHouseNumber(@Param("start") LocalDateTime start,@Param("end") LocalDateTime end);
     List<Integer> getStateHouseNumber(@Param("start") LocalDateTime start,@Param("end") LocalDateTime end);
 
 
     List<HouseStateVo> houseStateLeisurePage(@Param("keyWord") String keyWord, @Param("houseType") String houseType,@Param("start") LocalDateTime start,@Param("end") LocalDateTime end,@Param("houseId") Integer houseId,@Param("buildingId") Integer buildingId,@Param("houseNumberIds") String houseNumberIds);
     List<HouseStateVo> houseStateLeisurePage(@Param("keyWord") String keyWord, @Param("houseType") String houseType,@Param("start") LocalDateTime start,@Param("end") LocalDateTime end,@Param("houseId") Integer houseId,@Param("buildingId") Integer buildingId,@Param("houseNumberIds") String houseNumberIds);
+
+    List<Map<String, Object>> houseStateNumbers(@Param("keyWord")String keyWord,@Param("houseType") String houseType, @Param("houseId")Integer houseId,
+                                                @Param("buildingId")Integer buildingId,@Param("currentDate") String currentDate, @Param("flag")int flag);
 }
 }

+ 7 - 0
src/main/java/com/template/model/vo/HouseNumberStateDateVo.java

@@ -2,12 +2,19 @@ package com.template.model.vo;
 
 
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.List;
+import java.util.Map;
+
 @Data
 @Data
 public class HouseNumberStateDateVo {
 public class HouseNumberStateDateVo {
 //    时间
 //    时间
     private String date;
     private String date;
 //    剩余房间数
 //    剩余房间数
     private int count;
     private int count;
+    //房间占用数量明细
+    private List<Map<String,Object>> useNumbers;
+    //房间空闲数量明细
+    private List<Map<String,Object>> freeNumbers;
 
 
 
 
 }
 }

+ 2 - 0
src/main/java/com/template/services/HouseNumberService.java

@@ -8,6 +8,7 @@ import com.template.model.vo.*;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -60,4 +61,5 @@ public interface HouseNumberService extends IService<HouseNumber> {
 
 
     List<HouseStateVo> houseStateLeisurePage(String keyWord, String houseType, LocalDateTime start, LocalDateTime end, Integer houseId, Integer buildingId, String houseNumberIds);
     List<HouseStateVo> houseStateLeisurePage(String keyWord, String houseType, LocalDateTime start, LocalDateTime end, Integer houseId, Integer buildingId, String houseNumberIds);
 
 
+    List<Map<String, Object>> houseStateNumbers(String keyWord, String houseType, Integer houseId, Integer buildingId, String currentDate, int flag);
 }
 }

+ 16 - 0
src/main/java/com/template/services/impl/HouseNumberServiceImpl.java

@@ -13,8 +13,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Collections;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -153,4 +155,18 @@ public class HouseNumberServiceImpl extends ServiceImpl<HouseNumberMapper, House
         List<HouseStateVo> result = houseNumberMapper.houseStateLeisurePage(keyWord, houseType, start, end, houseId, buildingId,houseNumberIds);
         List<HouseStateVo> result = houseNumberMapper.houseStateLeisurePage(keyWord, houseType, start, end, houseId, buildingId,houseNumberIds);
         return result;
         return result;
     }
     }
+
+    /**
+     * @param keyWord
+     * @param houseType
+     * @param houseId
+     * @param buildingId
+     * @param currentDate
+     * @param flag
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> houseStateNumbers(String keyWord, String houseType, Integer houseId, Integer buildingId, String currentDate, int flag) {
+        return houseNumberMapper.houseStateNumbers(keyWord, houseType, houseId, buildingId,currentDate,flag);
+    }
 }
 }

+ 41 - 0
src/main/resources/mapper/template/HouseNumberMapper.xml

@@ -127,6 +127,47 @@
 
 
     </select>
     </select>
 
 
+    <select id="houseStateNumbers" resultType="Map">
+        SELECT
+        h.room_name,count(1) as num
+        FROM
+        `house_number` hn
+        LEFT JOIN house h ON h.id = hn.house_id
+        AND h.deleted = 0
+        LEFT JOIN building b ON b.id = hn.building_id
+        AND b.deleted = 0
+        left join house_number_state hns on hns.house_number_id =hn.id and hns.deleted =0
+            and date_format(hns.start_time,'%Y-%m-%d')<![CDATA[<=]]>date_format(#{currentDate},'%Y-%m-%d')
+            and date_format(hns.end_time,'%Y-%m-%d') >date_format(#{currentDate},'%Y-%m-%d')
+        <where>
+            hn.deleted = 0
+            <if test="houseType != null and houseType != ''">
+                AND h.room_type = #{houseType}
+            </if>
+            <if test="flag==0">
+                AND hns.id is null
+            </if>
+            <if test="flag==1">
+                AND hns.id is not null
+            </if>
+
+            <if test="keyWord != null and keyWord != ''">
+                AND hn.room_number LIKE '%' #{keyWord} '%'
+            </if>
+
+            <if test="houseId != null and houseId != ''">
+                AND hn.house_id = #{houseId}
+            </if>
+
+            <if test="buildingId != null and buildingId != ''">
+                AND hn.building_id = #{buildingId}
+            </if>
+
+        </where>
+        group by hn.house_id
+
+    </select>
+
     <select id="houseLockListDto" resultType="com.template.model.vo.houseLockListVo">
     <select id="houseLockListDto" resultType="com.template.model.vo.houseLockListVo">
         SELECT
         SELECT
         hn.house_id AS houseId,
         hn.house_id AS houseId,