RoomServiceImpl.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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.github.yulichang.wrapper.MPJLambdaWrapper;
  8. import com.xjrsoft.common.exception.MyException;
  9. import com.xjrsoft.module.base.entity.BaseOfficeBuild;
  10. import com.xjrsoft.module.base.mapper.BaseOfficeBuildMapper;
  11. import com.xjrsoft.module.room.dto.AddRoomDto;
  12. import com.xjrsoft.module.room.dto.RoomPageDto;
  13. import com.xjrsoft.module.room.entity.Room;
  14. import com.xjrsoft.module.room.entity.RoomBed;
  15. import com.xjrsoft.module.room.entity.RoomRule;
  16. import com.xjrsoft.module.room.entity.RoomRuleItem;
  17. import com.xjrsoft.module.room.mapper.RoomBedMapper;
  18. import com.xjrsoft.module.room.mapper.RoomMapper;
  19. import com.xjrsoft.module.room.mapper.RoomRuleMapper;
  20. import com.xjrsoft.module.room.service.IRoomService;
  21. import com.xjrsoft.module.room.vo.RoomExcelVo;
  22. import com.xjrsoft.module.room.vo.RoomPageVo;
  23. import lombok.AllArgsConstructor;
  24. import org.springframework.stereotype.Service;
  25. import java.util.ArrayList;
  26. import java.util.Collections;
  27. import java.util.Date;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.Map;
  31. /**
  32. * @title: 寝室
  33. * @Author dzx
  34. * @Date: 2023-12-27
  35. * @Version 1.0
  36. */
  37. @Service
  38. @AllArgsConstructor
  39. public class RoomServiceImpl extends MPJBaseServiceImpl<RoomMapper, Room> implements IRoomService {
  40. private final RoomMapper roomMapper;
  41. private final RoomBedMapper roomBedMapper;
  42. private final RoomRuleMapper roomRuleRoomRuleMapper;
  43. private final BaseOfficeBuildMapper baseOfficeBuildMapper;
  44. @Override
  45. public Page<RoomPageVo> getPage(Page<RoomPageDto> page, RoomPageDto dto) {
  46. Page<RoomPageVo> result = roomMapper.getPage(page, dto);
  47. return result;
  48. }
  49. @Override
  50. public List<RoomExcelVo> getList(RoomPageDto dto) {
  51. List<RoomExcelVo> list = roomMapper.getList(dto);
  52. for (RoomExcelVo roomExcelVo : list) {
  53. if("1".equals(roomExcelVo.getIsMax())){
  54. roomExcelVo.setIsMax("是");
  55. }else if("0".equals(roomExcelVo.getIsMax())){
  56. roomExcelVo.setIsMax("否");
  57. }
  58. }
  59. return list;
  60. }
  61. @Override
  62. public String saveBatch(AddRoomDto dto) {
  63. MPJLambdaWrapper<RoomRule> queryWrapper = new MPJLambdaWrapper<>();
  64. queryWrapper.leftJoin(RoomRuleItem.class, RoomRuleItem::getRoomRuleId, RoomRule::getId)
  65. .eq(RoomRuleItem::getOfficeBuildId, dto.getOfficeBuildId());
  66. RoomRule roomRule = roomRuleRoomRuleMapper.selectJoinOne(RoomRule.class, queryWrapper);
  67. if(roomRule == null){
  68. throw new MyException("该楼栋未配置规则,请先配置规则") ;
  69. }
  70. BaseOfficeBuild build = baseOfficeBuildMapper.selectById(dto.getOfficeBuildId());
  71. Integer maxSortCode = roomMapper.getMaxSortCode();
  72. Date createDate = new Date();
  73. long createUserId = StpUtil.getLoginIdAsLong();
  74. String[] split = dto.getFloorNumber().split(",");
  75. List<Integer> floorList = new ArrayList<>();
  76. for (String floorStr : split) {
  77. floorList.add(Integer.parseInt(floorStr));
  78. }
  79. Collections.sort(floorList);
  80. for (Integer floorNumber : floorList) {
  81. for (int i = 0; i < dto.getFloorRoomsCount(); i ++){
  82. String roomName = "";
  83. if(roomRule.getRule().contains("1") && build.getBuildNumber() != null){
  84. roomName += build.getBuildNumber();
  85. }
  86. if(roomRule.getRule().contains("2")){
  87. roomName += floorNumber;
  88. }
  89. if(roomRule.getRule().contains("3")){
  90. roomName += String.format("%02d", (i + 1));
  91. }
  92. Map<String, Object> param = new HashMap<>();
  93. param.put("room_name", roomName);
  94. param.put("floor_number", floorNumber);
  95. param.put("office_build_id", dto.getOfficeBuildId());
  96. List<Room> rooms = roomMapper.selectByMap(param);
  97. if(rooms != null && !rooms.isEmpty()){
  98. continue;
  99. }
  100. //先添加寝室
  101. maxSortCode ++;
  102. Room room = BeanUtil.toBean(dto, Room.class);
  103. room.setSortCode(maxSortCode);
  104. room.setFloorNumber(floorNumber);
  105. room.setCreateDate(createDate);
  106. room.setCreateUserId(createUserId);
  107. room.setDeleteMark(0);
  108. room.setEnabledMark(1);
  109. room.setRoomName(roomName);
  110. roomMapper.insert(room);
  111. Long roomId = room.getId();
  112. Integer bedMaxSortCode = roomBedMapper.getMaxSortCode() + 1;
  113. //生成床位数据
  114. for (int j = 1; j <= dto.getBedCount(); j ++){
  115. RoomBed bed = new RoomBed();
  116. bed.setRoomId(roomId);
  117. bed.setSortCode(bedMaxSortCode + j - 1);
  118. bed.setCreateDate(createDate);
  119. bed.setCreateUserId(createUserId);
  120. bed.setDeleteMark(0);
  121. bed.setEnabledMark(1);
  122. bed.setBedNumber(j);
  123. roomBedMapper.insert(bed);
  124. }
  125. }
  126. }
  127. return "ok";
  128. }
  129. @Override
  130. public String deleteReachBed(Long id) {
  131. List<RoomBed> bedList = roomBedMapper.selectList(
  132. MPJWrappers.<RoomBed>lambdaJoin()
  133. .select(RoomBed::getStudentUserId)
  134. .eq(RoomBed::getRoomId, id).isNotNull(RoomBed::getStudentUserId)
  135. );
  136. if(bedList != null && !bedList.isEmpty()){
  137. return "寝室里面已安排学生,无法删除";
  138. }
  139. roomMapper.deleteById(id);
  140. Map<String, Object> param = new HashMap<>();
  141. param.put("room_id", id);
  142. roomBedMapper.deleteByMap(param);
  143. return "ok";
  144. }
  145. }