RoomServiceImpl.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.xjrsoft.module.room.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import cn.hutool.core.bean.BeanUtil;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.github.yulichang.base.MPJBaseServiceImpl;
  6. import com.github.yulichang.toolkit.MPJWrappers;
  7. import com.xjrsoft.module.room.dto.AddRoomDto;
  8. import com.xjrsoft.module.room.dto.RoomPageDto;
  9. import com.xjrsoft.module.room.entity.Room;
  10. import com.xjrsoft.module.room.entity.RoomBed;
  11. import com.xjrsoft.module.room.mapper.RoomBedMapper;
  12. import com.xjrsoft.module.room.mapper.RoomMapper;
  13. import com.xjrsoft.module.room.service.IRoomService;
  14. import com.xjrsoft.module.room.vo.RoomPageVo;
  15. import com.xjrsoft.module.student.entity.BaseStudent;
  16. import lombok.AllArgsConstructor;
  17. import org.springframework.stereotype.Service;
  18. import java.util.Date;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22. /**
  23. * @title: 寝室
  24. * @Author dzx
  25. * @Date: 2023-12-27
  26. * @Version 1.0
  27. */
  28. @Service
  29. @AllArgsConstructor
  30. public class RoomServiceImpl extends MPJBaseServiceImpl<RoomMapper, Room> implements IRoomService {
  31. private final RoomMapper roomMapper;
  32. private final RoomBedMapper roomBedMapper;
  33. @Override
  34. public Page<RoomPageVo> getPage(Page<RoomPageDto> page, RoomPageDto dto) {
  35. Page<RoomPageVo> result = roomMapper.getPage(page, dto);
  36. return result;
  37. }
  38. @Override
  39. public Boolean saveBatch(AddRoomDto dto) {
  40. Integer maxSortCode = roomMapper.getMaxSortCode();
  41. Date createDate = new Date();
  42. long createUserId = StpUtil.getLoginIdAsLong();
  43. for (int i = 0; i < dto.getFloorRoomsCount(); i ++){
  44. for (String floorNumber : dto.getFloorNumber().split(",")) {
  45. String roomName = floorNumber + String.format("%02d", (i + 1));
  46. Map<String, Object> param = new HashMap<>();
  47. param.put("room_name", roomName);
  48. param.put("floor_number", Integer.parseInt(floorNumber));
  49. param.put("office_build_id", dto.getOfficeBuildId());
  50. List<Room> rooms = roomMapper.selectByMap(param);
  51. if(rooms != null && !rooms.isEmpty()){
  52. continue;
  53. }
  54. //先添加寝室
  55. Room room = BeanUtil.toBean(dto, Room.class);
  56. room.setSortCode(maxSortCode);
  57. room.setFloorNumber(Integer.parseInt(floorNumber));
  58. room.setCreateDate(createDate);
  59. room.setCreateUserId(createUserId);
  60. room.setDeleteMark(0);
  61. room.setEnabledMark(1);
  62. room.setRoomName(roomName);
  63. roomMapper.insert(room);
  64. maxSortCode ++;
  65. Long roomId = room.getId();
  66. Integer bedMaxSortCode = roomBedMapper.getMaxSortCode() + 1;
  67. //生成床位数据
  68. for (int j = 1; j <= dto.getBedCount(); j ++){
  69. RoomBed bed = new RoomBed();
  70. bed.setRoomId(roomId);
  71. bed.setSortCode(bedMaxSortCode + j - 1);
  72. bed.setCreateDate(createDate);
  73. bed.setCreateUserId(createUserId);
  74. bed.setDeleteMark(0);
  75. bed.setEnabledMark(1);
  76. bed.setBedNumber(j);
  77. roomBedMapper.insert(bed);
  78. }
  79. }
  80. }
  81. return true;
  82. }
  83. @Override
  84. public String deleteReachBed(Long id) {
  85. List<RoomBed> bedList = roomBedMapper.selectList(
  86. MPJWrappers.<RoomBed>lambdaJoin()
  87. .select(BaseStudent::getUserId)
  88. .eq(RoomBed::getRoomId, id).isNotNull(RoomBed::getStudentUserId)
  89. );
  90. if(bedList != null && !bedList.isEmpty()){
  91. return "寝室里面已安排学生,无法删除";
  92. }
  93. roomMapper.deleteById(id);
  94. Map<String, Object> param = new HashMap<>();
  95. param.put("room_id", id);
  96. roomBedMapper.deleteByMap(param);
  97. return "ok";
  98. }
  99. }