| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 | 
							- 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 currentGeneration; // 当前报名状态
 
-         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.22 注
 
-         // 常量 来自发布选科
 
-         // 5.7 hht +字段,用来展示报告
 
-         public int groupIndicator; // 组合指标 // primary时为设置人数,之后为决策完毕后剩余的设置数
 
-         // 5.22 注
 
-         // 报名代=Math.max(0, personCount-groupApprovedCount) 决策代=从报名代继承值
 
-         // 设置人数-组合录取人数(迭代数)
 
-         public int preferenceOverflow; // 志愿超缺(多志愿取1志愿),正数超,负数缺
 
-         // 5.31 注
 
-         // 多志愿场景下,1志愿超出与下阶段的指标不能重合,新加字段来表示
 
-         // 在报名代生成=(groupApprovedCount+actualCount[多志愿使用1志愿])-personCount 或者 actualCount-groupIndicator
 
-         // 决策代从报名代继承
 
-         public int nextGroupIndicator; // 下阶段组合指标
 
-         // 5.22 注
 
-         // 决策代,匹配算法后生成=Math.max(0, personCount-groupApprovedCount)
 
-         public bool nextAllowSelect;
 
-         public bool nextRecommend;
 
-         // 5.26 +nextAllowSelect +nextRecommend
 
-         public int rankInIndicator; // 组合指标排名
 
-         // 5.22 注
 
-         // 未录取学生推荐组合中的排名,其它已录或非推荐组合为0(也就是说最多只会有一个group有值)
 
-         // 报名代从决策代继承
 
-         public int bestInIndicator; // 未录取组合排名最优人数 // 这是一个解释数据,并没有直接参与计算
 
-         public int rankInBest; // bestInIndicator中的排名
 
-         // 5.22 注
 
-         // bestInIndicator:未录学生的最佳成绩在未录满组合中的分布人数
 
-         // rankInBest:未录学生最优的组合中的排名,其它已录取或非成绩最优组合为0(也就是说最多只会有一个group有值)
 
-         // 报名代从决策代继承
 
-         public int rankInDisenroll; // 全组合指标排名,即所有未录取人员中的排名 // 可能没用
 
-         // 5.22 注
 
-         // 学生在所有未录取学生中的排名,每个未录组合都会有一个排名(分别按6科成绩排)
 
-         // 报名代从决策代继承
 
-         public decimal scoreSumAll; // 9门成绩
 
-         public decimal scoreSumGroup; // 6门成绩
 
-         public bool isRecommend; // 推荐组合
 
-         // 5.22 注
 
-         // 对应未录学生在决策代匹配算法的推荐组合
 
-         // 报名代从决策代继承
 
-         public int rankInGroup;
 
-         // 5.27 注释更正:报名组合在报名人数中的排名 录取组合在录取人数中的排名(录取状态需要迭代)未录取和未录取没有排名
 
-         public int rankInGrade; // 选科全校排名 常量 来自成绩导入
 
-         public bool allowSelect; // 是否可以报名 报名代专用
 
-         public string disabledReason; // 不可报名时的原因 报名代专用
 
-         public bool selected;  // 已报名
 
-         // 5.13 如果是多志愿,按selectedRank区分一志愿、二志愿、三志愿...
 
-         public int selectedRank; // 多志愿时的排序
 
-         // 5.20 +用来标识填报时拒填
 
-         public bool rejected; // 拒绝填报
 
-         public string rejectedReason; // 拒绝原因
 
-         // 5.22 注
 
-         // selected selectedRank rejected rejectedReason以上报名状态在报名代记录,继承至下一代决策代终止
 
-         // 5.13 去除动态列,改为固定字段 +
 
-         public int actualCount; // 阶段实际报名人数
 
-         // 5.22 注
 
-         // 本代报名汇总数据,继承至下一代决策代终止
 
-         public bool approved; // 已被正常录取
 
-         // 5.22 注
 
-         // 学生录取状态,持续继承至所有后代,直至被forceAdjusted更改(非必触发)
 
-         public bool forceAdjusted; // 已被调剂录取
 
-         // 5.22 注
 
-         // 学生强制调剂录取状态,持续继承至所有后代(目前只有forceAdjust代可能会更改此值)
 
-         public int groupApprovedCount; // 本组合已被录取人数(迭代值)
 
-         // 5.22 注
 
-         // 学生正常录取汇总数据,每个决策代累加之前所有决策代的录取数据
 
-         public int groupForceAdjustedCount; // 本组合已被强制调剂人数(迭代值)
 
-         // 5.22 注
 
-         // 学生强制调剂录取汇总数据,每个决策代累加之前所有决策代的录取数据(目前只有forceAdjust代会产生这种数据)
 
-     }
 
-     public class ElectiveSelectGroupStatistics {
 
-       public string name; // stat column name
 
-       public ElectiveGeneration.ElectiveGroupGenerationStatistic[] groupDescriptors;
 
-     }
 
-     ;
 
-     public class ElectiveSelectModelWrapper {
 
-       public ElectiveSelectModel[] models;
 
-       public int generation;
 
-       public long studentId;
 
-       public int preferenceCount;
 
-       // 5.31 +到当前阶段为止的未录取人数
 
-       public int disenrollCount;
 
-     }
 
-     // 自选专业
 
-     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();
 
-         // 学生获取选科状态数据,得到是每个组合最终状态和结果
 
-         // 5.13 返回迭代至generation的多代选科表,如查询补录报名,即返回初录报名/初录结果/补录报名3代的模型集合
 
-         ElectiveSelectModelWrapper[] getStudentElectiveModels(long studentId, int generation);
 
-         // 学生获取自选专业及匹配情况
 
-         List<ElectiveOptionalMajor> getOptionalMajors();
 
-         // 初选报名。这里简化原型里的操作,直接提交,如需排序,调sortElectiveSelected接口,并刷新getPrimaryElectivesx
 
-         void submitPrimaryElective(ElectiveSelectModel[] models, ElectiveEsign esign);
 
-         void esign(ElectiveEsign esign);
 
-         // 返回学生测评推荐专业以及匹配情况
 
-         List<RecommendMajor> getRecommendMajor();
 
- //        /*
 
- //          AI分析
 
- //          需要的字段:
 
- //          详细见analysis.json
 
- //        */
 
- //        List<ElectiveSelectGroupStatistics> getAIAnalysis()
 
-     }
 
- }
 
 
  |