[fix][M]: 完善LabTime查找接口与修改接口(未调试完成)

master
Romesum 5 years ago
parent 5db1bfcf8f
commit 4efd67364c

@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -27,8 +28,7 @@ public class LabTimeController {
LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class); LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
System.out.println(labTime1); System.out.println(labTime1);
//查重 //查重
if(labTimeService.findByTime(labTime1.getTime()) != null) if (labTimeService.findByTime(labTime1.getTime()) != null) {
{
return ResultVOUtil.error(-1, "该时间段已存在"); return ResultVOUtil.error(-1, "该时间段已存在");
} }
labTimeService.add(labTime1); labTimeService.add(labTime1);
@ -49,8 +49,8 @@ public class LabTimeController {
} }
//修改实验室可预约时间段 //修改实验室可预约时间段
@PostMapping(value = "/updateLabTime" , consumes = "application/json") @PostMapping(value = "/updateLabTimeOld", consumes = "application/json")
public ResultVO updateLabTime(@RequestBody Map<String,Object> map , HttpServletRequest request){ public ResultVO updateLabTimeOld(@RequestBody Map<String, Object> map, HttpServletRequest request) {
//转换对象 //转换对象
LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class); LabTimeBean labTime1 = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
if (labTime1.getLtId() == null) { if (labTime1.getLtId() == null) {
@ -69,35 +69,62 @@ public class LabTimeController {
return ResultVOUtil.success(labTime1); return ResultVOUtil.success(labTime1);
} }
//查找实验室可预约时间段 //查找实验室预约周次(包含已预约)
@GetMapping(value = "/findlabtimebylabidandyearandsemester") // author 吴志岳
public ResultVO<Map<String,Object>> findLabTimeByLabIdAndYearAndSemester(@RequestParam("labId") Integer lab_id , @RequestParam("year") String year , @RequestParam("semester") Integer semester , @RequestParam("status") Integer status){ @GetMapping(value = "/getWeeks")
List<LabTimeBean> labTimeList1 = labTimeService.findByLabIdAndYearAndSemester(lab_id , year , semester); public ResultVO findLabTimeByLabIdAndYearAndSemester(@RequestParam("labId") Integer lab_id,
System.out.println(labTimeList1); @RequestParam("year") String year,
LabTimeBean array[] = new LabTimeBean[labTimeList1.size()]; @RequestParam("semester") Integer semester,
int i = 0; @RequestParam("day") Integer day,
for(LabTimeBean labtime : labTimeList1){ @RequestParam("time") Integer time) {
if (labtime.getStatus().equals(status)) { List<Integer> weeks = labTimeService.findWeeks(lab_id, year, semester, day, time);
System.out.println(labtime.getTime()); return ResultVOUtil.success(weeks);
array[i] = labtime;
i++;
}
} }
return ResultVOUtil.success(array);
//查找实验室可预约周次(不包含已预约)
// 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<Integer> weeks = labTimeService.findWeeksAble(lab_id, year, semester, day, time);
return ResultVOUtil.success(weeks);
} }
//查找所有实验室列表 //修改实验室可预约时间段
@GetMapping(value = "/getLabListTime") @PostMapping(value = "/updateLabTime", consumes = "application/json")
public ResultVO getLabTimeList(){ public ResultVO updateLabTime(@RequestBody Map<String, Object> map, HttpServletRequest request) {
List<LabTimeDTO> labTimeList = labTimeService.findAllLabInfo(); //转换对象
return ResultVOUtil.success(labTimeList); LabTimeBean labTime = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
// 用户发起的修改请求
List<Integer> weeks = (List<Integer>)map.get("weeks");
// 实验室预约时间段
List<Integer> weeksAll = labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime());
// 实验室可预约时间段
List<Integer> weeksAble = labTimeService.findWeeksAble(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime());
// 实验室不可变换或不可选取的时间段
List<Integer> weeksDisable = new ArrayList<>(weeksAll);
weeksDisable.removeAll(weeksAble);
// 如果请求weeks中不包含不可选取的时间段报错
if (!weeks.containsAll(weeksDisable)){
return ResultVOUtil.error(-1,"已被预约的时间段无法去除");
} }
// 查找所有课程列表 // 需要insert的weeks
@GetMapping(value = "/getLabTimelist") List<Integer> weekInsert = new ArrayList<>(weeks);
public ResultVO getUserCourseList(){ weekInsert.removeAll(weeksAll);
List<LabTimeBean> labTimelist = labTimeService.findAll();
return ResultVOUtil.success(labTimelist); // 需要delete的weeks
List<Integer> weekDelete = new ArrayList<>(weeksAll);
weekDelete.removeAll(weeks);
System.out.println("用户请求"+weeks);
System.out.println("原来有的"+weeksAll);
System.out.println("要插入的"+weekInsert);
System.out.println("要删除的"+weekDelete);
return ResultVOUtil.success();
} }
} }

