因為公司最近對接的一個支付公司存在在途資金铭拧、結(jié)算資金和信息流等情況时肿,結(jié)算時T+1結(jié)算庇茫,需要我們系統(tǒng)自行判斷結(jié)算日期。
應(yīng)為節(jié)假日是由國務(wù)院規(guī)定螃成,所以沒辦法提前預(yù)計旦签,只能每年維護(hù),網(wǎng)上看到的節(jié)假日判斷接口寸宏,也是自己維護(hù)的宁炫。所以決定自己開發(fā)。
使用到的工具JAR:hutool
數(shù)據(jù)庫表設(shè)計:
CREATE TABLE `t_sys_holiday` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`work_day` date NOT NULL COMMENT '日期',
`day_type` int(1) DEFAULT '0' COMMENT '日期類型(0.工作日氮凝,1.周末羔巢,2.節(jié)假日)',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
`update_time` datetime DEFAULT NULL COMMENT '修改時間',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工作節(jié)假日表';
具體功能與方法:
// 根據(jù)年份初始化數(shù)據(jù)
public void initHolidayData(String year) {
try {
// 設(shè)置區(qū)間段,獲取區(qū)間段的所有日期
List<DateTime> dateList = getRangeDateList(year);
List<SysHoliday> list = new ArrayList<>();
dateList.forEach(item -> {
SysHoliday sysHoliday = new SysHoliday();
sysHoliday.setWorkday(item.toJdkDate());
sysHoliday.setDayType(SysHolidayConstant.DATE_TYPE_IS_WORKDAY);
sysHoliday.setCreateTime(new Date());
list.add(sysHoliday);
});
this.insertBatch(list);
}catch (Exception e){
e.printStackTrace();
}
}
// 根據(jù)日期獲取下一個工作日
public Date getNextWorkDay(Date date) {
EntityWrapper<SysHoliday> entityWrapper = new EntityWrapper<>();
entityWrapper.gt("work_day", date);
entityWrapper.eq("day_type", SysHolidayConstant.DATE_TYPE_IS_WORKDAY);
List<SysHoliday> sysHolidayList = this.selectList(entityWrapper);
if (null != sysHolidayList && sysHolidayList.size() > 0) {
return sysHolidayList.get(0).getWorkday();
}else{
return null;
}
}
// 根據(jù)日期獲取Holiday對象
public SysHoliday getHolidayByDate(String date) {
EntityWrapper<SysHoliday> entityWrapper = new EntityWrapper<>();
entityWrapper.eq("work_day", DateUtil.parseDate(date));
return this.selectOne(entityWrapper);
}
2020年的節(jié)假日信息(未處理補(bǔ)班情況)
-- 周末
update t_sys_holiday set day_type = 1 where work_day in ('2020-01-04','2020-01-05','2020-01-11','2020-01-12','2020-01-18','2020-01-19','2020-01-25','2020-01-26','2020-02-01','2020-02-02','2020-02-08','2020-02-09','2020-02-15','2020-02-16','2020-02-22','2020-02-23','2020-02-29','2020-03-01','2020-03-07','2020-03-08','2020-03-14','2020-03-15','2020-03-21','2020-03-22','2020-03-28','2020-03-29','2020-04-04','2020-04-05','2020-04-11','2020-04-12','2020-04-18','2020-04-19','2020-04-25','2020-04-26','2020-05-02','2020-05-03','2020-05-09','2020-05-10','2020-05-16','2020-05-17','2020-05-23','2020-05-24','2020-05-30','2020-05-31','2020-06-06','2020-06-07','2020-06-13','2020-06-14','2020-06-20','2020-06-21','2020-06-27','2020-06-28','2020-07-04','2020-07-05','2020-07-11','2020-07-12','2020-07-18','2020-07-19','2020-07-25','2020-07-26','2020-08-01','2020-08-02','2020-08-08','2020-08-09','2020-08-15','2020-08-16','2020-08-22','2020-08-23','2020-08-29','2020-08-30','2020-09-05','2020-09-06','2020-09-12','2020-09-13','2020-09-19','2020-09-20','2020-09-26','2020-09-27','2020-10-03','2020-10-04','2020-10-10','2020-10-11','2020-10-17','2020-10-18','2020-10-24','2020-10-25','2020-10-31','2020-11-01','2020-11-07','2020-11-08','2020-11-14','2020-11-15','2020-11-21','2020-11-22','2020-11-28','2020-11-29','2020-12-05','2020-12-06','2020-12-12','2020-12-13','2020-12-19','2020-12-20','2020-12-26','2020-12-27');
-- 節(jié)假日
update t_sys_holiday set day_type = 2 where work_day in ('2020-01-01','2020-01-24','2020-01-25','2020-01-26','2020-01-27','2020-01-28','2020-01-29','2020-01-30','2020-01-31','2020-02-01','2020-02-02','2020-04-04','2020-04-05','2020-04-06','2020-05-01','2020-05-02','2020-05-03','2020-05-04','2020-05-05','2020-06-25','2020-06-26','2020-06-27','2020-10-01','2020-10-02','2020-10-03','2020-10-04','2020-10-05','2020-10-06','2020-10-07','2020-10-08');
結(jié)語:
功能方法都很簡單,希望能對大家有幫助竿秆。