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