一键导入一年日期到数据库

controller层:

@Controller

@RequestMapping("/workday")
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);
    }

猜你喜欢

转载自blog.csdn.net/weixin_39643007/article/details/78658652