From c659ff50dfce120d02fa906a33f7b4ab20ffddc2 Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期一, 11 十一月 2024 11:37:21 +0800 Subject: [PATCH] update --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java | 232 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 143 insertions(+), 89 deletions(-) diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java index a99d97b..ac17d84 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java @@ -2,30 +2,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; -import org.jeecg.modules.mdc.entity.MdcDeviceCalendar; -import org.jeecg.modules.mdc.entity.MdcShiftSub; +import org.jeecg.modules.mdc.entity.*; import org.jeecg.modules.mdc.mapper.MdcDeviceCalendarMapper; -import org.jeecg.modules.mdc.service.IMdcDeviceCalendarService; -import org.jeecg.modules.mdc.service.IMdcEquipmentService; -import org.jeecg.modules.mdc.service.IMdcShiftSubService; +import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.vo.EquipmentCalendarVo; import org.jeecg.modules.mdc.vo.MdcDeviceCalendarQueryVo; import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.time.DayOfWeek; +import java.math.BigDecimal; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * @Description: 璁惧宸ヤ綔鏃ュ巻琛� @@ -41,6 +36,12 @@ @Resource private IMdcShiftSubService mdcShiftSubService; + @Resource + private IMdcVacationManagementService mdcVacationManagementService; + + @Resource + private IMdcEquipmentOvertimeService mdcEquipmentOvertimeService; + /** * 鍒嗛〉鍒楄〃鏌ヨ */ @@ -50,17 +51,17 @@ List<String> equipmentIds = new ArrayList<>(); if (StringUtils.isNotEmpty(mdcDeviceCalendarQueryVo.getParentId()) && StringUtils.isEmpty(mdcDeviceCalendarQueryVo.getEquipmentId())) { if ("2".equals(mdcDeviceCalendarQueryVo.getTypeTree())) { - //閮ㄩ棬灞傜骇 + // 閮ㄩ棬灞傜骇 equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, mdcDeviceCalendarQueryVo.getParentId()); } else { - //浜х嚎灞傜骇 + // 浜х嚎灞傜骇 equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, mdcDeviceCalendarQueryVo.getParentId()); } } else if (StringUtils.isNotEmpty(mdcDeviceCalendarQueryVo.getEquipmentId())) { - //鍗曞彴璁惧淇℃伅 + // 鍗曞彴璁惧淇℃伅 mdcDeviceCalendarQueryVo.setEquipmentIdList(Collections.singletonList(mdcDeviceCalendarQueryVo.getEquipmentId())); } else { - //鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� + // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� if ("2".equals(mdcDeviceCalendarQueryVo.getTypeTree())) { //閮ㄩ棬灞傜骇 equipmentIds = mdcEquipmentService.getEquipmentIdsByDepart(userId, null); @@ -73,99 +74,152 @@ mdcDeviceCalendarQueryVo.setEquipmentIdList(equipmentIds); } + if (mdcDeviceCalendarQueryVo.getEquipmentIdList() == null || mdcDeviceCalendarQueryVo.getEquipmentIdList().isEmpty()) { + return null; + } + return this.baseMapper.pageList(pageData, mdcDeviceCalendarQueryVo); } @Override + @Transactional(rollbackFor = Exception.class) public boolean saveCalendar(EquipmentCalendarVo calendarVo) { String[] equipmentIdList = calendarVo.getEquipmentId().split(","); - //鐢熸晥鏃堕棿 - LocalDate takeEffectDate = calendarVo.getTakeEffectDate(); - //澶辨晥鏃堕棿 - LocalDate invalidDate = calendarVo.getInvalidDate(); - //澶勭悊鏄熸湡 - Map<String, String> map = new HashMap<>(); - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getMonShiftId())) { - map.put("1", calendarVo.getMonShiftId()); - } - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getTueShiftId())) { - map.put("2", calendarVo.getTueShiftId()); - } - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getWedShiftId())) { - map.put("3", calendarVo.getWedShiftId()); - } - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getThuShiftId())) { - map.put("4", calendarVo.getThuShiftId()); - } - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getFriShiftId())) { - map.put("5", calendarVo.getFriShiftId()); - } - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getSatShiftId())) { - map.put("6", calendarVo.getSatShiftId()); - } - if (org.apache.commons.lang.StringUtils.isNotBlank(calendarVo.getSunShiftId())) { - map.put("7", calendarVo.getSunShiftId()); - } - if (map.isEmpty()) { - return false; - } + List<String> dateList = calendarVo.getDateList(); + List<MdcShiftSub> mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper<MdcShiftSub>().eq(MdcShiftSub::getShiftId, calendarVo.getShiftId()).eq(MdcShiftSub::getShiftSubStatus, "1")); List<MdcDeviceCalendar> calendarList = new ArrayList<>(); - map.forEach((key, value) -> { - List<MdcShiftSub> mdcShiftSubList = mdcShiftSubService.list(new LambdaQueryWrapper - <MdcShiftSub>().eq(MdcShiftSub::getShiftId, value).eq(MdcShiftSub::getShiftSubStatus, "1")); - List<LocalDate> meetDayOfWeekLocalDates = getMeetDayOfWeekLocalDates(takeEffectDate, invalidDate, key); - if (!meetDayOfWeekLocalDates.isEmpty()) { - List<String> dates = meetDayOfWeekLocalDates.stream().map(localDate -> localDate.format(DateTimeFormatter.BASIC_ISO_DATE)).collect(Collectors.toList()); - LambdaUpdateChainWrapper<MdcDeviceCalendar> lambdaUpdate = this.lambdaUpdate(); - lambdaUpdate.in(MdcDeviceCalendar::getEffectiveDate, dates).in(MdcDeviceCalendar::getEqumentId, Arrays.asList(equipmentIdList)); - lambdaUpdate.remove(); - List<MdcDeviceCalendar> calendars = handleMdcDeviceCalendar(dates, equipmentIdList, mdcShiftSubList, key); - calendarList.addAll(calendars); + for (String equipmentId : equipmentIdList) { + for (String date : dateList) { + for (MdcShiftSub mdcShiftSub : mdcShiftSubList) { + this.baseMapper.delete(new LambdaQueryWrapper<MdcDeviceCalendar>().eq(MdcDeviceCalendar::getEquipmentId, equipmentId).eq(MdcDeviceCalendar::getEffectiveDate, date)); + MdcDeviceCalendar mdcDeviceCalendar = new MdcDeviceCalendar(); + mdcDeviceCalendar.setEffectiveDate(date); + mdcDeviceCalendar.setEquipmentId(equipmentId); + mdcDeviceCalendar.setShiftId(mdcShiftSub.getShiftId()); + mdcDeviceCalendar.setShiftSubId(mdcShiftSub.getId()); + calendarList.add(mdcDeviceCalendar); + } } - }); + } this.saveBatch(calendarList); return true; } /** - * 鑾峰彇涓�娈垫椂闂磋寖鍥村唴绗﹀悎鏄熸湡鍑犵殑鏃ユ湡闆嗗悎 + * 鏌ヨ鐝埗鏁版嵁 * - * @param startDate 寮�濮嬫椂闂� - * @param endDate 缁撴潫鏃堕棿 - * @param workDate 鍛ㄥ嚑 1,2,3,4 + * @param equipmentId + * @param stringDates + * @return */ - public static List<LocalDate> getMeetDayOfWeekLocalDates(LocalDate startDate, LocalDate endDate, String workDate) { - - List<DayOfWeek> dayOfWeeks = Stream.of(workDate.split(",")) - .map(Integer::valueOf) - .map(DayOfWeek::of) - .collect(Collectors.toList()); - - long distance = ChronoUnit.DAYS.between(startDate, endDate); - - return Stream.iterate(startDate, d -> d.plusDays(1)) - .limit(distance + 1) - .filter(localDate -> dayOfWeeks.contains(localDate.getDayOfWeek())) - .collect(Collectors.toList()); + @Override + public List<MdcDeviceCalendarVo> listByEquipmentAndDate(String equipmentId, List<String> stringDates) { + try { + List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDates(equipmentId, stringDates); + if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { + return mdcDeviceCalendarVos; + } else { + return null; + } + } catch (Exception e) { + return null; + } } - public List<MdcDeviceCalendar> handleMdcDeviceCalendar(List<String> dates, String[] equipment, List<MdcShiftSub> mdcShiftSubList, String weekNumber) { - List<MdcDeviceCalendar> ds = new ArrayList<>(); - for (String date : dates) { - for (String equipmentId : equipment) { - for (MdcShiftSub temp : mdcShiftSubList) { - MdcDeviceCalendar mdcDeviceCalendar = new MdcDeviceCalendar(); - if (org.apache.commons.lang.StringUtils.isNotEmpty(equipmentId)) { - mdcDeviceCalendar.setEqumentId(equipmentId); + /** + * 璁$畻瀹為檯鐝骇澶╂暟 + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public BigDecimal computeActualWorkDayCount(String equipmentId, String validDate) { + validDate = validDate.replaceAll("-", ""); + List<String> validDateList = this.baseMapper.computeActualWorkDayCount(equipmentId, validDate); + return new BigDecimal(validDateList.size()); + } + + /** + * 鏌ヨ鐝鍒嗙被 + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public List<String> findShiftSort(String equipmentId, String validDate) { + validDate = validDate.replaceAll("-", ""); + return this.baseMapper.findShiftSort(equipmentId, validDate); + } + + /** + * 璁$畻鐝鏃堕棿 + * + * @param equipmentId + * @param validDate + * @return + */ + @Override + public BigDecimal computeShiftTimeCount(String equipmentId, String validDate) { + validDate = validDate.replaceAll("-", ""); + Integer shiftCount = this.baseMapper.computeShiftTimeCount(equipmentId, validDate); + return new BigDecimal(shiftCount); + } + + /** + * 鑷姩鐢熸垚璁惧宸ヤ綔鏃ュ巻 + */ + @Override + public void generateDeviceCalendar() { + // 鏆傚畾姣忓ぉ鏅氫笂11鐐规墽琛� + //鏌ヨ榛樿鐝埗 + List<MdcDeviceCalendarVo> acquiesceShift = this.baseMapper.findAcquiesceShift(); + // 鑾峰彇鏄庢棩鏃ユ湡 + String localDate = LocalDate.now().plusDays(1).toString(); + // 鑾峰彇璁惧鍒楄〃 + List<MdcEquipment> equipmentList = mdcEquipmentService.list(); + List<MdcDeviceCalendar> result = new ArrayList<>(); + for (MdcEquipment mdcEquipment : equipmentList) { + List<MdcDeviceCalendar> list = super.list(new LambdaQueryWrapper<MdcDeviceCalendar>().eq(MdcDeviceCalendar::getEquipmentId, mdcEquipment.getEquipmentId()).eq(MdcDeviceCalendar::getEffectiveDate, localDate.replaceAll("-", ""))); + if (list == null || list.isEmpty()) { + List<MdcVacationManagement> vacationManagementList = mdcVacationManagementService.list(new LambdaQueryWrapper<MdcVacationManagement>().eq(MdcVacationManagement::getEquipmentId, mdcEquipment.getEquipmentId()).eq(MdcVacationManagement::getVacationDate, localDate)); + if (vacationManagementList == null || vacationManagementList.isEmpty()) { + String effectiveDate = localDate.replaceAll("-", ""); + for (MdcDeviceCalendarVo mdcDeviceCalendarVo : acquiesceShift) { + MdcDeviceCalendar mdcDeviceCalendar = new MdcDeviceCalendar(); + mdcDeviceCalendar.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcDeviceCalendar.setEffectiveDate(effectiveDate); + mdcDeviceCalendar.setShiftId(mdcDeviceCalendarVo.getShiftId()); + mdcDeviceCalendar.setShiftSubId(mdcDeviceCalendarVo.getShiftSubId()); + result.add(mdcDeviceCalendar); } - mdcDeviceCalendar.setShiftId(temp.getShiftId()); - mdcDeviceCalendar.setShiftSubId(temp.getId()); - mdcDeviceCalendar.setEffectiveDate(date); - mdcDeviceCalendar.setWeekNumber(weekNumber); - ds.add(mdcDeviceCalendar); } } } - return ds; + if (!result.isEmpty()) { + super.saveBatch(result); + } } + + @Override + public MdcDeviceCalendar getFirstData(String equipmentId) { + return this.baseMapper.getFirstData(equipmentId); + } + + @Override + public List<MdcDeviceCalendarVo> listByEquipmentIdAndDate(String equipmentId, String date) { + List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDate(equipmentId, date); + if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { + for (MdcDeviceCalendarVo mdcDeviceCalendarVo : mdcDeviceCalendarVos) { + List<MdcEquipmentOvertime> list = mdcEquipmentOvertimeService.list(new LambdaQueryWrapper<MdcEquipmentOvertime>().eq(MdcEquipmentOvertime::getEquipmentId, mdcDeviceCalendarVo.getEquipmentId()).eq(MdcEquipmentOvertime::getTheDate, mdcDeviceCalendarVo.getEndDate())); + if (list != null && !list.isEmpty()) { + mdcDeviceCalendarVo.setOvertimeStartTime(list.get(0).getStartTime()); + mdcDeviceCalendarVo.setOvertimeEndTime(list.get(0).getEndTime()); + } + } + } + return mdcDeviceCalendarVos; + } + } -- Gitblit v1.9.3