123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using System;
- using System.Collections.Generic;
- namespace mxdemo.Mind
- {
- #region model
- public class ElectiveSetting
- {
- //"selectResult": {
- // "params": {},
- // "roundId": 8,
- // "schoolId": 1,
- // "year": 2021,
- // "name": "第三次",
- // "beginTime": "2022-02-16",
- // "endTime": "2022-02-17",
- // "groupIds": "1,2,3,10,11,12",
- public int preferenceCount; // 选填志愿数量
- // "groupList": [
- // {
- // "params": {},
- // "groupId": 1,
- // "mask": 448,
- // "name": "物化生",
- // "rank": 1
- // },
- // {
- // "params": { },
- // "groupId": 2,
- // "mask": 416,
- // "name": "物化政",
- // "rank": 2
- // },
- // {
- // "params": { },
- // "groupId": 3,
- // "mask": 400,
- // "name": "物化地",
- // "rank": 3
- // },
- // {
- // "params": { },
- // "groupId": 10,
- // "mask": 56,
- // "name": "历政地",
- // "rank": 10
- // },
- // {
- // "params": { },
- // "groupId": 11,
- // "mask": 104,
- // "name": "历政生",
- // "rank": 11
- // },
- // {
- // "params": { },
- // "groupId": 12,
- // "mask": 88,
- // "name": "历生地",
- // "rank": 12
- // }
- // ],
- // "state": "1"
- //},
- //"allowSelect": false
- }
- // 评测推荐专业
- public class RecommendMajor
- {
- public string majorCategoryName; // 专业类别
- public int majorCategoryCode; // 专业编码
- public List<int> matchedGroupIds; // // 匹配哪几个组合?
- }
- // 学生这里无论什么时间得到的都是最终结果,不需要中间快照,以此区分校长的选科数据。
- // 校长的选科数据,初选时与学生相同;补录时也需要这份数据、但也需要初选与补录的差异部分;排名均衡同理
- public class ElectiveSelectModel
- {
- public int groupId; // 组合
- public string groupName; // 名称
- public int classCount; // 班级数
- public int personCount; // 人数设置
- // 5.7 hht +字段,用来展示报告
- public int groupIndicator; // 组合指标 // primary时为设置人数,之后为决策完毕后剩余的设置数
- public int rankInIndicator; // 组合指标排名
- public int rankInDisenroll; // 全组合指标排名,即所有未录取人员中的排名 // 可能没用
- public int bestInIndicator; // 未录取组合排名最优人数 // 这是一个解释数据,并没有直接参与计算
- public decimal scoreSumAll; // 9门成绩
- public decimal scoreSumGroup; // 6门成绩
- public int rankInGroup; // 选科实时排名
- public int rankInGrade; // 选科全校排名
- public bool allowSelect; // 是否可以报名
- public string disabledReason; // 不可报名时的原因
- public bool selected; // 已报名
- public int selectedRank; // 多志愿时的排序
- }
- public class ElectiveSelectGroupStatistics {
- public string name; // stat column name
- public ElectiveGeneration.ElectiveGroupGenerationStatistic[] groupDescriptors;
- }
- ;
- public class ElectiveSelectModelWrapper {
- public ElectiveSelectModel[] models;
- // 动态追加字段 json 格式见 statColumn.json
- ElectiveSelectGroupStatistics[] statColumns;
- // 5.7 hht +字段 用于展示报告
- public int[] prevPreferences; // 前一步未录取的报名组合
- }
- // 自选专业
- public class ElectiveOptionalMajor
- {
- public int collegeId;
- public string collegeName;
- // 可能还包含院校的一些其它属性
- public string majorCategoryCode;
- public string majorCategoryName;
- public Dictionary<string, string> majors;
- public string limitationA; // 选科限制1
- public string limitationB; // 选科限制2
- public List<int> matchedGroupIds; // 匹配的组合
- }
- #endregion
- // 本期会涉及很多隐藏需求,前端会去back-ui按页面+按功能设置很多按钮功能,后续配置为权限组来操作
- // 本期后台输出数据的时候不需要按权限屏蔽数据,全量输出即可,以减少后端开发的工作量
- // 因为本期要控制隐藏的内容比功能入口、API入口要更精细的粒度,可能是列表的某几列,可能是某些按钮,如果严格API数据规范可能会增加海量的工作。
- public interface IPrimaryElectiveService
- {
- // 旧接口getStudentSelected,返回内容+preferenceCount,志愿数
- ElectiveSetting getStudentSelected();
- // 学生获取选科状态数据,得到是每个组合最终状态和结果
- ElectiveSelectModelWrapper getStudentElectiveModels();
- // 学生获取自选专业及匹配情况
- List<ElectiveOptionalMajor> getOptionalMajors();
- // 初选报名。这里简化原型里的操作,直接提交,如需排序,调sortElectiveSelected接口,并刷新getPrimaryElectivesx
- void submitPrimaryElective(ElectiveSelectModel model);
- // 调整排序。这里简化原型里的操作,并刷新getPrimaryElectives
- void sortPrimaryElective(ElectiveSelectModel model);
- // 取消报名
- void cancelPrimaryElective(ElectiveSelectModel model);
- // 返回学生测评推荐专业以及匹配情况
- List<RecommendMajor> getRecommendMajor();
- /**
- AI分析
- 需要的字段:
- score 组合成绩
- remainingPlan 剩余计划
- highestScoreCount 组合成绩最高人数
- highestScoreRank 组合成绩最高人数排名
- supplyRank 补录人数排名
- supplyCount 补录人数
- */
- List<ElectiveSelectGroupStatistics> getAIAnalysis()
- }
- }
|