controller层:
@Controller
public class WorkdayController {
@Autowired
WorkdayService workdayService;
/**
* 初始化页面
*
* @param request
* @param response
* @param workdayForm
* @return
* @throws Exception
*/
@RequestMapping("/workday_list")
public ModelMap workdayList(HttpServletRequest request, HttpServletResponse response, WorkdayForm workdayForm)
throws Exception {
ModelMap map = new ModelMap();
return map;
}
/**
* 导入一年数据信息
*
* @param request
* @param response
* @param year
* @throws Exception
*/
@RequestMapping("import_date")
public void workdayList(HttpServletRequest request, HttpServletResponse response, Integer year) throws Exception {
System.out.println(year);
String years = year.toString();
if (StringUtils.isNotBlank(years)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
java.util.Date start = sdf.parse(years + "0101");// 开始时间
java.util.Date end = sdf.parse(years + "1231");// 结束时间
List<Date> lists = dateSplit(start, end);
if (!lists.isEmpty()) {
for (Date date : lists) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
WorkDay workDay = new WorkDay();
workDay.setDate(date);
workDay.setType(isHoliday(date).toString());
workDay.setOperTime(new Date());
workdayService.saveWorkDay(workDay);
}
}
}
}
/**
* 根据日期查询日期状态
*
* @param request
* @param response
* @param date
* @return
*/
@RequestMapping("/find_type")
@ResponseBody
public List<WorkDay> findByType(HttpServletRequest request, HttpServletResponse response, Date date) {
if (date == null) {
throw new ValidateException("参数不能为空");
}
List<WorkDay> workDay = workdayService.getByType(date);
return workDay;
}
/**
* 根据日期修改日期类型状态
*
* @param request
* @param response
* @param workDay
* @return
*/
@RequestMapping("/edit_type_state")
@ResponseBody
public ModelMap update(HttpServletRequest request, HttpServletResponse response, Date date, Integer type) {
System.out.println(date);
ModelMap map = new ModelMap();
if (date == null || type == null) {
throw new ValidateException("参数不能为空");
}
int editType = workdayService.editType(date, type);
map.put("editType", editType);
return map;
}
/**
* 起始时间和结束时间判断
*
* @param date
* @return
*/
private static List<Date> dateSplit(Date start, Date end) throws Exception {
if (!start.before(end))
throw new Exception("开始时间应该在结束时间之后");
Long spi = end.getTime() - start.getTime();
Long step = spi / (24 * 60 * 60 * 1000);// 相隔天数
List<Date> dateList = new ArrayList<Date>();
dateList.add(end);
for (int i = 1; i <= step; i++) {
dateList.add(new Date(dateList.get(i - 1).getTime() - (24 * 60 * 60 * 1000)));// 比上一天减一
}
return dateList;
}
/**
* 判断是否为节假日,若是返回1,否则返回0
*
* @param date
* @return
*/
private static String isHoliday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
List<String> holidays = getHolidays();
List<String> workdays = getWorkDays();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
// System.out.println(sdf.format(date));
if (((cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
&& !workdays.contains(sdf.format(date))) || holidays.contains(sdf.format(date))) {
return WorkdayConstants.DATE_TYPE_HILIDAY;
}
return WorkdayConstants.DATE_TYPE_WORKDAY;
}
private static List<String> getHolidays() {
List<String> holidays = new ArrayList<String>();
return holidays;
}
private static List<String> getWorkDays() {
List<String> workDays = new ArrayList<String>();
return workDays;
}
}
service层:@Transactional
@Service
public class WorkdayService {
@Autowired
BaseDAO baseDAO;
/**新增导入数据
* @param workDay
* @return
*/
public WorkDay saveWorkDay(WorkDay workDay) {
this.baseDAO.save(workDay);
return null;
}
/**根据日期查询
* @param date
* @return
*/
public List<WorkDay> getByType(Date date) {
StringBuffer jpql = new StringBuffer(" select type from WorkDay WHERE date = ? ");
List<WorkDay> organs = this.baseDAO.findByJPQL(jpql.toString(),date);
return organs;
}
/**根据日期修改
* @param workDay
* @return
*/
public int editType(Date date,Integer type) {
String sql ="update workday SET type=? WHERE date = ?";
int day = this.baseDAO.executeSQL(sql, type,date);
return day;
}
}
dao层:/**
* 执行原生SQL语句
*
* @param ql
* @param params
*/
public int executeSQL(String ql, Object... params) {
return super.executeSQL(em, ql, params);
}