| package com.doumee.service.business.impl; | 
|   | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.service.business.third.model.PageData; | 
| import com.doumee.service.business.third.model.PageWrap; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.core.utils.DateUtil; | 
| import com.doumee.core.utils.Utils; | 
| import com.doumee.dao.business.RoomTimeMapper; | 
| import com.doumee.dao.business.join.BookingTimeJoinMapper; | 
| import com.doumee.dao.business.join.BookingsJoinMapper; | 
| import com.doumee.dao.business.join.RoomTimeJoinMapper; | 
| import com.doumee.dao.business.model.BookingTime; | 
| import com.doumee.dao.business.model.Bookings; | 
| import com.doumee.dao.business.model.RoomTime; | 
| import com.doumee.dao.web.request.RoomTimeRequest; | 
| import com.doumee.service.business.RoomTimeService; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.baomidou.mybatisplus.core.metadata.IPage; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
| import org.springframework.beans.BeanUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.text.ParseException; | 
| import java.text.SimpleDateFormat; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 会议室预约时间段信息表Service实现 | 
|  * | 
|  * @author 江蹄蹄 | 
|  * @date 2023/05/04 18:18 | 
|  */ | 
| @Service | 
| public class RoomTimeServiceImpl implements RoomTimeService { | 
|   | 
|     @Autowired | 
|     private RoomTimeMapper roomTimeMapper; | 
|   | 
|     @Autowired | 
|     private BookingTimeJoinMapper bookingTimeJoinMapper; | 
|   | 
|   | 
|     @Autowired | 
|     private RoomTimeJoinMapper roomTimeJoinMapper; | 
|   | 
|     @Autowired | 
|     private BookingsJoinMapper bookingsJoinMapper; | 
|   | 
|     @Override | 
|     public Integer create(RoomTime roomTime) { | 
|         roomTimeMapper.insert(roomTime); | 
|         return roomTime.getId(); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|         roomTimeMapper.deleteById(id); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(RoomTime roomTime) { | 
|         UpdateWrapper<RoomTime> deleteWrapper = new UpdateWrapper<>(roomTime); | 
|         roomTimeMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|         roomTimeMapper.deleteBatchIds(ids); | 
|     } | 
|   | 
|     @Override | 
|     public void updateById(RoomTime roomTime) { | 
|         roomTimeMapper.updateById(roomTime); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<RoomTime> roomTimes) { | 
|         if (CollectionUtils.isEmpty(roomTimes)) { | 
|             return; | 
|         } | 
|         for (RoomTime roomTime : roomTimes) { | 
|             this.updateById(roomTime); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public RoomTime findById(Integer id) { | 
|         return roomTimeMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public RoomTime findOne(RoomTime roomTime) { | 
|         QueryWrapper<RoomTime> wrapper = new QueryWrapper<>(roomTime); | 
|         return roomTimeMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<RoomTime> findList(RoomTime roomTime) { | 
|         MPJLambdaWrapper<RoomTime> wrapper = new MPJLambdaWrapper<>(); | 
|   | 
|         if (roomTime.getYudingDate() == null || | 
|                 roomTime.getRoomId() == null | 
|         ) { | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); | 
|         } | 
|   | 
|         wrapper.eq(RoomTime::getIsdeleted, Constants.ZERO); | 
|         wrapper.eq(RoomTime::getRoomId, roomTime.getRoomId()); | 
|         wrapper.orderByAsc(RoomTime::getStartTime); | 
|         List<RoomTime> list = roomTimeJoinMapper.selectList(wrapper); | 
|   | 
|         MPJLambdaWrapper<Bookings> bookquery = new MPJLambdaWrapper<>(); | 
|         bookquery.selectAll(Bookings.class); | 
|         bookquery.selectAs(BookingTime::getTimeId, Bookings::getRoomTimeId); | 
|         bookquery.selectAs(BookingTime::getId, Bookings::getBookingTimeId); | 
|         bookquery.eq(Bookings::getIsdeleted, Constants.ZERO); | 
|         bookquery.eq(BookingTime::getIsdeleted, Constants.ZERO); | 
|         bookquery.eq(Bookings::getRoomId, roomTime.getRoomId()); | 
|         bookquery.eq(Bookings::getStatus,Constants.ZERO); | 
|         bookquery.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT('" + DateUtil.dateToString(roomTime.getYudingDate(), "yyyy-MM-dd") + "','%Y-%m-%d') "); | 
|   | 
|         bookquery.leftJoin(BookingTime.class, BookingTime::getBookingId, Bookings::getId); | 
|   | 
|         List<Bookings> bookList = bookingsJoinMapper.selectJoinList(Bookings.class, bookquery); | 
|   | 
|         //当前日期大于预约的日期设置为不可选 | 
|         Boolean flag = false; | 
|         if (System.currentTimeMillis() > roomTime.getYudingDate().getTime()) { | 
|             flag = true; | 
|         } | 
|   | 
|         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); | 
|         SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|   | 
|         for (int i = 0; i < list.size(); i++) { | 
|             RoomTime s = list.get(i); | 
|             s.setIsUse(false); | 
|             s.setIsChoose(false); | 
|             String now = format.format(roomTime.getYudingDate())+" "+s.getEndTime()+":00"; | 
|             try { | 
|                 Date com=format1.parse(now); | 
|                 if(flag){ | 
|                     if (System.currentTimeMillis() > com.getTime()) { | 
|                         s.setIsUse(true); | 
|                     } | 
|                 } | 
|             } catch (ParseException e) { | 
|                 e.printStackTrace(); | 
|             } | 
|   | 
|             bookList.stream().forEach(a -> { | 
|                 if (Constants.equalsInteger(s.getId(), a.getRoomTimeId())) { | 
|                     s.setIsUse(true); | 
|                     s.setIsChoose(true); | 
|                     s.setBookingTimeId(a.getId()); | 
|                 } | 
|             }); | 
|   | 
|         } | 
|         ; | 
|   | 
|         return list; | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public PageData<RoomTime> findPage(PageWrap<RoomTime> pageWrap) { | 
|         IPage<RoomTime> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         QueryWrapper<RoomTime> queryWrapper = new QueryWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         if (pageWrap.getModel().getId() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getId, pageWrap.getModel().getId()); | 
|         } | 
|         if (pageWrap.getModel().getCreator() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getCreator, pageWrap.getModel().getCreator()); | 
|         } | 
|         if (pageWrap.getModel().getCreateDate() != null) { | 
|             queryWrapper.lambda().ge(RoomTime::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); | 
|             queryWrapper.lambda().le(RoomTime::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); | 
|         } | 
|         if (pageWrap.getModel().getEditor() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getEditor, pageWrap.getModel().getEditor()); | 
|         } | 
|         if (pageWrap.getModel().getEditDate() != null) { | 
|             queryWrapper.lambda().ge(RoomTime::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); | 
|             queryWrapper.lambda().le(RoomTime::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); | 
|         } | 
|         if (pageWrap.getModel().getIsdeleted() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getIsdeleted, pageWrap.getModel().getIsdeleted()); | 
|         } | 
|         if (pageWrap.getModel().getRemark() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getRemark, pageWrap.getModel().getRemark()); | 
|         } | 
|         if (pageWrap.getModel().getRoomId() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getRoomId, pageWrap.getModel().getRoomId()); | 
|         } | 
|         if (pageWrap.getModel().getStartTime() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getStartTime, pageWrap.getModel().getStartTime()); | 
|         } | 
|         if (pageWrap.getModel().getEndTime() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getEndTime, pageWrap.getModel().getEndTime()); | 
|         } | 
|         if (pageWrap.getModel().getStatus() != null) { | 
|             queryWrapper.lambda().eq(RoomTime::getStatus, pageWrap.getModel().getStatus()); | 
|         } | 
|         for (PageWrap.SortData sortData : pageWrap.getSorts()) { | 
|             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { | 
|                 queryWrapper.orderByDesc(sortData.getProperty()); | 
|             } else { | 
|                 queryWrapper.orderByAsc(sortData.getProperty()); | 
|             } | 
|         } | 
|         return PageData.from(roomTimeMapper.selectPage(page, queryWrapper)); | 
|     } | 
|   | 
|     @Override | 
|     public long count(RoomTime roomTime) { | 
|         QueryWrapper<RoomTime> wrapper = new QueryWrapper<>(roomTime); | 
|         return roomTimeMapper.selectCount(wrapper); | 
|     } | 
|   | 
|     /**************************************移动端接口开始********************************************************************/ | 
|   | 
|     @Override | 
|     public List<RoomTime> getRoomUseTime(RoomTimeRequest roomTimeRequest) { | 
|         RoomTime roomTime = new RoomTime(); | 
|         BeanUtils.copyProperties(roomTimeRequest, roomTime); | 
|         roomTime.setYudingDate(DateUtil.StringToDate(roomTimeRequest.getYudingDate(), "yyyy-MM-dd")); | 
|         return this.findList(roomTime); | 
|     } | 
|   | 
| } |