“吴震修改招生就业和学生空床位查询”

This commit is contained in:
“wuzhen” committed 2026-06-08 08:52:36 +08:00
1 parent 0745d287f5
commit 80cdde97a1
9 files changed
+113 -8

No files matched your search

@@ -30,6 +30,7 @@ import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.HashSet;
/**
* 宿舍床位信息Service业务层处理
@@ -157,7 +158,55 @@ public class XgDormBedServiceImpl implements IXgDormBedService {
*/
@Override
public List<XgDormBedDetailVo> queryBedDetailsByRoomId(Long roomId) {
return baseMapper.selectBedDetailsByRoomId(roomId);
List<XgDormBedDetailVo> result = new ArrayList<>();
// 第一步:从 xg_dorm_bed_student 为主表查有学生的床位
List<Map<String, Object>> studentBeds = xgDormBedStudentMapper.selectRoomStudents(roomId);
Set<Long> occupiedBedIds = new HashSet<>();
for (Map<String, Object> row : studentBeds) {
XgDormBedDetailVo vo = new XgDormBedDetailVo();
Object bedIdObj = row.get("bed_id");
Long bedId = bedIdObj != null ? ((Number) bedIdObj).longValue() : null;
if (bedId != null) {
occupiedBedIds.add(bedId);
}
vo.setId(bedId);
vo.setBedCode(row.get("bed_code") != null ? row.get("bed_code").toString() : null);
vo.setBedName(row.get("bed_name") != null ? row.get("bed_name").toString() : null);
vo.setRoomId(roomId);
vo.setStudentId(row.get("student_id") != null ? ((Number) row.get("student_id")).longValue() : null);
vo.setStudentNo(row.get("student_no") != null ? row.get("student_no").toString() : null);
vo.setStudentName(row.get("student_name") != null ? row.get("student_name").toString() : null);
vo.setStudentGender(row.get("gender") != null ? row.get("gender").toString() : null);
vo.setClassName(row.get("class_name") != null ? row.get("class_name").toString() : null);
vo.setCollegeName(row.get("college_name") != null ? row.get("college_name").toString() : null);
vo.setMajorName(row.get("major_name") != null ? row.get("major_name").toString() : null);
vo.setAssignmentStatus("0");
vo.setBedStatus("1");
result.add(vo);
}
// 第二步:补查 xg_dorm_bed 中未被分配的空床位
List<XgDormBed> emptyBeds = baseMapper.selectList(
Wrappers.<XgDormBed>lambdaQuery()
.eq(XgDormBed::getRoomId, roomId)
.notIn(!occupiedBedIds.isEmpty(), XgDormBed::getId, occupiedBedIds)
);
for (XgDormBed bed : emptyBeds) {
XgDormBedDetailVo vo = new XgDormBedDetailVo();
vo.setId(bed.getId());
vo.setBedCode(bed.getBedCode());
vo.setBedName(bed.getBedName());
vo.setRoomId(bed.getRoomId());
vo.setBedType(bed.getBedType());
vo.setBedStatus(bed.getBedStatus());
vo.setBedRemark(bed.getRemark());
result.add(vo);
}
return result;
}
/**
@@ -68,9 +68,9 @@ public class ZsjyEnrollmentInfoBo extends BaseEntity {
private String phone1;
/**
* 联系手机号码2
* 联系手机号码2(非必填,填写时需符合手机号格式)
*/
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确", groups = { AddGroup.class, EditGroup.class })
@Pattern(regexp = "^$|^1[3-9]\\d{9}$", message = "手机号码格式不正确", groups = { AddGroup.class, EditGroup.class })
private String phone2;
/**
+23
View File
@@ -207,6 +207,29 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/xgss/dmdl/dmdl",
"style": {
"navigationBarTitleText": "宿舍点名",
"navigationBarBackgroundColor": "#0051d9",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/xgss/dmdl/dmdlCheck",
"style": {
"navigationBarTitleText": "宿舍点名",
"navigationStyle": "custom"
}
},
{
"path": "pages/xgss/dmdl/dmdlDetail",
"style": {
"navigationBarTitleText": "点名详情",
"navigationBarBackgroundColor": "#0051d9",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/xgss/xssswsjc/xssswsjc",
"style": {
+1 -1
View File
@@ -553,7 +553,7 @@ export default {
{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' },
],
phone2: [
{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' },
{ pattern: /^$|^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' },
],
collegeName: [{ required: true, message: '所属学院不能为空', trigger: 'change' }],
appliedMajor: [{ required: true, message: '报考专业不能为空', trigger: 'change' }],
+20
View File
@@ -220,6 +220,19 @@
/>
</template>
</ServiceItem>
<ServiceItem
v-if="hasPermi(['student:dormrollcall:listapp'])"
title="宿舍点名"
@click="gotoDormRollCall"
>
<template #icon>
<image
src="/static/00135.png"
mode="aspectFit"
style="width: 24px; height: 24px"
/>
</template>
</ServiceItem>
<ServiceItem
v-if="hasPermi(['student:dynamics:list'])"
@@ -1204,6 +1217,13 @@ export default {
});
},
// 跳转到宿舍点名页面
gotoDormRollCall() {
uni.navigateTo({
url: '/pages/xgss/dmdl/dmdl',
});
},
// 跳转到勤工俭学页面
gotoWorkStudy() {
uni.navigateTo({
@@ -272,3 +272,16 @@ export const getClassUnoccupiedBedDetails = (classId?: string | number) => {
params: { classId }
});
};
/**
* 根据房间ID获取住在当前房间的所有学生信息
* 包含学生姓名、学号、性别、学院名称、专业名称、班级名称、床位编码、床位ID
* @param roomId 房间ID
*/
export const getRoomStudents = (roomId: string | number) => {
return request({
url: '/dormBedStudent/dormBedStudent/getRoomStudents',
method: 'get',
params: { roomId }
});
};
+2 -2
View File
@@ -35,9 +35,9 @@ export interface EnrollmentInfoVO {
phone1: string;
/**
* 联系手机号码2
* 联系手机号码2(非必填)
*/
phone2: string;
phone2?: string;
/**
* 民族
+1 -1
View File
@@ -358,7 +358,7 @@ const rules = {
{ required: true, message: '联系电话不能为空', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
],
phone2: [{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }],
phone2: [{ pattern: /^$|^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }],
collegeName: [{ required: true, message: '所属学院不能为空', trigger: 'change' }],
appliedMajor: [{ required: true, message: '报考专业不能为空', trigger: 'change' }],
totalScoreFull: [{ type: 'number', min: 100, max: 1000, message: '中考满分应在100-1000之间', trigger: 'blur' }],
+1 -1
View File
@@ -1058,7 +1058,7 @@ const data = reactive<PageData<EnrollmentInfoForm, EnrollmentInfoQuery>>({
{ required: true, message: '联系电话不能为空', trigger: 'blur' },
{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }
],
phone2: [{ pattern: /^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }],
phone2: [{ pattern: /^$|^1[3-9]\d{9}$/, message: '手机号码格式不正确', trigger: 'blur' }],
appliedMajor: [{ required: true, message: '报考专业不能为空', trigger: 'change' }],
totalScoreFull: [{ type: 'number', min: 100, max: 1000, message: '中考满分应在100-1000之间', trigger: 'blur' }],
totalScore: [{ type: 'number', min: 0, message: '中考成绩不能小于0', trigger: 'blur' }],