diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/ReportController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/ReportController.java index 4b19c2d..3f7f2ca 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/ReportController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/ReportController.java @@ -1,18 +1,21 @@ package com.sztzjy.forex.trading_trading.controller; +import com.github.pagehelper.PageInfo; 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.ReportDto; 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; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @@ -32,19 +35,30 @@ public class ReportController { @ApiOperation("学生端--上传实训报告") @PostMapping("/uploadReport") - public ResultEntity uploadReport(@RequestParam("file")@RequestPart(name = "file") MultipartFile file, - @RequestParam String memberId, - @RequestParam String fileName) { + public ResultEntity uploadReport(@RequestParam("file") @RequestPart(name = "file") MultipartFile file, + @RequestParam String memberId, + @RequestParam String fileName) { Member member = memberService.selectByPrimaryKey(memberId); reportService.uploadReport(file, fileName, member); return new ResultEntity(HttpStatus.OK); } + @ApiOperation("学生端--提交实训报告") @PostMapping("/submitReport") public ResultEntity submitReport(@RequestBody ReportWithBLOBs report) { return new ResultEntity<>(reportService.submitReport(report)); } + @ApiOperation("学生端--侧边栏实验报告列表") + @GetMapping("/getReportDtos") + public ResultEntity> getReportDtos(@ApiParam("学号") @RequestParam String studentNumber, + @ApiParam("学校") @RequestParam Integer schoolId, + @ApiParam("查询关键字") @RequestParam (required = false)String keyWord, + @ApiParam("首页页码") @RequestParam Integer index, + @ApiParam("页面条数") @RequestParam Integer size) { + return new ResultEntity<>(reportService.gerReportDtos(studentNumber, schoolId, keyWord, index, size)); + } + @ApiOperation("教师端--对实训报告评分") @PostMapping("review") @@ -58,7 +72,7 @@ public class ReportController { @AnonymousAccess @ApiOperation("教师端--实训报告下载") @GetMapping("download") - public void download(@RequestParam String id, String TOKEN,HttpServletResponse response) { + public void download(@RequestParam String id, String TOKEN, HttpServletResponse response) { TokenProvider.getJWTUser(TOKEN); reportService.download(id, response); } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/entity/ReportDto.java b/src/main/java/com/sztzjy/forex/trading_trading/entity/ReportDto.java new file mode 100644 index 0000000..c93c52e --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/entity/ReportDto.java @@ -0,0 +1,26 @@ +package com.sztzjy.forex.trading_trading.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ReportDto { + @ApiModelProperty("实验报告文件名") + private String fileName; + @ApiModelProperty("报告成绩") + private Double reportScore; + @ApiModelProperty("实训名称") + private String trainingName; + @ApiModelProperty("实训开始日期") + private Date startTime; + @ApiModelProperty("实训结束日期") + private Date endTime; +// @ApiModelProperty("实验报告ID") +// private String reportID; +} diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java index 947e5f6..33e3686 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/ReportService.java @@ -1,9 +1,11 @@ package com.sztzjy.forex.trading_trading.service; -import com.sztzjy.forex.trading_trading.config.security.JwtUser; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.sztzjy.forex.trading_trading.entity.*; import com.sztzjy.forex.trading_trading.mappers.MemberMapper; import com.sztzjy.forex.trading_trading.mappers.ReportMapper; +import com.sztzjy.forex.trading_trading.mappers.TrainingMapper; import com.sztzjy.forex.trading_trading.util.file.IFileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; +import java.util.ArrayList; import java.util.List; @Service @@ -27,8 +30,8 @@ public class ReportService { private TrainingService trainingService; @Autowired private IFileUtil fileUtil; - - private static final String SERVER_DIRECTORY = "D:\\waihui\\"; + @Autowired + private TrainingMapper trainingMapper; //提交实训任务报告给老师端展示 public String submitReport(ReportWithBLOBs report) { @@ -91,15 +94,15 @@ public class ReportService { ReportExample reportExample = new ReportExample(); reportExample.createCriteria().andMemberIdEqualTo(member.getMemberId()); List reports = reportsMapper.selectByExampleWithBLOBs(reportExample); - if(reports!=null&&reports.size()>0){ + if (reports != null && reports.size() > 0) { ReportWithBLOBs report = reports.get(0); - if(StringUtils.hasText(report.getFilePath())){ + if (StringUtils.hasText(report.getFilePath())) { fileUtil.remove(report.getFilePath()); } report.setFilePath(filePath); report.setFileName(fileName); - reportsMapper.updateByExample(report,reportExample); - }else{ + reportsMapper.updateByExample(report, reportExample); + } else { ReportWithBLOBs report = new ReportWithBLOBs(); report.setFileName(fileName); report.setFilePath(filePath); @@ -109,6 +112,54 @@ public class ReportService { } } + public PageInfo gerReportDtos(String studentNumber, Integer schoolId, String keyWord, Integer index, Integer size) { + PageHelper.startPage(index, size); + List reportDtos = new ArrayList<>(); + List reportDtosByKeyWord = new ArrayList<>(); + MemberExample memberExample = new MemberExample(); + memberExample.createCriteria().andSchoolIdEqualTo(schoolId).andStudentNumberEqualTo(studentNumber); + List members = memberMapper.selectByExample(memberExample); + for (Member member : members) { + String trainingId = member.getTrainingId(); + TrainingExample trainingExample = new TrainingExample(); + TrainingExample.Criteria criteria = trainingExample.createCriteria(); + criteria.andStatusEqualTo("FINISHED").andTrainingIdEqualTo(trainingId); + List trainingList1 = trainingMapper.selectByExample(trainingExample); + for (Training training : trainingList1) { + ReportExample reportExample = new ReportExample(); + reportExample.createCriteria().andTrainingIdEqualTo(trainingId).andMemberIdEqualTo(member.getMemberId()); + List reports = reportsMapper.selectByExample(reportExample); + ReportDto reportDto = new ReportDto(); + if (reports.isEmpty()) { + reportDto.setFileName(null); + } + for (Report report : reports) { + reportDto.setFileName(report.getFileName()); + } + Double reportScore = member.getReportScore(); + if (keyWord != null && !keyWord.isEmpty()) { + criteria.andTrainingNameLike("%" + keyWord + "%"); + List trainingList = trainingMapper.selectByExample(trainingExample); + for (Training training1 : trainingList) { + reportDto.setTrainingName(training1.getTrainingName()); + reportDto.setStartTime(training1.getStartTime()); + reportDto.setEndTime(training1.getEndTime()); + reportDto.setReportScore(reportScore); + reportDtosByKeyWord.add(reportDto); + } + return new PageInfo<>(reportDtosByKeyWord); + } + reportDto.setTrainingName(training.getTrainingName()); + reportDto.setStartTime(training.getStartTime()); + reportDto.setEndTime(training.getEndTime()); + reportDto.setReportScore(reportScore); + reportDtos.add(reportDto); + } + } + return new PageInfo<>(reportDtos); + } + + // // 指定服务器目录 // public String uploadReport(InputStream fileInputStream, String fileName, String memberId,String trainingId) { @@ -184,4 +235,5 @@ public class ReportService { } return null; } + } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java index 8c59790..c93fdb6 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/WainingService.java @@ -74,7 +74,7 @@ public class WainingService { Double netValue = initialCapital + cumulativeProfitLoss + positionProfitLoss; //净值 = 持仓盈亏 + 累计盈亏 + 期初资金 double marginLevel; if (marginUsed != null && marginUsed != 0) { - marginLevel = (netValue / marginUsed) * 100; //保证金水平 = 净值/已用保证金 (%) + marginLevel = netValue / marginUsed; //保证金水平 = 净值/已用保证金 (%) } else { marginLevel = 0.0; // 或者可以根据你的需求设置一个默认值 } @@ -114,7 +114,7 @@ public class WainingService { Double netValue = initialCapital + cumulativeProfitLoss + positionProfitLoss; //净值 = 持仓盈亏 + 累计盈亏 + 期初资金 double marginLevel; if (marginUsed != null && marginUsed != 0) { - marginLevel = (netValue / marginUsed) * 100; //保证金水平 = 净值/已用保证金 (%) + marginLevel = netValue / marginUsed; //保证金水平 = 净值/已用保证金 (%) } else { marginLevel = 0.0; // 或者可以根据你的需求设置一个默认值 }