ソースを参照

修改单日房态空闲筛选接口

liu 1 年間 前
コミット
2aef735bff

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

@@ -129,7 +129,45 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
         List<House> list = houseService.list(new LambdaQueryWrapper<>());
         LocalDateTime start = LocalDateTime.now();
         LocalDateTime end = start.withHour(23).withMinute(59).withSecond(59);
-        List<HouseStateVo> pageVo1 = houseNumberService.houseStatePage(keyWord, houseType, start, end, houseId, buildingId, houseStatus, houseNumberStatus);
+        List<HouseStateVo> pageVo1 = null;
+        if (houseNumberStatus==1) {
+            //            有房态的id
+            List<Integer> ids3=houseNumberService.getStateHouseNumber(start,end);
+
+//            ArrayList<Integer> ids3 = new ArrayList<>();
+//            for (HouseStateVo houseStateVo : pageVo1) {
+//                int houseNumberId = houseStateVo.getHouseNumberId();
+//                ids3.add(houseNumberId);
+//            }
+//            全部房间id
+            List<Integer> ids=houseNumberService.getHouseNumberIds();
+//            脏房房间id
+            List<Integer> ids2=houseNumberService.getHouserNumberStatusIds(2);
+//            空闲房间id
+            ArrayList<Integer> integers = new ArrayList<>();
+            for (Integer id : ids) {
+                if (!ids2.contains(id)) {
+                    if (!ids3.contains(id)) {
+                        integers.add(id);
+                    }
+                }
+            }
+            //      获取当前房型的所有id
+            String houseNumberIds = "";
+            for (int i = 0; i < integers.size(); i++) {
+                 Integer id = integers.get(i);
+                 String houseNumber=String.valueOf(id);
+                if (i == 0) {
+                    houseNumberIds = houseNumberIds + houseNumber;
+                } else {
+                    houseNumberIds = houseNumberIds + "," + houseNumber;
+                }
+            }
+            pageVo1 = houseNumberService.houseStateLeisurePage(keyWord, houseType, start, end, houseId, buildingId,houseNumberIds);
+
+        }else {
+            pageVo1 = houseNumberService.houseStatePage(keyWord, houseType, start, end, houseId, buildingId, houseStatus, houseNumberStatus);
+        }
         HashMap<Integer, HouseStateVo> map = new HashMap<>();
         for (HouseStateVo houseStateVo : pageVo1) {
             Integer houseNumberId = houseStateVo.getHouseNumberId();

+ 7 - 2
src/main/java/com/template/controller/HouseOrderController.java

@@ -179,6 +179,11 @@ public class HouseOrderController implements HouseOrderAPI {
             return CommonResult.fail();
         }
 
+//        需判断当前用户是能定这时间段的房
+        String reserveLiveTime = establishOrderDto.getReserveLiveTime();
+        String reserveLeaveTime = establishOrderDto.getReserveLeaveTime();
+
+
         String userId = establishOrderDto.getUserId();
 
         String houseId = establishOrderDto.getHouseId();
@@ -210,8 +215,8 @@ public class HouseOrderController implements HouseOrderAPI {
                 ids = ids + "," + id;
             }
         }
-        String reserveLiveTime = establishOrderDto.getReserveLiveTime();
-        String reserveLeaveTime = establishOrderDto.getReserveLeaveTime();
+//        String reserveLiveTime = establishOrderDto.getReserveLiveTime();
+//        String reserveLeaveTime = establishOrderDto.getReserveLeaveTime();
 
         //        判断传过来的时间和当前时间比较
         DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

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

@@ -50,4 +50,11 @@ public interface HouseNumberMapper extends BaseMapper<HouseNumber> {
 
 
     IPage<HouseNumberListVo> getpage(Page<HouseNumberListVo> pageVo,@Param("keyWord") String keyWord,@Param("buildingId") Integer buildingId,@Param("houseId") Integer houseId);
+
+    List<Integer> getHouseNumberIds();
+    List<Integer> getHouserNumberStatusIds(@Param("status") Integer status);
+
+    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);
 }

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

@@ -51,4 +51,13 @@ public interface HouseNumberService extends IService<HouseNumber> {
     List<HouseNumber> getHouseId(String houseId);
 
     HouseNumber getBRoomNumber(Integer bId, String roomNumber);
+
+    List<Integer> getHouseNumberIds();
+
+    List<Integer> getHouserNumberStatusIds(Integer status);
+
+    List<Integer> getStateHouseNumber(LocalDateTime start, LocalDateTime end);
+
+    List<HouseStateVo> houseStateLeisurePage(String keyWord, String houseType, LocalDateTime start, LocalDateTime end, Integer houseId, Integer buildingId, String houseNumberIds);
+
 }

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

