package com.qianwen.smartman.modules.smis.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; import com.qianwen.smartman.common.utils.LocalDateTimeUtils; import com.qianwen.smartman.common.utils.MessageUtils; import com.qianwen.core.tool.utils.CollectionUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.smis.dto.ShiftDetailDTO; import com.qianwen.smartman.modules.smis.dto.ShiftInfoDTO; import com.qianwen.smartman.modules.smis.entity.ShiftDetail; import com.qianwen.smartman.modules.smis.mapper.ShiftDetailMapper; import com.qianwen.smartman.modules.smis.service.ICalendarService; import com.qianwen.smartman.modules.smis.service.IShiftDetailService; import com.qianwen.smartman.modules.smis.service.IShiftRestTimeService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class ShiftDetailServiceImpl extends ServiceImpl implements IShiftDetailService { @Autowired private IShiftRestTimeService shiftRestTimeService; @Autowired private ICalendarService calendarService; private final Integer SHIFT1 = 1; private final Integer SHIFT2 = 2; private final Integer SHIFT3 = 3; private final Integer SHIFT4 = 4; private final String ZERO_TIME = " 00:00:00"; public void saveShiftDetail(List shiftDetailDTOList, Long modelId) { shiftDetailDTOList.stream().map(shiftDetailDTO -> { ShiftDetail shiftDetail = new ShiftDetail(); BeanUtils.copyProperties(shiftDetailDTO, shiftDetail); shiftDetail.setModelId(modelId); save(shiftDetail); if (CollectionUtil.isNotEmpty(shiftDetailDTO.getShiftRestTimeDTOList())) { this.shiftRestTimeService.saveRestTime(shiftDetailDTO.getShiftRestTimeDTOList(), modelId, shiftDetail.getId()); } return shiftDetail; }).collect(Collectors.toList()); } @Override public List getShiftInfoDtoList(List workstationIdList, LocalDate startDay, LocalDate endDay) { List calendarCodeShiftDTOList = this.calendarService.listShiftInfo(workstationIdList, startDay, endDay); String message1 = MessageUtils.message("calendar.shift.shift1", new Object[0]); String message2 = MessageUtils.message("calendar.shift.shift2", new Object[0]); String message3 = MessageUtils.message("calendar.shift.shift3", new Object[0]); String message4 = MessageUtils.message("calendar.shift.shift4", new Object[0]); calendarCodeShiftDTOList.forEach(shiftInfoDTO -> { LocalDateTime startTime = LocalDateTimeUtils.stringToLocalDateTime(shiftInfoDTO.getDate() + " 00:00:00").plusMinutes(Long.parseLong(shiftInfoDTO.getStartTime())); LocalDateTime endTime = LocalDateTimeUtils.stringToLocalDateTime(shiftInfoDTO.getDate() + " 00:00:00").plusMinutes(Long.parseLong(shiftInfoDTO.getEndTime())); shiftInfoDTO.setStartTime(LocalDateTimeUtils.formatTime(startTime, LocalDateTimeUtils.NORMAL_PATTERN)); shiftInfoDTO.setEndTime(LocalDateTimeUtils.formatTime(endTime, LocalDateTimeUtils.NORMAL_PATTERN)); shiftInfoDTO.setIndexName(Func.isNotEmpty(shiftInfoDTO.getIndexName()) ? shiftInfoDTO.getIndexName() : buildDefaultShiftName(shiftInfoDTO.getShiftIndex(), message1, message2, message3, message4)); }); return calendarCodeShiftDTOList; } public String buildDefaultShiftName(Integer shiftIndex, String message1, String message2, String message3, String message4) { String shiftName; if (this.SHIFT1.equals(shiftIndex)) { shiftName = message1; } else if (this.SHIFT2.equals(shiftIndex)) { shiftName = message2; } else if (this.SHIFT3.equals(shiftIndex)) { shiftName = message3; } else { shiftName = message4; } return shiftName; } }