Merge remote-tracking branch 'origin/master'

pull/1/head
xiaoCJ 2 years ago
commit 2eee56acc9

@ -1,8 +1,14 @@
package com.sztzjy.forex.trading_trading.controller;
import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess;
import com.sztzjy.forex.trading_trading.annotation.Permission;
import com.sztzjy.forex.trading_trading.annotation.aspect.PermissionType;
import com.sztzjy.forex.trading_trading.config.security.JwtUser;
import com.sztzjy.forex.trading_trading.config.security.TokenProvider;
import com.sztzjy.forex.trading_trading.entity.Member;
import com.sztzjy.forex.trading_trading.entity.Report;
import com.sztzjy.forex.trading_trading.entity.ReportWithBLOBs;
import com.sztzjy.forex.trading_trading.service.MemberService;
import com.sztzjy.forex.trading_trading.service.ReportService;
import com.sztzjy.forex.trading_trading.util.ResultEntity;
import io.swagger.annotations.Api;
@ -21,15 +27,19 @@ import java.io.IOException;
public class ReportController {
@Autowired
private ReportService reportService;
@Autowired
private MemberService memberService;
@ApiOperation("学生端--上传实训报告")
@PostMapping("/uploadReport")
public ResultEntity<String> uploadReport(@RequestParam("file") MultipartFile file,
public ResultEntity uploadReport(@RequestParam("file")@RequestPart(name = "file") MultipartFile file,
@RequestParam String memberId,
@RequestParam String fileName,
@RequestParam String tariningId) throws IOException {
return new ResultEntity<>(reportService.uploadReport(file.getInputStream(),fileName,memberId,tariningId));
@RequestParam String fileName) {
Member member = memberService.selectByPrimaryKey(memberId);
reportService.uploadReport(file, fileName, member);
return new ResultEntity(HttpStatus.OK);
}
@ApiOperation("学生端--提交实训报告")
@PostMapping("/submitReport")
public ResultEntity<String> submitReport(@RequestBody ReportWithBLOBs report) {
return new ResultEntity<>(reportService.submitReport(report));
@ -45,9 +55,19 @@ public class ReportController {
return new ResultEntity(HttpStatus.OK);
}
@AnonymousAccess
@ApiOperation("教师端--实训报告下载")
@GetMapping("download")
public void download(@RequestParam String id, HttpServletResponse response) {
reportService.download(id,response);
public void download(@RequestParam String id, String TOKEN,HttpServletResponse response) {
TokenProvider.getJWTUser(TOKEN);
reportService.download(id, response);
}
@ApiOperation("教师端--获取学生上传的报告")
@GetMapping("getReportByMemberId")
public ResultEntity<Report> getReportByMemberId(@RequestParam String memberId
) {
return new ResultEntity<>(reportService.findByMemberId(memberId));
}
}

@ -269,8 +269,11 @@ public class TrainingController {
@Permission(codes = PermissionType.TRAINING_MANAGEMENT_SEARCH)
@ApiOperation("根据班级id获取实训列表")
@GetMapping("/findTrainingListByClassId")
public ResultEntity<List<Map<String,Object>>> findTrainingListByClassId(@ApiParam("实训记录id") @RequestParam String classId) {
Assert.hasText(classId,"班级id不能为空");
return new ResultEntity<List<Map<String,Object>>>(HttpStatus.OK, memberService.selectTrainingListByClassId(classId));
public ResultEntity<List<Map<String,Object>>> findTrainingListByClassId(@ApiParam("实训记录id") String classId) {
if(!StringUtils.hasText(classId)){
JwtUser user = TokenProvider.getJWTUser(request);
return new ResultEntity<>(HttpStatus.OK, memberService.selectAllTrainingList(user.getSchoolId()));
}
return new ResultEntity<>(HttpStatus.OK, memberService.selectTrainingListByClassId(classId));
}
}

@ -35,4 +35,7 @@ public class GradeWeightDetailBO {
this.score = score;
this.level = level;
}
public GradeWeightDetailBO() {
}
}

@ -1,6 +1,7 @@
package com.sztzjy.forex.trading_trading.entity;
import cn.hutool.core.util.IdUtil;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.Column;
@ -30,6 +31,7 @@ public class Report {
*
* @mbg.generated Thu Jul 20 13:28:37 CST 2023
*/
private String memberId;
/**
@ -39,6 +41,7 @@ public class Report {
*
* @mbg.generated Thu Jul 20 13:28:37 CST 2023
*/
@ApiModelProperty("实验报告文件路径")
private String filePath;
/**
@ -48,6 +51,7 @@ public class Report {
*
* @mbg.generated Thu Jul 20 13:28:37 CST 2023
*/
@ApiModelProperty("实验报告文件名")
private String fileName;
/**

@ -139,8 +139,12 @@ public interface MemberMapper {
List<Map<String, Object>> selectClassListByTrainingId(@Param("trainingId") String trainingId);
@Select("SELECT class_id,class_grade FROM sys_member where " +
"classId =#{classId} " +
"GROUP BY class_grade,class_id")
List<Map<String, Object>> selectTrainingListByClassId(@Param("classId") String classId);
@Select("SELECT training_id,training_name FROM sys_member where " +
"class_id =#{classId} " +
"GROUP BY training_id,training_name")
List<Map<String, Object>> selectTrainingListByClassId(@Param("classId") Integer classId);
@Select("select training_id,training_name from sys_member where school_id=#{schoolId} " +
"group by training_id,training_name")
List<Map<String, Object>> selectAllTrainingList(int schoolId);
}

@ -2,6 +2,7 @@ package com.sztzjy.forex.trading_trading.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sztzjy.forex.trading_trading.config.security.JwtUser;
import com.sztzjy.forex.trading_trading.dto.MemberVO;
import com.sztzjy.forex.trading_trading.entity.Member;
import com.sztzjy.forex.trading_trading.entity.MemberExample;
@ -114,7 +115,7 @@ public class MemberService {
MemberExample example = new MemberExample();
MemberExample.Criteria criteria = example.createCriteria();
criteria.andTrainingIdEqualTo(trainingId);
example.setOrderByClause("stuRank ASC");
example.setOrderByClause("stu_rank ASC");
PageHelper.startPage(index, size);
return new PageInfo<>(memberMapper.selectByExample(example));
}
@ -134,7 +135,13 @@ public class MemberService {
criteria.andTrainingNameEqualTo(trainingName);
}
if (markStatus != null) {
//TODO 待确定评分状态
//未评分
if (markStatus == 0) {
criteria.andReportScoreIsNull();
} else {
//已评分
criteria.andReportScoreIsNotNull();
}
}
if (StringUtils.hasText(keyword)) {
criteria.andNameLike("%" + keyword + "%");
@ -185,6 +192,10 @@ public class MemberService {
}
public List<Map<String, Object>> selectTrainingListByClassId(String trainingId) {
return memberMapper.selectTrainingListByClassId(trainingId);
return memberMapper.selectTrainingListByClassId(Integer.valueOf(trainingId));
}
public List<Map<String,Object>> selectAllTrainingList(int schoolId){
return memberMapper.selectAllTrainingList(schoolId);
}
}

@ -1,5 +1,6 @@
package com.sztzjy.forex.trading_trading.service;
import com.sztzjy.forex.trading_trading.config.security.JwtUser;
import com.sztzjy.forex.trading_trading.entity.*;
import com.sztzjy.forex.trading_trading.mappers.MemberMapper;
import com.sztzjy.forex.trading_trading.mappers.ReportMapper;
@ -7,6 +8,8 @@ import com.sztzjy.forex.trading_trading.util.file.IFileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
@ -52,7 +55,7 @@ public class ReportService {
}
// 指定服务器目录
public String uploadReport(InputStream fileInputStream, String fileName, String memberId,String trainingId) {
public String uploadReport(InputStream fileInputStream, String fileName, String memberId, String trainingId) {
MemberExample memberExample = new MemberExample();
memberExample.createCriteria().andMemberIdEqualTo(memberId).andTrainingIdEqualTo(trainingId);
List<Member> members = memberMapper.selectByExample(memberExample);
@ -61,28 +64,51 @@ public class ReportService {
reportExample.createCriteria().andMemberIdEqualTo(memberId).andTrainingIdEqualTo(trainingId);
Double reportScore = member.getReportScore();
List<ReportWithBLOBs> reportWithBLOBs = reportsMapper.selectByExampleWithBLOBs(reportExample);
if (reportScore == null) {
String filePath = fileUtil.upload(fileName, fileInputStream);
if (!reportWithBLOBs.isEmpty()) {
ReportWithBLOBs resultReport = reportWithBLOBs.get(0);
resultReport.setFilePath(filePath);
resultReport.setFileName(fileName);
resultReport.setTrainingId(trainingId);
reportsMapper.updateByExampleSelective(resultReport, reportExample);
} else {
ReportWithBLOBs report = new ReportWithBLOBs();
report.setFileName(filePath);
report.setFilePath(fileName);
report.setMemberId(memberId);
report.setTrainingId(trainingId);
reportsMapper.insert(report);
}
return "上传成功";
if (reportScore == null) {
String filePath = fileUtil.upload(fileName, fileInputStream);
if (!reportWithBLOBs.isEmpty()) {
ReportWithBLOBs resultReport = reportWithBLOBs.get(0);
resultReport.setFilePath(filePath);
resultReport.setFileName(fileName);
resultReport.setTrainingId(trainingId);
reportsMapper.updateByExampleSelective(resultReport, reportExample);
} else {
ReportWithBLOBs report = new ReportWithBLOBs();
report.setFileName(filePath);
report.setFilePath(fileName);
report.setMemberId(memberId);
report.setTrainingId(trainingId);
reportsMapper.insert(report);
}
return "上传成功";
}
return "老师已评分,禁止上传";
}
public void uploadReport(MultipartFile file, String fileName, Member member) {
String filePath = fileUtil.upload(file);
ReportExample reportExample = new ReportExample();
reportExample.createCriteria().andMemberIdEqualTo(member.getMemberId());
List<ReportWithBLOBs> reports = reportsMapper.selectByExampleWithBLOBs(reportExample);
if(reports!=null&&reports.size()>0){
ReportWithBLOBs report = reports.get(0);
if(StringUtils.hasText(report.getFilePath())){
fileUtil.remove(report.getFilePath());
}
report.setFilePath(filePath);
report.setFileName(fileName);
reportsMapper.updateByExample(report,reportExample);
}else{
ReportWithBLOBs report = new ReportWithBLOBs();
report.setFileName(fileName);
report.setFilePath(filePath);
report.setMemberId(member.getMemberId());
report.setTrainingId(member.getTrainingId());
reportsMapper.insert(report);
}
}
// // 指定服务器目录
// public String uploadReport(InputStream fileInputStream, String fileName, String memberId,String trainingId) {
@ -128,22 +154,32 @@ public class ReportService {
// }
public void review(String reportId,Double score){
public void review(String reportId, Double score) {
Report report = reportsMapper.selectByPrimaryKey(reportId);
Assert.isTrue(report!=null&&report.getMemberId()!=null,"报告不存在");
Assert.isTrue(report != null && report.getMemberId() != null, "报告不存在");
Member member = memberMapper.selectByPrimaryKey(report.getMemberId());
Assert.isTrue(member!=null&&member.getTrainingId()!=null,"数据异常");
Assert.isTrue(member != null && member.getTrainingId() != null, "数据异常");
Training training = trainingService.findById(member.getTrainingId());
Assert.isTrue(training!=null&&training.getWeightId()!=null,"数据异常");
member.setReportScore(gradeWeightService.findReportScore(training.getWeightId(),score));
Assert.isTrue(training != null && training.getWeightId() != null, "数据异常");
member.setReportScore(gradeWeightService.findReportScore(training.getWeightId(), score));
memberMapper.updateByPrimaryKey(member);
}
public void download(String id, HttpServletResponse response){
public void download(String id, HttpServletResponse response) {
Report report = reportsMapper.selectByPrimaryKey(id);
Assert.isTrue(report!=null&&report.getFilePath()!=null,"报告不存在");
fileUtil.download(response,report.getFileName(),report.getFilePath());
Assert.isTrue(report != null && report.getFilePath() != null, "报告不存在");
fileUtil.download(response, report.getFileName(), report.getFilePath());
}
public Report findByMemberId(String memberId) {
ReportExample reportExample = new ReportExample();
ReportExample.Criteria criteria = reportExample.createCriteria();
criteria.andMemberIdEqualTo(memberId);
List<Report> reports = reportsMapper.selectByExample(reportExample);
if (reports != null && reports.size() > 0) {
return reports.get(0);
}
return null;
}
}

@ -65,7 +65,7 @@ public class LocalFileUtil implements IFileUtil{
public boolean remove(String path) {
if (!StringUtils.hasText(path)) return false;
File file = new File(getFullPath(path));
Assert.isTrue(file.exists(), "文件已被删除或不存在该文件");
if (!file.exists()) return false;
return file.delete();
}

Loading…
Cancel
Save