|
|
@@ -1747,4 +1747,63 @@ public class XgDormBedStudentServiceImpl implements IXgDormBedStudentService {
|
|
|
throw new RuntimeException("收回床位失败:" + e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 班主任收回选中床位
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean classTeacherRecallSelectedBeds(List<Long> bedIds, Long classId) {
|
|
|
+ if (bedIds == null || bedIds.isEmpty()) {
|
|
|
+ throw new IllegalArgumentException("床位ID列表不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Long targetClassId = classId != null ? classId : getCurrentUserClassId();
|
|
|
+ Date now = new Date();
|
|
|
+ Long loginUserId = LoginHelper.getUserId();
|
|
|
+
|
|
|
+ log.info("班主任收回选中床位,床位IDs: {},classId:{}", bedIds, targetClassId);
|
|
|
+
|
|
|
+ // 1. 更新 xg_student_msg 表:根据 ext_field1 = 床位id,deleted = 0,student_status = 1
|
|
|
+ // 的数据
|
|
|
+ // 将 dormitory_building、dormitory_room、ext_field1 置空
|
|
|
+ if (!bedIds.isEmpty()) {
|
|
|
+ LambdaUpdateWrapper<XgStudentMsg> updateStudentWrapper = Wrappers.lambdaUpdate();
|
|
|
+ updateStudentWrapper
|
|
|
+ .in(XgStudentMsg::getExtField1,
|
|
|
+ bedIds.stream().map(String::valueOf).collect(java.util.stream.Collectors.toList()))
|
|
|
+ .eq(XgStudentMsg::getDeleted, 0L)
|
|
|
+ .eq(XgStudentMsg::getStudentStatus, "1")
|
|
|
+ .set(XgStudentMsg::getDormitoryBuilding, null)
|
|
|
+ .set(XgStudentMsg::getDormitoryRoom, null)
|
|
|
+ .set(XgStudentMsg::getExtField1, null)
|
|
|
+ .set(XgStudentMsg::getUpdateTime, now)
|
|
|
+ .set(XgStudentMsg::getUpdateBy, loginUserId);
|
|
|
+
|
|
|
+ int studentUpdateCount = xgStudentMsgMapper.update(null, updateStudentWrapper);
|
|
|
+ log.info("更新学生信息表记录数: {}", studentUpdateCount);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 更新 xg_dorm_bed_student 表:根据 bed_id = 床位id,deleted = 0,status = 0
|
|
|
+ // 将 student_id、assign_time、checkout_time 置空
|
|
|
+ LambdaUpdateWrapper<XgDormBedStudent> updateBedStudentWrapper = Wrappers.lambdaUpdate();
|
|
|
+ updateBedStudentWrapper.in(XgDormBedStudent::getBedId, bedIds)
|
|
|
+ .eq(XgDormBedStudent::getDeleted, "0")
|
|
|
+ .eq(XgDormBedStudent::getStatus, "0")
|
|
|
+ .set(XgDormBedStudent::getStudentId, null)
|
|
|
+ // .set(XgDormBedStudent::getAssignTime, null)
|
|
|
+ .set(XgDormBedStudent::getCheckoutTime, null)
|
|
|
+ .set(XgDormBedStudent::getUpdateTime, now)
|
|
|
+ .set(XgDormBedStudent::getUpdateBy, loginUserId);
|
|
|
+
|
|
|
+ int bedStudentUpdateCount = baseMapper.update(null, updateBedStudentWrapper);
|
|
|
+ log.info("更新床位学生分配表记录数: {}", bedStudentUpdateCount);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("班主任收回选中床位失败", e);
|
|
|
+ throw new RuntimeException("收回选中床位失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|