HolidayUtil.java
4.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/**
* <p>Title: DoublePublicityServiceImpl.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2017</p>
* <p>Company: www.baidudu.com</p>
* @author hanln
* @date 2018年9月7日
* @version 1.0
*/
package com.lhcredit.project.webbusiness.controller;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.lhcredit.project.business.HolidayWorkday.domain.HolidayWorkday;
import org.springframework.stereotype.Component;
/**
* Description:
*
* @author hanln
* @date 2018年9月7日
*/
@Component
// 加载配置文件
public class HolidayUtil {
// public static void main(String[] args) throws Exception{
// HolidayUtil service = new HolidayUtil();
// HolidayUtil doublePublicityService = new HolidayUtil();
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
// String date1 = simpleDateFormat.format(new Date());
// String workDay = doublePublicityService.getWorkDay(date1, "377");
// System.out.println(workDay);
// }
public List<HolidayWorkday> getHolidayWorkdayList() {
return holidayWorkdayList;
}
public void setHolidayWorkdayList(List<HolidayWorkday> holidayWorkdayList) {
this.holidayWorkdayList = holidayWorkdayList;
}
public List<HolidayWorkday> holidayWorkdayList;
public Boolean isWorkingDay(long time){
List<String> holiday =new ArrayList<>();
//节假日
holidayWorkdayList.forEach(h->{
holiday.add(h.getHoliday());
});
//额外工作日
List<String> extraWorkDay =new ArrayList<>();
holidayWorkdayList.forEach(h->{
extraWorkDay.add(h.getWorkday());
});
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.of("+8"));
String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//是否加班日
if (extraWorkDay.contains(formatTime)) {
return true;
}
//是否节假日
if (holiday.contains(formatTime)) {
return false;
}
//如果是1-5表示周一到周五 是工作日
DayOfWeek week = dateTime.getDayOfWeek();
if (week == DayOfWeek.SATURDAY || week == DayOfWeek.SUNDAY) {
return false;
}
return true;
}
public String getWorkDay(String date, String entrustType) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date d=sdf.parse(date);
Boolean workingDay = isWorkingDay(d.getTime());
Integer deliveryDays = null;
if (Integer.parseInt(entrustType)== 376){
deliveryDays = 5;
}
if (Integer.parseInt(entrustType)== 377){
deliveryDays = 3;
}
if (Integer.parseInt(entrustType)== 383){
deliveryDays = 2;
}
Date sday=null;
//判断行政决定日是否为工作日
if(workingDay){
// System.out.println("工作日");
//行政决定日 + 5个工作日
int k=1;
int j=1;
while(true){
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, j);
Date day=c.getTime();
Boolean b=isWorkingDay(day.getTime());
//传工作日
if(k==deliveryDays){
if(b){
sday=day;
break;
}
}
if(b){
k++;
}
j++;
}
}else {
// System.out.println("开开心心过节!!!");
// 计算工作日
int k=1;
int j=1;
while(true){
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, j);
Date day=c.getTime();
Boolean b=isWorkingDay(day.getTime());
//放入天数
if(k==deliveryDays){
if(b){
sday=day;
break;
}
}
if(b){
k++;
}
j++;
}
}
return sdf.format(sday);
}
}