From c801e521edeea24ff7dc01e1e46bbf2b301f804d Mon Sep 17 00:00:00 2001 From: nickchange <126672920+nickchange@users.noreply.github.com> Date: 星期五, 20 十月 2023 18:35:53 +0800 Subject: [PATCH] 10.20.4 --- cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java | 150 ++++++++++++++++++++++++------------------------- 1 files changed, 73 insertions(+), 77 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 5065796..fe3d8d1 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,73 +169,46 @@ * @throws Exception */ @Override - public List<QuerySiteTimes> querySiteTimes(Integer id, String day) 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; + public List<QuerySiteTimes> querySiteTimes(Integer id, String day,String halfName,String siteName) throws Exception { System.out.println("=======date======"+day); 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)); + 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) { + + 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 (halfName==null){ + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } + } + + if (siteBooking.getHalfName().equals(halfName)){ + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } + + } } - } System.out.println("======strings======="+strings); @@ -248,7 +223,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; @@ -263,7 +243,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); + } + } + + } @@ -273,8 +269,6 @@ System.out.println("-------------"+timeRanges); return timeRanges; - - @@ -295,23 +289,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 +327,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