教室编号生成调整
This commit is contained in:
@@ -20,4 +20,11 @@ public interface ClassRoomMapper extends BaseMapper<JSB> {
|
|||||||
* @return 分页结果
|
* @return 分页结果
|
||||||
*/
|
*/
|
||||||
Page<JSB> selectPageList(Page<JSB> page, @Param("jsb") JSB jsb);
|
Page<JSB> selectPageList(Page<JSB> page, @Param("jsb") JSB jsb);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取最大教室编号(仅统计纯数字编号)
|
||||||
|
*
|
||||||
|
* @return 最大教室编号
|
||||||
|
*/
|
||||||
|
String selectMaxJsbh();
|
||||||
}
|
}
|
||||||
@@ -54,4 +54,8 @@
|
|||||||
ORDER BY 序号
|
ORDER BY 序号
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
+22
@@ -2,6 +2,7 @@ package com.roomroot.jwgl.service.impl;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.roomroot.common.utils.StringUtils;
|
||||||
import com.roomroot.jwgl.entity.JSB;
|
import com.roomroot.jwgl.entity.JSB;
|
||||||
import com.roomroot.jwgl.mapper.ClassRoomMapper;
|
import com.roomroot.jwgl.mapper.ClassRoomMapper;
|
||||||
import com.roomroot.jwgl.service.ClassRoomService;
|
import com.roomroot.jwgl.service.ClassRoomService;
|
||||||
@@ -26,9 +27,30 @@ public class ClassRoomServiceImpl implements ClassRoomService {
|
|||||||
public void add(JSB jsb) {
|
public void add(JSB jsb) {
|
||||||
jsb.setId(UuidUtil.getUUID());
|
jsb.setId(UuidUtil.getUUID());
|
||||||
jsb.setDelFlag(0);
|
jsb.setDelFlag(0);
|
||||||
|
// 教室编号为非空列:留空时按现有最大数字编号 +1 自动生成
|
||||||
|
if (StringUtils.isEmpty(jsb.getJsbh())) {
|
||||||
|
jsb.setJsbh(nextJsbh());
|
||||||
|
} else {
|
||||||
|
jsb.setJsbh(jsb.getJsbh().trim());
|
||||||
|
}
|
||||||
jsbMapper.insert(jsb);
|
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
|
@Override
|
||||||
public void delete(String id) {
|
public void delete(String id) {
|
||||||
JSB jsb = getById(id);
|
JSB jsb = getById(id);
|
||||||
|
|||||||
@@ -100,6 +100,11 @@
|
|||||||
:close-on-click-modal="false">
|
:close-on-click-modal="false">
|
||||||
<el-form ref="classroomForm" :model="dialog.form" :rules="rules" label-width="110px">
|
<el-form ref="classroomForm" :model="dialog.form" :rules="rules" label-width="110px">
|
||||||
<el-row :gutter="20">
|
<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-col :span="12">
|
||||||
<el-form-item label="教室名称" prop="jsmc">
|
<el-form-item label="教室名称" prop="jsmc">
|
||||||
<el-input v-model="dialog.form.jsmc" placeholder="请输入教室名称" />
|
<el-input v-model="dialog.form.jsmc" placeholder="请输入教室名称" />
|
||||||
@@ -107,7 +112,15 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="教学楼代号">
|
<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-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@@ -200,6 +213,7 @@ import {
|
|||||||
listClassroom,
|
listClassroom,
|
||||||
listAllClassroom
|
listAllClassroom
|
||||||
} from '@/api/teachBusiness/classroom'
|
} from '@/api/teachBusiness/classroom'
|
||||||
|
import { listAllBuild } from '@/api/teachBusiness/build'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Venue',
|
name: 'Venue',
|
||||||
@@ -215,6 +229,9 @@ export default {
|
|||||||
},
|
},
|
||||||
tableData: [],
|
tableData: [],
|
||||||
jxcdlxOptions: [],
|
jxcdlxOptions: [],
|
||||||
|
// 教学楼下拉选项(来源:教学楼表,未删除数据)
|
||||||
|
buildOptions: [],
|
||||||
|
buildOptionsLoading: false,
|
||||||
total: 0,
|
total: 0,
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
@@ -231,9 +248,26 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.loadVenueTypeOptions()
|
this.loadVenueTypeOptions()
|
||||||
|
this.loadBuildOptions()
|
||||||
this.fetchList()
|
this.fetchList()
|
||||||
},
|
},
|
||||||
methods: {
|
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