Commit b8745147 by 谢春璐

fix

parent bc08f3ed
...@@ -7,11 +7,14 @@ import java.time.LocalDateTime; ...@@ -7,11 +7,14 @@ import java.time.LocalDateTime;
import java.time.Month; import java.time.Month;
import java.time.YearMonth; import java.time.YearMonth;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import java.util.stream.Stream;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.DateUtil;
...@@ -116,7 +119,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ...@@ -116,7 +119,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
} }
public static String[] WEEK_DAYS_ZJ = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; public static String[] WEEK_DAYS_ZJ = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
/** /**
* 根据日期获取星期几 * 根据日期获取星期几
...@@ -330,5 +333,25 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { ...@@ -330,5 +333,25 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
return dates; return dates;
} }
/**
* 获取指定两个日期之间的所有日期
*/
public static List<String> getAllDatesOfTwoDate(String start, String end) {
List<String> list = new ArrayList<>();
LocalDate startDate = LocalDate.parse(start);
LocalDate endDate = LocalDate.parse(end);
long distance = ChronoUnit.DAYS.between(startDate, endDate);
Stream.iterate(startDate, d -> {
return d.plusDays(1);
}).limit(distance + 1).forEach(f -> {
list.add(f.toString());
});
return list;
}
} }
...@@ -122,12 +122,29 @@ public class FileServiceImpl implements FileService { ...@@ -122,12 +122,29 @@ public class FileServiceImpl implements FileService {
ArrayList<String> titleList = new ArrayList<>(); ArrayList<String> titleList = new ArrayList<>();
titleList.add("姓名"); titleList.add("姓名");
titleList.addAll(staffList.stream().max(Comparator.comparing(staff -> staff.getWorkCheckList().size())).get()
.getWorkCheckList().stream().map(workCheck -> // 取打卡记录中最早日期和最晚日期为标题的开始日期和结束日期
DateUtils.format(DateUtils.parseDate(workCheck.getDate()), DateUtils.yyyyMMdd1).concat("(") String start = staffList.stream().min(Comparator.comparing(staff -> staff.getWorkCheckList().get(0).getDate()))
.concat(DateUtils.getWeekday(DateUtils.parseDate(workCheck.getDate()))) .get()
.concat(")") .getWorkCheckList().get(0).getDate();
).collect(Collectors.toList()));
List<WorkCheck> workCheckList = staffList.stream()
.max(Comparator
.comparing(staff -> staff.getWorkCheckList().get(staff.getWorkCheckList().size() - 1).getDate()))
.get()
.getWorkCheckList();
String end = workCheckList.get(workCheckList.size() - 1).getDate();
List<String> dateStrs = DateUtils
.getAllDatesOfTwoDate(DateUtils.format(DateUtils.parseDate(start), DateUtils.yyyyMMdd),
DateUtils.format(DateUtils.parseDate(end), DateUtils.yyyyMMdd));
titleList.addAll(dateStrs.stream().map(d ->
d.concat("(")
.concat(DateUtils.getWeekday(DateUtils.parseDate(d)))
.concat(")")
).collect(Collectors.toList()));
String[] titleStrArr = titleList.toArray(new String[titleList.size()]); String[] titleStrArr = titleList.toArray(new String[titleList.size()]);
data.setTitles(titleStrArr); data.setTitles(titleStrArr);
...@@ -149,7 +166,8 @@ public class FileServiceImpl implements FileService { ...@@ -149,7 +166,8 @@ public class FileServiceImpl implements FileService {
.equalsIgnoreCase(Integer.toString(7)); .equalsIgnoreCase(Integer.toString(7));
for (WorkCheck check : staff.getWorkCheckList()) { for (WorkCheck check : staff.getWorkCheckList()) {
if (title.substring(0, title.indexOf("(")).equalsIgnoreCase(check.getDate())) { if (title.substring(0, title.indexOf("(")).equalsIgnoreCase(
DateUtils.format(DateUtils.parseDate(check.getDate()), DateUtils.yyyyMMdd))) {
String detail = ""; String detail = "";
if (!isWeekend) { if (!isWeekend) {
......
...@@ -3,6 +3,7 @@ package com.zanchina.check; ...@@ -3,6 +3,7 @@ package com.zanchina.check;
import com.zanchina.check.common.DateUtils; import com.zanchina.check.common.DateUtils;
import java.text.ParseException; import java.text.ParseException;
import java.util.Date; import java.util.Date;
import java.util.List;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
...@@ -18,7 +19,9 @@ public class CheckApplicationTests { ...@@ -18,7 +19,9 @@ public class CheckApplicationTests {
Date d1 = DateUtils.parseDate("9:00", DateUtils.HHmm); Date d1 = DateUtils.parseDate("9:00", DateUtils.HHmm);
Date d2 = DateUtils.parseDate("2018/06/19 9:00", DateUtils.yyyyMMddHHmm1); Date d2 = DateUtils.parseDate("2018/06/19 9:00", DateUtils.yyyyMMddHHmm1);
System.out.print(d1.before(d2)); List<String> allDatesOfTwoDate = DateUtils.getAllDatesOfTwoDate("2018-06-30", "2018-07-15");
System.out.print(allDatesOfTwoDate);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment