[fix][M]: 实现修改实验室预约时间段

master
Romesum 5 years ago
parent 1f56f9287a
commit fb8bdc4216

@ -1,6 +1,9 @@
package com.hzu.bookingsystem.bean; package com.hzu.bookingsystem.bean;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.util.Date; import java.util.Date;
@ -9,6 +12,9 @@ import java.util.Date;
*/ */
@Data @Data
@Entity @Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "tb_lab_time") @Table(name = "tb_lab_time")
public class LabTimeBean { public class LabTimeBean {
@Id @Id

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -21,6 +22,9 @@ public class LabTimeController {
@Autowired @Autowired
private LabTimeService labTimeService; private LabTimeService labTimeService;
@Autowired
private UserController userController;
//创建实验室可预约时间段 //创建实验室可预约时间段
@PostMapping(value = "/addLabTime", consumes = "application/json") @PostMapping(value = "/addLabTime", consumes = "application/json")
public ResultVO addLabTime(@RequestBody Map<String, Object> map) { public ResultVO addLabTime(@RequestBody Map<String, Object> map) {
@ -96,8 +100,11 @@ public class LabTimeController {
//修改实验室可预约时间段 //修改实验室可预约时间段
@PostMapping(value = "/updateLabTime", consumes = "application/json") @PostMapping(value = "/updateLabTime", consumes = "application/json")
public ResultVO updateLabTime(@RequestBody Map<String, Object> map, HttpServletRequest request) { public ResultVO updateLabTime(@RequestBody Map<String, Object> map, HttpServletRequest request) {
//转换对象 //1. 转换对象,初始化对象,定义时间段
LabTimeBean labTime = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class); LabTimeBean labTime = (LabTimeBean) Map2Object.map2Object(map, LabTimeBean.class);
labTime.setCreatorId(userController.getUIdByCookie(request));
labTime.setCreateTime(new Date());
labTime.setStatus(0);
// 用户发起的修改请求 // 用户发起的修改请求
List<Integer> weeks = (List<Integer>)map.get("weeks"); List<Integer> weeks = (List<Integer>)map.get("weeks");
// 实验室预约时间段 // 实验室预约时间段
@ -113,6 +120,7 @@ public class LabTimeController {
return ResultVOUtil.error(-1,"已被预约的时间段无法去除"); return ResultVOUtil.error(-1,"已被预约的时间段无法去除");
} }
// 2. 数据处理
// 需要insert的weeks // 需要insert的weeks
List<Integer> weekInsert = new ArrayList<>(weeks); List<Integer> weekInsert = new ArrayList<>(weeks);
weekInsert.removeAll(weeksAll); weekInsert.removeAll(weeksAll);
@ -120,11 +128,34 @@ public class LabTimeController {
// 需要delete的weeks // 需要delete的weeks
List<Integer> weekDelete = new ArrayList<>(weeksAll); List<Integer> weekDelete = new ArrayList<>(weeksAll);
weekDelete.removeAll(weeks); weekDelete.removeAll(weeks);
// 3.批量删除
List<LabTimeBean> 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("用户请求"+weeks);
System.out.println("原来有的"+weeksAll); System.out.println("原来有的"+weeksAll);
System.out.println("要插入的"+weekInsert); System.out.println("要插入的"+weekInsert);
System.out.println("要删除的"+weekDelete); System.out.println("要删除的"+weekDelete);
return ResultVOUtil.success(); return ResultVOUtil.success(labTimeService.findWeeks(labTime.getLabId(),labTime.getYear(),labTime.getSemester(),labTime.getDay(),labTime.getTime()));
} }
} }

@ -82,4 +82,9 @@ public interface LabTimeService {
* @return List<Integer> * @return List<Integer>
*/ */
List<Integer> findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time) ; List<Integer> findWeeksAble(Integer lab_id,String year,Integer semester, Integer day,Integer time) ;
/**
*
*/
List<LabTimeBean> findTimes(Integer lab_id,String year,Integer semester, Integer day,Integer time);
} }

@ -7,12 +7,12 @@ import com.hzu.bookingsystem.service.LabTimeService;
import org.hibernate.SQLQuery; import org.hibernate.SQLQuery;
import org.hibernate.transform.Transformers; import org.hibernate.transform.Transformers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.EntityManager; 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 java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -119,4 +119,9 @@ public class LabTimeServiceImpl implements LabTimeService {
return weeks; return weeks;
} }
@Override
public List<LabTimeBean> findTimes(Integer lab_id, String year, Integer semester, Integer day, Integer time) {
return labTimeRepository.findByLabIdAndYearAndSemesterAndDayAndTime(lab_id, year, semester, day, time);
}
} }
Loading…
Cancel
Save