Commit 15cd416d by 刘鑫

fix(ID1004243): cutoff时间修改不生效 博西PEA_V1.0-工作日历:输入工程师姓名或工号,搜索结果显示所有用户

1 parent 2e8adccc
......@@ -5,7 +5,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
......@@ -14,6 +13,10 @@ public interface CapacityEngineerCalendarDao extends JpaRepository<CapacityEngin
@Query("select a from CapacityEngineerCalendarEntity a where a.engineerCode=:engineerCode and a.workday between :beginDate and :endDate")
List<CapacityEngineerCalendarEntity> findCalendarByEngineerCodeAndDateBetween(String engineerCode, String beginDate, String endDate);
@Query("select a from CapacityEngineerCalendarEntity a where a.engineerCode=:engineerCode AND a.type = :type and a.workday between :beginDate and :endDate")
List<CapacityEngineerCalendarEntity> findCalendarByEngineerCodeAAndTypeAndDateBetween(String engineerCode, String type, String beginDate, String endDate);
CapacityEngineerCalendarEntity getByPlanId(String planId);
@Query("select count(*) from CapacityEngineerCalendarEntity a where a.type = :type and (a.startTime BETWEEN :startDate and :endDate) and a.engineerCode in :engineers")
......
......@@ -13,6 +13,10 @@ public class EngineerCalendarDTO {
* 姓名,工号
*/
private String key;
/**
* 日程类型
*/
private String type;
private String levelType;
private String levelValue;
private Integer size = DEFAULT_PAGE_SIZE;
......
......@@ -11,27 +11,11 @@ import com.dituhui.pea.order.common.EngineerUtils;
import com.dituhui.pea.order.common.OccupyInfoDetail;
import com.dituhui.pea.order.common.jackson.DateTimeUtil;
import com.dituhui.pea.order.common.jackson.DateUtil;
import com.dituhui.pea.order.dao.CapacityEngineerCalendarDao;
import com.dituhui.pea.order.dao.EngineerBusinessDao;
import com.dituhui.pea.order.dao.EngineerInfoDao;
import com.dituhui.pea.order.dao.OrgTeamDao;
import com.dituhui.pea.order.dao.OrgTeamEngineerDao;
import com.dituhui.pea.order.dao.PubParamsDao;
import com.dituhui.pea.order.dto.CalendarBatAddDTO;
import com.dituhui.pea.order.dto.CalendarBatDelDTO;
import com.dituhui.pea.order.dto.CalendarDeleteDTO;
import com.dituhui.pea.order.dto.CalendarDetailDTO;
import com.dituhui.pea.order.dto.CalendarQueryNumDTO;
import com.dituhui.pea.order.dto.CalendarTypeDTO;
import com.dituhui.pea.order.dto.CalendarUpdateDTO;
import com.dituhui.pea.order.dto.EngineerCalendarDTO;
import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.*;
import com.dituhui.pea.order.dto.param.EngineerCalendar;
import com.dituhui.pea.order.dto.param.EngineerCalendarResultDTO;
import com.dituhui.pea.order.entity.CapacityEngineerCalendarEntity;
import com.dituhui.pea.order.entity.EngineerBusinessEntity;
import com.dituhui.pea.order.entity.EngineerInfoEntity;
import com.dituhui.pea.order.entity.OrgTeamEntity;
import com.dituhui.pea.order.entity.PubParamsEntity;
import com.dituhui.pea.order.entity.*;
import com.dituhui.pea.order.service.EngineerCalendarService;
import com.dituhui.pea.user.IUser;
import com.fasterxml.jackson.core.JsonProcessingException;
......@@ -48,25 +32,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.sql.Timestamp;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -100,7 +69,14 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
public Result<?> getEngineersCalendar(EngineerCalendarDTO.Request req) {
// 技术员日历,查询 capacity_engineer_calendar表,如果当日有各种事项,进行显示;否则显示正常上班;
List<String> allCodes = engineerUtil.getEngineersByLevel(req.getLevelType(), req.getLevelValue()).stream()
List<EngineerInfoEntity> engineersByLevel = engineerUtil.getEngineersByLevel(req.getLevelType(), req.getLevelValue());
if (StringUtils.isNotBlank(req.getKey())) {
engineersByLevel = engineersByLevel.stream()
.filter(en -> en.getEngineerCode().contains(req.getKey()) || en.getName().contains(req.getKey()))
.collect(Collectors.toList());
}
List<String> allCodes = engineersByLevel.stream()
.map(EngineerInfoEntity::getEngineerCode).collect(Collectors.toList());
Page<EngineerInfoEntity> page = engineerUtil.filterEngineersByKeyAndPage(allCodes, req.getKey(), req.getPage(), req.getSize());
......@@ -111,7 +87,11 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
EngineerCalendarDTO.Engineer engineer = new EngineerCalendarDTO.Engineer();
engineer.setEngineerCode(e.getEngineerCode());
engineer.setName(e.getName());
engineer.setCalendar(getOneEngineerCalendars(e.getEngineerCode(), req.getDate(), edate));
List<EngineerCalendarDTO.Calendar> oneEngineerCalendars = getOneEngineerCalendars(e.getEngineerCode(), req.getDate(), edate, req.getType());
if (CollectionUtils.isEmpty(oneEngineerCalendars)) {
continue;
}
engineer.setCalendar(oneEngineerCalendars);
engineers.add(engineer);
}
EngineerCalendarDTO.Result rs = new EngineerCalendarDTO.Result();
......@@ -491,7 +471,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
Instant endInstant = LocalDateTime.of(date, LocalTime.MAX).atZone(ZoneId.of("+8")).toInstant();
engineerCalendar.setEndTime(Date.from(endInstant));
engineerCalendar.setDate(Date.from(instant));
if (!engineerWorkDay(engineerCode,date)) {
if (!engineerWorkDay(engineerCode, date)) {
engineerCalendar.setEventType("REST");
engineerCalendar.setEvent("休息");
engineerCalendar.setContent("休息");
......@@ -509,7 +489,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
return result;
}
private List<EngineerCalendarDTO.Calendar> getOneEngineerCalendars(String engineerCode, String bdate, String edate) {
private List<EngineerCalendarDTO.Calendar> getOneEngineerCalendars(String engineerCode, String bdate, String edate, String type) {
// 返回某一个技术员,日期范围内的日历列表
List<EngineerCalendarDTO.Calendar> calendars = new ArrayList<>();
LocalDate startDate = DateUtils.localDateFromStr(bdate);
......@@ -518,7 +498,16 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
.limit(ChronoUnit.DAYS.between(startDate, endDate.plusDays(1)))
.collect(Collectors.toList());
Map<String, List<CapacityEngineerCalendarEntity>> configs = capacityEngineerCalendarDao.findCalendarByEngineerCodeAndDateBetween(engineerCode, bdate, edate).stream()
List<CapacityEngineerCalendarEntity> calendarEntityList;
if (StringUtils.isNotBlank(type)) {
calendarEntityList = capacityEngineerCalendarDao.findCalendarByEngineerCodeAAndTypeAndDateBetween(engineerCode, type, bdate, edate);
} else {
calendarEntityList = capacityEngineerCalendarDao.findCalendarByEngineerCodeAndDateBetween(engineerCode, bdate, edate);
}
if (CollectionUtils.isEmpty(calendarEntityList)) {
return Collections.emptyList();
}
Map<String, List<CapacityEngineerCalendarEntity>> configs = calendarEntityList.stream()
.collect(Collectors.groupingBy(CapacityEngineerCalendarEntity::getWorkday));
for (LocalDate date : datesInRange) {
String sDate = LocalDateTimeUtil.format(date, PATTERN_DATE);
......@@ -530,7 +519,7 @@ public class EngineerCalendarServiceImpl implements EngineerCalendarService {
for (CapacityEngineerCalendarEntity e : configs.get(sDate)) {
EngineerCalendarDTO.Content content = new EngineerCalendarDTO.Content();
content.setPlanId(e.getPlanId());
content.setType("LEAVE");
content.setType(e.getType());
content.setTitle(e.getReason());
content.setValue(getCalendarDuration(e.getStartTime(), e.getEndTime()));
content.setPlanId(e.getPlanId());
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!