liu 1 jaar geleden
bovenliggende
commit
7bd5f37167

+ 1 - 1
src/main/java/com/template/common/utils/SubscribeSample.java

@@ -41,7 +41,7 @@ public class SubscribeSample{
         this.mqttConfiguration = mqttConfiguration;
     }
 
-//    @Scheduled(cron = "0 10 * * * ? ")
+
     public void mqtt() {
         String HOST = "tcp://www.qspms.cn:1883";
         String TOPIC = "smartLock/open/device/2d00b258183146c0a2b19f55250c4596";

+ 23 - 5
src/main/java/com/template/controller/HouseOrderController.java

@@ -372,7 +372,7 @@ public class HouseOrderController implements HouseOrderAPI {
 //        预定离开时间
         houseOrder.setReserveLeaveTime(reserveLeaveTime);
 //        超时时间
-        String timeOut = now.plusMinutes(15).format(dateTimeFormatter1);
+        String timeOut = now.plusMinutes(2).format(dateTimeFormatter1);
         houseOrder.setTimeOut(timeOut);
 
         houseOrder.setSource(source);
@@ -3959,12 +3959,12 @@ public class HouseOrderController implements HouseOrderAPI {
      * 每天13点
      * 计算当天当前时间超过待入住.已支付订单的预离时间
      */
-    @Scheduled(cron = "0 0 13 * * ? ")
-//    @Scheduled(cron = "0 0/1 * * * ?")
+//    @Scheduled(cron = "0 0 13 * * ? ")
+    @Scheduled(cron = "0 0 0 * * ? ")
     @Transactional(rollbackFor = Exception.class)//1
     public void getBlacklist() {
 //        获取预离时间是当天的待入住,已支付订单
-        LocalDateTime startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0);
+        LocalDateTime startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).minusDays(1);
         LocalDateTime endTime = startTime.withHour(23).withMinute(59).withSecond(59);
 
         LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
@@ -3973,7 +3973,7 @@ public class HouseOrderController implements HouseOrderAPI {
                 .eq(HouseOrder::getPayPrice, 0);
         List<HouseOrder> list = houseOrderService.list(wrapper);
 
-        if (list.size() > .0) {
+        if (list.size() > 0) {
             ArrayList<BlacklistOrder> blacklistOrders = new ArrayList<>();
 
             for (HouseOrder houseOrder : list) {
@@ -3994,6 +3994,24 @@ public class HouseOrderController implements HouseOrderAPI {
                 blacklistOrder.setReserveLiveTime(houseOrder.getReserveLiveTime());
                 blacklistOrder.setReserveLeaveTime(houseOrder.getReserveLeaveTime());
                 blacklistOrders.add(blacklistOrder);
+
+//                将订单状态改成取消,空出房间
+                // 修改订单状态
+                houseOrder.setOrderStatus("9");
+//  设置取消时间
+                houseOrder.setCancelTime(new Date());
+
+                LambdaQueryWrapper<HouseNumberState> wrapperHns = new LambdaQueryWrapper<>();
+                wrapperHns.eq(HouseNumberState::getHouseNumberId, houseOrder.getHouseNumberId())
+                        .eq(HouseNumberState::getOrderNumber, houseOrder.getOrderNumber());
+                HouseNumberState houseNumberState = houseNumberStateService.getOne(wrapperHns);
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                houseNumberState.setEndTime(sdf.format(new Date()));
+
+                houseOrderService.updateById(houseOrder);
+                houseNumberStateService.removeById(houseNumberState.getId());
+
+
             }
 
 

+ 116 - 2
src/main/java/com/template/services/impl/HouseOrderServziceImpl.java

@@ -20,9 +20,11 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.time.format.TextStyle;
 import java.time.temporal.ChronoUnit;
 import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * <p>
@@ -53,6 +55,9 @@ public class HouseOrderServziceImpl extends ServiceImpl<HouseOrderMapper, HouseO
     @Autowired
     ApplicationProcedureTemporaryService apts;
 
+    @Autowired
+    ApplicationProcedureTemporaryService applicationProcedureTemporaryService;
+
     @Override
     public BigDecimal getHouseOrderPrice(int houseOrderNumber, String userId, String houseId, String liveTime, String leaveTime,Integer source) {
 
@@ -115,13 +120,122 @@ public class HouseOrderServziceImpl extends ServiceImpl<HouseOrderMapper, HouseO
         String department = users.getDepartment();
 
 
+//        先判断免费来源是否是对的
         BigDecimal totalPrice = new BigDecimal(0);
 
         if (ObjectUtils.isNotEmpty(source)) {
             if (source==1) {
-                return totalPrice;
+
+                //        获取预定时间的开始星期和结束星期
+                String chineseDayOfWeek = state.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINA);
+                Integer week = 0;
+                if ("星期一".equals(chineseDayOfWeek)) {
+                    week = 1;
+                } else if ("星期二".equals(chineseDayOfWeek)) {
+                    week = 2;
+                } else if ("星期三".equals(chineseDayOfWeek)) {
+                    week = 3;
+                } else if ("星期四".equals(chineseDayOfWeek)) {
+                    week = 4;
+                } else if ("星期五".equals(chineseDayOfWeek)) {
+                    week = 5;
+                } else if ("星期六".equals(chineseDayOfWeek)) {
+                    week = 6;
+                } else {
+                    week = 7;
+                }
+
+                LocalDate localDate = state.minusDays(week - 1);
+                String stateTimeXq = localDate.format(dateTimeFormatter2);
+                LocalDate localEnd = localDate.plusDays(6);
+                String endTimeXq = localEnd.format(dateTimeFormatter2);
+//        查询该星期是否满足有2天的订单
+                LambdaQueryWrapper<HouseOrder> wrapperHO = new LambdaQueryWrapper<>();
+                wrapperHO.between(HouseOrder::getReserveLiveTime, stateTimeXq + " 00:00:00", endTimeXq + " 23:59:59")
+                        .eq(HouseOrder::getReserveUserId, userId)
+                        .eq(HouseOrder::getSource, 1)
+                        .eq(HouseOrder::getPayPrice, 0)
+                        .in(HouseOrder::getOrderStatus, 1, 2, 3, 4, 8);
+                List<HouseOrder> orderList = this.list(wrapperHO);
+
+                long dayDiff = 0;
+
+                for (HouseOrder houseOrder : orderList) {
+                    String reserveLiveTime = houseOrder.getReserveLiveTime();
+                    String reserveLeaveTime = houseOrder.getReserveLeaveTime();
+                    LocalDateTime stateTime2 = LocalDateTime.parse(reserveLiveTime, dateTimeFormatter1);
+                    LocalDateTime endTime2 = LocalDateTime.parse(reserveLeaveTime, dateTimeFormatter1);
+                    LocalDate state1 = stateTime2.toLocalDate();
+                    LocalDate end2 = endTime2.toLocalDate();
+                    //   计算2个时间差
+                    long until2 = state1.until(end2, ChronoUnit.DAYS);
+                    dayDiff = dayDiff + until2;
+                }
+
+                //   计算2个时间差
+                long until2 = state.until(end, ChronoUnit.DAYS);
+
+                Integer count = 1;
+                if (dayDiff + until2 > 2) {
+                    count = 0;
+                } else {
+                    for (int i = 0; i < until; i++) {
+                        LocalDateTime dateTime1 = stateTime.plusDays(i);
+                        LocalDateTime startS = dateTime1.withHour(0).withMinute(0).withSecond(0);
+                        LocalDateTime endS = dateTime1.withHour(23).withMinute(59).withSecond(59);
+                        LambdaQueryWrapper<ClassSchedule> wrapperCS = new LambdaQueryWrapper<>();
+                        wrapperCS.eq(ClassSchedule::getJsgh, users.getCardNumber())
+                                .between(ClassSchedule::getDateTime, startS, endS);
+                        List<ClassSchedule> scheduleList = classScheduleService.list(wrapperCS);
+
+//            只要有一天是空的就不是免费
+                        if (ObjectUtils.isEmpty(scheduleList)) {
+                            count = 0;
+                            break;
+                        } else {
+                            //        有课表就查询是否已经有该订单了
+                            List<HouseOrder> list = this.getDate(dateTime1, userId, 1);
+                            if (ObjectUtils.isNotEmpty(list)) {
+                                count = 0;
+                                break;
+                            }
+                        }
+
+                    }
+                }
+
+                if (count > 0) {
+                    return totalPrice;
+                }
+
+
             }else if (source==2){
-                return totalPrice;
+                //        获取流程
+                List<ApplicationProcedureTemporary> aptList = applicationProcedureTemporaryService.getApt(state, end, userId);
+                Integer count = 1;
+                if (ObjectUtils.isEmpty(aptList)) {
+                    count=1;
+                } else {
+                    ApplicationProcedureTemporary applicationProcedureTemporary = aptList.get(0);
+                    String houseCount = applicationProcedureTemporary.getHouseCount();
+                    String startTime = applicationProcedureTemporary.getStartTime();
+                    String endTime1 = applicationProcedureTemporary.getEndTime();
+//            计算开始到结束时间有多少订单
+                    LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.eq(HouseOrder::getReserveUserId, userId)
+                            .eq(HouseOrder::getSource, 2)
+                            .between(HouseOrder::getReserveLiveTime, startTime, endTime1)
+                            .eq(HouseOrder::getPayPrice, 0)
+                            .in(HouseOrder::getOrderStatus, 1, 2, 3, 4, 8);
+                    List<HouseOrder> list = this.list(wrapper);
+                    Integer count2 = Integer.valueOf(houseCount);
+                    count = count2 - list.size();
+                }
+                if (count > 0) {
+                    return totalPrice;
+                }
+
+
             }
         }
 

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

@@ -221,7 +221,6 @@
             AND h.deleted = 0
         WHERE hn.deleted = 0
           AND FIND_IN_SET(hn.id, #{houseNumberIds})
-          AND hn.house_status = 1
           AND hn.electric_type = 1
 
     </select>
@@ -236,7 +235,6 @@
             AND h.deleted = 0
         WHERE hn.deleted = 0
           AND FIND_IN_SET(hn.id, #{houseNumberIds})
-          AND hn.house_status = 1
           AND hn.electric_type = 2
     </select>
     <select id="roomChangePage" resultType="com.template.model.vo.HouseNumberVo">