批量修改教练时间段信息接口
//3.修改信息(批量修改)-是否有预约的学员(有:弹窗提醒-修改时间段已约学员,确定需要调整,调整后会短信通知学员、无:直接修改)
@PostMapping("/updateOneUpdateTimeByIDByNotice")
public Result<Object> updateOneUpdateTimeByIDByNotice(@RequestBody Map<String, Object> params, HttpServletRequest request) {
//权限验证
String token = (String) request.getAttribute("claims_coach");
if (token == null || "".equals(token)) {
throw new RuntimeException("权限不足!");
}
log.info("updateOneUpdateTimeByID报文:" + params);
Map<String, Object> map = new HashMap<>();
//前端传递参数
//修改时间段id:updateTimeId、要修改的时间段字符串:time、要修改的科目:projectType、要修改的人数:maxReservation
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(params));
JSONArray jsonArray = jsonObject.getJSONArray("updateTime");
//集合(前端传递的要修改的对象集合)
List<UpdateTimeDtox> updateTimes = JSONObject.parseArray(jsonArray.toJSONString(), UpdateTimeDtox.class);
if (updateTimes.isEmpty()) {
log.error("前端传递集合为空!");
return new Result<>(ResultCode.FAIL);
}
List<UpdateTime> updateTimeMyList = new ArrayList<>();//存放修改的对象
List<CourseDto> courseDtoListByNow = new ArrayList<>();
List<CourseDto> courseDtoListByAll = new ArrayList<>();
//遍历前端发来的要修改信息的对象集合
for (UpdateTimeDtox updateTime : updateTimes) {
//在数据库找到对应的对象
UpdateTime updateTimeMy = updateTimeService.getById(updateTime.getUpdateTimeId());
if (updateTimeMy != null) {
//1.修改科目
//判断前端传递与自身信息是否相等
if (!updateTime.getProjectType().equals(updateTimeMy.getProjectType())) {
log.info("修改科目");
//通过修改时间段id和当前时间(08:00)查询(待训练)课程信息
List<CourseDto> courseInfos = courseInfoService.queryCourseByUpdateTimeIdByStatus0(updateTime.getUpdateTimeId());
//存放待训练的课程
for (CourseDto courseDto0 : courseInfos) {
if (courseDto0.getCourseDate().equals(RcqtUtils.getDay())) {
if (LocalTime.now().isBefore(courseDto0.getStartReservationTime().toLocalTime())) {
courseDtoListByNow.add(courseDto0);
}
} else if (courseDto0.getCourseDate().after(RcqtUtils.getDay())) {
courseDtoListByNow.add(courseDto0);
}
}
if (!CollectionUtils.isEmpty(courseDtoListByNow)) {
for (CourseDto courseDto : courseDtoListByNow) {
CarUser carUser = carUserService.queryOneCarUserById(courseDto.getUserId());
courseDto.setCarUser(carUser);
if (carUser.getDrivingProjectType().equals("科二/科三")) {
updateTimeMy.setProjectType(updateTime.getProjectType());
} else if (updateTime.getProjectType().equals("科二/科三")) {
updateTimeMy.setProjectType(updateTime.getProjectType());
} else if (!carUser.getDrivingProjectType().equals(updateTime.getProjectType())) {
if (Objects.equals(carUser.getUserId(), courseDto.getUserId())){
courseDtoListByAll.add(courseDto);
}
}
}
} else {
log.info("当前无预约学员,直接修改");
//当前没有预约的学员
updateTimeMy.setProjectType(updateTime.getProjectType());
}
}
//2.修改最大预约人数
if (!updateTimeMy.getMaxReservation().equals(updateTime.getMaxReservation())) {
log.info("修改最大预约人数");
//通过修改时间段id和当前时间(08:00)查询(待训练)课程信息
List<CourseDto> courseInfos = courseInfoService.queryCourseByUpdateTimeIdByStatus0(updateTime.getUpdateTimeId());
//存放待训练的课程
for (CourseDto courseDto0 : courseInfos) {
if (courseDto0.getCourseDate().equals(RcqtUtils.getDay())) {
if (LocalTime.now().isBefore(courseDto0.getStartReservationTime().toLocalTime())) {
courseDtoListByNow.add(courseDto0);
}
} else if (courseDto0.getCourseDate().after(RcqtUtils.getDay())) {
courseDtoListByNow.add(courseDto0);
}
}
List<CarUser> carUserList = new ArrayList<>();
if (!CollectionUtils.isEmpty(courseDtoListByNow)) {
for (CourseDto courseDto : courseDtoListByNow) {
CarUser carUser = carUserService.queryOneCarUserById(courseDto.getUserId());
courseDto.setCarUser(carUser);
carUserList.add(carUser);
if (carUserList.size() > updateTime.getMaxReservation()) {
log.info("当前预约人数大于要修改的最大人数!");
courseDtoListByAll.add(courseDto);
} else {
log.info("不需要通知预约学员");
updateTimeMy.setMaxReservation(updateTime.getMaxReservation());
}
}
} else {
//当前无预约学员
log.info("当前无预约学员");
updateTimeMy.setMaxReservation(updateTime.getMaxReservation());
}
}
//3.修改时间段
Time start = RcqtUtils.getTime(updateTime.getStartReservationTime());//前端时间
Time end = RcqtUtils.getTime(updateTime.getEndReservationTime());
if (!start.toLocalTime().equals(updateTimeMy.getStartReservationTime().toLocalTime()) && !end.toLocalTime().equals(updateTimeMy.getEndReservationTime().toLocalTime())) {
log.info("修改时间段,开始与结束时间都不相等");
//排除前端传递的时间段与数据库里相同
if (start.toLocalTime().isAfter(end.toLocalTime())) {
log.error("开始时间要大于结束时间!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
//排除数据库中开始时间和结束时间为空的
if (updateTimeMy.getStartReservationTime() != null && updateTimeMy.getEndReservationTime() != null) {
log.info("数据库时间段不为空!");
List<UpdateTime> updateTimeList = updateTimeService.queryUpdateTimeByDate(updateTimeMy.getCoachId(), updateTimeMy.getCourseDate());
for (UpdateTime d : updateTimeList) {
//当日期是今天时,不能修改时间为过期时间
if (d.getCourseDate().equals(RcqtUtils.getDay())) {
if (start.toLocalTime().isBefore(LocalTime.now())) {
log.error("该修改时间段为过期时间段!");
return new Result<>(ResultCode.TIME_IS_OUT);
}
}
//排除数据库时间段为空的
if (d.getEndReservationTime() != null && d.getStartReservationTime() != null) {
//排除当前要修改的时间段,与其他时间段进行比较
if (!Objects.equals(updateTimeMy.getUpdateTimeId(), d.getUpdateTimeId())) {
if (start.equals(d.getStartReservationTime()) && end.equals(d.getEndReservationTime())) {
log.error("修改时间段与其他时间段重复!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
//输入开始时间与原有结束时间不相等、输入结束时间与原有开始时间不相等
if ((!start.equals(d.getEndReservationTime())) && (!end.equals(d.getStartReservationTime()))) {
if ((!start.after(d.getEndReservationTime())) && (!end.before(d.getStartReservationTime()))) {
log.error("修改时间段与其他时间段冲突重复!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
}
}
}
}
List<CourseDto> courseInfos = courseInfoService.queryCourseByUpdateTimeIdByStatus0(updateTime.getUpdateTimeId());
//存放待训练的课程
for (CourseDto courseDto0 : courseInfos) {
if (courseDto0.getCourseDate().equals(RcqtUtils.getDay())) {
if (LocalTime.now().isBefore(courseDto0.getStartReservationTime().toLocalTime())) {
courseDtoListByNow.add(courseDto0);
}
} else if (courseDto0.getCourseDate().after(RcqtUtils.getDay())) {
courseDtoListByNow.add(courseDto0);
}
}
if (!CollectionUtils.isEmpty(courseDtoListByNow)) {
for (CourseDto courseDto : courseDtoListByNow) {
CarUser carUser = carUserService.queryOneCarUserById(courseDto.getUserId());
courseDto.setCarUser(carUser);
courseDtoListByAll.add(courseDto);
}
} else {
log.info("当前无预约学员");
//当前无预约学员
updateTimeMy.setStartReservationTime(start);
updateTimeMy.setEndReservationTime(end);
}
}
} else if (start.toLocalTime().equals(updateTimeMy.getStartReservationTime().toLocalTime()) && !end.toLocalTime().equals(updateTimeMy.getEndReservationTime().toLocalTime())) {
log.info("修改时间段,开始时间相等-结束时间不相等");
//排除前端传递的时间段与数据库里相同
if (start.toLocalTime().isAfter(end.toLocalTime())) {
log.error("开始时间要大于结束时间!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
//排除数据库中开始时间和结束时间为空的
if (updateTimeMy.getStartReservationTime() != null && updateTimeMy.getEndReservationTime() != null) {
log.info("数据库时间段不为空!");
List<UpdateTime> updateTimeList = updateTimeService.queryUpdateTimeByDate(updateTimeMy.getCoachId(), updateTimeMy.getCourseDate());
for (UpdateTime d : updateTimeList) {
//当日期是今天时,不能修改时间为过期时间
if (d.getCourseDate().equals(RcqtUtils.getDay())) {
if (start.toLocalTime().isBefore(LocalTime.now())) {
log.error("该修改时间段为过期时间段!");
return new Result<>(ResultCode.TIME_IS_OUT);
}
}
//排除数据库时间段为空的
if (d.getEndReservationTime() != null && d.getStartReservationTime() != null) {
//排除当前要修改的时间段,与其他时间段进行比较
if (!Objects.equals(updateTimeMy.getUpdateTimeId(), d.getUpdateTimeId())) {
if (start.equals(d.getStartReservationTime()) && end.equals(d.getEndReservationTime())) {
log.error("修改时间段与其他时间段重复!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
//输入开始时间与原有结束时间不相等、输入结束时间与原有开始时间不相等
if ((!start.equals(d.getEndReservationTime())) && (!end.equals(d.getStartReservationTime()))) {
if ((!start.after(d.getEndReservationTime())) && (!end.before(d.getStartReservationTime()))) {
log.error("修改时间段与其他时间段冲突重复!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
}
}
}
}
List<CourseDto> courseInfos = courseInfoService.queryCourseByUpdateTimeIdByStatus0(updateTime.getUpdateTimeId());
for (CourseDto courseDto0 : courseInfos) {
if (courseDto0.getCourseDate().equals(RcqtUtils.getDay())) {
if (LocalTime.now().isBefore(courseDto0.getStartReservationTime().toLocalTime())) {
courseDtoListByNow.add(courseDto0);
}
} else if (courseDto0.getCourseDate().after(RcqtUtils.getDay())) {
courseDtoListByNow.add(courseDto0);
}
}
if (!CollectionUtils.isEmpty(courseDtoListByNow)) {
for (CourseDto courseDto : courseDtoListByNow) {
CarUser carUser = carUserService.queryOneCarUserById(courseDto.getUserId());
courseDto.setCarUser(carUser);
courseDtoListByAll.add(courseDto);
}
} else {
log.info("当前无预约学员");
//当前无预约学员
updateTimeMy.setStartReservationTime(start);
updateTimeMy.setEndReservationTime(end);
}
}
} else if (!start.toLocalTime().equals(updateTimeMy.getStartReservationTime().toLocalTime()) && end.toLocalTime().equals(updateTimeMy.getEndReservationTime().toLocalTime())) {
log.info("修改时间段,开始时间不相等-结束时间相等");
//排除前端传递的时间段与数据库里相同
if (start.toLocalTime().isAfter(end.toLocalTime())) {
log.error("开始时间要大于结束时间!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
//排除数据库中开始时间和结束时间为空的
if (updateTimeMy.getStartReservationTime() != null && updateTimeMy.getEndReservationTime() != null) {
log.info("数据库时间段不为空!");
List<UpdateTime> updateTimeList = updateTimeService.queryUpdateTimeByDate(updateTimeMy.getCoachId(), updateTimeMy.getCourseDate());
for (UpdateTime d : updateTimeList) {
//当日期是今天时,不能修改时间为过期时间
if (d.getCourseDate().equals(RcqtUtils.getDay())) {
if (start.toLocalTime().isBefore(LocalTime.now())) {
log.error("该修改时间段为过期时间段!");
return new Result<>(ResultCode.TIME_IS_OUT);
}
}
//排除数据库时间段为空的
if (d.getEndReservationTime() != null && d.getStartReservationTime() != null) {
//排除当前要修改的时间段,与其他时间段进行比较
if (!Objects.equals(updateTimeMy.getUpdateTimeId(), d.getUpdateTimeId())) {
if (start.equals(d.getStartReservationTime()) && end.equals(d.getEndReservationTime())) {
log.error("修改时间段与其他时间段重复!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
//输入开始时间与原有结束时间不相等、输入结束时间与原有开始时间不相等
if ((!start.equals(d.getEndReservationTime())) && (!end.equals(d.getStartReservationTime()))) {
if ((!start.after(d.getEndReservationTime())) && (!end.before(d.getStartReservationTime()))) {
log.error("修改时间段与其他时间段冲突重复!");
return new Result<>(ResultCode.TIME_NOT_RIGHT);
}
}
}
}
}
List<CourseDto> courseInfos = courseInfoService.queryCourseByUpdateTimeIdByStatus0(updateTime.getUpdateTimeId());
//存放待训练的课程
for (CourseDto courseDto0 : courseInfos) {
if (courseDto0.getCourseDate().equals(RcqtUtils.getDay())) {
if (LocalTime.now().isBefore(courseDto0.getStartReservationTime().toLocalTime())) {
courseDtoListByNow.add(courseDto0);
}
} else if (courseDto0.getCourseDate().after(RcqtUtils.getDay())) {
courseDtoListByNow.add(courseDto0);
}
}
if (!CollectionUtils.isEmpty(courseDtoListByNow)) {
for (CourseDto courseDto : courseDtoListByNow) {
CarUser carUser = carUserService.queryOneCarUserById(courseDto.getUserId());
courseDto.setCarUser(carUser);
courseDtoListByAll.add(courseDto);
}
} else {
log.info("当前无预约学员");
//当前无预约学员
updateTimeMy.setStartReservationTime(start);
updateTimeMy.setEndReservationTime(end);
}
}
}
}
updateTimeMyList.add(updateTimeMy);
}
if (!courseDtoListByAll.isEmpty()) {
Map<Long, List<CourseDto>> fieldMap = new HashMap<>();
courseDtoListByAll.forEach(obj -> {
Long field = obj.getUpdateTimeId();
fieldMap.computeIfAbsent(field, k -> new ArrayList<>()).add(obj);
});
List<NoticeDto> newObjects = new ArrayList<>();
fieldMap.entrySet().forEach(entry -> {
Long field = entry.getKey();
List<CourseDto> values = entry.getValue();
List<CarUser> carUserList = values.stream().map(CourseDto::getCarUser).collect(Collectors.toList());
CourseDto courseDto = values.get(0);
NoticeDto newObject = new NoticeDto(field, courseDto, carUserList, values);
newObjects.add(newObject);
});
log.info("通知");
map.put("courseInfos", newObjects);
return new Result<>(ResultCode.NOTICE_COACH, map);
}
boolean b = updateTimeService.updateBatchById(updateTimeMyList);
if (b) {
log.info("修改时间段信息成功!");
return new Result<>(ResultCode.SUCCESS);
} else {
log.error("修改时间段信息失败!");
return new Result<>(ResultCode.FAIL);
}
}
原文地址: https://www.cveoy.top/t/topic/qohz 著作权归作者所有。请勿转载和采集!