diff --git a/element-vue/src/components/personalMessage.vue b/element-vue/src/components/personalMessage.vue index c48e708..a0dde01 100644 --- a/element-vue/src/components/personalMessage.vue +++ b/element-vue/src/components/personalMessage.vue @@ -6,19 +6,20 @@
- + - + - + - + - + diff --git a/element-vue/src/components/supManager/addLab.vue b/element-vue/src/components/supManager/addLab.vue index d150c8b..c294835 100644 --- a/element-vue/src/components/supManager/addLab.vue +++ b/element-vue/src/components/supManager/addLab.vue @@ -1,41 +1,76 @@ @@ -49,8 +84,8 @@ position:'', address:'', labId:'', - name:'', - status:'', + name:'509', + status:'0', compacity:'', manager:'', managerId:'' diff --git a/element-vue/src/components/supManager/check.vue b/element-vue/src/components/supManager/check.vue new file mode 100644 index 0000000..a145da9 --- /dev/null +++ b/element-vue/src/components/supManager/check.vue @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/element-vue/src/components/supManager/labManage.vue b/element-vue/src/components/supManager/labManage.vue index 620bdfd..43ab4d4 100644 --- a/element-vue/src/components/supManager/labManage.vue +++ b/element-vue/src/components/supManager/labManage.vue @@ -1,59 +1,156 @@ 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 ae93305..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 @@ -25,19 +31,19 @@ public class LabTimeBean { private String year; // 学期 - private String semester; + private Integer semester; // 几周 - private String week; + private Integer week; // 周几 - private String day; + private Integer day; // 第几节课 - private String time; + private Integer time; // 状态 - private String status; + private Integer status; //备注 private String remind; @@ -78,43 +84,43 @@ public class LabTimeBean { this.year = year; } - public String getSemester() { + public Integer getSemester() { return semester; } - public void setSemester(String semester) { + public void setSemester(Integer semester) { this.semester = semester; } - public String getWeek() { + public Integer getWeek() { return week; } - public void setWeek(String week) { + public void setWeek(Integer week) { this.week = week; } - public String getDay() { + public Integer getDay() { return day; } - public void setDay(String day) { + public void setDay(Integer day) { this.day = day; } - public String getTime() { + public Integer getTime() { return time; } - public void setTime(String time) { + public void setTime(Integer time) { this.time = time; } - public String getStatus() { + public Integer getStatus() { return status; } - public void setStatus(String status) { + public void setStatus(Integer status) { this.status = status; } 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 df75548..10ee57b 100644 --- a/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java +++ b/java/src/main/java/com/hzu/bookingsystem/controller/LabTimeController.java @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; 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; @@ -20,27 +22,29 @@ public class LabTimeController { @Autowired private LabTimeService labTimeService; + @Autowired + private UserController userController; + //创建实验室可预约时间段 - @PostMapping(value = "/addLabTime" , consumes = "application/json") - public ResultVO addLabTime(@RequestBody Map map){ + @PostMapping(value = "/addLabTime", consumes = "application/json") + public ResultVO addLabTime(@RequestBody Map map) { //转换对象 - LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map,LabTimeBean.class); + LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class); System.out.println(labTime1); //查重 - if(labTimeService.findByTime(labTime1.getTime()) != null) - { - return ResultVOUtil.error(-1,"该时间段已存在"); + if (labTimeService.findByTime(labTime1.getTime()) != null) { + return ResultVOUtil.error(-1, "该时间段已存在"); } labTimeService.add(labTime1); return ResultVOUtil.success(); } //通过ltId删除实验室可预约时间段 - @PostMapping(value = "/deleteLabTime" , consumes = "application/json") - public ResultVO deleteLabTime(@RequestBody LabTimeBean labTime){ + @PostMapping(value = "/deleteLabTime") + public ResultVO deleteLabTime(@RequestBody LabTimeBean labTime) { //查找实验室是否存在 LabTimeBean labTime1 = labTimeService.findByLtId(labTime.getLtId()); - if(labTime1 == null) { + if (labTime1 == null) { return ResultVOUtil.error(-1, "该时间段不存在"); } else { labTimeService.deleteByLtId(labTime1.getLabId()); @@ -49,31 +53,109 @@ public class LabTimeController { } //修改实验室可预约时间段 - @PostMapping(value = "/updateLabTime" , consumes = "application/json") - public ResultVO updateLabTime(@RequestBody Map map , HttpServletRequest request){ + @PostMapping(value = "/updateLabTimeOld", consumes = "application/json") + public ResultVO updateLabTimeOld(@RequestBody Map map, HttpServletRequest request) { //转换对象 - LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map,LabTimeBean.class); - if(labTime1.getLtId() == null){ - return ResultVOUtil.error(-1,"该实验室不存在,无法修改"); + LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class); + if (labTime1.getLtId() == null) { + return ResultVOUtil.error(-1, "该实验室不存在,无法修改"); } else { labTimeService.update(labTime1); } return ResultVOUtil.success(); } - //查找实验室 - @GetMapping(value = "/findByLabIdTime" , consumes = "application/json") - public ResultVO> findByLabTimeId(@RequestParam("LabTimeId") Integer labTimeId){ - LabTimeBean labTime1 = labTimeService.findByLtId(labTimeId); + //通过ltId查找实验室预约时间段 + @GetMapping(value = "/findLabTimeById") + public ResultVO> findLabTimeById(@RequestParam("ltId") Integer lt_id) { + LabTimeBean labTime1 = labTimeService.findByLtId(lt_id); System.out.println(labTime1); return ResultVOUtil.success(labTime1); } - //查找所有实验室列表 - @GetMapping(value = "/getLabListTime") - public ResultVO getLabTimeList(){ - List labTimeList = labTimeService.findAllLabInfo(); - return ResultVOUtil.success(labTimeList); + //查找实验室预约周次(包含已预约) + // author 吴志岳 + @GetMapping(value = "/getWeeks") + public ResultVO findLabTimeByLabIdAndYearAndSemester(@RequestParam("labId") Integer lab_id, + @RequestParam("year") String year, + @RequestParam("semester") Integer semester, + @RequestParam("day") Integer day, + @RequestParam("time") Integer time) { + List weeks = labTimeService.findWeeks(lab_id, year, semester, day, time); + return ResultVOUtil.success(weeks); + } + + //查找实验室可预约周次(不包含已预约) + // author 吴志岳 + @GetMapping(value = "/getWeeksAbleBook") + public ResultVO findLabTimeByLabIdAndYearAndSemesterAbleBook(@RequestParam("labId") Integer lab_id, + @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); + return ResultVOUtil.success(weeks); + } + + //修改实验室可预约时间段 + @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"); + // 实验室预约时间段 + 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 weeksDisable = new ArrayList<>(weeksAll); + weeksDisable.removeAll(weeksAble); + + // 如果请求weeks中不包含不可选取的时间段,报错 + if (!weeks.containsAll(weeksDisable)){ + return ResultVOUtil.error(-1,"已被预约的时间段无法去除"); + } + + // 2. 数据处理 + // 需要insert的weeks + List weekInsert = new ArrayList<>(weeks); + weekInsert.removeAll(weeksAll); + + // 需要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(labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime())); } } diff --git a/java/src/main/java/com/hzu/bookingsystem/dto/LabDTO.java b/java/src/main/java/com/hzu/bookingsystem/dto/LabDTO.java index 1aa560d..11f4943 100644 --- a/java/src/main/java/com/hzu/bookingsystem/dto/LabDTO.java +++ b/java/src/main/java/com/hzu/bookingsystem/dto/LabDTO.java @@ -6,9 +6,15 @@ import java.util.Date; @Data public class LabDTO { - private Integer labId; + private Integer lab_id; // 管理员uID - private Integer managerId; + private Integer manager_id; + + // 管理员姓名 + private String nickname; + + // 管理员联系电话 + private String tel; // 实验室名称 private String name; @@ -21,8 +27,4 @@ public class LabDTO { // 实验室含有的软件(逗号隔开) private String software; - - private Date createTime; - - private Date updateTime; } \ No newline at end of file diff --git a/java/src/main/java/com/hzu/bookingsystem/dto/LabTimeDTO.java b/java/src/main/java/com/hzu/bookingsystem/dto/LabTimeDTO.java index c4f9322..ad45cac 100644 --- a/java/src/main/java/com/hzu/bookingsystem/dto/LabTimeDTO.java +++ b/java/src/main/java/com/hzu/bookingsystem/dto/LabTimeDTO.java @@ -18,19 +18,19 @@ public class LabTimeDTO { private String year; // 学期 - private String semester; + private Integer semester; // 几周 - private String week; + private Integer week; // 周几 - private String day; + private Integer day; // 第几节课 - private String time; + private Integer time; // 状态 - private String status; + private Integer status; //备注 private String remind; 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 8b06cda..2227902 100644 --- a/java/src/main/java/com/hzu/bookingsystem/repository/LabTimeRepository.java +++ b/java/src/main/java/com/hzu/bookingsystem/repository/LabTimeRepository.java @@ -3,6 +3,7 @@ package com.hzu.bookingsystem.repository; import com.hzu.bookingsystem.bean.LabTimeBean; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -44,14 +45,44 @@ public interface LabTimeRepository extends JpaRepository { * @param time * @return */ - LabTimeBean findByTime(String time); + LabTimeBean findByTime(Integer time); + + /** + * 通过学期、周、星期、上课时间查找实验室预约时间段 + * + * @param lab_id、year、semester + * @return + */ + @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 = 1)", nativeQuery = true) + List findByLabIdAndYearAndSemesterAndDayAndTime(Integer lab_id,String year,Integer semester, Integer day,Integer time) ; /** * 通过学期、周、星期、上课时间查找实验室可预约时间段 * - * @param year、weeks、day、time + * @param lab_id、year、semester * @return */ - LabTimeBean findByYear(String year); + @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)" , nativeQuery = true) + List findWeeksAbleBook(Integer lab_id, String year, Integer semester, Integer day, Integer time) ; } diff --git a/java/src/main/java/com/hzu/bookingsystem/service/LabService.java b/java/src/main/java/com/hzu/bookingsystem/service/LabService.java index d2805c9..4d99e31 100644 --- a/java/src/main/java/com/hzu/bookingsystem/service/LabService.java +++ b/java/src/main/java/com/hzu/bookingsystem/service/LabService.java @@ -67,4 +67,12 @@ public interface LabService { */ List findAllLabInfo(); + + /** + * author 吴志岳 + * 通过ID查找DTO + */ + LabDTO findDTOById(Integer lab_id); + + } \ No newline at end of file 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 e60a389..f73348e 100644 --- a/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java +++ b/java/src/main/java/com/hzu/bookingsystem/service/LabTimeService.java @@ -59,20 +59,32 @@ public interface LabTimeService { * @param time * @return */ - LabTimeBean findByTime(String time); + LabTimeBean findByTime(Integer time); /** - * 通过学期、周、星期、上课时间查找实验室可预约时间段 - * - * @param year、weeks、day、time + * 查找所有实约时间信息 * @return */ - LabTimeBean findByYear(String year); + List findAllLabInfo(); /** - * 查找所有实约时间信息 - * @return + * 通过学期、周、星期、上课时间查找实验室预约时间段周次 + *author 吴志岳 + * @param lab_id、year、semester + * @return List */ - List findAllLabInfo(); + List findWeeks(Integer lab_id,String year,Integer semester, Integer day,Integer time) ; + /** + * 通过学期、周、星期、上课时间查找实验室可预约时间段周次 + *author 吴志岳 + * @param lab_id、year、semester + * @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/LabServiceImpl.java b/java/src/main/java/com/hzu/bookingsystem/service/impl/LabServiceImpl.java index 55342b5..049ef69 100644 --- a/java/src/main/java/com/hzu/bookingsystem/service/impl/LabServiceImpl.java +++ b/java/src/main/java/com/hzu/bookingsystem/service/impl/LabServiceImpl.java @@ -64,18 +64,48 @@ public class LabServiceImpl implements LabService { @Override public List findAllLabInfo() { - String sql = "SELECT tb_lab.lab_id as LabId," + - "tb_lab.manager_id as managerId," + - "tb_lab.name," + - "tb_lab.position," + - "tb_lab.capacity," + - "tb_lab.software " + + String sql = "SELECT " + + " tb_lab.lab_id, " + + " tb_lab.name, " + + " tb_lab.position, " + + " tb_lab.capacity, " + + " tb_lab.software, " + + " tb_lab.manager_id, " + + " tb_user.nickname, " + + " tb_user.tel " + "FROM " + - "tb_lab "; + " tb_lab, " + + " tb_user " + + "WHERE " + + " tb_lab.manager_id = tb_user.u_id"; Query query = entityManager.createNativeQuery(sql); query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(LabDTO.class)); - List LabDTOList = query.getResultList(); - return LabDTOList; + List labDTOList = query.getResultList(); + return labDTOList; + } + + + @Override + public LabDTO findDTOById(Integer lab_id) { + String sql = "SELECT " + + " tb_lab.lab_id, " + + " tb_lab.name, " + + " tb_lab.position, " + + " tb_lab.capacity, " + + " tb_lab.software, " + + " tb_lab.manager_id, " + + " tb_user.nickname, " + + " tb_user.tel " + + "FROM " + + " tb_lab, " + + " tb_user " + + "WHERE " + + " tb_lab.manager_id = tb_user.u_id AND tb_lab.lab_id = "+ lab_id; + Query query = entityManager.createNativeQuery(sql); + query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean(LabDTO.class)); + List labDTOList = query.getResultList(); + LabDTO labDTO = labDTOList.get(0); + return labDTO; } } 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 8d5a9ed..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,13 +7,15 @@ 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; + /** * author 莫家豪 */ @@ -33,12 +35,12 @@ public class LabTimeServiceImpl implements LabTimeService { @Override @Transactional - public void deleteByLtId(Integer ltId){ + public void deleteByLtId(Integer ltId) { labTimeRepository.deleteByLtId(ltId); } @Override - public LabTimeBean update(LabTimeBean labTime){ + public LabTimeBean update(LabTimeBean labTime) { return labTimeRepository.save(labTime); } @@ -48,7 +50,7 @@ public class LabTimeServiceImpl implements LabTimeService { } @Override - public LabTimeBean findByLtId(Integer ltId){ + public LabTimeBean findByLtId(Integer ltId) { return labTimeRepository.findByLtId(ltId); } @@ -58,17 +60,13 @@ public class LabTimeServiceImpl implements LabTimeService { } @Override - public LabTimeBean findByTime(String time){ + public LabTimeBean findByTime(Integer time) { return labTimeRepository.findByTime(time); } - @Override - public LabTimeBean findByYear(String year){ - return labTimeRepository.findByYear(year); - } @Override - public List findAllLabInfo(){ + public List findAllLabInfo() { String sql = "SELECT tb_lab_time.lt_id as LtId," + "tb_lab_time.year," + "tb_lab_time.semester," + @@ -85,4 +83,45 @@ public class LabTimeServiceImpl implements LabTimeService { return LabTimeDTOList; } + /** + * author 吴志岳 + * + * @param lab_id、year、semester + * @param year + * @param semester + * @return + */ + @Override + public List findWeeks(Integer lab_id, String year, Integer semester, Integer day, Integer time) { + List list = labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time); + List weeks = new ArrayList<>(); + for (LabTimeBean labtime : list) { + weeks.add(labtime.getWeek()); + } + 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) { + List list = labTimeRepository.findWeeksAbleBook(lab_id, year, semester, day, time); + 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); + } + } \ No newline at end of file diff --git a/java/src/test/java/com/hzu/bookingsystem/BookingsystemApplicationTests.java b/java/src/test/java/com/hzu/bookingsystem/BookingsystemApplicationTests.java index 3d9e32d..8c21e38 100644 --- a/java/src/test/java/com/hzu/bookingsystem/BookingsystemApplicationTests.java +++ b/java/src/test/java/com/hzu/bookingsystem/BookingsystemApplicationTests.java @@ -32,6 +32,7 @@ class BookingsystemApplicationTests { @Autowired private LabTimeService labTimeService; + @Test // public void test(){ @@ -48,12 +49,13 @@ class BookingsystemApplicationTests { // labService.deleteById(1); // // } - public void test(){ + public void test() { LabTimeBean lab = new LabTimeBean(); System.out.println(labTimeService.findAll()); } - +} +/* @Autowired private UserService userService; @Autowired @@ -117,3 +119,4 @@ class BookingsystemApplicationTests { // userCourseService.add(userCourseBean); } } +*/