You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ssgl/zsq/DormitoryService宿舍编号设置.java

112 lines
6.0 KiB

package com.yanzhen.service; // 定义包名
import com.yanzhen.entity.Bed; // 导入Bed实体类
import com.yanzhen.entity.Building; // 导入Building实体类
import com.yanzhen.entity.DormitorySet; // 导入DormitorySet实体类
import com.yanzhen.mapper.BedMapper; // 导入BedMapper接口
import com.yanzhen.mapper.BuildingMapper; // 导入BuildingMapper接口
import com.yanzhen.mapper.DormitoryMapper; // 导入DormitoryMapper接口
import com.yanzhen.entity.Dormitory; // 导入Dormitory实体类
import com.github.pagehelper.PageHelper; // 导入PageHelper分页插件
import com.github.pagehelper.PageInfo; // 导入PageInfo分页信息类
import com.yanzhen.mapper.DormitorySetMapper; // 导入DormitorySetMapper接口
import org.springframework.beans.factory.annotation.Autowired; // 导入Spring的@Autowired注解
import org.springframework.stereotype.Service; // 导入Spring的@Service注解
import org.springframework.transaction.annotation.Transactional; // 导入Spring的@Transactional注解
import org.springframework.util.StringUtils; // 导入Spring的StringUtils工具类
import java.util.List; // 导入Java的List集合类
@Service // 标注这是一个服务层的Bean
public class DormitoryService宿 {// “宿舍编号设置----管理员”
@Autowired // 自动注入DormitoryMapper依赖
private DormitoryMapper dormitoryMapper;
@Autowired // 自动注入DormitorySetMapper依赖
private DormitorySetMapper dormitorySetMapper;
@Autowired // 自动注入BuildingMapper依赖
private BuildingMapper buildingMapper;
@Autowired // 自动注入BedMapper依赖
private BedMapper bedMapper;
public int create(Dormitory dormitory) { // 创建宿舍记录
return dormitoryMapper.create(dormitory); // 调用DormitoryMapper的create方法
}
public int delete(String ids) { // 根据ID字符串批量删除宿舍记录
String[] arr = ids.split(","); // 将ID字符串按逗号分割成数组
int row = 0; // 初始化删除计数器
for (String s : arr) { // 遍历ID数组
if(!StringUtils.isEmpty(s)){ // 如果ID不为空
dormitoryMapper.delete(Integer.parseInt(s)); // 调用DormitoryMapper的delete方法删除记录
row++; // 删除计数器加1
}
}
return row; // 返回删除的记录数
}
public int delete(Integer id) { // 根据ID删除单个宿舍记录
return dormitoryMapper.delete(id); // 调用DormitoryMapper的delete方法
}
public int update(Dormitory dormitory) { // 更新宿舍记录
return dormitoryMapper.update(dormitory); // 调用DormitoryMapper的update方法
}
public int updateSelective(Dormitory dormitory) { // 选择性更新宿舍记录
return dormitoryMapper.updateSelective(dormitory); // 调用DormitoryMapper的updateSelective方法
}
public PageInfo<Dormitory> query(Dormitory dormitory) { // 查询宿舍记录并分页
if(dormitory != null && dormitory.getPage() != null){ // 如果宿舍对象和分页信息不为空
PageHelper.startPage(dormitory.getPage(),dormitory.getLimit()); // 设置分页参数
}
return new PageInfo<Dormitory>(dormitoryMapper.query(dormitory)); // 返回分页后的宿舍记录列表
}
public Dormitory detail(Integer id) { // 根据ID查询单个宿舍详情
return dormitoryMapper.detail(id); // 调用DormitoryMapper的detail方法
}
public int count(Dormitory dormitory) { // 统计符合条件的宿舍记录数
return dormitoryMapper.count(dormitory); // 调用DormitoryMapper的count方法
}
@Transactional // 声明该方法需要事务管理
public void init(Dormitory dormitory){ // 初始化宿舍数据
DormitorySet param = new DormitorySet(); // 创建DormitorySet对象
param.setBuildingId(dormitory.getBuildingId()); // 设置建筑ID
param.setStoreyId(dormitory.getStoreyId()); // 设置楼层ID
List<DormitorySet> dormitorySets = dormitorySetMapper.query(param); // 查询宿舍设置信息
Building building = buildingMapper.detail(dormitory.getBuildingId()); // 查询建筑详细信息
//删除已有床位(先查询出来,然后批量删除)
List<Dormitory> dormitoryList = dormitoryMapper.query(dormitory); // 查询现有的宿舍记录
dormitoryList.forEach(item->{ // 遍历宿舍记录列表
bedMapper.deleteByDormitoryId(item.getId()); // 删除每个宿舍对应的床位记录
});
//删除以有的数据(删除已有宿舍)
dormitoryMapper.deleteByBuildingIdAndStoryId(dormitory.getBuildingId(),dormitory.getStoreyId()); // 删除指定建筑和楼层的所有宿舍记录
dormitorySets.forEach(dormitorySet -> { // 遍历宿舍设置信息列表
for(int i=dormitorySet.getStart();i<=dormitorySet.getEnd();i++){ // 根据起始和结束编号生成宿舍编号
Dormitory entity = new Dormitory(); // 创建新的宿舍对象
entity.setNo(dormitorySet.getPrefix()+i); // 设置宿舍编号
entity.setBuildingId(dormitory.getBuildingId()); // 设置建筑ID
entity.setStoreyId(dormitory.getStoreyId()); // 设置楼层ID
entity.setCapacity(dormitorySet.getCapacity()); // 设置宿舍容量
entity.setSex(building.getSex()); // 设置宿舍性别限制
entity.setType(building.getType()); // 设置宿舍类型
dormitoryMapper.create(entity); // 创建新的宿舍记录
for(int j=1;j<=entity.getCapacity();j++){ // 根据宿舍容量生成床位记录
Bed bed = new Bed(); // 创建新的床位对象
bed.setBno(entity.getNo()+"-"+j); // 设置床位编号
bed.setDormitoryId(entity.getId()); // 设置所属宿舍ID
bedMapper.create(bed); // 创建新的床位记录
}
}
});
}
}