依赖升级(未全部完成)

This commit is contained in:
黎润豪 2025-08-18 17:37:16 +08:00
parent 80c65b936e
commit 1145963ea4
122 changed files with 612 additions and 610 deletions

71
pom.xml
View File

@ -14,7 +14,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version> <version>3.4.5</version>
<relativePath/> <!-- lookup parent from repository --> <relativePath/> <!-- lookup parent from repository -->
</parent> </parent>
<properties> <properties>
@ -30,7 +30,6 @@
<lombok.version>1.18.34</lombok.version> <lombok.version>1.18.34</lombok.version>
<mybatis.version>3.5.16</mybatis.version> <mybatis.version>3.5.16</mybatis.version>
<druid.version>1.2.23</druid.version> <druid.version>1.2.23</druid.version>
<mybatis-plus.version>3.5.7</mybatis-plus.version>
<!-- SpringDoc OpenAPI for Swagger替换SpringFox --> <!-- SpringDoc OpenAPI for Swagger替换SpringFox -->
<springdoc.version>1.8.0</springdoc.version> <springdoc.version>1.8.0</springdoc.version>
<!-- Spring AI for LLM Integration (compatible with Spring Boot 2.7.x) --> <!-- Spring AI for LLM Integration (compatible with Spring Boot 2.7.x) -->
@ -44,19 +43,6 @@
<h2.version>2.2.224</h2.version> <h2.version>2.2.224</h2.version>
</properties> </properties>
<!-- Spring AI BOM for dependency management -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies> <dependencies>
<!--Spring Boot Web Starter--> <!--Spring Boot Web Starter-->
<dependency> <dependency>
@ -131,46 +117,10 @@
<!--基础框架youfool-framework-boot--> <!--基础框架youfool-framework-boot-->
<dependency> <dependency>
<groupId>com.chinaweal.youfool</groupId> <groupId>com.chinaweal.youfool</groupId>
<artifactId>youfool-framework-springboot</artifactId> <artifactId>youfool-framework-springboot3</artifactId>
<version>1.1.1-SNAPSHOT</version> <version>1.0.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
</exclusion>
<!-- 排除SpringFox相关依赖使用SpringDoc OpenAPI替代 -->
<exclusion>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</exclusion>
<exclusion>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<!--druid--> <!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
@ -316,12 +266,6 @@
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
<version>${logback.version}</version> <version>${logback.version}</version>
</dependency> </dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- shiro --> <!-- shiro -->
<dependency> <dependency>
<groupId>org.apache.shiro</groupId> <groupId>org.apache.shiro</groupId>
@ -352,12 +296,11 @@
<version>2.9.2</version> <version>2.9.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- 临时依赖Knife4j注解兼容 --> <!--AI框架接入-->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>com.chinaweal.youfool.ai</groupId>
<artifactId>knife4j-annotations</artifactId> <artifactId>youfool-ai-framework</artifactId>
<version>2.0.9</version> <version>1.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops;
// Temporarily commented out for Spring AI compatibility // Temporarily commented out for Spring AI compatibility
// import com.chinaweal.youfool.devops.ai.config.AIRepairIntegrationConfig; // import com.chinaweal.youfool.devops.ai.config.AIRepairIntegrationConfig;
import com.chinaweal.youfool.devops.config.ErrorLogProperties; import com.chinaweal.youfool.devops.config.ErrorLogProperties;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry; import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.ai.aspect;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep;
import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService; import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
@ -12,7 +12,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.ai.aspect;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep;
import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService; import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.ai.aspect;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep;
import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService; import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
@ -12,7 +12,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;

View File

@ -4,7 +4,7 @@ import com.chinaweal.youfool.devops.ai.aspect.dto.MCPToolCallTrace;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceSession;
import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep; import com.chinaweal.youfool.devops.ai.aspect.dto.WorkflowTraceStep;
import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService; import com.chinaweal.youfool.devops.ai.aspect.service.WorkflowTracingService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker; import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import io.github.resilience4j.ratelimiter.annotation.RateLimiter; import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
import io.github.resilience4j.retry.annotation.Retry; import io.github.resilience4j.retry.annotation.Retry;
@ -17,7 +17,6 @@ import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View File

@ -4,7 +4,7 @@ import com.chinaweal.youfool.devops.ai.dto.llm.FunctionTool;
import com.chinaweal.youfool.devops.ai.dto.llm.ToolCall; import com.chinaweal.youfool.devops.ai.dto.llm.ToolCall;
import com.chinaweal.youfool.devops.ai.dto.llm.ToolCallResult; import com.chinaweal.youfool.devops.ai.dto.llm.ToolCallResult;
import com.chinaweal.youfool.devops.ai.mcp.MCPTool; import com.chinaweal.youfool.devops.ai.mcp.MCPTool;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;

View File

