|
|
@@ -1,10 +1,47 @@
|
|
|
package cn.seecoder.data.server.service.Impl;
|
|
|
|
|
|
+import cn.seecoder.bok.client.SeecoderBokClient;
|
|
|
+import cn.seecoder.bok.common.vo.QuestionVO;
|
|
|
import cn.seecoder.data.server.domain.GeneralRecordDao;
|
|
|
+import cn.seecoder.data.server.repository.GeneralRecordRepository;
|
|
|
import cn.seecoder.data.server.service.EvaluateService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
@Service
|
|
|
public class EvaluateServiceImpl implements EvaluateService {
|
|
|
- private GeneralRecordDao evaluatedao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private GeneralRecordRepository generalRecordRepository;
|
|
|
+
|
|
|
+ public EvaluateServiceImpl(GeneralRecordRepository generalRecordRepository){
|
|
|
+ this.generalRecordRepository = generalRecordRepository;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public double getEvaluateScore(int userId) {
|
|
|
+ SeecoderBokClient seecoderBokClient = new SeecoderBokClient("http://bok.seec.seecoder.cn");
|
|
|
+ List<GeneralRecordDao> generalRecordDaoList = generalRecordRepository.getByUserIdAndDataSource(userId,"evaluate");
|
|
|
+ ArrayList<String> questionIds = new ArrayList<String>();
|
|
|
+ for(int i=0;i<generalRecordDaoList.size();i++)
|
|
|
+ questionIds.add(generalRecordDaoList.get(i).getQuestionId());
|
|
|
+ double scoreTotal = 0;
|
|
|
+ double score = 0;
|
|
|
+ double[] weight = {1,1,1,1.05,1.1};
|
|
|
+ List<QuestionVO> questionVOS = seecoderBokClient.getQuestionListByIds(questionIds);
|
|
|
+ for(int i=0;i<generalRecordDaoList.size();i++){
|
|
|
+ QuestionVO questionVO = questionVOS.get(i);
|
|
|
+ GeneralRecordDao generalRecordDao = generalRecordDaoList.get(i);
|
|
|
+ scoreTotal = scoreTotal + generalRecordDao.getScoreTotal();
|
|
|
+ if(questionVO.getWeight()==null||questionVO.getWeight()==0)
|
|
|
+ score = score + generalRecordDao.getScore();
|
|
|
+ else
|
|
|
+ score = score + generalRecordDao.getScore() * weight[questionVO.getWeight()];
|
|
|
+ }
|
|
|
+ double ans = score/scoreTotal*100;
|
|
|
+ return ans;
|
|
|
+ }
|
|
|
}
|