@@ -50,7 +50,7 @@ public class ClassroomController {
|
||||
return classroomService.floors(buildingId);
|
||||
}
|
||||
|
||||
/** 全校教室扁平列表(教室管理页「空间筛选树」数据源,轻量字段)。 */
|
||||
/** 全校教室扁平列表(教室管理页「楼层筛选树」数据源,轻量字段)。 */
|
||||
@GetMapping("Tree")
|
||||
public List<Map<String, Object>> tree() {
|
||||
return classroomService.tree();
|
||||
|
||||
@@ -36,7 +36,7 @@ public interface IClassroomService {
|
||||
/** 楼栋下已有教室的楼层列表(升序,筛选项用)。 */
|
||||
List<Integer> floors(Integer buildingId);
|
||||
|
||||
/** 全校教室扁平列表(空间筛选树数据源,仅轻量字段)。 */
|
||||
/** 全校教室扁平列表(楼层筛选树数据源,仅轻量字段)。 */
|
||||
List<Map<String, Object>> tree();
|
||||
|
||||
/** 批量添加教室,返回 {created, skipped, total}。 */
|
||||
|
||||
@@ -128,7 +128,7 @@ public class ClassroomService implements IClassroomService {
|
||||
// 类型名映射
|
||||
Map<Integer, String> typeNames = typeRepository.findBySchIdOrderBySortOrderAscIdAsc(schId).stream()
|
||||
.collect(Collectors.toMap(ClassroomType::getId, ClassroomType::getTypeName, (a, b) -> a));
|
||||
// 校区/楼栋名映射(列表跨楼栋时行内直接展示,空间筛选树与详情面板用)
|
||||
// 校区/楼栋名映射(列表跨楼栋时行内直接展示,楼层筛选树与详情面板用)
|
||||
Map<Integer, String> campusNames = campusRepository.findBySchIdOrderBySortOrderAscIdAsc(schId).stream()
|
||||
.collect(Collectors.toMap(com.yunhai.acaclassroom.entity.Campus::getId,
|
||||
com.yunhai.acaclassroom.entity.Campus::getCampusName, (a, b) -> a));
|
||||
@@ -357,6 +357,9 @@ public class ClassroomService implements IClassroomService {
|
||||
Map<Integer, Integer> equipmentMap =
|
||||
sanitizeEquipmentMap(req.getEquipments(), req.getEquipmentIds(), r.getSchId());
|
||||
classroomEquipmentRepository.deleteBySchIdAndClassroomId(r.getSchId(), r.getId());
|
||||
// 先落盘删除:Hibernate 同一事务内 INSERT 先于 DELETE 执行,
|
||||
// 不 flush 会让“保留原设备”的重插撞 (classroom_id, equipment_id) 唯一键。
|
||||
classroomEquipmentRepository.flush();
|
||||
equipmentMap.forEach((eqId, qty) -> {
|
||||
com.yunhai.acaclassroom.entity.ClassroomEquipment ce =
|
||||
new com.yunhai.acaclassroom.entity.ClassroomEquipment();
|
||||
|
||||
Reference in New Issue
Block a user