@ -4,7 +4,7 @@ import com.chinaweal.youfool.devops.ai.dto.answer.AIAnswerRequest;
import com.chinaweal.youfool.devops.ai.dto.answer.AIAnswerResponse; import com.chinaweal.youfool.devops.ai.dto.answer.AIAnswerResponse;
import com.chinaweal.youfool.devops.ai.service.AIAnswerService; import com.chinaweal.youfool.devops.ai.service.AIAnswerService;
import com.chinaweal.youfool.devops.ai.service.QwenChatService; import com.chinaweal.youfool.devops.ai.service.QwenChatService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -19,9 +19,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@ -295,7 +295,7 @@ public class AIAnswerController {
* 批量回答请求 * 批量回答请求
*/ */
public static class BatchAnswerRequest { public static class BatchAnswerRequest {
@javax.validation.constraints.NotEmpty(message = "工单ID列表不能为空") @jakarta.validation.constraints.NotEmpty(message = "工单ID列表不能为空")
private java.util.List<@NotBlank String> repairIds; private java.util.List<@NotBlank String> repairIds;
private Boolean includeHistory = true; private Boolean includeHistory = true;

View File

@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;

View File

@ -17,8 +17,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import jakarta.servlet.http.HttpSession;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;

View File

@ -5,7 +5,7 @@ import com.chinaweal.youfool.devops.ai.dto.llm.ChatRequest;
import com.chinaweal.youfool.devops.ai.dto.llm.ChatResponse; import com.chinaweal.youfool.devops.ai.dto.llm.ChatResponse;
import com.chinaweal.youfool.devops.ai.service.QwenChatService; import com.chinaweal.youfool.devops.ai.service.QwenChatService;
import com.chinaweal.youfool.devops.ai.service.StreamingSessionManager; import com.chinaweal.youfool.devops.ai.service.StreamingSessionManager;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -20,9 +20,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -2,7 +2,7 @@ package com.chinaweal.youfool.devops.ai.controller;
import com.chinaweal.youfool.devops.ai.service.EmbeddingCacheService; import com.chinaweal.youfool.devops.ai.service.EmbeddingCacheService;
import com.chinaweal.youfool.devops.ai.service.QwenEmbeddingService; import com.chinaweal.youfool.devops.ai.service.QwenEmbeddingService;
import com.chinaweal.youfool.devops.util.TextSimilarityUtils; import com.chinaweal.youfool.devops.common.utils.TextSimilarityUtils;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -2,7 +2,7 @@ package com.chinaweal.youfool.devops.ai.controller;
import com.chinaweal.youfool.devops.ai.service.LLMStreamingMonitorService; import com.chinaweal.youfool.devops.ai.service.LLMStreamingMonitorService;
import com.chinaweal.youfool.devops.ai.service.StreamingSessionManager; import com.chinaweal.youfool.devops.ai.service.StreamingSessionManager;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -12,7 +12,7 @@ import com.chinaweal.youfool.devops.ai.provider.LLMProvider;
import com.chinaweal.youfool.devops.ai.provider.ProviderManager; import com.chinaweal.youfool.devops.ai.provider.ProviderManager;
import com.chinaweal.youfool.devops.ai.service.AIAnswerServiceMCP; import com.chinaweal.youfool.devops.ai.service.AIAnswerServiceMCP;
import com.chinaweal.youfool.devops.ai.service.QwenChatService; import com.chinaweal.youfool.devops.ai.service.QwenChatService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -26,7 +26,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.*; import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.ai.coordinator;
import com.chinaweal.youfool.devops.ai.client.MCPClient; import com.chinaweal.youfool.devops.ai.client.MCPClient;
import com.chinaweal.youfool.devops.ai.dto.llm.*; import com.chinaweal.youfool.devops.ai.dto.llm.*;
import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler; import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;

View File

@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
/** /**
* AI回答生成请求 * AI回答生成请求

View File

@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import java.util.List; import java.util.List;
/** /**

View File

@ -6,9 +6,9 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.Max; import jakarta.validation.constraints.Max;
import javax.validation.constraints.Min; import jakarta.validation.constraints.Min;
import javax.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import java.util.List; import java.util.List;
/** /**

View File

@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
/** /**
* LLM函数调用详情 * LLM函数调用详情

View File

@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
/** /**
* LLM函数定义 * LLM函数定义

View File

@ -6,8 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
/** /**
* LLM函数工具定义 * LLM函数工具定义

View File

@ -7,8 +7,8 @@ import lombok.NoArgsConstructor;
import lombok.Builder; import lombok.Builder;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
/** /**
* LLM工具调用 * LLM工具调用

View File

@ -4,10 +4,10 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.Max; import jakarta.validation.constraints.Max;
import javax.validation.constraints.Min; import jakarta.validation.constraints.Min;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.Size; import jakarta.validation.constraints.Size;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;

View File

@ -1,13 +1,13 @@
package com.chinaweal.youfool.devops.ai.example; package com.chinaweal.youfool.devops.ai.example;
import com.chinaweal.youfool.devops.ai.service.EmbeddingCacheService; import com.chinaweal.youfool.devops.ai.service.EmbeddingCacheService;
import com.chinaweal.youfool.devops.util.TextSimilarityUtils; import com.chinaweal.youfool.devops.common.utils.TextSimilarityUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;

View File

@ -2,7 +2,7 @@ package com.chinaweal.youfool.devops.ai.handler;
import com.chinaweal.youfool.devops.ai.client.MCPClient; import com.chinaweal.youfool.devops.ai.client.MCPClient;
import com.chinaweal.youfool.devops.ai.dto.llm.*; import com.chinaweal.youfool.devops.ai.dto.llm.*;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.ai.manager;
import com.chinaweal.youfool.devops.ai.coordinator.ToolCallCoordinator; import com.chinaweal.youfool.devops.ai.coordinator.ToolCallCoordinator;
import com.chinaweal.youfool.devops.ai.dto.llm.*; import com.chinaweal.youfool.devops.ai.dto.llm.*;
import com.chinaweal.youfool.devops.ai.service.EnhancedQwenChatService; import com.chinaweal.youfool.devops.ai.service.EnhancedQwenChatService;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -7,8 +7,8 @@ import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
/** /**
* MCP JSON-RPC 请求对象 * MCP JSON-RPC 请求对象

View File

@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import java.util.Map; import java.util.Map;
/** /**

View File

@ -9,7 +9,7 @@ import com.chinaweal.youfool.devops.ai.service.QwenEmbeddingService;
import com.chinaweal.youfool.devops.ai.service.QwenBatchEmbeddingService; import com.chinaweal.youfool.devops.ai.service.QwenBatchEmbeddingService;
import com.chinaweal.youfool.devops.repair.entity.Repair; import com.chinaweal.youfool.devops.repair.entity.Repair;
import com.chinaweal.youfool.devops.repair.mapper.RepairMapper; import com.chinaweal.youfool.devops.repair.mapper.RepairMapper;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker; import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import io.github.resilience4j.retry.annotation.Retry; import io.github.resilience4j.retry.annotation.Retry;
@ -17,8 +17,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import javax.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@ -26,7 +26,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -135,7 +134,7 @@ public class RepairVectorizationService {
log.info("开始全量向量化迁移任务ID: {}", taskId); log.info("开始全量向量化迁移任务ID: {}", taskId);
// 统计总数量 // 统计总数量
Integer totalCount = countRepairsForVectorization(null); long totalCount = countRepairsForVectorization(null);
progress.setTotalCount(totalCount); progress.setTotalCount(totalCount);
progress.setStatus("processing"); progress.setStatus("processing");
@ -160,7 +159,7 @@ public class RepairVectorizationService {
processBatchVectorization(repairs.getRecords(), progress); processBatchVectorization(repairs.getRecords(), progress);
// 更新进度 // 更新进度
progress.setProcessedCount(Math.min(page * pageSize, totalCount.intValue())); progress.setProcessedCount(Math.min(page * pageSize, totalCount));
progress.updateProgress(); progress.updateProgress();
log.info("全量向量化进度: {}/{} ({}%)", log.info("全量向量化进度: {}/{} ({}%)",
@ -215,7 +214,7 @@ public class RepairVectorizationService {
} }
// 注意COUNT查询不能包含ORDER BY需要先进行计数查询 // 注意COUNT查询不能包含ORDER BY需要先进行计数查询
Integer totalCount = repairMapper.selectCount(wrapper); Long totalCount = repairMapper.selectCount(wrapper);
progress.setTotalCount(totalCount); progress.setTotalCount(totalCount);
progress.setStatus("processing"); progress.setStatus("processing");
@ -241,7 +240,7 @@ public class RepairVectorizationService {
// 处理增量数据 // 处理增量数据
processIncrementalVectorization(repairs.getRecords(), progress); processIncrementalVectorization(repairs.getRecords(), progress);
progress.setProcessedCount(Math.min(page * pageSize, totalCount.intValue())); progress.setProcessedCount(Math.min(page * pageSize, totalCount));
progress.updateProgress(); progress.updateProgress();
} catch (Exception e) { } catch (Exception e) {
@ -925,7 +924,7 @@ public class RepairVectorizationService {
/** /**
* 统计需要向量化的工单数量 * 统计需要向量化的工单数量
*/ */
private Integer countRepairsForVectorization(LocalDateTime since) { private long countRepairsForVectorization(LocalDateTime since) {
LambdaQueryWrapper<Repair> wrapper = new LambdaQueryWrapper<Repair>() LambdaQueryWrapper<Repair> wrapper = new LambdaQueryWrapper<Repair>()
.isNotNull(Repair::getFaultDescription) .isNotNull(Repair::getFaultDescription)
.ne(Repair::getFaultDescription, ""); .ne(Repair::getFaultDescription, "");

View File

@ -1,7 +1,7 @@
package com.chinaweal.youfool.devops.ai.migration; package com.chinaweal.youfool.devops.ai.migration;
import com.chinaweal.youfool.devops.ai.migration.dto.VectorizationProgress; import com.chinaweal.youfool.devops.ai.migration.dto.VectorizationProgress;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;

View File

@ -27,10 +27,10 @@ public class VectorizationProgress {
private String status = "pending"; private String status = "pending";
@Schema(description = "总数量") @Schema(description = "总数量")
private Integer totalCount = 0; private Long totalCount = 0L;
@Schema(description = "已处理数量") @Schema(description = "已处理数量")
private Integer processedCount = 0; private Long processedCount = 0L;
@Schema(description = "成功数量") @Schema(description = "成功数量")
private Integer successCount = 0; private Integer successCount = 0;
@ -126,7 +126,7 @@ public class VectorizationProgress {
this.processingSpeed = (double) (successCount + failureCount) / elapsedMs * 1000; this.processingSpeed = (double) (successCount + failureCount) / elapsedMs * 1000;
// 预估剩余时间 // 预估剩余时间
int remaining = totalCount - (successCount + failureCount); long remaining = totalCount - (successCount + failureCount);
if (processingSpeed > 0) { if (processingSpeed > 0) {
this.estimatedRemainingSeconds = (long) (remaining / processingSpeed); this.estimatedRemainingSeconds = (long) (remaining / processingSpeed);
} }

View File

@ -1,8 +1,7 @@
package com.chinaweal.youfool.devops.ai.provider; package com.chinaweal.youfool.devops.ai.provider;
import com.chinaweal.youfool.devops.ai.dto.llm.ChatRequest; import com.chinaweal.youfool.devops.ai.dto.llm.ChatRequest;
import com.chinaweal.youfool.devops.ai.dto.llm.FunctionTool; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.chinaweal.youfool.devops.util.ErrorLogUtils;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -11,7 +10,6 @@ import org.springframework.http.MediaType;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**

View File

@ -6,7 +6,7 @@ import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler;
import com.chinaweal.youfool.devops.ai.mcp.MCPFunctionBridge; import com.chinaweal.youfool.devops.ai.mcp.MCPFunctionBridge;
import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition; import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition;
import com.chinaweal.youfool.devops.ai.client.MCPClient; import com.chinaweal.youfool.devops.ai.client.MCPClient;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;

View File

@ -6,7 +6,7 @@ import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler;
import com.chinaweal.youfool.devops.ai.mcp.MCPFunctionBridge; import com.chinaweal.youfool.devops.ai.mcp.MCPFunctionBridge;
import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition; import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition;
import com.chinaweal.youfool.devops.ai.client.MCPClient; import com.chinaweal.youfool.devops.ai.client.MCPClient;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;

View File

@ -2,12 +2,12 @@ package com.chinaweal.youfool.devops.ai.provider;
import com.chinaweal.youfool.devops.ai.config.MCPMigrationProperties; import com.chinaweal.youfool.devops.ai.config.MCPMigrationProperties;
import com.chinaweal.youfool.devops.ai.dto.llm.ChatRequest; import com.chinaweal.youfool.devops.ai.dto.llm.ChatRequest;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern; import java.util.regex.Pattern;

View File

@ -6,7 +6,7 @@ import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler;
import com.chinaweal.youfool.devops.ai.mcp.MCPFunctionBridge; import com.chinaweal.youfool.devops.ai.mcp.MCPFunctionBridge;
import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition; import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition;
import com.chinaweal.youfool.devops.ai.client.MCPClient; import com.chinaweal.youfool.devops.ai.client.MCPClient;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;

View File

@ -1,15 +1,13 @@
package com.chinaweal.youfool.devops.ai.resilience; package com.chinaweal.youfool.devops.ai.resilience;
import com.chinaweal.youfool.devops.ai.dto.llm.*; import com.chinaweal.youfool.devops.ai.dto.llm.*;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
/** /**

View File

@ -13,8 +13,7 @@ import com.chinaweal.youfool.devops.repair.entity.RepairHandle;
import com.chinaweal.youfool.devops.repair.mapper.RepairHandleMapper; import com.chinaweal.youfool.devops.repair.mapper.RepairHandleMapper;
import com.chinaweal.youfool.devops.repair.service.IRepairService; import com.chinaweal.youfool.devops.repair.service.IRepairService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.chinaweal.youfool.devops.util.TextSimilarityUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@ -24,7 +23,6 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* AI回答服务 * AI回答服务

View File

@ -11,11 +11,10 @@ import com.chinaweal.youfool.devops.ai.dto.llm.ChatResponse;
import com.chinaweal.youfool.devops.ai.dto.llm.FunctionTool; import com.chinaweal.youfool.devops.ai.dto.llm.FunctionTool;
import com.chinaweal.youfool.devops.ai.mcp.MCPServer; import com.chinaweal.youfool.devops.ai.mcp.MCPServer;
import com.chinaweal.youfool.devops.ai.mcp.MCPTool; import com.chinaweal.youfool.devops.ai.mcp.MCPTool;
import com.chinaweal.youfool.devops.ai.mcp.MCPResponse;
import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition; import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition;
import com.chinaweal.youfool.devops.ai.provider.LLMProvider; import com.chinaweal.youfool.devops.ai.provider.LLMProvider;
import com.chinaweal.youfool.devops.ai.provider.ProviderManager; import com.chinaweal.youfool.devops.ai.provider.ProviderManager;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

View File

@ -1,6 +1,6 @@
package com.chinaweal.youfool.devops.ai.service; package com.chinaweal.youfool.devops.ai.service;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;

View File

@ -5,7 +5,7 @@ import com.chinaweal.youfool.devops.ai.coordinator.ToolCallCoordinator;
import com.chinaweal.youfool.devops.ai.dto.llm.*; import com.chinaweal.youfool.devops.ai.dto.llm.*;
import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler; import com.chinaweal.youfool.devops.ai.handler.FunctionCallHandler;
import com.chinaweal.youfool.devops.ai.provider.QwenProvider; import com.chinaweal.youfool.devops.ai.provider.QwenProvider;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker; import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import io.github.resilience4j.ratelimiter.annotation.RateLimiter; import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
import io.github.resilience4j.retry.annotation.Retry; import io.github.resilience4j.retry.annotation.Retry;
@ -17,7 +17,6 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.UUID; import java.util.UUID;
/** /**

View File

@ -1,14 +1,14 @@
package com.chinaweal.youfool.devops.ai.service; package com.chinaweal.youfool.devops.ai.service;
import com.chinaweal.youfool.devops.ai.config.LLMStreamingProperties; import com.chinaweal.youfool.devops.ai.config.LLMStreamingProperties;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;

View File

@ -1,7 +1,7 @@
package com.chinaweal.youfool.devops.ai.service; package com.chinaweal.youfool.devops.ai.service;
import com.chinaweal.youfool.devops.ai.config.EmbeddingProperties; import com.chinaweal.youfool.devops.ai.config.EmbeddingProperties;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@ -12,7 +12,6 @@ import okhttp3.*;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;

View File

@ -9,7 +9,7 @@ import com.chinaweal.youfool.devops.ai.mcp.MCPResponse;
import com.chinaweal.youfool.devops.ai.mcp.MCPTool; import com.chinaweal.youfool.devops.ai.mcp.MCPTool;
import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition; import com.chinaweal.youfool.devops.ai.mcp.dto.MCPToolDefinition;
import com.chinaweal.youfool.devops.ai.provider.QwenProvider; import com.chinaweal.youfool.devops.ai.provider.QwenProvider;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@ -23,10 +23,9 @@ import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.ai.service;
import com.chinaweal.youfool.devops.ai.config.EmbeddingProperties; import com.chinaweal.youfool.devops.ai.config.EmbeddingProperties;
import com.chinaweal.youfool.devops.ai.dto.EmbeddingRequest; import com.chinaweal.youfool.devops.ai.dto.EmbeddingRequest;
import com.chinaweal.youfool.devops.ai.dto.EmbeddingResponse; import com.chinaweal.youfool.devops.ai.dto.EmbeddingResponse;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker; import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import io.github.resilience4j.ratelimiter.annotation.RateLimiter; import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
@ -15,7 +15,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View File

@ -1,15 +1,14 @@
package com.chinaweal.youfool.devops.ai.service; package com.chinaweal.youfool.devops.ai.service;
import com.chinaweal.youfool.devops.ai.config.LLMStreamingProperties; import com.chinaweal.youfool.devops.ai.config.LLMStreamingProperties;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import javax.annotation.PreDestroy; import jakarta.annotation.PreDestroy;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;

View File

@ -4,12 +4,11 @@ package com.chinaweal.youfool.devops.base.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.youfool.devops.base.entity.Dict; import com.chinaweal.youfool.devops.base.entity.Dict;
import com.chinaweal.youfool.devops.base.service.IDictService; import com.chinaweal.youfool.devops.base.service.IDictService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -18,7 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.util.List; import java.util.List;
/** /**

View File

@ -1,7 +1,7 @@
package com.chinaweal.youfool.devops.base.controller; package com.chinaweal.youfool.devops.base.controller;
import com.chinaweal.youfool.devops.config.ErrorLogProperties; import com.chinaweal.youfool.devops.config.ErrorLogProperties;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -20,7 +20,6 @@ import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 错误日志查看控制器 * 错误日志查看控制器

View File

@ -12,8 +12,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;

View File

@ -1,18 +1,9 @@
package com.chinaweal.youfool.devops.base.controller; package com.chinaweal.youfool.devops.base.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.youfool.devops.base.entity.TaskList;
import com.chinaweal.youfool.devops.base.service.ITaskListService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/** /**
* <p> * <p>
* 待办表 控制器 * 待办表 控制器

View File

@ -1,12 +1,10 @@
package com.chinaweal.youfool.devops.base.entity; package com.chinaweal.youfool.devops.base.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;

View File

@ -4,15 +4,14 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -93,7 +92,7 @@ public class TaskFile extends SuperEntity {
*/ */
@Schema(description = "上传时间") @Schema(description = "上传时间")
@TableField("UPLOAD_TIME") @TableField("UPLOAD_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime uploadTime; private LocalDateTime uploadTime;

View File

@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -91,7 +91,7 @@ public class TaskHandle extends SuperEntity {
*/ */
@Schema(description = "生成时间") @Schema(description = "生成时间")
@TableField("HAPPEN_TIME") @TableField("HAPPEN_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime happenTime; private LocalDateTime happenTime;
/** /**

View File

@ -1,10 +1,10 @@
package com.chinaweal.youfool.devops.base.entity; package com.chinaweal.youfool.devops.base.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.devops.common.constants.CommonConstant;
import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -160,7 +160,7 @@ public class TaskList extends SuperEntity {
*/ */
@Schema(description = "是否删除;0有效1删除") @Schema(description = "是否删除;0有效1删除")
@TableField("DELETED") @TableField("DELETED")
@TableLogic(value = ConstantsUtil.NOT_DELETED, delval = ConstantsUtil.DELETED) @TableLogic(value = CommonConstant.FALSE_0_STR, delval = CommonConstant.TRUE_1_STR)
private String deleted; private String deleted;
/** /**
@ -168,7 +168,7 @@ public class TaskList extends SuperEntity {
*/ */
@Schema(description = "报送时间") @Schema(description = "报送时间")
@TableField("LAUNCH_TIME") @TableField("LAUNCH_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime launchTime; private LocalDateTime launchTime;
/** /**
@ -176,7 +176,7 @@ public class TaskList extends SuperEntity {
*/ */
@Schema(description = "到期时间") @Schema(description = "到期时间")
@TableField("SOLVE_LIMIT_TIME") @TableField("SOLVE_LIMIT_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime solveLimitTime; private LocalDateTime solveLimitTime;
/** /**
@ -184,7 +184,7 @@ public class TaskList extends SuperEntity {
*/ */
@Schema(description = "处理更新时间") @Schema(description = "处理更新时间")
@TableField("HANDLE_TIME") @TableField("HANDLE_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime handleTime; private LocalDateTime handleTime;
/** /**

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.base.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.youfool.devops.base.entity.Dict; import com.chinaweal.youfool.devops.base.entity.Dict;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import java.util.List; import java.util.List;
@ -31,5 +31,5 @@ public interface IDictService extends IService<Dict> {
IPage<Dict> list(BaseQuery<Dict> query); IPage<Dict> list(BaseQuery<Dict> query);
void addDict(String type,String name); void addDict(String type, String name);
} }

View File

@ -3,10 +3,10 @@ package com.chinaweal.youfool.devops.base.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.youfool.devops.base.entity.TaskFile; import com.chinaweal.youfool.devops.base.entity.TaskFile;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.base.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.youfool.devops.base.entity.TaskHandle; import com.chinaweal.youfool.devops.base.entity.TaskHandle;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import java.util.List; import java.util.List;

View File

@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.youfool.devops.base.entity.TaskHandle; import com.chinaweal.youfool.devops.base.entity.TaskHandle;
import com.chinaweal.youfool.devops.base.entity.TaskList; import com.chinaweal.youfool.devops.base.entity.TaskList;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
/** /**
* <p> * <p>

View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.youfool.devops.base.entity.Dict; import com.chinaweal.youfool.devops.base.entity.Dict;
import com.chinaweal.youfool.devops.base.mapper.DictMapper; import com.chinaweal.youfool.devops.base.mapper.DictMapper;
import com.chinaweal.youfool.devops.base.service.IDictService; import com.chinaweal.youfool.devops.base.service.IDictService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -66,7 +66,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements ID
lqw.eq(Dict::getType, entity.getType()); lqw.eq(Dict::getType, entity.getType());
lqw.like(StringUtils.isNotBlank(entity.getName()), Dict::getName, entity.getName()); lqw.like(StringUtils.isNotBlank(entity.getName()), Dict::getName, entity.getName());
if (page.getOrders().isEmpty()) { if (page.orders().isEmpty()) {
page.addOrder(OrderItem.desc("update_time")); page.addOrder(OrderItem.desc("update_time"));
} }

View File

@ -2,7 +2,7 @@ package com.chinaweal.youfool.devops.base.service.impl;
import com.chinaweal.youfool.devops.base.service.IMonitorService; import com.chinaweal.youfool.devops.base.service.IMonitorService;
import com.chinaweal.youfool.devops.repair.api.RobotApi; import com.chinaweal.youfool.devops.repair.api.RobotApi;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
@ -11,7 +11,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.sql.Connection; import java.sql.Connection;
import java.sql.Driver; import java.sql.Driver;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;

View File

@ -10,8 +10,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.youfool.devops.base.entity.TaskFile; import com.chinaweal.youfool.devops.base.entity.TaskFile;
import com.chinaweal.youfool.devops.base.mapper.TaskFileMapper; import com.chinaweal.youfool.devops.base.mapper.TaskFileMapper;
import com.chinaweal.youfool.devops.base.service.ITaskFileService; import com.chinaweal.youfool.devops.base.service.ITaskFileService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.util.DateTimeUtils; import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails; import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -20,11 +20,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -101,7 +101,7 @@ public class TaskFileServiceImpl extends ServiceImpl<TaskFileMapper, TaskFile> i
@Override @Override
public String filePath(String type) { public String filePath(String type) {
return type + File.separator + LocalDate.now().format(DateTimeUtils.SHORT_DATE_FORMATTER); return type + File.separator + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
} }
@Override @Override

View File

@ -11,11 +11,11 @@ import com.chinaweal.youfool.devops.base.entity.TaskList;
import com.chinaweal.youfool.devops.base.mapper.TaskHandleMapper; import com.chinaweal.youfool.devops.base.mapper.TaskHandleMapper;
import com.chinaweal.youfool.devops.base.service.ITaskHandleService; import com.chinaweal.youfool.devops.base.service.ITaskHandleService;
import com.chinaweal.youfool.devops.base.service.ITaskListService; import com.chinaweal.youfool.devops.base.service.ITaskListService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;

View File

@ -10,12 +10,12 @@ import com.chinaweal.youfool.devops.base.entity.TaskList;
import com.chinaweal.youfool.devops.base.mapper.TaskListMapper; import com.chinaweal.youfool.devops.base.mapper.TaskListMapper;
import com.chinaweal.youfool.devops.base.service.ITaskHandleService; import com.chinaweal.youfool.devops.base.service.ITaskHandleService;
import com.chinaweal.youfool.devops.base.service.ITaskListService; import com.chinaweal.youfool.devops.base.service.ITaskListService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.devops.common.constants.CommonConstant;
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil; import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import jakarta.annotation.Resource;
/** /**
* <p> * <p>
@ -45,7 +45,7 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
@Override @Override
public TaskHandle createTask(TaskList task, String result) { public TaskHandle createTask(TaskList task, String result) {
task.setStep(ITaskHandleService.STRART); task.setStep(ITaskHandleService.STRART);
task.setDeleted(ConstantsUtil.NOT_DELETED); task.setDeleted(CommonConstant.FALSE_0_STR);
save(task); save(task);
//插入流程表,启动流程 //插入流程表,启动流程

View File

@ -0,0 +1,13 @@
package com.chinaweal.youfool.devops.common.constants;
/**
* 通用常量
*
* @author lroyia
* @since 2025/8/18 17:00
**/
public interface CommonConstant {
String TRUE_1_STR = "1";
String FALSE_0_STR = "0";
}

View File

@ -1,4 +1,4 @@
package com.chinaweal.youfool.devops.util; package com.chinaweal.youfool.devops.common.utils;
import com.chinaweal.youfool.devops.config.ErrorLogProperties; import com.chinaweal.youfool.devops.config.ErrorLogProperties;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -0,0 +1,23 @@
package com.chinaweal.youfool.devops.common.utils;
/**
* 字串工具类
*
* @author lroyia
* @since 2025/8/18 17:19
**/
public abstract class StringUtils extends com.chinaweal.youfool.framework.springboot.common.util.StringUtils {
/**
* 对象转字符串并去空格
*
* @param str 转换对象
* @return 转换结果
*/
public static String trimObj(Object str) {
if (str == null) {
return StringUtils.EMPTY;
}
return trimToEmpty(str.toString());
}
}

View File

@ -1,4 +1,4 @@
package com.chinaweal.youfool.devops.util; package com.chinaweal.youfool.devops.common.utils;
import com.chinaweal.youfool.devops.ai.service.QwenEmbeddingService; import com.chinaweal.youfool.devops.ai.service.QwenEmbeddingService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -1,9 +1,9 @@
package com.chinaweal.youfool.devops.util; package com.chinaweal.youfool.devops.common.utils;
/*对图片进行处理的类和方法*/ /*对图片进行处理的类和方法*/
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.awt.*; import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;

View File

@ -0,0 +1,10 @@
package com.chinaweal.youfool.devops.common.utils;
/**
* web相关工具类
*
* @author lroyia
* @since 2025/8/18 17:12
**/
public abstract class WebUtil extends com.chinaweal.youfool.framework.springboot.common.util.WebUtil {
}

View File

@ -1,6 +1,6 @@
package com.chinaweal.youfool.devops.config; package com.chinaweal.youfool.devops.config;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;

View File

@ -1,22 +1,16 @@
package com.chinaweal.youfool.devops.config; package com.chinaweal.youfool.devops.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler; import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.commons.lang3.ArrayUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource; import javax.sql.DataSource;
@ -30,41 +24,21 @@ import javax.sql.DataSource;
@MapperScan(basePackages = {"com.chinaweal.youfool.devops.repair.**.mapper", "com.chinaweal.youfool.devops.base.**.mapper", "com.chinaweal.youfool.devops.leaderassign.**.mapper", "com.chinaweal.youfool.devops.org.mapper", "com.chinaweal.youfool.devops.ai.**.mapper"}, sqlSessionTemplateRef = "devopsSqlSessionTemplate") @MapperScan(basePackages = {"com.chinaweal.youfool.devops.repair.**.mapper", "com.chinaweal.youfool.devops.base.**.mapper", "com.chinaweal.youfool.devops.leaderassign.**.mapper", "com.chinaweal.youfool.devops.org.mapper", "com.chinaweal.youfool.devops.ai.**.mapper"}, sqlSessionTemplateRef = "devopsSqlSessionTemplate")
public class DevopsDataSource { public class DevopsDataSource {
@Autowired
@Bean(name = "devopsDS", initMethod = "init", destroyMethod = "close") private CommonMetaObjectHandler commonMetaObjectHandler;
@ConfigurationProperties(prefix = "spring.datasource.devops")
@Primary
public DruidDataSource dataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "devopsSqlSessionFactory") @Bean(name = "devopsSqlSessionFactory")
public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("devopsDS") DataSource dataSource) throws Exception { public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("devopsDS") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource); bean.setDataSource(dataSource);
GlobalConfig globalConfig = new GlobalConfig(); GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new CommonMetaObjectHandler()); globalConfig.setMetaObjectHandler(commonMetaObjectHandler);
bean.setGlobalConfig(globalConfig); bean.setGlobalConfig(globalConfig);
bean.setConfigLocation(new ClassPathResource("mybatis/mybatis-config.xml")); bean.setConfigLocation(new ClassPathResource("mybatis/mybatis-config.xml"));
bean.setPlugins(paginationInterceptor());// 分页插件 org.springframework.core.io.Resource[] prjResources = new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/mapper/**/*.xml");
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/mapper/**/*.xml")); org.springframework.core.io.Resource[] cmsResources = new PathMatchingResourcePatternResolver().getResources("classpath*:cms/mybatis/mapper/**/*.xml");
org.springframework.core.io.Resource[] resources = ArrayUtils.addAll(prjResources, cmsResources);
bean.setMapperLocations(resources);
return bean; return bean;
} }
@Bean(name = "devopsTransactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("devopsDS") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "devopsSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("devopsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setLimit(-1);
return paginationInterceptor;
}
} }

View File

@ -1,7 +1,7 @@
package com.chinaweal.youfool.devops.config; package com.chinaweal.youfool.devops.config;
import com.chinaweal.youfool.framework.springboot.filter.RepeatlyReadFilter; import com.chinaweal.youfool.framework.springboot.filter.RepeatlyReadFilter;
import com.chinaweal.youfool.framework.springboot.log.filter.RestLogFilter; import com.chinaweal.youfool.framework.springboot.filter.RestLogFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@ -1,6 +1,6 @@
package com.chinaweal.youfool.devops.config; package com.chinaweal.youfool.devops.config;
import com.chinaweal.youfool.devops.util.ErrorLogUtils; import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
// Temporarily commented out for Spring AI compatibility // Temporarily commented out for Spring AI compatibility
// import com.chinaweal.youfool.devops.ai.exception.*; // import com.chinaweal.youfool.devops.ai.exception.*;
// import com.chinaweal.youfool.devops.ai.circuitbreaker.CircuitBreakerOpenException; // import com.chinaweal.youfool.devops.ai.circuitbreaker.CircuitBreakerOpenException;
@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;

View File

@ -6,7 +6,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistration
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,59 +1,59 @@
package com.chinaweal.youfool.devops.config; //package com.chinaweal.youfool.devops.config;
//
import com.alibaba.druid.pool.DruidDataSource; //import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; //import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.core.config.GlobalConfig; //import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; //import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler; //import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler;
import org.apache.ibatis.session.SqlSessionFactory; //import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate; //import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan; //import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; //import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties; //import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource; //import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; //import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager; //import org.springframework.jdbc.datasource.DataSourceTransactionManager;
//
import javax.sql.DataSource; //import javax.sql.DataSource;
//
/** ///**
* youfool基础的数据源 // * youfool基础的数据源
* // *
* @author itluck // * @author itluck
*/ // */
//
@Configuration //@Configuration
@MapperScan(basePackages = "com.chinaweal.youfool.framework.springboot.**.mapper", sqlSessionTemplateRef = "youfoolSqlSessionTemplate") //@MapperScan(basePackages = "com.chinaweal.youfool.framework.springboot.**.mapper", sqlSessionTemplateRef = "youfoolSqlSessionTemplate")
public class YoufoolDataSource { //public class YoufoolDataSource {
//
//
@Bean(name = "youfoolDS", initMethod = "init", destroyMethod = "close") // @Bean(name = "youfoolDS", initMethod = "init", destroyMethod = "close")
@ConfigurationProperties(prefix = "spring.datasource.youfool") // @ConfigurationProperties(prefix = "spring.datasource.youfool")
public DruidDataSource dataSource() { // public DruidDataSource dataSource() {
return DruidDataSourceBuilder.create().build(); // return DruidDataSourceBuilder.create().build();
} // }
//
@Bean(name = "youfoolSqlSessionFactory") // @Bean(name = "youfoolSqlSessionFactory")
public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("youfoolDS") DataSource dataSource) throws Exception { // public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("youfoolDS") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean(); // MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource); // bean.setDataSource(dataSource);
GlobalConfig globalConfig = new GlobalConfig(); // GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setMetaObjectHandler(new CommonMetaObjectHandler()); // globalConfig.setMetaObjectHandler(new CommonMetaObjectHandler());
bean.setGlobalConfig(globalConfig); // bean.setGlobalConfig(globalConfig);
bean.setConfigLocation(new ClassPathResource("youfool/mybatis/mybatis-config.xml")); // bean.setConfigLocation(new ClassPathResource("youfool/mybatis/mybatis-config.xml"));
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:youfool/mybatis/mapper/**/*.xml")); // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:youfool/mybatis/mapper/**/*.xml"));
return bean; // return bean;
} // }
//
@Bean(name = "youfoolTransactionManager") // @Bean(name = "youfoolTransactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("youfoolDS") DataSource dataSource) { // public DataSourceTransactionManager transactionManager(@Qualifier("youfoolDS") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource); // return new DataSourceTransactionManager(dataSource);
} // }
//
@Bean(name = "youfoolSqlSessionTemplate") // @Bean(name = "youfoolSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("youfoolSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { // public SqlSessionTemplate sqlSessionTemplate(@Qualifier("youfoolSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory); // return new SqlSessionTemplate(sqlSessionFactory);
} // }
} //}

View File

@ -1,14 +1,14 @@
package com.chinaweal.youfool.devops.dev; package com.chinaweal.youfool.devops.dev;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.CodeGenerator; import com.chinaweal.youfool.framework.springboot.mybatis.plus.FastCodeGenerator;
/** /**
* 代码生成器 * 代码生成器
*/ */
public class MybatisPlusCodeGenerator { public class MybatisPlusCodeGenerator {
public static void main(String[] args) { public static void main(String[] args) {
CodeGenerator codeGenerator = new CodeGenerator("properties/codeCenerator"); FastCodeGenerator fastCodeGenerator = new FastCodeGenerator("properties/codeGenerator");
codeGenerator.generateCode(); fastCodeGenerator.generate();
} }
} }

View File

@ -6,8 +6,8 @@ import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskAssignVo;
import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskListQuery; import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskListQuery;
import com.chinaweal.youfool.devops.leaderassign.entity.Assign; import com.chinaweal.youfool.devops.leaderassign.entity.Assign;
import com.chinaweal.youfool.devops.leaderassign.service.IAssignService; import com.chinaweal.youfool.devops.leaderassign.service.IAssignService;
import com.chinaweal.youfool.framework.springboot.common.util.AssertUtils;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.util.AssertUtils;
import com.github.xiaoymin.knife4j.annotations.ApiSort; import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
/** /**
@ -43,7 +43,7 @@ public class AssignController {
@Operation(summary = "1.新增领导交办详情") @Operation(summary = "1.新增领导交办详情")
@PostMapping("/save") @PostMapping("/save")
public RestResult<Assign> saveAssign(@RequestBody @Valid Assign assign, BindingResult bindingResult) { public RestResult<Assign> saveAssign(@RequestBody @Valid Assign assign, BindingResult bindingResult) {
AssertUtils.isBndingValidit(bindingResult); AssertUtils.isBindingValid(bindingResult);
assign = iAssignService.saveAssign(assign); assign = iAssignService.saveAssign(assign);
return RestResult.ok(assign); return RestResult.ok(assign);
} }

View File

@ -1,8 +1,8 @@
package com.chinaweal.youfool.devops.leaderassign.controller.dto; package com.chinaweal.youfool.devops.leaderassign.controller.dto;
import com.chinaweal.youfool.devops.base.entity.TaskHandle; import com.chinaweal.youfool.devops.base.entity.TaskHandle;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -34,14 +34,14 @@ public class AssignHandleQuery extends TaskHandle {
* 计划完成时间 * 计划完成时间
*/ */
@Schema(description = "计划完成时间") @Schema(description = "计划完成时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime plannedTime; private LocalDateTime plannedTime;
/** /**
* 实际完成时间 * 实际完成时间
*/ */
@Schema(description = "实际完成时间") @Schema(description = "实际完成时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime realityTime; private LocalDateTime realityTime;

View File

@ -1,7 +1,7 @@
package com.chinaweal.youfool.devops.leaderassign.controller.dto; package com.chinaweal.youfool.devops.leaderassign.controller.dto;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -127,21 +127,21 @@ public class TaskAssignVo implements Serializable {
* 报送时间 * 报送时间
*/ */
@Schema(description = "报送时间") @Schema(description = "报送时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime launchTime; private LocalDateTime launchTime;
/** /**
* 到期时间 * 到期时间
*/ */
@Schema(description = "到期时间") @Schema(description = "到期时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime solveLimitTime; private LocalDateTime solveLimitTime;
/** /**
* 处理更新时间 * 处理更新时间
*/ */
@Schema(description = "处理更新时间") @Schema(description = "处理更新时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime handleTime; private LocalDateTime handleTime;
/** /**
@ -160,13 +160,13 @@ public class TaskAssignVo implements Serializable {
* 交办时间 * 交办时间
*/ */
@Schema(description = "交办时间") @Schema(description = "交办时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime assignTime; private LocalDateTime assignTime;
/** /**
* 计划完成时间 * 计划完成时间
*/ */
@Schema(description = "计划完成时间") @Schema(description = "计划完成时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime plannedTime; private LocalDateTime plannedTime;
} }

View File

@ -7,16 +7,16 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.devops.base.entity.TaskFile; import com.chinaweal.youfool.devops.base.entity.TaskFile;
import com.chinaweal.youfool.devops.base.entity.TaskHandle; import com.chinaweal.youfool.devops.base.entity.TaskHandle;
import com.chinaweal.youfool.devops.base.entity.TaskList; import com.chinaweal.youfool.devops.base.entity.TaskList;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.devops.common.constants.CommonConstant;
import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -181,7 +181,7 @@ public class Assign extends SuperEntity {
*/ */
@Schema(description = "交办时间") @Schema(description = "交办时间")
@TableField("ASSIGN_TIME") @TableField("ASSIGN_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime assignTime; private LocalDateTime assignTime;
/** /**
@ -189,7 +189,7 @@ public class Assign extends SuperEntity {
*/ */
@Schema(description = "报送时间") @Schema(description = "报送时间")
@TableField("LAUNCH_TIME") @TableField("LAUNCH_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime launchTime; private LocalDateTime launchTime;
/** /**
@ -197,7 +197,7 @@ public class Assign extends SuperEntity {
*/ */
@Schema(description = "解决期限时间") @Schema(description = "解决期限时间")
@TableField("SOLVE_LIMIT_TIME") @TableField("SOLVE_LIMIT_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime solveLimitTime; private LocalDateTime solveLimitTime;
/** /**
@ -205,7 +205,7 @@ public class Assign extends SuperEntity {
*/ */
@Schema(description = "计划完成时间") @Schema(description = "计划完成时间")
@TableField("PLANNED_TIME") @TableField("PLANNED_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime plannedTime; private LocalDateTime plannedTime;
/** /**
@ -213,7 +213,7 @@ public class Assign extends SuperEntity {
*/ */
@Schema(description = "实际完成时间") @Schema(description = "实际完成时间")
@TableField("REALITY_TIME") @TableField("REALITY_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime realityTime; private LocalDateTime realityTime;
/** /**
@ -221,7 +221,7 @@ public class Assign extends SuperEntity {
*/ */
@Schema(description = "是否删除;0有效1删除") @Schema(description = "是否删除;0有效1删除")
@TableField("DELETED") @TableField("DELETED")
@TableLogic(value = ConstantsUtil.NOT_DELETED, delval = ConstantsUtil.DELETED) @TableLogic(value = CommonConstant.FALSE_0_STR, delval = CommonConstant.TRUE_1_STR)
private String deleted; private String deleted;
@TableField(exist = false) @TableField(exist = false)

View File

@ -13,6 +13,7 @@ import com.chinaweal.youfool.devops.base.service.IDictService;
import com.chinaweal.youfool.devops.base.service.ITaskFileService; import com.chinaweal.youfool.devops.base.service.ITaskFileService;
import com.chinaweal.youfool.devops.base.service.ITaskHandleService; import com.chinaweal.youfool.devops.base.service.ITaskHandleService;
import com.chinaweal.youfool.devops.base.service.ITaskListService; import com.chinaweal.youfool.devops.base.service.ITaskListService;
import com.chinaweal.youfool.devops.common.constants.CommonConstant;
import com.chinaweal.youfool.devops.leaderassign.controller.dto.AssignHandleQuery; import com.chinaweal.youfool.devops.leaderassign.controller.dto.AssignHandleQuery;
import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskAssignVo; import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskAssignVo;
import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskListQuery; import com.chinaweal.youfool.devops.leaderassign.controller.dto.TaskListQuery;
@ -25,13 +26,12 @@ import com.chinaweal.youfool.devops.org.entity.Engineer;
import com.chinaweal.youfool.devops.org.service.IEngineerService; import com.chinaweal.youfool.devops.org.service.IEngineerService;
import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -91,7 +91,7 @@ public class AssignServiceImpl extends ServiceImpl<AssignMapper, Assign> impleme
assign.setTaskId(taskId); //设置单号 assign.setTaskId(taskId); //设置单号
assign.setBizId(generateAssignId()); //设置单号 assign.setBizId(generateAssignId()); //设置单号
assign.setLaunchTime(LocalDateTime.now()); assign.setLaunchTime(LocalDateTime.now());
assign.setDeleted(ConstantsUtil.NOT_DELETED); assign.setDeleted(CommonConstant.FALSE_0_STR);
save(assign); save(assign);
//生成待办 //生成待办
@ -272,7 +272,7 @@ public class AssignServiceImpl extends ServiceImpl<AssignMapper, Assign> impleme
LambdaQueryWrapper<Assign> qw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Assign> qw = new LambdaQueryWrapper<>();
qw.ge(Assign::getLaunchTime, LocalDate.now().atStartOfDay()) qw.ge(Assign::getLaunchTime, LocalDate.now().atStartOfDay())
.lt(Assign::getLaunchTime, LocalDate.now().atStartOfDay().plusDays(1)); .lt(Assign::getLaunchTime, LocalDate.now().atStartOfDay().plusDays(1));
int count = count(qw) + 1; long count = count(qw) + 1;
//补齐零 //补齐零
String no = String.format("%04d", count); String no = String.format("%04d", count);
String bizId = prefix + no; String bizId = prefix + no;

View File

@ -1,19 +1,23 @@
package com.chinaweal.youfool.devops.org.business.service.impl; package com.chinaweal.youfool.devops.org.business.service.impl;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.chinaweal.youfool.devops.common.utils.StringUtils;
import com.chinaweal.youfool.devops.org.business.entity.BusinessUser; import com.chinaweal.youfool.devops.org.business.entity.BusinessUser;
import com.chinaweal.youfool.devops.org.business.service.BusinessUserService; import com.chinaweal.youfool.devops.org.business.service.BusinessUserService;
import com.chinaweal.youfool.devops.org.entity.UserBaseExtend;
import com.chinaweal.youfool.framework.springboot.common.util.ExpiryMap;
import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import com.chinaweal.youfool.framework.springboot.user.shiro.JWTToken;
import com.chinaweal.youfool.framework.springboot.util.ExpiryMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import java.util.ArrayList;
import java.util.*; import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
@ -25,8 +29,6 @@ import java.util.*;
*/ */
@Service @Service
public class BusinessUserServiceImpl implements BusinessUserService { public class BusinessUserServiceImpl implements BusinessUserService {
@Resource
private JWTToken jwtToken;
@Value("${business.fsLoginUrl}") @Value("${business.fsLoginUrl}")
private String fsLoginUrl; private String fsLoginUrl;
@Value("${business.sdLoginUrl}") @Value("${business.sdLoginUrl}")
@ -75,13 +77,18 @@ public class BusinessUserServiceImpl implements BusinessUserService {
} }
} }
Map data = (Map) body.get("data"); Map data = (Map) body.get("data");
Map<String, Object> claims = new LinkedHashMap<>(); userId = StringUtils.trimObj(data.get("primaryKey"));
claims.put("regionId", data.get("regionID")); StpUtil.login(userId);
claims.put("orgId", data.get("orgID")); SaSession session = StpUtil.getSession();
claims.put("userId", data.get("primaryKey")); UserBaseExtend user = new UserBaseExtend();
claims.put("unitId", data.get("unitID")); user.setUserId(userId);
claims.put("roleType", "business"); user.setUsername(StringUtils.trimObj(data.get("ename")));
return jwtToken.createJWT(String.valueOf(data.get("ename")), claims); user.setOrgId(StringUtils.trimObj(data.get("orgID")));
user.setUnitId(StringUtils.trimObj(data.get("unitID")));
user.setRegionId(StringUtils.trimObj(data.get("regionID")));
user.setRoleType("business");
session.set(SaSession.USER, user);
return StpUtil.getTokenValue();
} }
@Override @Override

View File

@ -1,14 +1,15 @@
package com.chinaweal.youfool.devops.org.controller; package com.chinaweal.youfool.devops.org.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.youfool.devops.org.entity.Engineer; import com.chinaweal.youfool.devops.org.entity.Engineer;
import com.chinaweal.youfool.devops.org.service.IEngineerService; import com.chinaweal.youfool.devops.org.service.IEngineerService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.common.util.AssertUtils;
import com.chinaweal.youfool.framework.springboot.common.util.RSAUtil;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.user.entity.UserBase; import com.chinaweal.youfool.framework.springboot.user.entity.UserBase;
import com.chinaweal.youfool.framework.springboot.util.AssertUtils;
import com.chinaweal.youfool.framework.springboot.util.RSAUtil;
import com.github.xiaoymin.knife4j.annotations.ApiSort; import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -22,7 +23,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List; import java.util.List;
@ -48,7 +49,7 @@ public class EngineerController {
@Operation(summary = "1.新增工程师") @Operation(summary = "1.新增工程师")
@PostMapping @PostMapping
public RestResult<Object> saveEngineer(@RequestBody @Valid Engineer engineer, BindingResult bindingResult) { public RestResult<Object> saveEngineer(@RequestBody @Valid Engineer engineer, BindingResult bindingResult) {
AssertUtils.isBndingValidit(bindingResult); AssertUtils.isBindingValid(bindingResult);
RestResult<Object> result = iEngineerService.saveEngineer(engineer); RestResult<Object> result = iEngineerService.saveEngineer(engineer);
return result; return result;
@ -64,7 +65,7 @@ public class EngineerController {
@Operation(summary = "3.修改工程师") @Operation(summary = "3.修改工程师")
@PostMapping("/update") @PostMapping("/update")
public RestResult<Object> updateEngineer(@RequestBody @Valid Engineer engineer, BindingResult bindingResult) { public RestResult<Object> updateEngineer(@RequestBody @Valid Engineer engineer, BindingResult bindingResult) {
AssertUtils.isBndingValidit(bindingResult); AssertUtils.isBindingValid(bindingResult);
RestResult<Object> result = iEngineerService.updateEngineer(engineer); RestResult<Object> result = iEngineerService.updateEngineer(engineer);
return result; return result;
} }
@ -88,7 +89,7 @@ public class EngineerController {
public RestResult<String> updatePassword(@RequestParam String oldPassword, @RequestParam String newPassword) throws Exception { public RestResult<String> updatePassword(@RequestParam String oldPassword, @RequestParam String newPassword) throws Exception {
oldPassword = RSAUtil.decrypt(oldPassword, privateKey); oldPassword = RSAUtil.decrypt(oldPassword, privateKey);
newPassword = RSAUtil.decrypt(newPassword, privateKey); newPassword = RSAUtil.decrypt(newPassword, privateKey);
return iEngineerService.updatePassword(UserBase.currentUserId(), oldPassword, newPassword); return iEngineerService.updatePassword(StpUtil.getLoginIdAsString(), oldPassword, newPassword);
} }
@Operation(summary = "7.查询工程师列表") @Operation(summary = "7.查询工程师列表")

View File

@ -1,38 +1,30 @@
package com.chinaweal.youfool.devops.org.controller; package com.chinaweal.youfool.devops.org.controller;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.chinaweal.youfool.devops.common.utils.VerifyCode;
import com.chinaweal.youfool.devops.org.business.entity.BusinessUser; import com.chinaweal.youfool.devops.org.business.entity.BusinessUser;
import com.chinaweal.youfool.devops.org.business.service.BusinessUserService; import com.chinaweal.youfool.devops.org.business.service.BusinessUserService;
import com.chinaweal.youfool.devops.org.entity.Engineer; import com.chinaweal.youfool.devops.org.entity.Engineer;
import com.chinaweal.youfool.devops.org.entity.UserBaseExtend;
import com.chinaweal.youfool.devops.org.service.IEngineerService; import com.chinaweal.youfool.devops.org.service.IEngineerService;
import com.chinaweal.youfool.devops.util.VerifyCode; import com.chinaweal.youfool.framework.springboot.common.util.RSAUtil;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import com.chinaweal.youfool.framework.springboot.user.entity.UserBase;
import com.chinaweal.youfool.framework.springboot.user.shiro.JWTToken;
import com.chinaweal.youfool.framework.springboot.util.RSAUtil;
import com.chinaweal.youfool.framework.springboot.util.WebUtil;
import com.github.xiaoymin.knife4j.annotations.ApiSort; import com.github.xiaoymin.knife4j.annotations.ApiSort;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.media.ExampleObject;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
@Tag(name = "1.用户操作") @Tag(name = "1.用户操作")
@ -44,8 +36,6 @@ public class UserController {
@Resource @Resource
private IEngineerService iEngineerService; private IEngineerService iEngineerService;
@Resource @Resource
private JWTToken jwtToken;
@Resource
private BusinessUserService businessUserService; private BusinessUserService businessUserService;
@Value("${rsa.privateKey}") @Value("${rsa.privateKey}")
private String privateKey; private String privateKey;
@ -106,7 +96,7 @@ public class UserController {
@GetMapping("/info") @GetMapping("/info")
@Operation(summary = "3.查询用户信息") @Operation(summary = "3.查询用户信息")
public RestResult<Object> getInfo(@Parameter(description = "系统角色标识 business业务人员engineer运维工程师", required = true) @RequestParam String roleType) { public RestResult<Object> getInfo(@Parameter(description = "系统角色标识 business业务人员engineer运维工程师", required = true) @RequestParam String roleType) {
String userId = UserBase.currentUserId(); String userId = StpUtil.getLoginIdAsString();
if (StringUtils.isBlank(userId)) { if (StringUtils.isBlank(userId)) {
return RestResult.error(ResultCode.PARAM_IS_BLANK); return RestResult.error(ResultCode.PARAM_IS_BLANK);
} }
@ -119,9 +109,8 @@ public class UserController {
return RestResult.ok(businessUser); return RestResult.ok(businessUser);
} else if ("outer".equals(roleType)) { } else if ("outer".equals(roleType)) {
//网办直接解析权限jwt参数 //网办直接解析权限jwt参数
String token = WebUtil.getToken(); SaSession session = StpUtil.getSession();
Jws<Claims> claimsJws = jwtToken.parseJWT(token); return RestResult.ok(session.get(SaSession.USER, new UserBaseExtend()));
return RestResult.ok(claimsJws.getBody());
} else { } else {
return RestResult.error(ResultCode.PARAM_TYPE_BIND_ERROR); return RestResult.error(ResultCode.PARAM_TYPE_BIND_ERROR);
} }
@ -143,7 +132,7 @@ public class UserController {
@Operation(summary = "6.网办外部登录接口") @Operation(summary = "6.网办外部登录接口")
@PostMapping("/loginOuter") @PostMapping("/loginOuter")
public RestResult<String> loginOuter(@RequestBody Map<String, String> data, HttpServletRequest request) throws Exception { public RestResult<?> loginOuter(@RequestBody Map<String, String> data, HttpServletRequest request) throws Exception {
String userId = data.get("userId"); String userId = data.get("userId");
String name = data.get("name"); String name = data.get("name");
String username = data.get("username"); String username = data.get("username");
@ -154,14 +143,14 @@ public class UserController {
return RestResult.error(ResultCode.PARAM_IS_BLANK); return RestResult.error(ResultCode.PARAM_IS_BLANK);
} }
//只要不为空,就默认登陆通过 //只要不为空,就默认登陆通过
Map<String, Object> claims = new LinkedHashMap<>(); StpUtil.login(userId);
claims.put("nickname", name); UserBaseExtend userBase = new UserBaseExtend();
claims.put("phone", phone); userBase.setNickname(name);
claims.put("source", source); userBase.setUsername(phone);
claims.put("roleType", "outer"); userBase.setSource(source);
claims.put("roles", "commonOuter"); userBase.setRoleType("outer");
String token = jwtToken.createJWT(userId, username, claims); userBase.setRoles("commonOuter");
return RestResult.ok(token); return RestResult.ok();
} }
} }

View File

@ -3,16 +3,15 @@ package com.chinaweal.youfool.devops.org.entity;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chinaweal.youfool.devops.common.constants.CommonConstant;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
/** /**
* <p> * <p>
@ -124,7 +123,7 @@ public class Engineer extends SuperEntity {
* 是否删除 0未删除1已删除 * 是否删除 0未删除1已删除
*/ */
@Schema(description = "是否删除 0未删除、1已删除") @Schema(description = "是否删除 0未删除、1已删除")
@TableLogic(value = ConstantsUtil.NOT_DELETED, delval = ConstantsUtil.DELETED) @TableLogic(value = CommonConstant.FALSE_0_STR, delval = CommonConstant.TRUE_1_STR)
@TableField("is_deleted") @TableField("is_deleted")
private String isDeleted; private String isDeleted;

View File

@ -0,0 +1,48 @@
package com.chinaweal.youfool.devops.org.entity;
import com.chinaweal.youfool.framework.springboot.user.entity.UserBase;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
* 用户扩展信息
*
* @author lroyia
* @since 2025/8/18 17:15
**/
@EqualsAndHashCode(callSuper = true)
@Data
public class UserBaseExtend extends UserBase {
/**
* 系统来源
*/
private String source;
/**
* 角色类型
*/
private String roleType;
/**
* 角色
*/
private String roles;
/**
* 地区id
*/
private String regionId;
/**
* 单位 id
*/
private String orgId;
/**
* 部门id
*/
private String unitId;
}

View File

@ -1,16 +1,17 @@
package com.chinaweal.youfool.devops.org.interceptor; package com.chinaweal.youfool.devops.org.interceptor;
import cn.dev33.satoken.stp.StpUtil;
import com.chinaweal.youfool.framework.springboot.common.util.WebUtil;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import com.chinaweal.youfool.framework.springboot.user.entity.UserBase; import com.chinaweal.youfool.framework.springboot.user.entity.UserBase;
import com.chinaweal.youfool.framework.springboot.util.WebUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
/** /**
* 登陆拦截 * 登陆拦截
@ -24,7 +25,7 @@ public class LoginInterceptor implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
//判断token是否有效 //判断token是否有效
String userId = UserBase.currentUserId(); String userId = StpUtil.getLoginIdAsString();
if (StringUtils.isNotBlank((userId))) { if (StringUtils.isNotBlank((userId))) {
return true; return true;
} else { } else {

View File

@ -1,10 +1,10 @@
package com.chinaweal.youfool.devops.org.service; package com.chinaweal.youfool.devops.org.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaweal.youfool.devops.org.entity.Engineer;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.devops.org.entity.Engineer;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import java.util.List; import java.util.List;

View File

@ -1,32 +1,31 @@
package com.chinaweal.youfool.devops.org.service.impl; package com.chinaweal.youfool.devops.org.service.impl;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.youfool.devops.common.constants.CommonConstant;
import com.chinaweal.youfool.devops.org.entity.Engineer; import com.chinaweal.youfool.devops.org.entity.Engineer;
import com.chinaweal.youfool.devops.org.entity.UserBaseExtend;
import com.chinaweal.youfool.devops.org.mapper.EngineerMapper; import com.chinaweal.youfool.devops.org.mapper.EngineerMapper;
import com.chinaweal.youfool.devops.org.service.IEngineerService; import com.chinaweal.youfool.devops.org.service.IEngineerService;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; import com.chinaweal.youfool.framework.springboot.common.util.ExpiryMap;
import com.chinaweal.youfool.framework.springboot.common.util.SM3Util;
import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException;
import com.chinaweal.youfool.framework.springboot.rest.RestResult; import com.chinaweal.youfool.framework.springboot.rest.RestResult;
import com.chinaweal.youfool.framework.springboot.rest.ResultCode; import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
import com.chinaweal.youfool.framework.springboot.user.entity.UserBase; import com.chinaweal.youfool.framework.springboot.user.entity.UserBase;
import com.chinaweal.youfool.framework.springboot.user.service.UserBaseService; import com.chinaweal.youfool.framework.springboot.user.service.UserBaseService;
import com.chinaweal.youfool.framework.springboot.user.shiro.JWTToken;
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil;
import com.chinaweal.youfool.framework.springboot.util.ExpiryMap;
import com.chinaweal.youfool.framework.springboot.util.SM3Util;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
@ -41,8 +40,6 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
@Value("${sm3.secret}") @Value("${sm3.secret}")
private String sm3Secret; private String sm3Secret;
@Resource
private JWTToken jwtToken;
private static final ExpiryMap<String, Integer> LOGIN_FREQ_NUM = new ExpiryMap<>(1800); private static final ExpiryMap<String, Integer> LOGIN_FREQ_NUM = new ExpiryMap<>(1800);
@ -74,13 +71,16 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
return RestResult.error(ResultCode.USER_ACCOUNT_FORBIDDEN); return RestResult.error(ResultCode.USER_ACCOUNT_FORBIDDEN);
} }
Map<String, Object> claims = new LinkedHashMap<>(); UserBaseExtend user = new UserBaseExtend();
claims.put("userId", engineer.getUserId()); user.setUserId(engineer.getUserId());
claims.put("roleType", "engineer"); user.setSource(engineer.getSource());
claims.put("source", engineer.getSource()); user.setUsername(engineer.getUsername());
String token = jwtToken.createJWT(username, claims); user.setNickname(engineer.getNickname());
user.setRoleType("engineer");
StpUtil.login(engineer.getUserId());
StpUtil.getSession().set(SaSession.USER, user);
return RestResult.ok(token); return RestResult.ok(StpUtil.getTokenValue());
} }
@Override @Override
@ -116,7 +116,7 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
if (dbEngineer != null) { if (dbEngineer != null) {
return RestResult.error(ResultCode.USER_HAS_EXISTED); return RestResult.error(ResultCode.USER_HAS_EXISTED);
} }
engineer.setIsDeleted(ConstantsUtil.NOT_DELETED); engineer.setIsDeleted(CommonConstant.FALSE_0_STR);
//加密密码 //加密密码
engineer.setPassword(SM3Util.encrypt(sm3Secret, engineer.getPassword())); engineer.setPassword(SM3Util.encrypt(sm3Secret, engineer.getPassword()));
@ -191,14 +191,17 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
} }
@Override @Override
public UserBase getUserBaseByUsername(String username) { public RestResult<UserBase> login(String userName, String password, boolean frameworkLogin) {
UserBase userBase = new UserBase(); return null;
userBase.setUsername(username);
return userBase;
} }
@Override @Override
public boolean isValidToken(String token) { public UserBase getCurrentUser() {
return false; return null;
}
@Override
public List<UserBase> getUserInfoByLoginId(List<String> loginIdList) {
return List.of();
} }
} }

View File

@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -13,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;

View File

@ -32,8 +32,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;

View File

@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Tag(name = "4.运维单待办") @Tag(name = "4.运维单待办")

View File

@ -20,8 +20,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;

View File

@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import jakarta.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;

View File

@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -44,7 +44,7 @@ public class Notification extends SuperEntity {
*/ */
@Schema(description = "统计月份") @Schema(description = "统计月份")
@TableField("MONTH_DATE") @TableField("MONTH_DATE")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDate monthDate; private LocalDate monthDate;
/** /**

View File

@ -3,9 +3,9 @@ package com.chinaweal.youfool.devops.repair.entity;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -141,7 +141,7 @@ public class Repair extends SuperEntity {
*/ */
@Schema(description = "报送时间") @Schema(description = "报送时间")
@TableField("LAUNCH_TIME") @TableField("LAUNCH_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime launchTime; private LocalDateTime launchTime;
/** /**
@ -149,7 +149,7 @@ public class Repair extends SuperEntity {
*/ */
@Schema(description = "解决期限时间") @Schema(description = "解决期限时间")
@TableField("SOLVE_LIMIT_TIME") @TableField("SOLVE_LIMIT_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime solveLimitTime; private LocalDateTime solveLimitTime;
/** /**
@ -206,7 +206,7 @@ public class Repair extends SuperEntity {
*/ */
@Schema(description = "业务要求办理时效") @Schema(description = "业务要求办理时效")
@TableField("BUS_HANDLE_TIME") @TableField("BUS_HANDLE_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime busHandleTime; private LocalDateTime busHandleTime;
/** /**
@ -214,7 +214,7 @@ public class Repair extends SuperEntity {
*/ */
@Schema(description = "计划完成时间") @Schema(description = "计划完成时间")
@TableField("PLANNED_TIME") @TableField("PLANNED_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime plannedTime; private LocalDateTime plannedTime;
/** /**
@ -222,7 +222,7 @@ public class Repair extends SuperEntity {
*/ */
@Schema(description = "实际完成时间") @Schema(description = "实际完成时间")
@TableField("REALITY_TIME") @TableField("REALITY_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime realityTime; private LocalDateTime realityTime;
/** /**

View File

@ -1,8 +1,9 @@
package com.chinaweal.youfool.devops.repair.entity; package com.chinaweal.youfool.devops.repair.entity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -90,7 +91,7 @@ public class RepairFile extends SuperEntity {
*/ */
@Schema(description = "上传时间") @Schema(description = "上传时间")
@TableField(value = "UPLOAD_TIME") @TableField(value = "UPLOAD_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime uploadTime; private LocalDateTime uploadTime;
} }

View File

@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer; import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -81,7 +82,7 @@ public class RepairHandle extends SuperEntity {
*/ */
@Schema(description = "生成时间") @Schema(description = "生成时间")
@TableField("HAPPEN_TIME") @TableField("HAPPEN_TIME")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime happenTime; private LocalDateTime happenTime;
/** /**
@ -139,7 +140,7 @@ public class RepairHandle extends SuperEntity {
@TableField(exist = false) @TableField(exist = false)
@Schema(description = "计划完成时间") @Schema(description = "计划完成时间")
@JsonSerialize(using = LocalDateTimeStringSerializer.class) @JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
private LocalDateTime plannedTime; private LocalDateTime plannedTime;
/** /**

View File

@ -1,12 +1,10 @@
package com.chinaweal.youfool.devops.repair.entity; package com.chinaweal.youfool.devops.repair.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity; import com.chinaweal.youfool.framework.springboot.mybatis.plus.SuperEntity;
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;

Some files were not shown because too many files have changed in this diff Show More