From 42d88524106b0ceca1af2ced690cfc2a8f5c8cd0 Mon Sep 17 00:00:00 2001 From: Romesum Date: Mon, 25 May 2020 15:27:51 +0800 Subject: [PATCH] =?UTF-8?q?[feat][M]:=20=E6=B7=BB=E5=8A=A0=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E6=8E=A5=E5=8F=A3findWeeksAble=EF=BC=8C=E9=80=9A?= =?UTF-8?q?=E8=BF=87UCID=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LabTimeController.java | 33 ++++++++++--------- .../repository/LabTimeRepository.java | 20 +++++++++++ .../bookingsystem/service/LabTimeService.java | 8 +++++ .../service/impl/LabTimeServiceImpl.java | 18 ++++++++++ 4 files changed, 63 insertions(+), 16 deletions(-) diff --git a/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java b/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java index 10ee57b..3120684 100644 --- a/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java +++ b/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java @@ -92,8 +92,9 @@ public class LabTimeController { @RequestParam("year") String year, @RequestParam("semester") Integer semester, @RequestParam("day") Integer day, - @RequestParam("time") Integer time) { - List weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time); + @RequestParam("time") Integer time, + @RequestParam("uc_id") Integer uc_id) { + List weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time, uc_id); return ResultVOUtil.success(weeks); } @@ -106,18 +107,18 @@ public class LabTimeController { labTime.setCreateTime(new Date()); labTime.setStatus(0); // 用户发起的修改请求 - List weeks = (List)map.get("weeks"); + List weeks = (List) map.get("weeks"); // 实验室预约时间段 - List weeksAll = labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime()); + List weeksAll = labTimeService.findWeeks(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime()); // 实验室可预约时间段 - List weeksAble = labTimeService.findWeeksAble(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime()); + List weeksAble = labTimeService.findWeeksAble(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime()); // 实验室不可变换或不可选取的时间段 List weeksDisable = new ArrayList<>(weeksAll); weeksDisable.removeAll(weeksAble); // 如果请求weeks中不包含不可选取的时间段,报错 - if (!weeks.containsAll(weeksDisable)){ - return ResultVOUtil.error(-1,"已被预约的时间段无法去除"); + if (!weeks.containsAll(weeksDisable)) { + return ResultVOUtil.error(-1, "已被预约的时间段无法去除"); } // 2. 数据处理 @@ -126,18 +127,18 @@ public class LabTimeController { weekInsert.removeAll(weeksAll); // 需要delete的weeks - List weekDelete = new ArrayList<>(weeksAll); + List weekDelete = new ArrayList<>(weeksAll); weekDelete.removeAll(weeks); // 3.批量删除 - List labTimeBeans = labTimeService.findTimes(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime()); + List labTimeBeans = labTimeService.findTimes(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime()); labTimeBeans.removeIf(labTimeBean -> !weekDelete.contains(labTimeBean.getWeek())); - for (LabTimeBean labTimeBean : labTimeBeans){ + for (LabTimeBean labTimeBean : labTimeBeans) { labTimeService.deleteByLtId(labTimeBean.getLtId()); } // 4.批量插入 - for (int i : weekInsert){ + for (int i : weekInsert) { LabTimeBean temp = LabTimeBean.builder().labId(labTime.getLabId()) .year(labTime.getYear()) .semester(labTime.getSemester()) @@ -151,11 +152,11 @@ public class LabTimeController { labTimeService.add(temp); } - System.out.println("用户请求"+weeks); - System.out.println("原来有的"+weeksAll); - System.out.println("要插入的"+weekInsert); - System.out.println("要删除的"+weekDelete); - return ResultVOUtil.success(labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime())); + System.out.println("用户请求" + weeks); + System.out.println("原来有的" + weeksAll); + System.out.println("要插入的" + weekInsert); + System.out.println("要删除的" + weekDelete); + return ResultVOUtil.success(labTimeService.findWeeks(labTime.getLabId(), labTime.getYear(), labTime.getSemester(), labTime.getDay(), labTime.getTime())); } } diff --git a/java/src/main/java/com/hzu/bookingsystem/repository/LabTimeRepository.java b/java/src/main/java/com/hzu/bookingsystem/repository/LabTimeRepository.java index 2227902..0fec494 100644 --- a/java/src/main/java/com/hzu/bookingsystem/repository/LabTimeRepository.java +++ b/java/src/main/java/com/hzu/bookingsystem/repository/LabTimeRepository.java @@ -85,4 +85,24 @@ public interface LabTimeRepository extends JpaRepository { " tb_lab_time.lt_id not in (select lt_id from tb_lab_record where status is not null)" , nativeQuery = true) List findWeeksAbleBook(Integer lab_id, String year, Integer semester, Integer day, Integer time) ; + @Query(value = "SELECT " + + " tb_lab_time.* " + + "FROM " + + "tb_lab_time LEFT JOIN tb_lab_record ON tb_lab_time.lt_id=tb_lab_record.lt_id " + + "WHERE " + + " tb_lab_time.lab_id = ?1 AND " + + " tb_lab_time.`year` = ?2 AND " + + " tb_lab_time.semester = ?3 AND " + + " tb_lab_time.`day` = ?4 AND " + + " tb_lab_time.time = ?5 AND " + + " tb_lab_time.lt_id not in (select lt_id from tb_lab_record where status is not null)" + + "OR " + + " tb_lab_time.lab_id = ?1 AND " + + " tb_lab_time.`year` = ?2 AND " + + " tb_lab_time.semester = ?3 AND " + + " tb_lab_time.`day` = ?4 AND " + + " tb_lab_time.time = ?5 AND " + + "tb_lab_record.uc_id = ?6" , nativeQuery = true) + List findWeeksAbleBook(Integer lab_id, String year, Integer semester, Integer day, Integer time,Integer uc_id) ; + } diff --git a/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java b/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java index f73348e..75c906c 100644 --- a/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java +++ b/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java @@ -83,6 +83,14 @@ public interface LabTimeService { */ List findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time) ; + /** + * 通过学期、周、星期、上课时间、ucid查找实验室可预约时间段周次 + *author 吴志岳 + * @param lab_id、year、semester + * @return List + */ + List findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time,Integer uc_id) ; + /** * 通过学年、学期、星期、上课时间查找实验室预约时间段 */ diff --git a/java/src/main/java/com/hzu/bookingsystem/service/impl/LabTimeServiceImpl.java b/java/src/main/java/com/hzu/bookingsystem/service/impl/LabTimeServiceImpl.java index a829d52..f8551c2 100644 --- a/java/src/main/java/com/hzu/bookingsystem/service/impl/LabTimeServiceImpl.java +++ b/java/src/main/java/com/hzu/bookingsystem/service/impl/LabTimeServiceImpl.java @@ -119,6 +119,24 @@ public class LabTimeServiceImpl implements LabTimeService { return weeks; } + /** + * author 吴志岳 + * + * @param lab_id、year、semester + * @param year + * @param semester + * @return + */ + @Override + public List findWeeksAble(Integer lab_id, String year, Integer semester, Integer day, Integer time,Integer uc_id) { + List list = labTimeRepository.findWeeksAbleBook(lab_id, year, semester, day, time, uc_id); + List weeks = new ArrayList<>(); + for (LabTimeBean labtime : list) { + weeks.add(labtime.getWeek()); + } + return weeks; + } + @Override public List findTimes(Integer lab_id, String year, Integer semester, Integer day, Integer time) { return labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time);