智能一代云平台(十二):轮次设置
强烈推荐一个大神的人工智能的教程: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、认真对待每个系统的每行代码。
智能一代云平台(十二):轮次设置相关推荐
- 智能一代云平台(二十九):通用mapper的改造
[前言] 最近研究一下Mybatis的通用mapper,然后对其进行了一些改造以适合我们的系统,接下来为大家分享一下我的研究思路以及研究成果. [研究之路] 一.ORM框架选型: 1.我们最 ...
- 智能一代云平台(二十三):Mycat高可用的探索
[前言] 在智能云平台的上篇博文 <智能云平台(二十二):多租户方案比较Hibernate.EclipseLink.Mybatis+Mycat>中讲解了实 现多租户的一种方案是用MySql ...
- 智能一代云平台(二十二):多租户方案比较Hibernate、EclipseLink、Mybatis+Mycat
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 我们做的高校云平台中需要用多租户这种技术,目录了解到的有三种技术可以实现:符合JPA规 ...
- 智能一代云平台(二十四):已安装的Nginx上安装echo插件
[前言] Nginx已然成为行业中最火的反向代理服务器,Nginx成名于两方面:一是其优越的性能:二是其丰富的插件库:今天为大家分享是Nginx强大的echo插件:题. [具体的实验] 一.echo插 ...
- 智能一代云平台(二十一):生产环境Nginx报 502 Bad Gateway 问题复现及解决方案
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 系统最近出现了一个问题,经过相应的排查解决了:在此记录一下解决的整个过程,如果大家遇到 ...
- 智能一代云平台(二):一些事儿!
[前言] 细细数来从去年到现在自己先后历经三次,也算和该活动有了一年半的交情了吧!大家都知道我是一个多愁善感并且怀旧的人(一般多愁善感的人都比较怀旧吧)!总想写点东西记录一下. [监考之路 ...
- 智能一代云平台(三十):逆向工程生成mybatis
[前言] 最近在研究mybatis逆向工程的一些东西:通过研究Mybatis+通用mapper.逆向工程生成mybatis.Hibernate+mybatis:最终综合这些优点实现了一个我们自己的逆向 ...
- 智能一代云平台(五):移动开发之环境搭建
[前言] 谣传最近IT领域异常火热,而IT中的移动端领域更是如日中天. 做为一名程序猿的我,也不甘Out:于是雄心勃勃参加一个智能一代云平台移动端项目开发:之前有人做了第一版,现在我们需要重构. [基 ...
- 智能一代云平台(三十一):mybatis加入分页
[前言] 在<智能一代云平台(三十):逆向工程生成mybatis>已经将mybatis的逆向工程搞定了:但是美中不足的是mybatis的分页查询:接下来一起来探索一下分页查询. [分页查询 ...
最新文章
- boost::geometry::num_segments用法的测试程序
- QT的QStyle类的使用
- (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
- 计算机专用英语词汇发音,计算机专用的英语词汇
- 用 ABAP 读取本地文本文件内容
- ${project.build.directory}
- 自制WiFiPineapple
- Python 基础,不看会后悔哦!
- Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误
- cad计算机绘图实训内容,cad绘图实训心得体会
- phpwind测试实战之phpwind安装(三)
- 三星c7 linux驱动,三星c7手机驱动(三星c7驱动程序)V1.5.55.2 专业版
- windows/linux 下iozone参数详解
- 并联串联混合的电压和电流_初中物理归纳并联和串联的区别
- 国外的一个网站不能够访问
- 收藏转载樱花飘落代码
- 社会工程常见攻击方式
- FITC/ICG/TMR/HRP/Cy3荧光标记阿法替尼/阿西替尼/克里唑蒂尼/奥拉帕尼/Lenvatinib/多韦替尼 等药物
- 设计模式之适配器模式 :外部系统接口的使用
- html下拉列表框怎么添加数据,给html下拉框控件自动添加数据
热门文章
- 标准c语言局域网文件传输,winsocket局域网文件传输系统源代码(C语言)+winsocket.doc...
- js如何降低全局变量带来的命名污染
- CentOS7 修改默认启动项
- Jzoj4894 SJR的直线
- 蓝软服务器文件监控同步系统,文件系统监控同步传输系统
- Java幸运数求和_Java实现 幸运数字
- 算法《幸运数字》由2,3, 5, 7 组成的幸运数字
- 过滤器(Filter)的作用及使用
- java 访问类变量_如何访问类的成员变量和方法
- 【Log】(二)Java 中的日志框架 JCL、SLF