依赖升级(未全部完成)
This commit is contained in:
parent
80c65b936e
commit
1145963ea4
115
pom.xml
115
pom.xml
|
|
@ -14,7 +14,7 @@
|
|||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.7.18</version>
|
||||
<version>3.4.5</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<properties>
|
||||
|
|
@ -30,7 +30,6 @@
|
|||
<lombok.version>1.18.34</lombok.version>
|
||||
<mybatis.version>3.5.16</mybatis.version>
|
||||
<druid.version>1.2.23</druid.version>
|
||||
<mybatis-plus.version>3.5.7</mybatis-plus.version>
|
||||
<!-- SpringDoc OpenAPI for Swagger替换SpringFox -->
|
||||
<springdoc.version>1.8.0</springdoc.version>
|
||||
<!-- Spring AI for LLM Integration (compatible with Spring Boot 2.7.x) -->
|
||||
|
|
@ -43,33 +42,20 @@
|
|||
<testcontainers.version>1.19.8</testcontainers.version>
|
||||
<h2.version>2.2.224</h2.version>
|
||||
</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>
|
||||
<!--Spring Boot Web Starter-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Thymeleaf Template Engine for AI Management UI -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-thymeleaf</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Spring AI Core Dependencies for LLM Integration - TEMPORARILY COMMENTED FOR COMPATIBILITY -->
|
||||
<!-- TODO: Need to use Spring Boot 3.x compatible version or find alternative for Spring Boot 2.7.18 -->
|
||||
<!--
|
||||
|
|
@ -83,45 +69,45 @@
|
|||
<artifactId>spring-ai-retry</artifactId>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
|
||||
<!-- Spring Boot WebFlux for async operations (required by Spring AI) -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- OkHttp HTTP client for better connection management -->
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>${okhttp.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Jackson for JSON processing (used by Spring AI) -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Spring Boot Actuator for monitoring and health checks -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Micrometer for metrics collection -->
|
||||
<dependency>
|
||||
<groupId>io.micrometer</groupId>
|
||||
<artifactId>micrometer-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Spring Retry for circuit breaker patterns -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.retry</groupId>
|
||||
<artifactId>spring-retry</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Resilience4j for circuit breaker and rate limiting -->
|
||||
<dependency>
|
||||
<groupId>io.github.resilience4j</groupId>
|
||||
|
|
@ -131,46 +117,10 @@
|
|||
<!--基础框架youfool-framework-boot-->
|
||||
<dependency>
|
||||
<groupId>com.chinaweal.youfool</groupId>
|
||||
<artifactId>youfool-framework-springboot</artifactId>
|
||||
<version>1.1.1-SNAPSHOT</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>
|
||||
<artifactId>youfool-framework-springboot3</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</dependency>
|
||||
<!--druid-->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>${druid.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
|
|
@ -202,10 +152,10 @@
|
|||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Spring AI Testing support - Removed due to unavailability in nexus -->
|
||||
<!-- Using standard Spring Boot test instead -->
|
||||
|
||||
|
||||
<!-- H2 in-memory database for testing -->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
|
|
@ -213,7 +163,7 @@
|
|||
<version>${h2.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- TestContainers for integration testing (optional) -->
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
|
|
@ -221,7 +171,7 @@
|
|||
<version>${testcontainers.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- TestContainers PostgreSQL for database testing -->
|
||||
<dependency>
|
||||
<groupId>org.testcontainers</groupId>
|
||||
|
|
@ -229,14 +179,14 @@
|
|||
<version>${testcontainers.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- WebFlux Test support -->
|
||||
<dependency>
|
||||
<groupId>io.projectreactor</groupId>
|
||||
<artifactId>reactor-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- OkHttp MockWebServer for HTTP testing -->
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
|
|
@ -244,7 +194,7 @@
|
|||
<version>${okhttp.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- JUnit 4 compatibility (keep for existing tests) -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
|
|
@ -262,20 +212,20 @@
|
|||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-websocket</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Spring messaging support for WebSocket -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-messaging</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- SockJS for WebSocket fallback support -->
|
||||
<dependency>
|
||||
<groupId>org.webjars</groupId>
|
||||
<artifactId>sockjs-client</artifactId>
|
||||
<version>1.5.1</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.websocket</groupId>
|
||||
<artifactId>javax.websocket-api</artifactId>
|
||||
|
|
@ -316,12 +266,6 @@
|
|||
<artifactId>logback-classic</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
<!-- mybatis -->
|
||||
<dependency>
|
||||
<groupId>org.mybatis</groupId>
|
||||
<artifactId>mybatis</artifactId>
|
||||
<version>${mybatis.version}</version>
|
||||
</dependency>
|
||||
<!-- shiro -->
|
||||
<dependency>
|
||||
<groupId>org.apache.shiro</groupId>
|
||||
|
|
@ -352,15 +296,14 @@
|
|||
<version>2.9.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- 临时依赖:Knife4j注解兼容 -->
|
||||
<!--AI框架接入-->
|
||||
<dependency>
|
||||
<groupId>com.github.xiaoymin</groupId>
|
||||
<artifactId>knife4j-annotations</artifactId>
|
||||
<version>2.0.9</version>
|
||||
<scope>compile</scope>
|
||||
<groupId>com.chinaweal.youfool.ai</groupId>
|
||||
<artifactId>youfool-ai-framework</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
<!-- Repositories for Spring AI dependencies -->
|
||||
<repositories>
|
||||
<repository>
|
||||
|
|
@ -380,7 +323,7 @@
|
|||
</releases>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
|
||||
<build>
|
||||
<finalName>devops-api-gd</finalName>
|
||||
<plugins>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops;
|
|||
// Temporarily commented out for Spring AI compatibility
|
||||
// import com.chinaweal.youfool.devops.ai.config.AIRepairIntegrationConfig;
|
||||
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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
|
|||
|
|
@ -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.WorkflowTraceStep;
|
||||
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.extern.slf4j.Slf4j;
|
||||
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.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.WorkflowTraceStep;
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
|
|
|
|||
|
|
@ -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.WorkflowTraceStep;
|
||||
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.extern.slf4j.Slf4j;
|
||||
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.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.WorkflowTraceStep;
|
||||
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.ratelimiter.annotation.RateLimiter;
|
||||
import io.github.resilience4j.retry.annotation.Retry;
|
||||
|
|
@ -17,7 +17,6 @@ import org.springframework.core.annotation.Order;
|
|||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
|
|||
|
|
@ -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.ToolCallResult;
|
||||
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.type.TypeReference;
|
||||
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.RestTemplate;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.service.AIAnswerService;
|
||||
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.ResultCode;
|
||||
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.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -295,7 +295,7 @@ public class AIAnswerController {
|
|||
* 批量回答请求
|
||||
*/
|
||||
public static class BatchAnswerRequest {
|
||||
@javax.validation.constraints.NotEmpty(message = "工单ID列表不能为空")
|
||||
@jakarta.validation.constraints.NotEmpty(message = "工单ID列表不能为空")
|
||||
private java.util.List<@NotBlank String> repairIds;
|
||||
|
||||
private Boolean includeHistory = true;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ import org.springframework.stereotype.Controller;
|
|||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
|
|
|||
|
|
@ -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.service.QwenChatService;
|
||||
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.ResultCode;
|
||||
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.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -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.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.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
|
|
|||
|
|
@ -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.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.ResultCode;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
|
|
|||
|
|
@ -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.service.AIAnswerServiceMCP;
|
||||
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.ResultCode;
|
||||
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.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
|
|
|
|||
|
|
@ -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.dto.llm.*;
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* AI回答生成请求
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* LLM函数调用详情
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* LLM函数定义
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import lombok.Data;
|
|||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* LLM函数工具定义
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import lombok.NoArgsConstructor;
|
|||
import lombok.Builder;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* LLM工具调用
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package com.chinaweal.youfool.devops.ai.example;
|
||||
|
||||
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 org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.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.ObjectMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
|
|
|||
|
|
@ -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.dto.llm.*;
|
||||
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.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import lombok.Builder;
|
|||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* MCP JSON-RPC 请求对象
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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.repair.entity.Repair;
|
||||
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 io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
|
||||
import io.github.resilience4j.retry.annotation.Retry;
|
||||
|
|
@ -17,8 +17,8 @@ import lombok.RequiredArgsConstructor;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.annotation.PreDestroy;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
|
@ -26,7 +26,6 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
|
@ -135,7 +134,7 @@ public class RepairVectorizationService {
|
|||
log.info("开始全量向量化迁移,任务ID: {}", taskId);
|
||||
|
||||
// 统计总数量
|
||||
Integer totalCount = countRepairsForVectorization(null);
|
||||
long totalCount = countRepairsForVectorization(null);
|
||||
progress.setTotalCount(totalCount);
|
||||
progress.setStatus("processing");
|
||||
|
||||
|
|
@ -160,7 +159,7 @@ public class RepairVectorizationService {
|
|||
processBatchVectorization(repairs.getRecords(), progress);
|
||||
|
||||
// 更新进度
|
||||
progress.setProcessedCount(Math.min(page * pageSize, totalCount.intValue()));
|
||||
progress.setProcessedCount(Math.min(page * pageSize, totalCount));
|
||||
progress.updateProgress();
|
||||
|
||||
log.info("全量向量化进度: {}/{} ({}%)",
|
||||
|
|
@ -215,7 +214,7 @@ public class RepairVectorizationService {
|
|||
}
|
||||
|
||||
// 注意:COUNT查询不能包含ORDER BY,需要先进行计数查询
|
||||
Integer totalCount = repairMapper.selectCount(wrapper);
|
||||
Long totalCount = repairMapper.selectCount(wrapper);
|
||||
progress.setTotalCount(totalCount);
|
||||
progress.setStatus("processing");
|
||||
|
||||
|
|
@ -241,7 +240,7 @@ public class RepairVectorizationService {
|
|||
// 处理增量数据
|
||||
processIncrementalVectorization(repairs.getRecords(), progress);
|
||||
|
||||
progress.setProcessedCount(Math.min(page * pageSize, totalCount.intValue()));
|
||||
progress.setProcessedCount(Math.min(page * pageSize, totalCount));
|
||||
progress.updateProgress();
|
||||
|
||||
} 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>()
|
||||
.isNotNull(Repair::getFaultDescription)
|
||||
.ne(Repair::getFaultDescription, "");
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.chinaweal.youfool.devops.ai.migration;
|
||||
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
* 向量化进度追踪
|
||||
*
|
||||
*
|
||||
* @author AI开发团队
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
|
@ -27,10 +27,10 @@ public class VectorizationProgress {
|
|||
private String status = "pending";
|
||||
|
||||
@Schema(description = "总数量")
|
||||
private Integer totalCount = 0;
|
||||
private Long totalCount = 0L;
|
||||
|
||||
@Schema(description = "已处理数量")
|
||||
private Integer processedCount = 0;
|
||||
private Long processedCount = 0L;
|
||||
|
||||
@Schema(description = "成功数量")
|
||||
private Integer successCount = 0;
|
||||
|
|
@ -87,7 +87,7 @@ public class VectorizationProgress {
|
|||
this.failureCount++;
|
||||
updateProgress();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 批量增加成功计数
|
||||
*/
|
||||
|
|
@ -95,7 +95,7 @@ public class VectorizationProgress {
|
|||
this.successCount += count;
|
||||
updateProgress();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 批量增加失败计数
|
||||
*/
|
||||
|
|
@ -118,21 +118,21 @@ public class VectorizationProgress {
|
|||
if (totalCount != null && totalCount > 0) {
|
||||
this.progressPercentage = (double) (successCount + failureCount) / totalCount * 100;
|
||||
}
|
||||
|
||||
|
||||
// 计算处理速度
|
||||
if (startTime != null) {
|
||||
long elapsedMs = java.time.Duration.between(startTime, LocalDateTime.now()).toMillis();
|
||||
if (elapsedMs > 0) {
|
||||
this.processingSpeed = (double) (successCount + failureCount) / elapsedMs * 1000;
|
||||
|
||||
|
||||
// 预估剩余时间
|
||||
int remaining = totalCount - (successCount + failureCount);
|
||||
long remaining = totalCount - (successCount + failureCount);
|
||||
if (processingSpeed > 0) {
|
||||
this.estimatedRemainingSeconds = (long) (remaining / processingSpeed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 计算总耗时
|
||||
if (endTime != null && startTime != null) {
|
||||
this.durationMs = java.time.Duration.between(startTime, endTime).toMillis();
|
||||
|
|
@ -194,11 +194,11 @@ public class VectorizationProgress {
|
|||
if (durationMs == null || durationMs == 0) {
|
||||
return "0秒";
|
||||
}
|
||||
|
||||
|
||||
long seconds = durationMs / 1000;
|
||||
long minutes = seconds / 60;
|
||||
long hours = minutes / 60;
|
||||
|
||||
|
||||
if (hours > 0) {
|
||||
return String.format("%d小时%d分钟%d秒", hours, minutes % 60, seconds % 60);
|
||||
} else if (minutes > 0) {
|
||||
|
|
@ -215,7 +215,7 @@ public class VectorizationProgress {
|
|||
if (processingSpeed == null || processingSpeed == 0) {
|
||||
return "0条/秒";
|
||||
}
|
||||
|
||||
|
||||
if (processingSpeed < 1) {
|
||||
return String.format("%.2f条/秒", processingSpeed);
|
||||
} else {
|
||||
|
|
@ -230,10 +230,10 @@ public class VectorizationProgress {
|
|||
if (estimatedRemainingSeconds == null || estimatedRemainingSeconds <= 0) {
|
||||
return "未知";
|
||||
}
|
||||
|
||||
|
||||
long minutes = estimatedRemainingSeconds / 60;
|
||||
long hours = minutes / 60;
|
||||
|
||||
|
||||
if (hours > 0) {
|
||||
return String.format("%d小时%d分钟", hours, minutes % 60);
|
||||
} else if (minutes > 0) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
package com.chinaweal.youfool.devops.ai.provider;
|
||||
|
||||
import com.chinaweal.youfool.devops.ai.dto.llm.ChatRequest;
|
||||
import com.chinaweal.youfool.devops.ai.dto.llm.FunctionTool;
|
||||
import com.chinaweal.youfool.devops.util.ErrorLogUtils;
|
||||
import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -11,7 +10,6 @@ import org.springframework.http.MediaType;
|
|||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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.dto.MCPToolDefinition;
|
||||
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.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
|
|
|||
|
|
@ -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.dto.MCPToolDefinition;
|
||||
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.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
|
|
|||
|
|
@ -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.dto.llm.ChatRequest;
|
||||
import com.chinaweal.youfool.devops.util.ErrorLogUtils;
|
||||
import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
|
|||
|
|
@ -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.dto.MCPToolDefinition;
|
||||
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.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,13 @@
|
|||
package com.chinaweal.youfool.devops.ai.resilience;
|
||||
|
||||
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 org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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.service.IRepairService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.chinaweal.youfool.devops.util.ErrorLogUtils;
|
||||
import com.chinaweal.youfool.devops.util.TextSimilarityUtils;
|
||||
import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
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.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* AI回答服务
|
||||
|
|
|
|||
|
|
@ -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.mcp.MCPServer;
|
||||
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.provider.LLMProvider;
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
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 org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
|
|
|
|||
|
|
@ -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.handler.FunctionCallHandler;
|
||||
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.ratelimiter.annotation.RateLimiter;
|
||||
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.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
package com.chinaweal.youfool.devops.ai.service;
|
||||
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.chinaweal.youfool.devops.ai.service;
|
||||
|
||||
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.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
|
@ -12,7 +12,6 @@ import okhttp3.*;
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
|
|
|
|||
|
|
@ -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.dto.MCPToolDefinition;
|
||||
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.databind.JsonNode;
|
||||
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.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.io.BufferedReader;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
|
|
|||
|
|
@ -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.dto.EmbeddingRequest;
|
||||
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 io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
|
||||
import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
|
||||
|
|
@ -15,7 +15,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,14 @@
|
|||
package com.chinaweal.youfool.devops.ai.service;
|
||||
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.annotation.PreDestroy;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
|
|
|||
|
|
@ -4,12 +4,11 @@ package com.chinaweal.youfool.devops.base.controller;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.chinaweal.youfool.devops.base.entity.Dict;
|
||||
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.query.BaseQuery;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
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.GetMapping;
|
||||
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.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.chinaweal.youfool.devops.base.controller;
|
||||
|
||||
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.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
|
@ -20,7 +20,6 @@ import java.nio.file.Path;
|
|||
import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 错误日志查看控制器
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,9 @@
|
|||
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 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.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 待办表 控制器
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
package com.chinaweal.youfool.devops.base.entity;
|
||||
|
||||
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.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
|
|||
|
|
@ -4,15 +4,14 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
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.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
|
|
@ -93,7 +92,7 @@ public class TaskFile extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "上传时间")
|
||||
@TableField("UPLOAD_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime uploadTime;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
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.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
@ -91,7 +91,7 @@ public class TaskHandle extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "生成时间")
|
||||
@TableField("HAPPEN_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime happenTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package com.chinaweal.youfool.devops.base.entity;
|
||||
|
||||
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.util.ConstantsUtil;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
@ -160,7 +160,7 @@ public class TaskList extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "是否删除;0:有效;1:删除")
|
||||
@TableField("DELETED")
|
||||
@TableLogic(value = ConstantsUtil.NOT_DELETED, delval = ConstantsUtil.DELETED)
|
||||
@TableLogic(value = CommonConstant.FALSE_0_STR, delval = CommonConstant.TRUE_1_STR)
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
|
|
@ -168,7 +168,7 @@ public class TaskList extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "报送时间")
|
||||
@TableField("LAUNCH_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime launchTime;
|
||||
|
||||
/**
|
||||
|
|
@ -176,7 +176,7 @@ public class TaskList extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "到期时间")
|
||||
@TableField("SOLVE_LIMIT_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime solveLimitTime;
|
||||
|
||||
/**
|
||||
|
|
@ -184,7 +184,7 @@ public class TaskList extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "处理更新时间")
|
||||
@TableField("HANDLE_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime handleTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.base.service;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
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;
|
||||
|
||||
|
|
@ -31,5 +31,5 @@ public interface IDictService extends IService<Dict> {
|
|||
|
||||
IPage<Dict> list(BaseQuery<Dict> query);
|
||||
|
||||
void addDict(String type,String name);
|
||||
void addDict(String type, String name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ package com.chinaweal.youfool.devops.base.service;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
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 javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.chinaweal.youfool.devops.base.service;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
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;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.chinaweal.youfool.devops.base.entity.TaskHandle;
|
||||
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>
|
||||
|
|
|
|||
|
|
@ -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.mapper.DictMapper;
|
||||
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.transaction.annotation.Transactional;
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements ID
|
|||
lqw.eq(Dict::getType, entity.getType());
|
||||
lqw.like(StringUtils.isNotBlank(entity.getName()), Dict::getName, entity.getName());
|
||||
|
||||
if (page.getOrders().isEmpty()) {
|
||||
if (page.orders().isEmpty()) {
|
||||
page.addOrder(OrderItem.desc("update_time"));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.repair.api.RobotApi;
|
||||
import com.chinaweal.youfool.devops.util.ErrorLogUtils;
|
||||
import com.chinaweal.youfool.devops.common.utils.ErrorLogUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
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.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.sql.Connection;
|
||||
import java.sql.Driver;
|
||||
import java.sql.PreparedStatement;
|
||||
|
|
|
|||
|
|
@ -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.mapper.TaskFileMapper;
|
||||
import com.chinaweal.youfool.devops.base.service.ITaskFileService;
|
||||
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
|
||||
import com.chinaweal.youfool.framework.springboot.util.DateTimeUtils;
|
||||
import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.coobird.thumbnailator.Thumbnails;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
|
@ -20,11 +20,11 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -101,7 +101,7 @@ public class TaskFileServiceImpl extends ServiceImpl<TaskFileMapper, TaskFile> i
|
|||
|
||||
@Override
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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.service.ITaskHandleService;
|
||||
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.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.service.ITaskHandleService;
|
||||
import com.chinaweal.youfool.devops.base.service.ITaskListService;
|
||||
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
|
||||
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil;
|
||||
import com.chinaweal.youfool.devops.common.constants.CommonConstant;
|
||||
import com.chinaweal.youfool.framework.springboot.rest.query.BaseQuery;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -45,7 +45,7 @@ public class TaskListServiceImpl extends ServiceImpl<TaskListMapper, TaskList> i
|
|||
@Override
|
||||
public TaskHandle createTask(TaskList task, String result) {
|
||||
task.setStep(ITaskHandleService.STRART);
|
||||
task.setDeleted(ConstantsUtil.NOT_DELETED);
|
||||
task.setDeleted(CommonConstant.FALSE_0_STR);
|
||||
save(task);
|
||||
|
||||
//插入流程表,启动流程
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
|
|
@ -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 lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
@ -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 lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
package com.chinaweal.youfool.devops.util;
|
||||
package com.chinaweal.youfool.devops.common.utils;
|
||||
|
||||
/*对图片进行处理的类和方法*/
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
|
|
@ -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 {
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
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 org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
|
|
|
|||
|
|
@ -1,22 +1,16 @@
|
|||
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.extension.plugins.PaginationInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
|
||||
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")
|
||||
public class DevopsDataSource {
|
||||
|
||||
|
||||
@Bean(name = "devopsDS", initMethod = "init", destroyMethod = "close")
|
||||
@ConfigurationProperties(prefix = "spring.datasource.devops")
|
||||
@Primary
|
||||
public DruidDataSource dataSource() {
|
||||
return DruidDataSourceBuilder.create().build();
|
||||
}
|
||||
@Autowired
|
||||
private CommonMetaObjectHandler commonMetaObjectHandler;
|
||||
|
||||
@Bean(name = "devopsSqlSessionFactory")
|
||||
public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("devopsDS") DataSource dataSource) throws Exception {
|
||||
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
|
||||
bean.setDataSource(dataSource);
|
||||
GlobalConfig globalConfig = new GlobalConfig();
|
||||
globalConfig.setMetaObjectHandler(new CommonMetaObjectHandler());
|
||||
globalConfig.setMetaObjectHandler(commonMetaObjectHandler);
|
||||
bean.setGlobalConfig(globalConfig);
|
||||
bean.setConfigLocation(new ClassPathResource("mybatis/mybatis-config.xml"));
|
||||
bean.setPlugins(paginationInterceptor());// 分页插件
|
||||
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mybatis/mapper/**/*.xml"));
|
||||
org.springframework.core.io.Resource[] prjResources = 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;
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.chinaweal.youfool.devops.config;
|
||||
|
||||
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.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
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
|
||||
// import com.chinaweal.youfool.devops.ai.exception.*;
|
||||
// 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.ResponseBody;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -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.WebMvcConfigurer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,59 +1,59 @@
|
|||
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.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler;
|
||||
import org.apache.ibatis.session.SqlSessionFactory;
|
||||
import org.mybatis.spring.SqlSessionTemplate;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
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.Configuration;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
/**
|
||||
* youfool基础的数据源
|
||||
*
|
||||
* @author itluck
|
||||
*/
|
||||
|
||||
@Configuration
|
||||
@MapperScan(basePackages = "com.chinaweal.youfool.framework.springboot.**.mapper", sqlSessionTemplateRef = "youfoolSqlSessionTemplate")
|
||||
public class YoufoolDataSource {
|
||||
|
||||
|
||||
@Bean(name = "youfoolDS", initMethod = "init", destroyMethod = "close")
|
||||
@ConfigurationProperties(prefix = "spring.datasource.youfool")
|
||||
public DruidDataSource dataSource() {
|
||||
return DruidDataSourceBuilder.create().build();
|
||||
}
|
||||
|
||||
@Bean(name = "youfoolSqlSessionFactory")
|
||||
public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("youfoolDS") DataSource dataSource) throws Exception {
|
||||
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
|
||||
bean.setDataSource(dataSource);
|
||||
GlobalConfig globalConfig = new GlobalConfig();
|
||||
globalConfig.setMetaObjectHandler(new CommonMetaObjectHandler());
|
||||
bean.setGlobalConfig(globalConfig);
|
||||
bean.setConfigLocation(new ClassPathResource("youfool/mybatis/mybatis-config.xml"));
|
||||
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:youfool/mybatis/mapper/**/*.xml"));
|
||||
return bean;
|
||||
}
|
||||
|
||||
@Bean(name = "youfoolTransactionManager")
|
||||
public DataSourceTransactionManager transactionManager(@Qualifier("youfoolDS") DataSource dataSource) {
|
||||
return new DataSourceTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Bean(name = "youfoolSqlSessionTemplate")
|
||||
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("youfoolSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
|
||||
return new SqlSessionTemplate(sqlSessionFactory);
|
||||
}
|
||||
}
|
||||
//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.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
//import com.chinaweal.youfool.framework.springboot.mybatis.plus.CommonMetaObjectHandler;
|
||||
//import org.apache.ibatis.session.SqlSessionFactory;
|
||||
//import org.mybatis.spring.SqlSessionTemplate;
|
||||
//import org.mybatis.spring.annotation.MapperScan;
|
||||
//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.Configuration;
|
||||
//import org.springframework.core.io.ClassPathResource;
|
||||
//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
//
|
||||
//import javax.sql.DataSource;
|
||||
//
|
||||
///**
|
||||
// * youfool基础的数据源
|
||||
// *
|
||||
// * @author itluck
|
||||
// */
|
||||
//
|
||||
//@Configuration
|
||||
//@MapperScan(basePackages = "com.chinaweal.youfool.framework.springboot.**.mapper", sqlSessionTemplateRef = "youfoolSqlSessionTemplate")
|
||||
//public class YoufoolDataSource {
|
||||
//
|
||||
//
|
||||
// @Bean(name = "youfoolDS", initMethod = "init", destroyMethod = "close")
|
||||
// @ConfigurationProperties(prefix = "spring.datasource.youfool")
|
||||
// public DruidDataSource dataSource() {
|
||||
// return DruidDataSourceBuilder.create().build();
|
||||
// }
|
||||
//
|
||||
// @Bean(name = "youfoolSqlSessionFactory")
|
||||
// public MybatisSqlSessionFactoryBean sqlSessionFactory(@Qualifier("youfoolDS") DataSource dataSource) throws Exception {
|
||||
// MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
|
||||
// bean.setDataSource(dataSource);
|
||||
// GlobalConfig globalConfig = new GlobalConfig();
|
||||
// globalConfig.setMetaObjectHandler(new CommonMetaObjectHandler());
|
||||
// bean.setGlobalConfig(globalConfig);
|
||||
// bean.setConfigLocation(new ClassPathResource("youfool/mybatis/mybatis-config.xml"));
|
||||
// bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:youfool/mybatis/mapper/**/*.xml"));
|
||||
// return bean;
|
||||
// }
|
||||
//
|
||||
// @Bean(name = "youfoolTransactionManager")
|
||||
// public DataSourceTransactionManager transactionManager(@Qualifier("youfoolDS") DataSource dataSource) {
|
||||
// return new DataSourceTransactionManager(dataSource);
|
||||
// }
|
||||
//
|
||||
// @Bean(name = "youfoolSqlSessionTemplate")
|
||||
// public SqlSessionTemplate sqlSessionTemplate(@Qualifier("youfoolSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
|
||||
// return new SqlSessionTemplate(sqlSessionFactory);
|
||||
// }
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
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 static void main(String[] args) {
|
||||
CodeGenerator codeGenerator = new CodeGenerator("properties/codeCenerator");
|
||||
codeGenerator.generateCode();
|
||||
FastCodeGenerator fastCodeGenerator = new FastCodeGenerator("properties/codeGenerator");
|
||||
fastCodeGenerator.generate();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.entity.Assign;
|
||||
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.util.AssertUtils;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSort;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
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.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
|
|
@ -43,7 +43,7 @@ public class AssignController {
|
|||
@Operation(summary = "1.新增领导交办详情")
|
||||
@PostMapping("/save")
|
||||
public RestResult<Assign> saveAssign(@RequestBody @Valid Assign assign, BindingResult bindingResult) {
|
||||
AssertUtils.isBndingValidit(bindingResult);
|
||||
AssertUtils.isBindingValid(bindingResult);
|
||||
assign = iAssignService.saveAssign(assign);
|
||||
return RestResult.ok(assign);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package com.chinaweal.youfool.devops.leaderassign.controller.dto;
|
||||
|
||||
import com.chinaweal.youfool.devops.base.entity.TaskHandle;
|
||||
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
@ -34,14 +34,14 @@ public class AssignHandleQuery extends TaskHandle {
|
|||
* 计划完成时间
|
||||
*/
|
||||
@Schema(description = "计划完成时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime plannedTime;
|
||||
|
||||
/**
|
||||
* 实际完成时间
|
||||
*/
|
||||
@Schema(description = "实际完成时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime realityTime;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.chinaweal.youfool.devops.leaderassign.controller.dto;
|
||||
|
||||
import com.chinaweal.youfool.framework.springboot.json.LocalDateTimeStringSerializer;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.chinaweal.youfool.framework.springboot.common.util.DateUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
|
|
@ -127,21 +127,21 @@ public class TaskAssignVo implements Serializable {
|
|||
* 报送时间
|
||||
*/
|
||||
@Schema(description = "报送时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime launchTime;
|
||||
|
||||
/**
|
||||
* 到期时间
|
||||
*/
|
||||
@Schema(description = "到期时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime solveLimitTime;
|
||||
|
||||
/**
|
||||
* 处理更新时间
|
||||
*/
|
||||
@Schema(description = "处理更新时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime handleTime;
|
||||
|
||||
/**
|
||||
|
|
@ -160,13 +160,13 @@ public class TaskAssignVo implements Serializable {
|
|||
* 交办时间
|
||||
*/
|
||||
@Schema(description = "交办时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime assignTime;
|
||||
|
||||
/**
|
||||
* 计划完成时间
|
||||
*/
|
||||
@Schema(description = "计划完成时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime plannedTime;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.TaskHandle;
|
||||
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.util.ConstantsUtil;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -181,7 +181,7 @@ public class Assign extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "交办时间")
|
||||
@TableField("ASSIGN_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime assignTime;
|
||||
|
||||
/**
|
||||
|
|
@ -189,7 +189,7 @@ public class Assign extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "报送时间")
|
||||
@TableField("LAUNCH_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime launchTime;
|
||||
|
||||
/**
|
||||
|
|
@ -197,7 +197,7 @@ public class Assign extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "解决期限时间")
|
||||
@TableField("SOLVE_LIMIT_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime solveLimitTime;
|
||||
|
||||
/**
|
||||
|
|
@ -205,7 +205,7 @@ public class Assign extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "计划完成时间")
|
||||
@TableField("PLANNED_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime plannedTime;
|
||||
|
||||
/**
|
||||
|
|
@ -213,7 +213,7 @@ public class Assign extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "实际完成时间")
|
||||
@TableField("REALITY_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime realityTime;
|
||||
|
||||
/**
|
||||
|
|
@ -221,7 +221,7 @@ public class Assign extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "是否删除;0:有效;1:删除")
|
||||
@TableField("DELETED")
|
||||
@TableLogic(value = ConstantsUtil.NOT_DELETED, delval = ConstantsUtil.DELETED)
|
||||
@TableLogic(value = CommonConstant.FALSE_0_STR, delval = CommonConstant.TRUE_1_STR)
|
||||
private String deleted;
|
||||
|
||||
@TableField(exist = false)
|
||||
|
|
|
|||
|
|
@ -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.ITaskHandleService;
|
||||
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.TaskAssignVo;
|
||||
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.framework.springboot.exception.custom.BusinessException;
|
||||
import com.chinaweal.youfool.framework.springboot.rest.ResultCode;
|
||||
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
|
@ -91,7 +91,7 @@ public class AssignServiceImpl extends ServiceImpl<AssignMapper, Assign> impleme
|
|||
assign.setTaskId(taskId); //设置单号
|
||||
assign.setBizId(generateAssignId()); //设置单号
|
||||
assign.setLaunchTime(LocalDateTime.now());
|
||||
assign.setDeleted(ConstantsUtil.NOT_DELETED);
|
||||
assign.setDeleted(CommonConstant.FALSE_0_STR);
|
||||
save(assign);
|
||||
|
||||
//生成待办
|
||||
|
|
@ -272,7 +272,7 @@ public class AssignServiceImpl extends ServiceImpl<AssignMapper, Assign> impleme
|
|||
LambdaQueryWrapper<Assign> qw = new LambdaQueryWrapper<>();
|
||||
qw.ge(Assign::getLaunchTime, LocalDate.now().atStartOfDay())
|
||||
.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 bizId = prefix + no;
|
||||
|
|
|
|||
|
|
@ -1,19 +1,23 @@
|
|||
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.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.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.http.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -25,8 +29,6 @@ import java.util.*;
|
|||
*/
|
||||
@Service
|
||||
public class BusinessUserServiceImpl implements BusinessUserService {
|
||||
@Resource
|
||||
private JWTToken jwtToken;
|
||||
@Value("${business.fsLoginUrl}")
|
||||
private String fsLoginUrl;
|
||||
@Value("${business.sdLoginUrl}")
|
||||
|
|
@ -75,13 +77,18 @@ public class BusinessUserServiceImpl implements BusinessUserService {
|
|||
}
|
||||
}
|
||||
Map data = (Map) body.get("data");
|
||||
Map<String, Object> claims = new LinkedHashMap<>();
|
||||
claims.put("regionId", data.get("regionID"));
|
||||
claims.put("orgId", data.get("orgID"));
|
||||
claims.put("userId", data.get("primaryKey"));
|
||||
claims.put("unitId", data.get("unitID"));
|
||||
claims.put("roleType", "business");
|
||||
return jwtToken.createJWT(String.valueOf(data.get("ename")), claims);
|
||||
userId = StringUtils.trimObj(data.get("primaryKey"));
|
||||
StpUtil.login(userId);
|
||||
SaSession session = StpUtil.getSession();
|
||||
UserBaseExtend user = new UserBaseExtend();
|
||||
user.setUserId(userId);
|
||||
user.setUsername(StringUtils.trimObj(data.get("ename")));
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
package com.chinaweal.youfool.devops.org.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.chinaweal.youfool.devops.org.entity.Engineer;
|
||||
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.query.BaseQuery;
|
||||
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 io.swagger.v3.oas.annotations.Operation;
|
||||
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.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -48,7 +49,7 @@ public class EngineerController {
|
|||
@Operation(summary = "1.新增工程师")
|
||||
@PostMapping
|
||||
public RestResult<Object> saveEngineer(@RequestBody @Valid Engineer engineer, BindingResult bindingResult) {
|
||||
AssertUtils.isBndingValidit(bindingResult);
|
||||
AssertUtils.isBindingValid(bindingResult);
|
||||
|
||||
RestResult<Object> result = iEngineerService.saveEngineer(engineer);
|
||||
return result;
|
||||
|
|
@ -64,7 +65,7 @@ public class EngineerController {
|
|||
@Operation(summary = "3.修改工程师")
|
||||
@PostMapping("/update")
|
||||
public RestResult<Object> updateEngineer(@RequestBody @Valid Engineer engineer, BindingResult bindingResult) {
|
||||
AssertUtils.isBndingValidit(bindingResult);
|
||||
AssertUtils.isBindingValid(bindingResult);
|
||||
RestResult<Object> result = iEngineerService.updateEngineer(engineer);
|
||||
return result;
|
||||
}
|
||||
|
|
@ -88,7 +89,7 @@ public class EngineerController {
|
|||
public RestResult<String> updatePassword(@RequestParam String oldPassword, @RequestParam String newPassword) throws Exception {
|
||||
oldPassword = RSAUtil.decrypt(oldPassword, privateKey);
|
||||
newPassword = RSAUtil.decrypt(newPassword, privateKey);
|
||||
return iEngineerService.updatePassword(UserBase.currentUserId(), oldPassword, newPassword);
|
||||
return iEngineerService.updatePassword(StpUtil.getLoginIdAsString(), oldPassword, newPassword);
|
||||
}
|
||||
|
||||
@Operation(summary = "7.查询工程师列表")
|
||||
|
|
|
|||
|
|
@ -1,38 +1,30 @@
|
|||
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.service.BusinessUserService;
|
||||
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.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.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 io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.Jws;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.ExampleObject;
|
||||
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.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
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 org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Tag(name = "1.用户操作")
|
||||
|
|
@ -44,15 +36,13 @@ public class UserController {
|
|||
@Resource
|
||||
private IEngineerService iEngineerService;
|
||||
@Resource
|
||||
private JWTToken jwtToken;
|
||||
@Resource
|
||||
private BusinessUserService businessUserService;
|
||||
@Value("${rsa.privateKey}")
|
||||
private String privateKey;
|
||||
|
||||
@Operation(summary = "1.业务系统登录接口",
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "登录数据",
|
||||
content = @Content(examples = @ExampleObject(value = "{\"username\":\"用户名\",\"password\":\"密码\",\"vcode\":\"验证码\",\"userId\":\"用户ID(可选)\"}"))))
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "登录数据",
|
||||
content = @Content(examples = @ExampleObject(value = "{\"username\":\"用户名\",\"password\":\"密码\",\"vcode\":\"验证码\",\"userId\":\"用户ID(可选)\"}"))))
|
||||
@PostMapping("/loginBusiness")
|
||||
public RestResult<String> loginBusiness(@RequestBody Map<String, String> data, HttpServletRequest request) throws Exception {
|
||||
String username = data.get("username");
|
||||
|
|
@ -81,8 +71,8 @@ public class UserController {
|
|||
}
|
||||
|
||||
@Operation(summary = "2.工程师登录接口",
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "登录数据",
|
||||
content = @Content(examples = @ExampleObject(value = "{\"username\":\"用户名\",\"password\":\"密码\",\"vcode\":\"验证码\"}"))))
|
||||
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "登录数据",
|
||||
content = @Content(examples = @ExampleObject(value = "{\"username\":\"用户名\",\"password\":\"密码\",\"vcode\":\"验证码\"}"))))
|
||||
@PostMapping("/loginEngineer")
|
||||
public RestResult<String> loginEngineer(@RequestBody Map<String, String> data, HttpServletRequest request) throws Exception {
|
||||
String username = data.get("username");
|
||||
|
|
@ -106,7 +96,7 @@ public class UserController {
|
|||
@GetMapping("/info")
|
||||
@Operation(summary = "3.查询用户信息")
|
||||
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)) {
|
||||
return RestResult.error(ResultCode.PARAM_IS_BLANK);
|
||||
}
|
||||
|
|
@ -119,9 +109,8 @@ public class UserController {
|
|||
return RestResult.ok(businessUser);
|
||||
} else if ("outer".equals(roleType)) {
|
||||
//网办直接解析权限jwt参数
|
||||
String token = WebUtil.getToken();
|
||||
Jws<Claims> claimsJws = jwtToken.parseJWT(token);
|
||||
return RestResult.ok(claimsJws.getBody());
|
||||
SaSession session = StpUtil.getSession();
|
||||
return RestResult.ok(session.get(SaSession.USER, new UserBaseExtend()));
|
||||
} else {
|
||||
return RestResult.error(ResultCode.PARAM_TYPE_BIND_ERROR);
|
||||
}
|
||||
|
|
@ -143,7 +132,7 @@ public class UserController {
|
|||
|
||||
@Operation(summary = "6.网办外部登录接口")
|
||||
@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 name = data.get("name");
|
||||
String username = data.get("username");
|
||||
|
|
@ -154,14 +143,14 @@ public class UserController {
|
|||
return RestResult.error(ResultCode.PARAM_IS_BLANK);
|
||||
}
|
||||
//只要不为空,就默认登陆通过
|
||||
Map<String, Object> claims = new LinkedHashMap<>();
|
||||
claims.put("nickname", name);
|
||||
claims.put("phone", phone);
|
||||
claims.put("source", source);
|
||||
claims.put("roleType", "outer");
|
||||
claims.put("roles", "commonOuter");
|
||||
String token = jwtToken.createJWT(userId, username, claims);
|
||||
return RestResult.ok(token);
|
||||
StpUtil.login(userId);
|
||||
UserBaseExtend userBase = new UserBaseExtend();
|
||||
userBase.setNickname(name);
|
||||
userBase.setUsername(phone);
|
||||
userBase.setSource(source);
|
||||
userBase.setRoleType("outer");
|
||||
userBase.setRoles("commonOuter");
|
||||
return RestResult.ok();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,16 +3,15 @@ package com.chinaweal.youfool.devops.org.entity;
|
|||
import java.math.BigDecimal;
|
||||
|
||||
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.json.LocalDateTimeStringSerializer;
|
||||
import com.chinaweal.youfool.framework.springboot.util.ConstantsUtil;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -124,7 +123,7 @@ public class Engineer extends SuperEntity {
|
|||
* 是否删除 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")
|
||||
private String isDeleted;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -1,16 +1,17 @@
|
|||
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.ResultCode;
|
||||
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.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 登陆拦截
|
||||
|
|
@ -24,7 +25,7 @@ public class LoginInterceptor implements HandlerInterceptor {
|
|||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
||||
//判断token是否有效
|
||||
String userId = UserBase.currentUserId();
|
||||
String userId = StpUtil.getLoginIdAsString();
|
||||
if (StringUtils.isNotBlank((userId))) {
|
||||
return true;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package com.chinaweal.youfool.devops.org.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.chinaweal.youfool.devops.org.entity.Engineer;
|
||||
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.query.BaseQuery;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,32 +1,31 @@
|
|||
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.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.UserBaseExtend;
|
||||
import com.chinaweal.youfool.devops.org.mapper.EngineerMapper;
|
||||
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.rest.RestResult;
|
||||
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.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.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -41,8 +40,6 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
|
|||
|
||||
@Value("${sm3.secret}")
|
||||
private String sm3Secret;
|
||||
@Resource
|
||||
private JWTToken jwtToken;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
Map<String, Object> claims = new LinkedHashMap<>();
|
||||
claims.put("userId", engineer.getUserId());
|
||||
claims.put("roleType", "engineer");
|
||||
claims.put("source", engineer.getSource());
|
||||
String token = jwtToken.createJWT(username, claims);
|
||||
UserBaseExtend user = new UserBaseExtend();
|
||||
user.setUserId(engineer.getUserId());
|
||||
user.setSource(engineer.getSource());
|
||||
user.setUsername(engineer.getUsername());
|
||||
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
|
||||
|
|
@ -116,7 +116,7 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
|
|||
if (dbEngineer != null) {
|
||||
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()));
|
||||
|
||||
|
|
@ -191,14 +191,17 @@ public class EngineerServiceImpl extends ServiceImpl<EngineerMapper, Engineer> i
|
|||
}
|
||||
|
||||
@Override
|
||||
public UserBase getUserBaseByUsername(String username) {
|
||||
UserBase userBase = new UserBase();
|
||||
userBase.setUsername(username);
|
||||
return userBase;
|
||||
public RestResult<UserBase> login(String userName, String password, boolean frameworkLogin) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValidToken(String token) {
|
||||
return false;
|
||||
public UserBase getCurrentUser() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserBase> getUserInfoByLoginId(List<String> loginIdList) {
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ 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.HttpServletResponse;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ 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 jakarta.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Tag(name = "4.运维单待办")
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ 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.HttpServletResponse;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ 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 jakarta.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
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.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
@ -44,7 +44,7 @@ public class Notification extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "统计月份")
|
||||
@TableField("MONTH_DATE")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDate monthDate;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ package com.chinaweal.youfool.devops.repair.entity;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
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.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
@ -141,7 +141,7 @@ public class Repair extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "报送时间")
|
||||
@TableField("LAUNCH_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime launchTime;
|
||||
|
||||
/**
|
||||
|
|
@ -149,7 +149,7 @@ public class Repair extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "解决期限时间")
|
||||
@TableField("SOLVE_LIMIT_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime solveLimitTime;
|
||||
|
||||
/**
|
||||
|
|
@ -206,7 +206,7 @@ public class Repair extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "业务要求办理时效")
|
||||
@TableField("BUS_HANDLE_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime busHandleTime;
|
||||
|
||||
/**
|
||||
|
|
@ -214,7 +214,7 @@ public class Repair extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "计划完成时间")
|
||||
@TableField("PLANNED_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime plannedTime;
|
||||
|
||||
/**
|
||||
|
|
@ -222,7 +222,7 @@ public class Repair extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "实际完成时间")
|
||||
@TableField("REALITY_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime realityTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
package com.chinaweal.youfool.devops.repair.entity;
|
||||
|
||||
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.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
|
@ -90,7 +91,7 @@ public class RepairFile extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "上传时间")
|
||||
@TableField(value = "UPLOAD_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime uploadTime;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
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.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
|
@ -81,7 +82,7 @@ public class RepairHandle extends SuperEntity {
|
|||
*/
|
||||
@Schema(description = "生成时间")
|
||||
@TableField("HAPPEN_TIME")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime happenTime;
|
||||
|
||||
/**
|
||||
|
|
@ -139,7 +140,7 @@ public class RepairHandle extends SuperEntity {
|
|||
|
||||
@TableField(exist = false)
|
||||
@Schema(description = "计划完成时间")
|
||||
@JsonSerialize(using = LocalDateTimeStringSerializer.class)
|
||||
@JsonFormat(pattern = DateUtil.DATETIME_DEFAULT_FORMAT, timezone = "GMT+8")
|
||||
private LocalDateTime plannedTime;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
package com.chinaweal.youfool.devops.repair.entity;
|
||||
|
||||
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.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
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 lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue