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

【前言】

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

【轮次设置】

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

                  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);
	// 判断开始时间和结束时间的先后符合要求---start
	if (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是空,执行添加操作------start
	if (editId == "" || editId == null) {

		// 如果不是第一轮-------------------按次序判断-----start
		if (roundNo != 1) {

			$.ajax({
				async : false,
				type : "POST",
				url : "queryByRoundNO",
				data : {
					"roundno" : roundNo
				},
				success : function(time) {
					result = time;
				}
			});
			// 判断返回结果------start
			if (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不为空,执行编辑操作------start
	else {
		// 在编辑轮次时做相应的校验---张晗---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、认真对待每个系统的每行代码。

当年的春天 CSDN认证博客专家 分布式 Spring Redis
6年Java互联网研发经验,坐标北京;擅长微服务和中间件。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__0809 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值