nickchange
2023-10-20 562499071bf7814840467df81327277c7b8103fa
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;
    }
@@ -168,56 +170,6 @@
     */
    @Override
    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();
//        s.setTime(sdf.parse(day + " " + site.getAppointmentStartTime()));
//        Calendar e = Calendar.getInstance();
//        e.setTime(sdf.parse(day + " " + site.getAppointmentEndTime()));
//
//        int hour = e.get(Calendar.HOUR_OF_DAY);
//
//        int minute = e.get(Calendar.MINUTE);
//
//        List<QuerySiteTimes> list = new ArrayList<>();
//
//        SimpleDateFormat sdfs = new SimpleDateFormat("HH:mm");
//
//        while (true){
//
//            String start = sdfs.format(s.getTime());
//
//            s.set(Calendar.MINUTE, s.get(Calendar.MINUTE) + 30);
//
//            int e_hour = s.get(Calendar.HOUR_OF_DAY);
//
//            int e_minute = s.get(Calendar.MINUTE);
//
//            String end = sdfs.format(s.getTime());
//
//            QuerySiteTimes querySiteTimes = new QuerySiteTimes();
//
//            querySiteTimes.setTime(start + "-" + end);
//
//            querySiteTimes.setSelectable(1);
//
//            SiteBooking siteBooking = siteBookingService.getOne(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("state", 1)
//                    .in("status", Arrays.asList(3, 4, 5)).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'"));
//            if(null != siteBooking){
//                querySiteTimes.setSelectable(0);
//            }
//            int count = siteLockService.count(new QueryWrapper<SiteLock>().eq("siteId", id).last(" and DATE_FORMAT(startTime, '%Y-%m-%d %H:%i') <= '" + day + " " + start + "' and DATE_FORMAT(endTime, '%Y-%m-%d %H:%i') >= '" + day + " " + end + "'"));
//            if(count > 0){
//                querySiteTimes.setSelectable(0);
//            }
//
//            list.add(querySiteTimes);
//
//            if(e_hour == hour && minute == e_minute){
//                break;
//            }
//        }
//        return list;
        System.out.println("=======date======"+day);
@@ -225,6 +177,10 @@
//        List<SiteBooking> siteBookings = siteClient.listBooks(id);
        List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).eq("nextName",siteName).like("times",day));
        if (siteName==null|| siteName.equals("")){
            siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",day));
        }
        System.out.println("=======siteBookings======"+siteBookings);
        for (SiteBooking siteBooking : siteBookings) {
@@ -245,11 +201,7 @@
                    }
                }
            }
        }
        System.out.println("======strings======="+strings);
@@ -264,7 +216,14 @@
        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;
            QuerySiteTimes orderDto = new QuerySiteTimes();
            orderDto.setTime(timeRange);
@@ -277,9 +236,23 @@
//                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);
                    }
                }
            }
@@ -289,8 +262,6 @@
        System.out.println("-------------"+timeRanges);
        return timeRanges;
@@ -311,23 +282,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);
    }