PrimaryElective.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. using System;
  2. using System.Collections.Generic;
  3. namespace mxdemo.Mind
  4. {
  5. #region model
  6. public class ElectiveSetting
  7. {
  8. //"selectResult": {
  9. // "params": {},
  10. // "roundId": 8,
  11. // "schoolId": 1,
  12. // "year": 2021,
  13. // "name": "第三次",
  14. // "beginTime": "2022-02-16",
  15. // "endTime": "2022-02-17",
  16. // "groupIds": "1,2,3,10,11,12",
  17. public int preferenceCount; // 选填志愿数量
  18. // "groupList": [
  19. // {
  20. // "params": {},
  21. // "groupId": 1,
  22. // "mask": 448,
  23. // "name": "物化生",
  24. // "rank": 1
  25. // },
  26. // {
  27. // "params": { },
  28. // "groupId": 2,
  29. // "mask": 416,
  30. // "name": "物化政",
  31. // "rank": 2
  32. // },
  33. // {
  34. // "params": { },
  35. // "groupId": 3,
  36. // "mask": 400,
  37. // "name": "物化地",
  38. // "rank": 3
  39. // },
  40. // {
  41. // "params": { },
  42. // "groupId": 10,
  43. // "mask": 56,
  44. // "name": "历政地",
  45. // "rank": 10
  46. // },
  47. // {
  48. // "params": { },
  49. // "groupId": 11,
  50. // "mask": 104,
  51. // "name": "历政生",
  52. // "rank": 11
  53. // },
  54. // {
  55. // "params": { },
  56. // "groupId": 12,
  57. // "mask": 88,
  58. // "name": "历生地",
  59. // "rank": 12
  60. // }
  61. // ],
  62. // "state": "1"
  63. //},
  64. //"allowSelect": false
  65. }
  66. // 评测推荐专业
  67. public class RecommendMajor
  68. {
  69. public string majorCategoryName; // 专业类别
  70. public int majorCategoryCode; // 专业编码
  71. public List<int> matchedGroupIds; // // 匹配哪几个组合?
  72. }
  73. // 学生这里无论什么时间得到的都是最终结果,不需要中间快照,以此区分校长的选科数据。
  74. // 校长的选科数据,初选时与学生相同;补录时也需要这份数据、但也需要初选与补录的差异部分;排名均衡同理
  75. public class ElectiveSelectModel
  76. {
  77. public int groupId; // 组合
  78. public string groupName; // 名称
  79. public int classCount; // 班级数
  80. public int personCount; // 人数设置
  81. public int rankInGroup; // 选科实时排名
  82. public int rankInGrade; // 选科全校排名
  83. public bool allowSelect; // 是否可以报名
  84. public string disabledReason; // 不可报名时的原因
  85. public bool selected; // 已报名
  86. public int selectedRank; // 多志愿时的排序
  87. }
  88. public class ElectiveSelectGroupStatistics {
  89. public string name; // stat column name
  90. public ElectiveGeneration.ElectiveGroupGenerationStatistic[] groupDescriptors;
  91. }
  92. ;
  93. public class ElectiveSelectModelWrapper {
  94. public ElectiveSelectModel[] models;
  95. // 动态追加字段 json 格式见 statColumn.json
  96. ElectiveSelectGroupStatistics[] statColumns;
  97. }
  98. // 自选专业
  99. public class ElectiveOptionalMajor
  100. {
  101. public int collegeId;
  102. public string collegeName;
  103. // 可能还包含院校的一些其它属性
  104. public string majorCategoryCode;
  105. public string majorCategoryName;
  106. public Dictionary<string, string> majors;
  107. public string limitationA; // 选科限制1
  108. public string limitationB; // 选科限制2
  109. public List<int> matchedGroupIds; // 匹配的组合
  110. }
  111. #endregion
  112. // 本期会涉及很多隐藏需求,前端会去back-ui按页面+按功能设置很多按钮功能,后续配置为权限组来操作
  113. // 本期后台输出数据的时候不需要按权限屏蔽数据,全量输出即可,以减少后端开发的工作量
  114. // 因为本期要控制隐藏的内容比功能入口、API入口要更精细的粒度,可能是列表的某几列,可能是某些按钮,如果严格API数据规范可能会增加海量的工作。
  115. public interface IPrimaryElectiveService
  116. {
  117. // 旧接口getStudentSelected,返回内容+preferenceCount,志愿数
  118. ElectiveSetting getStudentSelected();
  119. // 学生获取选科状态数据,得到是每个组合最终状态和结果
  120. ElectiveSelectModelWrapper getStudentElectiveModels();
  121. // 学生获取自选专业及匹配情况
  122. List<ElectiveOptionalMajor> getOptionalMajors();
  123. // 初选报名。这里简化原型里的操作,直接提交,如需排序,调sortElectiveSelected接口,并刷新getPrimaryElectivesx
  124. void submitPrimaryElective(ElectiveSelectModel model);
  125. // 调整排序。这里简化原型里的操作,并刷新getPrimaryElectives
  126. void sortPrimaryElective(ElectiveSelectModel model);
  127. // 取消报名
  128. void cancelPrimaryElective(ElectiveSelectModel model);
  129. // 返回学生测评推荐专业以及匹配情况
  130. List<RecommendMajor> getRecommendMajor();
  131. /**
  132. AI分析
  133. 需要的字段:
  134. score 组合成绩
  135. remainingPlan 剩余计划
  136. highestScoreCount 组合成绩最高人数
  137. highestScoreRank 组合成绩最高人数排名
  138. supplyRank 补录人数排名
  139. supplyCount 补录人数
  140. */
  141. List<ElectiveSelectGroupStatistics> getAIAnalysis()
  142. }
  143. }