|
|
@@ -6,10 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
+import com.xjrsoft.common.enums.EvaluateTypeEnum;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
-import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
|
|
|
-import com.xjrsoft.module.evaluate.dto.EvaluateManageScoreDto;
|
|
|
-import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
|
|
|
+import com.xjrsoft.module.evaluate.dto.*;
|
|
|
import com.xjrsoft.module.evaluate.entity.*;
|
|
|
import com.xjrsoft.module.evaluate.mapper.*;
|
|
|
import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
|
|
|
@@ -18,7 +17,15 @@ import lombok.AllArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.*;
|
|
|
+import javax.script.ScriptEngine;
|
|
|
+import javax.script.ScriptEngineManager;
|
|
|
+import javax.script.ScriptException;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -100,52 +107,61 @@ public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManage
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ public Page<MobileIndexPageVo> getMobileIndexPage(Page<EvaluateWritePageDto> page, MobileIndexPageDto dto) {
|
|
|
+ Page<MobileIndexPageVo> mobileIndexPage = evaluateManageMapper.getMobileIndexPage(page, dto);
|
|
|
+ return mobileIndexPage;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
- public Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto) {
|
|
|
- Page<EvaluateWritePageVo> mobilePage = evaluateManageMapper.getMobilePage(page, dto);
|
|
|
- //获取所有评价管理下的所有的已评对象的得分
|
|
|
- Map<String, Map<String, Integer>> scoreByManageIdAndObject = new HashMap<>();
|
|
|
- if(dto != null && dto.getStatus() != null && dto.getStatus() == 1){
|
|
|
- List<Long> evaluateManageIdList = new ArrayList<>();
|
|
|
+ public Page<MobileResultPageVo> getMobileResultPage(Page<EvaluateWritePageDto> page, MobileResultPageDto dto){
|
|
|
+ Page<MobileResultPageVo> mobileResultPage = evaluateManageMapper.getMobileResultPage(page, dto);
|
|
|
+ if(mobileResultPage.getRecords() != null){
|
|
|
+ //获取所有的记录的总分
|
|
|
+ //评价对象的id集合
|
|
|
List<Long> evaluateObjectIdList = new ArrayList<>();
|
|
|
- for (EvaluateWritePageVo record : mobilePage.getRecords()) {
|
|
|
- evaluateManageIdList.add(Long.parseLong(record.getEvaluateManageId()));
|
|
|
- evaluateObjectIdList.add(Long.parseLong(record.getEvaluateObjectId()));
|
|
|
+ for (MobileResultPageVo mobileResultPageVo : mobileResultPage.getRecords()) {
|
|
|
+ evaluateObjectIdList.add(Long.parseLong(mobileResultPageVo.getEvaluateObjectId()));
|
|
|
}
|
|
|
+ //获取当前用户,当前评价管理下的所有被评对象的总分(学生评价班主任)或者是综合指数(教官评价班级)
|
|
|
+ List<EvaluateManageScoreVo> evaluateManageScoreVoList = evaluateManageMapper.getScoreList(new EvaluateManageScoreDto(){{
|
|
|
+ setEvaluateManageId(dto.getEvaluateManageId());
|
|
|
+ setEvaluateType(dto.getEvaluateType());
|
|
|
+ setEvaluateObjectIdList(evaluateObjectIdList);
|
|
|
+ setUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ }});
|
|
|
+ Map<String, EvaluateManageScoreVo> scoreByObjectId = evaluateManageScoreVoList.stream()
|
|
|
+ .collect(Collectors.toMap(EvaluateManageScoreVo::getEvaluateObjectId, Function.identity()));
|
|
|
+
|
|
|
+ //将对应的分数给到对应的人
|
|
|
+ for (MobileResultPageVo mobileResultPageVo : mobileResultPage.getRecords()) {
|
|
|
+ //评价类型是学生评价班主任
|
|
|
+ if(mobileResultPageVo.getEvaluateType().equals(EvaluateTypeEnum.STUDENT_EVALUATE_HEAD_TEACHER.getCode())){
|
|
|
+ mobileResultPageVo.setTotalScore((double)scoreByObjectId.get(mobileResultPageVo.getEvaluateObjectId()).getTotalScore());
|
|
|
+ }
|
|
|
+ //评价类型是教官评级班级
|
|
|
+ if(mobileResultPageVo.getEvaluateType().equals(EvaluateTypeEnum.DRILLMASTER_EVALUATE_CLASS.getCode())){
|
|
|
+ ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
|
|
|
+ String zonghezhishu = "totalScore/itemCount";
|
|
|
+ int totalScore = scoreByObjectId.get(mobileResultPageVo.getEvaluateObjectId()).getTotalScore();
|
|
|
+ int itemCount = scoreByObjectId.get(mobileResultPageVo.getEvaluateObjectId()).getItemCount();
|
|
|
+ double res = 0;
|
|
|
+ String newStr1 = zonghezhishu.replace("totalScore", ""+totalScore);
|
|
|
+ String newStr2 = newStr1.replace("itemCount", ""+itemCount);
|
|
|
+ try{
|
|
|
+ res = (double)engine.eval(newStr2);
|
|
|
+ }catch (ScriptException s){
|
|
|
|
|
|
- if(evaluateManageIdList.size() > 0 && evaluateObjectIdList.size() > 0){
|
|
|
- List<EvaluateManageScoreVo> scoreList = evaluateManageMapper.getScoreList(new EvaluateManageScoreDto(){{
|
|
|
- setEvaluateManageIdList(evaluateManageIdList);
|
|
|
- setEvaluateObjectIdList(evaluateObjectIdList);
|
|
|
- setUserId(StpUtil.getLoginIdAsLong());
|
|
|
- }});
|
|
|
-
|
|
|
- //将scoreList解析成map
|
|
|
- Map<String, List<EvaluateManageScoreVo>> scoreByManageId = scoreList.stream()
|
|
|
- .collect(Collectors.groupingBy(EvaluateManageScoreVo::getEvaluateManageId));
|
|
|
-
|
|
|
- for (Map.Entry<String, List<EvaluateManageScoreVo>> entry : scoreByManageId.entrySet()) {
|
|
|
- Map<String, Integer> scoreByObject = new HashMap<>();
|
|
|
- for (EvaluateManageScoreVo evaluateManageScoreVo : entry.getValue()) {
|
|
|
- scoreByObject.put(evaluateManageScoreVo.getEvaluateObjectId(), evaluateManageScoreVo.getScore());
|
|
|
}
|
|
|
- scoreByManageIdAndObject.put(entry.getKey(), scoreByObject);
|
|
|
+ // 创建一个DecimalFormat对象,指定小数位数为两位
|
|
|
+ DecimalFormat decimalFormat = new DecimalFormat("#.00");
|
|
|
+ // 格式化double值为字符串
|
|
|
+ String formattedNumber = decimalFormat.format(res);
|
|
|
+ mobileResultPageVo.setTotalScore(Double.valueOf(formattedNumber));
|
|
|
}
|
|
|
+ mobileResultPageVo.setItemCount(scoreByObjectId.get(mobileResultPageVo.getEvaluateObjectId()).getItemCount());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if(scoreByManageIdAndObject.size() > 0){
|
|
|
- for (EvaluateWritePageVo record : mobilePage.getRecords()) {
|
|
|
- record.setTotalScore(scoreByManageIdAndObject.get(record.getEvaluateManageId()).get(record.getEvaluateObjectId()));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return mobilePage;
|
|
|
- }
|
|
|
-
|
|
|
- public Page<EvaluateWritePageVo> getMobileIndexPage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto) {
|
|
|
- Page<EvaluateWritePageVo> mobilePage = evaluateManageMapper.getMobilePage(page, dto);
|
|
|
- return mobilePage;
|
|
|
+ return mobileResultPage;
|
|
|
}
|
|
|
|
|
|
@Override
|