From d66fe6d46cdbaeb88e68ad96da6deb0b35cd131b Mon Sep 17 00:00:00 2001 From: yangys <y_ys79@sina.com> Date: 星期五, 15 十一月 2024 11:36:28 +0800 Subject: [PATCH] 清理无用代码 --- smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CalendarServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 74 insertions(+), 33 deletions(-) diff --git a/smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CalendarServiceImpl.java b/smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CalendarServiceImpl.java index de23526..27a9438 100644 --- a/smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CalendarServiceImpl.java +++ b/smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CalendarServiceImpl.java @@ -10,6 +10,7 @@ import java.time.temporal.TemporalUnit; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -30,7 +31,7 @@ import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; @@ -94,6 +95,7 @@ import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; @Service public class CalendarServiceImpl extends ServiceImpl<CalendarMapper, ProductionCalendar> implements ICalendarService { @@ -114,6 +116,9 @@ @Transactional(rollbackFor = {Exception.class}) public ProductionCalendar saveCalendar(CalendarSaveVO calendarSaveVO) { checkCalendar(calendarSaveVO, AuthUtil.getTenantId()); + + checkDateDTOList(calendarSaveVO.getDateDTOList()); + ProductionCalendar productionCalendar = ProductionCalendarConvert.INSTANCE.conver(calendarSaveVO); save(productionCalendar); saveCalendarDayTime(calendarSaveVO.getDateDTOList(), productionCalendar); @@ -130,13 +135,48 @@ return productionCalendar; } + @Transactional @Override public ProductionCalendar updateCalendar(CalendarUpdateVO calendarUpdateVO) { + + checkDateDTOList(calendarUpdateVO.getDateDTOList()); + this.calendarDayService.deleteByCalendarId(calendarUpdateVO.getId()); this.calendarDaytimeService.deleteByCalendarId(calendarUpdateVO.getId()); ProductionCalendar calendar = getById(calendarUpdateVO.getId()); updateCalendarDayTime(calendarUpdateVO.getDateDTOList(), calendar); return calendar; + } + + /** + * 妫�鏌ュ叆鍙傛棩鏈熷垪琛ㄧ殑閲嶅鏁版嵁锛屾湁閲嶅鍒欐姏鍑洪敊璇俊鎭� + * @param dateDTOList + */ + void checkDateDTOList(List<CalendarDateDTO> dateDTOList) { + List<LocalDate> dupList = dupulicateDate(dateDTOList); + if(!dupList.isEmpty()) { + String msg = StringUtils.join(dupList.stream().map(dt -> dt.format(DateTimeFormatter.ISO_DATE)).collect(Collectors.toList()), ","); + throw new ServiceException("鏃ユ湡鏁版嵁閲嶅锛�"+msg); + } + } + /*** + * 鑾峰彇dateDTOList閲岄潰閲嶅鐨勬暟鎹紙鏍规嵁鏃ユ湡锛夛紝鏃ユ湡涓�澶╁彧鏈変竴鏉� + * @param dateDTOList + * @return + */ + List<LocalDate> dupulicateDate(List<CalendarDateDTO> dateDTOList) { + if(ObjectUtil.isEmpty(dateDTOList)) { + return Collections.emptyList(); + } + List<LocalDate> dupList = new ArrayList<>(); + + Map<LocalDate, List<CalendarDateDTO>> map = dateDTOList.stream().collect(Collectors.groupingBy(CalendarDateDTO::getCalendarDate)); + map.forEach((date,dtoList) -> { + if(dtoList.size()>1) { + dupList.add(date); + } + }); + return dupList; } private void saveCalendarDayTime(List<CalendarDateDTO> dateDTOList, ProductionCalendar productionCalendar) { @@ -258,52 +298,53 @@ } private void updateCalendarDayTime(List<CalendarDateDTO> dateDTOList, ProductionCalendar calenadar) { - + final LocalDate localDateNow = LocalDate.now(); Long calendarId = calenadar.getId(); Integer year = calenadar.getYear(); - Integer currentYear = Integer.valueOf(LocalDate.now().getYear()); - Set<LocalDate> dateList = dateDTOList.stream().filter(c -> { - return !Func.isNull(c.getModelId()) && Func.isNull(c.getOffDayId()); - }).map((v0) -> { - return v0.getCalendarDate(); - }).collect(Collectors.toSet()); - Set<LocalDate> offDay = dateDTOList.stream().filter(c2 -> { - return !Func.isNull(c2.getOffDayId()); - }).map((v0) -> { - return v0.getCalendarDate(); - }).collect(Collectors.toSet()); + Integer currentYear = localDateNow.getYear(); + + //鎻愬彇鍑虹彮鍒秈d涓嶆槸null涓斾笉鏄紤鎭棩鐨� 鏃ユ湡 + Set<LocalDate> dateList = dateDTOList.stream().filter(c -> (!Func.isNull(c.getModelId()) && Func.isNull(c.getOffDayId()))).map(CalendarDateDTO::getCalendarDate).collect(Collectors.toSet()); + + //鎻愬彇鎵�鏈変负浼戞伅鏃ョ殑鏃ユ湡 + /**/ + Set<LocalDate> offDay = dateDTOList.stream().filter(c -> !Func.isNull(c.getOffDayId())).map(CalendarDateDTO::getCalendarDate).collect(Collectors.toSet()); + + //鍒濆鍖栨渶缁堣淇濆瓨鐨刣ay鍜宒aytime鍒楄〃锛岀瓑寰呭悗闈唬鐮佸~鍏� List<ProductionCalendarDaytime> productionCalendarDaytimeList = new ArrayList<>(); List<ProductionCalendarDay> productionCalendarDayList = new ArrayList<>(); - List<Long> modelIds = dateDTOList.stream().map((v0) -> { - return v0.getModelId(); - }).distinct().collect(Collectors.toList()); + + //鎻愬彇鎵�鏈夌彮鍒秈d骞跺幓閲� + List<Long> modelIds = dateDTOList.stream().map(CalendarDateDTO::getModelId).distinct().collect(Collectors.toList()); + Map<Long, ShiftVO> shiftDetailMap = this.shiftModelService.getShiftDetail(modelIds); Snowflake snowflake = IdUtil.createSnowflake(1L, 1L); + //鏌ヨ浠婂ぉ鐨刣aytime鏁版嵁鍒楄〃 List<ProductionCalendarDaytime> todayDateTimeList = this.calendarDaytimeService.list(new QueryWrapper<ProductionCalendarDaytime>().lambda() - .eq(ProductionCalendarDaytime::getCalendarDate, LocalDate.now()) + .eq(ProductionCalendarDaytime::getCalendarDate, localDateNow) .eq(ProductionCalendarDaytime::getCalendarId, calendarId) .orderByAsc(ProductionCalendarDaytime::getStartTime)); List<ProductionCalendarDaytime> curProductionCalendarDayTimeList = new ArrayList<>(); - LocalDate lastDayOfYear = LocalDateTimeUtils.getLastDayOfYear(LocalDate.now()); - long difference = year.intValue() == LocalDate.now().getYear() ? LocalDateTimeUtils.getDifference(LocalDate.now(), lastDayOfYear).intValue() : LocalDateTimeUtils.getDayOfYear(year).intValue() - 1; - long j = 0; - while (true) { - long i = j; - if (i <= difference) { - LocalDate needHandleDate = year.equals(currentYear) ? LocalDate.now().plus(difference - i, ChronoUnit.DAYS) : LocalDate.of(year.intValue(), 1, 1).plus(difference - i, ChronoUnit.DAYS);// (TemporalUnit) ChronoUnit.DAYS - LocalDate nextNeedHandleDate = needHandleDate.plus(1L, (TemporalUnit) ChronoUnit.DAYS); - buildCurrentDayTime(dateDTOList, calendarId, year, dateList, offDay, productionCalendarDaytimeList, productionCalendarDayList, shiftDetailMap, snowflake, curProductionCalendarDayTimeList, needHandleDate); - handleConflietDayTime(calenadar, year, productionCalendarDaytimeList, todayDateTimeList, curProductionCalendarDayTimeList, difference, i, needHandleDate, nextNeedHandleDate); - j = i + 1; - } else { - this.calendarDayService.saveBatchDay(productionCalendarDayList); - this.calendarDaytimeService.saveBatchDaytime(productionCalendarDaytimeList); - return; - } + LocalDate lastDayOfYear = LocalDateTimeUtils.getLastDayOfYear(localDateNow);//浠婂勾鏈�鍚庝竴澶� + //鏃ュ巻鐨勫勾浠戒笌褰撳墠骞翠唤鐩稿悓锛屽垯杩斿洖锛� 浠婂勾鏈�鍚庝竴澶�-浠婂ぉ 鐨勫ぉ鏁板樊.鍚﹀垯杩斿洖:涓�鏁村勾鐨勫ぉ鏁�-1 + //difference 涔熷氨鏄疄闄呴渶瑕佹帓鐝殑鎬诲ぉ鏁� + long difference = year.intValue() == localDateNow.getYear() ? LocalDateTimeUtils.getDifference(localDateNow, lastDayOfYear) : LocalDateTimeUtils.getDayOfYear(year) - 1; + //璁$畻骞剁敓鎴恉ay鍜宒aytime鏁版嵁 + for (long i = 0; i < difference; i++) {//淇敼i<=difference 鏀逛负i<difference锛屼笅闈唬鐮乨ifference - i鍦ㄦ渶鍚庝竴娆″惊鐜痙ifference - i=0,涔熷氨鏄綋澶╀簡锛屽綋澶╂槸涓嶈兘鎺掔彮鐨勶紝鑰屼笖浼氶�犳垚day鏁版嵁閲嶅 + //鑰冭檻LocalDate.now()瀹炰緥鍖栵紝plus鏀逛负plusDays + //LocalDate needHandleDate = year.equals(currentYear) ? localDateNow.plus(difference - i, ChronoUnit.DAYS) : LocalDate.of(year, 1, 1).plus(difference - i, ChronoUnit.DAYS); + LocalDate needHandleDate = year.equals(currentYear) ? localDateNow.plusDays(difference - i) : LocalDate.of(year, 1, 1).plusDays(difference - i); + //LocalDate nextNeedHandleDate = needHandleDate.plus(1, ChronoUnit.DAYS); + LocalDate nextNeedHandleDate = needHandleDate.plusDays(1); + buildCurrentDayTime(dateDTOList, calendarId, year, dateList, offDay, productionCalendarDaytimeList, productionCalendarDayList, shiftDetailMap, snowflake, curProductionCalendarDayTimeList, needHandleDate); + handleConflietDayTime(calenadar, year, productionCalendarDaytimeList, todayDateTimeList, curProductionCalendarDayTimeList, difference, i, needHandleDate, nextNeedHandleDate); } + //淇濆瓨day鍜宒aytime鏁版嵁 + this.calendarDayService.saveBatchDay(productionCalendarDayList); + this.calendarDaytimeService.saveBatchDaytime(productionCalendarDaytimeList); } private void handleConflietDayTime(ProductionCalendar calenadar, Integer year, List<ProductionCalendarDaytime> productionCalendarDaytimeList, List<ProductionCalendarDaytime> todayDateTimeList, List<ProductionCalendarDaytime> curProductionCalendarDayTimeList, long difference, long i, LocalDate needHandleDate, LocalDate nextNeedHandleDate) { -- Gitblit v1.9.3