@@ -133,5 +133,24 @@ public class HouseNumberServiceImpl extends ServiceImpl<HouseNumberMapper, House
         return houseNumber;
     }
 
+    @Override
+    public List<Integer> getHouseNumberIds() {
+        return  houseNumberMapper.getHouseNumberIds();
+    }
+
+    @Override
+    public List<Integer> getHouserNumberStatusIds(Integer status) {
+        return houseNumberMapper.getHouserNumberStatusIds(status);
+    }
 
+    @Override
+    public List<Integer> getStateHouseNumber(LocalDateTime start, LocalDateTime end) {
+        return houseNumberMapper.getStateHouseNumber(start,end);
+    }
+
+    @Override
+    public List<HouseStateVo> houseStateLeisurePage(String keyWord, String houseType, LocalDateTime start, LocalDateTime end, Integer houseId, Integer buildingId, String houseNumberIds) {
+        List<HouseStateVo> result = houseNumberMapper.houseStateLeisurePage(keyWord, houseType, start, end, houseId, buildingId,houseNumberIds);
+        return result;
+    }
 }

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

@@ -62,6 +62,7 @@
 
             <if test="houseStatus != null and houseStatus != ''">
                 AND hns.status = #{houseStatus}
+--                 AND FIND_IN_SET(hns.status,#{houseNumberStatus})
             </if>
 
             <if test="houseNumberStatus != null and houseNumberStatus != ''">
@@ -379,6 +380,102 @@
         </if>
         ORDER BY b.building,b.element
     </select>
+    <select id="getHouseNumberIds" resultType="java.lang.Integer">
+        SELECT
+            id
+        FROM
+            `house_number`
+        WHERE deleted=0
+    </select>
+    <select id="getHouserNumberStatusIds" resultType="java.lang.Integer">
+        SELECT
+            id
+        FROM
+            `house_number`
+        WHERE deleted=0
+          AND house_status=#{status}
+    </select>
+    <select id="getStateHouseNumber" resultType="java.lang.Integer">
+        SELECT
+            hn.id AS houseNumberId
+        FROM
+            `house_number` hn
+                LEFT JOIN house_number_state hns ON hn.id = hns.house_number_id
+                AND hns.deleted = 0
+                AND #{end} >= hns.start_time
+                AND hns.end_time >= #{start}
+        WHERE
+            hn.deleted = 0
+          AND FIND_IN_SET(hns.status,'3,4,5,6')
+        ORDER BY
+            hn.room_number
+    </select>
+
+    <select id="houseStateLeisurePage" resultType="com.template.model.vo.HouseStateVo">
+        SELECT
+        hn.id AS houseNumberId,
+        hn.house_id as houseId,
+        hn.room_number as houseNumber,
+        hn.house_status as houseStatus,
+        h.room_name as houseName,
+        hns.`status` AS status,
+        ho.reserve_name as reserveName,
+        ho.reserve_live_time as reserveLiveTime,
+        ho.reserve_leave_time as reserveLeaveTime,
+        h.room_live_time as roomLiveTime,
+        h.receiving_time as receivingTime,
+        hns.id as houseNumberStateId,
+        ho.order_number as orderNumber,
+        h.room_type as roomType,
+        b.building,
+        b.element,
+        ho.key_type as lockStatus,
+        ho.key_pass_word as passWord,
+        ho.order_status as orderStatus,
+        ho.id as houseOrderId,
+        ho.live_time AS liveTime,
+        ho.leave_time AS leaveTime,
+        hns.start_time as startTime,
+        hns.end_time as endTime
+        FROM
+        `house_number` hn
+        LEFT JOIN house h ON h.id = hn.house_id
+        AND h.deleted = 0
+        LEFT JOIN house_number_state hns ON hn.id = hns.house_number_id
+        AND hns.deleted = 0
+        AND #{end}>= hns.start_time
+        AND hns.end_time>= #{start}
+        LEFT JOIN house_order ho ON hns.order_number = ho.order_number
+        AND ho.deleted = 0
+        LEFT JOIN building b ON b.id = hn.building_id
+        AND b.deleted = 0
+
+        <where>
+            hn.deleted = 0
+            <if test="houseType != null and houseType != ''">
+                AND h.room_type = #{houseType}
+            </if>
+
+            <if test="keyWord != null and keyWord != ''">
+                AND ( hn.room_number LIKE '%' #{keyWord} '%' OR ho.reserve_name 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>
+
+            <if test="houseNumberIds != null and houseNumberIds != ''">
+                AND FIND_IN_SET(hn.id,#{houseNumberIds})
+            </if>
+
+        </where>
+        ORDER BY
+        hn.room_number
+    </select>
 
 
 </mapper>