​强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

【前言】

基础系统是云平台中十分重要的一个子系统,它为其他系统提供了基础数据的支撑;基础系统中有一个重要的功能就是轮次管理;轮次是配置课程管理的一个基础数据,不同学年不同学院的不同课程轮次都可能不同;今天为大家介绍一下关于轮次设置的相关功能及实现。

【轮次设置】

           一、在编辑轮次时比较重要的几个逻辑校验:

1、编辑轮次为最小轮次:最晚退选时间不能早于上一轮次开始选课时间;

2、编辑轮次为当中轮次:编辑本轮次的开始选课时间不能早于上一轮次的最晚退选时间;最晚退选时间不能早于上一轮

次开始选课时间;

3、编辑轮次为最大轮次:编辑本轮次的开始选课时间不能早于上一轮次的最晚退选时间;

           二、重要的代码实现:

1、页面的JS代码

function saveAdd() {roundName = document.getElementById('roundName').value;startTime = $("#startTime").datetimebox('getValue');endTime = $("#endTime").datetimebox('getValue');lastestQuitTime = $("#lastestQuitTime").datetimebox('getValue');startTime1 = startTime.substring(0, 16);endTime1 = endTime.substring(0, 16);lastestQuitTime1 = lastestQuitTime.substring(0, 16);// 判断开始时间和结束时间的先后符合要求---startif (endTime < startTime) {$.messager.alert("提示", "开始时间不得大于结束时间", "info")return;}if (endTime > lastestQuitTime) {$.messager.alert("提示", "结束时间不得大于最晚退选时间", "info")return;}if (startTime > lastestQuitTime) {$.messager.alert("提示", "开始时间不得大于最晚退选时间", "info")return;}var result;var roundNo;roundNo = GetNum(roundName);// 如果editId是空,执行添加操作------startif (editId == "" || editId == null) {// 如果不是第一轮-------------------按次序判断-----startif (roundNo != 1) {$.ajax({async : false,type : "POST",url : "queryByRoundNO",data : {"roundno" : roundNo},success : function(time) {result = time;}});// 判断返回结果------startif (result == "error") {$.messager.alert("提示", "请先配置上一轮!", "info");return;} else {if (startTime < result) {$.messager.alert("提示", "开始时间必须大于上一轮的结束时间;上一轮结束时间为" + result+ "", "info");return;}}// 判断返回结果----end}// 如果不是第一轮-------------------按次序判断-----end$('#frmAddRound').form('submit',{url : 'SaveRound?roundno=' + roundName + "&beginTime="+ startTime1 + "&endTime=" + endTime1+ "&lastestQuitTime=" + lastestQuitTime1,success : function(result) {var result = eval('(' + result + ')');if (result == "success") {$('#ff').form('clear');$('#addRound').dialog('close');$('#dg').datagrid("reload");$.messager.alert("提示", "恭喜您,操作成功!", "info");} else {$.messager.alert("警告", "您的操作失败!", "error");return;}}})}// 如果editId是空,执行添加操作------end// 如果editId不为空,执行编辑操作------startelse {// 在编辑轮次时做相应的校验---张晗---2017年2月17日21:22:14---------start// 校验逻辑:// 1.编辑轮次为最小轮次:最晚退选时间不能早于上一轮次开始选课时间;// 2.编辑轮次为当中轮次:编辑本轮次的开始选课时间不能早于上一轮次的最晚退选时间;最晚退选时间不能早于上一轮次开始选课时间;// 3.编辑轮次为最大轮次:编辑本轮次的开始选课时间不能早于上一轮次的最晚退选时间;if (roundName == null || roundName == undefined || roundName == '') {$.messager.alert("警告", "需要修改的轮次有问题请重新编辑", "error");return;}var isEffective = true;// 标识修改的开始选课时间和最晚退课时间是否为有效的// 根据编辑的轮次查询相邻轮次的相关信息做相应的检验$.ajax({async : false,type : "POST",url : "queryUpAndDownRoundInfo",data : {"roundName" : roundName,},success : function(result) {if (result.length > 1) { // 该轮次有上下轮次if (startTime1 < result[0].lastestQuitTime) {// 本轮此的开始选课时间不能早于上一轮次的最晚退选时间$.messager.alert("提示", "由于本轮次的开始时间[" + startTime1+ "]早于" + result[0].roundNo + "最晚退选时间["+ result[0].lastestQuitTime + "];请重新设置开课时间","info");isEffective = false;return;}if (lastestQuitTime1 > result[1].beginTime) {// 本轮次的最晚选课时间不得晚于下一轮次最早选课时间$.messager.alert("提示", "由于本轮次的最晚选课时间["+ lastestQuitTime1 + "]晚于" + result[1].roundNo+ "最早选课时间[" + result[1].beginTime+ "];请重新设置最晚选课时间", "info");isEffective = false;return;}}// 本轮此的开始选课时间不能早于上一轮次的最晚退选时间if (result.length == 1) {// 编辑轮次为最大轮次或最小轮次if(roundName=='第1轮'){//第1轮的情况(规则-本轮次的最晚选课时间不得晚于上一轮次的最早选课时间)if (lastestQuitTime1 > result[0].beginTime) {$.messager.alert("提示", "由于本轮次的最晚选课时间["+ lastestQuitTime1 + "]晚于" + result[0].roundNo+ "最早选课时间[" + result[0].beginTime+ "];请重新设置最晚选课时间", "info");isEffective = false;return;}}else{//最大轮情况(规则-本轮此的开始选课时间不能早于上一轮次的最晚退选时间)if(startTime1 < result[0].lastestQuitTime){$.messager.alert("提示","由于本轮次的开始时间[" + startTime1 + "]早于"+ result[0].roundNo + "最晚退选时间["+ result[0].lastestQuitTime+ "];请重新设置开课时间", "info");isEffective = false;return;}}}},error : function() {$.messager.alert("提示", "此次编辑出现问题,请重新编辑", "info");isEffective = false;return;}});// 在编辑轮次时做相应的校验---张晗---2017年2月17日21:22:14---------end// 编辑时做判断,判断该轮次if (isEffective) {$.ajax({async : false,type : "POST",url : "updateRound",data : {"roundId" : editId,"roundno" : roundName,"beginTime" : startTime1,"endTime" : endTime1,"lastestQuitTime" : lastestQuitTime1,},success : function(result) {if (result == "error") {$.messager.alert("提示", "修改失败,请重试!", "info");$('#dg').datagrid("reload");return;} else {$.messager.alert("提示", "恭喜您,修改成功!", "info");$('#addRound').dialog('close');$('#dg').datagrid("reload");}}});}}}

2、后端代码

(1)查询相邻轮次信息

    /** 查询相邻轮次信息-维护人员:张晗--2017年2月18日10:17:01* * @param request* * @param response*/@RequestMapping("/queryUpAndDownRoundInfo")public void queryUpAndDownRoundInfo(HttpServletRequest request,HttpServletResponse response) {try {// 获取数据库名String dataBaseName = (String) request.getSession().getAttribute(CloudContext.DatabaseName)+ "_basic";String roundName = request.getParameter("roundName");List<ChooseCourseRound> chooseCourseRoundList = chooseCourseRoundBean.queryUpAndDownRoundInfo(roundName, dataBaseName);jacksonJsonUntil.beanToJson(response, chooseCourseRoundList);} catch (Exception e) {logger.error(e.getMessage(), e);}}

(2)查询最大轮次信息

    /** 查询最大轮次信息-维护人员:张晗--2017年2月18日10:17:01* * @param request* * @param response*/@RequestMapping(value = "/queryMaxRoundInfo", method = RequestMethod.POST)public void queryMaxRoundInfo(HttpServletRequest request,HttpServletResponse response) {try {// 获取数据库名String dataBaseName = (String) request.getSession().getAttribute(CloudContext.DatabaseName)+ "_basic";ChooseCourseRound chooseCourseRoundEntity = chooseCourseRoundBean.queryMaxRoundInfo(dataBaseName);jacksonJsonUntil.beanToJson(response, chooseCourseRoundEntity);} catch (Exception e) {logger.error(e.getMessage(), e);}}

【总结】

1、业务校验十分重要,做好相关的校验可以使得系统更加的健壮;

2、认真对待每个系统的每行代码。

智能一代云平台(十二):轮次设置相关推荐

  1. 智能一代云平台(二十九):通用mapper的改造

    [前言] 最近研究一下Mybatis的通用mapper,然后对其进行了一些改造以适合我们的系统,接下来为大家分享一下我的研究思路以及研究成果. [研究之路]      一.ORM框架选型: 1.我们最 ...

  2. 智能一代云平台(二十三):Mycat高可用的探索

    [前言] 在智能云平台的上篇博文 <智能云平台(二十二):多租户方案比较Hibernate.EclipseLink.Mybatis+Mycat>中讲解了实 现多租户的一种方案是用MySql ...

  3. 智能一代云平台(二十二):多租户方案比较Hibernate、EclipseLink、Mybatis+Mycat

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 我们做的高校云平台中需要用多租户这种技术,目录了解到的有三种技术可以实现:符合JPA规 ...

  4. 智能一代云平台(二十四):已安装的Nginx上安装echo插件

    [前言] Nginx已然成为行业中最火的反向代理服务器,Nginx成名于两方面:一是其优越的性能:二是其丰富的插件库:今天为大家分享是Nginx强大的echo插件:题. [具体的实验] 一.echo插 ...

  5. 智能一代云平台(二十一):生产环境Nginx报 502 Bad Gateway 问题复现及解决方案

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 系统最近出现了一个问题,经过相应的排查解决了:在此记录一下解决的整个过程,如果大家遇到 ...

  6. 智能一代云平台(二):一些事儿!

    [前言]       细细数来从去年到现在自己先后历经三次,也算和该活动有了一年半的交情了吧!大家都知道我是一个多愁善感并且怀旧的人(一般多愁善感的人都比较怀旧吧)!总想写点东西记录一下. [监考之路 ...

  7. 智能一代云平台(三十):逆向工程生成mybatis

    [前言] 最近在研究mybatis逆向工程的一些东西:通过研究Mybatis+通用mapper.逆向工程生成mybatis.Hibernate+mybatis:最终综合这些优点实现了一个我们自己的逆向 ...

  8. 智能一代云平台(五):移动开发之环境搭建

    [前言] 谣传最近IT领域异常火热,而IT中的移动端领域更是如日中天. 做为一名程序猿的我,也不甘Out:于是雄心勃勃参加一个智能一代云平台移动端项目开发:之前有人做了第一版,现在我们需要重构. [基 ...

  9. 智能一代云平台(三十一):mybatis加入分页

    [前言] 在<智能一代云平台(三十):逆向工程生成mybatis>已经将mybatis的逆向工程搞定了:但是美中不足的是mybatis的分页查询:接下来一起来探索一下分页查询. [分页查询 ...

最新文章

  1. boost::geometry::num_segments用法的测试程序
  2. QT的QStyle类的使用
  3. (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  4. 计算机专用英语词汇发音,计算机专用的英语词汇
  5. 用 ABAP 读取本地文本文件内容
  6. ${project.build.directory}
  7. 自制WiFiPineapple
  8. Python 基础,不看会后悔哦!
  9. Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误
  10. cad计算机绘图实训内容,cad绘图实训心得体会
  11. phpwind测试实战之phpwind安装(三)
  12. 三星c7 linux驱动,三星c7手机驱动(三星c7驱动程序)V1.5.55.2 专业版
  13. windows/linux 下iozone参数详解
  14. 并联串联混合的电压和电流_初中物理归纳并联和串联的区别
  15. 国外的一个网站不能够访问
  16. 收藏转载樱花飘落代码
  17. 社会工程常见攻击方式
  18. FITC/ICG/TMR/HRP/Cy3荧光标记阿法替尼/阿西替尼/克里唑蒂尼/奥拉帕尼/Lenvatinib/多韦替尼 等药物
  19. 设计模式之适配器模式 :外部系统接口的使用
  20. html下拉列表框怎么添加数据,给html下拉框控件自动添加数据

热门文章

  1. 标准c语言局域网文件传输,winsocket局域网文件传输系统源代码(C语言)+winsocket.doc...
  2. js如何降低全局变量带来的命名污染
  3. CentOS7 修改默认启动项
  4. Jzoj4894 SJR的直线
  5. 蓝软服务器文件监控同步系统,文件系统监控同步传输系统
  6. Java幸运数求和_Java实现 幸运数字
  7. 算法《幸运数字》由2,3, 5, 7 组成的幸运数字
  8. 过滤器(Filter)的作用及使用
  9. java 访问类变量_如何访问类的成员变量和方法
  10. 【Log】(二)Java 中的日志框架 JCL、SLF