CompetencyTree.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.seecoder.dataanalysis.data.entity.competency;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import lombok.experimental.Accessors;
  6. import org.springframework.data.annotation.Id;
  7. import org.springframework.data.mongodb.core.mapping.Document;
  8. import org.springframework.data.mongodb.core.mapping.Field;
  9. import java.util.ArrayList;
  10. import java.util.Arrays;
  11. import java.util.List;
  12. @Document(collection = "competency_tree")
  13. @AllArgsConstructor
  14. @Accessors(chain = true)
  15. @Data
  16. public class CompetencyTree {
  17. /**
  18. * 学生ID,一个学生只能有一棵能力树
  19. **/
  20. @Id
  21. @Field("user_id")
  22. private Integer userId;
  23. /**
  24. * 能力树的总分
  25. */
  26. @Field("tree_score")
  27. private Double treeScore;
  28. /**
  29. * 一级子能力树
  30. **/
  31. @Field("sub_competency_tree")
  32. private List<KSDScore> subCompetencyTree;
  33. public CompetencyTree(){
  34. this.subCompetencyTree = new ArrayList<>();
  35. }
  36. public CompetencyTree(Integer userId){
  37. this.userId = userId;
  38. this.subCompetencyTree = new ArrayList<>();
  39. }
  40. /**
  41. * 生成初始化好的能力树,用于可视化结果返回
  42. * @return CompetencyTree 初始化好的能力树
  43. */
  44. public CompetencyTree(Competencies competencies){
  45. CompetencyTree competencyTree = new CompetencyTree();
  46. List<String> comName = competencies.getCompetency();
  47. List<String[]> subComName = competencies.getSub_competency();
  48. List<String> disName = competencies.getDispositions();
  49. this.userId = -1;
  50. this.treeScore = 0.0;
  51. // competencyTree.setUserId(-1);
  52. // competencyTree.setTreeScore(0.0);
  53. List<KSDScore> ksdScoreList = new ArrayList<>();
  54. //为每个大分支新建KSDScore
  55. for(int i=0;i<comName.size();i++){
  56. KSDScore ksdScore = new KSDScore();
  57. String com = comName.get(i);
  58. String[] subs = subComName.get(i);
  59. ksdScore.setCompetency(com);
  60. ksdScore.setTotalScore(0.0);
  61. List<KSScore> ksScoreList = new ArrayList<>();
  62. //为每个小分支新建KSScore
  63. for(int j=0;j<subs.length;j++){
  64. KSScore ksScore = new KSScore();
  65. String sub = subs[j];
  66. ksScore.setKnowledge(sub);
  67. Double[] doubles = new Double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
  68. ksScore.setSkillsAndScore(Arrays.asList(doubles));
  69. ksScoreList.add(ksScore);
  70. }
  71. //为每个大分支新建DScore
  72. List<DScore> dScoreList = new ArrayList<>();
  73. for(int j=0;j<disName.size();j++){
  74. DScore dScore = new DScore();
  75. dScore.setName(disName.get(j));
  76. dScore.setScore(0.0);
  77. dScoreList.add(dScore);
  78. }
  79. ksdScore.setKSScore(ksScoreList);
  80. ksdScore.setDScore(dScoreList);
  81. ksdScoreList.add(ksdScore);
  82. }
  83. // competencyTree.setSubCompetencyTree(ksdScoreList);
  84. this.subCompetencyTree = ksdScoreList;
  85. }
  86. public void display(){
  87. System.out.println(this.userId);
  88. System.out.println(this.treeScore);
  89. for(KSDScore ksdScore : this.subCompetencyTree){
  90. System.out.println(ksdScore.getCompetency());
  91. System.out.println(ksdScore.getTotalScore());
  92. for(KSScore ksScore : ksdScore.getKSScore()){
  93. System.out.print(ksScore.getKnowledge()+" ");
  94. }
  95. System.out.println();
  96. for(DScore dScore : ksdScore.getDScore()){
  97. System.out.print(dScore.getName()+" ");
  98. System.out.println(dScore.getScore());
  99. }
  100. }
  101. }
  102. }