IESM项目实训十一
成绩最终录入总库,不可对该课程成绩再执行任何其他操作。该页面主要部分由代码自动生成,进行详细的查询配置。将原本的查询进一步修改为模糊查询,同样将成绩录入界面的查询进行优化。在该页面同样添加学生成绩列表和提交记录。为提交记录添加学生成绩列表。
界面查询部分修改
使用组件: JInput
import JInput from '@/components/jeecg/JInput'
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="课程编号">
<j-input placeholder="请输入课程编号" v-model="queryParam.lesId"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="课程名称">
<j-input placeholder="请输入课程名称" v-model="queryParam.lesName"></j-input>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="学年学期">
<j-dict-select-tag placeholder="请选择学年学期" v-model="queryParam.lesSem" dictCode="semester,sem_name,sem_name"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="教工号">
<j-input placeholder="请输入教工号" v-model="queryParam.teaId"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="上课教师">
<j-input placeholder="请输入上课教师" v-model="queryParam.teaName"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="课序号">
<j-input placeholder="请输入课序号" v-model="queryParam.lesOrd"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="课程属性">
<j-dict-select-tag placeholder="请选择课程属性" v-model="queryParam.lesShuxing" dictCode="sch_attribute,attribute_name,attribute_name"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="课程性质">
<j-input placeholder="请输入课程性质" v-model="queryParam.lesChar"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="课程类别">
<j-input placeholder="请输入课程类别" v-model="queryParam.lesType"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="录入人姓名">
<j-input placeholder="请输入录入人姓名" v-model="queryParam.inputName"></j-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="录入人工号">
<j-input placeholder="请输入录入人工号" v-model="queryParam.inputId"></j-input>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
学生成绩列表
AllStuScoresController
类
@ApiOperation(value="学生成绩总库-分页列表查询", notes="学生成绩总库-分页列表查询")
@GetMapping(value = "/list")
public Result<Page<AllStuScores>> queryPageList(AllStuScores allStuScores,
@RequestParam(name="les_id")String les_id,
@RequestParam(name="les_ord")String les_ord,
@RequestParam(name="submit_time")String submit_time,
@RequestParam(name ="stu_num")Integer stu_num,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "30") Integer pageSize,
HttpServletRequest req) {
Result<Page<AllStuScores>> result = new Result<>();
Page<AllStuScores> pageList = new Page<AllStuScores>(pageNo, pageSize);
pageList=allStuScoresService.getStudentList(pageList,les_id,les_ord,submit_time,stu_num);
result.setSuccess(true);
result.setResult(pageList);
return result;
}
IAllStuScoresService
接口
public Page<AllStuScores> getStudentList(Page<AllStuScores> page, String les_id, String les_ord,String submit_time,Integer stu_num);;
AllStuScoresServiceImpl
接口实现
@Resource
private AllStuScoresMapper allStuScoresMapper;
@Override
@Transactional
public Page<AllStuScores> getStudentList(Page<AllStuScores> page, String les_id, String les_ord,String submit_time,Integer stu_num) {
return page.setRecords(allStuScoresMapper.getStudentList(page,les_id,les_ord,submit_time,stu_num));
}
AllStuScoresMapper
数据库接口
public List<AllStuScores> getStudentList(Page<AllStuScores> page, @Param("les_id") String cs_id, @Param("les_ord") String les_ord,@Param("submit_time")String submit_time, @Param("stu_num")Integer stu_num);
AllStuScoresMapper.xml
数据库操作
<select id="getStudentList" resultType="org.jeecg.modules.demo.ScoresInput.entity.AllStuScores">
SELECT *
FROM (SELECT *
FROM all_stu_scores
WHERE
les_id = #{les_id} and les_ord=#{les_ord}
ORDER BY ABS(TIMESTAMPDIFF(second, create_time, #{submit_time})) LIMIT #{stu_num}) as `a*`
</select>
提交记录学生列表
后端调用两个页面的学生列表的接口,该部分只写前端。
//按钮
<a @click="handleShowStuList(record)">学生成绩列表</a>
//响应事件,temp是打开弹窗是所传全局变量
handleShowStuList:function (record){
if(this.temp=="tem"){
this.$refs.TemporaryStuScoresListModal.showTemporaryStuScoresList(record);
}
if(this.temp=="all"){
this.$refs.AllStuScoresListModal.showAllStuScoresList(record);
}
},
为成绩总库和临时界面设置默认显示为当前学期
@ApiOperation(value="成绩总库分页列表查询", notes="成绩总库分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<AllScores>> queryPageList(AllScores allScores,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Boolean judge=ObjectsUtils.objectCheckIsNull(allScores);
if(judge){
allScores.setLesSem(ImportLesInfoUtil.CreateSemester_year());
}
QueryWrapper<AllScores> queryWrapper = QueryGenerator.initQueryWrapper(allScores, req.getParameterMap());
Page<AllScores> page = new Page<AllScores>(pageNo, pageSize);
IPage<AllScores> pageList = allScoresService.page(page, queryWrapper);
return Result.OK(pageList);
}
工具类:ObjectsUtils
判断是否有输入查询条件,如果没有则默认学期
@Slf4j
public class ObjectsUtils {
/**
* 判断对象是否完全为空
*
* @param object
* @return
*/
public static boolean objectCheckIsNull(Object object) {
boolean flag = true; //定义返回结果,默认为true
if (Objects.isNull(object)) {
flag = true;
} else {
Class clazz = (Class) object.getClass(); // 得到类对象
Field fields[] = clazz.getDeclaredFields(); // 得到所有属性
for (Field field : fields) {
field.setAccessible(true);
Object fieldValue = null;
try {
fieldValue = field.get(object); //得到属性值
Type fieldType = field.getGenericType();//得到属性类型
String fieldName = field.getName(); // 得到属性名
log.info("属性类型:" + fieldType + ",属性名:" + fieldName + ",属性值:" + fieldValue);
} catch (IllegalArgumentException e) {
log.error(e.getMessage(), e);
} catch (IllegalAccessException e) {
log.error(e.getMessage(), e);
}
if (fieldValue != null) { //只要有一个属性值不为null 就返回false 表示对象不为null
flag = false;
break;
}
}
}
return flag;
}
}
提交总库
//按钮
<a @click="storageAllInfo(record)">提交总库</a>
//响应事件
storageAllInfo(record){
if (record.inputState == "未提交" || record.inputState == '') {
alert("成绩未提交不可以提交至总库!");
}else {
getAction(this.url.storageLesson, {
les_id: record.lesId,
les_ord: record.lesOrd,
les_sem: record.lesSem
}).then((res) => {
if (res.result === "课程已经提交至总库") {
this.$message.success("课程已经提交至总库,不可重复提交!");
} else if(res.result==="添加成功!"){
getAction(this.url.storageStuList, {les_id: record.lesId, les_ord: record.lesOrd}).then((r) => {
if (r.result === "学生录入总库成功!") {
this.$message.success("学生录入总库成功!");
}
})
}else{
alert("操作失败,请重新尝试!");
}
})
}
},
后端将该课程信息插入总库,使用生成的add()方法。
@RequestMapping(value = "/storageLesson")
public Result<?> storageLesson(@RequestParam(name = "les_id") String les_id, @RequestParam(name = "les_ord") String les_ord,@RequestParam(name="les_sem")String les_sem){
TemporaryScores temporaryScores=allScoresService.getLessonInfo(les_id,les_ord).get(0);
List<AllScores> exit=allScoresService.getLessonExit(les_id,les_ord,les_sem);
System.out.println(exit);
if(exit.size()==0) {
AllScores allScores = new AllScores();
allScores.setClassroom(temporaryScores.getClassroom());
allScores.setCourseclass(temporaryScores.getCourseclass());
allScores.setCoursenum(temporaryScores.getCoursenum());
allScores.setCreateTime(temporaryScores.getCreateTime());
allScores.setInputId(temporaryScores.getInputId());
allScores.setInputName(temporaryScores.getInputName());
allScores.setInputState(temporaryScores.getInputState());
allScores.setLesChar(temporaryScores.getLesChar());
allScores.setLesCredit(temporaryScores.getLesCredit());
allScores.setLesId(temporaryScores.getLesId());
allScores.setLesName(temporaryScores.getLesName());
allScores.setLesOrd(temporaryScores.getLesOrd());
allScores.setLesSem(temporaryScores.getLesSem());
allScores.setLesShuxing(temporaryScores.getLesShuxing());
allScores.setLesTime(temporaryScores.getLesTime());
allScores.setLesType(temporaryScores.getLesType());
allScores.setSubmitTime(temporaryScores.getSubmitTime());
allScores.setTeachType(temporaryScores.getTeachType());
allScores.setTeaId(temporaryScores.getTeaId());
allScores.setTeaName(temporaryScores.getTeaName());
allScores.setTestType(temporaryScores.getTestType());
allScores.setTestPercent(temporaryScores.getTestPercent());
allScores.setUsualPercent(temporaryScores.getUsualPercent());
allScores.setWeekTime(temporaryScores.getWeekTime());
allScores.setXuewei(temporaryScores.getXuewei());
allScores.setZhouci(temporaryScores.getZhouci());
allScores.setScoresType(temporaryScores.getScoresType());
this.add(allScores);
return Result.OK("添加成功!");
}else{
return Result.OK("课程已经提交至总库");
}
}