From fb8bdc4216e74db540c28dec4b8c346ae1fde58a Mon Sep 17 00:00:00 2001 From: Romesum Date: Sun, 24 May 2020 14:31:42 +0800 Subject: [PATCH] =?UTF-8?q?[fix][M]:=20=E5=AE=9E=E7=8E=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AE=9E=E9=AA=8C=E5=AE=A4=E9=A2=84=E7=BA=A6=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzu/bookingsystem/bean/LabTimeBean.java | 6 ++++ .../controller/LabTimeController.java | 35 +++++++++++++++++-- .../bookingsystem/service/LabTimeService.java | 5 +++ .../service/impl/LabTimeServiceImpl.java | 7 +++- 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/java/src/main/java/com/hzu/bookingsystem/bean/LabTimeBean.java b/java/src/main/java/com/hzu/bookingsystem/bean/LabTimeBean.java index 00f488b..9ff9d94 100644 --- a/java/src/main/java/com/hzu/bookingsystem/bean/LabTimeBean.java +++ b/java/src/main/java/com/hzu/bookingsystem/bean/LabTimeBean.java @@ -1,6 +1,9 @@ package com.hzu.bookingsystem.bean; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.Date; @@ -9,6 +12,9 @@ import java.util.Date; */ @Data @Entity +@NoArgsConstructor +@AllArgsConstructor +@Builder @Table(name = "tb_lab_time") public class LabTimeBean { @Id 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 48ecaa4..10ee57b 100644 --- a/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java +++ b/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; @@ -21,6 +22,9 @@ public class LabTimeController { @Autowired private LabTimeService labTimeService; + @Autowired + private UserController userController; + //创建实验室可预约时间段 @PostMapping(value = "/addLabTime", consumes = "application/json") public ResultVO addLabTime(@RequestBody Map map) { @@ -96,8 +100,11 @@ public class LabTimeController { //修改实验室可预约时间段 @PostMapping(value = "/updateLabTime", consumes = "application/json") public ResultVO updateLabTime(@RequestBody Map map, HttpServletRequest request) { - //转换对象 + //1. 转换对象,初始化对象,定义时间段 LabTimeBean labTime = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class); + labTime.setCreatorId(userController.getUIdByCookie(request)); + labTime.setCreateTime(new Date()); + labTime.setStatus(0); // 用户发起的修改请求 List weeks = (List)map.get("weeks"); // 实验室预约时间段 @@ -113,6 +120,7 @@ public class LabTimeController { return ResultVOUtil.error(-1,"已被预约的时间段无法去除"); } + // 2. 数据处理 // 需要insert的weeks List weekInsert = new ArrayList<>(weeks); weekInsert.removeAll(weeksAll); @@ -120,11 +128,34 @@ public class LabTimeController { // 需要delete的weeks List weekDelete = new ArrayList<>(weeksAll); weekDelete.removeAll(weeks); + + // 3.批量删除 + 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){ + labTimeService.deleteByLtId(labTimeBean.getLtId()); + } + + // 4.批量插入 + for (int i : weekInsert){ + LabTimeBean temp = LabTimeBean.builder().labId(labTime.getLabId()) + .year(labTime.getYear()) + .semester(labTime.getSemester()) + .week(i) + .day(labTime.getDay()) + .time(labTime.getTime()) + .createTime(labTime.getCreateTime()) + .creatorId(labTime.getCreatorId()) + .status(labTime.getStatus()) + .build(); + labTimeService.add(temp); + } + System.out.println("用户请求"+weeks); System.out.println("原来有的"+weeksAll); System.out.println("要插入的"+weekInsert); System.out.println("要删除的"+weekDelete); - return ResultVOUtil.success(); + 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/service/LabTimeService.java b/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java index f06b933..f73348e 100644 --- a/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java +++ b/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java @@ -82,4 +82,9 @@ public interface LabTimeService { * @return List */ List findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time) ; + + /** + * 通过学年、学期、星期、上课时间查找实验室预约时间段 + */ + List findTimes(Integer lab_id,String year,Integer semester, Integer day,Integer time); } \ No newline at end of file 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 71190a4..a829d52 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 @@ -7,12 +7,12 @@ import com.hzu.bookingsystem.service.LabTimeService; import org.hibernate.SQLQuery; import org.hibernate.transform.Transformers; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; -import javax.transaction.Transactional; import java.util.ArrayList; import java.util.List; @@ -119,4 +119,9 @@ public class LabTimeServiceImpl implements LabTimeService { 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); + } + } \ No newline at end of file