package com.student.servie;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.RandomUtil;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.student.common.Result;
import com.student.dao.entity.*;
import com.student.dao.mapper.StCourseMapper;
import com.student.dao.mapper.StGradeTeaMapper;
import com.student.dao.service.*;
import com.student.redis.delay.bean.Job;
import com.student.utils.MainUtils;
import com.student.vo.VoRoom;
import com.student.dao.myenum.couEnum;
import com.student.vo.VoStudent;
import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.xml.crypto.Data;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @author 李123
* 处理课程选修等相关信息
*/
@Service
public class CourseService {
//课程背景图片上传地址
@Value("${couImgFile}")
private String couImgPath;
@Autowired
private IStMajorService majorService;
@Autowired
private IStCourseService courseService;
@Autowired
private StCourseMapper courseMapper;
@Autowired
private StGradeTeaMapper gradeTeaMapper;
@Autowired
private IStGradeTeaService gradeTeaService;
@Autowired
private IStGradeStuService gradeStuService;
@Autowired
private IStReGradeStuService reGradeStuService;
@Autowired
private IStClassRoomService classRoomService;
@Autowired
private JobService jobService;
/**
* 初始化教师学年栏
*/
public Result labelInit(){
StUser user = (StUser) SecurityUtils.getSubject().getPrincipal();
List<String> resultList=new LinkedList<>();
//构造查询条件
QueryWrapper<StClassRoom> query=new QueryWrapper<>();
List<Long> idList = getIdList(user.getId(), 1);
int year;
String time;
//当前学期
Calendar date = Calendar.getInstance();
Map<String,Object> map= MainUtils.getStuDay(date.get(Calendar.YEAR),date.get(Calendar.MONTH));
int temYear=(int)map.get("year");
String temTime=(String)map.get("time");
//最早学期
if(idList.size()>0){
query.in("id", idList)
.orderByAsc("stu_year");
String firstYear=classRoomService.list(query).get(0).getStuYear();
String[] split = firstYear.split(",");
year=Integer.parseInt(split[0]);
time=split[1];
}else{
year=temYear;
time=temTime;
}
// year=2019;
// time="一";
for(int i=0;year<=temYear;i++,year++){
if(year==temYear&&time.equals(temTime)){
resultList.add(year+"-"+(year+1)+"第一学期");
if("二".equals(temTime)){
resultList.add(year+"-"+(year+1)+"第"+temTime+"学期");
}
break;
}
if(i==0){
if("一".equals(time)){
resultList.add(year+"-"+(year+1)+"第一学期");
}
}else {
resultList.add(year+"-"+(year+1)+"第一学期");
}
resultList.add(year+"-"+(year+1)+"第二学期");
}
return Result.succ(resultList);
}
/**
* 定时开课
*/
public Result timingStart(String time,Long roomId) throws ParseException {
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=format.parse(time);
StClassRoom classRoom = new StClassRoom();
classRoom.setId(roomId);
classRoom.setTiming(time);
//创建定时任务
Job job=new Job();
job.setDelayTime(date.getTime()-System.currentTimeMillis());
job.setId(roomId);
job.setTopic("test");
jobService.addDefJob(job);
if(classRoomService.updateById(classRoom)){
return Result.succ(null);
}else {
return Result.fail("定时失败");
}
}
/**
* 更改课程状态
*/
public Result changeState(int state,Long roomId){
StClassRoom classRoom = new StClassRoom();
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
classRoom.setId(roomId);
if(state==2){
//结束课程
classRoom.setState(couEnum.END);
}else {
//即刻开课
classRoom.setState(couEnum.DING);
classRoom.setTiming(format.format(new Date()));
}
if(classRoomService.updateById(classRoom)){
return Result.succ(null);
}else {
return Result.fail("更改失败");
}
}
/**
* 根据学年和专业获取教师以创课堂
*/
public Result getTeaRoom(String stuYear,String major){
StUser user = (StUser) SecurityUtils.getSubject().getPrincipal();
Long majorId=majorService.getOne(new QueryWrapper<StMajor>().eq("name",major)).getId();
List<Long> idList = getIdList(user.getId(), 1);
List<VoRoom> rooms=new ArrayList<>();
if(idList.size()>0){
//构造查询条件
QueryWrapper<StClassRoom> query=new QueryWrapper<>();
query.in("id",idList)
.eq("stu_year", stuYear)
.eq("major_id",majorId);
List<StClassRoom> list = classRoomService.list(query);
if(list.size()>0){
list.forEach(item->{
VoRoom room=new VoRoom();
BeanUtils.copyProperties(item,room);
if("".equals(item.getTiming())){
room.setTiming("待定");
}
//查询选课人数
Long stuSum=gradeStuService.count(new QueryWrapper<StGradeStu>().eq("room_id",item.getId()));
Long reStuSum=reGradeStuService.count(new QueryWrapper<StReGradeStu>().eq("room_id",item.getId()));
//查询课程名称
room.setCouName(courseMapper.getCourse(item.getId()).getCouName());
room.setStuSum(stuSum+reStuSum);
//赋予课程状态
room.setCouState(item.getState().getState());
rooms.add(room);
});
}
}
return Result.succ(rooms);
}
/**
* 更改课程背景图片
*/
public Result upBcImg(MultipartFile file,Long roomId){
StUser user= (StUser) SecurityUtils.getSubject().getPrincipal();
String oriFilename= file.getOriginalFilename();
//用uuid构造唯一文件名
String newFilename= UUID.randomUUID()+"-"+user.getUsername()+"-"+oriFilename;
//文件路径
File filePath = new File(couImgPath);
if(!filePath.exists()){
if(!filePath.mkdirs()) {
return Result.fail("文件路径创建失败");
}
}
//删除旧文件
String oldFilename=classRoomService.getById(roomId).getBcImg();
if(!"couBcImg.jpg".equals(oldFilename)){
File oldFile=new File(couImgPath+oldFilename);
if(!oldFile.exists()||!oldFile.delete()){
return Result.fail("原有图片移除失败");
}
}
//上传文件
try {
file.transferTo(new File(couImgPath+newFilename));
} catch (IOException e) {
return Result.succ("背景图片上传失败");
}
//�
没有合适的资源?快使用搜索试试~ 我知道了~
Java项目:基于SpringBoot+Vue+mysql实现的学生成绩管理系统前后端分离(源码+数据库),界面优美,推荐!!!
共352个文件
java:134个
jfif:64个
vue:38个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 44 浏览量
2024-11-12
22:06:29
上传
评论
收藏 9.47MB ZIP 举报
温馨提示
一、项目简介 本项目是一套基于SpringBoot+Vue学生成绩管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行! 二、技术实现 后端:SpringBoot+Mysql+Redis+MyBatis-plus+maven 前端:Vue2.X+Element-UI 数据库:mysql5.5及以上版本 开发工具:jdk8,idea或者eclipse,Navicat 三、系统功能 功能包括: 个人主页 个人信息展示 绩点折线图 绩点排名折线图 成绩查询 个人成绩 绩点排名 分析报告 课堂管理 我的课堂 加入课堂 绑定课程 成绩复核列表 学生信息 宿舍信息 选课管理 专业课程信息 教师信息等等功能 详见 https://flypeppa.blog.csdn.net/article/details/134874815
资源推荐
资源详情
资源评论
收起资源包目录
Java项目:基于SpringBoot+Vue+mysql实现的学生成绩管理系统前后端分离(源码+数据库),界面优美,推荐!!! (352个子文件)
iconfont.css 2KB
.env.development 76B
.editorconfig 243B
.eslintignore 34B
.gitignore 190B
index.html 620B
email.html 398B
favicon.ico 66KB
student.iml 17KB
CourseService.java 13KB
ReviewService.java 10KB
CouStuServiceImpl.java 10KB
AdminService.java 8KB
SqlUtils.java 7KB
ScoreAnalysisService.java 7KB
LoginService.java 5KB
StudentService.java 5KB
CouTeaServiceImpl.java 5KB
JwtFilter.java 5KB
GradeService.java 4KB
ShiroConfig.java 4KB
MajorCourseService.java 4KB
CouService.java 4KB
DelayJobHandler.java 4KB
DelayBucket.java 3KB
TeaRoomController.java 3KB
ShiroRealm.java 3KB
MainUtils.java 3KB
RedisConfig.java 2KB
CodeUtils.java 2KB
DelayTimer.java 2KB
DelayController.java 2KB
adminController.java 2KB
JobStatusUtils.java 2KB
EmailService.java 2KB
JobService.java 2KB
JwtUtils.java 2KB
ReviewGradeController.java 2KB
StUserController.java 2KB
StReviewGrade.java 2KB
StUser.java 2KB
StuRoomController.java 2KB
ReadyQueue.java 1KB
GradeController.java 1KB
TimingCouHandler.java 1KB
StCourse.java 1KB
MajorCourseController.java 1KB
JobPool.java 1KB
CouStuService.java 1KB
ScoreAnalysisController.java 1KB
Grade.java 1KB
StBingCourse.java 1KB
StClassRoom.java 1KB
Job.java 1KB
MvcConfig.java 1KB
VoUser.java 1KB
StudentController.java 988B
StGradeTea.java 985B
StuPoint.java 917B
DelayJob.java 880B
StClass.java 862B
GlobalExceptionHandler.java 857B
StuAvgPoint.java 844B
StDorm.java 842B
StReGradeStu.java 828B
StMajor.java 825B
CouController.java 815B
BeanUtils.java 805B
CouTeaService.java 793B
StuGrade.java 791B
StGradeStu.java 785B
StCourseMapper.java 777B
MybatisPlusApplicationTests.java 758B
StRole.java 746B
ReviewEnum.java 733B
MyBatisPlusConfig.java 729B
Result.java 714B
StGradeTeaMapper.java 676B
CouTypeEnum.java 613B
couEnum.java 565B
JwtMatcher.java 563B
StGradeStuMapper.java 556B
StReviewGradeServiceImpl.java 532B
StReGradeStuServiceImpl.java 525B
StBingCourseServiceImpl.java 525B
StuAvgPointServiceImpl.java 522B
StClassRoomServiceImpl.java 518B
StGradeTeaServiceImpl.java 511B
StGradeStuServiceImpl.java 511B
JobProcess.java 511B
TestController.java 501B
StuPointServiceImpl.java 501B
StuGradeServiceImpl.java 501B
StCourseServiceImpl.java 497B
StMajorServiceImpl.java 490B
StClassServiceImpl.java 490B
StUserServiceImpl.java 483B
StRoleServiceImpl.java 483B
StDormServiceImpl.java 483B
GradeServiceImpl.java 480B
共 352 条
- 1
- 2
- 3
- 4
资源评论
程序猿小D
- 粉丝: 4193
- 资源: 843
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java病毒广播模拟.zip
- Java正在成长但不仅仅是Java Java成长路线,但学到的不仅仅是Java .zip
- amis 是一个低代码前端框架(它使用 JSON 配置来生成页面).zip
- 包括一些学习笔记,案例,后期还会添加java小游戏.zip
- Java实现的包含题库编辑、抽取题组卷、试题分析、在线考试等模块的Web考试系统 .zip
- 北航大一软件工程小学期java小游戏.zip
- 基于Spring MVC MyBatis FreeMarker和Vue.js的在线考试系统前端设计源码
- 初学Java时花费12天做的一款小游戏.zip
- Java字节码工程工具包.zip
- 一个未完成的泥巴游戏尝试.zip大作业实践
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功