package com.zhitan.system.service.impl;
|
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.zhitan.common.utils.DateUtils;
|
import com.zhitan.common.utils.SecurityUtils;
|
import com.zhitan.system.mapper.SysHolidayMapper;
|
import com.zhitan.system.domain.SysHoliday;
|
import com.zhitan.system.service.ISysHolidayService;
|
|
/**
|
* 节假日信息Service业务层处理
|
*
|
* @author zhitan
|
*/
|
@Service
|
public class SysHolidayServiceImpl implements ISysHolidayService
|
{
|
@Autowired
|
private SysHolidayMapper sysHolidayMapper;
|
|
/**
|
* 查询节假日信息
|
*
|
* @param holidayId 节假日信息ID
|
* @return 节假日信息
|
*/
|
@Override
|
public SysHoliday selectSysHolidayById(Long holidayId)
|
{
|
return sysHolidayMapper.selectSysHolidayById(holidayId);
|
}
|
|
/**
|
* 查询节假日信息列表
|
*
|
* @param sysHoliday 节假日信息
|
* @return 节假日信息集合
|
*/
|
@Override
|
public List<SysHoliday> selectSysHolidayList(SysHoliday sysHoliday)
|
{
|
return sysHolidayMapper.selectSysHolidayList(sysHoliday);
|
}
|
|
/**
|
* 新增节假日信息
|
*
|
* @param sysHoliday 节假日信息
|
* @return 结果
|
*/
|
@Override
|
public int insertSysHoliday(SysHoliday sysHoliday)
|
{
|
sysHoliday.setCreateTime(DateUtils.getNowDate());
|
sysHoliday.setCreateBy(SecurityUtils.getUsername());
|
return sysHolidayMapper.insertSysHoliday(sysHoliday);
|
}
|
|
/**
|
* 修改节假日信息
|
*
|
* @param sysHoliday 节假日信息
|
* @return 结果
|
*/
|
@Override
|
public int updateSysHoliday(SysHoliday sysHoliday)
|
{
|
sysHoliday.setUpdateTime(DateUtils.getNowDate());
|
sysHoliday.setUpdateBy(SecurityUtils.getUsername());
|
return sysHolidayMapper.updateSysHoliday(sysHoliday);
|
}
|
|
/**
|
* 批量删除节假日信息
|
*
|
* @param holidayIds 需要删除的节假日信息ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteSysHolidayByIds(Long[] holidayIds)
|
{
|
return sysHolidayMapper.deleteSysHolidayByIds(holidayIds);
|
}
|
|
/**
|
* 删除节假日信息信息
|
*
|
* @param holidayId 节假日信息ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteSysHolidayById(Long holidayId)
|
{
|
return sysHolidayMapper.deleteSysHolidayById(holidayId);
|
}
|
|
/**
|
* 判断日期是否为工作日
|
* 工作日判断逻辑:
|
* 1. 如果是周一至周五,且不是法定节假日,则为工作日
|
* 2. 如果是周六日,但是为调休工作日,则为工作日
|
*
|
* @param date 需要判断的日期
|
* @return 如果是工作日返回true,否则返回false
|
*/
|
@Override
|
public boolean isWorkDay(Date date)
|
{
|
if (date == null)
|
{
|
return false;
|
}
|
|
// 查询该日期是否在节假日表中
|
SysHoliday holiday = sysHolidayMapper.selectSysHolidayByDate(date);
|
|
// 如果在节假日表中找到记录
|
if (holiday != null)
|
{
|
// 如果是调休工作日(类型为1),则为工作日
|
if ("1".equals(holiday.getHolidayType()))
|
{
|
return true;
|
}
|
// 如果是法定节假日(类型为0),则不是工作日
|
else if ("0".equals(holiday.getHolidayType()))
|
{
|
return false;
|
}
|
}
|
|
// 如果不在节假日表中,则判断是否为周一至周五
|
Calendar cal = Calendar.getInstance();
|
cal.setTime(date);
|
|
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
|
|
// Calendar.DAY_OF_WEEK 中,1代表周日,2代表周一,3代表周二,4代表周三,5代表周四,6代表周五,7代表周六
|
// 所以工作日对应的值是2,3,4,5,6(周一至周五)
|
return dayOfWeek >= Calendar.MONDAY && dayOfWeek <= Calendar.FRIDAY;
|
}
|
}
|