From 1e790795f4e2c365f604ecc0fc1b290e3ff3c35f Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期五, 20 十月 2023 09:34:22 +0800
Subject: [PATCH] 更新bug

---
 cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java |   95 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 65 insertions(+), 30 deletions(-)

diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
index ac5758d..b7f4243 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.other.entity.*;
@@ -87,7 +88,8 @@
                 continue;
             }
             Map<String, Double> distance = GeodesyUtil.getDistance(querySiteList.getLon() + "," + querySiteList.getLat(), querySiteListVo.getStoreLon() + "," + querySiteListVo.getStoreLat());
-            querySiteListVo.setDistance(distance.get("WGS84"));
+            double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+            querySiteListVo.setDistance(wgs84);
         }
         return querySiteListVos;
     }
@@ -167,7 +169,7 @@
      * @throws Exception
      */
     @Override
-    public List<QuerySiteTimes> querySiteTimes(Integer id, String day) throws Exception {
+    public List<QuerySiteTimes> querySiteTimes(Integer id, String day,String halfName,String siteName) throws Exception {
 //        Site site = this.getById(id);
 //        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
 //        Calendar s = Calendar.getInstance();
@@ -224,16 +226,28 @@
         List<String> strings = new ArrayList<>();
 
 //        List<SiteBooking> siteBookings = siteClient.listBooks(id);
-        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",day));
+        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("nextName",siteName).like("times",day));
         System.out.println("=======siteBookings======"+siteBookings);
         for (SiteBooking siteBooking : siteBookings) {
+
+
             String[] split = siteBooking.getTimes().split(";");
-            for (String s : split) {
 
-                String convertedValue = s.substring(11);
-                strings.add(convertedValue);
+            if (siteBooking.getIsHalf() == 2) {
+                for (String s : split) {
+                    String convertedValue = s.substring(11);
+                    strings.add(convertedValue);
+                }
+            }else {
+
+                if (siteBooking.getHalfName().equals(halfName)){
+                    for (String s : split) {
+                        String convertedValue = s.substring(11);
+                        strings.add(convertedValue);
+                    }
+
+                }
             }
-
         }
         System.out.println("======strings======="+strings);
 
@@ -248,7 +262,12 @@
 
         String currentTime = appointmentStartTime;
         while (currentTime.compareTo(appointmentEndTime) < 0) {
-            String nextTime = getNextTime(currentTime);
+            String nextTime=null;
+            if("智慧场地".equals(site.getTypeName())){
+                nextTime=getNextTimeOne(currentTime);
+            }else {
+                nextTime= getNextTime(currentTime);
+            }
 
 
             String timeRange = currentTime + "-" + nextTime;
@@ -259,11 +278,27 @@
             LocalTime targetTime = LocalTime.parse(currentTime);
 
             boolean hasExceeded = currentTime1.isAfter(targetTime);
-            if (hasExceeded){
-                orderDto.setSelectable(0);
-            }
+//            if (hasExceeded){
+//                orderDto.setSelectable(0);
+//            }
             if (strings.contains(timeRange)){
+
                 orderDto.setSelectable(0);
+            }else {
+
+                String stime = day+" "+currentTime;
+                String etime = day+" "+nextTime;
+                orderDto.setSelectable(1);
+                // 查出lock
+                List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id));
+                for (SiteLock siteLock : list) {
+                    boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime());
+                    if(stringDateBetween){
+                        orderDto.setSelectable(0);
+                    }
+                }
+
+
             }
 
 
@@ -273,8 +308,6 @@
         System.out.println("-------------"+timeRanges);
 
         return timeRanges;
-
-
 
 
 
@@ -295,23 +328,25 @@
 
         return String.format("%02d:%02d", hour, minute);
 
-//        String[] parts = currentTime.split(":");
-//        int hour = Integer.parseInt(parts[0]);
-//        int minute = Integer.parseInt(parts[1]);
-//
-//        if (minute == 45) {
-//            hour++;
-//            minute = 0;
-//        } else if (minute == 0){
-//            minute = 15;
-//        }else if (minute == 15){
-//            minute = 30;
-//        }else if (minute == 30){
-//            minute = 45;
-//        }
-//
-//        return String.format("%02d:%02d", hour, minute);
+    }
+    public static String getNextTimeOne(String currentTime) {
 
+        String[] parts = currentTime.split(":");
+        int hour = Integer.parseInt(parts[0]);
+        int minute = Integer.parseInt(parts[1]);
+
+        if (minute == 45) {
+            hour++;
+            minute = 0;
+        } else if (minute == 0){
+            minute = 15;
+        }else if (minute == 15){
+            minute = 30;
+        }else if (minute == 30){
+            minute = 45;
+        }
+
+        return String.format("%02d:%02d", hour, minute);
 
     }
 
@@ -331,7 +366,7 @@
         for (String s : split) {
             String day = s.split(" ")[0];
             String time = s.split(" ")[1];
-            List<QuerySiteTimes> querySiteTimes = querySiteTimes(reservationSite.getId(), day);
+            List<QuerySiteTimes> querySiteTimes = querySiteTimes(reservationSite.getId(), day,reservationSite.getHalfName(),reservationSite.getNextName());
             for (QuerySiteTimes querySiteTime : querySiteTimes) {
                 if(querySiteTime.getTime().equals(time) && querySiteTime.getSelectable() == 0){
                     return ResultUtil.error("【" + s + "】时间段已被使用");

--
Gitblit v1.7.1