⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskeventmgrimpl.java

📁 基于Sturts+Spring+Hibernate的一个高级销售管理系统。内容丰富
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
						}
						Integer freqMonthNumSecInt = null; // 定义每隔几月的数量的Integer类型;
						if (freqMonthNumSec != null) {
							freqMonthNumSecInt = Integer
									.parseInt(freqMonthNumSec); // 把定义的隔月数转化为integer类型;
						}
						while (tempDate.before(reEnd)) {
							int cou = 0;// 相差几天 月第一天或者最后一天周几和选择的周几相差值;
							int total = 0;// 总共要推进几天;
							Integer firstDayWeekNum = DateTimeTool
									.getFirstDateByWeek(cal);// 获取当月的第一天的星期几;
							Integer lastDayWeekNum = DateTimeTool
									.getLastDateByWeek(cal);// 获取当月的第一天的星期几;
							Integer lastDayMonthNum = DateTimeTool
									.getLastDate(cal);// 获取月份中最后一天的日期数;
							if (executeDayFirInt.equals(0)) {// 如果为日;
								if (executeNoFirInt.equals(5)) {// 最后一日;
									total = DateTimeTool.getLastDate(cal);
									cal.set(Calendar.DATE, 1);
									cal.add(Calendar.DATE, total - 1);// 要扣除一天;
								} else {
									cal.set(Calendar.DATE, executeNoFirInt);
								}
							} else {// 如果不为日;
								if (executeNoFirInt.equals(5)) {// 最后一次,不是日,最后一次周几;
									if (lastDayWeekNum == executeDayFirInt) {// 如果最后一天的周数等于选择的周数;
										total = DateTimeTool.getLastDate(cal);
									} else if (lastDayWeekNum > executeDayFirInt) {// 如果最后一天的周数大于选择的周数;
										cou = lastDayWeekNum - executeDayFirInt;
										total = lastDayMonthNum - cou;
									} else if (lastDayWeekNum < executeDayFirInt) {// 如果最后一天的周数小于选择的周数;
										cou = lastDayWeekNum
												+ (7 - executeDayFirInt);
										total = lastDayMonthNum - cou;
									}
									cal.set(Calendar.DATE, 1);
									cal.add(Calendar.DATE, total - 1);// 要扣除一天;
								} else {
									if (firstDayWeekNum <= executeDayFirInt) {
										cou = executeDayFirInt
												- firstDayWeekNum;
									} else {
										cou = (7 - firstDayWeekNum)
												+ executeDayFirInt;
									}
									total = cou + 7 * (executeNoFirInt - 1);
									cal.set(Calendar.DATE, 1);
									cal.add(Calendar.DATE, total);
								}
							}
							tempDate = cal.getTime(); // 获取当前日期,赋给临时时间变量-随着循环变量改变;
							weekNo = cal.get(Calendar.DAY_OF_WEEK);
							dayOfYear = cal.get(Calendar.DAY_OF_YEAR);// 年之日;
							weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);// 年之周;
							monthOfYear = cal.get(Calendar.MONTH);// 年之月;
							dYear = cal.get(Calendar.YEAR);// 年份;

							if (tempDate.after(reEnd)) {// 如果日期超过结束日期,跳出循环;
								break;
							}
							tempStrDate = new SimpleDateFormat("yyyy-MM-dd")
									.format(tempDate);

							/** **周期事件存储类型:从reStartDate到reEndDate每隔几月的第几日事件** */
							Event event = fillEvent(request, eventForm,
									tempStrDate);
							event.setEventSeq(eventSeq);// 设置序列号;
							event.setStartDate(tempStrDate);// 设置开始执行日期;
							event.setEndDate(tempStrDate);// 设置结束执行日期;
							event.setReStartDate(reStartDate);// 周期开始日期;
							event.setReEndDate(reEndDate);// 周期结束日期;
							event.setFrequencyType(frequencyType);// 每天类型;
							event.setFreqStart("2");// 每隔几月的类型 ;
							event.setFrequencyMouth(freqMonthNumSecInt);// 每隔数量;
							event.setExecuteDay(executeDayFir);// 执行单位;
							event.setExecuteDayNo(executeNoFirInt);// 执行第次;
							event.setDayOfYear(dayOfYear);// 设置年之日;
							event.setWeekOfYear(weekOfYear);// 设置年之周;
							event.setMonthOfYear(monthOfYear);// 设置年之月;
							event.setCurrentYear(dYear);// 设置年份;
							event.setWeekNo(weekNo);// 周之日;
							eventDAO.addEvent(event);// 添加事件;

							// **************在此判断事件是否超过一百次********************;
							count++; // 每次加一次事件的时候,计数器加1;
							if (count > 100) {
								logger.error("添加事件超过一百次");
								try {
									throw new TooManyValueException("添加事件超过一百次");
								} catch (TooManyValueException e) {
									e.printStackTrace();
								}// 抛出异常才能回滚;
							}
							cal.set(Calendar.DATE, 1);
							cal.add(Calendar.MONTH, freqMonthNumSecInt);
						}
					}
				}
					break;
				case 4: {// 每年的类型;
					String freqStartYear = request
							.getParameter("freqStartYear");
					if (freqStartYear.equals("1")) {

						String freqMNoFir = request.getParameter("freqMNoFir");// 获取页面上的月数;
						Integer freqMNoFirInt = null;
						if (freqMNoFir != null) {
							freqMNoFirInt = Integer.parseInt(freqMNoFir);// 将月数转为integer类型;
						}
						String executeDaySec = request
								.getParameter("executeDaySec");// 获取页面上的日期数;
						Integer executeDaySecInt = null;
						if (executeDaySec != null) {
							executeDaySecInt = Integer.parseInt(executeDaySec);// 将日期数转为integer类型;
						}
						// **从开始日期到结束日期的时间循环添加事件;
						while (tempDate.before(reEnd)) { // 判断日期格式;
							tempDate = cal.getTime(); // 获取当前日期,赋给临时时间变量;
							Integer DateNo = cal.get(Calendar.DATE); // 获取当前日期的日期数;
							Integer MonthNo = cal.get(Calendar.MONTH);// 获取当前日期的月数;
							weekNo = cal.get(Calendar.DAY_OF_WEEK);// 周之日;
							dayOfYear = cal.get(Calendar.DAY_OF_YEAR);// 年之日;
							weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);// 年之周;
							monthOfYear = cal.get(Calendar.MONTH);// 年之月;
							dYear = cal.get(Calendar.YEAR);// 年份;

							tempStrDate = new SimpleDateFormat("yyyy-MM-dd")
									.format(tempDate);
							if (MonthNo.equals(freqMNoFirInt)
									&& DateNo.equals(executeDaySecInt)) { // 如果选择的月数和日期数一样,那么添加事件;
								/** **周期事件存储类型:从reStartDate到reEndDate每隔几月份几号的日期** */
								Event event = fillEvent(request, eventForm,
										tempStrDate);
								event.setEventSeq(eventSeq);// 设置序列号;
								event.setStartDate(tempStrDate);// 设置开始执行日期;
								event.setEndDate(tempStrDate);// 设置结束执行日期;
								event.setReStartDate(reStartDate);// 周期开始日期;
								event.setReEndDate(reEndDate);// 周期结束日期;
								event.setFrequencyType(frequencyType);// 每天类型;
								event.setFreqStart("1");// 每隔几月的类型 ;
								event.setFrequencyMouth(null);// 每隔数量;
								event.setExecuteDay(executeDaySec);// 执行单位;
								event.setExecuteDayNo(freqMNoFirInt);// 执行第次月份;
								event.setDayOfYear(dayOfYear);// 设置年之日;
								event.setWeekOfYear(weekOfYear);// 设置年之周;
								event.setMonthOfYear(monthOfYear);// 设置年之月;
								event.setCurrentYear(dYear);// 设置年份;
								event.setWeekNo(weekNo);// 周之日;
								eventDAO.addEvent(event);// 添加事件;

								// **************在此判断事件是否超过一百次********************;
								count++; // 每次加一次事件的时候,计数器加1;
								if (count > 100) {
									logger.error("添加事件超过一百次");
									try {
										throw new TooManyValueException(
												"添加事件超过一百次");
									} catch (TooManyValueException e) {
										e.printStackTrace();
									}// 抛出异常才能回滚;
								}
							}
							cal.add(Calendar.DAY_OF_MONTH, 1); // 把开始日期推进1天;
						}
					} else if (freqStartYear.equals("2")) {// 选择的是每个某个月第几次的周几;
						String freqMNoSec = request.getParameter("freqMNoSec");// 获取页面开始月份
						Integer freqMNoSecInt = null;
						String executeNoSec = request
								.getParameter("executeNoSec");// 从页面上获取第次
						Integer executeNoSecInt = null;
						String executeDayFirSec = request
								.getParameter("executeDayFirSec");// 从页面上获取最小单位;
						Integer executeDayFirSecInt = null;
						if (freqMNoSec != null) {
							freqMNoSecInt = Integer.parseInt(freqMNoSec);
						}
						if (executeNoSec != null) {
							executeNoSecInt = Integer.parseInt(executeNoSec);
						}
						if (executeDayFirSec != null) {
							executeDayFirSecInt = Integer
									.parseInt(executeDayFirSec);
						}

						// **从开始日期到结束日期的时间循环添加事件;
						while (tempDate.before(reEnd)) {
							Integer currentMonth = cal.get(Calendar.MONTH);// 获取当前的月份;
							if (currentMonth <= freqMNoSecInt) {// 如果当前的月份小于选择的月份;
								cal.set(Calendar.MONTH, freqMNoSecInt);// 设置时间为页面的选择月份;
								int cou = 0;// 相差几天 月第一天或者最后一天周几和选择的周几相差值;
								int total = 0;// 总共要推进几天;
								Integer firstDayWeekNum = DateTimeTool
										.getFirstDateByWeek(cal);// 获取当月的第一天的星期几;
								Integer lastDayWeekNum = DateTimeTool
										.getLastDateByWeek(cal);// 获取当月的第一天的星期几;
								Integer lastDayMonthNum = DateTimeTool
										.getLastDate(cal);// 获取月份中最后一天的日期数;
								if (executeDayFirSec.equals(0)) {// 如果选择的单位为日;
									if (executeNoSecInt.equals(5)) {// 最后一次;
										cal.set(Calendar.DATE, 1);
										cal.add(Calendar.DATE,
												lastDayMonthNum - 1);
									} else {// 如果不是最后一天;
										cal.set(Calendar.DATE, executeNoSecInt);
									}
								} else {

									if (executeNoSecInt.equals(5)) {// 最后一次;
										if (lastDayWeekNum == executeDayFirSecInt) {// 如果最后一天的周数等于选择的周数;
											total = DateTimeTool
													.getLastDate(cal);
										} else if (lastDayWeekNum > executeDayFirSecInt) {// 如果最后一天的周数大于选择的周数;
											cou = lastDayWeekNum
													- executeDayFirSecInt;
											total = lastDayMonthNum - cou;
										} else if (lastDayWeekNum < executeDayFirSecInt) {// 如果最后一天的周数小于选择的周数;
											cou = lastDayWeekNum
													+ (7 - executeDayFirSecInt);
											total = lastDayMonthNum - cou;
										}
										cal.set(Calendar.DATE, 1);
										cal.add(Calendar.DATE, total - 1);// 要扣除一天;
									} else {
										if (firstDayWeekNum <= executeDayFirSecInt) {
											cou = executeDayFirSecInt
													- firstDayWeekNum;
										} else {
											cou = (7 - firstDayWeekNum)
													+ executeDayFirSecInt;
										}
										total = cou + 7 * (executeNoSecInt - 1);
										cal.set(Calendar.DATE, 1);
										cal.add(Calendar.DATE, total);
									}
								}
								tempDate = cal.getTime(); // 获取当前日期,赋给临时时间变量;
								weekNo = cal.get(Calendar.DAY_OF_WEEK);// 周之日;
								dayOfYear = cal.get(Calendar.DAY_OF_YEAR);// 年之日;
								weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);// 年之周;
								monthOfYear = cal.get(Calendar.MONTH);// 年之月;
								dYear = cal.get(Calendar.YEAR);// 年份;
								tempStrDate = new SimpleDateFormat("yyyy-MM-dd")
										.format(tempDate);
								if (tempDate.after(reEnd)) {// 当前时间已经在结束后面,跳出循环;
									break;
								}
								/** **周期事件存储类型:从reStartDate到reEndDate于几月份第几次的周几** */
								Event event = fillEvent(request, eventForm,
										tempStrDate);
								event.setEventSeq(eventSeq);// 设置序列号;
								event.setStartDate(tempStrDate);// 设置开始执行日期;
								event.setEndDate(tempStrDate);// 设置结束执行日期;
								event.setReStartDate(reStartDate);// 周期开始日期;
								event.setReEndDate(reEndDate);// 周期结束日期;
								event.setFrequencyType(frequencyType);// 每天类型;
								event.setFreqStart("2");// 每隔几月的类型 ;
								event.setFrequencyMouth(freqMNoSecInt);// 每隔数量;选择月份
								event.setExecuteDay(executeDayFirSec);// 执行单位;
								event.setExecuteDayNo(executeNoSecInt);// 执行第次;
								event.setDayOfYear(dayOfYear);// 设置年之日;
								event.setWeekOfYear(weekOfYear);// 设置年之周;
								event.setMonthOfYear(monthOfYear);// 设置年之月;
								event.setCurrentYear(dYear);// 设置年份;
								event.setWeekNo(weekNo);// 周之日;
								eventDAO.addEvent(event);// 添加事件;

								// **************在此判断事件是否超过一百次********************;
								count++; // 每次加一次事件的时候,计数器加1;
								if (count > 100) {
									logger.error("添加事件超过一百次");
									try {
										throw new TooManyValueException(
												"添加事件超过一百次");
									} catch (TooManyValueException e) {
										e.printStackTrace();
									}// 抛出异常才能回滚;
								}
							}
							cal.add(Calendar.YEAR, 1);// 推进一年;
						}
					}
				}
					break;
				}
			}
		} else {// 没有重复性事件的情况;不用存储序列号;
			String startDate = request.getParameter("startDate");
			String endDate = request.getParameter("endDate");
			if (StringTool.isNotBlank(startDate)) { // 开始日期不为空;
				reStart = DateTimeTool.buildDate(startDate); // 把开始日期的字符串转化为日期格式;
			}
			if (StringTool.isNotBlank(endDate)) { // 结束日期不为空;
				reEnd = DateTimeTool.buildDate(endDate); // 把开始日期的字符串转化为日期格式;
			}
			Date tempDate = reStart; // 临时日期变量,赋值为开始日期;
			cal.setTime(reStart); // 把开始日期设置到当前的日历;

			while (tempDate.before(reEnd) || tempDate.equals(reEnd)) { // 判断日期格式;
				tempDate = cal.getTime(); // 获取当前日期,赋给临时时间变量;
				weekNo = cal.get(Calendar.DAY_OF_WEEK); // 获取当前日期的周数;
				dayOfYear = cal.get(Calendar.DAY_OF_YEAR);// 年之日;
				weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);// 年之周;
				monthOfYear = cal.get(Calendar.MONTH);// 年之月;
				dYear = cal.get(Calendar.YEAR);// 年份;

				tempStrDate = new SimpleDateFormat("yyyy-MM-dd")
						.format(tempDate);

				/** **事件存储类型:从startDate到endDate每天** */
				Event event = fillEvent(request, eventForm, tempStrDate);
				String allDay = request.getParameter("allDay");
				if (allDay == null
						&& !(reStart.equals(tempDate) || reEnd.equals(tempDate))) {// 等于为全天事件,并且
					if (tempDate.equals(reEnd)) {
						event.setStartTime("上午12:00");
						event.setStartTimePoint(1);
					} else if (tempDate.equals(reStart)) {
						event.setEndTime("上午12:00");
						event.setEndTimePoint(1);
					} else {
						event.setStartTime("上午12:00");
						event.setEndTime("上午12:00");
						event.setStartTimePoint(1);
						event.setEndTimePoint(1);
					}
				}
				event.setEventSeq(null);// 没有序列,设置序列号为空;
				event.setStartDate(tempStrDate);// 设置开始执行日期;
				event.setEndDate(tempStrDate);// 设置结束执行日期;
				event.setReStartDate(startDate);// 当没有循环的时候,设置开始时间;
				event.setReEndDate(endDate);// 当没有循环的时候,设置结束时间;
				event.setReCopy(null);// 是否周期;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -