forked from liweijie/education
教室编号生成调整
This commit is contained in:
@@ -20,4 +20,11 @@ public interface ClassRoomMapper extends BaseMapper<JSB> {
|
||||
* @return 分页结果
|
||||
*/
|
||||
Page<JSB> selectPageList(Page<JSB> page, @Param("jsb") JSB jsb);
|
||||
|
||||
/**
|
||||
* 获取最大教室编号(仅统计纯数字编号)
|
||||
*
|
||||
* @return 最大教室编号
|
||||
*/
|
||||
String selectMaxJsbh();
|
||||
}
|
||||
@@ -54,4 +54,8 @@
|
||||
ORDER BY 序号
|
||||
</select>
|
||||
|
||||
<select id="selectMaxJsbh" resultType="java.lang.String">
|
||||
SELECT MAX(CAST(教室编号 AS INT)) FROM 教室表 WHERE DEL_FLAG = 0 AND REGEXP_LIKE(教室编号, '^[0-9]+$')
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+22
@@ -2,6 +2,7 @@ package com.roomroot.jwgl.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.roomroot.common.utils.StringUtils;
|
||||
import com.roomroot.jwgl.entity.JSB;
|
||||
import com.roomroot.jwgl.mapper.ClassRoomMapper;
|
||||
import com.roomroot.jwgl.service.ClassRoomService;
|
||||
@@ -26,9 +27,30 @@ public class ClassRoomServiceImpl implements ClassRoomService {
|
||||
public void add(JSB jsb) {
|
||||
jsb.setId(UuidUtil.getUUID());
|
||||
jsb.setDelFlag(0);
|
||||
// 教室编号为非空列:留空时按现有最大数字编号 +1 自动生成
|
||||
if (StringUtils.isEmpty(jsb.getJsbh())) {
|
||||
jsb.setJsbh(nextJsbh());
|
||||
} else {
|
||||
jsb.setJsbh(jsb.getJsbh().trim());
|
||||
}
|
||||
jsbMapper.insert(jsb);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下一个教室编号(纯数字编号中取最大值 +1)
|
||||
*/
|
||||
private String nextJsbh() {
|
||||
String maxJsbh = jsbMapper.selectMaxJsbh();
|
||||
if (StringUtils.isEmpty(maxJsbh)) {
|
||||
return "1";
|
||||
}
|
||||
try {
|
||||
return String.valueOf(Integer.parseInt(maxJsbh.trim()) + 1);
|
||||
} catch (NumberFormatException e) {
|
||||
return "1";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
JSB jsb = getById(id);
|
||||
|
||||
@@ -100,6 +100,11 @@
|
||||
:close-on-click-modal="false">
|
||||
<el-form ref="classroomForm" :model="dialog.form" :rules="rules" label-width="110px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="教室编号">
|
||||
<el-input v-model="dialog.form.jsbh" placeholder="留空自动生成(按现有最大编号 +1)" maxlength="50" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="教室名称" prop="jsmc">
|
||||
<el-input v-model="dialog.form.jsmc" placeholder="请输入教室名称" />
|
||||
@@ -107,7 +112,15 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="教学楼代号">
|
||||
<el-input v-model="dialog.form.jxldh" placeholder="请输入教学楼代号" />
|
||||
<el-select v-model="dialog.form.jxldh" :loading="buildOptionsLoading" placeholder="请选择教学楼"
|
||||
clearable filterable class="w-full">
|
||||
<el-option
|
||||
v-for="item in buildOptions"
|
||||
:key="item.id"
|
||||
:label="formatBuildLabel(item)"
|
||||
:value="item.jxldh"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -200,6 +213,7 @@ import {
|
||||
listClassroom,
|
||||
listAllClassroom
|
||||
} from '@/api/teachBusiness/classroom'
|
||||
import { listAllBuild } from '@/api/teachBusiness/build'
|
||||
|
||||
export default {
|
||||
name: 'Venue',
|
||||
@@ -215,6 +229,9 @@ export default {
|
||||
},
|
||||
tableData: [],
|
||||
jxcdlxOptions: [],
|
||||
// 教学楼下拉选项(来源:教学楼表,未删除数据)
|
||||
buildOptions: [],
|
||||
buildOptionsLoading: false,
|
||||
total: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
@@ -231,9 +248,26 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.loadVenueTypeOptions()
|
||||
this.loadBuildOptions()
|
||||
this.fetchList()
|
||||
},
|
||||
methods: {
|
||||
/** 加载全部未删除的教学楼,作为新增/编辑弹窗中教学楼代号下拉选项。 */
|
||||
loadBuildOptions() {
|
||||
this.buildOptionsLoading = true
|
||||
listAllBuild().then(response => {
|
||||
this.buildOptions = Array.isArray(response.data) ? response.data : []
|
||||
}).catch(() => {
|
||||
this.buildOptions = []
|
||||
}).finally(() => {
|
||||
this.buildOptionsLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
formatBuildLabel(item) {
|
||||
const base = [item.jxldh, item.jxlmc].filter(Boolean).join(' ')
|
||||
return base || item.id
|
||||
},
|
||||
/**
|
||||
* 独立加载全部场地类型,避免查询结果收窄后下拉候选项同步丢失。
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user