diff --git a/src/main/java/com/sztzjy/money_management/controller/GradeController.java b/src/main/java/com/sztzjy/money_management/controller/GradeController.java index 277e887..b22aea1 100644 --- a/src/main/java/com/sztzjy/money_management/controller/GradeController.java +++ b/src/main/java/com/sztzjy/money_management/controller/GradeController.java @@ -8,6 +8,7 @@ import com.nimbusds.jose.shaded.gson.Gson; import com.sztzjy.money_management.annotation.AnonymousAccess; import com.sztzjy.money_management.entity.*; import com.sztzjy.money_management.entity.dto.*; +import com.sztzjy.money_management.entity.vo.ObjCaseScoreVo; import com.sztzjy.money_management.mapper.*; import com.sztzjy.money_management.service.CaseService; import com.sztzjy.money_management.service.ScoreRankService; @@ -17,8 +18,11 @@ import com.sztzjy.money_management.util.excel.FilePortUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.formula.functions.T; +import org.python.core.AstList; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; @@ -90,6 +94,8 @@ public class GradeController { CaseHeritageMapper caseHeritageMapper; @Autowired CaseInvestmentPlanMapper caseInvestmentPlanMapper; + @Autowired + UserInfoMapper userInfoMapper; @AnonymousAccess @ApiOperation("实训演练-学习成绩得分情况展示") @@ -151,6 +157,18 @@ public class GradeController { stuTrainingDto.setResourceLearningScore(studentScoreWeight.getResourceLearningScore().multiply(BigDecimal.valueOf(stuTraining.getResourceLearningCompleteStatus()==null?0:stuTraining.getResourceLearningCompleteStatus()))); stuTrainingDto.setLearningEvalScore(studentScoreWeight.getLearningAssessmentScore().multiply(BigDecimal.valueOf(stuTraining.getLearningEvalCompleteStatus()==null?0:stuTraining.getLearningEvalCompleteStatus()))); stuTrainingDto.setCaseStuScore(studentScoreWeight.getExperimentalTrainingScore().multiply(BigDecimal.valueOf(stuTraining.getExpTrainingCompleteStatus()==null?0:stuTraining.getExpTrainingCompleteStatus()))); + if(stuTrainingDto.getKnowledgeSummaryScore().compareTo(BigDecimal.valueOf(100))>0){ + stuTrainingDto.setKnowledgeSummaryScore(BigDecimal.valueOf(100)); + } + if(stuTrainingDto.getResourceLearningScore().compareTo(BigDecimal.valueOf(100))>0){ + stuTrainingDto.setResourceLearningScore(BigDecimal.valueOf(100)); + } + if(stuTrainingDto.getLearningEvalScore().compareTo(BigDecimal.valueOf(100))>0){ + stuTrainingDto.setLearningEvalScore(BigDecimal.valueOf(100)); + } + if(stuTrainingDto.getCaseStuScore().compareTo(BigDecimal.valueOf(100))>0){ + stuTrainingDto.setCaseStuScore(BigDecimal.valueOf(100)); + } //设置实验报告情况及得分 List trainingReports = trainingReportMapper.selectByExample(trainingReportExample); @@ -536,7 +554,19 @@ public class GradeController { TrainingReportExample trainingReportExample = new TrainingReportExample(); trainingReportExample.createCriteria().andSchoolIdEqualTo(schoolId); List trainingReports = trainingReportMapper.selectByExampleWithBLOBs(trainingReportExample); - PageInfo pageInfo = new PageInfo(trainingReports); + List list = new AstList(); + if (!trainingReports.isEmpty()) { + for (TrainingReport trainingReport : trainingReports) { + TrainingReportDto trainingReportDto = new TrainingReportDto(); + BeanUtils.copyProperties(trainingReport, trainingReportDto); + UserInfo user = userInfoMapper.selectByPrimaryKey(trainingReport.getUserId()); + trainingReportDto.setName(user.getName()); + trainingReportDto.setStudentId(user.getStudentId()); + trainingReportDto.setClassName(user.getClassName()); + list.add(trainingReportDto); + } + } + PageInfo pageInfo = new PageInfo(list); return new ResultEntity>(pageInfo); } @@ -654,14 +684,152 @@ public class GradeController { return new ResultEntity<>(HttpStatus.OK, "案例列表展示成功",synthesisPlanClientList); } - //教师端 综合规划成绩详情查询 - @PostMapping("/getExamPoint") - @ApiOperation("教师端 综合规划成绩详情查询") + //***** map有误 必须根据caseId获取案例题所有type + @GetMapping("/getObjCaseScore") + @ApiOperation("教师端-成绩中心-综合规划-查看详情、评分 客观题标准分、学生得分情况") @AnonymousAccess - private ResultEntity getExamPoint(@RequestParam String caseID) { - return caseService.getExamPoint(caseID,null, "题目答案", "报告"); + public ResultEntity> getObjCaseScore(String userId,String caseId){ + SynthesisPlanScoreExample synthesisPlanScoreExample = new SynthesisPlanScoreExample(); + synthesisPlanScoreExample.createCriteria().andCaseidEqualTo(caseId).andUseridEqualTo(userId); + List synthesisPlanScores = synthesisPlanScoreMapper.selectByExample(synthesisPlanScoreExample); + if(!synthesisPlanScores.isEmpty()){ + Map map=new HashMap<>(); + for (int i = 0; i < synthesisPlanScores.size(); i++) { + SynthesisPlanScore synthesisPlanScore = synthesisPlanScores.get(i); + if(map.containsKey(synthesisPlanScore.getManageMoneyMattersType())){ + ObjCaseScoreVo objCaseScoreVo = map.get(synthesisPlanScore.getManageMoneyMattersType()); + objCaseScoreVo.setStandardScore(objCaseScoreVo.getStandardScore().add(BigDecimal.valueOf(2))); + if("答对".equals(synthesisPlanScore.getStatus())){ + objCaseScoreVo.setStuScore(objCaseScoreVo.getStuScore().add(BigDecimal.valueOf(2))); + } + }else { + ObjCaseScoreVo objCaseScoreVo = new ObjCaseScoreVo(); + objCaseScoreVo.setStandardScore(BigDecimal.valueOf(2)); + if("答对".equals(synthesisPlanScore.getStatus())){ + objCaseScoreVo.setStuScore(BigDecimal.valueOf(2)); + }else { + objCaseScoreVo.setStuScore(BigDecimal.ZERO); + } + map.put(synthesisPlanScore.getManageMoneyMattersType(),objCaseScoreVo); + } + } + + Set keySet = map.keySet(); + for(Object key : keySet ){ + ObjCaseScoreVo objCaseScoreVo = map.get(key); + if("财务分析-财务比例分析".equals(key)){ + CaseFinancialRatiosExample example = new CaseFinancialRatiosExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List caseFinancialRatios = caseFinancialRatiosMapper.selectByExampleWithBLOBs(example); + if (!caseFinancialRatios.isEmpty()){ + objCaseScoreVo.setAnswerOne(caseFinancialRatios.get(0).getAnalysis()); + } + } + if("现金规划".equals(key)){ + CaseCashPlanExample example = new CaseCashPlanExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseCashPlanMapper.selectByExampleWithBLOBs(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(teaObj.get(0).getAnalysis()); + } + } + if("生涯规划-教育规划".equals(key)){ + CaseLifeEducationPlanExample example = new CaseLifeEducationPlanExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseLifeEducationPlanMapper.selectByExampleWithBLOBs(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(String.valueOf(teaObj.get(0).getReturnOnInvestment())); + objCaseScoreVo.setAnswerTwo(teaObj.get(0).getAnalysis()); + } + } + if("生涯规划-消费规划".equals(key)){ + CaseConsumptionPlanExample example = new CaseConsumptionPlanExample(); + example.createCriteria().andCaseIdEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseConsumptionPlanMapper.selectByExampleWithBLOBs(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(String.valueOf(teaObj.get(0).getReturnOnInvestment())); + objCaseScoreVo.setAnswerTwo(teaObj.get(0).getAnalysis()); + } + } + if("生涯规划-创业规划".equals(key)){ + CaseStartAnUndertakingPlanExample example = new CaseStartAnUndertakingPlanExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseStartAnUndertakingPlanMapper.selectByExample(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(String.valueOf(teaObj.get(0).getReturnOnInvestmentRate())); + objCaseScoreVo.setAnswerTwo(teaObj.get(0).getAnalysis()); + } + } + if("生涯规划-退休规划".equals(key)){ + CaseRetirementPlanExample example = new CaseRetirementPlanExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseRetirementPlanMapper.selectByExample(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(String.valueOf(teaObj.get(0).getReturnOnInvestmentRate())); + objCaseScoreVo.setAnswerTwo(teaObj.get(0).getAnalysis()); + } + } + if("生涯规划-保险规划".equals(key)){ + CaseInsurancePlanExample example = new CaseInsurancePlanExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseInsurancePlanMapper.selectByExample(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(teaObj.get(0).getAnalysis()); + } + } + if("投资规划".equals(key)){ + CaseInvestmentPlanExample example = new CaseInvestmentPlanExample(); + example.createCriteria().andCaseIdEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseInvestmentPlanMapper.selectByExample(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(teaObj.get(0).getAnalysis()); + } + } + if("税务筹划".equals(key)){ + CaseTaxPlanExample example = new CaseTaxPlanExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseTaxPlanMapper.selectByExample(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(teaObj.get(0).getAnalysis()); + } + } + if("财产分配".equals(key)){ + CaseDistributionOfPropertyExample example = new CaseDistributionOfPropertyExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseDistributionOfPropertyMapper.selectByExampleWithBLOBs(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(String.valueOf(teaObj.get(0).getSituationAnalysis())); + objCaseScoreVo.setAnswerTwo(teaObj.get(0).getPlanAnalysis()); + } + } + if("财产传承".equals(key)){ + CaseHeritageExample example = new CaseHeritageExample(); + example.createCriteria().andCaseidEqualTo(caseId).andIsAnswerEqualTo("题目答案"); + List teaObj = caseHeritageMapper.selectByExampleWithBLOBs(example); + if (!teaObj.isEmpty()){ + objCaseScoreVo.setAnswerOne(String.valueOf(teaObj.get(0).getFinanceAnalysis())); + objCaseScoreVo.setAnswerTwo(teaObj.get(0).getPlanAnalysis()); + } + } + + } + return new ResultEntity<>(HttpStatus.OK, "学生得分情况返回成功",map); + }else { + return new ResultEntity<>(HttpStatus.OK, "未查询到数据"); + } } + //教师端 综合规划成绩详情查询 +// @PostMapping("/getExamPoint") +// @ApiOperation("教师端 综合规划成绩详情查询") +// @AnonymousAccess +// private ResultEntity> getExamPoint(@RequestParam String caseID,@RequestParam String userId) { +// SynthesisPlanScoreExample synthesisPlanScoreExample = new SynthesisPlanScoreExample(); +// synthesisPlanScoreExample.createCriteria().andUseridEqualTo(userId).andCaseidEqualTo(caseID); +// List synthesisPlanScores = synthesisPlanScoreMapper.selectByExampleWithBLOBs(synthesisPlanScoreExample); +// return new ResultEntity<>(HttpStatus.OK, "综合规划成绩详情查询成功",synthesisPlanScores); +// } + //教师端 综合规划老师评分 @PostMapping("/updateSynthesisPlanMark") @ApiOperation("教师端 综合规划老师评分") diff --git a/src/main/java/com/sztzjy/money_management/controller/TrainingReportController.java b/src/main/java/com/sztzjy/money_management/controller/TrainingReportController.java index ea68dee..16f326c 100644 --- a/src/main/java/com/sztzjy/money_management/controller/TrainingReportController.java +++ b/src/main/java/com/sztzjy/money_management/controller/TrainingReportController.java @@ -5,17 +5,23 @@ import com.sztzjy.money_management.annotation.AnonymousAccess; import com.sztzjy.money_management.entity.StuTrainingWithBLOBs; import com.sztzjy.money_management.entity.TrainingReport; import com.sztzjy.money_management.entity.TrainingReportExample; +import com.sztzjy.money_management.entity.UserInfo; +import com.sztzjy.money_management.entity.dto.TrainingReportDto; import com.sztzjy.money_management.mapper.StuTrainingMapper; import com.sztzjy.money_management.mapper.TrainingReportMapper; +import com.sztzjy.money_management.mapper.UserInfoMapper; import com.sztzjy.money_management.util.ResultEntity; import com.sztzjy.money_management.util.file.IFileUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.python.core.AstList; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -36,15 +42,34 @@ public class TrainingReportController { private String filePath; @Autowired StuTrainingMapper trainingMapper; + @Autowired + UserInfoMapper userInfoMapper; @AnonymousAccess @ApiOperation("学习成绩实验报告展示") @PostMapping("getReportByUserId") - public ResultEntity> getReportByUserId(@RequestParam String userId,@RequestParam String chapterId) { + public ResultEntity> getReportByUserId(@RequestParam String userId, @RequestParam(required = false) String chapterId) { TrainingReportExample trainingReportExample = new TrainingReportExample(); - trainingReportExample.createCriteria().andUserIdEqualTo(userId).andChapterIdEqualTo(chapterId); + if(chapterId==null || chapterId.isEmpty()){ + trainingReportExample.createCriteria().andUserIdEqualTo(userId); + }else { + trainingReportExample.createCriteria().andUserIdEqualTo(userId).andChapterIdEqualTo(chapterId); + + } List trainingReports = trainingReportMapper.selectByExampleWithBLOBs(trainingReportExample); - return new ResultEntity<>(trainingReports); + List list = new AstList(); + if (!trainingReports.isEmpty()) { + for (TrainingReport trainingReport : trainingReports) { + TrainingReportDto trainingReportDto = new TrainingReportDto(); + BeanUtils.copyProperties(trainingReport, trainingReportDto); + UserInfo user = userInfoMapper.selectByPrimaryKey(trainingReport.getUserId()); + trainingReportDto.setName(user.getName()); + trainingReportDto.setStudentId(user.getStudentId()); + trainingReportDto.setClassName(user.getClassName()); + list.add(trainingReportDto); + } + } + return new ResultEntity<>(list); } @AnonymousAccess diff --git a/src/main/java/com/sztzjy/money_management/entity/dto/ObjCaseScoreDto.java b/src/main/java/com/sztzjy/money_management/entity/dto/ObjCaseScoreDto.java new file mode 100644 index 0000000..1f7226a --- /dev/null +++ b/src/main/java/com/sztzjy/money_management/entity/dto/ObjCaseScoreDto.java @@ -0,0 +1,18 @@ +package com.sztzjy.money_management.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ObjCaseScoreDto { + @ApiModelProperty("理财类型") + private String manageMoneyMattersType; + + @ApiModelProperty("标准分") + private BigDecimal StandardScore; + + @ApiModelProperty("学生得分") + private BigDecimal stuScore; +} diff --git a/src/main/java/com/sztzjy/money_management/entity/dto/StuSynthesisPlanScoreDto.java b/src/main/java/com/sztzjy/money_management/entity/dto/StuSynthesisPlanScoreDto.java index 63d6e10..f46a85a 100644 --- a/src/main/java/com/sztzjy/money_management/entity/dto/StuSynthesisPlanScoreDto.java +++ b/src/main/java/com/sztzjy/money_management/entity/dto/StuSynthesisPlanScoreDto.java @@ -28,4 +28,7 @@ public class StuSynthesisPlanScoreDto { @ApiModelProperty("实训得分") private BigDecimal trainingScore; + @ApiModelProperty("caseId") + private String caseId; + } diff --git a/src/main/java/com/sztzjy/money_management/entity/dto/TrainingReportDto.java b/src/main/java/com/sztzjy/money_management/entity/dto/TrainingReportDto.java new file mode 100644 index 0000000..32421ea --- /dev/null +++ b/src/main/java/com/sztzjy/money_management/entity/dto/TrainingReportDto.java @@ -0,0 +1,54 @@ +package com.sztzjy.money_management.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@NoArgsConstructor +public class TrainingReportDto { + @ApiModelProperty("实训报告ID") + private String reportId; + + @ApiModelProperty("章节ID") + private String chapterId; + + @ApiModelProperty("章节名称") + private String chapterName; + + @ApiModelProperty("用户ID") + private String userId; + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("学号") + private String studentId; + + @ApiModelProperty("班级") + private String className; + + @ApiModelProperty("实训报告名称") + private String reportName; + + @ApiModelProperty("实训报告上传时间") + private Date uploadTime; + + @ApiModelProperty("实训报告大小/单位MB") + private Integer reportSize; + + @ApiModelProperty("教师评分") + private BigDecimal teacherScore; + + @ApiModelProperty("文件地址") + private String filePath; + + @ApiModelProperty("学校ID") + private String schoolId; + + @ApiModelProperty("教师评语") + private String teacherComment; +} diff --git a/src/main/java/com/sztzjy/money_management/entity/vo/ObjCaseScoreVo.java b/src/main/java/com/sztzjy/money_management/entity/vo/ObjCaseScoreVo.java new file mode 100644 index 0000000..0f451af --- /dev/null +++ b/src/main/java/com/sztzjy/money_management/entity/vo/ObjCaseScoreVo.java @@ -0,0 +1,21 @@ +package com.sztzjy.money_management.entity.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ObjCaseScoreVo { + @ApiModelProperty("标准分") + private BigDecimal StandardScore; + + @ApiModelProperty("学生得分") + private BigDecimal stuScore; + + @ApiModelProperty("主观题参考答案1") + private String answerOne; + + @ApiModelProperty("主观题参考答案2") + private String answerTwo; +} diff --git a/src/main/java/com/sztzjy/money_management/service/impl/ScoreRankServiceImpl.java b/src/main/java/com/sztzjy/money_management/service/impl/ScoreRankServiceImpl.java index 473d668..c48fcc7 100644 --- a/src/main/java/com/sztzjy/money_management/service/impl/ScoreRankServiceImpl.java +++ b/src/main/java/com/sztzjy/money_management/service/impl/ScoreRankServiceImpl.java @@ -5,6 +5,7 @@ import com.sztzjy.money_management.mapper.*; import com.sztzjy.money_management.service.ScoreRankService; import com.sztzjy.money_management.service.TrainingService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -35,6 +36,7 @@ public class ScoreRankServiceImpl implements ScoreRankService { StuTheoryRecordMapper stuTheoryRecordMapper; @Override + @Scheduled(cron = "0 0 23 * * ?") public Boolean doRank() { //先查询userInfo表 获取所有学校ID List schoolIdList = userInfoMapper.selectAllSchoolIds(); @@ -95,6 +97,9 @@ public class ScoreRankServiceImpl implements ScoreRankService { if (stuTrainings != null) { for (int k = 0; k < stuTrainings.size(); k++) { StuTraining stuTraining = stuTrainings.get(k); + if(stuTraining.getChapterName()==null){ + continue; + } Integer knowledgeStatus = stuTraining.getKnowledgeSummaryCompleteStatus() == null ? 0 : stuTraining.getKnowledgeSummaryCompleteStatus(); Integer resourceStatus = stuTraining.getResourceLearningCompleteStatus() == null ? 0 : stuTraining.getResourceLearningCompleteStatus(); Integer learningEvalCompleteStatus = stuTraining.getLearningEvalCompleteStatus() == null ? 0 : stuTraining.getLearningEvalCompleteStatus(); diff --git a/src/main/java/com/sztzjy/money_management/service/impl/TrainingServiceImpl.java b/src/main/java/com/sztzjy/money_management/service/impl/TrainingServiceImpl.java index 1022204..d9f9e37 100644 --- a/src/main/java/com/sztzjy/money_management/service/impl/TrainingServiceImpl.java +++ b/src/main/java/com/sztzjy/money_management/service/impl/TrainingServiceImpl.java @@ -202,10 +202,14 @@ public class TrainingServiceImpl implements TrainingService { for (int i = 0; i < synthesisPlanClientList.size(); i++) { StuSynthesisPlanScoreDto returnDto = new StuSynthesisPlanScoreDto(); SynthesisPlanClient client = synthesisPlanClientList.get(i); + returnDto.setCaseId(client.getCaseid()); returnDto.setName(client.getName()); returnDto.setUseTime(client.getUseTime()); //获取实训总分 BigDecimal trainingTotalScore=synthesisPlanScoreMapper.selectTotalScoreByUserIdAndCaseId(userId,client.getCaseid()); + if(trainingTotalScore==null){ + trainingTotalScore=BigDecimal.ZERO; + } returnDto.setTrainingTotalScore(trainingTotalScore); returnDto.setScoreWight(zhghWeight); returnDto.setFinishStatus("已完成");