package com.controller;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import com.entity.ChengjiEntity;
import com.entity.KaochangEntity;
import com.entity.LaoshiEntity;
import com.service.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.KaoshiEntity;
import com.entity.view.KaoshiView;
import com.utils.PageUtils;
import com.utils.R;
/**
* 考试
* 后端接口
* @author
* @email
* @date 2021-03-23
*/
@RestController
@Controller
@RequestMapping("/kaoshi")
public class KaoshiController {
private static final Logger logger = LoggerFactory.getLogger(KaoshiController.class);
@Autowired
private KaoshiService kaoshiService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
@Autowired
private LaoshiService laoshiService;
@Autowired
private KaochangService kaochangService;
@Autowired
private ChengjiService chengjiService;
//级联表service
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isNotEmpty(role) && "用户".equals(role)){
params.put("yonghuId",request.getSession().getAttribute("userId"));
}
PageUtils page = kaoshiService.queryPage(params);
//字典表数据转换
List<KaoshiView> list =(List<KaoshiView>)page.getList();
for(KaoshiView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
KaoshiEntity kaoshi = kaoshiService.selectById(id);
if(kaoshi !=null){
//entity转view
KaoshiView view = new KaoshiView();
BeanUtils.copyProperties( kaoshi , view );//把实体数据重构到view中
//修改对应字典表字段
dictionaryService.dictionaryConvert(view);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 保存考试并且默认添加两个考场
*/
@RequestMapping("/save")
public R save(@RequestBody KaoshiEntity kaoshi, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,kaoshi:{}",this.getClass().getName(),kaoshi.toString());
Wrapper<KaoshiEntity> queryWrapper = new EntityWrapper<KaoshiEntity>()
.eq("kaoshi_name", kaoshi.getKaoshiName())
.eq("kaoshi_types", kaoshi.getKaoshiTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
KaoshiEntity kaoshiEntity = kaoshiService.selectOne(queryWrapper);
if(kaoshiEntity==null){
if((kaoshi.getEndTime().getTime()-kaoshi.getStartTime().getTime())<=0){
return R.error("考试结束时间不能小于开始时间");
}
Date date = new Date();
kaoshi.setCreateTime(date);
kaoshiService.insert(kaoshi);
List<LaoshiEntity> laoshiEntities = laoshiService.selectList(new EntityWrapper<LaoshiEntity>());
if(laoshiEntities.size()>1){
Integer laoshiIndex1;
Integer laoshiIndex2;
if(laoshiEntities.size()==2){
laoshiIndex1=1;
laoshiIndex2=2;
}else{
Random random = new Random();
laoshiIndex1 = random.nextInt(laoshiEntities.size()-1);
laoshiIndex2 = random.nextInt(laoshiEntities.size()-1);
boolean flag=true;
while (flag){
if(laoshiIndex1.intValue() == laoshiIndex2.intValue()){
laoshiIndex2 = random.nextInt(laoshiEntities.size()-1);
}else{
flag =false;
}
}
}
//默认添加考场
List<KaochangEntity> kaochangEntityList = new ArrayList<>();
KaochangEntity kaochang1 = new KaochangEntity();
kaochang1.setCreateTime(date);
kaochang1.setKaochangAddress("长椿路第一考场");
kaochang1.setKaochangName(kaoshi.getKaoshiName()+"的第一考场");
kaochang1.setKaoshiId(kaoshi.getId());
kaochang1.setKaoshiNumber(0);
kaochang1.setLaoshiId(laoshiEntities.get(laoshiIndex1).getId());
kaochangEntityList.add(kaochang1);
KaochangEntity kaochang2 = new KaochangEntity();
kaochang2.setCreateTime(date);
kaochang2.setKaochangAddress("长椿路第二考场");
kaochang2.setKaochangName(kaoshi.getKaoshiName()+"的第二考场");
kaochang2.setKaoshiId(kaoshi.getId());
kaochang2.setKaoshiNumber(0);
kaochang2.setLaoshiId(laoshiEntities.get(laoshiIndex2).getId());
kaochangEntityList.add(kaochang2);
kaochangService.insertBatch(kaochangEntityList);
return R.ok();
}else{
return R.error("老师数量过少,生成不出两个考场");
}
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody KaoshiEntity kaoshi, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,kaoshi:{}",this.getClass().getName(),kaoshi.toString());
//根据字段查询是否有相同数据
Wrapper<KaoshiEntity> queryWrapper = new EntityWrapper<KaoshiEntity>()
.notIn("id",kaoshi.getId())
.andNew()
.eq("kaoshi_name", kaoshi.getKaoshiName())
.eq("kaoshi_types", kaoshi.getKaoshiTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
KaoshiEntity kaoshiEntity = kaoshiService.selectOne(queryWrapper);
kaoshi.setStartTime(new Date());
kaoshi.setEndTime(new Date());
if(kaoshiEntity==null){
if((kaoshi.getEndTime().getTime()-kaoshi.getStartTime().getTime())<0){
return R.error("考试结束时间不能小于开始时间");
}
kaoshiService.updateById(kaoshi);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 报名
*/
@RequestMapping("/baoming")
public R baoming(@RequestParam Integer kaoshiId, HttpServletRequest request){
logger.debug("baoming方法:,,Controller:{},,kaoshiId:{}",this.getClass().getName(),kaoshiId);
String role = String.valueOf(req
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
JSP+SSM项目-四六级报名与成绩查询系统的Java毕业设计(源码+演示视频+说明).rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:125】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 四六级报名与成绩查询系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员管理考试和考场信息,管理学生,成绩以及老师信息。老师查询考试以及考场信息,管理学生成绩,查看公告。学生对四六级考试进行报名,查询考场以及考试成绩。
资源推荐
资源详情
资源评论
收起资源包目录
JSP+SSM项目-四六级报名与成绩查询系统的Java毕业设计(源码+演示视频+说明).rar (871个子文件)
pink-violet.css 171KB
yellow-green.css 149KB
bootstrap.min.css 141KB
bootstrap.css 120KB
bootstrap.min.css 98KB
style.css 66KB
animate.css 55KB
ueditor.css 44KB
ueditor.min.css 34KB
font-awesome.min.css 30KB
jquery-ui-1.10.4.custom.min.css 27KB
jquery.treetable.theme.default.css 25KB
animate.css 23KB
styles.css 23KB
entypo-icon.css 23KB
all.css 21KB
font-awesome.css 21KB
video-js.css 21KB
font-awesome.min.css 20KB
all.css 19KB
image.css 19KB
jquery.idealforms.css 17KB
themify-icons.css 16KB
video.css 15KB
attachment.css 15KB
square.min.css 14KB
all.css 14KB
all.css 13KB
all.css 13KB
bootstrap-select.css 13KB
all.css 12KB
dropzone.css 11KB
video-js.min.css 11KB
bootstrap-switch.css 11KB
bootstrap-datetimepicker.min.css 11KB
extra-pages.css 11KB
ladda.min.css 10KB
tooltipster.css 9KB
calendar.css 9KB
responsive.css 8KB
laydate.css 8KB
shCoreDefault.css 7KB
social.css 7KB
jquery-jvectormap.css 6KB
clockface.css 6KB
jquery.steps.css 6KB
dripicon.css 5KB
weather-icons.min.css 5KB
footable.core.css 5KB
dataTables.bootstrap4.min.css 5KB
datepicker.css 5KB
style-responsive.css 5KB
tabelizer.min.css 5KB
datepicker.css 5KB
datepicker.css 5KB
footable.standalone.css 5KB
signin.css 5KB
media.css 5KB
family.css 5KB
slidebars.css 4KB
skin-select.css 4KB
datepicker.css 4KB
scrawl.css 4KB
DT_bootstrap.css 4KB
datepicker.css 4KB
lightbox.css 4KB
bootstrap-timepicker.css 3KB
jquery.news-ticker.css 3KB
green.css 3KB
yellow.css 3KB
red.css 3KB
blue.css 3KB
violet.css 3KB
codemirror.css 3KB
bootstrap-colorpicker.css 3KB
maki-icons.css 3KB
jquery.treeview.css 3KB
profile.css 3KB
charts.css 3KB
jquery.searchableSelect.css 2KB
background.css 2KB
bootstrap-wysihtml5.css 2KB
awwwards.css 2KB
jquery.stepy.css 2KB
responsive-table.css 2KB
emotion.css 2KB
dialogbase.css 2KB
jquery.pnotify.default.css 2KB
music.css 2KB
demo.css 1KB
all.css 1KB
polaris.css 1KB
polaris.css 1KB
acc-wizard.min.css 1KB
jquery.easy-pie-chart.css 1KB
futurico.css 1KB
futurico.css 1KB
pace-theme-center-simple.css 1KB
uploader.css 1KB
edittable.css 1KB
共 871 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
岛上程序猿
- 粉丝: 5023
- 资源: 4157
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功