feat: 实现节假日服务功能并更新项目版本
refactor(CloudRkManagerWindowController): 简化任务初始化逻辑 feat(HolidayService): 添加节假日调整和检查功能 feat(HolidayTable): 实现Voable接口并添加toVo方法 feat(HolidayTableRepository): 添加节假日查询方法 docs: 添加服务器端Service类规则文档 build: 更新项目版本至0.0.101-SNAPSHOT
This commit is contained in:
@@ -1,15 +1,71 @@
|
||||
package com.ecep.contract.service;
|
||||
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import com.ecep.contract.WebSocketClientService;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 节假日服务类
|
||||
*
|
||||
* @author System
|
||||
*/
|
||||
@Lazy
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class HolidayService {
|
||||
@Autowired
|
||||
private WebSocketClientService webSocketClientService;
|
||||
@Autowired
|
||||
protected ObjectMapper objectMapper;
|
||||
|
||||
/**
|
||||
* 调整日期到工作日
|
||||
*
|
||||
* @param date 要调整的日期
|
||||
* @return 调整的日期
|
||||
*/
|
||||
public LocalDate adjustToWorkDay(LocalDate date) {
|
||||
throw new RuntimeException("Not implemented");
|
||||
if (date == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
JsonNode json = webSocketClientService.invoke("holidayService", "adjustToWorkDay", date).get();
|
||||
if (json != null && !json.isEmpty()) {
|
||||
return objectMapper.convertValue(json, LocalDate.class);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("调整日期到工作日失败: {}", e.getMessage(), e);
|
||||
}
|
||||
|
||||
// 如果调用失败,使用客户端本地逻辑作为后备
|
||||
return adjustToWorkDayLocally(date);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 客户端本地日期调整逻辑,作为服务器调用失败的后备方案
|
||||
*
|
||||
* @param date 要调整的日期
|
||||
* @return 调整的日期
|
||||
*/
|
||||
private LocalDate adjustToWorkDayLocally(LocalDate date) {
|
||||
while (date.getDayOfWeek() == DayOfWeek.SATURDAY || date.getDayOfWeek() == DayOfWeek.SUNDAY) {
|
||||
date = date.plusDays(1);
|
||||
}
|
||||
return date;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user