Commit 5715baec authored by chenzhao's avatar chenzhao

bug2468 值班排班,日历视图单班次执勤人数满足≤3且班次≤2时,值班显示方式错误

parent f1125ef5
...@@ -30,9 +30,13 @@ import org.typroject.tyboot.core.foundation.utils.Bean; ...@@ -30,9 +30,13 @@ import org.typroject.tyboot.core.foundation.utils.Bean;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author DELL * @author DELL
...@@ -133,17 +137,59 @@ public class DutyCommonServiceImpl implements IDutyCommonService { ...@@ -133,17 +137,59 @@ public class DutyCommonServiceImpl implements IDutyCommonService {
m.put("dutyShift", personShiftList); m.put("dutyShift", personShiftList);
} }
/*bug2468 值班排班,日历视图单班次执勤人数满足≤3且班次≤2时,值班显示方式错误 陈召 开始*/
//获取时间段内的每一天
public static List<String> getBetweenDate(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);
if (distance < 1) {
return list;
}
Stream.iterate(startDate, d -> d.plusDays(1)).limit(distance + 1).forEach(f -> list.add(f.toString()));
return list;
}
@Override @Override
public List<Map<String, Object>> statisticsDay(String beginDate, String endDate) throws ParseException { public List<Map<String, Object>> statisticsDay(String beginDate, String endDate) throws ParseException {
DutyViewTypeEnum viewTypeEnum = this.inferView(beginDate, endDate, RequestContext.getAppKey());
Date dateBegin = DateUtils.dateParse(beginDate, DateUtils.DATE_PATTERN);
String timeStart = DateUtils.dateTimeToDateString(dateBegin);
Date dateEnd = DateUtils.dateParse(endDate, DateUtils.DATE_PATTERN);
String timeEnd = DateUtils.dateTimeToDateString(dateEnd);
List<String> betweenDate = getBetweenDate(timeStart, timeEnd);
//拿到每一天的视图展示
String beginTime = null;
String endTime = null;
List<Map<String, Object>> viewTypeResult = new ArrayList<>();
for (String time : betweenDate) {
beginTime = time + " 00:00:00";
endTime = time + " 23:59:59";
Map<String, Object> viewTypeMap = new HashMap<>();
viewTypeMap.put("date",time);
viewTypeMap.put("viewType", this.inferView(beginTime, endTime, RequestContext.getAppKey()));
viewTypeResult.add(viewTypeMap);
}
List<Map<String, Object>> rangeDate = dutyPersonShiftService.getBaseMapper().genRangeDate(beginDate, endDate); List<Map<String, Object>> rangeDate = dutyPersonShiftService.getBaseMapper().genRangeDate(beginDate, endDate);
return rangeDate.stream().map(p -> {
Map<String, Object> result = new LinkedHashMap<>(); List<Map<String, Object>> resultMap = new ArrayList<>();
result.put("key", p.get("date")); for (Map<String, Object> stringObjectMap : viewTypeResult) {
result.put("viewType", viewTypeEnum.getCode()); for (Map<String, Object> objectMap : rangeDate) {
result.put("data", this.buildViewData(viewTypeEnum, p.get("date").toString(), RequestContext.getAppKey())); if (stringObjectMap.get("date").equals(objectMap.get("date"))){
return result; Map<String, Object> result = new LinkedHashMap<>();
}).collect(Collectors.toList()); DutyViewTypeEnum viewType = (DutyViewTypeEnum) stringObjectMap.get("viewType");
result.put("key", objectMap.get("date"));
result.put("viewType", viewType.getCode());
result.put("data", this.buildViewData(viewType, objectMap.get("date").toString(), RequestContext.getAppKey()));
resultMap.add(result);
}
}
}
return resultMap;
/*bug2468 值班排班,日历视图单班次执勤人数满足≤3且班次≤2时,值班显示方式错误 陈召 结束*/
} }
private Object buildViewData(DutyViewTypeEnum viewTypeEnum, String dutyDate, String appKey) { private Object buildViewData(DutyViewTypeEnum viewTypeEnum, String dutyDate, String appKey) {
......
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