@ -3,6 +3,7 @@ package com.hzu.bookingsystem.repository;
import com.hzu.bookingsystem.bean.LabTimeBean; import com.hzu.bookingsystem.bean.LabTimeBean;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
@ -46,12 +47,42 @@ public interface LabTimeRepository extends JpaRepository<LabTimeBean,String> {
*/ */
LabTimeBean findByTime(Integer time); LabTimeBean findByTime(Integer time);
/**
*
*
* @param lab_idyearsemester
* @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<LabTimeBean> findByLabIdAndYearAndSemesterAndDayAndTime(Integer lab_id,String year,Integer semester, Integer day,Integer time) ;
/** /**
* *
* *
* @param lab_idyearsemester * @param lab_idyearsemester
* @return * @return
*/ */
List<LabTimeBean> findByLabIdAndYearAndSemester(Integer lab_id,String year,Integer semester) ; @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<LabTimeBean> findWeeksAbleBook(Integer lab_id, String year, Integer semester, Integer day, Integer time) ;
} }

@ -62,17 +62,24 @@ public interface LabTimeService {
LabTimeBean findByTime(Integer time); LabTimeBean findByTime(Integer time);
/** /**
* *
*
* @param lab_idyearsemester
* @return * @return
*/ */
List<LabTimeBean> findByLabIdAndYearAndSemester(Integer lab_id,String year,Integer semester) ; List<LabTimeDTO> findAllLabInfo();
/** /**
* *
* @return *author
* @param lab_idyearsemester
* @return List<Integer>
*/ */
List<LabTimeDTO> findAllLabInfo(); List<Integer> findWeeks(Integer lab_id,String year,Integer semester, Integer day,Integer time) ;
/**
*
*author
* @param lab_idyearsemester
* @return List<Integer>
*/
List<Integer> findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time) ;
} }

@ -13,7 +13,9 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* author * author
*/ */
@ -62,10 +64,6 @@ public class LabTimeServiceImpl implements LabTimeService {
return labTimeRepository.findByTime(time); return labTimeRepository.findByTime(time);
} }
@Override
public List<LabTimeBean> findByLabIdAndYearAndSemester(Integer lab_id,String year,Integer semester){
return labTimeRepository.findByLabIdAndYearAndSemester(lab_id , year , semester);
}
@Override @Override
public List<LabTimeDTO> findAllLabInfo() { public List<LabTimeDTO> findAllLabInfo() {
@ -85,4 +83,40 @@ public class LabTimeServiceImpl implements LabTimeService {
return LabTimeDTOList; return LabTimeDTOList;
} }
/**
* author
*
* @param lab_idyearsemester
* @param year
* @param semester
* @return
*/
@Override
public List<Integer> findWeeks(Integer lab_id, String year, Integer semester, Integer day, Integer time) {
List<LabTimeBean> list = labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time);
List<Integer> weeks = new ArrayList<>();
for (LabTimeBean labtime : list) {
weeks.add(labtime.getWeek());
}
return weeks;
}
/**
* author
*
* @param lab_idyearsemester
* @param year
* @param semester
* @return
*/
@Override
public List<Integer> findWeeksAble(Integer lab_id, String year, Integer semester, Integer day, Integer time) {
List<LabTimeBean> list = labTimeRepository.findWeeksAbleBook(lab_id, year, semester, day, time);
List<Integer> weeks = new ArrayList<>();
for (LabTimeBean labtime : list) {
weeks.add(labtime.getWeek());
}
return weeks;
}
} }
Loading…
Cancel
Save