Compare commits
No commits in common. "27308be39386bfb6bd09906771470f573567d609" and "eafb53c54dbc6ec95c8af4e81bb047fa3142d4a6" have entirely different histories.
27308be393
...
eafb53c54d
21
logs/ruoyi-monitor-admin.2025-05-07.log
Normal file
21
logs/ruoyi-monitor-admin.2025-05-07.log
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
2025-05-07 19:17:30 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 4248 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-07 19:17:30 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-07 19:17:31 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-05-07 19:17:31 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-07 19:17:31 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-07 19:17:31 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-07 19:17:31 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-07 19:17:31 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1442 ms
|
||||||
|
2025-05-07 19:17:32 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@1d4f5506, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@7dee835, org.springframework.security.web.context.SecurityContextPersistenceFilter@75d366c2, org.springframework.security.web.header.HeaderWriterFilter@c8f97a7, org.springframework.security.web.authentication.logout.LogoutFilter@19e21f89, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@364fd4ae, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@3fcbc766, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5232e3f1, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6c8fe7a4, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@1b57c345, org.springframework.security.web.session.SessionManagementFilter@3249e278, org.springframework.security.web.access.ExceptionTranslationFilter@62a54948, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@661d6bb6]
|
||||||
|
2025-05-07 19:17:32 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-05-07 19:17:33 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-07 19:17:33 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-07 19:17:33 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-05-07 19:17:33 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.271 seconds (JVM running for 5.676)
|
||||||
|
2025-05-07 19:17:33 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-07 19:17:33 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-07 19:17:33 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-07 19:17:33 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-05-07 19:17:34 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-05-07 19:17:34 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-05-07 19:18:44 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
24
logs/ruoyi-monitor-admin.2025-05-13.log
Normal file
24
logs/ruoyi-monitor-admin.2025-05-13.log
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
2025-05-13 11:47:34 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 10800 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-13 11:47:34 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1065 ms
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@3f9b7fe1, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2f79f192, org.springframework.security.web.context.SecurityContextPersistenceFilter@5d7911d5, org.springframework.security.web.header.HeaderWriterFilter@6c8fe7a4, org.springframework.security.web.authentication.logout.LogoutFilter@59c500f7, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@787e4357, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@6e02721d, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5a08b084, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@235c997d, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5fdfe8cf, org.springframework.security.web.session.SessionManagementFilter@2ad99cf3, org.springframework.security.web.access.ExceptionTranslationFilter@456f7d9e, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@459003a0]
|
||||||
|
2025-05-13 11:47:36 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-05-13 11:47:37 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-13 11:47:37 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-13 11:47:37 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-05-13 11:47:37 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.233 seconds (JVM running for 5.826)
|
||||||
|
2025-05-13 11:47:37 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-13 11:47:37 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-13 11:47:37 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-13 11:47:38 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-05-13 11:47:38 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-05-13 11:47:38 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-05-13 11:48:10 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[16be53c14e2b],[UP]
|
||||||
|
2025-05-13 11:48:50 [reactor-http-nio-5] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[16be53c14e2b],[DOWN]
|
||||||
|
2025-05-13 11:48:50 [reactor-http-nio-5] INFO d.c.b.a.server.services.InfoUpdater - Couldn't retrieve info for Instance(id=16be53c14e2b, version=3, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/dev-api/actuator, healthUrl=http://192.168.5.200:8033/dev-api/actuator/health, serviceUrl=http://192.168.5.200:8033/dev-api, source=http-api), registered=true, statusInfo=StatusInfo(status=DOWN, details={path=/dev-api/actuator/health, error=Not Found, status=404, timestamp=2025-05-13 11:48:49}), statusTimestamp=2025-05-13T03:48:50.216Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/dev-api/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/dev-api/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/dev-api/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/dev-api/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/dev-api/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/dev-api/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/dev-api/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/dev-api/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/dev-api/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/dev-api/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/dev-api/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/dev-api/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/dev-api/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/dev-api/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/dev-api/actuator/info)}), buildVersion=null, tags=Tags(values={})): 404 NOT_FOUND
|
||||||
|
2025-05-13 11:48:51 [reactor-http-nio-5] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
1960
logs/ruoyi-monitor-admin.2025-05-17.log
Normal file
1960
logs/ruoyi-monitor-admin.2025-05-17.log
Normal file
File diff suppressed because it is too large
Load Diff
1693
logs/ruoyi-monitor-admin.2025-05-20.log
Normal file
1693
logs/ruoyi-monitor-admin.2025-05-20.log
Normal file
File diff suppressed because it is too large
Load Diff
103
logs/ruoyi-monitor-admin.2025-05-21.log
Normal file
103
logs/ruoyi-monitor-admin.2025-05-21.log
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
2025-05-21 08:12:02 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 9752 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-21 08:12:02 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1046 ms
|
||||||
|
2025-05-21 08:12:04 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2a8b33ba, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4e8b357d, org.springframework.security.web.context.SecurityContextPersistenceFilter@235c997d, org.springframework.security.web.header.HeaderWriterFilter@6f31df32, org.springframework.security.web.authentication.logout.LogoutFilter@17d2b075, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@28cd2c2, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@5c059a68, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4a9a878, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1b3ab4f9, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2e1eb85f, org.springframework.security.web.session.SessionManagementFilter@5d7911d5, org.springframework.security.web.access.ExceptionTranslationFilter@5232e3f1, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2233cac0]
|
||||||
|
2025-05-21 08:12:04 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-05-21 08:12:05 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-21 08:12:05 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-21 08:12:05 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-05-21 08:12:05 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.058 seconds (JVM running for 3.724)
|
||||||
|
2025-05-21 08:12:05 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-21 08:12:05 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-21 08:12:05 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-21 08:12:06 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-05-21 08:12:06 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-05-21 08:12:13 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-05-21 08:12:30 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[16be53c14e2b],[UP]
|
||||||
|
2025-05-21 08:13:47 [reactor-http-nio-5] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=16be53c14e2b, version=2, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/dev-api/actuator, healthUrl=http://192.168.5.200:8033/dev-api/actuator/health, serviceUrl=http://192.168.5.200:8033/dev-api, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=856399003648, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-05-21T00:12:30.381Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/dev-api/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/dev-api/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/dev-api/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/dev-api/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/dev-api/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/dev-api/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/dev-api/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/dev-api/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/dev-api/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/dev-api/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/dev-api/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/dev-api/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/dev-api/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/dev-api/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/dev-api/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-21 08:13:47 [reactor-http-nio-5] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[16be53c14e2b],[OFFLINE]
|
||||||
|
2025-05-21 08:14:03 [reactor-http-nio-6] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-05-21 08:14:05 [reactor-http-nio-6] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[16be53c14e2b],[DOWN]
|
||||||
|
2025-05-21 08:14:05 [reactor-http-nio-6] INFO d.c.b.a.server.services.InfoUpdater - Couldn't retrieve info for Instance(id=16be53c14e2b, version=4, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/dev-api/actuator, healthUrl=http://192.168.5.200:8033/dev-api/actuator/health, serviceUrl=http://192.168.5.200:8033/dev-api, source=http-api), registered=true, statusInfo=StatusInfo(status=DOWN, details={path=/dev-api/actuator/health, error=Not Found, status=404, timestamp=2025-05-21 08:14:05}), statusTimestamp=2025-05-21T00:14:05.472Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/dev-api/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/dev-api/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/dev-api/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/dev-api/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/dev-api/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/dev-api/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/dev-api/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/dev-api/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/dev-api/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/dev-api/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/dev-api/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/dev-api/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/dev-api/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/dev-api/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/dev-api/actuator/info)}), buildVersion=null, tags=Tags(values={})): 404 NOT_FOUND
|
||||||
40
logs/ruoyi-monitor-admin.2025-05-22.log
Normal file
40
logs/ruoyi-monitor-admin.2025-05-22.log
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
2025-05-22 08:30:52 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 19428 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-22 08:30:52 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1141 ms
|
||||||
|
2025-05-22 08:30:53 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2e71240b, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@23cd5d42, org.springframework.security.web.context.SecurityContextPersistenceFilter@2dafae61, org.springframework.security.web.header.HeaderWriterFilter@6b2dd3df, org.springframework.security.web.authentication.logout.LogoutFilter@62aeddc8, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@6af5b246, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@4bf80c29, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@66e17eff, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4bb1b96b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2b44d6d0, org.springframework.security.web.session.SessionManagementFilter@73c48264, org.springframework.security.web.access.ExceptionTranslationFilter@310b2b6f, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2a8b33ba]
|
||||||
|
2025-05-22 08:30:53 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-05-22 08:30:55 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.366 seconds (JVM running for 4.707)
|
||||||
|
2025-05-22 08:30:55 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-22 08:30:55 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-22 08:30:55 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-22 08:30:55 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-05-22 08:30:55 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-05-22 08:31:03 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 30208 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-22 08:31:03 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-22 08:31:04 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-05-22 08:31:04 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-22 08:31:04 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-22 08:31:04 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-22 08:31:04 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-22 08:31:04 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1382 ms
|
||||||
|
2025-05-22 08:31:05 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@78c74647, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@39652a30, org.springframework.security.web.context.SecurityContextPersistenceFilter@5dbab232, org.springframework.security.web.header.HeaderWriterFilter@4981d95b, org.springframework.security.web.authentication.logout.LogoutFilter@71d55b7e, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@3a40bb52, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@7bd38fed, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@595f9916, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@2055833f, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5763a655, org.springframework.security.web.session.SessionManagementFilter@6b867ee7, org.springframework.security.web.access.ExceptionTranslationFilter@216c22ce, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6aae0e6f]
|
||||||
|
2025-05-22 08:31:05 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-05-22 08:31:06 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-22 08:31:06 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-05-22 08:31:06 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-05-22 08:31:06 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 4.084 seconds (JVM running for 5.925)
|
||||||
|
2025-05-22 08:31:07 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-22 08:31:07 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-22 08:31:07 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-22 08:31:07 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-05-22 08:31:08 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-05-22 08:31:08 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-05-22 08:44:42 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
42
logs/ruoyi-monitor-admin.2025-06-12.log
Normal file
42
logs/ruoyi-monitor-admin.2025-06-12.log
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
2025-06-12 09:47:32 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 40112 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-12 09:47:32 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-12 09:47:33 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-12 09:47:33 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-12 09:47:33 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-12 09:47:33 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-12 09:47:34 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-12 09:47:34 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1691 ms
|
||||||
|
2025-06-12 09:47:34 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2e71240b, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@23cd5d42, org.springframework.security.web.context.SecurityContextPersistenceFilter@2dafae61, org.springframework.security.web.header.HeaderWriterFilter@6b2dd3df, org.springframework.security.web.authentication.logout.LogoutFilter@62aeddc8, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@6af5b246, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@4bf80c29, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@66e17eff, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4bb1b96b, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2b44d6d0, org.springframework.security.web.session.SessionManagementFilter@73c48264, org.springframework.security.web.access.ExceptionTranslationFilter@310b2b6f, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2a8b33ba]
|
||||||
|
2025-06-12 09:47:34 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-12 09:47:35 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-12 09:47:35 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-12 09:47:35 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-12 09:47:35 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 4.037 seconds (JVM running for 9.68)
|
||||||
|
2025-06-12 09:47:36 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-12 09:47:36 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-12 09:47:36 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-12 09:47:36 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 84a22cdffb98
|
||||||
|
2025-06-12 09:47:36 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[84a22cdffb98],[UP]
|
||||||
|
2025-06-12 09:47:37 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[aef809a46c0e],[UP]
|
||||||
|
2025-06-12 09:48:14 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[c0314e3c969e],[UP]
|
||||||
|
2025-06-12 10:05:25 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 2116 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-12 10:05:25 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-12 10:05:26 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-12 10:05:26 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-12 10:05:26 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-12 10:05:26 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-12 10:05:27 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-12 10:05:27 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1116 ms
|
||||||
|
2025-06-12 10:05:27 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@6e02721d, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@902fdbe, org.springframework.security.web.context.SecurityContextPersistenceFilter@6c8fe7a4, org.springframework.security.web.header.HeaderWriterFilter@35adf623, org.springframework.security.web.authentication.logout.LogoutFilter@7e7743ec, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@459003a0, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@18a096b5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2ad99cf3, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6f31df32, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@796d33eb, org.springframework.security.web.session.SessionManagementFilter@75d366c2, org.springframework.security.web.access.ExceptionTranslationFilter@44286963, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@359066bc]
|
||||||
|
2025-06-12 10:05:27 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-12 10:05:28 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-12 10:05:28 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-12 10:05:28 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-12 10:05:28 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.223 seconds (JVM running for 5.475)
|
||||||
|
2025-06-12 10:05:28 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-12 10:05:28 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-12 10:05:28 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms
|
||||||
|
2025-06-12 10:05:29 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-12 10:05:29 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-12 10:05:29 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-12 10:06:00 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
21
logs/ruoyi-monitor-admin.2025-06-14.log
Normal file
21
logs/ruoyi-monitor-admin.2025-06-14.log
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
2025-06-14 10:16:22 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 3392 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-14 10:16:22 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-14 10:16:24 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-14 10:16:24 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-14 10:16:24 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-14 10:16:24 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-14 10:16:25 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-14 10:16:25 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2525 ms
|
||||||
|
2025-06-14 10:16:25 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@3e900e1a, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@196624bf, org.springframework.security.web.context.SecurityContextPersistenceFilter@4bb1b96b, org.springframework.security.web.header.HeaderWriterFilter@5ef85555, org.springframework.security.web.authentication.logout.LogoutFilter@77b3752b, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@6d6f6860, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@39b626e5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1f66d8e1, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@721d5b74, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@50085d9c, org.springframework.security.web.session.SessionManagementFilter@2dafae61, org.springframework.security.web.access.ExceptionTranslationFilter@315c081, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@ea7a4c3]
|
||||||
|
2025-06-14 10:16:26 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-14 10:16:27 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-14 10:16:27 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-14 10:16:27 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-14 10:16:27 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 5.308 seconds (JVM running for 6.88)
|
||||||
|
2025-06-14 10:16:27 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-14 10:16:27 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-14 10:16:27 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-14 10:16:28 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-14 10:16:28 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-14 10:16:28 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-14 10:16:56 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
212
logs/ruoyi-monitor-admin.2025-06-16.log
Normal file
212
logs/ruoyi-monitor-admin.2025-06-16.log
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
2025-06-16 09:25:16 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 7724 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-16 09:25:16 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-16 09:25:17 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-16 09:25:17 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-16 09:25:17 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-16 09:25:17 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-16 09:25:18 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-16 09:25:18 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1465 ms
|
||||||
|
2025-06-16 09:25:18 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2b44d6d0, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@3e900e1a, org.springframework.security.web.context.SecurityContextPersistenceFilter@66e17eff, org.springframework.security.web.header.HeaderWriterFilter@73c48264, org.springframework.security.web.authentication.logout.LogoutFilter@5707f613, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@2401856, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@515b9d4a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1bbddada, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1f66d8e1, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@196624bf, org.springframework.security.web.session.SessionManagementFilter@5bcec67e, org.springframework.security.web.access.ExceptionTranslationFilter@6b5ab2f2, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@2e1eb85f]
|
||||||
|
2025-06-16 09:25:18 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-16 09:25:19 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-16 09:25:19 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-16 09:25:19 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-16 09:25:19 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.486 seconds (JVM running for 6.664)
|
||||||
|
2025-06-16 09:25:20 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-16 09:25:20 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-16 09:25:20 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms
|
||||||
|
2025-06-16 09:25:20 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-16 09:25:20 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-16 09:25:20 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-16 09:25:48 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-16 09:43:59 [parallel-16] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=2, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=778959532032, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-16T01:25:48.272Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 10000ms in 'map' (and no fallback has been configured)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:280)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:419)
|
||||||
|
at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162)
|
||||||
|
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:271)
|
||||||
|
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:286)
|
||||||
|
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
|
||||||
|
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
|
||||||
|
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
|
||||||
|
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
|
||||||
|
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
|
||||||
|
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
|
||||||
|
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-16 09:43:59 [parallel-16] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-16 09:45:59 [reactor-http-nio-12] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-16 09:46:29 [parallel-4] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=4, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=778936766464, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-16T01:45:59.831Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 10000ms in 'map' (and no fallback has been configured)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:280)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:419)
|
||||||
|
at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162)
|
||||||
|
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:271)
|
||||||
|
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:286)
|
||||||
|
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
|
||||||
|
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
|
||||||
|
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
|
||||||
|
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
|
||||||
|
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
|
||||||
|
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
|
||||||
|
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-16 09:46:29 [parallel-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-16 09:47:29 [reactor-http-nio-15] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-16 09:57:51 [reactor-http-nio-16] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=6, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=778936745984, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-16T01:47:29.821Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-16 09:57:51 [reactor-http-nio-16] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-16 09:57:57 [reactor-http-nio-1] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-16 13:43:17 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 19256 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-16 13:43:17 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-16 13:43:18 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-16 13:43:18 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-16 13:43:18 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-16 13:43:18 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-16 13:43:19 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-16 13:43:19 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1668 ms
|
||||||
|
2025-06-16 13:43:19 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@6e02721d, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@902fdbe, org.springframework.security.web.context.SecurityContextPersistenceFilter@6c8fe7a4, org.springframework.security.web.header.HeaderWriterFilter@35adf623, org.springframework.security.web.authentication.logout.LogoutFilter@7e7743ec, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@459003a0, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@18a096b5, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2ad99cf3, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6f31df32, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@796d33eb, org.springframework.security.web.session.SessionManagementFilter@75d366c2, org.springframework.security.web.access.ExceptionTranslationFilter@44286963, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@359066bc]
|
||||||
|
2025-06-16 13:43:19 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-16 13:43:20 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-16 13:43:20 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-16 13:43:20 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-16 13:43:20 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.825 seconds (JVM running for 8.205)
|
||||||
|
2025-06-16 13:43:20 [RMI TCP Connection(2)-192.168.5.200] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-16 13:43:20 [RMI TCP Connection(2)-192.168.5.200] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-16 13:43:20 [RMI TCP Connection(2)-192.168.5.200] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms
|
||||||
|
2025-06-16 13:43:21 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-16 13:43:21 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-16 13:43:21 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-16 13:43:49 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-16 15:12:30 [parallel-10] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=2, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=778763952128, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-16T05:43:49.028Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 10000ms in 'map' (and no fallback has been configured)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:280)
|
||||||
|
at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:419)
|
||||||
|
at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162)
|
||||||
|
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:271)
|
||||||
|
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:286)
|
||||||
|
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
|
||||||
|
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
|
||||||
|
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
|
||||||
|
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
|
||||||
|
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
|
||||||
|
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
|
||||||
|
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-16 15:12:30 [parallel-10] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-16 16:05:22 [reactor-http-nio-14] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-16 17:06:06 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 20944 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-16 17:06:06 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-16 17:06:07 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-16 17:06:07 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-16 17:06:07 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-16 17:06:07 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-16 17:06:07 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-16 17:06:07 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1359 ms
|
||||||
|
2025-06-16 17:06:08 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@4b425577, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@5934153e, org.springframework.security.web.context.SecurityContextPersistenceFilter@41bfa9e9, org.springframework.security.web.header.HeaderWriterFilter@4bb1b96b, org.springframework.security.web.authentication.logout.LogoutFilter@6b321262, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@48268eec, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@3e900e1a, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7069f076, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@4a070cf0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3bb9ca38, org.springframework.security.web.session.SessionManagementFilter@1f66d8e1, org.springframework.security.web.access.ExceptionTranslationFilter@5bcec67e, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6d6f6860]
|
||||||
|
2025-06-16 17:06:08 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-16 17:06:09 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-16 17:06:09 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-16 17:06:09 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-16 17:06:09 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.835 seconds (JVM running for 6.99)
|
||||||
|
2025-06-16 17:06:09 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-16 17:06:09 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-16 17:06:09 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-16 17:06:10 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-16 17:06:10 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-16 17:06:10 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-16 17:06:46 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
61
logs/ruoyi-monitor-admin.2025-06-21.log
Normal file
61
logs/ruoyi-monitor-admin.2025-06-21.log
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
2025-06-21 09:34:20 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 43192 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 09:34:20 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1710 ms
|
||||||
|
2025-06-21 09:34:22 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@1e3f0aea, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@48268eec, org.springframework.security.web.context.SecurityContextPersistenceFilter@feb098f, org.springframework.security.web.header.HeaderWriterFilter@1b7f06c7, org.springframework.security.web.authentication.logout.LogoutFilter@7a2fce12, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@3f9b7fe1, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@2401856, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@31e739bf, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@29079032, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@69a024a0, org.springframework.security.web.session.SessionManagementFilter@729c8063, org.springframework.security.web.access.ExceptionTranslationFilter@1b3ab4f9, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@6e02721d]
|
||||||
|
2025-06-21 09:34:22 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-21 09:34:24 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-21 09:34:24 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-21 09:34:24 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 4.265 seconds (JVM running for 5.022)
|
||||||
|
2025-06-21 09:34:24 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 09:34:24 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-21 09:34:24 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-21 09:34:24 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-21 09:34:24 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-21 09:34:24 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-21 14:20:57 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 34800 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 14:20:57 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 14:20:57 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-21 14:20:57 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-21 14:20:57 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-21 14:20:57 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-21 14:20:58 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 14:20:58 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1260 ms
|
||||||
|
2025-06-21 14:20:58 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@160e99e0, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4f3e9fbb, org.springframework.security.web.context.SecurityContextPersistenceFilter@4a070cf0, org.springframework.security.web.header.HeaderWriterFilter@721d5b74, org.springframework.security.web.authentication.logout.LogoutFilter@357bc488, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@2d7637e6, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@5df7e31b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@202d9236, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1f782c05, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@365afe87, org.springframework.security.web.session.SessionManagementFilter@41bfa9e9, org.springframework.security.web.access.ExceptionTranslationFilter@66e17eff, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@8054fe2]
|
||||||
|
2025-06-21 14:20:58 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-21 14:20:59 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-21 14:20:59 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-21 14:20:59 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-21 14:20:59 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 2.828 seconds (JVM running for 6.824)
|
||||||
|
2025-06-21 14:20:59 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 14:20:59 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-21 14:20:59 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-21 14:21:00 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-21 14:21:00 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-21 14:21:06 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-21 15:04:38 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 44840 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 15:04:38 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 15:04:39 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-21 15:04:39 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-21 15:04:39 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-21 15:04:39 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-21 15:04:40 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 15:04:40 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1322 ms
|
||||||
|
2025-06-21 15:04:40 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@8054fe2, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@1e3f0aea, org.springframework.security.web.context.SecurityContextPersistenceFilter@23c767e6, org.springframework.security.web.header.HeaderWriterFilter@552cede7, org.springframework.security.web.authentication.logout.LogoutFilter@2dafae61, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@21ea996f, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@31723307, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@19e21f89, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@31e739bf, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@48268eec, org.springframework.security.web.session.SessionManagementFilter@151732fb, org.springframework.security.web.access.ExceptionTranslationFilter@4a9a878, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@1b57c345]
|
||||||
|
2025-06-21 15:04:40 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-21 15:04:41 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-21 15:04:41 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-21 15:04:41 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-21 15:04:41 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.166 seconds (JVM running for 3.957)
|
||||||
|
2025-06-21 15:04:41 [http-nio-9090-exec-2] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 15:04:41 [http-nio-9090-exec-2] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-21 15:04:41 [http-nio-9090-exec-2] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-21 15:04:41 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-21 15:04:42 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-21 15:04:44 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-21 15:04:48 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
122
logs/ruoyi-monitor-admin.2025-06-23.log
Normal file
122
logs/ruoyi-monitor-admin.2025-06-23.log
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
2025-06-23 11:36:54 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 533056 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 11:36:54 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 11:36:56 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-23 11:36:56 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-23 11:36:56 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-23 11:36:56 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-23 11:36:56 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 11:36:56 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1741 ms
|
||||||
|
2025-06-23 11:36:57 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2401856, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6d6f6860, org.springframework.security.web.context.SecurityContextPersistenceFilter@1b7f06c7, org.springframework.security.web.header.HeaderWriterFilter@4a9a878, org.springframework.security.web.authentication.logout.LogoutFilter@4db77402, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@6e02721d, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@2e1eb85f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@729c8063, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@40ed1802, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2a4f8009, org.springframework.security.web.session.SessionManagementFilter@5c6a5192, org.springframework.security.web.access.ExceptionTranslationFilter@3ba1308d, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@18a096b5]
|
||||||
|
2025-06-23 11:36:57 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-23 11:36:58 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-23 11:36:58 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-23 11:36:58 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-23 11:36:58 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 4.241 seconds (JVM running for 5.161)
|
||||||
|
2025-06-23 11:36:58 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 11:36:58 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-23 11:36:58 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-23 11:36:58 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-23 11:36:59 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-23 11:37:06 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-23 11:38:12 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-23 16:06:47 [main] INFO c.r.m.admin.MonitorAdminApplication - Starting MonitorAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 27864 (F:\evo_k3cloud\ruoyi-extend\ruoyi-monitor-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 16:06:47 [main] INFO c.r.m.admin.MonitorAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9090 (http)
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1117 ms
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@32a4ecbe, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@2e71240b, org.springframework.security.web.context.SecurityContextPersistenceFilter@5bcec67e, org.springframework.security.web.header.HeaderWriterFilter@315c081, org.springframework.security.web.authentication.logout.LogoutFilter@713a35c5, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@7d42404e, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@69a024a0, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7a2fce12, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@66e17eff, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@23cd5d42, org.springframework.security.web.session.SessionManagementFilter@4db77402, org.springframework.security.web.access.ExceptionTranslationFilter@6661d8c0, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5fdfe8cf]
|
||||||
|
2025-06-23 16:06:49 [main] WARN o.s.b.a.t.ThymeleafAutoConfiguration$DefaultTemplateResolverConfiguration - Cannot find template location: classpath:/templates/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false)
|
||||||
|
2025-06-23 16:06:50 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-23 16:06:50 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9090"]
|
||||||
|
2025-06-23 16:06:50 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9090 (http) with context path ''
|
||||||
|
2025-06-23 16:06:50 [main] INFO c.r.m.admin.MonitorAdminApplication - Started MonitorAdminApplication in 3.242 seconds (JVM running for 5.976)
|
||||||
|
2025-06-23 16:06:50 [http-nio-9090-exec-1] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:06:50 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:06:50 [http-nio-9090-exec-1] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-23 16:06:50 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as dacc90ea7863
|
||||||
|
2025-06-23 16:06:50 [reactor-http-nio-3] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-monitor-admin],[dacc90ea7863],[UP]
|
||||||
|
2025-06-23 16:06:51 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [ruoyi-xxl-job-admin],[cc38f3b5f0d4],[UP]
|
||||||
|
2025-06-23 16:08:02 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-23 16:12:22 [reactor-http-nio-5] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=2, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=773693919232, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-23T08:08:02.376Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-23 16:12:22 [reactor-http-nio-5] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-23 16:15:19 [reactor-http-nio-14] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
@ -1,4 +1,4 @@
|
|||||||
2026-02-13 09:12:26 [reactor-http-nio-10] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=2, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=702342062080, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2026-02-12T09:50:54.228Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
2025-06-25 10:36:09 [reactor-http-nio-14] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=150, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=771447140352, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-24T08:48:13.035Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
@ -76,5 +76,881 @@ Caused by: java.net.ConnectException: Connection refused: no further information
|
|||||||
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
2026-02-13 09:12:26 [reactor-http-nio-10] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
2025-06-25 10:36:09 [reactor-http-nio-14] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
2026-02-13 09:13:02 [reactor-http-nio-12] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
2025-06-25 10:36:36 [reactor-http-nio-16] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 13:37:09 [reactor-http-nio-16] WARN d.c.b.a.server.services.InfoUpdater - Couldn't retrieve info for Instance(id=08432fb0b14f, version=153, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769874894848, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T02:36:36.224Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET info [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 13:37:09 [reactor-http-nio-15] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=153, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769874894848, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T02:36:36.224Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 13:37:09 [reactor-http-nio-15] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 13:37:28 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 13:39:09 [reactor-http-nio-4] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=156, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769808678912, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T05:37:28.505Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 13:39:09 [reactor-http-nio-3] WARN d.c.b.a.server.services.InfoUpdater - Couldn't retrieve info for Instance(id=08432fb0b14f, version=156, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769808678912, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T05:37:28.505Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET info [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 13:39:09 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 13:39:28 [reactor-http-nio-7] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 13:44:59 [reactor-http-nio-8] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=159, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769808269312, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T05:39:28.313Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 13:44:59 [reactor-http-nio-8] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 13:46:15 [reactor-http-nio-12] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 14:28:49 [reactor-http-nio-16] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=162, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769808195584, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T05:46:15.261Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 14:28:49 [reactor-http-nio-16] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 14:29:20 [reactor-http-nio-2] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 14:35:29 [reactor-http-nio-4] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=165, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769806860288, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T06:29:20.917Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 14:35:29 [reactor-http-nio-4] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 14:35:44 [reactor-http-nio-5] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 14:37:59 [reactor-http-nio-6] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=168, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769806716928, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T06:35:44.484Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 14:37:59 [reactor-http-nio-6] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 14:38:22 [reactor-http-nio-8] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 15:03:19 [reactor-http-nio-10] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=171, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769806602240, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T06:38:22.616Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 15:03:19 [reactor-http-nio-10] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 15:03:35 [reactor-http-nio-11] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 15:04:49 [reactor-http-nio-12] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=174, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769806303232, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T07:03:35.765Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 15:04:49 [reactor-http-nio-12] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 15:05:07 [reactor-http-nio-13] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
2025-06-25 15:09:59 [reactor-http-nio-15] INFO d.c.b.a.s.services.StatusUpdater - Couldn't retrieve status for Instance(id=08432fb0b14f, version=177, registration=Registration(name=RuoYi-Vue-Plus, managementUrl=http://192.168.5.200:8033/actuator, healthUrl=http://192.168.5.200:8033/actuator/health, serviceUrl=http://192.168.5.200:8033/, source=http-api), registered=true, statusInfo=StatusInfo(status=UP, details={db={status=UP, details={database=MySQL, validationQuery=isValid()}}, diskSpace={status=UP, details={total=974330859520, free=769806192640, threshold=10485760, exists=true}}, ping={status=UP}, redis={status=UP, details={version=3.0.503}}}), statusTimestamp=2025-06-25T07:05:07.734Z, info=Info(values={}), endpoints=Endpoints(endpoints={caches=Endpoint(id=caches, url=http://192.168.5.200:8033/actuator/caches), loggers=Endpoint(id=loggers, url=http://192.168.5.200:8033/actuator/loggers), logfile=Endpoint(id=logfile, url=http://192.168.5.200:8033/actuator/logfile), health=Endpoint(id=health, url=http://192.168.5.200:8033/actuator/health), env=Endpoint(id=env, url=http://192.168.5.200:8033/actuator/env), heapdump=Endpoint(id=heapdump, url=http://192.168.5.200:8033/actuator/heapdump), mappings=Endpoint(id=mappings, url=http://192.168.5.200:8033/actuator/mappings), scheduledtasks=Endpoint(id=scheduledtasks, url=http://192.168.5.200:8033/actuator/scheduledtasks), startup=Endpoint(id=startup, url=http://192.168.5.200:8033/actuator/startup), configprops=Endpoint(id=configprops, url=http://192.168.5.200:8033/actuator/configprops), beans=Endpoint(id=beans, url=http://192.168.5.200:8033/actuator/beans), threaddump=Endpoint(id=threaddump, url=http://192.168.5.200:8033/actuator/threaddump), metrics=Endpoint(id=metrics, url=http://192.168.5.200:8033/actuator/metrics), conditions=Endpoint(id=conditions, url=http://192.168.5.200:8033/actuator/conditions), info=Endpoint(id=info, url=http://192.168.5.200:8033/actuator/info)}), buildVersion=null, tags=Tags(values={}))
|
||||||
|
org.springframework.web.reactive.function.client.WebClientRequestException: Connection refused: no further information: /192.168.5.200:8033; nested exception is io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
|
||||||
|
Error has been observed at the following site(s):
|
||||||
|
*__checkpoint ⇢ Request to GET health [DefaultWebClient]
|
||||||
|
Original Stack Trace:
|
||||||
|
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141)
|
||||||
|
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:55)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:222)
|
||||||
|
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93)
|
||||||
|
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:204)
|
||||||
|
at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.whenError(FluxRetryWhen.java:225)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenOtherSubscriber.onError(FluxRetryWhen.java:274)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:415)
|
||||||
|
at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251)
|
||||||
|
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.drain(EmitterProcessor.java:537)
|
||||||
|
at reactor.core.publisher.EmitterProcessor.tryEmitNext(EmitterProcessor.java:343)
|
||||||
|
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
|
||||||
|
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
|
||||||
|
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onError(FluxRetryWhen.java:190)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$ClientTransportSubscriber.onError(HttpClientConnect.java:311)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onError(DefaultPooledConnectionProvider.java:160)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475)
|
||||||
|
at reactor.netty.internal.shaded.reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:431)
|
||||||
|
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186)
|
||||||
|
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:201)
|
||||||
|
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.onError(DefaultPooledConnectionProvider.java:558)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192)
|
||||||
|
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106)
|
||||||
|
at reactor.core.publisher.Operators.error(Operators.java:198)
|
||||||
|
at reactor.core.publisher.MonoError.subscribe(MonoError.java:53)
|
||||||
|
at reactor.core.publisher.Mono.subscribe(Mono.java:4490)
|
||||||
|
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.tryFailure(TransportConnector.java:580)
|
||||||
|
at reactor.netty.transport.TransportConnector$MonoChannelPromise.setFailure(TransportConnector.java:534)
|
||||||
|
at reactor.netty.transport.TransportConnector.lambda$doConnect$7(TransportConnector.java:265)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:583)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:559)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)
|
||||||
|
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:321)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:337)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.5.200:8033
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-25 15:09:59 [reactor-http-nio-15] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[OFFLINE]
|
||||||
|
2025-06-25 15:10:05 [reactor-http-nio-16] INFO c.r.m.admin.notifier.CustomNotifier - Instance Status Change: [RuoYi-Vue-Plus],[08432fb0b14f],[UP]
|
||||||
|
|||||||
41
logs/ruoyi-xxl-job-admin.2025-05-13.log
Normal file
41
logs/ruoyi-xxl-job-admin.2025-05-13.log
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
2025-05-13 08:37:59 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-13 08:38:00 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-13 08:38:00 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-13 08:38:00 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-13 08:38:00 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-13 08:38:00 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-13 08:38:00 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-13 08:38:00 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-13 08:38:00 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-13 08:38:00 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-05-13 11:47:33 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 18496 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-13 11:47:33 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1448 ms
|
||||||
|
2025-05-13 11:47:35 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-13 11:47:35 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-13 11:47:35 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-13 11:47:35 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-13 11:47:36 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-13 11:47:36 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 2.777 seconds (JVM running for 6.398)
|
||||||
|
2025-05-13 11:47:38 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-13 11:47:40 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-13 11:52:27 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-13 11:52:28 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-13 11:52:28 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-13 11:52:28 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-13 11:52:28 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-13 11:52:28 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-13 11:52:28 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-13 11:52:28 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-13 11:52:28 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-13 11:52:28 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
64
logs/ruoyi-xxl-job-admin.2025-05-17.log
Normal file
64
logs/ruoyi-xxl-job-admin.2025-05-17.log
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
2025-05-17 09:51:25 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Read timed out; nested exception is java.net.SocketTimeoutException: Read timed out. Further attempts are logged on DEBUG level
|
||||||
|
2025-05-17 10:43:00 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-17 10:43:01 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-17 10:43:01 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-17 10:43:01 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-17 10:43:01 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-17 10:43:01 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-17 10:43:01 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-17 10:43:01 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-17 10:43:01 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-17 10:43:01 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-05-17 10:51:02 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 9792 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-17 10:51:02 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-17 10:51:03 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-17 10:51:03 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-17 10:51:03 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-17 10:51:03 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-17 10:51:03 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-17 10:51:03 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1372 ms
|
||||||
|
2025-05-17 10:51:04 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-17 10:51:04 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-17 10:51:04 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-17 10:51:04 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-17 10:51:04 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.007 seconds (JVM running for 4.68)
|
||||||
|
2025-05-17 10:51:05 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-17 10:51:09 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-17 16:03:55 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-17 16:03:56 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-17 16:03:56 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-17 16:03:56 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-17 16:03:56 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-17 16:03:56 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-17 16:03:56 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-17 16:03:56 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-17 16:03:56 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-17 16:03:56 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-05-17 16:05:35 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 18872 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-17 16:05:35 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-17 16:05:36 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-17 16:05:36 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-17 16:05:36 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-17 16:05:36 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-17 16:05:36 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-17 16:05:36 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1274 ms
|
||||||
|
2025-05-17 16:05:37 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-17 16:05:37 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-17 16:05:37 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-17 16:05:37 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-17 16:05:37 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 2.965 seconds (JVM running for 3.603)
|
||||||
|
2025-05-17 16:05:39 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
|
||||||
|
2025-05-17 16:05:42 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-17 16:05:47 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
104
logs/ruoyi-xxl-job-admin.2025-05-20.log
Normal file
104
logs/ruoyi-xxl-job-admin.2025-05-20.log
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
2025-05-20 08:44:16 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-20 08:44:17 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-20 08:44:17 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-20 08:44:17 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-20 08:44:17 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-20 08:44:17 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-20 08:44:17 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-20 08:44:17 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-20 08:44:17 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-20 08:44:17 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-05-20 08:52:11 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 29188 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-20 08:52:11 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-20 08:52:12 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-20 08:52:12 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-20 08:52:12 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-20 08:52:12 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-20 08:52:12 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-20 08:52:12 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 960 ms
|
||||||
|
2025-05-20 08:52:12 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-20 08:52:12 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-20 08:52:13 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-20 08:52:13 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-20 08:52:13 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 2.537 seconds (JVM running for 3.268)
|
||||||
|
2025-05-20 08:52:13 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-20 08:52:17 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-20 09:03:20 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-20 09:03:21 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-20 09:03:21 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-20 09:03:21 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-20 09:03:21 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-20 09:03:21 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-20 09:03:21 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-20 09:03:21 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-20 09:03:21 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-20 09:03:21 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-05-20 10:56:52 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 27040 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-20 10:56:52 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-20 10:56:53 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-20 10:56:53 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-20 10:56:53 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-20 10:56:53 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-20 10:56:53 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-20 10:56:53 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1198 ms
|
||||||
|
2025-05-20 10:56:54 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-20 10:56:54 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-20 10:56:54 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-20 10:56:54 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-20 10:56:54 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 2.874 seconds (JVM running for 3.568)
|
||||||
|
2025-05-20 10:56:56 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
|
||||||
|
2025-05-20 10:56:59 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-20 10:57:04 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-20 13:16:37 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-20 13:16:38 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-20 13:16:38 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-20 13:16:38 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-20 13:16:38 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-20 13:16:38 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-20 13:16:38 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-20 13:16:38 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-20 13:16:38 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-20 13:16:38 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-05-20 13:21:30 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 10264 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-20 13:21:30 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-20 13:21:32 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-20 13:21:32 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-20 13:21:32 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-20 13:21:32 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-20 13:21:32 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-20 13:21:32 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1785 ms
|
||||||
|
2025-05-20 13:21:33 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-20 13:21:33 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-20 13:21:33 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-20 13:21:33 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-20 13:21:33 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.964 seconds (JVM running for 4.877)
|
||||||
|
2025-05-20 13:21:34 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-20 13:21:38 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-20 14:22:50 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-20 14:22:51 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-20 14:22:51 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-20 14:22:51 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-20 14:22:51 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-20 14:22:51 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-20 14:22:51 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-20 14:22:51 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-20 14:22:51 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-20 14:22:51 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
33
logs/ruoyi-xxl-job-admin.2025-05-21.log
Normal file
33
logs/ruoyi-xxl-job-admin.2025-05-21.log
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
2025-05-21 08:12:00 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 16020 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-21 08:12:00 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-21 08:12:01 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-21 08:12:01 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-21 08:12:01 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-21 08:12:01 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-21 08:12:01 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-21 08:12:01 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1285 ms
|
||||||
|
2025-05-21 08:12:02 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-21 08:12:02 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-21 08:12:02 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-21 08:12:02 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-21 08:12:03 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-21 08:12:03 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.008 seconds (JVM running for 4.494)
|
||||||
|
2025-05-21 08:12:05 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
|
||||||
|
2025-05-21 08:12:07 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-21 08:12:07 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 15
|
||||||
|
2025-05-21 08:12:13 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-21 08:45:08 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-21 08:45:09 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-21 08:45:09 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-21 08:45:09 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-21 08:45:09 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-21 08:45:09 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-21 08:45:09 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-21 08:45:09 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-21 08:45:09 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-21 08:45:09 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
34
logs/ruoyi-xxl-job-admin.2025-05-22.log
Normal file
34
logs/ruoyi-xxl-job-admin.2025-05-22.log
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
2025-05-22 08:30:54 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 28440 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-05-22 08:30:54 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-05-22 08:30:55 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1007 ms
|
||||||
|
2025-05-22 08:30:56 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-05-22 08:30:56 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-05-22 08:30:56 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-05-22 08:30:56 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-05-22 08:30:56 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 2.476 seconds (JVM running for 3.139)
|
||||||
|
2025-05-22 08:30:57 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Software caused connection abort: recv failed; nested exception is java.net.SocketException: Software caused connection abort: recv failed. Further attempts are logged on DEBUG level
|
||||||
|
2025-05-22 08:31:01 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-05-22 08:31:01 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 15
|
||||||
|
2025-05-22 08:31:01 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 16
|
||||||
|
2025-05-22 08:31:07 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-05-22 08:58:48 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-05-22 08:58:49 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-05-22 08:58:49 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-05-22 08:58:49 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-05-22 08:58:49 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-05-22 08:58:49 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-05-22 08:58:49 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-05-22 08:58:49 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-05-22 08:58:49 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-05-22 08:58:49 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
10
logs/ruoyi-xxl-job-admin.2025-06-13.log
Normal file
10
logs/ruoyi-xxl-job-admin.2025-06-13.log
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
2025-06-13 09:42:46 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-06-13 09:42:47 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-06-13 09:42:47 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-06-13 09:42:47 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-06-13 09:42:47 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-06-13 09:42:47 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-06-13 09:42:47 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-06-13 09:42:47 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-06-13 09:42:47 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-06-13 09:42:47 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
97
logs/ruoyi-xxl-job-admin.2025-06-21.log
Normal file
97
logs/ruoyi-xxl-job-admin.2025-06-21.log
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
2025-06-21 09:34:19 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 33496 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 09:34:19 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 09:34:21 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1778 ms
|
||||||
|
2025-06-21 09:34:22 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-06-21 09:34:22 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-06-21 09:34:22 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-06-21 09:34:22 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 2 ms
|
||||||
|
2025-06-21 09:34:23 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-06-21 09:34:23 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.961 seconds (JVM running for 5.809)
|
||||||
|
2025-06-21 09:34:24 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-06-21 09:34:27 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-06-21 09:34:27 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 15
|
||||||
|
2025-06-21 09:34:27 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 16
|
||||||
|
2025-06-21 14:19:37 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-06-21 14:19:38 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-06-21 14:19:38 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-06-21 14:19:38 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-06-21 14:19:38 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-06-21 14:19:38 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-06-21 14:19:38 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-06-21 14:19:38 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-06-21 14:19:38 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-06-21 14:19:38 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-06-21 14:21:04 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 44720 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 14:21:04 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 938 ms
|
||||||
|
2025-06-21 14:21:05 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-06-21 14:21:05 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-06-21 14:21:05 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 0 ms
|
||||||
|
2025-06-21 14:21:05 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-06-21 14:21:05 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 2.242 seconds (JVM running for 3.437)
|
||||||
|
2025-06-21 14:21:06 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-06-21 14:21:10 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-06-21 14:54:48 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
|
||||||
|
2025-06-21 14:55:49 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-06-21 14:55:50 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-06-21 14:55:50 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-06-21 14:55:50 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-06-21 14:55:50 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-06-21 14:55:50 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-06-21 14:55:50 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-06-21 14:55:50 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-06-21 14:55:50 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-06-21 14:55:50 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
|
2025-06-21 15:04:36 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 38816 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 15:04:36 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 15:04:37 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-06-21 15:04:37 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-21 15:04:37 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-21 15:04:37 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-21 15:04:37 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 15:04:37 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1290 ms
|
||||||
|
2025-06-21 15:04:38 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-06-21 15:04:38 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-06-21 15:04:38 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-21 15:04:38 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-06-21 15:04:38 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.062 seconds (JVM running for 3.812)
|
||||||
|
2025-06-21 15:04:40 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
|
||||||
|
2025-06-21 15:04:43 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-06-21 15:04:48 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-06-21 17:45:01 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-06-21 17:45:02 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
|
2025-06-21 17:45:02 [SpringApplicationShutdownHook] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper stop
|
||||||
|
2025-06-21 17:45:02 [xxl-job, admin JobLogReportHelper] INFO c.x.j.a.c.thread.JobLogReportHelper - >>>>>>>>>>> xxl-job, job log report thread stop
|
||||||
|
2025-06-21 17:45:02 [xxl-job, admin JobLosedMonitorHelper] INFO c.x.j.a.c.thread.JobCompleteHelper - >>>>>>>>>>> xxl-job, JobLosedMonitorHelper stop
|
||||||
|
2025-06-21 17:45:02 [xxl-job, admin JobFailMonitorHelper] INFO c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread stop
|
||||||
|
2025-06-21 17:45:02 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO c.x.j.a.c.thread.JobRegistryHelper - >>>>>>>>>>> xxl-job, job registry monitor thread stop
|
||||||
|
2025-06-21 17:45:02 [SpringApplicationShutdownHook] INFO c.x.j.a.c.t.JobTriggerPoolHelper - >>>>>>>>> xxl-job trigger thread pool shutdown success.
|
||||||
|
2025-06-21 17:45:02 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown initiated...
|
||||||
|
2025-06-21 17:45:02 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Shutdown completed.
|
||||||
46
logs/ruoyi-xxl-job-admin.2025-06-23.log
Normal file
46
logs/ruoyi-xxl-job-admin.2025-06-23.log
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
2025-06-23 11:37:03 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 538140 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 11:37:03 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 11:37:04 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-06-23 11:37:04 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-23 11:37:04 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-23 11:37:04 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-23 11:37:05 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 11:37:05 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1149 ms
|
||||||
|
2025-06-23 11:37:05 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-06-23 11:37:05 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-06-23 11:37:05 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-06-23 11:37:05 [xxl-job, admin JobLogReportHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-06-23 11:37:06 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-23 11:37:06 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-23 11:37:06 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 11:37:06 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-23 11:37:06 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-23 11:37:06 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-06-23 11:37:06 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.034 seconds (JVM running for 3.779)
|
||||||
|
2025-06-23 11:37:06 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-06-23 11:37:10 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-06-23 11:37:10 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 15
|
||||||
|
2025-06-23 11:37:10 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 16
|
||||||
|
2025-06-23 16:06:46 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 23480 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 16:06:46 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1475 ms
|
||||||
|
2025-06-23 16:06:48 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-06-23 16:06:48 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-06-23 16:06:48 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-06-23 16:06:48 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-06-23 16:06:49 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-23 16:06:49 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-23 16:06:49 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:06:49 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:06:49 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-23 16:06:49 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-06-23 16:06:49 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.214 seconds (JVM running for 7.052)
|
||||||
|
2025-06-23 16:06:50 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-06-23 16:06:53 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
2025-06-23 17:40:47 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread stop
|
||||||
|
2025-06-23 17:40:48 [xxl-job, admin JobScheduleHelper#ringThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread stop
|
||||||
@ -1,27 +1,98 @@
|
|||||||
2026-02-12 00:29:30 [HikariCP housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariCP - Thread starvation or clock leap detected (housekeeper delta=46s179ms400µs600ns).
|
2025-06-24 08:32:24 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 26856 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
2026-02-12 02:57:51 [HikariCP housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariCP - Thread starvation or clock leap detected (housekeeper delta=45s809ms35µs400ns).
|
2025-06-24 08:32:24 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
2026-02-12 03:21:20 [HikariCP housekeeper] WARN com.zaxxer.hikari.pool.HikariPool - HikariCP - Thread starvation or clock leap detected (housekeeper delta=58s730ms424µs).
|
2025-06-24 08:32:25 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
2026-02-12 17:50:07 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 32340 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
2025-06-24 08:32:25 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
2026-02-12 17:50:07 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
2025-06-24 08:32:25 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
2026-02-12 17:50:11 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
2025-06-24 08:32:25 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
2026-02-12 17:50:11 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
2025-06-24 08:32:26 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
2026-02-12 17:50:11 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
2025-06-24 08:32:26 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1791 ms
|
||||||
2026-02-12 17:50:11 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
2025-06-24 08:32:26 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
2026-02-12 17:50:11 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
2025-06-24 08:32:26 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
2026-02-12 17:50:11 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 4328 ms
|
2025-06-24 08:32:26 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
2026-02-12 17:50:12 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
2025-06-24 08:32:26 [xxl-job, admin JobRegistryMonitorHelper-registryMonitorThread] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
2026-02-12 17:50:12 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
2025-06-24 08:32:26 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
2026-02-12 17:50:12 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
2025-06-24 08:32:26 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
2026-02-12 17:50:12 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
2025-06-24 08:32:26 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
2026-02-12 17:50:13 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
2025-06-24 08:32:26 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
2026-02-12 17:50:13 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
2025-06-24 08:32:26 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
2026-02-12 17:50:13 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
2025-06-24 08:32:26 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
2026-02-12 17:50:13 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
2025-06-24 08:32:26 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.342 seconds (JVM running for 5.631)
|
||||||
2026-02-12 17:50:13 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
2025-06-24 08:32:28 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
2026-02-12 17:50:13 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
2025-06-24 08:32:31 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
2026-02-12 17:50:13 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 7.259 seconds (JVM running for 8.794)
|
2025-06-24 08:32:31 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 15
|
||||||
2026-02-12 17:50:15 [registrationTask1] WARN d.c.b.a.c.r.ApplicationRegistrator - Failed to register application as Application(name=ruoyi-xxl-job-admin, managementUrl=http://192.168.5.200:9100/xxl-job-admin/actuator, healthUrl=http://192.168.5.200:9100/xxl-job-admin/actuator/health, serviceUrl=http://192.168.5.200:9100/xxl-job-admin) at spring-boot-admin ([http://localhost:9090/admin/instances]): I/O error on POST request for "http://localhost:9090/admin/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
|
2025-06-24 08:32:31 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 16
|
||||||
2026-02-12 17:50:17 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
2025-06-24 09:07:46 [xxl-job, admin JobFailMonitorHelper] ERROR c.x.j.a.c.t.JobFailMonitorHelper - >>>>>>>>>>> xxl-job, job fail monitor thread error:{}
|
||||||
2026-02-12 17:50:17 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 2
|
org.springframework.jdbc.BadSqlGrammarException:
|
||||||
2026-02-12 17:50:17 [xxl-job, admin JobScheduleHelper#scheduleThread] WARN c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, schedule misfire, jobId = 23
|
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.xxl_job_log' doesn't exist
|
||||||
2026-02-12 17:50:24 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
### The error may exist in file [F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes\mybatis-mapper\XxlJobLogMapper.xml]
|
||||||
|
### The error may involve defaultParameterMap
|
||||||
|
### The error occurred while setting parameters
|
||||||
|
### SQL: SELECT id FROM `xxl_job_log` WHERE !( (trigger_code in (0, 200) and handle_code = 0) OR (handle_code = 200) ) AND `alarm_status` = 0 ORDER BY id ASC LIMIT ?
|
||||||
|
### Cause: java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.xxl_job_log' doesn't exist
|
||||||
|
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.xxl_job_log' doesn't exist
|
||||||
|
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
|
||||||
|
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
|
||||||
|
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)
|
||||||
|
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
|
||||||
|
at com.sun.proxy.$Proxy78.selectList(Unknown Source)
|
||||||
|
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
|
||||||
|
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
|
||||||
|
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
|
||||||
|
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145)
|
||||||
|
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
|
||||||
|
at com.sun.proxy.$Proxy81.findFailJobLogIds(Unknown Source)
|
||||||
|
at com.xxl.job.admin.core.thread.JobFailMonitorHelper$1.run(JobFailMonitorHelper.java:43)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.xxl_job_log' doesn't exist
|
||||||
|
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
|
||||||
|
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
|
||||||
|
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
|
||||||
|
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
|
||||||
|
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
|
||||||
|
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
|
||||||
|
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
|
||||||
|
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
|
||||||
|
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
|
||||||
|
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
|
||||||
|
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
|
||||||
|
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
|
||||||
|
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89)
|
||||||
|
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
|
||||||
|
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
|
||||||
|
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
|
||||||
|
at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
|
||||||
|
... 9 common frames omitted
|
||||||
|
2025-06-24 09:07:47 [xxl-job, admin JobScheduleHelper#scheduleThread] ERROR c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>>>> xxl-job, JobScheduleHelper#scheduleThread error:{}
|
||||||
|
java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.xxl_job_lock' doesn't exist
|
||||||
|
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
|
||||||
|
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
|
||||||
|
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
|
||||||
|
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
|
||||||
|
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
|
||||||
|
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
|
||||||
|
at com.xxl.job.admin.core.thread.JobScheduleHelper$1.run(JobScheduleHelper.java:75)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-24 09:35:03 [main] INFO c.x.job.admin.XxlJobAdminApplication - Starting XxlJobAdminApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 12328 (F:\evo_k3cloud\ruoyi-extend\ruoyi-xxl-job-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-24 09:35:03 [main] INFO c.x.job.admin.XxlJobAdminApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-24 09:35:04 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 9100 (http)
|
||||||
|
2025-06-24 09:35:04 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-24 09:35:04 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||||
|
2025-06-24 09:35:04 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.74]
|
||||||
|
2025-06-24 09:35:05 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-24 09:35:05 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 1445 ms
|
||||||
|
2025-06-24 09:35:05 [main] INFO c.x.j.a.c.scheduler.XxlJobScheduler - >>>>>>>>> init xxl-job admin success.
|
||||||
|
2025-06-24 09:35:05 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
|
||||||
|
2025-06-24 09:35:05 [main] INFO o.s.b.a.w.s.WelcomePageHandlerMapping - Adding welcome page template: index
|
||||||
|
2025-06-24 09:35:05 [xxl-job, admin JobFailMonitorHelper] INFO com.zaxxer.hikari.HikariDataSource - HikariCP - Start completed.
|
||||||
|
2025-06-24 09:35:06 [main] INFO o.s.b.a.e.web.EndpointLinksResolver - Exposing 14 endpoint(s) beneath base path '/actuator'
|
||||||
|
2025-06-24 09:35:06 [main] INFO o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-9100"]
|
||||||
|
2025-06-24 09:35:06 [main] INFO o.a.c.c.C.[.[.[/xxl-job-admin] - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-24 09:35:06 [main] INFO o.s.web.servlet.DispatcherServlet - Initializing Servlet 'dispatcherServlet'
|
||||||
|
2025-06-24 09:35:06 [main] INFO o.s.web.servlet.DispatcherServlet - Completed initialization in 1 ms
|
||||||
|
2025-06-24 09:35:06 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 9100 (http) with context path '/xxl-job-admin'
|
||||||
|
2025-06-24 09:35:06 [main] INFO c.x.job.admin.XxlJobAdminApplication - Started XxlJobAdminApplication in 3.102 seconds (JVM running for 6.315)
|
||||||
|
2025-06-24 09:35:07 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as cc38f3b5f0d4
|
||||||
|
2025-06-24 09:35:10 [xxl-job, admin JobScheduleHelper#scheduleThread] INFO c.x.j.a.c.thread.JobScheduleHelper - >>>>>>>>> init xxl-job admin scheduler success.
|
||||||
|
|||||||
32782
logs/sys-console.2025-06-24.log
Normal file
32782
logs/sys-console.2025-06-24.log
Normal file
File diff suppressed because it is too large
Load Diff
4072
logs/sys-console.log
4072
logs/sys-console.log
File diff suppressed because one or more lines are too long
104
logs/sys-error.2025-05-07.log
Normal file
104
logs/sys-error.2025-05-07.log
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
2025-05-07 19:17:55 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-07 19:18:00 [main] ERROR o.s.boot.SpringApplication - Application run failed
|
||||||
|
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cacheController' defined in file [F:\evo_k3cloud\ruoyi-admin\target\classes\com\ruoyi\web\controller\monitor\CacheController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
|
||||||
|
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
|
||||||
|
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
|
||||||
|
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:920)
|
||||||
|
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
|
||||||
|
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
|
||||||
|
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)
|
||||||
|
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
|
||||||
|
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
|
||||||
|
at com.ruoyi.RuoYiApplication.main(RuoYiApplication.java:28)
|
||||||
|
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redissonConnectionFactory' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Unsatisfied dependency expressed through method 'redissonConnectionFactory' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:541)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
|
||||||
|
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
|
||||||
|
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
|
||||||
|
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
|
||||||
|
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
|
||||||
|
... 17 common frames omitted
|
||||||
|
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisson' defined in class path resource [org/redisson/spring/starter/RedissonAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
|
||||||
|
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
|
||||||
|
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
|
||||||
|
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
|
||||||
|
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
|
||||||
|
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
|
||||||
|
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
|
||||||
|
... 31 common frames omitted
|
||||||
|
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
|
||||||
|
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
|
||||||
|
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
|
||||||
|
... 45 common frames omitted
|
||||||
|
Caused by: org.redisson.client.RedisConnectionException: Unable to connect to Redis server: localhost/127.0.0.1:6379
|
||||||
|
at org.redisson.connection.pool.ConnectionPool.lambda$createConnection$0(ConnectionPool.java:154)
|
||||||
|
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
|
||||||
|
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
|
||||||
|
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
|
||||||
|
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990)
|
||||||
|
at org.redisson.connection.pool.ConnectionPool.promiseFailure(ConnectionPool.java:318)
|
||||||
|
at org.redisson.connection.pool.ConnectionPool.lambda$createConnection$6(ConnectionPool.java:277)
|
||||||
|
at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:774)
|
||||||
|
at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:750)
|
||||||
|
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
|
||||||
|
at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1990)
|
||||||
|
at org.redisson.client.RedisClient$1$2.run(RedisClient.java:257)
|
||||||
|
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
|
||||||
|
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)
|
||||||
|
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: java.util.concurrent.CompletionException: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: localhost/127.0.0.1:6379
|
||||||
|
at java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:326)
|
||||||
|
at java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:338)
|
||||||
|
at java.util.concurrent.CompletableFuture.uniRelay(CompletableFuture.java:925)
|
||||||
|
at java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:913)
|
||||||
|
... 12 common frames omitted
|
||||||
|
Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: localhost/127.0.0.1:6379
|
||||||
|
Caused by: java.net.ConnectException: Connection refused: no further information
|
||||||
|
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
|
||||||
|
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:715)
|
||||||
|
at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:337)
|
||||||
|
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
|
||||||
|
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
|
||||||
|
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
|
||||||
|
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
||||||
|
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-07 19:18:33 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-07 19:20:42 [Thread-61] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-07 19:21:55 [xxl-job, JobThread-16-1746616908132] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
196
logs/sys-error.2025-05-13.log
Normal file
196
logs/sys-error.2025-05-13.log
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
2025-05-13 07:15:55 [Thread-82] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-13 08:15:08 [xxl-job, JobThread-16-1747095300030] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-13 11:47:57 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-13 11:48:40 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-13 11:49:05 [XNIO-1 task-8] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.UserException: 密码输入错误1次
|
||||||
|
at com.ruoyi.system.service.SysLoginService.checkLogin(SysLoginService.java:326)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:77)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$c4dd4323.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-13 11:49:10 [XNIO-1 task-8] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.UserException: 密码输入错误2次
|
||||||
|
at com.ruoyi.system.service.SysLoginService.checkLogin(SysLoginService.java:326)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:77)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$c4dd4323.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
1872
logs/sys-error.2025-05-14.log
Normal file
1872
logs/sys-error.2025-05-14.log
Normal file
File diff suppressed because it is too large
Load Diff
9079
logs/sys-error.2025-05-17.log
Normal file
9079
logs/sys-error.2025-05-17.log
Normal file
File diff suppressed because it is too large
Load Diff
2
logs/sys-error.2025-05-18.log
Normal file
2
logs/sys-error.2025-05-18.log
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
2025-05-18 07:16:20 [Thread-50] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-18 08:15:03 [xxl-job, JobThread-16-1747527300023] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
1347
logs/sys-error.2025-05-19.log
Normal file
1347
logs/sys-error.2025-05-19.log
Normal file
File diff suppressed because it is too large
Load Diff
361
logs/sys-error.2025-05-20.log
Normal file
361
logs/sys-error.2025-05-20.log
Normal file
@ -0,0 +1,361 @@
|
|||||||
|
2025-05-20 07:16:16 [Thread-61] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-20 08:15:05 [xxl-job, JobThread-16-1747700100011] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-20 08:39:50 [xxl-job, JobThread-17-1747701588460] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-20 08:42:31 [xxl-job, JobThread-17-1747701734397] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-20 08:43:31 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 08:43:59 [xxl-job, JobThread-17-1747701830842] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-20 08:53:18 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 08:53:42 [XNIO-1 task-1] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.CaptchaException: 验证码错误
|
||||||
|
at com.ruoyi.system.service.SysLoginService.validateCaptcha(SysLoginService.java:208)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:74)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$7c699f05.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-20 10:57:06 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 10:58:55 [XNIO-1 task-2] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/getInfo',认证失败'token 无效:eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjYyMWJlMWU4LTg5YzItNGVkMS1hMTM0LTJiY2JjNDA2Yzc3NCJ9.mmMtJrl3lQHVP66oEiS-t95p2Ug99QKfIpQc-aSgfy8ldsDJEo0oPoPENwkaBSjCFzAze3nDm3k6EEQZBJ-PVA',无法访问系统资源
|
||||||
|
2025-05-20 11:00:07 [XNIO-1 task-2] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.UserException: 密码输入错误1次
|
||||||
|
at com.ruoyi.system.service.SysLoginService.checkLogin(SysLoginService.java:326)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:77)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$3b818036.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-20 11:06:16 [XNIO-1 task-3] ERROR com.ruoyi.system.runner.JdUtil - 接口返回结果: {"ErrorCode":"500","IsSuccess":false,"Errors":[{"FieldName":"FNumber,FUseOrgId","Message":"编码为“40SX.11.3(0019-25)”的物料,组织内编码唯一","DIndex":0},{"FieldName":"FNumber","Message":"系统中已存在相同编码40SX.11.3(0019-25)的物料,保存失败,请修改。","DIndex":0}],"SuccessEntitys":[]}
|
||||||
|
2025-05-20 11:06:16 [XNIO-1 task-3] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 11:06:16 [XNIO-1 task-3] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 11:11:48 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 11:17:51 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 11:24:07 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 11:28:25 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 11:33:15 [XNIO-1 task-3] ERROR com.ruoyi.system.runner.JdUtil - 接口返回结果: {"ErrorCode":"500","IsSuccess":false,"Errors":[{"FieldName":"FNumber,FUseOrgId","Message":"编码为“40SX.11.3(0019-25)”的物料,组织内编码唯一","DIndex":0},{"FieldName":"FNumber","Message":"系统中已存在相同编码40SX.11.3(0019-25)的物料,保存失败,请修改。","DIndex":0}],"SuccessEntitys":[]}
|
||||||
|
2025-05-20 11:33:15 [XNIO-1 task-3] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 11:38:03 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 11:43:03 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 13:04:08 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 13:21:47 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 13:24:38 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 13:29:48 [XNIO-1 task-19] ERROR c.r.c.excel.DefaultExcelListener - 第10行-第5列-表头物料编码: 解析异常<br/>
|
||||||
|
2025-05-20 13:29:48 [XNIO-1 task-19] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/system/route/export',发生未知异常.
|
||||||
|
java.lang.RuntimeException: com.alibaba.excel.exception.ExcelAnalysisException: 第10行-第5列-表头物料编码: 解析异常<br/>
|
||||||
|
at com.ruoyi.system.controller.ProcessRouteController.export(ProcessRouteController.java:306)
|
||||||
|
at com.ruoyi.system.controller.ProcessRouteController$$FastClassBySpringCGLIB$$9986b228.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:64)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:57)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.system.controller.ProcessRouteController$$EnhancerBySpringCGLIB$$fd1b9ce.export(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:30)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.XssFilter.doFilter(XssFilter.java:45)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: com.alibaba.excel.exception.ExcelAnalysisException: 第10行-第5列-表头物料编码: 解析异常<br/>
|
||||||
|
at com.ruoyi.common.excel.DefaultExcelListener.onException(DefaultExcelListener.java:79)
|
||||||
|
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.onException(DefaultAnalysisEventProcessor.java:83)
|
||||||
|
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.dealData(DefaultAnalysisEventProcessor.java:114)
|
||||||
|
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.endRow(DefaultAnalysisEventProcessor.java:50)
|
||||||
|
at com.alibaba.excel.analysis.v07.handlers.RowTagHandler.endElement(RowTagHandler.java:66)
|
||||||
|
at com.alibaba.excel.analysis.v07.handlers.sax.XlsxRowHandler.endElement(XlsxRowHandler.java:99)
|
||||||
|
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
|
||||||
|
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
|
||||||
|
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
|
||||||
|
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
|
||||||
|
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
|
||||||
|
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
|
||||||
|
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
|
||||||
|
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
|
||||||
|
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
|
||||||
|
at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.parseXmlSource(XlsxSaxAnalyser.java:239)
|
||||||
|
at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:261)
|
||||||
|
at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:124)
|
||||||
|
at com.alibaba.excel.ExcelReader.read(ExcelReader.java:66)
|
||||||
|
at com.alibaba.excel.ExcelReader.read(ExcelReader.java:56)
|
||||||
|
at com.alibaba.excel.read.builder.ExcelReaderSheetBuilder.doRead(ExcelReaderSheetBuilder.java:65)
|
||||||
|
at com.ruoyi.system.controller.ProcessRouteController.export(ProcessRouteController.java:303)
|
||||||
|
... 103 common frames omitted
|
||||||
|
2025-05-20 13:46:04 [XNIO-1 task-83] ERROR com.ruoyi.system.runner.JdUtil - 接口返回结果: {"ErrorCode":"500","IsSuccess":false,"Errors":[{"FieldName":"FNumber,FUseOrgId","Message":"编码为“FS25020.02.01.2”的物料,组织内编码唯一","DIndex":0},{"FieldName":"FNumber","Message":"系统中已存在相同编码FS25020.02.01.2的物料,保存失败,请修改。","DIndex":0}],"SuccessEntitys":[]}
|
||||||
|
2025-05-20 13:46:04 [XNIO-1 task-18] ERROR com.ruoyi.system.runner.JdUtil - 接口返回结果: {"ErrorCode":"500","IsSuccess":false,"Errors":[{"FieldName":"FNumber,FUseOrgId","Message":"编码为“FS25020.02.01.2”的物料,组织内编码唯一","DIndex":0},{"FieldName":"FNumber","Message":"系统中已存在相同编码FS25020.02.01.2的物料,保存失败,请修改。","DIndex":0}],"SuccessEntitys":[]}
|
||||||
|
2025-05-20 13:46:04 [XNIO-1 task-83] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 13:46:04 [XNIO-1 task-18] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 13:48:46 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 13:53:44 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 13:54:51 [XNIO-1 task-17] ERROR com.ruoyi.system.runner.JdUtil - 接口返回结果: {"ErrorCode":"500","IsSuccess":false,"Errors":[{"FieldName":"FNumber,FUseOrgId","Message":"编码为“FS25020.02.01.2”的物料,组织内编码唯一","DIndex":0},{"FieldName":"FNumber","Message":"系统中已存在相同编码FS25020.02.01.2的物料,保存失败,请修改。","DIndex":0}],"SuccessEntitys":[]}
|
||||||
|
2025-05-20 13:54:51 [XNIO-1 task-17] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 13:55:40 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 14:05:12 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 14:06:41 [XNIO-1 task-17] ERROR com.ruoyi.system.runner.JdUtil - 接口返回结果: {"ErrorCode":"500","IsSuccess":false,"Errors":[{"FieldName":"FNumber,FUseOrgId","Message":"编码为“FS25020.02.01.2”的物料,组织内编码唯一","DIndex":0},{"FieldName":"FNumber","Message":"系统中已存在相同编码FS25020.02.01.2的物料,保存失败,请修改。","DIndex":0}],"SuccessEntitys":[]}
|
||||||
|
2025-05-20 14:06:41 [XNIO-1 task-17] ERROR c.r.s.c.BomDetailsController - 物料信息不完整,无法新增物料
|
||||||
|
2025-05-20 14:06:41 [XNIO-1 task-17] ERROR c.r.s.c.BomDetailsController - BOM校验失败,物料编码: FS25020.02.01.2
|
||||||
|
2025-05-20 14:07:36 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-20 14:07:56 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
198
logs/sys-error.2025-05-21.log
Normal file
198
logs/sys-error.2025-05-21.log
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
2025-05-21 08:12:17 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-21 08:13:52 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-21 08:14:52 [XNIO-1 task-1] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.UserException: 密码输入错误1次
|
||||||
|
at com.ruoyi.system.service.SysLoginService.checkLogin(SysLoginService.java:326)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:77)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$7269266b.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-21 08:14:56 [XNIO-1 task-1] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.CaptchaException: 验证码错误
|
||||||
|
at com.ruoyi.system.service.SysLoginService.validateCaptcha(SysLoginService.java:208)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:74)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$7269266b.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-05-21 08:15:07 [xxl-job, JobThread-16-1747786500657] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-21 08:15:19 [xxl-job, JobThread-17-1747786517050] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-21 08:17:37 [Thread-63] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-21 08:18:05 [xxl-job, JobThread-16-1747786683930] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
4
logs/sys-error.2025-05-22.log
Normal file
4
logs/sys-error.2025-05-22.log
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
2025-05-22 08:44:30 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-05-22 08:46:52 [Thread-62] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-22 08:47:30 [xxl-job, JobThread-16-1747874844528] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-05-22 08:47:39 [xxl-job, JobThread-17-1747874858170] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
2
logs/sys-error.2025-06-13.log
Normal file
2
logs/sys-error.2025-06-13.log
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
2025-06-13 07:16:26 [Thread-65] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-06-13 08:15:05 [xxl-job, JobThread-16-1749773700006] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
509
logs/sys-error.2025-06-14.log
Normal file
509
logs/sys-error.2025-06-14.log
Normal file
@ -0,0 +1,509 @@
|
|||||||
|
2025-06-14 10:16:43 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-06-14 16:00:01 [XNIO-1 task-1] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/system/save/list',发生未知异常.
|
||||||
|
org.springframework.jdbc.BadSqlGrammarException:
|
||||||
|
### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.figure_save' doesn't exist
|
||||||
|
### The error may exist in com/ruoyi/system/mapper/FigureSaveMapper.java (best guess)
|
||||||
|
### The error may involve defaultParameterMap
|
||||||
|
### The error occurred while setting parameters
|
||||||
|
### SQL: SELECT COUNT(*) AS total FROM figure_save WHERE (production_code = ?)
|
||||||
|
### Cause: java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.figure_save' doesn't exist
|
||||||
|
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.figure_save' doesn't exist
|
||||||
|
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
|
||||||
|
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
|
||||||
|
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)
|
||||||
|
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
|
||||||
|
at com.sun.proxy.$Proxy183.selectList(Unknown Source)
|
||||||
|
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:121)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:85)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
|
||||||
|
at com.sun.proxy.$Proxy245.selectPage(Unknown Source)
|
||||||
|
at com.ruoyi.common.core.mapper.BaseMapperPlus.selectVoPage(BaseMapperPlus.java:183)
|
||||||
|
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
|
||||||
|
at com.sun.proxy.$Proxy245.selectVoPage(Unknown Source)
|
||||||
|
at com.ruoyi.common.core.mapper.BaseMapperPlus.selectVoPage(BaseMapperPlus.java:176)
|
||||||
|
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:162)
|
||||||
|
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
|
||||||
|
at com.sun.proxy.$Proxy245.selectVoPage(Unknown Source)
|
||||||
|
at com.ruoyi.system.service.impl.FigureSaveServiceImpl.queryPageList(FigureSaveServiceImpl.java:48)
|
||||||
|
at com.ruoyi.system.controller.FigureSaveController.list(FigureSaveController.java:47)
|
||||||
|
at com.ruoyi.system.controller.FigureSaveController$$FastClassBySpringCGLIB$$4ad1074f.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.system.controller.FigureSaveController$$EnhancerBySpringCGLIB$$fef534cd.list(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:497)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:30)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.XssFilter.doFilter(XssFilter.java:41)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: java.sql.SQLSyntaxErrorException: Table 'item_retrieval-evo.figure_save' doesn't exist
|
||||||
|
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
|
||||||
|
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
|
||||||
|
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
|
||||||
|
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
|
||||||
|
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
|
||||||
|
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
|
||||||
|
at com.p6spy.engine.wrapper.PreparedStatementWrapper.execute(PreparedStatementWrapper.java:362)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
|
||||||
|
at com.sun.proxy.$Proxy299.execute(Unknown Source)
|
||||||
|
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
|
||||||
|
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64)
|
||||||
|
at com.sun.proxy.$Proxy297.query(Unknown Source)
|
||||||
|
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
|
||||||
|
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
|
||||||
|
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
|
||||||
|
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
|
||||||
|
at com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor.willDoQuery(PaginationInnerInterceptor.java:135)
|
||||||
|
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:75)
|
||||||
|
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
|
||||||
|
at com.sun.proxy.$Proxy296.query(Unknown Source)
|
||||||
|
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
|
||||||
|
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145)
|
||||||
|
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
|
||||||
|
... 116 common frames omitted
|
||||||
|
2025-06-14 16:11:38 [XNIO-1 task-3] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/system/plan/importTemplate',不支持'POST'请求
|
||||||
|
2025-06-14 16:12:44 [XNIO-1 task-3] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/system/plan',发生未知异常.
|
||||||
|
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z"); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z")
|
||||||
|
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 91] (through reference chain: com.ruoyi.system.domain.bo.ProductionPlanBo["subItems"]->java.util.ArrayList[0]->com.ruoyi.system.domain.bo.WorkProcedureBo["startDate"])
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:391)
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:343)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:185)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:160)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:133)
|
||||||
|
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.XssFilter.doFilter(XssFilter.java:45)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z")
|
||||||
|
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 91] (through reference chain: com.ruoyi.system.domain.bo.ProductionPlanBo["subItems"]->java.util.ArrayList[0]->com.ruoyi.system.domain.bo.WorkProcedureBo["startDate"])
|
||||||
|
at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
|
||||||
|
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1991)
|
||||||
|
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1219)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:1308)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:1250)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateBasedDeserializer._parseDate(DateDeserializers.java:201)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:303)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:281)
|
||||||
|
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
|
||||||
|
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
|
||||||
|
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
|
||||||
|
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
|
||||||
|
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3682)
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:380)
|
||||||
|
... 85 common frames omitted
|
||||||
|
2025-06-14 16:13:23 [XNIO-1 task-3] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/system/plan',发生未知异常.
|
||||||
|
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z"); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z")
|
||||||
|
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 91] (through reference chain: com.ruoyi.system.domain.bo.ProductionPlanBo["subItems"]->java.util.ArrayList[0]->com.ruoyi.system.domain.bo.WorkProcedureBo["startDate"])
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:391)
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:343)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:185)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:160)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:133)
|
||||||
|
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.XssFilter.doFilter(XssFilter.java:45)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z")
|
||||||
|
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 91] (through reference chain: com.ruoyi.system.domain.bo.ProductionPlanBo["subItems"]->java.util.ArrayList[0]->com.ruoyi.system.domain.bo.WorkProcedureBo["startDate"])
|
||||||
|
at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
|
||||||
|
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1991)
|
||||||
|
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1219)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:1308)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:1250)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateBasedDeserializer._parseDate(DateDeserializers.java:201)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:303)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:281)
|
||||||
|
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
|
||||||
|
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
|
||||||
|
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
|
||||||
|
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
|
||||||
|
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3682)
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:380)
|
||||||
|
... 85 common frames omitted
|
||||||
|
2025-06-14 16:22:52 [XNIO-1 task-3] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/system/plan',发生未知异常.
|
||||||
|
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z"); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z")
|
||||||
|
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 91] (through reference chain: com.ruoyi.system.domain.bo.ProductionPlanBo["subItems"]->java.util.ArrayList[0]->com.ruoyi.system.domain.bo.WorkProcedureBo["startDate"])
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:391)
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:343)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:185)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:160)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:133)
|
||||||
|
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.XssFilter.doFilter(XssFilter.java:45)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.util.Date` from String "2025-06-01T16:00:00.000Z": not a valid representation (error: Failed to parse Date value '2025-06-01T16:00:00.000Z': Unparseable date: "2025-06-01T16:00:00.000Z")
|
||||||
|
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 91] (through reference chain: com.ruoyi.system.domain.bo.ProductionPlanBo["subItems"]->java.util.ArrayList[0]->com.ruoyi.system.domain.bo.WorkProcedureBo["startDate"])
|
||||||
|
at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
|
||||||
|
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1991)
|
||||||
|
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1219)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:1308)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseDate(StdDeserializer.java:1250)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateBasedDeserializer._parseDate(DateDeserializers.java:201)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:303)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.DateDeserializers$DateDeserializer.deserialize(DateDeserializers.java:281)
|
||||||
|
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244)
|
||||||
|
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28)
|
||||||
|
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
|
||||||
|
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185)
|
||||||
|
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
|
||||||
|
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
|
||||||
|
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3682)
|
||||||
|
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:380)
|
||||||
|
... 85 common frames omitted
|
||||||
2
logs/sys-error.2025-06-15.log
Normal file
2
logs/sys-error.2025-06-15.log
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
2025-06-15 07:16:24 [Thread-70] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
|
2025-06-15 08:15:01 [xxl-job, JobThread-16-1749946500006] ERROR c.ruoyi.framework.aspectj.LogAspect - 异常信息:null
|
||||||
1
logs/sys-error.2025-06-21.log
Normal file
1
logs/sys-error.2025-06-21.log
Normal file
@ -0,0 +1 @@
|
|||||||
|
2025-06-21 15:04:36 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
149
logs/sys-error.2025-06-23.log
Normal file
149
logs/sys-error.2025-06-23.log
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
2025-06-23 11:38:06 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-06-23 16:07:56 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-06-23 16:15:08 [main] ERROR c.b.m.core.MybatisConfiguration - mapper[com.ruoyi.system.mapper.ProcessRouteMapper.existsByProcessNoAndMaterialCode] is ignored, because it exists, maybe from xml file
|
||||||
|
2025-06-23 16:15:54 [XNIO-1 task-2] ERROR c.r.f.w.e.GlobalExceptionHandler - 请求地址'/login',发生未知异常.
|
||||||
|
com.ruoyi.common.exception.user.CaptchaException: 验证码错误
|
||||||
|
at com.ruoyi.system.service.SysLoginService.validateCaptcha(SysLoginService.java:208)
|
||||||
|
at com.ruoyi.system.service.SysLoginService.login(SysLoginService.java:74)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController.login(SysLoginController.java:54)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$FastClassBySpringCGLIB$$f5b1313e.invoke(<generated>)
|
||||||
|
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
|
||||||
|
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
|
||||||
|
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
|
||||||
|
at com.ruoyi.web.controller.system.SysLoginController$$EnhancerBySpringCGLIB$$28bd8643.login(<generated>)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||||
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
||||||
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||||
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
|
||||||
|
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
|
||||||
|
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
|
||||||
|
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072)
|
||||||
|
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
|
||||||
|
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
|
||||||
|
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584)
|
||||||
|
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
|
||||||
|
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at com.ruoyi.common.filter.RepeatableFilter.doFilter(RepeatableFilter.java:32)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at cn.dev33.satoken.filter.SaPathCheckFilterForServlet.doFilter(SaPathCheckFilterForServlet.java:55)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
|
||||||
|
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
|
||||||
|
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
|
||||||
|
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
|
||||||
|
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
|
||||||
|
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
|
||||||
|
at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
|
||||||
|
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
|
||||||
|
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
|
||||||
|
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
|
||||||
|
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
|
||||||
|
at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
|
||||||
|
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131)
|
||||||
|
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
|
||||||
|
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79)
|
||||||
|
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100)
|
||||||
|
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393)
|
||||||
|
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852)
|
||||||
|
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
|
||||||
|
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
|
||||||
|
at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-23 17:40:50 [xxl-job, executor ExecutorRegistryThread] ERROR c.x.job.core.util.XxlJobRemotingUtil - Connection refused: connect
|
||||||
|
java.net.ConnectException: Connection refused: connect
|
||||||
|
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
|
||||||
|
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
|
||||||
|
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
|
||||||
|
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
|
||||||
|
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
|
||||||
|
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
|
||||||
|
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
|
||||||
|
at java.net.Socket.connect(Socket.java:606)
|
||||||
|
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
|
||||||
|
at sun.net.www.http.HttpClient.openServer(HttpClient.java:499)
|
||||||
|
at sun.net.www.http.HttpClient.openServer(HttpClient.java:594)
|
||||||
|
at sun.net.www.http.HttpClient.<init>(HttpClient.java:278)
|
||||||
|
at sun.net.www.http.HttpClient.New(HttpClient.java:375)
|
||||||
|
at sun.net.www.http.HttpClient.New(HttpClient.java:407)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.setNewClient(HttpURLConnection.java:781)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.setNewClient(HttpURLConnection.java:769)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:711)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1627)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1534)
|
||||||
|
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
|
||||||
|
at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:119)
|
||||||
|
at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:42)
|
||||||
|
at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
|
2025-06-23 17:40:56 [xxl-job, executor ExecutorRegistryThread] ERROR c.x.job.core.util.XxlJobRemotingUtil - Connection refused: connect
|
||||||
|
java.net.ConnectException: Connection refused: connect
|
||||||
|
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
|
||||||
|
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81)
|
||||||
|
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
|
||||||
|
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
|
||||||
|
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
|
||||||
|
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162)
|
||||||
|
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
|
||||||
|
at java.net.Socket.connect(Socket.java:606)
|
||||||
|
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
|
||||||
|
at sun.net.www.http.HttpClient.openServer(HttpClient.java:499)
|
||||||
|
at sun.net.www.http.HttpClient.openServer(HttpClient.java:594)
|
||||||
|
at sun.net.www.http.HttpClient.<init>(HttpClient.java:278)
|
||||||
|
at sun.net.www.http.HttpClient.New(HttpClient.java:375)
|
||||||
|
at sun.net.www.http.HttpClient.New(HttpClient.java:393)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1240)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1167)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1061)
|
||||||
|
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:995)
|
||||||
|
at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:99)
|
||||||
|
at com.xxl.job.core.biz.client.AdminBizClient.registryRemove(AdminBizClient.java:47)
|
||||||
|
at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:84)
|
||||||
|
at java.lang.Thread.run(Thread.java:750)
|
||||||
22125
logs/sys-error.2025-06-24.log
Normal file
22125
logs/sys-error.2025-06-24.log
Normal file
File diff suppressed because it is too large
Load Diff
1151
logs/sys-error.log
1151
logs/sys-error.log
File diff suppressed because it is too large
Load Diff
136
logs/sys-info.2025-05-07.log
Normal file
136
logs/sys-info.2025-05-07.log
Normal file
File diff suppressed because one or more lines are too long
211
logs/sys-info.2025-05-13.log
Normal file
211
logs/sys-info.2025-05-13.log
Normal file
File diff suppressed because one or more lines are too long
1580
logs/sys-info.2025-05-14.log
Normal file
1580
logs/sys-info.2025-05-14.log
Normal file
File diff suppressed because one or more lines are too long
1921
logs/sys-info.2025-05-17.log
Normal file
1921
logs/sys-info.2025-05-17.log
Normal file
File diff suppressed because one or more lines are too long
46
logs/sys-info.2025-05-18.log
Normal file
46
logs/sys-info.2025-05-18.log
Normal file
File diff suppressed because one or more lines are too long
1303
logs/sys-info.2025-05-19.log
Normal file
1303
logs/sys-info.2025-05-19.log
Normal file
File diff suppressed because one or more lines are too long
1389
logs/sys-info.2025-05-20.log
Normal file
1389
logs/sys-info.2025-05-20.log
Normal file
File diff suppressed because one or more lines are too long
216
logs/sys-info.2025-05-21.log
Normal file
216
logs/sys-info.2025-05-21.log
Normal file
File diff suppressed because one or more lines are too long
131
logs/sys-info.2025-05-22.log
Normal file
131
logs/sys-info.2025-05-22.log
Normal file
File diff suppressed because one or more lines are too long
60
logs/sys-info.2025-06-13.log
Normal file
60
logs/sys-info.2025-06-13.log
Normal file
File diff suppressed because one or more lines are too long
59
logs/sys-info.2025-06-14.log
Normal file
59
logs/sys-info.2025-06-14.log
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
2025-06-14 10:16:34 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
||||||
|
2025-06-14 10:16:34 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 18924 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-14 10:16:34 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
||||||
|
2025-06-14 10:16:38 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
||||||
|
2025-06-14 10:16:40 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-14 10:16:40 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
||||||
|
2025-06-14 10:16:40 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
||||||
|
2025-06-14 10:16:40 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
||||||
|
2025-06-14 10:16:40 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
||||||
|
2025-06-14 10:16:40 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
||||||
|
2025-06-14 10:16:40 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
||||||
|
2025-06-14 10:16:40 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
|
||||||
|
2025-06-14 10:16:41 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
||||||
|
2025-06-14 10:16:45 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
||||||
|
2025-06-14 10:16:46 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
||||||
|
2025-06-14 10:16:46 [main] INFO org.redisson.Version - Redisson 3.20.1
|
||||||
|
2025-06-14 10:16:46 [redisson-netty-2-5] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-14 10:16:46 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-14 10:16:49 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@47de4dce[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$a9cf5d4b#updateMaterials]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4951c45f[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$48b893f3#procurementOrder]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@488ae823[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$48b893f3#shengchanOrder2]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@19b6b7e7[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$48b893f3#outsourcingOrder]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@2c332922[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$46600595#getMassageDelayDate]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6b8773c7[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$46600595#getMassageForMultipleWorkCenters]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@74534564[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$46600595#getKuCun]
|
||||||
|
2025-06-14 10:16:52 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5876cd86[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$46600595#getKuCunTo40SB]
|
||||||
|
2025-06-14 10:16:53 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6d398593[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$a66c6dff#generateDoc1]
|
||||||
|
2025-06-14 10:16:53 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3d70dab8[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
||||||
|
2025-06-14 10:16:53 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@53e6c017[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
||||||
|
2025-06-14 10:16:53 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3d123d10[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
||||||
|
2025-06-14 10:16:53 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1ca6323c[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
||||||
|
2025-06-14 10:16:53 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@27b89e0a[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
||||||
|
2025-06-14 10:16:53 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-14 10:16:53 [Thread-49] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
||||||
|
2025-06-14 10:16:53 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
||||||
|
2025-06-14 10:16:53 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
||||||
|
2025-06-14 10:16:53 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
||||||
|
2025-06-14 10:16:53 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 20.651 seconds (JVM running for 22.41)
|
||||||
|
2025-06-14 10:16:54 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
||||||
|
2025-06-14 10:16:54 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
||||||
|
2025-06-14 10:16:54 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
||||||
|
2025-06-14 10:16:55 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
||||||
|
2025-06-14 10:16:55 [RMI TCP Connection(4)-192.168.5.200] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-14 15:56:51 [XNIO-1 task-1] INFO c.r.f.listener.UserActionListener - user doLogin, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJzUzBob0ZONEVkQzZFczhZQ1d0NU5FeGpEM3VNRlhzMSIsInVzZXJJZCI6MX0.s3x8yt_a9YEUQNI0yvpkQcBFAB_SjBxn54O0LJpd-40
|
||||||
|
2025-06-14 15:56:51 [XNIO-1 task-1] INFO c.r.f.listener.UserActionListener - user doLogout, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiI3Y2xQWWtPS29OZFp4U2d0WUFpcDZnTDBUTWdYYTZoZiIsInVzZXJJZCI6MX0.Xu2wA3khYtSElBuVPKQOP4AdLhPqJKmhJQZ2w6BsugI
|
||||||
|
2025-06-14 15:56:51 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [192.168.5.200]内网IP[admin][Success][登录成功]
|
||||||
46
logs/sys-info.2025-06-15.log
Normal file
46
logs/sys-info.2025-06-15.log
Normal file
File diff suppressed because one or more lines are too long
73
logs/sys-info.2025-06-21.log
Normal file
73
logs/sys-info.2025-06-21.log
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
2025-06-21 15:04:30 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
||||||
|
2025-06-21 15:04:30 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 33032 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-21 15:04:30 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
||||||
|
2025-06-21 15:04:32 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
||||||
|
2025-06-21 15:04:33 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-21 15:04:33 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
||||||
|
2025-06-21 15:04:33 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
||||||
|
2025-06-21 15:04:33 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
||||||
|
2025-06-21 15:04:33 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
||||||
|
2025-06-21 15:04:33 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
||||||
|
2025-06-21 15:04:33 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
||||||
|
2025-06-21 15:04:33 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
|
||||||
|
2025-06-21 15:04:34 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
||||||
|
2025-06-21 15:04:38 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
||||||
|
2025-06-21 15:04:39 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
||||||
|
2025-06-21 15:04:39 [main] INFO org.redisson.Version - Redisson 3.20.1
|
||||||
|
2025-06-21 15:04:39 [redisson-netty-2-5] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-21 15:04:39 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-21 15:04:41 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4487dce[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$b9ac3f42#updateMaterials]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3aafa1c1[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$589575ea#outsourcingOrder]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@192f807[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$589575ea#shengchanOrder2]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@36cbe0fe[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$589575ea#procurementOrder]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@712a5de4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$563ce78c#getMassageForMultipleWorkCenters]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@364c4ba9[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$563ce78c#getMassageDelayDate]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@2008dfa7[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$563ce78c#getKuCun]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@492d0748[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$563ce78c#getKuCunTo40SB]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6a4ba6f4[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$b6494ff6#generateDoc1]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3e0eb917[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@589dac96[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@792bf78a[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4e60925d[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5ed4c87[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
||||||
|
2025-06-21 15:04:43 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-21 15:04:43 [Thread-36] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
||||||
|
2025-06-21 15:04:43 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
||||||
|
2025-06-21 15:04:43 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
||||||
|
2025-06-21 15:04:43 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
||||||
|
2025-06-21 15:04:43 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 13.975 seconds (JVM running for 15.031)
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
||||||
|
2025-06-21 15:04:43 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
||||||
|
2025-06-21 15:04:43 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
||||||
|
2025-06-21 15:04:43 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 15:17:08 [XNIO-1 task-1] INFO c.r.f.listener.UserActionListener - user doLogin, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJLNlVDOVgzYUl3clZidG03RWFPVHkxaTFNS2dwaVkzMSIsInVzZXJJZCI6MX0.6Dc_MNZN6j6xzhQCc-XUj8Wt2M924PIR-NX0y8iPQck
|
||||||
|
2025-06-21 15:17:08 [XNIO-1 task-1] INFO c.r.f.listener.UserActionListener - user doLogout, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiIxT1BVeWthdDNXMXlIcWJoaG00Snppb0Y3RGxrekp4WiIsInVzZXJJZCI6MX0.se5v9gL3XwET50Bp6lRCNTiHttUZtClKdqNgRoEc6Ow
|
||||||
|
2025-06-21 15:17:08 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [127.0.0.1]内网IP[admin][Success][登录成功]
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
|
||||||
|
2025-06-21 17:45:00 [Thread-36] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
|
||||||
|
2025-06-21 17:45:00 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove success, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
|
||||||
|
2025-06-21 17:45:00 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
|
||||||
|
2025-06-21 17:45:00 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
|
||||||
|
2025-06-21 17:45:00 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
|
||||||
|
2025-06-21 17:45:00 [Thread-35] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
|
||||||
|
2025-06-21 17:45:00 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
|
||||||
204
logs/sys-info.2025-06-23.log
Normal file
204
logs/sys-info.2025-06-23.log
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
2025-06-23 11:38:00 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
||||||
|
2025-06-23 11:38:00 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 552976 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 11:38:00 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
||||||
|
2025-06-23 11:38:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
||||||
|
2025-06-23 11:38:04 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 11:38:04 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
||||||
|
2025-06-23 11:38:04 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
||||||
|
2025-06-23 11:38:04 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
||||||
|
2025-06-23 11:38:04 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
||||||
|
2025-06-23 11:38:04 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
||||||
|
2025-06-23 11:38:04 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
||||||
|
2025-06-23 11:38:04 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
|
||||||
|
2025-06-23 11:38:05 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
||||||
|
2025-06-23 11:38:07 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
||||||
|
2025-06-23 11:38:07 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
||||||
|
2025-06-23 11:38:08 [main] INFO org.redisson.Version - Redisson 3.20.1
|
||||||
|
2025-06-23 11:38:08 [redisson-netty-2-5] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-23 11:38:08 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-23 11:38:09 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@192f807[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$c6f48451#updateMaterials]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@36cbe0fe[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$65ddbaf9#outsourcingOrder]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@712a5de4[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$65ddbaf9#procurementOrder]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@364c4ba9[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$65ddbaf9#shengchanOrder2]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@2008dfa7[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$63852c9b#getKuCun]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@492d0748[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$63852c9b#getKuCunTo40SB]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6a4ba6f4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$63852c9b#getMassageDelayDate]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3e0eb917[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$63852c9b#getMassageForMultipleWorkCenters]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@589dac96[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$c3919505#generateDoc1]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@792bf78a[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4e60925d[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5ed4c87[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@30a1b9b0[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
||||||
|
2025-06-23 11:38:11 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@16908f89[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
||||||
|
2025-06-23 11:38:11 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-23 11:38:11 [Thread-34] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
||||||
|
2025-06-23 11:38:11 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
||||||
|
2025-06-23 11:38:11 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
||||||
|
2025-06-23 11:38:11 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
||||||
|
2025-06-23 11:38:11 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 11.509 seconds (JVM running for 12.76)
|
||||||
|
2025-06-23 11:38:12 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
||||||
|
2025-06-23 11:38:12 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
||||||
|
2025-06-23 11:38:12 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
||||||
|
2025-06-23 11:38:12 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
||||||
|
2025-06-23 11:38:12 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:07:50 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
||||||
|
2025-06-23 16:07:50 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 30092 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 16:07:50 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
||||||
|
2025-06-23 16:07:53 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
||||||
|
2025-06-23 16:07:54 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 16:07:54 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
||||||
|
2025-06-23 16:07:54 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
||||||
|
2025-06-23 16:07:54 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
||||||
|
2025-06-23 16:07:54 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
||||||
|
2025-06-23 16:07:54 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
||||||
|
2025-06-23 16:07:54 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
||||||
|
2025-06-23 16:07:54 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
|
||||||
|
2025-06-23 16:07:54 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
||||||
|
2025-06-23 16:07:57 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
||||||
|
2025-06-23 16:07:57 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
||||||
|
2025-06-23 16:07:57 [main] INFO org.redisson.Version - Redisson 3.20.1
|
||||||
|
2025-06-23 16:07:58 [redisson-netty-2-5] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-23 16:07:58 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-23 16:07:59 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@272d0dd3[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$4e3d743b#updateMaterials]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4f142cbd[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$ed26aae3#shengchanOrder2]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@766534b0[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$ed26aae3#procurementOrder]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4f1cb802[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$ed26aae3#outsourcingOrder]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1077a7[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$eace1c85#getMassageForMultipleWorkCenters]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6e0fd2dc[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$eace1c85#getMassageDelayDate]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3110bb19[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$eace1c85#getKuCun]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@1be6c991[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$eace1c85#getKuCunTo40SB]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@18482805[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$4ada84ef#generateDoc1]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@84180e2[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3c3d2a80[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@11bac6d7[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@48ebcce5[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4c29138a[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
||||||
|
2025-06-23 16:08:01 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-23 16:08:01 [Thread-34] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
||||||
|
2025-06-23 16:08:01 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
||||||
|
2025-06-23 16:08:01 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
||||||
|
2025-06-23 16:08:01 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
||||||
|
2025-06-23 16:08:01 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 11.84 seconds (JVM running for 14.127)
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
||||||
|
2025-06-23 16:08:01 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
||||||
|
2025-06-23 16:08:02 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
||||||
|
2025-06-23 16:08:02 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
||||||
|
2025-06-23 16:08:02 [XNIO-1 task-1] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:09:05 [XNIO-1 task-1] INFO c.r.f.listener.UserActionListener - user doLogin, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJUVjk4T29iZU1uOHVUdDNZVWRLcEVuaGZDVWVNbUlSbiIsInVzZXJJZCI6MX0.0y3la9exRErtsVJYcOUltlLwxwlaJHgpfFDZjuDLAqk
|
||||||
|
2025-06-23 16:09:05 [XNIO-1 task-1] INFO c.r.f.listener.UserActionListener - user doLogout, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJoaXlKbmEzRGhjQmh4cjJrbEU3RkxmSjdleGR0N1A5QSIsInVzZXJJZCI6MX0.ZyZa-pOmKk-6a32LKZJmvBlwYCKpRoZld641E5krTuY
|
||||||
|
2025-06-23 16:09:05 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [127.0.0.1]内网IP[admin][Success][登录成功]
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:12:02 [Thread-34] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
|
||||||
|
2025-06-23 16:12:02 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove success, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
|
||||||
|
2025-06-23 16:12:02 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
|
||||||
|
2025-06-23 16:12:02 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
|
||||||
|
2025-06-23 16:12:02 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
|
||||||
|
2025-06-23 16:12:02 [Thread-33] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
|
||||||
|
2025-06-23 16:12:02 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
|
||||||
|
2025-06-23 16:15:00 [background-preinit] INFO o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.5.Final
|
||||||
|
2025-06-23 16:15:00 [main] INFO com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_421 on PC-20250327GIRN with PID 4116 (F:\evo_k3cloud\ruoyi-admin\target\classes started by Administrator in F:\evo_k3cloud)
|
||||||
|
2025-06-23 16:15:00 [main] INFO com.ruoyi.RuoYiApplication - The following 1 profile is active: "dev"
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ begin ] ***********************
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ------ minidao.base-package ------- org.jeecg.modules.jmreport.desreport.*
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.auto.MinidaoAutoConfiguration - ******************* init miniDao config [ end ] ***********************
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDataSourceDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbFieldDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDbParamDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportDictItemDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportLinkDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportMapDao }
|
||||||
|
2025-06-23 16:15:03 [main] INFO o.j.m.f.MiniDaoClassPathMapperScanner - register minidao name is { org.jeecg.modules.jmreport.desreport.dao.JimuReportShareDao }
|
||||||
|
2025-06-23 16:15:04 [main] INFO io.undertow.servlet - Initializing Spring embedded WebApplicationContext
|
||||||
|
2025-06-23 16:15:04 [main] INFO o.j.m.j.c.i.JimuReportConfiguration - Init JimuReport Config [ Token Interceptor & Resource Locations ]
|
||||||
|
2025-06-23 16:15:05 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
|
||||||
|
2025-06-23 16:15:05 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Starting...
|
||||||
|
2025-06-23 16:15:05 [main] INFO com.zaxxer.hikari.HikariDataSource - master - Start completed.
|
||||||
|
2025-06-23 16:15:05 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
|
||||||
|
2025-06-23 16:15:05 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
|
||||||
|
2025-06-23 16:15:05 [main] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
|
||||||
|
2025-06-23 16:15:05 [main] INFO o.j.m.j.c.JmReportExecutorConfig - Init JimuReport Config [ 线程池 ]
|
||||||
|
2025-06-23 16:15:09 [main] INFO c.r.framework.config.JacksonConfig - 初始化 jackson 配置
|
||||||
|
2025-06-23 16:15:09 [main] INFO c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
|
||||||
|
2025-06-23 16:15:09 [main] INFO org.redisson.Version - Redisson 3.20.1
|
||||||
|
2025-06-23 16:15:10 [redisson-netty-2-6] INFO o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-23 16:15:10 [redisson-netty-2-4] INFO o.r.c.pool.MasterConnectionPool - 8 connections initialized for localhost/127.0.0.1:6379
|
||||||
|
2025-06-23 16:15:13 [main] INFO com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:updateMaterials, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@6eb06667[class com.ruoyi.system.controller.ImMaterialController$$EnhancerBySpringCGLIB$$144f82c7#updateMaterials]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:outsourcingOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@2f0dae44[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$b338b96f#outsourcingOrder]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shengchanOrder2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@79ac50fe[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$b338b96f#shengchanOrder2]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:procurementOrder, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@684c2c57[class com.ruoyi.system.controller.ImProductionPlanProController$$EnhancerBySpringCGLIB$$b338b96f#procurementOrder]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageForMultipleWorkCenters, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@522fc67[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$b0e02b11#getMassageForMultipleWorkCenters]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getMassageDelayDate, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@479f1d09[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$b0e02b11#getMassageDelayDate]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCun, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5caf9ea4[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$b0e02b11#getKuCun]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:getKuCunTo40SB, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@55882ff2[class com.ruoyi.system.controller.KingdeeWorkCenterDataController$$EnhancerBySpringCGLIB$$b0e02b11#getKuCunTo40SB]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:generateDoc2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@47db20e0[class com.ruoyi.system.controller.WlStockDataController$$EnhancerBySpringCGLIB$$10ec937b#generateDoc1]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@78131a47[class com.ruoyi.job.service.SampleService#demoJobHandler2]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5869f15f[class com.ruoyi.job.service.SampleService#demoJobHandler]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@4c8ab21f[class com.ruoyi.job.service.SampleService#httpJobHandler]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@5248474e[class com.ruoyi.job.service.SampleService#commandJobHandler]
|
||||||
|
2025-06-23 16:15:16 [main] INFO c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3269ae62[class com.ruoyi.job.service.SampleService#shardingJobHandler]
|
||||||
|
2025-06-23 16:15:16 [main] INFO io.undertow - starting server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-23 16:15:16 [Thread-42] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
|
||||||
|
2025-06-23 16:15:16 [main] INFO org.xnio - XNIO version 3.8.7.Final
|
||||||
|
2025-06-23 16:15:16 [main] INFO org.xnio.nio - XNIO NIO Implementation Version 3.8.7.Final
|
||||||
|
2025-06-23 16:15:16 [main] INFO org.jboss.threads - JBoss Threads version 3.1.0.Final
|
||||||
|
2025-06-23 16:15:16 [main] INFO com.ruoyi.RuoYiApplication - Started RuoYiApplication in 17.086 seconds (JVM running for 18.879)
|
||||||
|
2025-06-23 16:15:18 [main] INFO c.r.s.runner.SystemApplicationRunner - 初始化OSS配置成功
|
||||||
|
2025-06-23 16:15:18 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载参数缓存数据成功
|
||||||
|
2025-06-23 16:15:18 [main] INFO c.r.s.runner.SystemApplicationRunner - 加载字典缓存数据成功
|
||||||
|
2025-06-23 16:15:18 [registrationTask1] INFO d.c.b.a.c.r.ApplicationRegistrator - Application registered itself as 08432fb0b14f
|
||||||
|
2025-06-23 16:15:18 [RMI TCP Connection(5)-192.168.5.200] INFO io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 16:15:54 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [127.0.0.1]内网IP[admin][Error][验证码错误]
|
||||||
|
2025-06-23 16:15:57 [XNIO-1 task-2] INFO c.r.f.listener.UserActionListener - user doLogin, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJsNGNWWjB0TTBDVmFKZmt1alVjOXN6WEt4ZEV5MUpKTSIsInVzZXJJZCI6MX0.P1BWJ0HvOoz3_Z5HUwAW6SmUcsfnm9skhprFvJ8eyz0
|
||||||
|
2025-06-23 16:15:57 [XNIO-1 task-2] INFO c.r.f.listener.UserActionListener - user doLogout, userId:sys_user:1, token:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJjOWxXZmF6VWR1a0s3cG9ZTGhnVzd1bXpnVWlVZFVoTCIsInVzZXJJZCI6MX0._etYZAoqIj1yh8-s83eoISSc5ffo1XpHaxgZhxD45ck
|
||||||
|
2025-06-23 16:15:57 [schedule-pool-1] INFO c.r.s.s.i.SysLogininforServiceImpl - [127.0.0.1]内网IP[admin][Success][登录成功]
|
||||||
|
2025-06-23 17:40:50 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=500, msg=xxl-job remoting error(Connection refused: connect), for url : http://localhost:9100/xxl-job-admin/api/registry, content=null]
|
||||||
|
2025-06-23 17:40:54 [SpringApplicationShutdownHook] INFO io.undertow - stopping server: Undertow - 2.2.24.Final
|
||||||
|
2025-06-23 17:40:54 [SpringApplicationShutdownHook] INFO io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
|
||||||
|
2025-06-23 17:40:54 [Thread-42] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
|
||||||
|
2025-06-23 17:40:56 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job registry-remove fail, registryParam:RegistryParam{registryGroup='EXECUTOR', registryKey='xxl-job-executor', registryValue='http://192.168.5.200:9101/'}, registryResult:ReturnT [code=500, msg=xxl-job remoting error(Connection refused: connect), for url : http://localhost:9100/xxl-job-admin/api/registryRemove, content=null]
|
||||||
|
2025-06-23 17:40:56 [xxl-job, executor ExecutorRegistryThread] INFO c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destroy.
|
||||||
|
2025-06-23 17:40:56 [SpringApplicationShutdownHook] INFO com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
|
||||||
|
2025-06-23 17:40:56 [xxl-job, executor JobLogFileCleanThread] INFO c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destroy.
|
||||||
|
2025-06-23 17:40:56 [xxl-job, executor TriggerCallbackThread] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destroy.
|
||||||
|
2025-06-23 17:40:56 [Thread-41] INFO c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destroy.
|
||||||
|
2025-06-23 17:40:56 [SpringApplicationShutdownHook] INFO c.r.f.manager.ShutdownManager - ====关闭后台任务任务线程池====
|
||||||
|
2025-06-23 17:40:56 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
|
||||||
|
2025-06-23 17:40:56 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown initiated...
|
||||||
|
2025-06-23 17:40:56 [SpringApplicationShutdownHook] INFO com.zaxxer.hikari.HikariDataSource - master - Shutdown completed.
|
||||||
|
2025-06-23 17:40:56 [SpringApplicationShutdownHook] INFO c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
|
||||||
3711
logs/sys-info.2025-06-24.log
Normal file
3711
logs/sys-info.2025-06-24.log
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
3
logs/xxl-job/2025-06-15/309.log
Normal file
3
logs/xxl-job/2025-06-15/309.log
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
2025-06-15 07:15:00 [com.xxl.job.core.thread.JobThread#run]-[133]-[xxl-job, JobThread-15-1749942900537] <br>----------- xxl-job job execute start -----------<br>----------- Param:
|
||||||
|
2025-06-15 07:16:24 [com.xxl.job.core.thread.JobThread#run]-[179]-[xxl-job, JobThread-15-1749942900537] <br>----------- xxl-job job execute end(finish) -----------<br>----------- Result: handleCode=200, handleMsg = null
|
||||||
|
2025-06-15 07:16:24 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread] <br>----------- xxl-job job callback finish.
|
||||||
3
logs/xxl-job/2025-06-15/310.log
Normal file
3
logs/xxl-job/2025-06-15/310.log
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
2025-06-15 08:15:00 [com.xxl.job.core.thread.JobThread#run]-[133]-[xxl-job, JobThread-16-1749946500006] <br>----------- xxl-job job execute start -----------<br>----------- Param:
|
||||||
|
2025-06-15 08:15:01 [com.xxl.job.core.thread.JobThread#run]-[179]-[xxl-job, JobThread-16-1749946500006] <br>----------- xxl-job job execute end(finish) -----------<br>----------- Result: handleCode=200, handleMsg = null
|
||||||
|
2025-06-15 08:15:01 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread] <br>----------- xxl-job job callback finish.
|
||||||
3
logs/xxl-job/2025-06-16/311.log
Normal file
3
logs/xxl-job/2025-06-16/311.log
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
2025-06-16 07:15:00 [com.xxl.job.core.thread.JobThread#run]-[133]-[xxl-job, JobThread-15-1750029300015] <br>----------- xxl-job job execute start -----------<br>----------- Param:
|
||||||
|
2025-06-16 07:16:20 [com.xxl.job.core.thread.JobThread#run]-[179]-[xxl-job, JobThread-15-1750029300015] <br>----------- xxl-job job execute end(finish) -----------<br>----------- Result: handleCode=200, handleMsg = null
|
||||||
|
2025-06-16 07:16:20 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread] <br>----------- xxl-job job callback finish.
|
||||||
3
logs/xxl-job/2025-06-25/487.log
Normal file
3
logs/xxl-job/2025-06-25/487.log
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
2025-06-25 07:15:00 [com.xxl.job.core.thread.JobThread#run]-[133]-[xxl-job, JobThread-15-1750806900572] <br>----------- xxl-job job execute start -----------<br>----------- Param:
|
||||||
|
2025-06-25 07:16:41 [com.xxl.job.core.thread.JobThread#run]-[179]-[xxl-job, JobThread-15-1750806900572] <br>----------- xxl-job job execute end(finish) -----------<br>----------- Result: handleCode=200, handleMsg = null
|
||||||
|
2025-06-25 07:16:41 [com.xxl.job.core.thread.TriggerCallbackThread#callbackLog]-[197]-[xxl-job, executor TriggerCallbackThread] <br>----------- xxl-job job callback finish.
|
||||||
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,4 +1,4 @@
|
|||||||
|
{
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@ -47,6 +47,7 @@ import java.util.Map;
|
|||||||
public class CaptchaController {
|
public class CaptchaController {
|
||||||
|
|
||||||
private final CaptchaProperties captchaProperties;
|
private final CaptchaProperties captchaProperties;
|
||||||
|
private final SmsProperties smsProperties;
|
||||||
private final ISysConfigService configService;
|
private final ISysConfigService configService;
|
||||||
private final MailProperties mailProperties;
|
private final MailProperties mailProperties;
|
||||||
|
|
||||||
@ -57,7 +58,6 @@ public class CaptchaController {
|
|||||||
*/
|
*/
|
||||||
@GetMapping("/captchaSms")
|
@GetMapping("/captchaSms")
|
||||||
public R<Void> smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
|
public R<Void> smsCaptcha(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
|
||||||
SmsProperties smsProperties = SpringUtils.getBean(SmsProperties.class);
|
|
||||||
if (!smsProperties.getEnabled()) {
|
if (!smsProperties.getEnabled()) {
|
||||||
return R.fail("当前系统没有开启短信功能!");
|
return R.fail("当前系统没有开启短信功能!");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,391 +0,0 @@
|
|||||||
package com.ruoyi.web.controller.dingtalk;
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.ruoyi.common.config.DingTalkProperties;
|
|
||||||
import com.ruoyi.common.dingding.DingCallbackCrypto;
|
|
||||||
import com.ruoyi.common.dingding.DingUtil;
|
|
||||||
import com.ruoyi.system.controller.KingdeeWorkCenterDataController;
|
|
||||||
import com.ruoyi.system.domain.ProcessOrderPro;
|
|
||||||
import com.ruoyi.system.mapper.ProcessOrderProMapper;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
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 java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@SaIgnore
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/ding/callback")
|
|
||||||
public class CallbackController {
|
|
||||||
|
|
||||||
// 请替换为您的钉钉应用配置
|
|
||||||
private static final String TOKEN = "VDAhP9mGgALfgWioUHlVr8";
|
|
||||||
private static final String ENCODING_AES_KEY = "p9QQoHGCX1wiwSkHnLiPhcfymUCOmNum0CBuYQfFSiu";
|
|
||||||
private static final String APP_KEY = "dingebfrpzqko25vo8w6"; // Client ID
|
|
||||||
private static final String SAFETY_STOCK_ROBOT_CODE = "dingwoaeaozawfochwoo";
|
|
||||||
private final Logger bizLogger = LoggerFactory.getLogger(getClass());
|
|
||||||
@Autowired
|
|
||||||
private ProcessOrderProMapper processOrderProMapper;
|
|
||||||
@Autowired
|
|
||||||
private DingTalkProperties dingTalkProperties;
|
|
||||||
@Autowired
|
|
||||||
private KingdeeWorkCenterDataController kingdeeWorkCenterDataController;
|
|
||||||
|
|
||||||
@PostMapping("/receive")
|
|
||||||
public Map<String, String> callBack(@RequestBody(required = false) Map<String, Object> json) {
|
|
||||||
|
|
||||||
System.out.println("【CallbackController】参数: " + JSON.toJSONString(json));
|
|
||||||
|
|
||||||
try {
|
|
||||||
bizLogger.info("收到钉钉回调:json={}", JSON.toJSONString(json));
|
|
||||||
|
|
||||||
DingCallbackCrypto callbackCrypto = new DingCallbackCrypto(TOKEN, ENCODING_AES_KEY, APP_KEY);
|
|
||||||
|
|
||||||
// 检查是加密模式还是明文模式
|
|
||||||
if (json.containsKey("encrypt")) {
|
|
||||||
String encryptMsg = (String) json.get("encrypt");
|
|
||||||
|
|
||||||
String msgSignature1 = json.get("msg_signature").toString();
|
|
||||||
String timeStamp1 = json.get("timestamp").toString();
|
|
||||||
String nonce1 = json.get("nonce").toString();
|
|
||||||
|
|
||||||
// 1. 解密
|
|
||||||
String decryptMsg = callbackCrypto.getDecryptMsg(msgSignature1, timeStamp1, nonce1, encryptMsg);
|
|
||||||
bizLogger.info("解密后的回调内容: {}", decryptMsg);
|
|
||||||
|
|
||||||
JSONObject eventJson = JSON.parseObject(decryptMsg);
|
|
||||||
processEvent(eventJson);
|
|
||||||
|
|
||||||
// 3.返回加密 success
|
|
||||||
Map<String, String> successMap = callbackCrypto.getEncryptedMap("success");
|
|
||||||
bizLogger.info("返回加密成功响应: {}", successMap);
|
|
||||||
return successMap;
|
|
||||||
} else {
|
|
||||||
// 明文模式
|
|
||||||
bizLogger.info("收到明文消息,直接处理");
|
|
||||||
JSONObject eventJson = new JSONObject(json);
|
|
||||||
processEvent(eventJson);
|
|
||||||
|
|
||||||
// 返回简单成功响应
|
|
||||||
Map<String, String> result = new java.util.HashMap<>();
|
|
||||||
result.put("message", "success");
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
bizLogger.error("回调处理异常", e);
|
|
||||||
// 返回错误信息以便调试
|
|
||||||
Map<String, String> errorMap = new java.util.HashMap<>();
|
|
||||||
errorMap.put("error", e.getMessage());
|
|
||||||
return errorMap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateProcessOrderProStatus(String outTrackId, Long status) {
|
|
||||||
try {
|
|
||||||
// 根据 notificationCardId 查询
|
|
||||||
ProcessOrderPro order = processOrderProMapper.selectOne(new LambdaQueryWrapper<ProcessOrderPro>().eq(ProcessOrderPro::getAuditCardId, outTrackId));
|
|
||||||
if (order != null) {
|
|
||||||
ProcessOrderPro update = new ProcessOrderPro();
|
|
||||||
update.setId(order.getId());
|
|
||||||
update.setRouteStatus(status);
|
|
||||||
update.setBomStatus(8L);
|
|
||||||
update.setUpdateBy("DingDing");
|
|
||||||
processOrderProMapper.updateById(update);
|
|
||||||
bizLogger.info("更新 ProcessOrderPro 状态成功: id={}, status={}", order.getId(), status);
|
|
||||||
} else {
|
|
||||||
bizLogger.warn("未找到对应的 审核卡片Id: notificationCardId={}", outTrackId);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("更新数据库状态异常", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 处理具体事件逻辑
|
|
||||||
*/
|
|
||||||
private void processEvent(JSONObject eventJson) {
|
|
||||||
// 1. 优先处理互动卡片回调 (包含 outTrackId 和 value)
|
|
||||||
if (eventJson.containsKey("outTrackId") && eventJson.containsKey("value")) {
|
|
||||||
String outTrackId = eventJson.getString("outTrackId");
|
|
||||||
String userId = eventJson.getString("senderStaffId"); // 操作人ID(钉钉ID)
|
|
||||||
|
|
||||||
// 解析回传参数 value (可能是 String 也可能是 JSONObject)FProcessPlanController
|
|
||||||
JSONObject cardPrivateData = null;
|
|
||||||
Object valueObj = eventJson.get("value");
|
|
||||||
if (valueObj instanceof String) {
|
|
||||||
// 如果是 JSON 字符串,先解析
|
|
||||||
String valueStr = (String) valueObj;
|
|
||||||
try {
|
|
||||||
JSONObject valueJson = JSON.parseObject(valueStr);
|
|
||||||
if (valueJson != null && valueJson.containsKey("cardPrivateData")) {
|
|
||||||
cardPrivateData = valueJson.getJSONObject("cardPrivateData");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("解析value JSON字符串失败: {}", valueStr);
|
|
||||||
}
|
|
||||||
} else if (valueObj instanceof JSONObject) {
|
|
||||||
JSONObject valueJson = (JSONObject) valueObj;
|
|
||||||
if (valueJson.containsKey("cardPrivateData")) {
|
|
||||||
cardPrivateData = valueJson.getJSONObject("cardPrivateData");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bizLogger.info("【互动卡片回调】outTrackId={}, 操作人={}, cardPrivateData={}", outTrackId, userId, cardPrivateData);
|
|
||||||
|
|
||||||
if (cardPrivateData != null && cardPrivateData.containsKey("params")) {
|
|
||||||
JSONObject params = cardPrivateData.getJSONObject("params");
|
|
||||||
String action = params.getString("action");
|
|
||||||
|
|
||||||
// 获取 AccessToken (根据 robotCode 动态获取)
|
|
||||||
String accessToken = getAccessToken(eventJson);
|
|
||||||
|
|
||||||
// 构造更新卡片的数据
|
|
||||||
Map<String, String> cardDataMap = new HashMap<>();
|
|
||||||
cardDataMap.put("action", action);
|
|
||||||
// 根据 action 更新状态
|
|
||||||
if ("agree".equals(action)) {
|
|
||||||
cardDataMap.put("status", "agree");
|
|
||||||
// 更新数据库状态
|
|
||||||
updateProcessOrderProStatus(outTrackId, 1L); // 1 通过
|
|
||||||
} else if ("reject".equals(action)) {
|
|
||||||
cardDataMap.put("status", "reject");
|
|
||||||
// 更新数据库状态
|
|
||||||
updateProcessOrderProStatus(outTrackId, 2L); // 0 未通过
|
|
||||||
}
|
|
||||||
|
|
||||||
// 调用 DingUtil 更新卡片
|
|
||||||
try {
|
|
||||||
DingUtil.updateInteractiveCard(accessToken, outTrackId, cardDataMap);
|
|
||||||
bizLogger.info("成功更新卡片状态: outTrackId={}, action={}", outTrackId, action);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("更新卡片失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String eventType = eventJson.getString("EventType");
|
|
||||||
// 机器人普通消息没有 EventType,补充默认值
|
|
||||||
if (eventType == null && eventJson.containsKey("msgId")) {
|
|
||||||
eventType = "robot_message";
|
|
||||||
}
|
|
||||||
bizLogger.info("事件类型: {}", eventType);
|
|
||||||
// 4. 根据EventType分类处理
|
|
||||||
if ("check_url".equals(eventType)) {
|
|
||||||
bizLogger.info("测试回调url的正确性");
|
|
||||||
} else if ("user_add_org".equals(eventType)) {
|
|
||||||
bizLogger.info("发生了:" + eventType + "事件");
|
|
||||||
} else if ("bpms_instance_change".equals(eventType)) {
|
|
||||||
// 处理审批实例状态变更(钉钉OA审批)
|
|
||||||
bizLogger.info("收到审批状态变更事件: {}", eventJson.toJSONString());
|
|
||||||
} else {
|
|
||||||
// 其他事件(包括机器人消息)
|
|
||||||
bizLogger.info("收到事件: type={}", eventType);
|
|
||||||
if (eventJson.containsKey("text")) {
|
|
||||||
String content = eventJson.getJSONObject("text").getString("content");
|
|
||||||
bizLogger.info("机器人收到文本消息: {}", content);
|
|
||||||
|
|
||||||
boolean isHandled = false;
|
|
||||||
|
|
||||||
// 如果内容包含 "你好",则回复 "你好"
|
|
||||||
if (content != null && content.trim().contains("你好")) {
|
|
||||||
isHandled = true;
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
// 获取发送者ID,如果为空则使用默认ID
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
if (senderId == null) {
|
|
||||||
senderId = "283633411029629036";
|
|
||||||
}
|
|
||||||
|
|
||||||
// 确定当前使用的 AppKey (作为 API 调用的 robotCode) 和 Secret
|
|
||||||
String incomingRobotCode = eventJson.getString("robotCode");
|
|
||||||
String targetAppKey = dingTalkProperties.getAppKey();
|
|
||||||
String targetAppSecret = dingTalkProperties.getAppSecret();
|
|
||||||
|
|
||||||
// 如果是安全库存机器人
|
|
||||||
if (SAFETY_STOCK_ROBOT_CODE.equals(incomingRobotCode) || (dingTalkProperties.getSafetyStockAppKey() != null && dingTalkProperties.getSafetyStockAppKey().equals(incomingRobotCode))) {
|
|
||||||
// 使用安全库存机器人的配置
|
|
||||||
targetAppKey = dingTalkProperties.getSafetyStockAppKey();
|
|
||||||
targetAppSecret = dingTalkProperties.getSafetyStockAppSecret();
|
|
||||||
// 兜底:如果配置为空,使用常量
|
|
||||||
if (targetAppKey == null || targetAppKey.isEmpty()) {
|
|
||||||
targetAppKey = SAFETY_STOCK_ROBOT_CODE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String accessToken = DingUtil.getAccessToken(targetAppKey, targetAppSecret);
|
|
||||||
|
|
||||||
// 统一使用企业机器人发送群消息 (不再使用 Webhook)
|
|
||||||
// 构造回复内容,尝试 @ 用户
|
|
||||||
String replyContent = "你好 @" + senderId;
|
|
||||||
|
|
||||||
// 使用 Text 消息格式
|
|
||||||
Map<String, Object> textParam = new HashMap<>();
|
|
||||||
textParam.put("content", replyContent);
|
|
||||||
try {
|
|
||||||
DingUtil.robotGroupSend(accessToken, textParam, "sampleText", conversationId, targetAppKey, null);
|
|
||||||
bizLogger.info("已回复你好(Text),并@用户: {}", senderId);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("回复你好失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果内容包含 "安全库存",则调用 KingdeeWorkCenterDataController 发送安全库存
|
|
||||||
if (content != null && content.contains("安全库存")) {
|
|
||||||
isHandled = true;
|
|
||||||
String sessionWebhook = null; // 不再使用 webhook
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
|
|
||||||
// 异步调用以避免阻塞回调
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
kingdeeWorkCenterDataController.sendKuCunData(conversationId, sessionWebhook, senderId, SAFETY_STOCK_ROBOT_CODE);
|
|
||||||
bizLogger.info("已触发发送安全库存");
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("触发安全库存发送失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 延期
|
|
||||||
if (content != null && content.contains("延期")) {
|
|
||||||
isHandled = true;
|
|
||||||
String sessionWebhook = null; // 不再使用 webhook
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
kingdeeWorkCenterDataController.sendMassageDelayDate(conversationId, sessionWebhook, senderId, SAFETY_STOCK_ROBOT_CODE);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("触发延期发送失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 预警
|
|
||||||
if (content != null && content.contains("预警")) {
|
|
||||||
isHandled = true;
|
|
||||||
String sessionWebhook = null; // 不再使用 webhook
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
kingdeeWorkCenterDataController.sendMassageForMultipleWorkCenters(conversationId, sessionWebhook, senderId, SAFETY_STOCK_ROBOT_CODE);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("触发预警发送失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 采购 或 采购申请
|
|
||||||
if (content != null && (content.contains("采购") || content.contains("采购申请"))) {
|
|
||||||
isHandled = true;
|
|
||||||
String sessionWebhook = null; // 不再使用 webhook
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
kingdeeWorkCenterDataController.sendPurchaseOrder2(conversationId, sessionWebhook, senderId, SAFETY_STOCK_ROBOT_CODE);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("触发采购发送失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 工序汇报 或 未入库
|
|
||||||
if (content != null && (content.contains("工序汇报") || content.contains("未入库"))) {
|
|
||||||
isHandled = true;
|
|
||||||
String sessionWebhook = null; // 不再使用 webhook
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
kingdeeWorkCenterDataController.sendProductionOrder(conversationId, sessionWebhook, senderId, SAFETY_STOCK_ROBOT_CODE);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("触发未入库发送失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 未及时转移
|
|
||||||
if (content != null && content.contains("未及时转移")) {
|
|
||||||
isHandled = true;
|
|
||||||
String sessionWebhook = null; // 不再使用 webhook
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
kingdeeWorkCenterDataController.sendProcessTransferForm(conversationId, sessionWebhook, senderId, SAFETY_STOCK_ROBOT_CODE);
|
|
||||||
} catch (Exception e) {
|
|
||||||
bizLogger.error("触发未及时转移发送失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 默认回复
|
|
||||||
if (!isHandled) {
|
|
||||||
String sessionWebhook = eventJson.getString("sessionWebhook");
|
|
||||||
String senderId = eventJson.getString("senderStaffId");
|
|
||||||
String conversationId = eventJson.getString("conversationId");
|
|
||||||
|
|
||||||
if (conversationId != null && !conversationId.isEmpty()) {
|
|
||||||
String helpContent = "您好,我是数据提醒机器人。收到您的消息,但不知道你在讲什么?。\n" + "目前支持以下业务指令,请直接回复关键词:\n" + "1. 安全库存\n" + "2. 延期\n" + "3. 预警\n" + "4. 采购 / 采购申请\n" + "5. 工序汇报 / 未入库\n" + "6. 未及时转移";
|
|
||||||
|
|
||||||
// 使用回调中的 sessionWebhook 直接回复 (这是最标准的回调回复方式)
|
|
||||||
if (sessionWebhook != null && !sessionWebhook.isEmpty()) {
|
|
||||||
DingUtil.sendSessionText(sessionWebhook, helpContent, Collections.singletonList(senderId));
|
|
||||||
bizLogger.info("通过Webhook回复帮助信息给用户: {}", senderId);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
bizLogger.warn("未获取到 sessionWebhook,无法回复帮助信息");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据回调中的 robotCode 获取对应的 AccessToken
|
|
||||||
*/
|
|
||||||
private String getAccessToken(JSONObject eventJson) {
|
|
||||||
String currentRobotCode = eventJson.getString("robotCode");
|
|
||||||
String currentAppKey = dingTalkProperties.getAppKey();
|
|
||||||
String currentAppSecret = dingTalkProperties.getAppSecret();
|
|
||||||
|
|
||||||
// 判定是否为安全库存机器人
|
|
||||||
boolean isSafetyRobot = false;
|
|
||||||
String safetyKey = dingTalkProperties.getSafetyStockAppKey();
|
|
||||||
if (currentRobotCode != null) {
|
|
||||||
if (currentRobotCode.equals(SAFETY_STOCK_ROBOT_CODE)) {
|
|
||||||
isSafetyRobot = true;
|
|
||||||
} else if (currentRobotCode.equals(safetyKey)) {
|
|
||||||
isSafetyRobot = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isSafetyRobot) {
|
|
||||||
// 优先使用配置的 Key/Secret
|
|
||||||
if (safetyKey != null && !safetyKey.isEmpty()) {
|
|
||||||
currentAppKey = safetyKey;
|
|
||||||
} else {
|
|
||||||
currentAppKey = SAFETY_STOCK_ROBOT_CODE;
|
|
||||||
}
|
|
||||||
currentAppSecret = dingTalkProperties.getSafetyStockAppSecret();
|
|
||||||
}
|
|
||||||
|
|
||||||
return DingUtil.getAccessToken(currentAppKey, currentAppSecret);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -11,30 +11,10 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.dingtalk.api.response.OapiV2UserGetResponse;
|
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/ding/talk")
|
@RequestMapping("/ding/talk")
|
||||||
public class DingTalkController {
|
public class DingTalkController {
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询用户详情
|
|
||||||
*/
|
|
||||||
@GetMapping("/getUserDetail")
|
|
||||||
public R<OapiV2UserGetResponse.UserGetResponse> getUserDetail(String userid) {
|
|
||||||
String appKey = "dingebfrpzqko25vo8w6";
|
|
||||||
String appSecret = "M_hoza71hmEqsbbeXM-7MBg67EINqi9C6mKj4zWKQysXN-68GCYYc5DZoV0hXVvk";
|
|
||||||
|
|
||||||
// 获取 AccessToken
|
|
||||||
String accessToken = DingUtil.getAccessToken(appKey, appSecret);
|
|
||||||
|
|
||||||
// 调用查询用户详情接口
|
|
||||||
OapiV2UserGetResponse.UserGetResponse userDetail = DingUtil.getUserDetail(accessToken, userid);
|
|
||||||
|
|
||||||
return R.ok(userDetail);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取参数配置列表
|
* 获取参数配置列表
|
||||||
*/
|
*/
|
||||||
@ -63,13 +43,9 @@ public class DingTalkController {
|
|||||||
String appKey = "dingebfrpzqko25vo8w6";
|
String appKey = "dingebfrpzqko25vo8w6";
|
||||||
String appSecret = "M_hoza71hmEqsbbeXM-7MBg67EINqi9C6mKj4zWKQysXN-68GCYYc5DZoV0hXVvk";
|
String appSecret = "M_hoza71hmEqsbbeXM-7MBg67EINqi9C6mKj4zWKQysXN-68GCYYc5DZoV0hXVvk";
|
||||||
String robotCode = "dingebfrpzqko25vo8w6";
|
String robotCode = "dingebfrpzqko25vo8w6";
|
||||||
String openConversationId = "ciddXVuhDM6kJZPJ3o+RcOBqQ==";
|
String openConversationId = "cidCzwPP4a1xhnl9c8hrGXFuw==";
|
||||||
//项目推送的模板id
|
String cardTemplateId = "2b7bd7ab-0a20-43f2-902c-71198a8dd6a1.schema";
|
||||||
//String cardTemplateId = "2b7bd7ab-0a20-43f2-902c-71198a8dd6a1.schema";
|
|
||||||
//审批模板id
|
|
||||||
String cardTemplateId = "58244f90-b92d-4ab9-b619-8e83cef67d0c.schema";
|
|
||||||
|
|
||||||
String callBackKey = "update_route_status";
|
|
||||||
// 获取 AccessToken
|
// 获取 AccessToken
|
||||||
String accessToken = DingUtil.getAccessToken(appKey, appSecret);
|
String accessToken = DingUtil.getAccessToken(appKey, appSecret);
|
||||||
|
|
||||||
@ -77,13 +53,6 @@ public class DingTalkController {
|
|||||||
String outTrackId = "group-card-" + System.currentTimeMillis();
|
String outTrackId = "group-card-" + System.currentTimeMillis();
|
||||||
|
|
||||||
// 构造卡片数据
|
// 构造卡片数据
|
||||||
// 2. 填充卡片变量 (对应截图里的普通变量)
|
|
||||||
/* Map<String, String> cardDataMap = new java.util.HashMap<>();
|
|
||||||
cardDataMap.put("title", "刘凯提交的工艺审核");
|
|
||||||
cardDataMap.put("pro_number", "FB-026-01-23");
|
|
||||||
cardDataMap.put("createTime", "2023-10-10 10:10:10");
|
|
||||||
cardDataMap.put("status", "待审批");
|
|
||||||
cardDataMap.put("lastMessage", "请尽快处理");*/
|
|
||||||
Map<String, String> cardDataMap = new HashMap<>();
|
Map<String, String> cardDataMap = new HashMap<>();
|
||||||
cardDataMap.put("drawing_time", "2026/1/13 11:03");
|
cardDataMap.put("drawing_time", "2026/1/13 11:03");
|
||||||
cardDataMap.put("production_order_no", "CP-026-054-023");
|
cardDataMap.put("production_order_no", "CP-026-054-023");
|
||||||
@ -104,8 +73,7 @@ public class DingTalkController {
|
|||||||
robotCode,
|
robotCode,
|
||||||
openConversationId,
|
openConversationId,
|
||||||
outTrackId,
|
outTrackId,
|
||||||
cardDataMap,
|
cardDataMap
|
||||||
callBackKey
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return R.ok("发送卡片成功", trackId);
|
return R.ok("发送卡片成功", trackId);
|
||||||
|
|||||||
@ -1,303 +1,293 @@
|
|||||||
# 项目相关配置
|
# 项目相关配置
|
||||||
ruoyi:
|
ruoyi:
|
||||||
# 名称
|
# 名称
|
||||||
name: RuoYi-Vue-Plus
|
name: RuoYi-Vue-Plus
|
||||||
# 版本
|
# 版本
|
||||||
version: ${ruoyi-vue-plus.version}
|
version: ${ruoyi-vue-plus.version}
|
||||||
# 版权年份
|
# 版权年份
|
||||||
copyrightYear: 2022
|
copyrightYear: 2022
|
||||||
# 实例演示开关
|
# 实例演示开关
|
||||||
demoEnabled: true
|
demoEnabled: true
|
||||||
# 获取ip地址开关
|
# 获取ip地址开关
|
||||||
addressEnabled: true
|
addressEnabled: true
|
||||||
# 缓存懒加载
|
# 缓存懒加载
|
||||||
cacheLazy: false
|
cacheLazy: false
|
||||||
captcha:
|
captcha:
|
||||||
# 页面 <参数设置> 可开启关闭 验证码校验
|
# 页面 <参数设置> 可开启关闭 验证码校验
|
||||||
# 验证码类型 math 数组计算 char 字符验证
|
# 验证码类型 math 数组计算 char 字符验证
|
||||||
type: MATH
|
type: MATH
|
||||||
# line 线段干扰 circle 圆圈干扰 shear 扭曲干扰
|
# line 线段干扰 circle 圆圈干扰 shear 扭曲干扰
|
||||||
category: CIRCLE
|
category: CIRCLE
|
||||||
# 数字验证码位数
|
# 数字验证码位数
|
||||||
numberLength: 1
|
numberLength: 1
|
||||||
# 字符验证码长度
|
# 字符验证码长度
|
||||||
charLength: 4
|
charLength: 4
|
||||||
|
|
||||||
# 开发环境配置
|
# 开发环境配置
|
||||||
server:
|
server:
|
||||||
# 服务器的HTTP端口,默认为8080
|
# 服务器的HTTP端口,默认为8080
|
||||||
port: 8033
|
port: 8033
|
||||||
servlet:
|
servlet:
|
||||||
# 应用的访问路径
|
# 应用的访问路径
|
||||||
context-path: /
|
context-path: /
|
||||||
undertow:
|
undertow:
|
||||||
# HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的
|
# HTTP post内容的最大大小。当值为-1时,默认值为大小是无限的
|
||||||
max-http-post-size: -1
|
max-http-post-size: -1
|
||||||
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
|
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
|
||||||
# 每块buffer的空间大小,越小的空间被利用越充分
|
# 每块buffer的空间大小,越小的空间被利用越充分
|
||||||
buffer-size: 512
|
buffer-size: 512
|
||||||
# 是否分配的直接内存
|
# 是否分配的直接内存
|
||||||
direct-buffers: true
|
direct-buffers: true
|
||||||
threads:
|
threads:
|
||||||
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
|
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
|
||||||
io: 8
|
io: 8
|
||||||
# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
|
# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
|
||||||
worker: 256
|
worker: 256
|
||||||
|
|
||||||
# 日志配置
|
# 日志配置
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
com.ruoyi: debug
|
com.ruoyi: debug
|
||||||
org.springframework: warn
|
org.springframework: warn
|
||||||
config: classpath:logback-plus.xml
|
config: classpath:logback-plus.xml
|
||||||
|
|
||||||
# 用户配置
|
# 用户配置
|
||||||
user:
|
user:
|
||||||
password:
|
password:
|
||||||
# 密码最大错误次数
|
# 密码最大错误次数
|
||||||
maxRetryCount: 5
|
maxRetryCount: 5
|
||||||
# 密码锁定时间(默认10分钟)
|
# 密码锁定时间(默认10分钟)
|
||||||
lockTime: 10
|
lockTime: 10
|
||||||
|
|
||||||
# Spring配置
|
# Spring配置
|
||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: ${ruoyi.name}
|
name: ${ruoyi.name}
|
||||||
http:
|
http:
|
||||||
connect-timeout: 10000
|
connect-timeout: 10000
|
||||||
read-timeout: 20000
|
read-timeout: 20000
|
||||||
# 资源信息
|
# 资源信息
|
||||||
messages:
|
messages:
|
||||||
# 国际化资源文件路径
|
# 国际化资源文件路径
|
||||||
basename: i18n/messages
|
basename: i18n/messages
|
||||||
profiles:
|
profiles:
|
||||||
active: '@profiles.active@'
|
active: '@profiles.active@'
|
||||||
# 文件上传
|
# 文件上传
|
||||||
servlet:
|
servlet:
|
||||||
multipart:
|
multipart:
|
||||||
# 单个文件大小
|
# 单个文件大小
|
||||||
max-file-size: 50MB
|
max-file-size: 50MB
|
||||||
# 设置总上传的文件大小
|
# 设置总上传的文件大小
|
||||||
max-request-size: 50MB
|
max-request-size: 50MB
|
||||||
# 服务模块
|
# 服务模块
|
||||||
devtools:
|
devtools:
|
||||||
restart:
|
restart:
|
||||||
# 热部署开关
|
# 热部署开关
|
||||||
enabled: true
|
enabled: true
|
||||||
mvc:
|
mvc:
|
||||||
format:
|
format:
|
||||||
date-time: yyyy-MM-dd HH:mm:ss
|
date-time: yyyy-MM-dd HH:mm:ss
|
||||||
jackson:
|
jackson:
|
||||||
# 日期格式化
|
# 日期格式化
|
||||||
date-format: yyyy-MM-dd HH:mm:ss
|
date-format: yyyy-MM-dd HH:mm:ss
|
||||||
serialization:
|
serialization:
|
||||||
# 格式化输出
|
# 格式化输出
|
||||||
indent_output: false
|
indent_output: false
|
||||||
# 忽略无法转换的对象
|
# 忽略无法转换的对象
|
||||||
fail_on_empty_beans: false
|
fail_on_empty_beans: false
|
||||||
deserialization:
|
deserialization:
|
||||||
# 允许对象忽略json中不存在的属性
|
# 允许对象忽略json中不存在的属性
|
||||||
fail_on_unknown_properties: false
|
fail_on_unknown_properties: false
|
||||||
|
|
||||||
# Sa-Token配置
|
# Sa-Token配置
|
||||||
sa-token:
|
sa-token:
|
||||||
# token名称 (同时也是cookie名称)
|
# token名称 (同时也是cookie名称)
|
||||||
token-name: Authorization
|
token-name: Authorization
|
||||||
# token有效期 设为一天 (必定过期) 单位: 秒
|
# token有效期 设为一天 (必定过期) 单位: 秒
|
||||||
timeout: 986400
|
timeout: 986400
|
||||||
# token临时有效期 (指定时间无操作就过期) 单位: 秒
|
# token临时有效期 (指定时间无操作就过期) 单位: 秒
|
||||||
activity-timeout: 99999
|
activity-timeout: 99999
|
||||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
||||||
is-concurrent: true
|
is-concurrent: true
|
||||||
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
||||||
is-share: false
|
is-share: false
|
||||||
# 是否尝试从header里读取token
|
# 是否尝试从header里读取token
|
||||||
is-read-header: true
|
is-read-header: true
|
||||||
# 是否尝试从cookie里读取token
|
# 是否尝试从cookie里读取token
|
||||||
is-read-cookie: false
|
is-read-cookie: false
|
||||||
# token前缀
|
# token前缀
|
||||||
token-prefix: "Bearer"
|
token-prefix: "Bearer"
|
||||||
# jwt秘钥
|
# jwt秘钥
|
||||||
jwt-secret-key: abcdefghijklmnopqrstuvwxyz
|
jwt-secret-key: abcdefghijklmnopqrstuvwxyz
|
||||||
|
|
||||||
# security配置
|
# security配置
|
||||||
security:
|
security:
|
||||||
# 排除路径
|
# 排除路径
|
||||||
excludes:
|
excludes:
|
||||||
# 静态资源
|
# 静态资源
|
||||||
- /*.html
|
- /*.html
|
||||||
- /**/*.html
|
- /**/*.html
|
||||||
- /**/*.css
|
- /**/*.css
|
||||||
- /**/*.js
|
- /**/*.js
|
||||||
# 公共路径
|
# 公共路径
|
||||||
- /favicon.ico
|
- /favicon.ico
|
||||||
- /error
|
- /error
|
||||||
# swagger 文档配置
|
# swagger 文档配置
|
||||||
- /*/api-docs
|
- /*/api-docs
|
||||||
- /*/api-docs/**
|
- /*/api-docs/**
|
||||||
# actuator 监控配置
|
# actuator 监控配置
|
||||||
- /actuator
|
- /actuator
|
||||||
- /actuator/**
|
- /actuator/**
|
||||||
- /index/list
|
- /index/list
|
||||||
- /index/inventory
|
- /index/inventory
|
||||||
- /index/JDList
|
- /index/JDList
|
||||||
- /jmreport/**
|
- /jmreport/**
|
||||||
- /system/procedure/**
|
- /system/procedure/**
|
||||||
- /system/dict/data/type/**
|
- /system/dict/data/type/**
|
||||||
- /system/proPlan/expiryProjects
|
- /system/proPlan/expiryProjects
|
||||||
- /system/proPlan/overdue
|
- /system/proPlan/overdue
|
||||||
- /system/proPlan/list2
|
- /system/proPlan/list2
|
||||||
- /system/mrp/**
|
- /system/mrp/**
|
||||||
- /system/orderPro/**
|
- /system/orderPro/**
|
||||||
- /system/cost/**
|
- /system/cost/**
|
||||||
- /ding/callback/**
|
|
||||||
|
# MyBatisPlus配置
|
||||||
# MyBatisPlus配置
|
# https://baomidou.com/config/
|
||||||
# https://baomidou.com/config/
|
mybatis-plus:
|
||||||
mybatis-plus:
|
mapperPath: # 不支持多包, 如有需要可在注解配置 或 提升扫包等级
|
||||||
mapperPath: # 不支持多包, 如有需要可在注解配置 或 提升扫包等级
|
# 例如 com.**.**.mapper
|
||||||
# 例如 com.**.**.mapper
|
mapperPackage: com.ruoyi.**.mapper
|
||||||
mapperPackage: com.ruoyi.**.mapper
|
# 对应的 XML 文件位置
|
||||||
# 对应的 XML 文件位置
|
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
# 实体扫描,多个package用逗号或者分号分隔
|
||||||
# 实体扫描,多个package用逗号或者分号分隔
|
typeAliasesPackage: com.ruoyi.**.domain
|
||||||
typeAliasesPackage: com.ruoyi.**.domain
|
# 启动时是否检查 MyBatis XML 文件的存在,默认不检查
|
||||||
# 启动时是否检查 MyBatis XML 文件的存在,默认不检查
|
checkConfigLocation: false
|
||||||
checkConfigLocation: false
|
configuration:
|
||||||
configuration:
|
# 自动驼峰命名规则(camel case)映射
|
||||||
# 自动驼峰命名规则(camel case)映射
|
mapUnderscoreToCamelCase: true
|
||||||
mapUnderscoreToCamelCase: true
|
# MyBatis 自动映射策略
|
||||||
# MyBatis 自动映射策略
|
# NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射
|
||||||
# NONE:不启用 PARTIAL:只对非嵌套 resultMap 自动映射 FULL:对所有 resultMap 自动映射
|
autoMappingBehavior: PARTIAL
|
||||||
autoMappingBehavior: PARTIAL
|
# MyBatis 自动映射时未知列或未知属性处理策
|
||||||
# MyBatis 自动映射时未知列或未知属性处理策
|
# NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息
|
||||||
# NONE:不做处理 WARNING:打印相关警告 FAILING:抛出异常和详细信息
|
autoMappingUnknownColumnBehavior: NONE
|
||||||
autoMappingUnknownColumnBehavior: NONE
|
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
|
||||||
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
|
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
|
||||||
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
|
#默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
|
||||||
#默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
|
#logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
|
||||||
#logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl
|
logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl
|
||||||
logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl
|
global-config:
|
||||||
global-config:
|
# 是否打印 Logo banner
|
||||||
# 是否打印 Logo banner
|
banner: true
|
||||||
banner: true
|
dbConfig:
|
||||||
dbConfig:
|
# 主键类型
|
||||||
# 主键类型
|
# AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
|
||||||
# AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
|
idType: ASSIGN_ID
|
||||||
idType: ASSIGN_ID
|
# 逻辑已删除值
|
||||||
# 逻辑已删除值
|
logicDeleteValue: 2
|
||||||
logicDeleteValue: 2
|
# 逻辑未删除值
|
||||||
# 逻辑未删除值
|
logicNotDeleteValue: 0
|
||||||
logicNotDeleteValue: 0
|
# 字段验证策略之 insert,在 insert 的时候的字段验证策略
|
||||||
# 字段验证策略之 insert,在 insert 的时候的字段验证策略
|
# IGNORED 忽略 NOT_NULL 非NULL NOT_EMPTY 非空 DEFAULT 默认 NEVER 不加入 SQL
|
||||||
# IGNORED 忽略 NOT_NULL 非NULL NOT_EMPTY 非空 DEFAULT 默认 NEVER 不加入 SQL
|
insertStrategy: NOT_NULL
|
||||||
insertStrategy: NOT_NULL
|
# 字段验证策略之 update,在 update 的时候的字段验证策略
|
||||||
# 字段验证策略之 update,在 update 的时候的字段验证策略
|
updateStrategy: NOT_NULL
|
||||||
updateStrategy: NOT_NULL
|
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
|
||||||
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
|
where-strategy: NOT_NULL
|
||||||
where-strategy: NOT_NULL
|
|
||||||
|
# 数据加密
|
||||||
# 数据加密
|
mybatis-encryptor:
|
||||||
mybatis-encryptor:
|
# 是否开启加密
|
||||||
# 是否开启加密
|
enable: false
|
||||||
enable: false
|
# 默认加密算法
|
||||||
# 默认加密算法
|
algorithm: BASE64
|
||||||
algorithm: BASE64
|
# 编码方式 BASE64/HEX。默认BASE64
|
||||||
# 编码方式 BASE64/HEX。默认BASE64
|
encode: BASE64
|
||||||
encode: BASE64
|
# 安全秘钥 对称算法的秘钥 如:AES,SM4
|
||||||
# 安全秘钥 对称算法的秘钥 如:AES,SM4
|
password:
|
||||||
password:
|
# 公私钥 非对称算法的公私钥 如:SM2,RSA
|
||||||
# 公私钥 非对称算法的公私钥 如:SM2,RSA
|
publicKey:
|
||||||
publicKey:
|
privateKey:
|
||||||
privateKey:
|
|
||||||
|
# Swagger配置
|
||||||
# Swagger配置
|
swagger:
|
||||||
swagger:
|
info:
|
||||||
info:
|
# 标题
|
||||||
# 标题
|
title: '标题:EVO-TECH后台管理系统_接口文档'
|
||||||
title: '标题:EVO-TECH后台管理系统_接口文档'
|
# 描述
|
||||||
# 描述
|
description: '描述:用于管理物料相关信息,具体包括XXX,XXX模块...'
|
||||||
description: '描述:用于管理物料相关信息,具体包括XXX,XXX模块...'
|
# 版本
|
||||||
# 版本
|
version: '版本号: ${ruoyi-vue-plus.version}'
|
||||||
version: '版本号: ${ruoyi-vue-plus.version}'
|
# 作者信息
|
||||||
# 作者信息
|
contact:
|
||||||
contact:
|
name: 田志阳
|
||||||
name: 田志阳
|
email: 1042411602@qq.com
|
||||||
email: 1042411602@qq.com
|
url: https://gitee.com/dromara/RuoYi-Vue-Plus
|
||||||
url: https://gitee.com/dromara/RuoYi-Vue-Plus
|
components:
|
||||||
components:
|
# 鉴权方式配置
|
||||||
# 鉴权方式配置
|
security-schemes:
|
||||||
security-schemes:
|
apiKey:
|
||||||
apiKey:
|
type: APIKEY
|
||||||
type: APIKEY
|
in: HEADER
|
||||||
in: HEADER
|
name: ${sa-token.token-name}
|
||||||
name: ${sa-token.token-name}
|
|
||||||
|
springdoc:
|
||||||
springdoc:
|
api-docs:
|
||||||
api-docs:
|
# 是否开启接口文档
|
||||||
# 是否开启接口文档
|
enabled: true
|
||||||
enabled: true
|
swagger-ui:
|
||||||
swagger-ui:
|
# 持久化认证数据
|
||||||
# 持久化认证数据
|
persistAuthorization: true
|
||||||
persistAuthorization: true
|
#这里定义了两个分组,可定义多个,也可以不定义
|
||||||
#这里定义了两个分组,可定义多个,也可以不定义
|
group-configs:
|
||||||
group-configs:
|
- group: 1.演示模块
|
||||||
- group: 1.演示模块
|
packages-to-scan: com.ruoyi.demo
|
||||||
packages-to-scan: com.ruoyi.demo
|
- group: 2.系统模块
|
||||||
- group: 2.系统模块
|
packages-to-scan: com.ruoyi.web
|
||||||
packages-to-scan: com.ruoyi.web
|
- group: 3.代码生成模块
|
||||||
- group: 3.代码生成模块
|
packages-to-scan: com.ruoyi.generator
|
||||||
packages-to-scan: com.ruoyi.generator
|
- group: 4.业务模块
|
||||||
- group: 4.业务模块
|
packages-to-scan: com.ruoyi.system
|
||||||
packages-to-scan: com.ruoyi.system
|
- group: 5.定时任务
|
||||||
- group: 5.定时任务
|
packages-to-scan: com.ruoyi.job
|
||||||
packages-to-scan: com.ruoyi.job
|
- group: 6.对象存储
|
||||||
- group: 6.对象存储
|
packages-to-scan: com.ruoyi.oss
|
||||||
packages-to-scan: com.ruoyi.oss
|
# 防止XSS攻击
|
||||||
# 防止XSS攻击
|
xss:
|
||||||
xss:
|
# 过滤开关
|
||||||
# 过滤开关
|
enabled: true
|
||||||
enabled: true
|
# 排除链接(多个用逗号分隔)
|
||||||
# 排除链接(多个用逗号分隔)
|
excludes: /system/notice
|
||||||
excludes: /system/notice
|
# 匹配链接
|
||||||
# 匹配链接
|
urlPatterns: /system/*,/monitor/*,/tool/*
|
||||||
urlPatterns: /system/*,/monitor/*,/tool/*
|
|
||||||
|
# 全局线程池相关配置
|
||||||
# 全局线程池相关配置
|
thread-pool:
|
||||||
thread-pool:
|
# 是否开启线程池
|
||||||
# 是否开启线程池
|
enabled: false
|
||||||
enabled: false
|
# 队列最大长度
|
||||||
# 队列最大长度
|
queueCapacity: 128
|
||||||
queueCapacity: 128
|
# 线程池维护线程所允许的空闲时间
|
||||||
# 线程池维护线程所允许的空闲时间
|
keepAliveSeconds: 300
|
||||||
keepAliveSeconds: 300
|
|
||||||
|
--- # 分布式锁 lock4j 全局配置
|
||||||
--- # 分布式锁 lock4j 全局配置
|
lock4j:
|
||||||
lock4j:
|
# 获取分布式锁超时时间,默认为 3000 毫秒
|
||||||
# 获取分布式锁超时时间,默认为 3000 毫秒
|
acquire-timeout: 3000
|
||||||
acquire-timeout: 3000
|
# 分布式锁的超时时间,默认为 30 秒
|
||||||
# 分布式锁的超时时间,默认为 30 秒
|
expire: 30000
|
||||||
expire: 30000
|
|
||||||
|
--- # Actuator 监控端点的配置项
|
||||||
--- # Actuator 监控端点的配置项
|
management:
|
||||||
management:
|
endpoints:
|
||||||
endpoints:
|
web:
|
||||||
web:
|
exposure:
|
||||||
exposure:
|
include: '*'
|
||||||
include: '*'
|
endpoint:
|
||||||
endpoint:
|
health:
|
||||||
health:
|
show-details: ALWAYS
|
||||||
show-details: ALWAYS
|
logfile:
|
||||||
logfile:
|
external-file: ./logs/sys-console.log
|
||||||
external-file: ./logs/sys-console.log
|
dingtalk:
|
||||||
dingtalk:
|
|
||||||
app-key: dingebfrpzqko25vo8w6
|
|
||||||
app-secret: M_hoza71hmEqsbbeXM-7MBg67EINqi9C6mKj4zWKQysXN-68GCYYc5DZoV0hXVvk
|
|
||||||
robot-code: dingebfrpzqko25vo8w6
|
|
||||||
safety-stock-app-key: dingwoaeaozawfochwoo
|
|
||||||
safety-stock-app-secret: rGrAQ7cReWeYzIK5j71l8d2qOLgUTyc-qnlacQcl3n0dKG3M8bgbbaSoc9AbKeUy
|
|
||||||
safety-stock-agent-id: 35823003
|
|
||||||
open-conversation-id: ciddXVuhDM6kJZPJ3o+RcOBqQ==
|
|
||||||
project-card-template-id: 2b7bd7ab-0a20-43f2-902c-71198a8dd6a1.schema
|
|
||||||
route-card-template-id: 58244f90-b92d-4ab9-b619-8e83cef67d0c.schema
|
|
||||||
callback-route-key: update_route_status2
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
#??ID-PROD
|
#??ID-PROD
|
||||||
X-KDApi-AcctID = 698ad0d6c0c3fe
|
X-KDApi-AcctID = 695f86f96090b2
|
||||||
X-KDApi-UserName = Administrator
|
X-KDApi-UserName = Administrator
|
||||||
#??IDID
|
#??IDID
|
||||||
X-KDApi-AppID = 288012_Rc0C0zCG2lga0/Vs2Y4pzYSL6hQcWOko
|
X-KDApi-AppID = 288012_Rc0C0zCG2lga0/Vs2Y4pzYSL6hQcWOko
|
||||||
|
|||||||
@ -278,12 +278,6 @@
|
|||||||
<artifactId>dingtalk</artifactId>
|
<artifactId>dingtalk</artifactId>
|
||||||
<version>2.0.15</version>
|
<version>2.0.15</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.dingtalk.open</groupId>
|
|
||||||
<artifactId>app-stream-client</artifactId>
|
|
||||||
<version>1.3.12</version>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@ -1,64 +0,0 @@
|
|||||||
package com.ruoyi.common.config;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 钉钉配置属性
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@Component
|
|
||||||
@ConfigurationProperties(prefix = "dingtalk")
|
|
||||||
public class DingTalkProperties {
|
|
||||||
/**
|
|
||||||
* 应用 Key
|
|
||||||
*/
|
|
||||||
private String appKey;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 应用 Secret
|
|
||||||
*/
|
|
||||||
private String appSecret;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 机器人 Code
|
|
||||||
*/
|
|
||||||
private String robotCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 安全库存机器人 AppKey
|
|
||||||
*/
|
|
||||||
private String safetyStockAppKey;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 安全库存机器人 AppSecret
|
|
||||||
*/
|
|
||||||
private String safetyStockAppSecret;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 安全库存机器人 AgentId
|
|
||||||
*/
|
|
||||||
private String safetyStockAgentId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 群会话 ID
|
|
||||||
*/
|
|
||||||
private String openConversationId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 项目卡片模板 ID
|
|
||||||
*/
|
|
||||||
private String projectCardTemplateId;
|
|
||||||
/**
|
|
||||||
* 工艺卡片模版id
|
|
||||||
*/
|
|
||||||
private String routeCardTemplateId;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 回调路由 Key
|
|
||||||
*/
|
|
||||||
private String callbackRouteKey;
|
|
||||||
}
|
|
||||||
@ -1,393 +0,0 @@
|
|||||||
package com.ruoyi.common.dingding;
|
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.security.MessageDigest;
|
|
||||||
import java.security.Permission;
|
|
||||||
import java.security.PermissionCollection;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.security.Security;
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
|
||||||
|
|
||||||
public class DingCallbackCrypto {
|
|
||||||
|
|
||||||
private static final Charset CHARSET = StandardCharsets.UTF_8;
|
|
||||||
private static final Base64 base64 = new Base64();
|
|
||||||
private final byte[] aesKey;
|
|
||||||
private final String token;
|
|
||||||
private final String corpId;
|
|
||||||
/**
|
|
||||||
* ask getPaddingBytes key固定长度
|
|
||||||
**/
|
|
||||||
private static final Integer AES_ENCODE_KEY_LENGTH = 43;
|
|
||||||
/**
|
|
||||||
* 加密随机字符串字节长度
|
|
||||||
**/
|
|
||||||
private static final Integer RANDOM_LENGTH = 16;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 构造函数
|
|
||||||
*
|
|
||||||
* @param token 钉钉开放平台上,开发者设置的token
|
|
||||||
* @param encodingAesKey 钉钉开放台上,开发者设置的EncodingAESKey
|
|
||||||
* @param corpId 企业自建应用-事件订阅, 使用appKey
|
|
||||||
* 企业自建应用-注册回调地址, 使用corpId
|
|
||||||
* 第三方企业应用, 使用suiteKey
|
|
||||||
*
|
|
||||||
* @throws DingTalkEncryptException 执行失败,请查看该异常的错误码和具体的错误信息
|
|
||||||
*/
|
|
||||||
public DingCallbackCrypto(String token, String encodingAesKey, String corpId) throws DingTalkEncryptException {
|
|
||||||
if (null == encodingAesKey || encodingAesKey.length() != AES_ENCODE_KEY_LENGTH) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.AES_KEY_ILLEGAL);
|
|
||||||
}
|
|
||||||
this.token = token;
|
|
||||||
this.corpId = corpId;
|
|
||||||
aesKey = Base64.decodeBase64(encodingAesKey + "=");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getEncryptedMap(String plaintext) throws DingTalkEncryptException {
|
|
||||||
return getEncryptedMap(plaintext, System.currentTimeMillis(), Utils.getRandomStr(16));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 将和钉钉开放平台同步的消息体加密,返回加密Map
|
|
||||||
*
|
|
||||||
* @param plaintext 传递的消息体明文
|
|
||||||
* @param timeStamp 时间戳
|
|
||||||
* @param nonce 随机字符串
|
|
||||||
* @return
|
|
||||||
* @throws DingTalkEncryptException
|
|
||||||
*/
|
|
||||||
public Map<String, String> getEncryptedMap(String plaintext, Long timeStamp, String nonce)
|
|
||||||
throws DingTalkEncryptException {
|
|
||||||
if (null == plaintext) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.ENCRYPTION_PLAINTEXT_ILLEGAL);
|
|
||||||
}
|
|
||||||
if (null == timeStamp) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.ENCRYPTION_TIMESTAMP_ILLEGAL);
|
|
||||||
}
|
|
||||||
if (null == nonce) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.ENCRYPTION_NONCE_ILLEGAL);
|
|
||||||
}
|
|
||||||
// 加密
|
|
||||||
String encrypt = encrypt(Utils.getRandomStr(RANDOM_LENGTH), plaintext);
|
|
||||||
String signature = getSignature(token, String.valueOf(timeStamp), nonce, encrypt);
|
|
||||||
Map<String, String> resultMap = new HashMap<String, String>();
|
|
||||||
resultMap.put("msg_signature", signature);
|
|
||||||
resultMap.put("encrypt", encrypt);
|
|
||||||
resultMap.put("timeStamp", String.valueOf(timeStamp));
|
|
||||||
resultMap.put("nonce", nonce);
|
|
||||||
return resultMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 密文解密
|
|
||||||
*
|
|
||||||
* @param msgSignature 签名串
|
|
||||||
* @param timeStamp 时间戳
|
|
||||||
* @param nonce 随机串
|
|
||||||
* @param encryptMsg 密文
|
|
||||||
* @return 解密后的原文
|
|
||||||
* @throws DingTalkEncryptException
|
|
||||||
*/
|
|
||||||
public String getDecryptMsg(String msgSignature, String timeStamp, String nonce, String encryptMsg)
|
|
||||||
throws DingTalkEncryptException {
|
|
||||||
//校验签名
|
|
||||||
String signature = getSignature(token, timeStamp, nonce, encryptMsg);
|
|
||||||
if (!signature.equals(msgSignature)) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.COMPUTE_SIGNATURE_ERROR);
|
|
||||||
}
|
|
||||||
// 解密
|
|
||||||
String result = decrypt(encryptMsg);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 对明文加密.
|
|
||||||
* @param text 需要加密的明文
|
|
||||||
* @return 加密后base64编码的字符串
|
|
||||||
*/
|
|
||||||
private String encrypt(String random, String plaintext) throws DingTalkEncryptException {
|
|
||||||
try {
|
|
||||||
byte[] randomBytes = random.getBytes(CHARSET);
|
|
||||||
byte[] plainTextBytes = plaintext.getBytes(CHARSET);
|
|
||||||
byte[] lengthByte = Utils.int2Bytes(plainTextBytes.length);
|
|
||||||
byte[] corpidBytes = corpId.getBytes(CHARSET);
|
|
||||||
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
|
|
||||||
byteStream.write(randomBytes);
|
|
||||||
byteStream.write(lengthByte);
|
|
||||||
byteStream.write(plainTextBytes);
|
|
||||||
byteStream.write(corpidBytes);
|
|
||||||
byte[] padBytes = PKCS7Padding.getPaddingBytes(byteStream.size());
|
|
||||||
byteStream.write(padBytes);
|
|
||||||
byte[] unencrypted = byteStream.toByteArray();
|
|
||||||
byteStream.close();
|
|
||||||
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
|
|
||||||
SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
|
|
||||||
IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
|
|
||||||
cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv);
|
|
||||||
byte[] encrypted = cipher.doFinal(unencrypted);
|
|
||||||
String result = base64.encodeToString(encrypted);
|
|
||||||
return result;
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.COMPUTE_ENCRYPT_TEXT_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 对密文进行解密.
|
|
||||||
* @param text 需要解密的密文
|
|
||||||
* @return 解密得到的明文
|
|
||||||
*/
|
|
||||||
private String decrypt(String text) throws DingTalkEncryptException {
|
|
||||||
byte[] originalArr;
|
|
||||||
try {
|
|
||||||
// 设置解密模式为AES的CBC模式
|
|
||||||
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
|
|
||||||
SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
|
|
||||||
IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16));
|
|
||||||
cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
|
|
||||||
// 使用BASE64对密文进行解码
|
|
||||||
byte[] encrypted = Base64.decodeBase64(text);
|
|
||||||
// 解密
|
|
||||||
originalArr = cipher.doFinal(encrypted);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.COMPUTE_DECRYPT_TEXT_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
String plainText;
|
|
||||||
String fromCorpid;
|
|
||||||
try {
|
|
||||||
// 去除补位字符
|
|
||||||
byte[] bytes = PKCS7Padding.removePaddingBytes(originalArr);
|
|
||||||
// 分离16位随机字符串,网络字节序和corpId
|
|
||||||
byte[] networkOrder = Arrays.copyOfRange(bytes, 16, 20);
|
|
||||||
int plainTextLegth = Utils.bytes2int(networkOrder);
|
|
||||||
plainText = new String(Arrays.copyOfRange(bytes, 20, 20 + plainTextLegth), CHARSET);
|
|
||||||
fromCorpid = new String(Arrays.copyOfRange(bytes, 20 + plainTextLegth, bytes.length), CHARSET);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.COMPUTE_DECRYPT_TEXT_LENGTH_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// corpid不相同的情况
|
|
||||||
if (!fromCorpid.equals(corpId)) {
|
|
||||||
System.out.println("DingCallbackCrypto 校验失败: 传入的 corpId=" + corpId + ", 解密得到的 fromCorpid=" + fromCorpid);
|
|
||||||
// 暂时注释掉抛出异常,以便调试,或者您根据控制台输出修正配置
|
|
||||||
// throw new DingTalkEncryptException(DingTalkEncryptException.COMPUTE_DECRYPT_TEXT_CORPID_ERROR);
|
|
||||||
}
|
|
||||||
return plainText;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 数字签名
|
|
||||||
*
|
|
||||||
* @param token isv token
|
|
||||||
* @param timestamp 时间戳
|
|
||||||
* @param nonce 随机串
|
|
||||||
* @param encrypt 加密文本
|
|
||||||
* @return
|
|
||||||
* @throws DingTalkEncryptException
|
|
||||||
*/
|
|
||||||
public String getSignature(String token, String timestamp, String nonce, String encrypt)
|
|
||||||
throws DingTalkEncryptException {
|
|
||||||
try {
|
|
||||||
String[] array = new String[] {token, timestamp, nonce, encrypt};
|
|
||||||
Arrays.sort(array);
|
|
||||||
System.out.println(JSON.toJSONString(array));
|
|
||||||
StringBuffer sb = new StringBuffer();
|
|
||||||
for (int i = 0; i < 4; i++) {
|
|
||||||
sb.append(array[i]);
|
|
||||||
}
|
|
||||||
String str = sb.toString();
|
|
||||||
System.out.println(str);
|
|
||||||
MessageDigest md = MessageDigest.getInstance("SHA-1");
|
|
||||||
md.update(str.getBytes());
|
|
||||||
byte[] digest = md.digest();
|
|
||||||
|
|
||||||
StringBuffer hexstr = new StringBuffer();
|
|
||||||
String shaHex = "";
|
|
||||||
for (int i = 0; i < digest.length; i++) {
|
|
||||||
shaHex = Integer.toHexString(digest[i] & 0xFF);
|
|
||||||
if (shaHex.length() < 2) {
|
|
||||||
hexstr.append(0);
|
|
||||||
}
|
|
||||||
hexstr.append(shaHex);
|
|
||||||
}
|
|
||||||
return hexstr.toString();
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new DingTalkEncryptException(DingTalkEncryptException.COMPUTE_SIGNATURE_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Utils {
|
|
||||||
public Utils() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getRandomStr(int count) {
|
|
||||||
String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
||||||
Random random = new Random();
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
|
|
||||||
for (int i = 0; i < count; ++i) {
|
|
||||||
int number = random.nextInt(base.length());
|
|
||||||
sb.append(base.charAt(number));
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] int2Bytes(int count) {
|
|
||||||
return new byte[] {(byte)(count >> 24 & 255), (byte)(count >> 16 & 255), (byte)(count >> 8 & 255),
|
|
||||||
(byte)(count & 255)};
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int bytes2int(byte[] byteArr) {
|
|
||||||
int count = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < 4; ++i) {
|
|
||||||
count <<= 8;
|
|
||||||
count |= byteArr[i] & 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class PKCS7Padding {
|
|
||||||
private static final Charset CHARSET = StandardCharsets.UTF_8;
|
|
||||||
private static final int BLOCK_SIZE = 32;
|
|
||||||
|
|
||||||
public PKCS7Padding() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] getPaddingBytes(int count) {
|
|
||||||
int amountToPad = 32 - count % 32;
|
|
||||||
if (amountToPad == 0) {
|
|
||||||
amountToPad = 32;
|
|
||||||
}
|
|
||||||
|
|
||||||
char padChr = chr(amountToPad);
|
|
||||||
String tmp = new String();
|
|
||||||
|
|
||||||
for (int index = 0; index < amountToPad; ++index) {
|
|
||||||
tmp = tmp + padChr;
|
|
||||||
}
|
|
||||||
|
|
||||||
return tmp.getBytes(CHARSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] removePaddingBytes(byte[] decrypted) {
|
|
||||||
int pad = decrypted[decrypted.length - 1];
|
|
||||||
if (pad < 1 || pad > 32) {
|
|
||||||
pad = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static char chr(int a) {
|
|
||||||
byte target = (byte)(a & 255);
|
|
||||||
return (char)target;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
public static class DingTalkEncryptException extends Exception {
|
|
||||||
public static final int SUCCESS = 0;
|
|
||||||
public static final int ENCRYPTION_PLAINTEXT_ILLEGAL = 900001;
|
|
||||||
public static final int ENCRYPTION_TIMESTAMP_ILLEGAL = 900002;
|
|
||||||
public static final int ENCRYPTION_NONCE_ILLEGAL = 900003;
|
|
||||||
public static final int AES_KEY_ILLEGAL = 900004;
|
|
||||||
public static final int SIGNATURE_NOT_MATCH = 900005;
|
|
||||||
public static final int COMPUTE_SIGNATURE_ERROR = 900006;
|
|
||||||
public static final int COMPUTE_ENCRYPT_TEXT_ERROR = 900007;
|
|
||||||
public static final int COMPUTE_DECRYPT_TEXT_ERROR = 900008;
|
|
||||||
public static final int COMPUTE_DECRYPT_TEXT_LENGTH_ERROR = 900009;
|
|
||||||
public static final int COMPUTE_DECRYPT_TEXT_CORPID_ERROR = 900010;
|
|
||||||
private static Map<Integer, String> msgMap = new HashMap();
|
|
||||||
private Integer code;
|
|
||||||
|
|
||||||
static {
|
|
||||||
msgMap.put(0, "成功");
|
|
||||||
msgMap.put(900001, "加密明文文本非法");
|
|
||||||
msgMap.put(900002, "加密时间戳参数非法");
|
|
||||||
msgMap.put(900003, "加密随机字符串参数非法");
|
|
||||||
msgMap.put(900005, "签名不匹配");
|
|
||||||
msgMap.put(900006, "签名计算失败");
|
|
||||||
msgMap.put(900004, "不合法的aes key");
|
|
||||||
msgMap.put(900007, "计算加密文字错误");
|
|
||||||
msgMap.put(900008, "计算解密文字错误");
|
|
||||||
msgMap.put(900009, "计算解密文字长度不匹配");
|
|
||||||
msgMap.put(900010, "计算解密文字corpid不匹配");
|
|
||||||
}
|
|
||||||
|
|
||||||
public DingTalkEncryptException(Integer exceptionCode) {
|
|
||||||
super((String)msgMap.get(exceptionCode));
|
|
||||||
this.code = exceptionCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
Security.setProperty("crypto.policy", "limited");
|
|
||||||
RemoveCryptographyRestrictions();
|
|
||||||
} catch (Exception var1) {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
private static void RemoveCryptographyRestrictions() throws Exception {
|
|
||||||
Class<?> jceSecurity = getClazz("javax.crypto.JceSecurity");
|
|
||||||
Class<?> cryptoPermissions = getClazz("javax.crypto.CryptoPermissions");
|
|
||||||
Class<?> cryptoAllPermission = getClazz("javax.crypto.CryptoAllPermission");
|
|
||||||
if (jceSecurity != null) {
|
|
||||||
setFinalStaticValue(jceSecurity, "isRestricted", false);
|
|
||||||
PermissionCollection defaultPolicy = (PermissionCollection)getFieldValue(jceSecurity, "defaultPolicy", (Object)null, PermissionCollection.class);
|
|
||||||
if (cryptoPermissions != null) {
|
|
||||||
Map<?, ?> map = (Map)getFieldValue(cryptoPermissions, "perms", defaultPolicy, Map.class);
|
|
||||||
map.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cryptoAllPermission != null) {
|
|
||||||
Permission permission = (Permission)getFieldValue(cryptoAllPermission, "INSTANCE", (Object)null, Permission.class);
|
|
||||||
defaultPolicy.add(permission);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
private static Class<?> getClazz(String className) {
|
|
||||||
Class clazz = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
clazz = Class.forName(className);
|
|
||||||
} catch (Exception var3) {
|
|
||||||
}
|
|
||||||
|
|
||||||
return clazz;
|
|
||||||
}
|
|
||||||
private static void setFinalStaticValue(Class<?> srcClazz, String fieldName, Object newValue) throws Exception {
|
|
||||||
Field field = srcClazz.getDeclaredField(fieldName);
|
|
||||||
field.setAccessible(true);
|
|
||||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
|
||||||
modifiersField.setAccessible(true);
|
|
||||||
modifiersField.setInt(field, field.getModifiers() & -17);
|
|
||||||
field.set((Object)null, newValue);
|
|
||||||
}
|
|
||||||
private static <T> T getFieldValue(Class<?> srcClazz, String fieldName, Object owner, Class<T> dstClazz) throws Exception {
|
|
||||||
Field field = srcClazz.getDeclaredField(fieldName);
|
|
||||||
field.setAccessible(true);
|
|
||||||
return dstClazz.cast(field.get(owner));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,85 +0,0 @@
|
|||||||
package com.ruoyi.common.dingding;
|
|
||||||
|
|
||||||
import com.dingtalk.open.app.api.OpenDingTalkStreamClientBuilder;
|
|
||||||
import com.dingtalk.open.app.api.security.AuthClientCredential;
|
|
||||||
import com.dingtalk.open.app.api.GenericEventListener;
|
|
||||||
import com.dingtalk.open.app.api.message.GenericOpenDingTalkEvent;
|
|
||||||
import com.dingtalk.open.app.stream.protocol.event.EventAckStatus;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import shade.com.alibaba.fastjson2.JSONObject;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 钉钉 Stream 模式事件推送服务
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class DingTalkStreamService {
|
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(DingTalkStreamService.class);
|
|
||||||
|
|
||||||
// 钉钉应用的 AppKey
|
|
||||||
private static final String CLIENT_ID = "dingebfrpzqko25vo8w6";
|
|
||||||
// 钉钉应用的 AppSecret
|
|
||||||
private static final String CLIENT_SECRET = "M_hoza71hmEqsbbeXM-7MBg67EINqi9C6mKj4zWKQysXN-68GCYYc5DZoV0hXVvk";
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void init() {
|
|
||||||
// 在单独线程中启动,防止阻塞 Spring 主线程
|
|
||||||
new Thread(() -> {
|
|
||||||
try {
|
|
||||||
log.info("--------------------------------------------------");
|
|
||||||
log.info("正在启动钉钉 Stream 模式事件推送服务...");
|
|
||||||
log.info("ClientId: {}", CLIENT_ID);
|
|
||||||
|
|
||||||
OpenDingTalkStreamClientBuilder
|
|
||||||
.custom()
|
|
||||||
.credential(new AuthClientCredential(CLIENT_ID, CLIENT_SECRET))
|
|
||||||
//注册事件监听
|
|
||||||
.registerAllEventListener(new GenericEventListener() {
|
|
||||||
public EventAckStatus onEvent(GenericOpenDingTalkEvent event) {
|
|
||||||
try {
|
|
||||||
//事件唯一Id
|
|
||||||
String eventId = event.getEventId();
|
|
||||||
//事件类型
|
|
||||||
String eventType = event.getEventType();
|
|
||||||
//事件产生时间
|
|
||||||
Long bornTime = event.getEventBornTime();
|
|
||||||
//获取事件体
|
|
||||||
JSONObject bizData = event.getData();
|
|
||||||
|
|
||||||
// 详细日志推送
|
|
||||||
log.info("【钉钉Stream事件】收到事件推送");
|
|
||||||
log.info("EventId: {}", eventId);
|
|
||||||
log.info("EventType: {}", eventType);
|
|
||||||
log.info("BornTime: {}", bornTime);
|
|
||||||
log.info("BizData: {}", bizData != null ? bizData.toString() : "null");
|
|
||||||
|
|
||||||
//处理事件
|
|
||||||
process(bizData);
|
|
||||||
//消费成功
|
|
||||||
return EventAckStatus.SUCCESS;
|
|
||||||
} catch (Exception e) {
|
|
||||||
//消费失败
|
|
||||||
return EventAckStatus.LATER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.build().start();
|
|
||||||
log.info("钉钉 Stream 模式服务启动成功");
|
|
||||||
log.info("--------------------------------------------------");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("钉钉 Stream 模式服务启动失败", e);
|
|
||||||
}
|
|
||||||
}).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void process(JSONObject bizData) {
|
|
||||||
// TODO: 根据业务需求处理事件数据
|
|
||||||
if (bizData != null) {
|
|
||||||
log.debug("开始处理业务数据: {}", bizData.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,29 +1,35 @@
|
|||||||
package com.ruoyi.common.dingding;
|
package com.ruoyi.common.dingding;
|
||||||
|
|
||||||
import com.aliyun.dingtalkcard_1_0.models.*;
|
|
||||||
import com.aliyun.dingtalkim_1_0.models.SendInteractiveCardHeaders;
|
import com.aliyun.dingtalkim_1_0.models.SendInteractiveCardHeaders;
|
||||||
import com.aliyun.dingtalkim_1_0.models.SendInteractiveCardRequest;
|
import com.aliyun.dingtalkim_1_0.models.SendInteractiveCardRequest;
|
||||||
|
import com.aliyun.dingtalkim_1_0.models.SendInteractiveCardResponse;
|
||||||
|
import com.aliyun.dingtalkim_1_0.Client;
|
||||||
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
|
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
|
||||||
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
|
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
|
||||||
import com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendHeaders;
|
import com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendHeaders;
|
||||||
import com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendRequest;
|
import com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendRequest;
|
||||||
import com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendResponse;
|
import com.aliyun.dingtalkrobot_1_0.models.OrgGroupSendResponse;
|
||||||
import com.aliyun.teautil.Common;
|
import com.aliyun.tea.TeaConverter;
|
||||||
|
import com.aliyun.tea.TeaPair;
|
||||||
|
import com.aliyun.teaopenapi.models.Config;
|
||||||
import com.dingtalk.api.DefaultDingTalkClient;
|
import com.dingtalk.api.DefaultDingTalkClient;
|
||||||
import com.dingtalk.api.DingTalkClient;
|
import com.dingtalk.api.DingTalkClient;
|
||||||
import com.dingtalk.api.request.*;
|
import com.dingtalk.api.request.OapiChatCreateRequest;
|
||||||
import com.dingtalk.api.response.OapiChatCreateResponse;
|
import com.dingtalk.api.response.OapiChatCreateResponse;
|
||||||
|
import com.dingtalk.api.request.OapiMediaUploadRequest;
|
||||||
import com.dingtalk.api.response.OapiMediaUploadResponse;
|
import com.dingtalk.api.response.OapiMediaUploadResponse;
|
||||||
|
import com.dingtalk.api.request.OapiRobotSendRequest;
|
||||||
import com.dingtalk.api.response.OapiRobotSendResponse;
|
import com.dingtalk.api.response.OapiRobotSendResponse;
|
||||||
import com.dingtalk.api.response.OapiV2UserGetResponse;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
|
||||||
import javax.crypto.Mac;
|
import javax.crypto.Mac;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -31,86 +37,16 @@ import java.util.Map;
|
|||||||
public class DingUtil {
|
public class DingUtil {
|
||||||
public static final String CUSTOM_ROBOT_TOKEN = "1f3711d72605f77e8ba8e3e3fe0d98989361a7bfb9c30b51a23520eeb783652e";
|
public static final String CUSTOM_ROBOT_TOKEN = "1f3711d72605f77e8ba8e3e3fe0d98989361a7bfb9c30b51a23520eeb783652e";
|
||||||
|
|
||||||
//信息提醒机器人
|
public static final String USER_ID = "4345285524672471";
|
||||||
|
|
||||||
public static final String SECRET = "SECae018c965ccba100318cc2cd5ef7df2e7a3d0379cf96ef39614fd9558209f18c";
|
public static final String SECRET = "SECae018c965ccba100318cc2cd5ef7df2e7a3d0379cf96ef39614fd9558209f18c";
|
||||||
|
|
||||||
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||||
// 固定模板和群 ID
|
// 固定模板和群 ID
|
||||||
private static final String CARD_TEMPLATE_ID = "2b7bd7ab-0a20-43f2-902c-71198a8dd6a1.schema";
|
private static final String CARD_TEMPLATE_ID = "2b7bd7ab-0a20-43f2-902c-71198a8dd6a1.schema";
|
||||||
private static final String OPEN_CONVERSATION_ID = "cidCzwPP4a1xhnl9c8hrGXFuw==";
|
private static final String OPEN_CONVERSATION_ID = "cidCzwPP4a1xhnl9c8hrGXFuw==";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送企业机器人群文本消息并@人 (Open API)
|
* 发送钉钉文本消息
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param robotCode 机器人编码
|
|
||||||
* @param openConversationId 群ID
|
|
||||||
* @param content 文本内容
|
|
||||||
* @param atUserIds 需要@的用户ID列表
|
|
||||||
* @return processQueryKey
|
|
||||||
*/
|
|
||||||
public static String sendOrgGroupText(String accessToken, String robotCode, String openConversationId, String content, List<String> atUserIds) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> msgParamMap = new HashMap<>();
|
|
||||||
msgParamMap.put("content", content);
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
msgParamMap.put("atUserIds", atUserIds);
|
|
||||||
}
|
|
||||||
return robotGroupSend(accessToken, msgParamMap, "sampleText", openConversationId, robotCode, null);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送企业机器人文本消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送企业机器人群Markdown消息 (Open API)
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param robotCode 机器人编码
|
|
||||||
* @param openConversationId 群ID
|
|
||||||
* @param title 标题
|
|
||||||
* @param text Markdown内容
|
|
||||||
* @return processQueryKey
|
|
||||||
*/
|
|
||||||
public static String sendOrgGroupMarkdown(String accessToken, String robotCode, String openConversationId, String title, String text) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> msgParamMap = new HashMap<>();
|
|
||||||
msgParamMap.put("title", title);
|
|
||||||
msgParamMap.put("text", text);
|
|
||||||
return robotGroupSend(accessToken, msgParamMap, "sampleMarkdown", openConversationId, robotCode, null);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送企业机器人Markdown消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送企业机器人群文件消息 (Open API)
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param robotCode 机器人编码
|
|
||||||
* @param openConversationId 群ID
|
|
||||||
* @param mediaId 文件媒体ID (通过 uploadMedia 接口获取)
|
|
||||||
* @param fileName 文件名
|
|
||||||
* @param fileType 文件类型 (如 xlsx, pdf)
|
|
||||||
* @return processQueryKey
|
|
||||||
*/
|
|
||||||
public static String sendOrgGroupFile(String accessToken, String robotCode, String openConversationId, String mediaId, String fileName, String fileType) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> msgParamMap = new HashMap<>();
|
|
||||||
msgParamMap.put("mediaId", mediaId);
|
|
||||||
msgParamMap.put("fileName", fileName);
|
|
||||||
msgParamMap.put("fileType", fileType);
|
|
||||||
return robotGroupSend(accessToken, msgParamMap, "sampleFile", openConversationId, robotCode, null);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送企业机器人文件消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送钉钉信息提醒专用文本消息
|
|
||||||
*
|
*
|
||||||
* @param content 消息内容
|
* @param content 消息内容
|
||||||
* @param atUserIds 需要@的用户ID列表(可选,传null则不@特定人)
|
* @param atUserIds 需要@的用户ID列表(可选,传null则不@特定人)
|
||||||
@ -135,6 +71,7 @@ public class DingUtil {
|
|||||||
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
|
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
|
||||||
text.setContent(content);
|
text.setContent(content);
|
||||||
req.setText(text);
|
req.setText(text);
|
||||||
|
|
||||||
// 定义 @ 对象
|
// 定义 @ 对象
|
||||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
if (atUserIds != null && !atUserIds.isEmpty()) {
|
||||||
@ -153,178 +90,8 @@ public class DingUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送 Webhook 文本消息 (支持自定义 Token 和 @)
|
|
||||||
*
|
|
||||||
* @param webhookToken Webhook Access Token
|
|
||||||
* @param content 消息内容
|
|
||||||
* @param atUserIds 需要@的用户ID列表
|
|
||||||
* @param isAtAll 是否@所有人
|
|
||||||
*/
|
|
||||||
public static void sendWebhookText(String webhookToken, String content, List<String> atUserIds, boolean isAtAll) {
|
|
||||||
try {
|
|
||||||
Long timestamp = System.currentTimeMillis();
|
|
||||||
String stringToSign = timestamp + "\n" + SECRET;
|
|
||||||
Mac mac = Mac.getInstance("HmacSHA256");
|
|
||||||
mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256"));
|
|
||||||
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
|
||||||
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
|
|
||||||
|
|
||||||
// 构造 Webhook URL
|
|
||||||
String serverUrl = "https://oapi.dingtalk.com/robot/send?access_token=" + webhookToken + "&sign=" + sign + "×tamp=" + timestamp;
|
|
||||||
|
|
||||||
DingTalkClient client = new DefaultDingTalkClient(serverUrl);
|
|
||||||
OapiRobotSendRequest req = new OapiRobotSendRequest();
|
|
||||||
req.setMsgtype("text");
|
|
||||||
|
|
||||||
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
|
|
||||||
text.setContent(content);
|
|
||||||
req.setText(text);
|
|
||||||
|
|
||||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
at.setAtUserIds(atUserIds);
|
|
||||||
}
|
|
||||||
if (isAtAll) {
|
|
||||||
at.setIsAtAll(true);
|
|
||||||
}
|
|
||||||
req.setAt(at);
|
|
||||||
|
|
||||||
OapiRobotSendResponse rsp = client.execute(req);
|
|
||||||
System.out.println("DingTalk Webhook Response: " + rsp.getBody());
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送 Webhook 消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送Markdown消息
|
|
||||||
*
|
|
||||||
* @param title 标题
|
|
||||||
* @param text Markdown内容
|
|
||||||
* @param atUserIds 需要@的用户ID列表(可选)
|
|
||||||
* @param isAtAll 是否@所有人
|
|
||||||
*/
|
|
||||||
public static void sendMarkdown(String title, String text, List<String> atUserIds, boolean isAtAll) {
|
|
||||||
try {
|
|
||||||
Long timestamp = System.currentTimeMillis();
|
|
||||||
String stringToSign = timestamp + "\n" + SECRET;
|
|
||||||
Mac mac = Mac.getInstance("HmacSHA256");
|
|
||||||
mac.init(new SecretKeySpec(SECRET.getBytes("UTF-8"), "HmacSHA256"));
|
|
||||||
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
|
|
||||||
String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
|
|
||||||
String serverUrl = "https://oapi.dingtalk.com/robot/send?sign=" + sign + "×tamp=" + timestamp;
|
|
||||||
|
|
||||||
DingTalkClient client = new DefaultDingTalkClient(serverUrl);
|
|
||||||
OapiRobotSendRequest req = new OapiRobotSendRequest();
|
|
||||||
req.setMsgtype("markdown");
|
|
||||||
|
|
||||||
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
|
|
||||||
markdown.setTitle(title);
|
|
||||||
markdown.setText(text);
|
|
||||||
req.setMarkdown(markdown);
|
|
||||||
|
|
||||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
at.setAtUserIds(atUserIds);
|
|
||||||
}
|
|
||||||
if (isAtAll) {
|
|
||||||
at.setIsAtAll(true);
|
|
||||||
}
|
|
||||||
req.setAt(at);
|
|
||||||
|
|
||||||
OapiRobotSendResponse rsp = client.execute(req, CUSTOM_ROBOT_TOKEN);
|
|
||||||
System.out.println("DingTalk Markdown Response: " + rsp.getBody());
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送钉钉Markdown消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过SessionWebhook发送消息(企业机器人回复)
|
|
||||||
*
|
|
||||||
* @param sessionWebhook 回调中的sessionWebhook
|
|
||||||
* @param content 消息内容
|
|
||||||
* @param atUserIds 需要@的用户ID列表
|
|
||||||
*/
|
|
||||||
public static void sendSessionText(String sessionWebhook, String content, List<String> atUserIds) {
|
|
||||||
sendSessionText(sessionWebhook, content, atUserIds, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过SessionWebhook发送消息(企业机器人回复)
|
|
||||||
*
|
|
||||||
* @param sessionWebhook 回调中的sessionWebhook
|
|
||||||
* @param content 消息内容
|
|
||||||
* @param atUserIds 需要@的用户ID列表
|
|
||||||
* @param atMobiles 需要@的手机号列表
|
|
||||||
*/
|
|
||||||
public static void sendSessionText(String sessionWebhook, String content, List<String> atUserIds, List<String> atMobiles) {
|
|
||||||
try {
|
|
||||||
DingTalkClient client = new DefaultDingTalkClient(sessionWebhook);
|
|
||||||
OapiRobotSendRequest req = new OapiRobotSendRequest();
|
|
||||||
req.setMsgtype("text");
|
|
||||||
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
|
|
||||||
text.setContent(content);
|
|
||||||
req.setText(text);
|
|
||||||
|
|
||||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
at.setAtUserIds(atUserIds);
|
|
||||||
}
|
|
||||||
if (atMobiles != null && !atMobiles.isEmpty()) {
|
|
||||||
at.setAtMobiles(atMobiles);
|
|
||||||
}
|
|
||||||
if ((atUserIds != null && !atUserIds.isEmpty()) || (atMobiles != null && !atMobiles.isEmpty())) {
|
|
||||||
at.setIsAtAll(false);
|
|
||||||
}
|
|
||||||
req.setAt(at);
|
|
||||||
client.execute(req);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送Session消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过SessionWebhook发送Markdown消息
|
|
||||||
*
|
|
||||||
* @param sessionWebhook 回调中的sessionWebhook
|
|
||||||
* @param title 标题
|
|
||||||
* @param text Markdown内容
|
|
||||||
* @param atUserIds 需要@的用户ID列表
|
|
||||||
*/
|
|
||||||
public static void sendSessionMarkdown(String sessionWebhook, String title, String text, List<String> atUserIds) {
|
|
||||||
try {
|
|
||||||
DingTalkClient client = new DefaultDingTalkClient(sessionWebhook);
|
|
||||||
OapiRobotSendRequest req = new OapiRobotSendRequest();
|
|
||||||
req.setMsgtype("markdown");
|
|
||||||
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
|
|
||||||
markdown.setTitle(title);
|
|
||||||
markdown.setText(text);
|
|
||||||
req.setMarkdown(markdown);
|
|
||||||
|
|
||||||
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
at.setAtUserIds(atUserIds);
|
|
||||||
at.setIsAtAll(false);
|
|
||||||
}
|
|
||||||
req.setAt(at);
|
|
||||||
|
|
||||||
client.execute(req);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送Session Markdown消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用 Token 初始化账号Client (IM)
|
* 使用 Token 初始化账号Client (IM)
|
||||||
*
|
|
||||||
* @return Client
|
* @return Client
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@ -337,7 +104,6 @@ public class DingUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用 Token 初始化账号Client (OAuth2)
|
* 使用 Token 初始化账号Client (OAuth2)
|
||||||
*
|
|
||||||
* @return Client
|
* @return Client
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@ -348,62 +114,8 @@ public class DingUtil {
|
|||||||
return new com.aliyun.dingtalkoauth2_1_0.Client(config);
|
return new com.aliyun.dingtalkoauth2_1_0.Client(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 使用 Token 初始化账号Client (Card)
|
|
||||||
*
|
|
||||||
* @return Client
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static com.aliyun.dingtalkcard_1_0.Client createCardClient() throws Exception {
|
|
||||||
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
|
|
||||||
config.protocol = "https";
|
|
||||||
config.regionId = "central";
|
|
||||||
return new com.aliyun.dingtalkcard_1_0.Client(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 注册卡片回调地址
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param callbackRouteKey 回调路由 Key
|
|
||||||
* @param callbackUrl 回调 URL
|
|
||||||
* @param apiSecret 签名密钥 (可选)
|
|
||||||
*/
|
|
||||||
public static void registerCallback(String accessToken, String callbackRouteKey, String callbackUrl, String apiSecret) {
|
|
||||||
try {
|
|
||||||
com.aliyun.dingtalkcard_1_0.Client client = createCardClient();
|
|
||||||
RegisterCallbackHeaders registerCallbackHeaders = new RegisterCallbackHeaders();
|
|
||||||
registerCallbackHeaders.xAcsDingtalkAccessToken = accessToken;
|
|
||||||
|
|
||||||
RegisterCallbackRequest registerCallbackRequest = new RegisterCallbackRequest()
|
|
||||||
.setCallbackRouteKey(callbackRouteKey)
|
|
||||||
.setCallbackUrl(callbackUrl)
|
|
||||||
.setForceUpdate(true); // 强制更新
|
|
||||||
|
|
||||||
if (apiSecret != null && !apiSecret.isEmpty()) {
|
|
||||||
registerCallbackRequest.setApiSecret(apiSecret);
|
|
||||||
}
|
|
||||||
|
|
||||||
client.registerCallbackWithOptions(registerCallbackRequest, registerCallbackHeaders, new com.aliyun.teautil.models.RuntimeOptions());
|
|
||||||
System.out.println("注册卡片回调地址成功: " + callbackRouteKey + " -> " + callbackUrl);
|
|
||||||
|
|
||||||
} catch (com.aliyun.tea.TeaException err) {
|
|
||||||
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
||||||
System.err.println("TeaException: " + err.code + ", " + err.message);
|
|
||||||
}
|
|
||||||
throw new RuntimeException(err);
|
|
||||||
} catch (Exception _err) {
|
|
||||||
com.aliyun.tea.TeaException err = new com.aliyun.tea.TeaException(_err.getMessage(), _err);
|
|
||||||
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
|
||||||
System.err.println("Exception: " + err.code + ", " + err.message);
|
|
||||||
}
|
|
||||||
throw new RuntimeException(_err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取企业内部应用的accessToken
|
* 获取企业内部应用的accessToken
|
||||||
*
|
|
||||||
* @param appKey
|
* @param appKey
|
||||||
* @param appSecret
|
* @param appSecret
|
||||||
* @return
|
* @return
|
||||||
@ -425,7 +137,7 @@ public class DingUtil {
|
|||||||
|
|
||||||
} catch (Exception _err) {
|
} catch (Exception _err) {
|
||||||
com.aliyun.tea.TeaException err = new com.aliyun.tea.TeaException(_err.getMessage(), _err);
|
com.aliyun.tea.TeaException err = new com.aliyun.tea.TeaException(_err.getMessage(), _err);
|
||||||
if (!Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
|
||||||
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
// err 中含有 code 和 message 属性,可帮助开发定位问题
|
||||||
System.err.println("Exception: " + err.code + ", " + err.message);
|
System.err.println("Exception: " + err.code + ", " + err.message);
|
||||||
}
|
}
|
||||||
@ -433,38 +145,11 @@ public class DingUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询用户详情
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param userid 用户 ID
|
|
||||||
* @return OapiV2UserGetResponse.UserGetResponse
|
|
||||||
*/
|
|
||||||
public static OapiV2UserGetResponse.UserGetResponse getUserDetail(String accessToken, String userid) {
|
|
||||||
String language = "zh_CN";
|
|
||||||
try {
|
|
||||||
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/get");
|
|
||||||
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
|
|
||||||
req.setUserid(userid);
|
|
||||||
req.setLanguage(language);
|
|
||||||
OapiV2UserGetResponse rsp = client.execute(req, accessToken);
|
|
||||||
if (rsp.isSuccess()) {
|
|
||||||
return rsp.getResult();
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException("查询用户详情失败: " + rsp.getErrmsg());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("查询用户详情异常", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传媒体文件
|
* 上传媒体文件
|
||||||
*
|
|
||||||
* @param accessToken
|
* @param accessToken
|
||||||
* @param type 媒体文件类型:image, voice, video, file
|
* @param type 媒体文件类型:image, voice, video, file
|
||||||
* @param filePath 文件路径
|
* @param filePath 文件路径
|
||||||
* @return media_id
|
* @return media_id
|
||||||
*/
|
*/
|
||||||
public static String uploadMedia(String accessToken, String type, String filePath) {
|
public static String uploadMedia(String accessToken, String type, String filePath) {
|
||||||
@ -486,47 +171,12 @@ public class DingUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新互动卡片 (IM 1.0)
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param outTrackId 外部跟踪 ID (创建卡片时生成的唯一ID)
|
|
||||||
* @param cardDataMap 需要更新的卡片数据 (key-value)
|
|
||||||
*/
|
|
||||||
public static void updateInteractiveCard(String accessToken, String outTrackId, Map<String, String> cardDataMap) {
|
|
||||||
try {
|
|
||||||
com.aliyun.dingtalkcard_1_0.Client client = createCardClient();
|
|
||||||
|
|
||||||
UpdateCardHeaders updateCardHeaders = new UpdateCardHeaders();
|
|
||||||
updateCardHeaders.xAcsDingtalkAccessToken = accessToken;
|
|
||||||
|
|
||||||
UpdateCardRequest.UpdateCardRequestCardData cardData = new UpdateCardRequest.UpdateCardRequestCardData()
|
|
||||||
.setCardParamMap(cardDataMap);
|
|
||||||
|
|
||||||
UpdateCardRequest.UpdateCardRequestCardUpdateOptions cardUpdateOptions = new UpdateCardRequest.UpdateCardRequestCardUpdateOptions()
|
|
||||||
.setUpdateCardDataByKey(true)
|
|
||||||
.setUpdatePrivateDataByKey(false);
|
|
||||||
|
|
||||||
UpdateCardRequest updateCardRequest = new UpdateCardRequest()
|
|
||||||
.setOutTrackId(outTrackId)
|
|
||||||
.setCardData(cardData)
|
|
||||||
.setCardUpdateOptions(cardUpdateOptions);
|
|
||||||
|
|
||||||
client.updateCardWithOptions(updateCardRequest, updateCardHeaders, new com.aliyun.teautil.models.RuntimeOptions());
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("更新钉钉互动卡片失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建群聊
|
* 创建群聊
|
||||||
*
|
|
||||||
* @param accessToken
|
* @param accessToken
|
||||||
* @param name 群名称
|
* @param name 群名称
|
||||||
* @param owner 群主userid
|
* @param owner 群主userid
|
||||||
* @param userIdList 群成员userid列表
|
* @param userIdList 群成员userid列表
|
||||||
* @return DingChatCreateResult
|
* @return DingChatCreateResult
|
||||||
*/
|
*/
|
||||||
public static DingChatCreateResult createChat(String accessToken, String name, String owner, List<String> userIdList) {
|
public static DingChatCreateResult createChat(String accessToken, String name, String owner, List<String> userIdList) {
|
||||||
@ -575,16 +225,21 @@ public class DingUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 机器人发送群聊消息(支持 Map 直接传入)
|
* 机器人发送群聊消息(支持 Map 直接传入)
|
||||||
*
|
* @param accessToken AccessToken
|
||||||
* @param accessToken AccessToken
|
* @param msgContent 消息内容 Map
|
||||||
* @param msgContent 消息内容 Map
|
* @param msgKey 消息模板 Key
|
||||||
* @param msgKey 消息模板 Key
|
|
||||||
* @param openConversationId 群 ID
|
* @param openConversationId 群 ID
|
||||||
* @param robotCode 机器人 Code
|
* @param robotCode 机器人 Code
|
||||||
* @param coolAppCode 酷应用 Code (可选)
|
* @param coolAppCode 酷应用 Code (可选)
|
||||||
* @return processQueryKey
|
* @return processQueryKey
|
||||||
*/
|
*/
|
||||||
public static String robotGroupSend(String accessToken, Map<String, Object> msgContent, String msgKey, String openConversationId, String robotCode, String coolAppCode) {
|
public static String robotGroupSend(
|
||||||
|
String accessToken,
|
||||||
|
Map<String, Object> msgContent,
|
||||||
|
String msgKey,
|
||||||
|
String openConversationId,
|
||||||
|
String robotCode,
|
||||||
|
String coolAppCode) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 1. 初始化 SDK 客户端
|
// 1. 初始化 SDK 客户端
|
||||||
@ -630,88 +285,18 @@ public class DingUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送互动消息卡片 (群聊)
|
* 发送互动消息卡片 (IM 1.0)
|
||||||
*
|
* @param accessToken AccessToken
|
||||||
* @param accessToken AccessToken
|
* @param cardTemplateId 卡片模板 ID
|
||||||
* @param cardTemplateId 卡片模板 ID
|
* @param robotCode 机器人 Code
|
||||||
* @param robotCode 机器人 Code
|
* @param openConversationId 群 ID (可选,如果发送到群)
|
||||||
* @param openConversationId 群 ID
|
* @param outTrackId 外部跟踪 ID
|
||||||
* @param outTrackId 外部跟踪 ID
|
* @param cardDataMap 卡片数据 Map (key-value)
|
||||||
* @param cardDataMap 卡片数据 Map (key-value)
|
|
||||||
* @param callbackRouteKey 回调路由 Key
|
|
||||||
* @return outTrackId
|
* @return outTrackId
|
||||||
*/
|
*/
|
||||||
public static String createAndDeliverCard(String accessToken, String cardTemplateId, String robotCode,
|
public static String createAndDeliverCard(String accessToken, String cardTemplateId, String robotCode,
|
||||||
String openConversationId, String outTrackId, Map<String, String> cardDataMap, String callbackRouteKey) {
|
String openConversationId, String outTrackId,
|
||||||
return createAndDeliverCardInternal(accessToken, cardTemplateId, robotCode, 1, openConversationId, null, outTrackId, cardDataMap, callbackRouteKey);
|
Map<String, String> cardDataMap) {
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送互动消息卡片 (单聊) - 使用 SDK 接口 CreateAndDeliver (循环单发)
|
|
||||||
* 注意:由于当前 SDK 版本 (dingtalk-2.0.15) 的 CreateAndDeliverRequestImRobotOpenDeliverModel
|
|
||||||
* 缺少 setRobotCode 和 setRecipients 方法,无法使用批量发送功能。
|
|
||||||
* 因此回退到循环单发模式,这是当前环境下唯一可用的方案。
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param cardTemplateId 卡片模板 ID
|
|
||||||
* @param robotCode 机器人 Code
|
|
||||||
* @param receiverUserIdList 接收人 ID 列表
|
|
||||||
* @param outTrackId 外部跟踪 ID
|
|
||||||
* @param cardDataMap 卡片数据 Map (key-value)
|
|
||||||
* @param callbackRouteKey 回调路由 Key
|
|
||||||
* @return outTrackId (原样返回)
|
|
||||||
*/
|
|
||||||
public static String createAndDeliverCardToUser(String accessToken, String cardTemplateId, List<String> receiverUserIdList,
|
|
||||||
String outTrackId, Map<String, String> cardDataMap, String callbackRouteKey) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
com.aliyun.dingtalkcard_1_0.Client client = createCardClient();
|
|
||||||
CreateAndDeliverHeaders headers = new CreateAndDeliverHeaders();
|
|
||||||
headers.xAcsDingtalkAccessToken = accessToken;
|
|
||||||
|
|
||||||
for (String userId : receiverUserIdList) {
|
|
||||||
try {
|
|
||||||
CreateAndDeliverRequest.CreateAndDeliverRequestCardData cardData = new CreateAndDeliverRequest.CreateAndDeliverRequestCardData().setCardParamMap(cardDataMap);
|
|
||||||
CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenSpaceModel spaceModel = new CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenSpaceModel().setSupportForward(true);
|
|
||||||
CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenDeliverModel deliverModel = new CreateAndDeliverRequest.CreateAndDeliverRequestImRobotOpenDeliverModel().setSpaceType("IM_ROBOT");
|
|
||||||
CreateAndDeliverRequest request = new CreateAndDeliverRequest()
|
|
||||||
.setUserIdType(1) // 1 = userid
|
|
||||||
.setCardTemplateId(cardTemplateId)
|
|
||||||
.setOutTrackId(outTrackId + "_" + userId) // 确保每个请求的 outTrackId 唯一
|
|
||||||
.setCallbackRouteKey(callbackRouteKey)
|
|
||||||
.setCardData(cardData)
|
|
||||||
.setOpenSpaceId("dtv1.card//IM_ROBOT." + userId) // 指向单个用户的机器人空间
|
|
||||||
.setImRobotOpenSpaceModel(spaceModel)
|
|
||||||
.setImRobotOpenDeliverModel(deliverModel);
|
|
||||||
|
|
||||||
client.createAndDeliverWithOptions(
|
|
||||||
request,
|
|
||||||
headers,
|
|
||||||
new com.aliyun.teautil.models.RuntimeOptions()
|
|
||||||
);
|
|
||||||
System.out.println("发送互动卡片给用户 " + userId + " 成功");
|
|
||||||
} catch (com.aliyun.tea.TeaException err) {
|
|
||||||
System.err.println("发送给 " + userId + " 失败 TeaException: " + err.code + " - " + err.message);
|
|
||||||
// 不抛出异常,继续发送给下一个人
|
|
||||||
} catch (Exception e) {
|
|
||||||
System.err.println("发送给 " + userId + " 失败 Exception: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return outTrackId;
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("初始化卡片客户端失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送互动消息卡片 (通用内部方法)
|
|
||||||
*/
|
|
||||||
private static String createAndDeliverCardInternal(String accessToken, String cardTemplateId, String robotCode,
|
|
||||||
Integer conversationType, String openConversationId, List<String> receiverUserIdList,
|
|
||||||
String outTrackId, Map<String, String> cardDataMap, String callbackRouteKey) {
|
|
||||||
try {
|
try {
|
||||||
com.aliyun.dingtalkim_1_0.Client client = createImClient();
|
com.aliyun.dingtalkim_1_0.Client client = createImClient();
|
||||||
|
|
||||||
@ -721,26 +306,23 @@ public class DingUtil {
|
|||||||
SendInteractiveCardRequest.SendInteractiveCardRequestCardOptions cardOptions = new SendInteractiveCardRequest.SendInteractiveCardRequestCardOptions()
|
SendInteractiveCardRequest.SendInteractiveCardRequestCardOptions cardOptions = new SendInteractiveCardRequest.SendInteractiveCardRequestCardOptions()
|
||||||
.setSupportForward(true);
|
.setSupportForward(true);
|
||||||
|
|
||||||
|
// 转换数据为 Tea 格式 Map (虽然直接传 Map<String, String> 也是兼容的,但为了稳妥可以使用 buildMap)
|
||||||
|
// 这里直接使用传入的 cardDataMap
|
||||||
|
|
||||||
SendInteractiveCardRequest.SendInteractiveCardRequestCardData cardData = new SendInteractiveCardRequest.SendInteractiveCardRequestCardData()
|
SendInteractiveCardRequest.SendInteractiveCardRequestCardData cardData = new SendInteractiveCardRequest.SendInteractiveCardRequestCardData()
|
||||||
.setCardParamMap(cardDataMap);
|
.setCardParamMap(cardDataMap);
|
||||||
|
|
||||||
SendInteractiveCardRequest sendInteractiveCardRequest = new SendInteractiveCardRequest()
|
SendInteractiveCardRequest sendInteractiveCardRequest = new SendInteractiveCardRequest()
|
||||||
.setConversationType(conversationType) // 0: 单聊, 1: 群聊
|
.setConversationType(1) // 1: 群聊
|
||||||
.setCardData(cardData)
|
.setCardData(cardData)
|
||||||
.setCardTemplateId(cardTemplateId)
|
.setCardTemplateId(cardTemplateId)
|
||||||
.setCallbackRouteKey(callbackRouteKey)
|
|
||||||
.setUserIdType(1)
|
.setUserIdType(1)
|
||||||
.setOutTrackId(outTrackId)
|
.setOutTrackId(outTrackId)
|
||||||
.setPullStrategy(false)
|
.setPullStrategy(false)
|
||||||
.setRobotCode(robotCode)
|
.setRobotCode(robotCode)
|
||||||
|
.setOpenConversationId(openConversationId)
|
||||||
.setCardOptions(cardOptions);
|
.setCardOptions(cardOptions);
|
||||||
|
|
||||||
if (conversationType == 1) {
|
|
||||||
sendInteractiveCardRequest.setOpenConversationId(openConversationId);
|
|
||||||
} else if (conversationType == 0) {
|
|
||||||
sendInteractiveCardRequest.setReceiverUserIdList(receiverUserIdList);
|
|
||||||
}
|
|
||||||
|
|
||||||
client.sendInteractiveCardWithOptions(sendInteractiveCardRequest, sendInteractiveCardHeaders, new com.aliyun.teautil.models.RuntimeOptions());
|
client.sendInteractiveCardWithOptions(sendInteractiveCardRequest, sendInteractiveCardHeaders, new com.aliyun.teautil.models.RuntimeOptions());
|
||||||
|
|
||||||
return outTrackId;
|
return outTrackId;
|
||||||
@ -785,7 +367,6 @@ public class DingUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送群卡片(高级版)
|
* 推送群卡片(高级版)
|
||||||
*
|
|
||||||
* @param cardParamMap 模板变量映射,例如 production_order_no、bom_count 等
|
* @param cardParamMap 模板变量映射,例如 production_order_no、bom_count 等
|
||||||
* @return outTrackId 返回卡片幂等 ID
|
* @return outTrackId 返回卡片幂等 ID
|
||||||
*/
|
*/
|
||||||
@ -796,16 +377,15 @@ public class DingUtil {
|
|||||||
|
|
||||||
// 生成唯一 outTrackId
|
// 生成唯一 outTrackId
|
||||||
String outTrackId = "track-" + System.currentTimeMillis();
|
String outTrackId = "track-" + System.currentTimeMillis();
|
||||||
//回调地址key
|
|
||||||
String callbackRoute = "update_route_status";
|
// 调用已写好的 createAndDeliverCard 方法
|
||||||
return createAndDeliverCard(
|
return createAndDeliverCard(
|
||||||
accessToken,
|
accessToken,
|
||||||
CARD_TEMPLATE_ID,
|
CARD_TEMPLATE_ID,
|
||||||
CUSTOM_ROBOT_TOKEN, // 这里的 robotCode 可能需要根据实际情况调整
|
CUSTOM_ROBOT_TOKEN, // 这里的 robotCode 可能需要根据实际情况调整
|
||||||
OPEN_CONVERSATION_ID,
|
OPEN_CONVERSATION_ID,
|
||||||
outTrackId,
|
outTrackId,
|
||||||
cardParamMap,
|
cardParamMap
|
||||||
callbackRoute
|
|
||||||
);
|
);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -813,125 +393,9 @@ public class DingUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 测试发送
|
// 测试发送
|
||||||
sendText("测试消息:刘开~~~,刘开~~~刘开~~~刘开~~~刘开~~~", Arrays.asList("231347190326067997"), false);
|
sendText("测试消息:刘开~~~,刘开~~~刘开~~~刘开~~~刘开~~~", Arrays.asList(USER_ID), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送工作通知消息 (异步)
|
|
||||||
* 对应接口:https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param agentId 应用AgentID
|
|
||||||
* @param userIdList 接收者的userid列表,最大用户列表长度100
|
|
||||||
* @param deptIdList 接收者的部门id列表,最大列表长度20
|
|
||||||
* @param toAllUser 是否发送给企业全部用户
|
|
||||||
* @param msg 消息内容对象
|
|
||||||
* @return taskId 异步发送任务ID
|
|
||||||
*/
|
|
||||||
public static Long asyncSendCorpMessage(String accessToken, Long agentId, String userIdList, String deptIdList, boolean toAllUser, OapiMessageCorpconversationAsyncsendV2Request.Msg msg) {
|
|
||||||
try {
|
|
||||||
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
|
|
||||||
com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request req = new com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request();
|
|
||||||
req.setAgentId(agentId);
|
|
||||||
req.setUseridList(userIdList);
|
|
||||||
req.setDeptIdList(deptIdList);
|
|
||||||
req.setToAllUser(toAllUser);
|
|
||||||
req.setMsg(msg);
|
|
||||||
|
|
||||||
com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response rsp = client.execute(req, accessToken);
|
|
||||||
|
|
||||||
if (rsp.isSuccess()) {
|
|
||||||
return rsp.getTaskId();
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException("发送工作通知失败: " + rsp.getErrmsg());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
throw new RuntimeException("发送工作通知异常", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送文本工作通知 (简化版)
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param agentId 应用AgentID
|
|
||||||
* @param userIdList 接收者的userid列表
|
|
||||||
* @param content 文本内容
|
|
||||||
* @return taskId
|
|
||||||
*/
|
|
||||||
public static Long sendCorpText(String accessToken, Long agentId, String userIdList, String content) {
|
|
||||||
com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request.Msg();
|
|
||||||
msg.setMsgtype(MsgType.TEXT);
|
|
||||||
com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request.Text text = new com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request.Text();
|
|
||||||
text.setContent(content);
|
|
||||||
msg.setText(text);
|
|
||||||
return asyncSendCorpMessage(accessToken, agentId, userIdList, null, false, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 钉钉工作通知消息类型
|
|
||||||
*/
|
|
||||||
public static class MsgType {
|
|
||||||
public static final String TEXT = "text";
|
|
||||||
public static final String IMAGE = "image";
|
|
||||||
public static final String VOICE = "voice";
|
|
||||||
public static final String FILE = "file";
|
|
||||||
public static final String LINK = "link";
|
|
||||||
public static final String OA = "oa";
|
|
||||||
public static final String MARKDOWN = "markdown";
|
|
||||||
public static final String ACTION_CARD = "action_card";
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 发送群聊文本并@指定用户(OpenAPI 企业机器人)
|
|
||||||
*
|
|
||||||
* @param accessToken AccessToken
|
|
||||||
* @param robotCode 机器人Code
|
|
||||||
* @param openConversationId 群ID
|
|
||||||
* @param content 原始文本
|
|
||||||
* @param atUserIds 要@的用户ID列表
|
|
||||||
* @return processQueryKey
|
|
||||||
*/
|
|
||||||
public static String sendOrgGroupTextWithAt(String accessToken,
|
|
||||||
String robotCode,
|
|
||||||
String openConversationId,
|
|
||||||
String content,
|
|
||||||
List<String> atUserIds) {
|
|
||||||
try {
|
|
||||||
Map<String, Object> msgParamMap = new HashMap<>();
|
|
||||||
|
|
||||||
// 拼接@提示文本
|
|
||||||
StringBuilder finalContent = new StringBuilder(content);
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
finalContent.append("\n");
|
|
||||||
for (String userId : atUserIds) {
|
|
||||||
finalContent.append("@").append(userId).append(" ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
msgParamMap.put("content", finalContent.toString());
|
|
||||||
|
|
||||||
if (atUserIds != null && !atUserIds.isEmpty()) {
|
|
||||||
msgParamMap.put("atUserIds", atUserIds);
|
|
||||||
}
|
|
||||||
|
|
||||||
return robotGroupSend(
|
|
||||||
accessToken,
|
|
||||||
msgParamMap,
|
|
||||||
"sampleText",
|
|
||||||
openConversationId,
|
|
||||||
robotCode,
|
|
||||||
null
|
|
||||||
);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException("发送群聊@消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,5 +55,4 @@ public enum BusinessType {
|
|||||||
* 清空数据
|
* 清空数据
|
||||||
*/
|
*/
|
||||||
CLEAN,
|
CLEAN,
|
||||||
uploadDwg
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,7 +84,7 @@ public class SmbUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 定位到远程目标子目录
|
// 定位到远程目标子目录
|
||||||
SmbFile remoteDir = new SmbFile("smb://192.168.5.18/2026/" + targetFolder + "/", cifs);
|
SmbFile remoteDir = new SmbFile("smb://192.168.5.18/2025/" + targetFolder + "/", cifs);
|
||||||
|
|
||||||
if (!remoteDir.exists() || !remoteDir.isDirectory()) {
|
if (!remoteDir.exists() || !remoteDir.isDirectory()) {
|
||||||
System.err.println("远程目录不存在或不是一个目录: " + remoteDir.getCanonicalPath());
|
System.err.println("远程目录不存在或不是一个目录: " + remoteDir.getCanonicalPath());
|
||||||
|
|||||||
@ -32,12 +32,10 @@ public class SecurityConfig {
|
|||||||
|
|
||||||
.and().authorizeRequests()
|
.and().authorizeRequests()
|
||||||
.antMatchers("/system/proPlan/**").anonymous()
|
.antMatchers("/system/proPlan/**").anonymous()
|
||||||
.antMatchers("/system/proPlan/summary/designer").anonymous()
|
|
||||||
.antMatchers("/system/mrp/**").anonymous()
|
.antMatchers("/system/mrp/**").anonymous()
|
||||||
.antMatchers("/system/orderPro/**").anonymous()
|
.antMatchers("/system/orderPro/**").anonymous()
|
||||||
.antMatchers("/system/cost/**").anonymous()
|
.antMatchers("/system/cost/**").anonymous()
|
||||||
.antMatchers("/dev-api/system/cost/**").anonymous()
|
.antMatchers("/dev-api/system/cost/**").anonymous()
|
||||||
.antMatchers("/dev-api/ding/callback/**").anonymous()
|
|
||||||
// .antMatchers("/dev-api/system/proPlan/overdue").anonymous()
|
// .antMatchers("/dev-api/system/proPlan/overdue").anonymous()
|
||||||
// .antMatchers("/dev-api/system/proPlan/expiryProjects").anonymous()
|
// .antMatchers("/dev-api/system/proPlan/expiryProjects").anonymous()
|
||||||
.antMatchers("/dev-api/system/material/list/").anonymous()
|
.antMatchers("/dev-api/system/material/list/").anonymous()
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.json.JSONArray;
|
import cn.hutool.json.JSONArray;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
@ -23,10 +22,7 @@ import com.ruoyi.common.core.validate.AddGroup;
|
|||||||
import com.ruoyi.common.core.validate.EditGroup;
|
import com.ruoyi.common.core.validate.EditGroup;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.system.domain.ProcessRoute;
|
|
||||||
import com.ruoyi.system.domain.dto.*;
|
import com.ruoyi.system.domain.dto.*;
|
||||||
import com.ruoyi.common.config.DingTalkProperties;
|
|
||||||
import com.ruoyi.common.dingding.DingUtil;
|
|
||||||
import com.ruoyi.common.utils.JdUtils;
|
import com.ruoyi.common.utils.JdUtils;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.system.domain.BomDetails;
|
import com.ruoyi.system.domain.BomDetails;
|
||||||
@ -37,7 +33,6 @@ import com.ruoyi.system.domain.vo.BomDetailsVo;
|
|||||||
import com.ruoyi.system.domain.vo.ElectricalMaterialBomVO;
|
import com.ruoyi.system.domain.vo.ElectricalMaterialBomVO;
|
||||||
import com.ruoyi.system.mapper.BomDetailsMapper;
|
import com.ruoyi.system.mapper.BomDetailsMapper;
|
||||||
import com.ruoyi.system.mapper.ProcessOrderProMapper;
|
import com.ruoyi.system.mapper.ProcessOrderProMapper;
|
||||||
import com.ruoyi.system.mapper.ProcessRouteMapper;
|
|
||||||
import com.ruoyi.system.runner.JdUtil;
|
import com.ruoyi.system.runner.JdUtil;
|
||||||
import com.ruoyi.system.service.*;
|
import com.ruoyi.system.service.*;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -88,10 +83,6 @@ public class BomDetailsController extends BaseController {
|
|||||||
|
|
||||||
private final BomDetailsMapper bomDetailsMapper;
|
private final BomDetailsMapper bomDetailsMapper;
|
||||||
|
|
||||||
private final ProcessRouteMapper routeMapper;
|
|
||||||
|
|
||||||
private final DingTalkProperties dingTalkProperties;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询bom明细列表
|
* 查询bom明细列表
|
||||||
*/
|
*/
|
||||||
@ -471,55 +462,10 @@ public class BomDetailsController extends BaseController {
|
|||||||
}
|
}
|
||||||
//更新项目进度
|
//更新项目进度
|
||||||
ProcessOrderPro processOrderProBo = iProcessOrderProService.selectByProjectNumber(totalWeight);
|
ProcessOrderPro processOrderProBo = iProcessOrderProService.selectByProjectNumber(totalWeight);
|
||||||
|
|
||||||
processOrderProBo.setDrawingType(JSONUtil.toJsonStr(logDTOS));
|
processOrderProBo.setDrawingType(JSONUtil.toJsonStr(logDTOS));
|
||||||
processOrderProBo.setBomStatus(2L);
|
processOrderProBo.setBomStatus(2L);
|
||||||
processOrderProMapper.updateById(processOrderProBo);
|
processOrderProMapper.updateById(processOrderProBo);
|
||||||
|
|
||||||
// 更新钉钉卡片数据
|
|
||||||
try {
|
|
||||||
if (StringUtils.isNotEmpty(processOrderProBo.getNotificationCardId())) {
|
|
||||||
log.info("开始更新钉钉卡片,生产令号: {}, 卡片ID: {}", totalWeight, processOrderProBo.getNotificationCardId());
|
|
||||||
Set<String> materialSet = new HashSet<>();
|
|
||||||
int fNumberCount = 0;
|
|
||||||
int partdiagramCodeCount = 0;
|
|
||||||
|
|
||||||
for (BomDetails detail : bomDetailsList) {
|
|
||||||
if (StringUtils.isNotEmpty(detail.getPartdiagramCode())) {
|
|
||||||
materialSet.add(detail.getPartdiagramCode());
|
|
||||||
partdiagramCodeCount++;
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotEmpty(detail.getFNumber())) {
|
|
||||||
materialSet.add(detail.getFNumber());
|
|
||||||
fNumberCount++;
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotEmpty(detail.getPartNumber())) {
|
|
||||||
materialSet.add(detail.getPartNumber());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//查询工艺路线数量
|
|
||||||
LambdaQueryWrapper<ProcessRoute> wqroute = new LambdaQueryWrapper<>();
|
|
||||||
wqroute.eq(ProcessRoute::getRouteDescription,totalWeight)
|
|
||||||
.eq(ProcessRoute::getProcessNo,"10");
|
|
||||||
Long routeCount = routeMapper.selectCount(wqroute);
|
|
||||||
// 计算统计数据
|
|
||||||
int bomCount = fNumberCount + partdiagramCodeCount;
|
|
||||||
int materialCount = materialSet.size();
|
|
||||||
|
|
||||||
log.info("统计结果 - BOM数: {}, 物料数: {}, 工艺路线数: {}", bomCount, materialCount, routeCount);
|
|
||||||
|
|
||||||
Map<String, String> cardDataMap = new HashMap<>();
|
|
||||||
cardDataMap.put("bom_count", String.valueOf(bomCount));
|
|
||||||
cardDataMap.put("material_count", String.valueOf(materialCount));
|
|
||||||
cardDataMap.put("route_count", String.valueOf(routeCount));
|
|
||||||
|
|
||||||
String accessToken = DingUtil.getAccessToken(dingTalkProperties.getAppKey(), dingTalkProperties.getAppSecret());
|
|
||||||
DingUtil.updateInteractiveCard(accessToken, processOrderProBo.getNotificationCardId(), cardDataMap);
|
|
||||||
log.info("钉钉卡片更新请求已发送");
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("更新钉钉卡片失败", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 返回处理结果
|
// 返回处理结果
|
||||||
return R.ok("成功", bomDetailsList);
|
return R.ok("成功", bomDetailsList);
|
||||||
|
|
||||||
@ -1521,7 +1467,6 @@ public class BomDetailsController extends BaseController {
|
|||||||
model.addProperty("FSpecification", bomDetails1.getRemarks());
|
model.addProperty("FSpecification", bomDetails1.getRemarks());
|
||||||
model.addProperty("FNumber", bomDetails1.getPartNumber());
|
model.addProperty("FNumber", bomDetails1.getPartNumber());
|
||||||
model.addProperty("FName", bomDetails1.getName());
|
model.addProperty("FName", bomDetails1.getName());
|
||||||
model.addProperty("F_HBYT_ZYCD", bomDetails1.getStateImportance() != null ? bomDetails1.getStateImportance() : "");
|
|
||||||
MaterialProperties materialProperties = iMaterialPropertiesService.selectByAttribute(bomDetails1.getMaterial());
|
MaterialProperties materialProperties = iMaterialPropertiesService.selectByAttribute(bomDetails1.getMaterial());
|
||||||
if (materialProperties != null) {
|
if (materialProperties != null) {
|
||||||
JsonObject FSVRIAssistant = new JsonObject();
|
JsonObject FSVRIAssistant = new JsonObject();
|
||||||
|
|||||||
@ -21,8 +21,6 @@ import com.google.gson.JsonObject;
|
|||||||
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
import com.kingdee.bos.webapi.sdk.K3CloudApi;
|
||||||
import com.ruoyi.common.utils.HttpRequestUtil;
|
import com.ruoyi.common.utils.HttpRequestUtil;
|
||||||
import com.ruoyi.common.utils.WxRobotUtil;
|
import com.ruoyi.common.utils.WxRobotUtil;
|
||||||
import com.ruoyi.common.dingding.DingUtil;
|
|
||||||
import com.ruoyi.common.config.DingTalkProperties;
|
|
||||||
import com.ruoyi.common.poi.ExcelTemplateProc;
|
import com.ruoyi.common.poi.ExcelTemplateProc;
|
||||||
import com.ruoyi.common.poi.DynamicDataMapping;
|
import com.ruoyi.common.poi.DynamicDataMapping;
|
||||||
import com.ruoyi.system.domain.SafetyStock;
|
import com.ruoyi.system.domain.SafetyStock;
|
||||||
@ -77,14 +75,11 @@ import static com.ruoyi.common.constant.Constants.*;
|
|||||||
public class KingdeeWorkCenterDataController extends BaseController {
|
public class KingdeeWorkCenterDataController extends BaseController {
|
||||||
@Resource
|
@Resource
|
||||||
private WxRobotUtil wxRobotUtil;
|
private WxRobotUtil wxRobotUtil;
|
||||||
@Resource
|
|
||||||
private DingTalkProperties dingTalkProperties;
|
|
||||||
private final IKingdeeWorkCenterDataService iKingdeeWorkCenterDataService;
|
private final IKingdeeWorkCenterDataService iKingdeeWorkCenterDataService;
|
||||||
private final HttpRequestUtil httpRequestUtil;
|
private final HttpRequestUtil httpRequestUtil;
|
||||||
private static final Logger log = LoggerFactory.getLogger(KingdeeWorkCenterDataController.class);
|
private static final Logger log = LoggerFactory.getLogger(KingdeeWorkCenterDataController.class);
|
||||||
private final WlStockDataMapper baseMapper;
|
private final WlStockDataMapper baseMapper;
|
||||||
private final ISafetyStockService iSafetyStockService;
|
private final ISafetyStockService iSafetyStockService;
|
||||||
private final IWlStockDataService iWlStockDataService;
|
|
||||||
private final IWeComService iWeComService;
|
private final IWeComService iWeComService;
|
||||||
private final MssqlQueryService mssqlQueryService;
|
private final MssqlQueryService mssqlQueryService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -92,67 +87,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
private static final String QUALITY_KANBAN_URL = "http://192.168.5.8/K3Cloud/DataBoard/QualityKanBan/index.html#/";
|
private static final String QUALITY_KANBAN_URL = "http://192.168.5.8/K3Cloud/DataBoard/QualityKanBan/index.html#/";
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据目标机器人获取 AccessToken
|
|
||||||
*/
|
|
||||||
private String getAccessTokenForRobot(String targetRobotCode) {
|
|
||||||
String defaultRobotCode = dingTalkProperties.getRobotCode();
|
|
||||||
String currentAppKey = dingTalkProperties.getAppKey();
|
|
||||||
String currentAppSecret = dingTalkProperties.getAppSecret();
|
|
||||||
|
|
||||||
// 如果使用了安全库存机器人
|
|
||||||
if ("dingwoaeaozawfochwoo".equals(targetRobotCode)) {
|
|
||||||
String safetyAppKey = dingTalkProperties.getSafetyStockAppKey();
|
|
||||||
String safetyAppSecret = dingTalkProperties.getSafetyStockAppSecret();
|
|
||||||
if (safetyAppKey!= null) {
|
|
||||||
currentAppKey = safetyAppKey;
|
|
||||||
currentAppSecret = safetyAppSecret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DingUtil.getAccessToken(currentAppKey, currentAppSecret);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 统一发送钉钉消息(支持群发和回调回复)
|
|
||||||
*/
|
|
||||||
private void sendDingTalkMessage(String accessToken, String robotCode, String targetConversationId,
|
|
||||||
String sessionWebhook, String senderId,
|
|
||||||
String title, String markdownText, File file, String fileName) {
|
|
||||||
// 确定最终发送的会话ID
|
|
||||||
String defaultConversationId = dingTalkProperties.getOpenConversationId();
|
|
||||||
String finalConversationId = (targetConversationId != null && !targetConversationId.isEmpty())
|
|
||||||
? targetConversationId : defaultConversationId;
|
|
||||||
|
|
||||||
// 1. 发送文件(如果有)
|
|
||||||
if (file != null && file.exists() && finalConversationId != null && !finalConversationId.isEmpty()) {
|
|
||||||
try {
|
|
||||||
String mediaId = DingUtil.uploadMedia(accessToken, "file", file.getAbsolutePath());
|
|
||||||
DingUtil.sendOrgGroupFile(accessToken, robotCode, finalConversationId, mediaId, fileName, "xlsx");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("发送钉钉文件失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. 发送 Markdown 消息
|
|
||||||
// 处理 @ 用户 (注:新版机器人群发接口 sampleMarkdown 暂不支持直接 @,若需 @ 可在文本中拼接,此处暂略)
|
|
||||||
/*
|
|
||||||
List<String> atUserIds = new ArrayList<>();
|
|
||||||
if (senderId != null) {
|
|
||||||
atUserIds.add(senderId);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// 分片发送长消息
|
|
||||||
int maxLength = 1000;
|
|
||||||
for (int i = 0; i < markdownText.length(); i += maxLength) {
|
|
||||||
String part = markdownText.substring(i, Math.min(i + maxLength, markdownText.length()));
|
|
||||||
// 统一使用企业机器人发送群消息 (不再使用 Webhook)
|
|
||||||
if (finalConversationId != null && !finalConversationId.isEmpty()) {
|
|
||||||
DingUtil.sendOrgGroupMarkdown(accessToken, robotCode, finalConversationId, title, part);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取金蝶生产看板数据 (SQL Server直连)
|
* 获取金蝶生产看板数据 (SQL Server直连)
|
||||||
*/
|
*/
|
||||||
@ -445,22 +379,11 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Log(title = "预警钉钉机器人")
|
@Log(title = "预警企业机器人")
|
||||||
@XxlJob("getMassageForMultipleWorkCenters")
|
@XxlJob("getMassageForMultipleWorkCenters")
|
||||||
public R<Void> getMassageForMultipleWorkCenters() {
|
public R<Void> getMassageForMultipleWorkCenters() {
|
||||||
return sendMassageForMultipleWorkCenters(null, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public R<Void> sendMassageForMultipleWorkCenters(String targetConversationId, String sessionWebhook, String senderId, String targetRobotCode) {
|
|
||||||
try {
|
try {
|
||||||
// 使用钉钉配置
|
String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
|
||||||
String accessToken = getAccessTokenForRobot(targetRobotCode);
|
|
||||||
String finalRobotCode = (targetRobotCode != null && !targetRobotCode.isEmpty())
|
|
||||||
? targetRobotCode : dingTalkProperties.getRobotCode();
|
|
||||||
String defaultConversationId = dingTalkProperties.getOpenConversationId();
|
|
||||||
String finalConversationId = (targetConversationId != null && !targetConversationId.isEmpty())
|
|
||||||
? targetConversationId : defaultConversationId;
|
|
||||||
|
|
||||||
List<String> workCenters = Arrays.asList("机一工段", "机二工段", "机三工段", "装一工段", "装二工段", "委外中心", "电钳工段", "铆焊工段");
|
List<String> workCenters = Arrays.asList("机一工段", "机二工段", "机三工段", "装一工段", "装二工段", "委外中心", "电钳工段", "铆焊工段");
|
||||||
|
|
||||||
String currentTime = DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss");
|
String currentTime = DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss");
|
||||||
@ -480,12 +403,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
//加入暂停项目的过滤
|
//加入暂停项目的过滤
|
||||||
List<KingdeeWorkCenterDataBo> dataList = result.getData().stream().filter(item -> item.getMoOrderNo() != null && !item.getMoOrderNo().contains("暂停"))
|
List<KingdeeWorkCenterDataBo> dataList = result.getData().stream().filter(item -> item.getMoOrderNo() != null && !item.getMoOrderNo().contains("暂停"))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
if (dataList.isEmpty()) {
|
|
||||||
msg.append("- ").append(workCenter).append(" (无数据)\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
msg.append("- ").append(workCenter).append(" (共").append(dataList.size()).append("条数据)\n");
|
msg.append("- ").append(workCenter).append(" (共").append(dataList.size()).append("条数据)\n");
|
||||||
|
|
||||||
// 生成Excel文件
|
// 生成Excel文件
|
||||||
@ -506,21 +423,12 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
|
|
||||||
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
||||||
|
|
||||||
// 上传文件到钉钉并获取mediaId
|
// 发送Excel文件
|
||||||
File excelFile = new File(filePath);
|
File excelFile = new File(filePath);
|
||||||
if (excelFile.exists()) {
|
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
|
||||||
// 仅当会话ID存在时发送文件
|
|
||||||
if (finalConversationId != null && !finalConversationId.isEmpty()) {
|
// 删除临时文件
|
||||||
try {
|
FileUtils.deleteQuietly(excelFile);
|
||||||
String mediaId = DingUtil.uploadMedia(accessToken, "file", filePath);
|
|
||||||
DingUtil.sendOrgGroupFile(accessToken, finalRobotCode, finalConversationId, mediaId, fileName, "xlsx");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("发送钉钉文件失败: {}", fileName, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 删除临时文件
|
|
||||||
FileUtils.deleteQuietly(excelFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("获取工段{}数据失败", workCenter, e);
|
log.error("获取工段{}数据失败", workCenter, e);
|
||||||
@ -529,10 +437,7 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
msg.append("\n详细数据请查看发送的Excel文件!");
|
msg.append("\n详细数据请查看发送的Excel文件!");
|
||||||
|
wxRobotUtil.sendMsgToWeChatGroup(msg.toString(), robotId, true); // @所有人
|
||||||
// 使用钉钉发送文本消息 (兼容回调)
|
|
||||||
sendDingTalkMessage(accessToken, finalRobotCode, targetConversationId, sessionWebhook, senderId,
|
|
||||||
"生产预警数据更新提醒", msg.toString(), null, null);
|
|
||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
|
|
||||||
@ -600,10 +505,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
@Log(title = "延期警告企业机器人")
|
@Log(title = "延期警告企业机器人")
|
||||||
@XxlJob("getMassageDelayDate")
|
@XxlJob("getMassageDelayDate")
|
||||||
public R<Void> getMassageDelayDate() {
|
public R<Void> getMassageDelayDate() {
|
||||||
return sendMassageDelayDate(null, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public R<Void> sendMassageDelayDate(String targetConversationId, String sessionWebhook, String senderId, String targetRobotCode) {
|
|
||||||
try {
|
try {
|
||||||
// String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
|
// String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
|
||||||
String robotId = "483489b2-b219-468c-851f-f56a34a62d91";
|
String robotId = "483489b2-b219-468c-851f-f56a34a62d91";
|
||||||
@ -617,14 +518,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
.append("> **统计时间:** <font color=\"info\">").append(currentTime).append("</font>\n\n")
|
.append("> **统计时间:** <font color=\"info\">").append(currentTime).append("</font>\n\n")
|
||||||
.append("## 🔧 工作中心数据统计:\n");
|
.append("## 🔧 工作中心数据统计:\n");
|
||||||
|
|
||||||
// 钉钉配置
|
|
||||||
String accessToken = getAccessTokenForRobot(targetRobotCode);
|
|
||||||
String finalRobotCode = (targetRobotCode != null && !targetRobotCode.isEmpty())
|
|
||||||
? targetRobotCode : dingTalkProperties.getRobotCode();
|
|
||||||
String defaultConversationId = dingTalkProperties.getOpenConversationId();
|
|
||||||
String finalConversationId = (targetConversationId != null && !targetConversationId.isEmpty())
|
|
||||||
? targetConversationId : defaultConversationId;
|
|
||||||
|
|
||||||
// 获取并统计每个工段的数据
|
// 获取并统计每个工段的数据
|
||||||
for (String workCenter : workCenters) {
|
for (String workCenter : workCenters) {
|
||||||
try {
|
try {
|
||||||
@ -636,12 +529,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
List<KingdeeWorkCenterDataBo> dataList = result.getData().stream().filter(item -> item.getMoOrderNo() != null && !item.getMoOrderNo().contains("暂停"))
|
List<KingdeeWorkCenterDataBo> dataList = result.getData().stream().filter(item -> item.getMoOrderNo() != null && !item.getMoOrderNo().contains("暂停"))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 如果过滤后没有数据,直接跳过
|
|
||||||
if (dataList.isEmpty()) {
|
|
||||||
markdownMsg.append("- ").append(workCenter).append(":<font color=\"comment\">无数据</font>\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
markdownMsg.append("- ").append(workCenter).append(":共 <font color=\"warning\">").append(dataList.size()).append("</font> 条\n");
|
markdownMsg.append("- ").append(workCenter).append(":共 <font color=\"warning\">").append(dataList.size()).append("</font> 条\n");
|
||||||
|
|
||||||
// 生成Excel文件
|
// 生成Excel文件
|
||||||
@ -664,20 +551,10 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
|
|
||||||
// 发送Excel文件
|
// 发送Excel文件
|
||||||
File excelFile = new File(filePath);
|
File excelFile = new File(filePath);
|
||||||
if (excelFile.exists()) {
|
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
|
||||||
// 钉钉
|
|
||||||
if (finalConversationId != null && !finalConversationId.isEmpty()) {
|
|
||||||
try {
|
|
||||||
String mediaId = DingUtil.uploadMedia(accessToken, "file", excelFile.getAbsolutePath());
|
|
||||||
DingUtil.sendOrgGroupFile(accessToken, finalRobotCode, finalConversationId, mediaId, fileName, "xlsx");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("发送钉钉文件失败: {}", fileName, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除临时文件
|
// 删除临时文件
|
||||||
FileUtils.deleteQuietly(excelFile);
|
FileUtils.deleteQuietly(excelFile);
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("获取工段{}数据失败", workCenter, e);
|
log.error("获取工段{}数据失败", workCenter, e);
|
||||||
@ -688,10 +565,11 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
// 结尾提示与分段发送
|
// 结尾提示与分段发送
|
||||||
markdownMsg.append("\n> **📊 详细数据请查看发送的Excel文件!**");
|
markdownMsg.append("\n> **📊 详细数据请查看发送的Excel文件!**");
|
||||||
String messageContent = markdownMsg.toString();
|
String messageContent = markdownMsg.toString();
|
||||||
|
int maxLength = 4096;
|
||||||
// 钉钉发送
|
for (int i = 0; i < messageContent.length(); i += maxLength) {
|
||||||
sendDingTalkMessage(accessToken, finalRobotCode, targetConversationId, sessionWebhook, senderId,
|
String part = messageContent.substring(i, Math.min(i + maxLength, messageContent.length()));
|
||||||
"金蝶生产延期数据更新提醒", messageContent, null, null);
|
wxRobotUtil.sendMarkdownMsgToWeChatGroup(part, robotId);
|
||||||
|
}
|
||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
|
|
||||||
@ -702,56 +580,21 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Log(title = "金蝶安全库存数据", businessType = BusinessType.OTHER)
|
@Log(title = "金蝶安全库存数据", businessType = BusinessType.OTHER)
|
||||||
@XxlJob("getKuCun")
|
@XxlJob("getKuCun")
|
||||||
public R<Void> getKuCun() {
|
public R<Void> getKuCun() {
|
||||||
return sendKuCunData(null, null, null, null);
|
String robotId = "0d2390e0-3e74-49fc-bd02-900b86bf0f55";
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 发送安全库存数据
|
|
||||||
* @param targetConversationId 目标会话ID(可选)
|
|
||||||
* @param sessionWebhook 回调Webhook(可选)
|
|
||||||
* @param senderId 发送者ID(可选,用于@)
|
|
||||||
* @param targetRobotCode 目标机器人编码(可选)
|
|
||||||
*/
|
|
||||||
public R<Void> sendKuCunData(String targetConversationId, String sessionWebhook, String senderId, String targetRobotCode) {
|
|
||||||
// 使用钉钉配置
|
|
||||||
String defaultRobotCode = dingTalkProperties.getRobotCode();
|
|
||||||
String defaultConversationId = dingTalkProperties.getOpenConversationId();
|
|
||||||
String appKey = dingTalkProperties.getAppKey();
|
|
||||||
String appSecret = dingTalkProperties.getAppSecret();
|
|
||||||
|
|
||||||
// 确定最终发送的会话ID和RobotCode
|
|
||||||
String finalConversationId = (targetConversationId != null && !targetConversationId.isEmpty())
|
|
||||||
? targetConversationId : defaultConversationId;
|
|
||||||
String finalRobotCode = (targetRobotCode != null && !targetRobotCode.isEmpty())
|
|
||||||
? targetRobotCode : defaultRobotCode;
|
|
||||||
|
|
||||||
// 确定使用的 AppKey 和 AppSecret
|
|
||||||
String currentAppKey = appKey;
|
|
||||||
String currentAppSecret = appSecret;
|
|
||||||
|
|
||||||
if (finalRobotCode.equals("dingwoaeaozawfochwoo")) {
|
|
||||||
String safetyAppKey = dingTalkProperties.getSafetyStockAppKey();
|
|
||||||
String safetyAppSecret = dingTalkProperties.getSafetyStockAppSecret();
|
|
||||||
if (safetyAppKey != null && !safetyAppKey.isEmpty() && safetyAppSecret != null && !safetyAppSecret.isEmpty()) {
|
|
||||||
currentAppKey = safetyAppKey;
|
|
||||||
currentAppSecret = safetyAppSecret;
|
|
||||||
} else {
|
|
||||||
log.warn("检测到使用了新机器人编码 {}, 但未配置 safetyStockAppKey/Secret,尝试使用默认配置", finalRobotCode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取AccessToken
|
|
||||||
String accessToken = DingUtil.getAccessToken(currentAppKey, currentAppSecret);
|
|
||||||
|
|
||||||
StringBuilder markdownMsg = new StringBuilder();
|
StringBuilder markdownMsg = new StringBuilder();
|
||||||
|
// 获取今天的日期
|
||||||
|
Date today = new Date();
|
||||||
|
Date sixAM = DateUtil.parse(DateUtil.format(today, "yyyy-MM-dd") + " 06:00:00");
|
||||||
|
|
||||||
// 直接生成数据,不再查询数据库
|
// 创建查询条件
|
||||||
List<WlStockData> safetyStocks = iWlStockDataService.generateStockDataOnly();
|
LambdaQueryWrapper<WlStockData> safetyStockLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
// 获取时间在今天6点以后的数据
|
||||||
|
safetyStockLambdaQueryWrapper.ge(WlStockData::getCreateTime, sixAM);
|
||||||
|
|
||||||
|
List<WlStockData> safetyStocks = baseMapper.selectList(safetyStockLambdaQueryWrapper);
|
||||||
log.info("查询安全库存结果===========>:{}", safetyStocks);
|
log.info("查询安全库存结果===========>:{}", safetyStocks);
|
||||||
// 处理物料分组
|
// 处理物料分组
|
||||||
safetyStocks = processMaterialGroups(safetyStocks);
|
safetyStocks = processMaterialGroups(safetyStocks);
|
||||||
@ -761,26 +604,27 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (CollUtil.isEmpty(safetyStocks)) {
|
if (CollUtil.isEmpty(safetyStocks)) {
|
||||||
markdownMsg.append("### 🚀 安全库存提醒\n\n")
|
markdownMsg.append("## 🚀 安全库存提醒\n\n")
|
||||||
.append("今日暂无安全库存预警数据。");
|
.append("今日暂无安全库存预警数据。");
|
||||||
} else {
|
} else {
|
||||||
markdownMsg.append("### 🚀 安全库存提醒\n\n")
|
markdownMsg.append("## 🚀 安全库存提醒\n\n")
|
||||||
.append("以下是今日的安全库存预警数据:\n\n");
|
.append("以下是今日的安全库存预警数据:\n\n");
|
||||||
// 只显示前三个安全库存数据
|
// 只显示前三个安全库存数据
|
||||||
int count = Math.min(3, safetyStocks.size());
|
int count = Math.min(3, safetyStocks.size());
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
WlStockData safetyStock = safetyStocks.get(i);
|
WlStockData safetyStock = safetyStocks.get(i);
|
||||||
markdownMsg.append("**物料编号: ").append(safetyStock.getMaterialCode()).append("**\n")
|
markdownMsg.append("### 物料信息\n")
|
||||||
.append("- 物料名称: ").append(safetyStock.getMaterialName()).append("\n")
|
.append("#### 物料编号: **").append(safetyStock.getMaterialCode()).append("**\n")
|
||||||
.append("- 预计可用量: ").append(String.format("%.2f", safetyStock.getCurrentStock())).append("\n")
|
.append("> **物料名称:** ").append(safetyStock.getMaterialName()).append("\n")
|
||||||
.append("- 即时库存: ").append(String.format("%.2f", safetyStock.getSecAvbqty())).append("\n")
|
.append("> **预计可用量:** ").append(String.format("%.2f", safetyStock.getCurrentStock())).append("\n")
|
||||||
.append("- 最大库存: ").append(String.format("%.2f", safetyStock.getMaxsafetyStock())).append("\n")
|
.append("> **即时库存:** ").append(String.format("%.2f", safetyStock.getSecAvbqty())).append("\n")
|
||||||
.append("- 创建时间: ").append(DateUtil.formatDateTime(safetyStock.getCreateTime())).append("\n")
|
.append("> **最大库存:** ").append(String.format("%.2f", safetyStock.getMaxsafetyStock())).append("\n")
|
||||||
|
.append("> **创建时间:** ").append(DateUtil.formatDateTime(safetyStock.getCreateTime())).append("\n")
|
||||||
.append("---\n"); // 添加分隔线
|
.append("---\n"); // 添加分隔线
|
||||||
}
|
}
|
||||||
// 添加总数汇总
|
// 添加总数汇总
|
||||||
markdownMsg.append("**总数汇总**\n")
|
markdownMsg.append("### 总数汇总\n")
|
||||||
.append("- 今日安全库存预警数据总数: **").append(safetyStocks.size()).append("**\n");
|
.append("> 今日安全库存预警数据总数: **").append(safetyStocks.size()).append("**\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成Excel文件
|
// 生成Excel文件
|
||||||
@ -799,37 +643,18 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
|
|
||||||
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
||||||
|
|
||||||
// 上传文件到钉钉并获取mediaId
|
// 发送Excel文件
|
||||||
File excelFile = new File(filePath);
|
File excelFile = new File(filePath);
|
||||||
String mediaId = DingUtil.uploadMedia(accessToken, "file", filePath);
|
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
|
||||||
|
|
||||||
// 发送文件消息(始终发送到指定会话)
|
|
||||||
if (finalConversationId != null && !finalConversationId.isEmpty()) {
|
|
||||||
DingUtil.sendOrgGroupFile(accessToken, finalRobotCode, finalConversationId,
|
|
||||||
mediaId, fileName, "xlsx");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除临时文件
|
// 删除临时文件
|
||||||
FileUtils.deleteQuietly(excelFile);
|
FileUtils.deleteQuietly(excelFile);
|
||||||
markdownMsg.append("\n详细数据请查看发送的Excel文件!");
|
markdownMsg.append("\n详细数据请查看发送的Excel文件!");
|
||||||
|
|
||||||
String messageContent = markdownMsg.toString();
|
String messageContent = markdownMsg.toString();
|
||||||
int maxLength = 1000;
|
int maxLength = 1000;
|
||||||
|
|
||||||
// 准备发送消息 (注:新版机器人群发接口 sampleMarkdown 暂不支持直接 @,若需 @ 可在文本中拼接,此处暂略)
|
|
||||||
/*
|
|
||||||
List<String> atUserIds = new ArrayList<>();
|
|
||||||
if (senderId != null) {
|
|
||||||
atUserIds.add(senderId);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
for (int i = 0; i < messageContent.length(); i += maxLength) {
|
for (int i = 0; i < messageContent.length(); i += maxLength) {
|
||||||
String part = messageContent.substring(i, Math.min(i + maxLength, messageContent.length()));
|
String part = messageContent.substring(i, Math.min(i + maxLength, messageContent.length()));
|
||||||
|
wxRobotUtil.sendMarkdownMsgToWeChatGroup(part, robotId);
|
||||||
if (finalConversationId != null && !finalConversationId.isEmpty()) {
|
|
||||||
DingUtil.sendOrgGroupMarkdown(accessToken, finalRobotCode, finalConversationId, "物料安全库存提醒", part);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return R.ok();
|
return R.ok();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -1344,10 +1169,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
@XxlJob("getPurchaseOrder2")
|
@XxlJob("getPurchaseOrder2")
|
||||||
@PostMapping("/getPurchaseOrder2")
|
@PostMapping("/getPurchaseOrder2")
|
||||||
public R<Void> getPurchaseOrder2() {
|
public R<Void> getPurchaseOrder2() {
|
||||||
return sendPurchaseOrder2(null, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public R<Void> sendPurchaseOrder2(String targetConversationId, String sessionWebhook, String senderId, String targetRobotCode) {
|
|
||||||
try {
|
try {
|
||||||
// String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
|
// String robotId = "4d2f037d-0cee-493a-a4ff-1758f67b8069";
|
||||||
String robotId = "d5a51230-e0de-4c26-b088-07d6e89e6e07";
|
String robotId = "d5a51230-e0de-4c26-b088-07d6e89e6e07";
|
||||||
@ -1358,11 +1179,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
.append("更新时间:").append(currentTime).append("\n\n")
|
.append("更新时间:").append(currentTime).append("\n\n")
|
||||||
.append("🔧 订单数据统计:\n");
|
.append("🔧 订单数据统计:\n");
|
||||||
|
|
||||||
// 钉钉配置
|
|
||||||
String accessToken = getAccessTokenForRobot(targetRobotCode);
|
|
||||||
String finalRobotCode = (targetRobotCode != null && !targetRobotCode.isEmpty())
|
|
||||||
? targetRobotCode : dingTalkProperties.getRobotCode();
|
|
||||||
|
|
||||||
// 获取采购订单和采购申请数据
|
// 获取采购订单和采购申请数据
|
||||||
List<PurchaseOrderExcelDTO> allPurchaseOrderList = JdUtil.getPurchaseOrder();
|
List<PurchaseOrderExcelDTO> allPurchaseOrderList = JdUtil.getPurchaseOrder();
|
||||||
List<PurchaseRequestExcelDTO> allpurchaseRequestList = JdUtil.getPurchaseRequestOrder();
|
List<PurchaseRequestExcelDTO> allpurchaseRequestList = JdUtil.getPurchaseRequestOrder();
|
||||||
@ -1406,18 +1222,15 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
|
|
||||||
// 发送Excel文件
|
// 发送Excel文件
|
||||||
File excelFile = new File(filePath);
|
File excelFile = new File(filePath);
|
||||||
|
|
||||||
msg.append("\n详细数据请查看发送的Excel文件!");
|
|
||||||
|
|
||||||
// 钉钉发送 (包含文件)
|
|
||||||
sendDingTalkMessage(accessToken, finalRobotCode, targetConversationId, sessionWebhook, senderId,
|
|
||||||
"采购订单提醒", msg.toString(), excelFile, fileName);
|
|
||||||
|
|
||||||
// 删除临时文件 (在发送完之后删除)
|
|
||||||
if (excelFile.exists()) {
|
if (excelFile.exists()) {
|
||||||
|
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
|
||||||
FileUtils.deleteQuietly(excelFile);
|
FileUtils.deleteQuietly(excelFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
msg.append("\n详细数据请查看发送的Excel文件!");
|
||||||
|
wxRobotUtil.sendMsgToWeChatGroup(msg.toString(), robotId, true); // @所有人
|
||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -1585,10 +1398,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
@XxlJob("getProductionOrder")
|
@XxlJob("getProductionOrder")
|
||||||
@PostMapping("/getProductionOrder")
|
@PostMapping("/getProductionOrder")
|
||||||
public R<Void> getProductionOrder() {
|
public R<Void> getProductionOrder() {
|
||||||
return sendProductionOrder(null, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public R<Void> sendProductionOrder(String targetConversationId, String sessionWebhook, String senderId, String targetRobotCode) {
|
|
||||||
//TO DO:
|
//TO DO:
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -1597,11 +1406,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
msg.append("🏭 工序汇报未入库\n\n").append("更新时间:").append(currentTime).append("\n\n").append("🔧 订单数据统计:\n");
|
msg.append("🏭 工序汇报未入库\n\n").append("更新时间:").append(currentTime).append("\n\n").append("🔧 订单数据统计:\n");
|
||||||
|
|
||||||
// 钉钉配置
|
|
||||||
String accessToken = getAccessTokenForRobot(targetRobotCode);
|
|
||||||
String finalRobotCode = (targetRobotCode != null && !targetRobotCode.isEmpty())
|
|
||||||
? targetRobotCode : dingTalkProperties.getRobotCode();
|
|
||||||
|
|
||||||
//工序汇报单,未入库列表
|
//工序汇报单,未入库列表
|
||||||
List<ProcessReportDTO> processReportDTOList = JdUtil.getProcessReport();
|
List<ProcessReportDTO> processReportDTOList = JdUtil.getProcessReport();
|
||||||
msg.append("- 到期未开工:").append(processReportDTOList.size()).append("条\n");
|
msg.append("- 到期未开工:").append(processReportDTOList.size()).append("条\n");
|
||||||
@ -1642,17 +1446,12 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
||||||
// 发送Excel文件
|
// 发送Excel文件
|
||||||
File excelFile = new File(filePath);
|
File excelFile = new File(filePath);
|
||||||
|
|
||||||
msg.append("\n详细数据请查看发送的Excel文件!");
|
|
||||||
|
|
||||||
// 钉钉发送
|
|
||||||
sendDingTalkMessage(accessToken, finalRobotCode, targetConversationId, sessionWebhook, senderId,
|
|
||||||
"工序汇报未入库", msg.toString(), excelFile, fileName);
|
|
||||||
|
|
||||||
// 删除临时文件
|
|
||||||
if (excelFile.exists()) {
|
if (excelFile.exists()) {
|
||||||
|
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
|
||||||
FileUtils.deleteQuietly(excelFile);
|
FileUtils.deleteQuietly(excelFile);
|
||||||
}
|
}
|
||||||
|
msg.append("\n详细数据请查看发送的Excel文件!");
|
||||||
|
wxRobotUtil.sendMsgToWeChatGroup(msg.toString(), robotId, true); // @所有人
|
||||||
|
|
||||||
return R.ok();
|
return R.ok();
|
||||||
|
|
||||||
@ -1667,10 +1466,6 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
@XxlJob("getProcessTransferForm")
|
@XxlJob("getProcessTransferForm")
|
||||||
@PostMapping("/getProcessTransferForm")
|
@PostMapping("/getProcessTransferForm")
|
||||||
public R<Void> getProcessTransferForm() {
|
public R<Void> getProcessTransferForm() {
|
||||||
return sendProcessTransferForm(null, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public R<Void> sendProcessTransferForm(String targetConversationId, String sessionWebhook, String senderId, String targetRobotCode) {
|
|
||||||
//TO D0:需要查询工序计划的时间是否在今日
|
//TO D0:需要查询工序计划的时间是否在今日
|
||||||
try {
|
try {
|
||||||
String robotId = "8af8abea-3f21-4ca7-ad0a-5b7a2cf4d78e";
|
String robotId = "8af8abea-3f21-4ca7-ad0a-5b7a2cf4d78e";
|
||||||
@ -1680,17 +1475,11 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
markdownMsg.append("🏭 **工序转移**\n\n");
|
markdownMsg.append("🏭 **工序转移**\n\n");
|
||||||
markdownMsg.append("- 📊 统计时间:").append(currentTime).append("\n");
|
markdownMsg.append("- 📊 统计时间:").append(currentTime).append("\n");
|
||||||
markdownMsg.append("- 📋 订单数据统计:\n");
|
markdownMsg.append("- 📋 订单数据统计:\n");
|
||||||
|
|
||||||
// 钉钉配置
|
|
||||||
String accessToken = getAccessTokenForRobot(targetRobotCode);
|
|
||||||
String finalRobotCode = (targetRobotCode != null && !targetRobotCode.isEmpty())
|
|
||||||
? targetRobotCode : dingTalkProperties.getRobotCode();
|
|
||||||
|
|
||||||
//工序汇报单,未入库列表
|
//工序汇报单,未入库列表
|
||||||
List<ProcessTransferFormDTO> processReportDTOList = JdUtil.getProcessTransferForm();
|
List<ProcessTransferFormDTO> processReportDTOList = JdUtil.getProcessTransferForm();
|
||||||
markdownMsg.append(" - 工序转移数据:").append(processReportDTOList.size()).append("条\n");
|
markdownMsg.append(" - 工序转移数据:").append(processReportDTOList.size()).append("条\n");
|
||||||
// 追加Excel文件提示
|
// 追加Excel文件提示
|
||||||
if (!processReportDTOList.isEmpty()) {
|
if (processReportDTOList.size() > 0) {
|
||||||
markdownMsg.append("\n📄 详细数据请查看发送的 Excel 文件\n");
|
markdownMsg.append("\n📄 详细数据请查看发送的 Excel 文件\n");
|
||||||
}
|
}
|
||||||
// 生成Excel文件使用采购模板
|
// 生成Excel文件使用采购模板
|
||||||
@ -1746,16 +1535,13 @@ public class KingdeeWorkCenterDataController extends BaseController {
|
|||||||
// 使用采购模板生成Excel
|
// 使用采购模板生成Excel
|
||||||
String templatePath = "EXCEL模板/工序转移数据.xlsx";
|
String templatePath = "EXCEL模板/工序转移数据.xlsx";
|
||||||
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
ExcelTemplateProc.doExportExcelByTemplateProc(templatePath, filePath, staticDataMap, dynamicDataMappingList);
|
||||||
|
// 发送消息
|
||||||
|
wxRobotUtil.sendMarkdownMsgToWeChatGroup(markdownMsg.toString(), robotId);
|
||||||
|
|
||||||
// 发送Excel文件
|
// 发送Excel文件
|
||||||
File excelFile = new File(filePath);
|
File excelFile = new File(filePath);
|
||||||
|
|
||||||
// 钉钉发送 (文件 + 消息)
|
|
||||||
sendDingTalkMessage(accessToken, finalRobotCode, targetConversationId, sessionWebhook, senderId,
|
|
||||||
"工序转移", markdownMsg.toString(), excelFile, fileName);
|
|
||||||
|
|
||||||
// 删除临时文件
|
|
||||||
if (excelFile.exists()) {
|
if (excelFile.exists()) {
|
||||||
|
wxRobotUtil.sendFileToWeChatGroup(excelFile, robotId);
|
||||||
FileUtils.deleteQuietly(excelFile);
|
FileUtils.deleteQuietly(excelFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,8 +6,11 @@ import java.net.URLEncoder;
|
|||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
@ -76,7 +79,6 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
private final ISafetyStockService safetyStockService;
|
private final ISafetyStockService safetyStockService;
|
||||||
private final IProcessRouteService processRouteService;
|
private final IProcessRouteService processRouteService;
|
||||||
private final SafetyStockMapper stockMapper;
|
private final SafetyStockMapper stockMapper;
|
||||||
|
|
||||||
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy年MM月dd日");
|
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy年MM月dd日");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -118,6 +120,10 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
return R.ok(iProcessOrderProService.queryById(id));
|
return R.ok(iProcessOrderProService.queryById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 钉钉数据同步 Webhook 地址
|
||||||
|
*/
|
||||||
|
private static final String DINGTALK_WEBHOOK_URL = "https://connector.dingtalk.com/webhook/flow/103694935fdc210503b10006";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增项目令号
|
* 新增项目令号
|
||||||
@ -128,7 +134,22 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
@PostMapping()
|
@PostMapping()
|
||||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProcessOrderProBo bo) {
|
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProcessOrderProBo bo) {
|
||||||
boolean result = iProcessOrderProService.insertByBo(bo);
|
boolean result = iProcessOrderProService.insertByBo(bo);
|
||||||
|
if (result) {
|
||||||
|
// 异步同步数据到钉钉 Webhook
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
|
try {
|
||||||
|
// 将业务对象转换为 JSON 字符串
|
||||||
|
String jsonBody = JSONUtil.toJsonStr(bo);
|
||||||
|
System.out.println(jsonBody);
|
||||||
|
// 发送 POST 请求
|
||||||
|
String response = HttpUtil.post(DINGTALK_WEBHOOK_URL, jsonBody);
|
||||||
|
System.out.println("钉钉Webhook响应: " + response);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 仅记录日志,不影响主流程
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
return toAjax(result);
|
return toAjax(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +172,8 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
@SaCheckPermission("system:orderPro:remove")
|
@SaCheckPermission("system:orderPro:remove")
|
||||||
@Log(title = "项目令号", businessType = BusinessType.DELETE)
|
@Log(title = "项目令号", businessType = BusinessType.DELETE)
|
||||||
@DeleteMapping("/{ids}")
|
@DeleteMapping("/{ids}")
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
@PathVariable Long[] ids) {
|
||||||
|
|
||||||
return iProcessOrderProService.deleteWithValidByIds(Arrays.asList(ids), true);
|
return iProcessOrderProService.deleteWithValidByIds(Arrays.asList(ids), true);
|
||||||
}
|
}
|
||||||
@ -230,7 +252,7 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:orderPro:uploadDwg")
|
@SaCheckPermission("system:orderPro:uploadDwg")
|
||||||
@Log(title = "上传dwg图纸", businessType = BusinessType.uploadDwg)
|
@Log(title = "上传dwg图纸", businessType = BusinessType.INSERT)
|
||||||
@PostMapping("/uploadDwg")
|
@PostMapping("/uploadDwg")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public R<Void> uploadContractPDF(@RequestParam("ids") List<Long> ids, @RequestParam("file") MultipartFile filePath) {
|
public R<Void> uploadContractPDF(@RequestParam("ids") List<Long> ids, @RequestParam("file") MultipartFile filePath) {
|
||||||
@ -1285,6 +1307,9 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
routes.add(item);
|
routes.add(item);
|
||||||
}
|
}
|
||||||
if (bomItems != null && !bomItems.isEmpty()) {
|
if (bomItems != null && !bomItems.isEmpty()) {
|
||||||
|
if ("总装部件".equals(Objects.toString(base.getMaterial(), "").trim())) {
|
||||||
|
|
||||||
|
} else {
|
||||||
for (MaterialUseDTO b : bomItems) {
|
for (MaterialUseDTO b : bomItems) {
|
||||||
Map<String, Object> bomMap = new HashMap<>();
|
Map<String, Object> bomMap = new HashMap<>();
|
||||||
bomMap.put("routeDescription", base.getRouteDescription());
|
bomMap.put("routeDescription", base.getRouteDescription());
|
||||||
@ -1305,6 +1330,7 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
bomMap.put("bomUnit", b.getChildUnit());
|
bomMap.put("bomUnit", b.getChildUnit());
|
||||||
kingdeeBomRows.add(bomMap);
|
kingdeeBomRows.add(bomMap);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 用生成的 routes 替换原始 routeList,保持原序展开后的结构用于后续导出
|
// 用生成的 routes 替换原始 routeList,保持原序展开后的结构用于后续导出
|
||||||
@ -1572,9 +1598,9 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
if (mcode.isEmpty() || childCode.isEmpty()) {
|
if (mcode.isEmpty() || childCode.isEmpty()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* if ("总装部件".equals(parentMaterial)) {
|
if ("总装部件".equals(parentMaterial)) {
|
||||||
continue;
|
continue;
|
||||||
}*/
|
}
|
||||||
grouped.computeIfAbsent(mcode, k -> new ArrayList<>());
|
grouped.computeIfAbsent(mcode, k -> new ArrayList<>());
|
||||||
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
@ -1737,6 +1763,7 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. 构建FTP路径和本地路径
|
// 2. 构建FTP路径和本地路径
|
||||||
|
// 假设Excel文件在 /2026/SH-26-001-LT/ 目录下
|
||||||
String ftpPath = "/" + year + "/" + productionCode;
|
String ftpPath = "/" + year + "/" + productionCode;
|
||||||
String localPath = "D:\\file\\";
|
String localPath = "D:\\file\\";
|
||||||
|
|
||||||
@ -1820,7 +1847,7 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
List<MaterialBom> bomItems = processRouteService.getProcessMaterialList(materialCode, materialName, processDescription);
|
List<MaterialBom> bomItems = processRouteService.getProcessMaterialList(materialCode, materialName, processDescription);
|
||||||
List<ProcessRoute> routeGuDing = processRouteService.getProcessRoutesByOrder(processDescription, materialCode);
|
List<ProcessRoute> routeGuDing = processRouteService.getProcessRoutesByOrder(processDescription, materialCode);
|
||||||
if (routeGuDing != null && !routeGuDing.isEmpty()) {
|
if (routeGuDing != null && !routeGuDing.isEmpty()) {
|
||||||
routeGuDing.forEach(r -> {
|
routeGuDing.stream().forEach(r -> {
|
||||||
ProcessRoute item = new ProcessRoute();
|
ProcessRoute item = new ProcessRoute();
|
||||||
item.setRouteDescription(base.getRouteDescription());
|
item.setRouteDescription(base.getRouteDescription());
|
||||||
item.setMaterialCode(base.getMaterialCode());
|
item.setMaterialCode(base.getMaterialCode());
|
||||||
@ -1856,35 +1883,41 @@ public class ProcessOrderProController extends BaseController {
|
|||||||
routes.add(item);
|
routes.add(item);
|
||||||
}
|
}
|
||||||
if (bomItems != null && !bomItems.isEmpty()) {
|
if (bomItems != null && !bomItems.isEmpty()) {
|
||||||
for (MaterialBom b : bomItems) {
|
if ("总装部件".equals(Objects.toString(base.getMaterial(), "").trim())) {
|
||||||
Map<String, Object> bomMap = new HashMap<>();
|
|
||||||
bomMap.put("routeDescription", base.getRouteDescription());
|
} else {
|
||||||
bomMap.put("materialCode", base.getMaterialCode());
|
for (MaterialBom b : bomItems) {
|
||||||
bomMap.put("materialName", base.getMaterialName());
|
Map<String, Object> bomMap = new HashMap<>();
|
||||||
bomMap.put("material", base.getMaterial());
|
bomMap.put("routeDescription", base.getRouteDescription());
|
||||||
bomMap.put("discWeight", base.getDiscWeight());
|
bomMap.put("materialCode", base.getMaterialCode());
|
||||||
bomMap.put("rawMaterialCode", b.getMaterialCode());
|
bomMap.put("materialName", base.getMaterialName());
|
||||||
bomMap.put("rawMaterialName", b.getMaterialName());
|
bomMap.put("material", base.getMaterial());
|
||||||
bomMap.put("bomMaterial", b.getMaterialType());
|
bomMap.put("discWeight", base.getDiscWeight());
|
||||||
bomMap.put("bomDanZhong", null);
|
bomMap.put("rawMaterialCode", b.getMaterialCode());
|
||||||
if ("根".equals(b.getUnit())) {
|
bomMap.put("rawMaterialName", b.getMaterialName());
|
||||||
if (b.getQuantity() != null && b.getQuantity().contains("/")) {
|
bomMap.put("bomMaterial", b.getMaterialType());
|
||||||
String[] arr = b.getQuantity().split("/");
|
bomMap.put("bomDanZhong", null);
|
||||||
bomMap.put("discUsage", Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]));
|
if ("根".equals(b.getUnit())) {
|
||||||
|
if (b.getQuantity() != null && b.getQuantity().contains("/")) {
|
||||||
|
String[] arr = b.getQuantity().split("/");
|
||||||
|
bomMap.put("discUsage", Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]));
|
||||||
|
} else {
|
||||||
|
bomMap.put("discUsage", null);
|
||||||
|
}
|
||||||
|
} else if ("mm".equals(b.getUnit())) {
|
||||||
|
b.setUnit("m");
|
||||||
|
bomMap.put("discUsage", b.getQuantity());
|
||||||
} else {
|
} else {
|
||||||
bomMap.put("discUsage", null);
|
bomMap.put("discUsage", b.getQuantity());
|
||||||
}
|
}
|
||||||
} else if ("mm".equals(b.getUnit())) {
|
|
||||||
b.setUnit("m");
|
|
||||||
bomMap.put("discUsage", b.getQuantity());
|
bomMap.put("bomUnit", b.getUnit());
|
||||||
} else {
|
kingdeeBomRows.add(bomMap);
|
||||||
bomMap.put("discUsage", b.getQuantity());
|
|
||||||
}
|
}
|
||||||
bomMap.put("bomUnit", b.getUnit());
|
|
||||||
kingdeeBomRows.add(bomMap);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 用生成的 routes 替换原始 routeList,保持原序展开后的结构用于后续导出
|
// 用生成的 routes 替换原始 routeList,保持原序展开后的结构用于后续导出
|
||||||
routeList = routes;
|
routeList = routes;
|
||||||
// 2. 读取原始表数据
|
// 2. 读取原始表数据
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaIgnore;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||||
@ -21,7 +20,6 @@ import com.ruoyi.common.core.validate.AddGroup;
|
|||||||
import com.ruoyi.common.core.validate.EditGroup;
|
import com.ruoyi.common.core.validate.EditGroup;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.system.domain.vo.DesignerProjectSummaryVo;
|
|
||||||
import com.ruoyi.system.domain.vo.ProcessPlanVo;
|
import com.ruoyi.system.domain.vo.ProcessPlanVo;
|
||||||
import com.ruoyi.system.domain.bo.ProcessPlanBo;
|
import com.ruoyi.system.domain.bo.ProcessPlanBo;
|
||||||
import com.ruoyi.system.service.IProcessPlanService;
|
import com.ruoyi.system.service.IProcessPlanService;
|
||||||
@ -68,16 +66,6 @@ public class ProcessPlanController extends BaseController {
|
|||||||
ExcelUtil.exportExcel(list, "方案管理", ProcessPlanVo.class, response);
|
ExcelUtil.exportExcel(list, "方案管理", ProcessPlanVo.class, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取设计人项目汇总(每周、每月、每年)
|
|
||||||
*/
|
|
||||||
@SaIgnore
|
|
||||||
@GetMapping("/summary/designer")
|
|
||||||
public R<List<DesignerProjectSummaryVo>> getDesignerProjectSummary() {
|
|
||||||
return R.ok(iProcessPlanService.getDesignerProjectSummary());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取方案管理详细信息
|
* 获取方案管理详细信息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.ruoyi.system.controller;
|
package com.ruoyi.system.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.alibaba.excel.ExcelWriter;
|
import com.alibaba.excel.ExcelWriter;
|
||||||
@ -8,38 +9,30 @@ import com.alibaba.excel.support.ExcelTypeEnum;
|
|||||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.annotation.RepeatSubmit;
|
import com.ruoyi.common.annotation.RepeatSubmit;
|
||||||
import com.ruoyi.common.config.DingTalkProperties;
|
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.validate.AddGroup;
|
import com.ruoyi.common.core.validate.AddGroup;
|
||||||
import com.ruoyi.common.core.validate.EditGroup;
|
import com.ruoyi.common.core.validate.EditGroup;
|
||||||
import com.ruoyi.common.dingding.DingUtil;
|
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.excel.DefaultExcelListener;
|
import com.ruoyi.common.excel.DefaultExcelListener;
|
||||||
import com.ruoyi.common.excel.ExcelResult;
|
import com.ruoyi.common.excel.ExcelResult;
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.exception.ServiceException;
|
||||||
import com.ruoyi.common.helper.LoginHelper;
|
|
||||||
import com.ruoyi.common.utils.FtpUtil;
|
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
|
||||||
import com.ruoyi.common.utils.file.SmbUtil;
|
import com.ruoyi.common.utils.file.SmbUtil;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.system.domain.*;
|
import com.ruoyi.system.domain.*;
|
||||||
import com.ruoyi.system.domain.bo.ProcessRouteBo;
|
import com.ruoyi.system.domain.bo.ProcessRouteBo;
|
||||||
import com.ruoyi.system.domain.dto.*;
|
import com.ruoyi.system.domain.dto.*;
|
||||||
import com.ruoyi.system.domain.vo.PcRigidChainVo;
|
import com.ruoyi.system.domain.vo.*;
|
||||||
import com.ruoyi.system.domain.vo.PlannedProcessVo;
|
|
||||||
import com.ruoyi.system.domain.vo.ProcessRouteVo;
|
|
||||||
import com.ruoyi.system.domain.vo.ProductionOrderVo;
|
|
||||||
import com.ruoyi.system.jdmain.rouplan.Model;
|
import com.ruoyi.system.jdmain.rouplan.Model;
|
||||||
import com.ruoyi.system.mapper.BomDetailsMapper;
|
import com.ruoyi.system.mapper.BomDetailsMapper;
|
||||||
import com.ruoyi.system.mapper.MaterialBomMapper;
|
import com.ruoyi.system.mapper.MaterialBomMapper;
|
||||||
import com.ruoyi.system.mapper.ProcessOrderProMapper;
|
import com.ruoyi.system.mapper.ProcessOrderProMapper;
|
||||||
import com.ruoyi.system.mapper.ProcessRouteMapper;
|
import com.ruoyi.system.mapper.ProcessRouteMapper;
|
||||||
import com.ruoyi.system.runner.JdUtil;
|
import com.ruoyi.system.runner.JdUtil;
|
||||||
import com.ruoyi.system.service.*;
|
import com.ruoyi.system.service.IBomDetailsService;
|
||||||
|
import com.ruoyi.system.service.IProcessRouteService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -58,9 +51,7 @@ import java.io.*;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -75,22 +66,13 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class ProcessRouteController extends BaseController {
|
public class ProcessRouteController extends BaseController {
|
||||||
private final ProcessRouteMapper baseMapper;
|
private final ProcessRouteMapper baseMapper;
|
||||||
private final IProcessRouteService iProcessRouteService;
|
|
||||||
private final IBomDetailsService iBomDetailsService;
|
|
||||||
private final ProcessOrderProMapper proMapper;
|
|
||||||
private final IImMaterialService materialService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
BomDetailsMapper bomDetailsMapper;
|
BomDetailsMapper bomDetailsMapper;
|
||||||
|
private final IProcessRouteService iProcessRouteService;
|
||||||
@Autowired
|
@Autowired
|
||||||
MaterialBomMapper materialBomMapper;
|
MaterialBomMapper materialBomMapper;
|
||||||
@Autowired
|
private final IBomDetailsService iBomDetailsService;
|
||||||
private DingTalkProperties dingTalkProperties;
|
private final ProcessOrderProMapper proMapper;
|
||||||
@Autowired
|
|
||||||
private ISysOssService iSysOssService;
|
|
||||||
@Autowired
|
|
||||||
private IProcessOrderProService processOrderProService;
|
|
||||||
@Autowired
|
|
||||||
private ISysUserService userService;
|
|
||||||
|
|
||||||
private Long generateUniqueParentId(Long originalId) {
|
private Long generateUniqueParentId(Long originalId) {
|
||||||
return originalId + 1000;
|
return originalId + 1000;
|
||||||
@ -175,7 +157,8 @@ public class ProcessRouteController extends BaseController {
|
|||||||
// 遍历所有工艺路线记录
|
// 遍历所有工艺路线记录
|
||||||
for (ProcessRouteVo processRouteVo : rows) {
|
for (ProcessRouteVo processRouteVo : rows) {
|
||||||
// 组合父级键值,物料编码 + 物料名称
|
// 组合父级键值,物料编码 + 物料名称
|
||||||
String parentCodeAndName = String.format("%s_%s", processRouteVo.getMaterialCode(), processRouteVo.getMaterialName());
|
String parentCodeAndName = String.format("%s_%s", processRouteVo.getMaterialCode(),
|
||||||
|
processRouteVo.getMaterialName());
|
||||||
// 查找是否已存在父节点
|
// 查找是否已存在父节点
|
||||||
ProcessRouteVo parent = routeMap.get(parentCodeAndName);
|
ProcessRouteVo parent = routeMap.get(parentCodeAndName);
|
||||||
if (parent == null) {
|
if (parent == null) {
|
||||||
@ -199,7 +182,8 @@ public class ProcessRouteController extends BaseController {
|
|||||||
topLevelList.add(parent);
|
topLevelList.add(parent);
|
||||||
}
|
}
|
||||||
// 创建子节点,并将其添加到父节点的子集
|
// 创建子节点,并将其添加到父节点的子集
|
||||||
ProcessRouteVo child = createChildVo(processRouteVo, parent.getId(), parent.getMaterialCode(), parent.getMaterialName());
|
ProcessRouteVo child = createChildVo(processRouteVo, parent.getId(), parent.getMaterialCode(),
|
||||||
|
parent.getMaterialName());
|
||||||
parent.getChildren().add(child);
|
parent.getChildren().add(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,7 +234,9 @@ public class ProcessRouteController extends BaseController {
|
|||||||
List<ProcessRoute> list = iProcessRouteService.queryList(bo);
|
List<ProcessRoute> list = iProcessRouteService.queryList(bo);
|
||||||
List<MaterialUsageDTO2> bomlist = JdUtil.getPRD_PPBOM(bo.getRouteDescription());
|
List<MaterialUsageDTO2> bomlist = JdUtil.getPRD_PPBOM(bo.getRouteDescription());
|
||||||
//过滤bomlist 只要009开头的标准件
|
//过滤bomlist 只要009开头的标准件
|
||||||
bomlist = bomlist.stream().filter(bom -> bom.getMaterialCode().startsWith("009")).collect(Collectors.toList());
|
bomlist = bomlist.stream()
|
||||||
|
.filter(bom -> bom.getMaterialCode().startsWith("009"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
if (list.isEmpty() && bomlist.isEmpty()) {
|
if (list.isEmpty() && bomlist.isEmpty()) {
|
||||||
throw new ServiceException("没有数据");
|
throw new ServiceException("没有数据");
|
||||||
}
|
}
|
||||||
@ -263,17 +249,22 @@ public class ProcessRouteController extends BaseController {
|
|||||||
ServletOutputStream os = response.getOutputStream();
|
ServletOutputStream os = response.getOutputStream();
|
||||||
|
|
||||||
// 创建ExcelWriter
|
// 创建ExcelWriter
|
||||||
try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(os).autoCloseStream(false) // 防止自动关闭流
|
try (com.alibaba.excel.ExcelWriter excelWriter = EasyExcel.write(os)
|
||||||
|
.autoCloseStream(false) // 防止自动关闭流
|
||||||
.build()) {
|
.build()) {
|
||||||
// 写入工艺路线sheet
|
// 写入工艺路线sheet
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "工艺路线").head(ProcessRoute.class).build();
|
WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "工艺路线")
|
||||||
|
.head(ProcessRoute.class)
|
||||||
|
.build();
|
||||||
excelWriter.write(list, writeSheet1);
|
excelWriter.write(list, writeSheet1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 写入标准件清单sheet
|
// 写入标准件清单sheet
|
||||||
if (!bomlist.isEmpty()) {
|
if (!bomlist.isEmpty()) {
|
||||||
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "标准件清单").head(MaterialUsageDTO2.class).build();
|
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "标准件清单")
|
||||||
|
.head(MaterialUsageDTO2.class)
|
||||||
|
.build();
|
||||||
excelWriter.write(bomlist, writeSheet2);
|
excelWriter.write(bomlist, writeSheet2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -301,7 +292,10 @@ public class ProcessRouteController extends BaseController {
|
|||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
// 读取Excel的sheet6 从第三行开始 读取到第4列 无数据的跳过
|
// 读取Excel的sheet6 从第三行开始 读取到第4列 无数据的跳过
|
||||||
DefaultExcelListener<ProcessRoute> listener = new DefaultExcelListener<>(true);
|
DefaultExcelListener<ProcessRoute> listener = new DefaultExcelListener<>(true);
|
||||||
EasyExcel.read(ExcelName, ProcessRoute.class, listener).sheet(6).headRowNumber(3).doRead();
|
EasyExcel.read(ExcelName, ProcessRoute.class, listener)
|
||||||
|
.sheet(6)
|
||||||
|
.headRowNumber(3)
|
||||||
|
.doRead();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
@ -319,11 +313,16 @@ public class ProcessRouteController extends BaseController {
|
|||||||
ServletOutputStream os = response.getOutputStream();
|
ServletOutputStream os = response.getOutputStream();
|
||||||
|
|
||||||
// 使用 EasyExcel 写入已有Excel的第七个sheet(index=6)
|
// 使用 EasyExcel 写入已有Excel的第七个sheet(index=6)
|
||||||
try (ExcelWriter excelWriter = EasyExcel.write(os).withTemplate(file) // 指定模板文件
|
try (ExcelWriter excelWriter = EasyExcel.write(os)
|
||||||
.autoCloseStream(true).build()) {
|
.withTemplate(file) // 指定模板文件
|
||||||
|
.autoCloseStream(true)
|
||||||
|
.build()) {
|
||||||
|
|
||||||
// 写入到第七个 sheet(index=6),并命名为“工艺路线”
|
// 写入到第七个 sheet(index=6),并命名为“工艺路线”
|
||||||
WriteSheet writeSheet = EasyExcel.writerSheet("已有工艺路线").head(ProcessRoute.class).needHead(true).build();
|
WriteSheet writeSheet = EasyExcel.writerSheet("已有工艺路线")
|
||||||
|
.head(ProcessRoute.class)
|
||||||
|
.needHead(true)
|
||||||
|
.build();
|
||||||
excelWriter.write(list, writeSheet);
|
excelWriter.write(list, writeSheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -407,53 +406,6 @@ public class ProcessRouteController extends BaseController {
|
|||||||
return R.fail("项目 " + productionOrderNo + "已导入过工艺 ,请先清空再上传");
|
return R.fail("项目 " + productionOrderNo + "已导入过工艺 ,请先清空再上传");
|
||||||
}
|
}
|
||||||
if (iProcessRouteService.saveData(list1, list)) {
|
if (iProcessRouteService.saveData(list1, list)) {
|
||||||
// 获取当前登录用户昵称(需要在异步线程前获取)
|
|
||||||
String currentUserNickName = "未知用户";
|
|
||||||
try {
|
|
||||||
Long userId = LoginHelper.getUserId();
|
|
||||||
if (userId != null) {
|
|
||||||
SysUser user = userService.selectUserById(userId);
|
|
||||||
if (user != null && StringUtils.isNotEmpty(user.getNickName())) {
|
|
||||||
currentUserNickName = user.getNickName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.warn("获取当前登录用户昵称失败", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 异步发送钉钉卡片
|
|
||||||
String finalNickName = currentUserNickName;
|
|
||||||
CompletableFuture.runAsync(() -> {
|
|
||||||
try {
|
|
||||||
ProcessOrderPro order = processOrderProService.selectByProjectNumber(productionOrderNo);
|
|
||||||
if (order != null) {
|
|
||||||
// 获取 AccessToken
|
|
||||||
String accessToken = DingUtil.getAccessToken(dingTalkProperties.getAppKey(), dingTalkProperties.getAppSecret());
|
|
||||||
// 构造卡片数据
|
|
||||||
Map<String, String> cardDataMap = new HashMap<>();
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
||||||
cardDataMap.put("pro_number", StringUtils.defaultIfEmpty(order.getProductionOrderNo(), ""));
|
|
||||||
cardDataMap.put("createTime", order.getRouteUptime() != null ? sdf.format(new Date()) : "");
|
|
||||||
cardDataMap.put("title", finalNickName + "提交工艺审核");
|
|
||||||
cardDataMap.put("lastMessage", "请尽快处理");
|
|
||||||
cardDataMap.put("status", StringUtils.defaultIfEmpty("待审批", "待审批"));
|
|
||||||
|
|
||||||
String outTrackId = "audit-card-" + System.currentTimeMillis();
|
|
||||||
String outTrackId1 = DingUtil.createAndDeliverCard(accessToken, dingTalkProperties.getRouteCardTemplateId(), dingTalkProperties.getRobotCode(), dingTalkProperties.getOpenConversationId(), outTrackId, cardDataMap, dingTalkProperties.getCallbackRouteKey());
|
|
||||||
// 更新数据库中的AuditCardId
|
|
||||||
ProcessOrderPro update = new ProcessOrderPro();
|
|
||||||
update.setId(order.getId());
|
|
||||||
update.setUpdateBy("Dingding");
|
|
||||||
update.setAuditCardId(outTrackId1);
|
|
||||||
update.setBomStatus(2L);
|
|
||||||
// 更新审核状态为1(已审核/提交审核)
|
|
||||||
update.setRouteStatus(0L);
|
|
||||||
proMapper.updateById(update);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("发送钉钉卡片异常", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return R.ok("上传物料成功");
|
return R.ok("上传物料成功");
|
||||||
} else {
|
} else {
|
||||||
return R.fail("导入失败");
|
return R.fail("导入失败");
|
||||||
@ -596,14 +548,19 @@ public class ProcessRouteController extends BaseController {
|
|||||||
@Log(title = "获取材料bom列表")
|
@Log(title = "获取材料bom列表")
|
||||||
@SaCheckPermission("system:route:getBomInfo")
|
@SaCheckPermission("system:route:getBomInfo")
|
||||||
@PostMapping("/getBomInfo")
|
@PostMapping("/getBomInfo")
|
||||||
public ResponseEntity<List<MaterialBom>> getProcessMaterialList(@RequestParam(value = "materialCode") String materialCode, @RequestParam(value = "materialName") String materialName, @RequestParam(value = "productionOrderNo") String productionOrderNo) {
|
public ResponseEntity<List<MaterialBom>> getProcessMaterialList( @RequestParam(value = "materialCode") String materialCode,
|
||||||
return ResponseEntity.ok(iProcessRouteService.getProcessMaterialList(materialCode, materialName, productionOrderNo));
|
@RequestParam(value = "materialName") String materialName,
|
||||||
|
@RequestParam(value = "productionOrderNo") String productionOrderNo) {
|
||||||
|
|
||||||
|
return ResponseEntity
|
||||||
|
.ok(iProcessRouteService.getProcessMaterialList(materialCode, materialName, productionOrderNo));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Log(title = "获取金蝶列表")
|
@Log(title = "获取金蝶列表")
|
||||||
@SaCheckPermission("system:route:getProcessRouteList")
|
@SaCheckPermission("system:route:getProcessRouteList")
|
||||||
@GetMapping("/getProcessRouteList")
|
@GetMapping("/getProcessRouteList")
|
||||||
public ResponseEntity<List<ProcessRouteJdDTO>> getProcessRouteList(@RequestParam(value = "materialCode") String materialCode, @RequestParam(value = "materialName") String materialName, @RequestParam(value = "productionOrderNo") String productionOrderNo) {
|
public ResponseEntity<List<ProcessRouteJdDTO>> getProcessRouteList(@RequestParam(value = "materialCode") String materialCode, @RequestParam(value = "materialName") String materialName, @RequestParam(value = "productionOrderNo") String productionOrderNo) {
|
||||||
|
|
||||||
return ResponseEntity.ok(iProcessRouteService.getProcessRouteList(materialCode, materialName, productionOrderNo));
|
return ResponseEntity.ok(iProcessRouteService.getProcessRouteList(materialCode, materialName, productionOrderNo));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -613,7 +570,8 @@ public class ProcessRouteController extends BaseController {
|
|||||||
public R<Void> importDataTime(@RequestParam("file") MultipartFile file) throws Exception {
|
public R<Void> importDataTime(@RequestParam("file") MultipartFile file) throws Exception {
|
||||||
String originalFilename = file.getOriginalFilename();
|
String originalFilename = file.getOriginalFilename();
|
||||||
log.info("读取文件名: " + originalFilename);
|
log.info("读取文件名: " + originalFilename);
|
||||||
ExcelResult<ProcessRouteVo> result = ExcelUtil.importExcelSheet6(file.getInputStream(), ProcessRouteVo.class, true);
|
ExcelResult<ProcessRouteVo> result = ExcelUtil.importExcelSheet6(file.getInputStream(), ProcessRouteVo.class,
|
||||||
|
true);
|
||||||
List<ProcessRouteVo> list = result.getList();
|
List<ProcessRouteVo> list = result.getList();
|
||||||
List<ProcessRoute> list1 = iProcessRouteService.importDataTime(list);
|
List<ProcessRoute> list1 = iProcessRouteService.importDataTime(list);
|
||||||
return R.ok("更新成功");
|
return R.ok("更新成功");
|
||||||
@ -624,12 +582,15 @@ public class ProcessRouteController extends BaseController {
|
|||||||
@SaCheckPermission("system:route:importDataTime123")
|
@SaCheckPermission("system:route:importDataTime123")
|
||||||
@PostMapping(value = "/importDataTime123", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
@PostMapping(value = "/importDataTime123", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
public R<Void> importDataTime123(@RequestParam("file") MultipartFile file) throws Exception {
|
public R<Void> importDataTime123(@RequestParam("file") MultipartFile file) throws Exception {
|
||||||
|
|
||||||
DefaultExcelListener<PcRigidChainVo> listener = new DefaultExcelListener<>(true);
|
DefaultExcelListener<PcRigidChainVo> listener = new DefaultExcelListener<>(true);
|
||||||
EasyExcel.read(file.getInputStream(), PcRigidChainVo.class, listener).excelType(ExcelTypeEnum.XLS).sheet(1).headRowNumber(4).doRead();
|
EasyExcel.read(file.getInputStream(), PcRigidChainVo.class, listener).excelType(ExcelTypeEnum.XLS).sheet(1).headRowNumber(4).doRead();
|
||||||
|
|
||||||
List<PcRigidChainVo> list1 = listener.getExcelResult().getList();
|
List<PcRigidChainVo> list1 = listener.getExcelResult().getList();
|
||||||
for (PcRigidChainVo pcRigidChainVO : list1) {
|
for (PcRigidChainVo pcRigidChainVO : list1) {
|
||||||
log.info("数据 ===============>: " + JSONUtil.toJsonStr(pcRigidChainVO));
|
log.info("数据 ===============>: " + JSONUtil.toJsonStr(pcRigidChainVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
return R.ok("更新成功");
|
return R.ok("更新成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -690,6 +651,7 @@ public class ProcessRouteController extends BaseController {
|
|||||||
materialBom.setMaterialType(materialUsageDTO.getCaizhi());
|
materialBom.setMaterialType(materialUsageDTO.getCaizhi());
|
||||||
//保留四位小数
|
//保留四位小数
|
||||||
materialBom.setQuantity(String.valueOf(BigDecimal.valueOf(materialUsageDTO.getFenzi()).divide(new BigDecimal(materialUsageDTO.getFenmu()), 4, RoundingMode.HALF_UP)));
|
materialBom.setQuantity(String.valueOf(BigDecimal.valueOf(materialUsageDTO.getFenzi()).divide(new BigDecimal(materialUsageDTO.getFenmu()), 4, RoundingMode.HALF_UP)));
|
||||||
|
|
||||||
return materialBom;
|
return materialBom;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -716,77 +678,42 @@ public class ProcessRouteController extends BaseController {
|
|||||||
// 设置路线描述为生产订单号
|
// 设置路线描述为生产订单号
|
||||||
processRoute.setRouteDescription(productionOrderNo);
|
processRoute.setRouteDescription(productionOrderNo);
|
||||||
// 设置工序号
|
// 设置工序号
|
||||||
processRoute.setProcessNo(processRouteDTO != null ? processRouteDTO.getProcessNo() : null);
|
processRoute.setProcessNo(processRouteDTO.getProcessNo());
|
||||||
// 设置工序名称
|
// 设置工序名称
|
||||||
processRoute.setProcessName(processRouteDTO != null ? processRouteDTO.getProcessName() : null);
|
processRoute.setProcessName(processRouteDTO.getProcessName());
|
||||||
|
processRoute.setDiscWeight(Double.valueOf(materialAndRoute.getDanzhong()));
|
||||||
|
processRoute.setMaterial(materialAndRoute.getCaizhi());
|
||||||
|
|
||||||
if (materialAndRoute != null && StringUtils.isNotEmpty(materialAndRoute.getMaterialCode())) {
|
|
||||||
ImMaterial materialByCode = materialService.getMaterialByCode(materialAndRoute.getMaterialCode());
|
|
||||||
if (materialByCode != null && materialByCode.getSingleWeight() != null) {
|
|
||||||
processRoute.setDiscWeight(Double.valueOf(String.valueOf(materialByCode.getSingleWeight())));
|
|
||||||
} else {
|
|
||||||
processRoute.setDiscWeight(null);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
processRoute.setDiscWeight(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
processRoute.setMaterial(materialAndRoute != null ? materialAndRoute.getCaizhi() : null);
|
|
||||||
// 设置物料代码
|
// 设置物料代码
|
||||||
processRoute.setMaterialCode(materialAndRoute != null ? materialAndRoute.getMaterialCode() : null);
|
processRoute.setMaterialCode(materialAndRoute.getMaterialCode());
|
||||||
processRoute.setMaterialName(materialAndRoute != null ? materialAndRoute.getMaterialName() : null);
|
processRoute.setMaterialName(materialAndRoute.getMaterialName());
|
||||||
|
|
||||||
processRoute.setWorkCenter(processRouteDTO != null ? processRouteDTO.getWorkCenter() : null);
|
processRoute.setWorkCenter(processRouteDTO.getWorkCenter());
|
||||||
// 基本时长
|
// 基本时长
|
||||||
processRoute.setActivityDuration(processRouteDTO != null ? processRouteDTO.getActivityDuration() : null);
|
processRoute.setActivityDuration(processRouteDTO.getActivityDuration());
|
||||||
processRoute.setProcessDescription(processRouteDTO != null ? processRouteDTO.getProcessDescription() : null);
|
processRoute.setProcessDescription(processRouteDTO.getProcessDescription());
|
||||||
processRoute.setProcessControl(processRouteDTO != null ? processRouteDTO.getProcessControl() : null);
|
processRoute.setProcessControl(processRouteDTO.getProcessControl());
|
||||||
|
|
||||||
processRoute.setXuStartTime(null);
|
processRoute.setXuStartTime(null);
|
||||||
processRoute.setXuEndTime(null);
|
processRoute.setXuEndTime(null);
|
||||||
processRoute.setActivityUnit("分");
|
processRoute.setActivityUnit("分");
|
||||||
|
|
||||||
// 本批数量对应
|
// 本批数量对应
|
||||||
processRoute.setBatchQuantity(materialAndRoute != null ? materialAndRoute.getBenpi() : null);
|
processRoute.setBatchQuantity(materialAndRoute.getBenpi());
|
||||||
if (materialAndRoute != null && materialAndRoute.getDantai() != null) {
|
processRoute.setFirstBatchQuantity(Double.valueOf(materialAndRoute.getDantai()));
|
||||||
processRoute.setFirstBatchQuantity(Double.valueOf(materialAndRoute.getDantai()));
|
List<MaterialUseDTO> materialUsageDTOList = materialAndRoute.getMaterialUseDTOS();
|
||||||
} else {
|
for (MaterialUseDTO materialUsageDTO : materialUsageDTOList) {
|
||||||
processRoute.setFirstBatchQuantity(null);
|
processRoute.setUnitQuantity(materialUsageDTO.getFenzi());
|
||||||
}
|
processRoute.setBomMaterial(materialUsageDTO.getCaizhi());
|
||||||
|
processRoute.setRawMaterialCode(materialUsageDTO.getMaterialCode());
|
||||||
List<MaterialUseDTO> materialUsageDTOList = materialAndRoute != null ? materialAndRoute.getMaterialUseDTOS() : null;
|
processRoute.setRawMaterialName(materialUsageDTO.getMaterialName());
|
||||||
if (materialUsageDTOList != null) {
|
processRoute.setBomUnit(materialUsageDTO.getChildUnit());
|
||||||
for (MaterialUseDTO materialUsageDTO : materialUsageDTOList) {
|
if (materialUsageDTO.getChildUnit().equals("根")) {
|
||||||
if (materialUsageDTO != null) {
|
processRoute.setDiscUsage(String.valueOf(Double.valueOf(materialUsageDTO.getFenmu())));
|
||||||
processRoute.setUnitQuantity(materialUsageDTO.getFenzi());
|
} else {
|
||||||
processRoute.setBomMaterial(materialUsageDTO.getCaizhi());
|
processRoute.setDiscUsage(String.valueOf((double) (materialUsageDTO.getFenzi() / materialUsageDTO.getFenmu())));
|
||||||
processRoute.setRawMaterialCode(materialUsageDTO.getMaterialCode());
|
|
||||||
processRoute.setRawMaterialName(materialUsageDTO.getMaterialName());
|
|
||||||
processRoute.setBomUnit(materialUsageDTO.getChildUnit());
|
|
||||||
if ("根".equals(materialUsageDTO.getChildUnit())) {
|
|
||||||
if (materialUsageDTO.getFenmu() != null) {
|
|
||||||
processRoute.setDiscUsage(String.valueOf(Double.valueOf(materialUsageDTO.getFenmu())));
|
|
||||||
} else {
|
|
||||||
processRoute.setDiscUsage(null);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (materialUsageDTO.getFenzi() != null && materialUsageDTO.getFenmu() != null && materialUsageDTO.getFenmu() != 0) {
|
|
||||||
processRoute.setDiscUsage(String.valueOf(materialUsageDTO.getFenzi() / materialUsageDTO.getFenmu()));
|
|
||||||
} else {
|
|
||||||
processRoute.setDiscUsage(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
processRoute.setMaterial(materialUsageDTO.getCaizhi());
|
|
||||||
} else {
|
|
||||||
processRoute.setUnitQuantity(null);
|
|
||||||
processRoute.setBomMaterial(null);
|
|
||||||
processRoute.setRawMaterialCode(null);
|
|
||||||
processRoute.setRawMaterialName(null);
|
|
||||||
processRoute.setBomUnit(null);
|
|
||||||
processRoute.setDiscUsage(null);
|
|
||||||
processRoute.setMaterial(null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
processRoute.setMaterial(materialUsageDTO.getCaizhi());
|
||||||
|
|
||||||
}
|
}
|
||||||
return processRoute;
|
return processRoute;
|
||||||
}
|
}
|
||||||
@ -894,7 +821,8 @@ public class ProcessRouteController extends BaseController {
|
|||||||
return bomDetails;
|
return bomDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
private MaterialBom creatBomMaterial(MaterialUsageDTO materialUsageDTO, CombinedDTO combinedDTO, String productionOrderNo) {
|
private MaterialBom creatBomMaterial(MaterialUsageDTO materialUsageDTO, CombinedDTO combinedDTO,
|
||||||
|
String productionOrderNo) {
|
||||||
MaterialBom materialBom = new MaterialBom();
|
MaterialBom materialBom = new MaterialBom();
|
||||||
materialBom.setProjectNumber(productionOrderNo);
|
materialBom.setProjectNumber(productionOrderNo);
|
||||||
materialBom.setParentMaterialCode(combinedDTO.getMaterialCode());
|
materialBom.setParentMaterialCode(combinedDTO.getMaterialCode());
|
||||||
@ -917,23 +845,8 @@ public class ProcessRouteController extends BaseController {
|
|||||||
@PostMapping("/getAllRouteAndUse")
|
@PostMapping("/getAllRouteAndUse")
|
||||||
public void getAllRouteAndUse(@RequestParam("rooteProdet") String rooteProdet) {
|
public void getAllRouteAndUse(@RequestParam("rooteProdet") String rooteProdet) {
|
||||||
log.info("获取项目生产数据表:{}", rooteProdet);
|
log.info("获取项目生产数据表:{}", rooteProdet);
|
||||||
// 下载Excel模板 (切换为FTP方式)
|
// 下载Excel模板
|
||||||
// SmbUtil.downloadExcelFiles(rooteProdet);
|
SmbUtil.downloadExcelFiles(rooteProdet);
|
||||||
|
|
||||||
String ftpHost = "192.168.5.18";
|
|
||||||
String ftpUser = "admin";
|
|
||||||
String ftpPass = "hbyt2025";
|
|
||||||
int ftpPort = 21;
|
|
||||||
String localDir = "D:\\file";
|
|
||||||
// 假设远程目录结构与SMB一致,为 /2026/{rooteProdet}
|
|
||||||
String remoteDir = "/2026/" + rooteProdet;
|
|
||||||
|
|
||||||
R<String> ftpResult = FtpUtil.downloadFtpDirectoryFiles(ftpHost, ftpUser, ftpPass, ftpPort, remoteDir, localDir);
|
|
||||||
if (R.isError(ftpResult)) {
|
|
||||||
log.error("FTP下载失败: {}", ftpResult.getMsg());
|
|
||||||
} else {
|
|
||||||
log.info("FTP下载结果: {}", ftpResult.getMsg());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 构建Excel文件路径
|
// 构建Excel文件路径
|
||||||
String ExcelName = "D:\\file\\" + rooteProdet + "汇总表.xlsx";
|
String ExcelName = "D:\\file\\" + rooteProdet + "汇总表.xlsx";
|
||||||
@ -948,7 +861,10 @@ public class ProcessRouteController extends BaseController {
|
|||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
// 读取Excel的sheet6 从第三行开始 读取到第4列 无数据的跳过
|
// 读取Excel的sheet6 从第三行开始 读取到第4列 无数据的跳过
|
||||||
DefaultExcelListener<ProcessRouteGetDTO> listener = new DefaultExcelListener<>(true);
|
DefaultExcelListener<ProcessRouteGetDTO> listener = new DefaultExcelListener<>(true);
|
||||||
EasyExcel.read(ExcelName, ProcessRouteGetDTO.class, listener).sheet(6).headRowNumber(3).doRead();
|
EasyExcel.read(ExcelName, ProcessRouteGetDTO.class, listener)
|
||||||
|
.sheet(6)
|
||||||
|
.headRowNumber(3)
|
||||||
|
.doRead();
|
||||||
List<ProcessRouteGetDTO> list = listener.getExcelResult().getList();
|
List<ProcessRouteGetDTO> list = listener.getExcelResult().getList();
|
||||||
List<JDMaterialAndRoute> list1 = iProcessRouteService.getProcessRouteGD(list, rooteProdet);
|
List<JDMaterialAndRoute> list1 = iProcessRouteService.getProcessRouteGD(list, rooteProdet);
|
||||||
|
|
||||||
@ -970,16 +886,17 @@ public class ProcessRouteController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新生产订单仓库字段
|
* 更新生产订单仓库字段
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:route:updateProductionOrders")
|
@SaCheckPermission("system:route:updateProductionOrders")
|
||||||
@Log(title = "更新生产订单仓库", businessType = BusinessType.OTHER)
|
@Log(title = "更新生产订单仓库", businessType = BusinessType.OTHER)
|
||||||
@PostMapping("/updateProductionOrders")
|
@PostMapping("/updateProductionOrders")
|
||||||
public R updateProductionOrders(@RequestParam("rooteProdet") String rooteProdet, @RequestParam("cangKuNum") String cangKuNum) throws Exception {
|
public R updateProductionOrders(@RequestParam("rooteProdet") String rooteProdet,@RequestParam("cangKuNum")String cangKuNum) throws Exception {
|
||||||
//判断此项目是否有
|
//判断此项目是否有
|
||||||
List<String> list = iProcessRouteService.updateProductionOrders(rooteProdet, cangKuNum);
|
List<String> list = iProcessRouteService.updateProductionOrders(rooteProdet,cangKuNum);
|
||||||
return R.ok(list);
|
return R.ok(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -988,9 +905,9 @@ public class ProcessRouteController extends BaseController {
|
|||||||
@SaCheckPermission("system:route:updateProductionOrders")
|
@SaCheckPermission("system:route:updateProductionOrders")
|
||||||
@Log(title = "更新采购申请单仓库", businessType = BusinessType.OTHER)
|
@Log(title = "更新采购申请单仓库", businessType = BusinessType.OTHER)
|
||||||
@PostMapping("/updateCgOrders")
|
@PostMapping("/updateCgOrders")
|
||||||
public R updateCgOrders(@RequestParam("rooteProdet") String rooteProdet, @RequestParam("cangKuNum") String cangKuNum) throws Exception {
|
public R updateCgOrders(@RequestParam("rooteProdet") String rooteProdet,@RequestParam("cangKuNum")String cangKuNum) throws Exception {
|
||||||
//判断此项目是否有
|
//判断此项目是否有
|
||||||
List<String> list = iProcessRouteService.updateCgOrders(rooteProdet, cangKuNum);
|
List<String> list = iProcessRouteService.updateCgOrders(rooteProdet,cangKuNum);
|
||||||
return R.ok(list);
|
return R.ok(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,9 +110,4 @@ public class BomDetails extends BaseEntity {
|
|||||||
*bom类型
|
*bom类型
|
||||||
*/
|
*/
|
||||||
private String bomType;
|
private String bomType;
|
||||||
/**
|
|
||||||
*重要程度
|
|
||||||
*/
|
|
||||||
@JsonProperty("F_HBYT_ZYCD")
|
|
||||||
private String stateImportance;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,56 +80,16 @@ public class ProcessOrderPro extends BaseEntity {
|
|||||||
private String drawingPath;
|
private String drawingPath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目状态(0方案设计完成,1设计出图完成,2,工艺待审核 3 已推送BOM,4已推送工艺,5已核算MRP, 6开始生产,7生产完成,8 工艺审核完成 )
|
* bom状态(0,未完成 1,完成 2已上传)
|
||||||
*/
|
*/
|
||||||
private Long bomStatus;
|
private Long bomStatus;
|
||||||
/**
|
/**
|
||||||
* 工艺状态(0,未审核 1,已审核 2,已拒绝 )
|
* 工艺状态(0,未完成 1,完成 2已上传)
|
||||||
*/
|
*/
|
||||||
private Long routeStatus;
|
private Long routeStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工艺上传日志
|
* 工艺上传日志
|
||||||
*/
|
*/
|
||||||
private String routeLog;
|
private String routeLog;
|
||||||
/**
|
|
||||||
* 工艺上传更新时间
|
|
||||||
*/
|
|
||||||
private Date routeUptime;
|
|
||||||
/**
|
|
||||||
* 排产计划更新时间
|
|
||||||
*/
|
|
||||||
private Date planUptime;
|
|
||||||
/**
|
|
||||||
* BOM/物料更新时间
|
|
||||||
*/
|
|
||||||
private Date bomUptime;
|
|
||||||
/**
|
|
||||||
* bom数量
|
|
||||||
*/
|
|
||||||
private Long bomCount;
|
|
||||||
/**
|
|
||||||
* 物料数量
|
|
||||||
*/
|
|
||||||
private Long materialCount;
|
|
||||||
/**
|
|
||||||
* 工艺路线数量
|
|
||||||
*/
|
|
||||||
private Long routeCount;
|
|
||||||
/**
|
|
||||||
* 出图时间
|
|
||||||
*/
|
|
||||||
private Date drawingTime;
|
|
||||||
/**
|
|
||||||
* 出图人
|
|
||||||
*/
|
|
||||||
private String drawingBy;
|
|
||||||
/**
|
|
||||||
* 审核卡片Id
|
|
||||||
*/
|
|
||||||
private String auditCardId;
|
|
||||||
/**
|
|
||||||
* 通知卡片Id
|
|
||||||
*/
|
|
||||||
private String notificationCardId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,52 +48,46 @@ public class ProcessRoute extends BaseEntity {
|
|||||||
@ColumnWidth(25)
|
@ColumnWidth(25)
|
||||||
@ExcelProperty(value ={"名称","名称"},index=2)
|
@ExcelProperty(value ={"名称","名称"},index=2)
|
||||||
private String materialName;
|
private String materialName;
|
||||||
/**
|
|
||||||
* 重要程度
|
|
||||||
*/
|
|
||||||
@ColumnWidth(10)
|
|
||||||
@ExcelProperty(value={ "重要程度","重要程度"},index=5)
|
|
||||||
private String stateImportance;
|
|
||||||
/**
|
/**
|
||||||
* 材料BOM单位
|
* 材料BOM单位
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value={"单重KG","单重KG"},index=4)
|
@ExcelProperty(value={ "材料BOM","单位"},index=10)
|
||||||
private String bomUnit;
|
private String bomUnit;
|
||||||
/**
|
/**
|
||||||
* 材料BOM单位
|
* 材料BOM单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value={ "材料BOM","材料单重KG"},index=9)
|
@ExcelProperty(value={ "材料BOM","材料单重KG"},index=8)
|
||||||
private Double bomDanZhong;
|
private Double bomDanZhong;
|
||||||
/**
|
/**
|
||||||
* 工序号
|
* 工序号
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value ={ "工序号","工序号"},index = 12)
|
@ExcelProperty(value ={ "工序号","工序号"},index = 11)
|
||||||
private Long processNo;
|
private Long processNo;
|
||||||
/**
|
/**
|
||||||
* 工作中心(加工车间)
|
* 工作中心(加工车间)
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(20)
|
@ColumnWidth(20)
|
||||||
@ExcelProperty(value ={ "工作中心(加工车间)","工作中心(加工车间)"},index = 13)
|
@ExcelProperty(value ={ "工作中心(加工车间)","工作中心(加工车间)"},index = 12)
|
||||||
private String workCenter;
|
private String workCenter;
|
||||||
/**
|
/**
|
||||||
* 工序名称
|
* 工序名称
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(20)
|
@ColumnWidth(20)
|
||||||
@ExcelProperty(value ={ "工序名称","工序名称"},index = 14)
|
@ExcelProperty(value ={ "工序名称","工序名称"},index = 13)
|
||||||
private String processName;
|
private String processName;
|
||||||
/**
|
/**
|
||||||
* 材料BOM物料编码
|
* 材料BOM物料编码
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(20)
|
@ColumnWidth(20)
|
||||||
@ExcelProperty(value={ "材料BOM","物料编码"}, index=6)
|
@ExcelProperty(value={ "材料BOM","物料编码"}, index=5)
|
||||||
private String rawMaterialCode;
|
private String rawMaterialCode;
|
||||||
/**
|
/**
|
||||||
* 材料BOM物料名称
|
* 材料BOM物料名称
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(25)
|
@ColumnWidth(25)
|
||||||
@ExcelProperty(value={ "材料BOM","物料名称"},index = 7)
|
@ExcelProperty(value={ "材料BOM","物料名称"},index = 6)
|
||||||
private String rawMaterialName;
|
private String rawMaterialName;
|
||||||
/**
|
/**
|
||||||
* 单重KG
|
* 单重KG
|
||||||
@ -105,40 +99,40 @@ public class ProcessRoute extends BaseEntity {
|
|||||||
* 材料BOM用量
|
* 材料BOM用量
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value = { "材料BOM","用量"},index = 10)
|
@ExcelProperty(value = { "材料BOM","用量"},index = 9)
|
||||||
private String discUsage;
|
private String discUsage;
|
||||||
/**
|
/**
|
||||||
* 工序说明(序描述)
|
* 工序说明(序描述)
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(30)
|
@ColumnWidth(30)
|
||||||
@ExcelProperty(value ={ "工序说明(序描述)","工序说明(序描述)"},index = 15)
|
@ExcelProperty(value ={ "工序说明(序描述)","工序说明(序描述)"},index = 14)
|
||||||
private String processDescription;
|
private String processDescription;
|
||||||
/**
|
/**
|
||||||
* 工序控制
|
* 工序控制
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(20)
|
@ColumnWidth(20)
|
||||||
@ExcelProperty(value ={ "工序控制","工序控制"},index = 16)
|
@ExcelProperty(value ={ "工序控制","工序控制"},index = 15)
|
||||||
private String processControl;
|
private String processControl;
|
||||||
/**
|
/**
|
||||||
* 活动时长
|
* 活动时长
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
|
|
||||||
@ExcelProperty(value={ "活动时长","活动时长"},index = 17)
|
@ExcelProperty(value={ "活动时长","活动时长"},index = 16)
|
||||||
private Double activityDuration;
|
private Double activityDuration;
|
||||||
/**
|
/**
|
||||||
* 活动单位
|
* 活动单位
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
|
|
||||||
@ExcelProperty(value={ "活动单位","活动单位"},index =18)
|
@ExcelProperty(value={ "活动单位","活动单位"},index =17)
|
||||||
private String activityUnit;
|
private String activityUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bom材质
|
* bom材质
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(15)
|
@ColumnWidth(15)
|
||||||
@ExcelProperty(value={ "材料BOM","材质"},index = 8)
|
@ExcelProperty(value={ "材料BOM","材质"},index = 7)
|
||||||
private String bomMaterial;
|
private String bomMaterial;
|
||||||
/**
|
/**
|
||||||
* 材质
|
* 材质
|
||||||
@ -150,13 +144,13 @@ public class ProcessRoute extends BaseEntity {
|
|||||||
* 单台数量
|
* 单台数量
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value = {"制件数量","单台数量"},index = 19)
|
@ExcelProperty(value = {"制件数量","单台数量"},index = 18)
|
||||||
private Double unitQuantity;
|
private Double unitQuantity;
|
||||||
/**
|
/**
|
||||||
* 本批数量
|
* 本批数量
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value = {"制件数量","本批数量"},index = 20)
|
@ExcelProperty(value = {"制件数量","本批数量"},index = 19)
|
||||||
private Long batchQuantity;
|
private Long batchQuantity;
|
||||||
/**
|
/**
|
||||||
* 首批数量
|
* 首批数量
|
||||||
@ -178,14 +172,14 @@ public class ProcessRoute extends BaseEntity {
|
|||||||
* 序开始时间
|
* 序开始时间
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(15)
|
@ColumnWidth(15)
|
||||||
@ExcelProperty(value = {"计划完成时间","起始日期"},index = 21)
|
@ExcelProperty(value = {"计划完成时间","起始日期"},index = 20)
|
||||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
||||||
private Date xuStartTime;
|
private Date xuStartTime;
|
||||||
/**
|
/**
|
||||||
* 序结束时间
|
* 序结束时间
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(15)
|
@ColumnWidth(15)
|
||||||
@ExcelProperty(value = {"计划完成时间","完成日期"},index = 23)
|
@ExcelProperty(value = {"计划完成时间","完成日期"},index = 22)
|
||||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
||||||
private Date xuEndTime;
|
private Date xuEndTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -83,8 +83,4 @@ public class BomDetailsBo extends BaseEntity {
|
|||||||
*bom类型
|
*bom类型
|
||||||
*/
|
*/
|
||||||
private String bomType;
|
private String bomType;
|
||||||
/**
|
|
||||||
* 重要程度
|
|
||||||
*/
|
|
||||||
private String stateImportance;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,45 +110,5 @@ public class ProcessOrderProBo extends BaseEntity {
|
|||||||
* 工艺上传日志
|
* 工艺上传日志
|
||||||
*/
|
*/
|
||||||
private String routeLog;
|
private String routeLog;
|
||||||
/**
|
|
||||||
* 工艺上传更新时间
|
|
||||||
*/
|
|
||||||
private Date routeUptime;
|
|
||||||
/**
|
|
||||||
* 排产计划更新时间
|
|
||||||
*/
|
|
||||||
private Date planUptime;
|
|
||||||
/**
|
|
||||||
* BOM/物料更新时间
|
|
||||||
*/
|
|
||||||
private Date bomUptime;
|
|
||||||
/**
|
|
||||||
* bom数量
|
|
||||||
*/
|
|
||||||
private Long bomCount;
|
|
||||||
/**
|
|
||||||
* 物料数量
|
|
||||||
*/
|
|
||||||
private Long materialCount;
|
|
||||||
/**
|
|
||||||
* 工艺路线数量
|
|
||||||
*/
|
|
||||||
private Long routeCount;
|
|
||||||
/**
|
|
||||||
* 出图时间
|
|
||||||
*/
|
|
||||||
private Date drawingTime;
|
|
||||||
/**
|
|
||||||
* 出图人
|
|
||||||
*/
|
|
||||||
private String drawingBy;
|
|
||||||
/**
|
|
||||||
* 审核卡片Id
|
|
||||||
*/
|
|
||||||
private String auditCardId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通知卡片Id
|
|
||||||
*/
|
|
||||||
private String notificationCardId;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,9 +5,6 @@ import com.ruoyi.common.core.validate.AddGroup;
|
|||||||
import com.ruoyi.common.core.validate.EditGroup;
|
import com.ruoyi.common.core.validate.EditGroup;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
@ -152,10 +149,4 @@ public class ProcessRouteBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
||||||
private Date xuEndTime;
|
private Date xuEndTime;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 重要程度
|
|
||||||
*/
|
|
||||||
private String stateImportance;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -107,9 +107,4 @@ public class BomDetailsVo {
|
|||||||
*bom类型
|
*bom类型
|
||||||
*/
|
*/
|
||||||
private String bomType;
|
private String bomType;
|
||||||
/**
|
|
||||||
*重要程度
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "重要程度")
|
|
||||||
private String stateImportance;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,30 +0,0 @@
|
|||||||
package com.ruoyi.system.domain.vo;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设计人项目汇总 VO
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
public class DesignerProjectSummaryVo {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 设计人
|
|
||||||
*/
|
|
||||||
private String designer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 本周项目数
|
|
||||||
*/
|
|
||||||
private Long weeklyCount;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 本月项目数
|
|
||||||
*/
|
|
||||||
private Long monthlyCount;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 本年项目数
|
|
||||||
*/
|
|
||||||
private Long yearlyCount;
|
|
||||||
}
|
|
||||||
@ -125,49 +125,4 @@ public class ProcessOrderProVo {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "工艺上传日志")
|
@ExcelProperty(value = "工艺上传日志")
|
||||||
private String routeLog;
|
private String routeLog;
|
||||||
/**
|
|
||||||
* 工艺上传更新时间
|
|
||||||
*/
|
|
||||||
private Date routeUptime;
|
|
||||||
/**
|
|
||||||
* 排产计划更新时间
|
|
||||||
*/
|
|
||||||
private Date planUptime;
|
|
||||||
/**
|
|
||||||
* BOM/物料更新时间
|
|
||||||
*/
|
|
||||||
private Date bomUptime;
|
|
||||||
/**
|
|
||||||
* bom数量
|
|
||||||
*/
|
|
||||||
private Long bomCount;
|
|
||||||
/**
|
|
||||||
* 物料数量
|
|
||||||
*/
|
|
||||||
private Long materialCount;
|
|
||||||
/**
|
|
||||||
* 工艺路线数量
|
|
||||||
*/
|
|
||||||
private Long routeCount;
|
|
||||||
/**
|
|
||||||
* 出图人
|
|
||||||
*/
|
|
||||||
private String drawingBy;
|
|
||||||
/**
|
|
||||||
* 出图时间
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "出图时间")
|
|
||||||
private Date drawingTime;
|
|
||||||
/**
|
|
||||||
* 审核卡片Id
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "审核卡片Id")
|
|
||||||
private String auditCardId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通知卡片Id
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "通知卡片Id")
|
|
||||||
private String notificationCardId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import com.ruoyi.common.convert.ExcelDictConvert;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -28,7 +27,7 @@ import java.util.List;
|
|||||||
@ContentRowHeight(15)
|
@ContentRowHeight(15)
|
||||||
@HeadRowHeight(20)
|
@HeadRowHeight(20)
|
||||||
@ColumnWidth(15)
|
@ColumnWidth(15)
|
||||||
public class ProcessRouteVo implements Serializable {
|
public class ProcessRouteVo {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private List<ProcessRouteVo> children;
|
private List<ProcessRouteVo> children;
|
||||||
@ -75,17 +74,10 @@ public class ProcessRouteVo implements Serializable {
|
|||||||
@ColumnWidth(5)
|
@ColumnWidth(5)
|
||||||
@ExcelProperty(value={"单重KG","单重KG"},index=4)
|
@ExcelProperty(value={"单重KG","单重KG"},index=4)
|
||||||
private Double discWeight;
|
private Double discWeight;
|
||||||
/**
|
|
||||||
* 重要程度
|
|
||||||
*/
|
|
||||||
@ColumnWidth(5)
|
|
||||||
@ExcelProperty(value={"重要程度","重要程度"},index=5)
|
|
||||||
private String stateImportance;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 材料BOM物料编码
|
* 材料BOM物料编码
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value={ "材料BOM","物料编码"}, index=6)
|
@ExcelProperty(value={ "材料BOM","物料编码"}, index=5)
|
||||||
private String rawMaterialCode;
|
private String rawMaterialCode;
|
||||||
|
|
||||||
|
|
||||||
@ -93,88 +85,88 @@ public class ProcessRouteVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 材料BOM物料名称
|
* 材料BOM物料名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value={ "材料BOM","物料名称"},index = 7)
|
@ExcelProperty(value={ "材料BOM","物料名称"},index = 6)
|
||||||
private String rawMaterialName;
|
private String rawMaterialName;
|
||||||
/**
|
/**
|
||||||
* bom材质
|
* bom材质
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(7)
|
@ColumnWidth(7)
|
||||||
@ExcelProperty(value={ "材料BOM","材质"},index =8)
|
@ExcelProperty(value={ "材料BOM","材质"},index = 7)
|
||||||
private String bomMaterial;
|
private String bomMaterial;
|
||||||
/**
|
/**
|
||||||
* 材料BOM单位
|
* 材料BOM单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value={ "材料BOM","材料单重KG"},index=9)
|
@ExcelProperty(value={ "材料BOM","材料单重KG"},index=8)
|
||||||
private Double bomDanZhong;
|
private Double bomDanZhong;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 材料BOM用量
|
* 材料BOM用量
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value = { "材料BOM","用量"},index = 10)
|
@ExcelProperty(value = { "材料BOM","用量"},index = 9)
|
||||||
private String discUsage;
|
private String discUsage;
|
||||||
/**
|
/**
|
||||||
* 材料BOM单位
|
* 材料BOM单位
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(6)
|
@ColumnWidth(6)
|
||||||
@ExcelProperty(value={ "材料BOM","单位"},index=11)
|
@ExcelProperty(value={ "材料BOM","单位"},index=10)
|
||||||
private String bomUnit;
|
private String bomUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工序号
|
* 工序号
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(10)
|
@ColumnWidth(10)
|
||||||
@ExcelProperty(value ={ "工序号","工序号"},index = 12)
|
@ExcelProperty(value ={ "工序号","工序号"},index = 11)
|
||||||
private Long processNo;
|
private Long processNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作中心(加工车间)
|
* 工作中心(加工车间)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value ={ "工作中心(加工车间)","工作中心(加工车间)"},index = 13)
|
@ExcelProperty(value ={ "工作中心(加工车间)","工作中心(加工车间)"},index = 12)
|
||||||
private String workCenter;
|
private String workCenter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工序名称
|
* 工序名称
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value ={ "工序名称","工序名称"},index = 14)
|
@ExcelProperty(value ={ "工序名称","工序名称"},index = 13)
|
||||||
private String processName;
|
private String processName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工序说明(序描述)
|
* 工序说明(序描述)
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(25)
|
@ColumnWidth(25)
|
||||||
@ExcelProperty(value ={ "工序说明(序描述)","工序说明(序描述)"},index = 15)
|
@ExcelProperty(value ={ "工序说明(序描述)","工序说明(序描述)"},index = 14)
|
||||||
private String processDescription;
|
private String processDescription;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工序控制
|
* 工序控制
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value ={ "工序控制","工序控制"},index = 16)
|
@ExcelProperty(value ={ "工序控制","工序控制"},index = 15)
|
||||||
private String processControl;
|
private String processControl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 活动时长
|
* 活动时长
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value ={ "活动时长","活动时长"},index = 17)
|
@ExcelProperty(value ={ "活动时长","活动时长"},index = 16)
|
||||||
private Double activityDuration;
|
private Double activityDuration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 活动单位
|
* 活动单位
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value ={ "活动单位","活动单位"},index = 18)
|
@ExcelProperty(value ={ "活动单位","活动单位"},index = 17)
|
||||||
private String activityUnit;
|
private String activityUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单台数量
|
* 单台数量
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = {"制件数量","单台数量"},index = 19)
|
@ExcelProperty(value = {"制件数量","单台数量"},index = 18)
|
||||||
private Long unitQuantity;
|
private Long unitQuantity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 本批数量
|
* 本批数量
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ExcelProperty(value = {"制件数量","本批数量"},index = 20)
|
@ExcelProperty(value = {"制件数量","本批数量"},index = 19)
|
||||||
private Long batchQuantity;
|
private Long batchQuantity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -198,7 +190,7 @@ public class ProcessRouteVo implements Serializable {
|
|||||||
* 序开始时间
|
* 序开始时间
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(18)
|
@ColumnWidth(18)
|
||||||
@ExcelProperty(value = {"计划完成时间","起始日期"},index = 21)
|
@ExcelProperty(value = {"计划完成时间","起始日期"},index = 20)
|
||||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
||||||
private Date xuStartTime;
|
private Date xuStartTime;
|
||||||
|
|
||||||
@ -206,7 +198,7 @@ public class ProcessRouteVo implements Serializable {
|
|||||||
* 序结束时间
|
* 序结束时间
|
||||||
*/
|
*/
|
||||||
@ColumnWidth(18)
|
@ColumnWidth(18)
|
||||||
@ExcelProperty(value = {"计划完成时间","完成日期"},index = 23)
|
@ExcelProperty(value = {"计划完成时间","完成日期"},index = 22)
|
||||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
|
||||||
private Date xuEndTime;
|
private Date xuEndTime;
|
||||||
|
|
||||||
|
|||||||
@ -124,19 +124,8 @@ public class SmbUtils {
|
|||||||
throw new IOException("无法创建本地目录: " + localDir.getAbsolutePath());
|
throw new IOException("无法创建本地目录: " + localDir.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 动态解析年份
|
|
||||||
String year = "2025"; // 默认年份
|
|
||||||
if (targetFolder != null) {
|
|
||||||
String[] parts = targetFolder.split("-");
|
|
||||||
if (parts.length >= 2 && parts[1].length() == 2 && parts[1].matches("\\d+")) {
|
|
||||||
year = "20" + parts[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 定位到远程目标子目录
|
// 定位到远程目标子目录
|
||||||
String smbUrl = "smb://192.168.5.18/" + year + "/" + targetFolder + "/";
|
SmbFile remoteDir = new SmbFile("smb://192.168.5.18/2025/" + targetFolder + "/", cifs);
|
||||||
System.out.println("尝试连接SMB路径: " + smbUrl);
|
|
||||||
SmbFile remoteDir = new SmbFile(smbUrl, cifs);
|
|
||||||
|
|
||||||
if (!remoteDir.exists() || !remoteDir.isDirectory()) {
|
if (!remoteDir.exists() || !remoteDir.isDirectory()) {
|
||||||
System.err.println("远程目录不存在或不是一个目录: " + remoteDir.getCanonicalPath());
|
System.err.println("远程目录不存在或不是一个目录: " + remoteDir.getCanonicalPath());
|
||||||
|
|||||||
@ -4,8 +4,6 @@ import com.ruoyi.system.domain.ProcessPlan;
|
|||||||
import com.ruoyi.system.domain.vo.ProcessPlanVo;
|
import com.ruoyi.system.domain.vo.ProcessPlanVo;
|
||||||
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
import com.ruoyi.common.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
import com.ruoyi.system.domain.vo.DesignerProjectSummaryVo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 方案管理Mapper接口
|
* 方案管理Mapper接口
|
||||||
*
|
*
|
||||||
|
|||||||
@ -35,7 +35,7 @@ public class PDFGenerator {
|
|||||||
static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
|
||||||
// 绘制表格行的方法
|
// 绘制表格行的方法
|
||||||
private static PDPageContentStream drawTableRow(PDPageContentStream contentStream, PDType0Font font, float margin, float yStart,
|
private static void drawTableRow(PDPageContentStream contentStream, PDType0Font font, float margin, float yStart,
|
||||||
float tableWidth, float[] colWidths, String[] cells, PDDocument document,
|
float tableWidth, float[] colWidths, String[] cells, PDDocument document,
|
||||||
PDPage page, float rowHeight, float pageHeight) throws IOException {
|
PDPage page, float rowHeight, float pageHeight) throws IOException {
|
||||||
float nextX = margin;
|
float nextX = margin;
|
||||||
@ -72,8 +72,6 @@ public class PDFGenerator {
|
|||||||
|
|
||||||
nextX += colWidths[i];
|
nextX += colWidths[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return contentStream; // 返回可能更新后的contentStream
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成二维码
|
// 生成二维码
|
||||||
@ -215,18 +213,18 @@ public class PDFGenerator {
|
|||||||
SimpleDateFormat formatte11r = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat formatte11r = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
// 绘制生产订单信息表格
|
// 绘制生产订单信息表格
|
||||||
float[] colWidths = { 60, 95, 110, 110, 60, 60, 55 };
|
float[] colWidths = { 60, 95, 110, 110, 60, 60, 55 };
|
||||||
contentStream = drawTableRow(contentStream, font, margin, yStart, tableWidth, colWidths,
|
drawTableRow(contentStream, font, margin, yStart, tableWidth, colWidths,
|
||||||
new String[] { "生产令号", rooteProdet,
|
new String[] { "生产令号", rooteProdet,
|
||||||
"开始时间", formatte11r.format(starttime), "结束时间", formatte11r.format(endtime) },
|
"开始时间", formatte11r.format(starttime), "结束时间", formatte11r.format(endtime) },
|
||||||
document, page, rowHeight, pageHeight);
|
document, page, rowHeight, pageHeight);
|
||||||
|
|
||||||
yStart -= rowHeight;
|
yStart -= rowHeight;
|
||||||
contentStream = drawTableRow(contentStream, font, margin, yStart, tableWidth, colWidths,
|
drawTableRow(contentStream, font, margin, yStart, tableWidth, colWidths,
|
||||||
new String[] { "单据编号", "生产订单编号", "产品名称", "产品编码", "数量", "生产车间", "次数" }, document, page,
|
new String[] { "单据编号", "生产订单编号", "产品名称", "产品编码", "数量", "生产车间", "次数" }, document, page,
|
||||||
rowHeight, pageHeight);
|
rowHeight, pageHeight);
|
||||||
|
|
||||||
yStart -= rowHeight;
|
yStart -= rowHeight;
|
||||||
contentStream = drawTableRow(contentStream, font, margin, yStart, tableWidth, colWidths, new String[] {
|
drawTableRow(contentStream, font, margin, yStart, tableWidth, colWidths, new String[] {
|
||||||
productionOrderNumber, combinedVo.getOrderNumber(), combinedVo.getMaterialName(),
|
productionOrderNumber, combinedVo.getOrderNumber(), combinedVo.getMaterialName(),
|
||||||
combinedVo.getMaterialCode(),
|
combinedVo.getMaterialCode(),
|
||||||
String.valueOf(fmoQty), fDepartmentName, "1", "" }, document, page, rowHeight, pageHeight);
|
String.valueOf(fmoQty), fDepartmentName, "1", "" }, document, page, rowHeight, pageHeight);
|
||||||
@ -237,16 +235,14 @@ public class PDFGenerator {
|
|||||||
yStart = processTableStartY;
|
yStart = processTableStartY;
|
||||||
|
|
||||||
// 使用支持换行的方法绘制表头
|
// 使用支持换行的方法绘制表头
|
||||||
Object[] result = drawTableRowWithWrap(contentStream, font, margin, yStart, tableWidth, processColWidths, new String[] {
|
yStart = drawTableRowWithWrap(contentStream, font, margin, yStart, tableWidth, processColWidths, new String[] {
|
||||||
"工序号", "工序名称", "数量", "工作中心", "工时(分)", "工序说明", "控制码", "开始时间", "结束时间" }, document, page,
|
"工序号", "工序名称", "数量", "工作中心", "工时(分)", "工序说明", "控制码", "开始时间", "结束时间" }, document, page,
|
||||||
rowHeight, pageHeight);
|
rowHeight, pageHeight);
|
||||||
contentStream = (PDPageContentStream) result[0];
|
|
||||||
yStart = (Float) result[1];
|
|
||||||
|
|
||||||
for (PlannedProcessVo process : combinedVo.getProcesses()) {
|
for (PlannedProcessVo process : combinedVo.getProcesses()) {
|
||||||
SimpleDateFormat formatte1r = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat formatte1r = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
// 使用支持换行的方法绘制数据行,特别是工序说明字段
|
// 使用支持换行的方法绘制数据行,特别是工序说明字段
|
||||||
Object[] processResult = drawTableRowWithWrap(contentStream, font, margin, yStart, tableWidth, processColWidths, new String[] {
|
yStart = drawTableRowWithWrap(contentStream, font, margin, yStart, tableWidth, processColWidths, new String[] {
|
||||||
String.valueOf(process.getFOperNumber()), process.getFProcessName(),
|
String.valueOf(process.getFOperNumber()), process.getFProcessName(),
|
||||||
String.valueOf(process.getFOperQty()),
|
String.valueOf(process.getFOperQty()),
|
||||||
process.getFWorkCenterName(), String.format("%.2f", process.getFActivity1BaseQty()),
|
process.getFWorkCenterName(), String.format("%.2f", process.getFActivity1BaseQty()),
|
||||||
@ -259,8 +255,6 @@ public class PDFGenerator {
|
|||||||
? (formatte1r.format(process.getFSeqPlanFinishTime()))
|
? (formatte1r.format(process.getFSeqPlanFinishTime()))
|
||||||
: ""
|
: ""
|
||||||
}, document, page, rowHeight, pageHeight);
|
}, document, page, rowHeight, pageHeight);
|
||||||
contentStream = (PDPageContentStream) processResult[0];
|
|
||||||
yStart = (Float) processResult[1];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加生产用料清单标题
|
// 添加生产用料清单标题
|
||||||
@ -281,7 +275,7 @@ public class PDFGenerator {
|
|||||||
|
|
||||||
// 用料清单表头
|
// 用料清单表头
|
||||||
float[] materialColWidths = { 25, 130, 110, 50, 35, 40, 40, 80, 50 };
|
float[] materialColWidths = { 25, 130, 110, 50, 35, 40, 40, 80, 50 };
|
||||||
contentStream = drawTableRow(contentStream, font, margin, yStart, tableWidth, materialColWidths, new String[] {
|
drawTableRow(contentStream, font, margin, yStart, tableWidth, materialColWidths, new String[] {
|
||||||
"序号", "物料编码", "物料名称", "规格型号", "单位", "应发数", "已领数", "仓库", "备注"
|
"序号", "物料编码", "物料名称", "规格型号", "单位", "应发数", "已领数", "仓库", "备注"
|
||||||
}, document, page, rowHeight, pageHeight);
|
}, document, page, rowHeight, pageHeight);
|
||||||
|
|
||||||
@ -299,7 +293,7 @@ public class PDFGenerator {
|
|||||||
yStart = pageHeight - margin;
|
yStart = pageHeight - margin;
|
||||||
|
|
||||||
// 绘制用料清单表头
|
// 绘制用料清单表头
|
||||||
contentStream = drawTableRow(contentStream, font, margin, yStart, tableWidth, materialColWidths,
|
drawTableRow(contentStream, font, margin, yStart, tableWidth, materialColWidths,
|
||||||
new String[] {
|
new String[] {
|
||||||
"序号", "物料编码", "物料名称", "规格型号", "单位", "应发数", "已领数", "仓库", "备注"
|
"序号", "物料编码", "物料名称", "规格型号", "单位", "应发数", "已领数", "仓库", "备注"
|
||||||
}, document, page, rowHeight, pageHeight);
|
}, document, page, rowHeight, pageHeight);
|
||||||
@ -308,7 +302,7 @@ public class PDFGenerator {
|
|||||||
|
|
||||||
MaterialUsageDTO material = materialUsageDTOList.get(i);
|
MaterialUsageDTO material = materialUsageDTOList.get(i);
|
||||||
SimpleDateFormat formatte1r = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat formatte1r = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
contentStream = drawTableRow(contentStream, font, margin, yStart, tableWidth, materialColWidths,
|
drawTableRow(contentStream, font, margin, yStart, tableWidth, materialColWidths,
|
||||||
new String[] {
|
new String[] {
|
||||||
String.valueOf(i + 1), material.getMaterialCode(),
|
String.valueOf(i + 1), material.getMaterialCode(),
|
||||||
material.getMaterialName(),
|
material.getMaterialName(),
|
||||||
@ -558,7 +552,7 @@ public class PDFGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Java 8兼容的改进表格绘制方法,支持自动换行
|
// Java 8兼容的改进表格绘制方法,支持自动换行
|
||||||
private static Object[] drawTableRowWithWrap(PDPageContentStream contentStream, PDType0Font font, float margin,
|
private static float drawTableRowWithWrap(PDPageContentStream contentStream, PDType0Font font, float margin,
|
||||||
float yStart, float tableWidth, float[] colWidths, String[] cells, PDDocument document,
|
float yStart, float tableWidth, float[] colWidths, String[] cells, PDDocument document,
|
||||||
PDPage page, float baseRowHeight, float pageHeight) throws IOException {
|
PDPage page, float baseRowHeight, float pageHeight) throws IOException {
|
||||||
|
|
||||||
@ -619,7 +613,7 @@ public class PDFGenerator {
|
|||||||
nextX += colWidths[i];
|
nextX += colWidths[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Object[]{contentStream, nextY - actualRowHeight}; // 返回contentStream和下一行的Y坐标
|
return nextY - actualRowHeight; // 返回下一行的Y坐标
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.ruoyi.system.service;
|
package com.ruoyi.system.service;
|
||||||
|
|
||||||
import com.ruoyi.system.domain.ProcessPlan;
|
import com.ruoyi.system.domain.ProcessPlan;
|
||||||
import com.ruoyi.system.domain.vo.DesignerProjectSummaryVo;
|
|
||||||
import com.ruoyi.system.domain.vo.ExpiryProjectVo;
|
import com.ruoyi.system.domain.vo.ExpiryProjectVo;
|
||||||
import com.ruoyi.system.domain.vo.OverdueProjectVo;
|
import com.ruoyi.system.domain.vo.OverdueProjectVo;
|
||||||
import com.ruoyi.system.domain.vo.ProcessPlanVo;
|
import com.ruoyi.system.domain.vo.ProcessPlanVo;
|
||||||
@ -55,9 +54,4 @@ public interface IProcessPlanService {
|
|||||||
List<ExpiryProjectVo> getExpiryProjects();
|
List<ExpiryProjectVo> getExpiryProjects();
|
||||||
|
|
||||||
TableDataInfo<ProcessPlanVo> queryPageList2(ProcessPlanBo bo, PageQuery pageQuery);
|
TableDataInfo<ProcessPlanVo> queryPageList2(ProcessPlanBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取设计人项目汇总(每周、每月、每年)
|
|
||||||
*/
|
|
||||||
List<DesignerProjectSummaryVo> getDesignerProjectSummary();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,10 +49,5 @@ public interface IWlStockDataService {
|
|||||||
|
|
||||||
List<WlStockData> generateDoc();
|
List<WlStockData> generateDoc();
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成安全库存数据但不存入数据库
|
|
||||||
*/
|
|
||||||
List<WlStockData> generateStockDataOnly();
|
|
||||||
|
|
||||||
List<String> getLogs(int lastIndex);
|
List<String> getLogs(int lastIndex);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,44 +1,38 @@
|
|||||||
package com.ruoyi.system.service.impl;
|
package com.ruoyi.system.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.io.FileUtil;
|
|
||||||
import cn.hutool.core.io.IoUtil;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.lowagie.text.Rectangle;
|
import com.lowagie.text.Rectangle;
|
||||||
import com.lowagie.text.pdf.PdfReader;
|
import com.lowagie.text.pdf.PdfReader;
|
||||||
import com.ruoyi.common.config.DingTalkProperties;
|
|
||||||
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.constant.Constants;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.dingding.DingUtil;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.helper.LoginHelper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.ruoyi.common.utils.FtpUtil;
|
import com.ruoyi.common.utils.FtpUtil;
|
||||||
import com.ruoyi.common.utils.HttpUtils;
|
import com.ruoyi.common.utils.HttpUtils;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
|
||||||
import com.ruoyi.common.utils.file.DeleteFile;
|
import com.ruoyi.common.utils.file.DeleteFile;
|
||||||
import com.ruoyi.common.utils.file.PDFDocHelper;
|
import com.ruoyi.common.utils.file.PDFDocHelper;
|
||||||
import com.ruoyi.oss.factory.OssFactory;
|
|
||||||
import com.ruoyi.system.domain.*;
|
import com.ruoyi.system.domain.*;
|
||||||
import com.ruoyi.system.domain.bo.ProcessOrderProBo;
|
|
||||||
import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO;
|
import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO;
|
||||||
import com.ruoyi.system.domain.dto.excuteDrawing.DataInfo;
|
import com.ruoyi.system.domain.dto.excuteDrawing.DataInfo;
|
||||||
import com.ruoyi.system.domain.dto.excuteDrawing.ProductInfo;
|
import com.ruoyi.system.domain.dto.excuteDrawing.ProductInfo;
|
||||||
import com.ruoyi.system.domain.dto.excuteDrawing.PwProductionBill;
|
import com.ruoyi.system.domain.dto.excuteDrawing.PwProductionBill;
|
||||||
import com.ruoyi.system.domain.dto.excuteDrawing.RigidChainModelDTO;
|
import com.ruoyi.system.domain.dto.excuteDrawing.RigidChainModelDTO;
|
||||||
import com.ruoyi.system.domain.vo.OverdueProjectVo;
|
import com.ruoyi.system.domain.vo.OverdueProjectVo;
|
||||||
import com.ruoyi.system.domain.vo.ProcessOrderProVo;
|
|
||||||
import com.ruoyi.system.domain.vo.ProductionOrderVo;
|
import com.ruoyi.system.domain.vo.ProductionOrderVo;
|
||||||
import com.ruoyi.system.domain.vo.SysOssVo;
|
|
||||||
import com.ruoyi.system.listener.FileToZip;
|
import com.ruoyi.system.listener.FileToZip;
|
||||||
import com.ruoyi.system.listener.SmbUtils;
|
import com.ruoyi.system.listener.SmbUtils;
|
||||||
import com.ruoyi.system.mapper.*;
|
import com.ruoyi.system.mapper.*;
|
||||||
|
import com.ruoyi.system.runner.JdUtil;
|
||||||
import com.ruoyi.system.service.*;
|
import com.ruoyi.system.service.*;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -47,26 +41,27 @@ import org.springframework.beans.BeanUtils;
|
|||||||
import org.springframework.beans.BeanWrapper;
|
import org.springframework.beans.BeanWrapper;
|
||||||
import org.springframework.beans.BeanWrapperImpl;
|
import org.springframework.beans.BeanWrapperImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import com.ruoyi.system.domain.bo.ProcessOrderProBo;
|
||||||
|
import com.ruoyi.system.domain.vo.ProcessOrderProVo;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
import java.util.function.Function;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目令号Service业务层处理
|
* 项目令号Service业务层处理
|
||||||
@ -80,8 +75,7 @@ import java.util.stream.Collectors;
|
|||||||
public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
||||||
private final FigureSaveMapper figureSaveMapper;
|
private final FigureSaveMapper figureSaveMapper;
|
||||||
private final IMaterialBomService materialBomService;
|
private final IMaterialBomService materialBomService;
|
||||||
private final DingTalkProperties dingTalkProperties;
|
|
||||||
private final ISysOssService iSysOssService;
|
|
||||||
private final ProcessOrderProMapper baseMapper;
|
private final ProcessOrderProMapper baseMapper;
|
||||||
private final DeviceSpec35rMapper deviceSpec35rMapper;
|
private final DeviceSpec35rMapper deviceSpec35rMapper;
|
||||||
private final DeviceSpec30sMapper deviceSpec30sMapper;
|
private final DeviceSpec30sMapper deviceSpec30sMapper;
|
||||||
@ -93,13 +87,18 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
private final DeviceSpec100rMapper deviceSpec100rMapper;
|
private final DeviceSpec100rMapper deviceSpec100rMapper;
|
||||||
|
|
||||||
private final SafetyStockMapper safetyStockMapper;
|
private final SafetyStockMapper safetyStockMapper;
|
||||||
private final IProcessRouteService iProcessRouteService;
|
|
||||||
private final IProductionOrderService iProductionOrderService;
|
|
||||||
private final ISysUserService userService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProcessRouteMapper processRouteMapper;
|
private ProcessRouteMapper processRouteMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IPcRigidChainService pcRigidChainService;
|
private IPcRigidChainService pcRigidChainService;
|
||||||
|
private final IProcessRouteService iProcessRouteService;
|
||||||
|
private final IProductionOrderService iProductionOrderService;
|
||||||
|
private static final String FILE_EXTENSION = ".xlsx"; // 目标文件后缀
|
||||||
|
private static final String LOCAL_DIR = "D:/file/";
|
||||||
|
private static final String ROBOTID = "8af8abea-3f21-4ca7-ad0a-5b7a2cf4d78e";
|
||||||
|
|
||||||
@Value("${app.drawing.base-path:F:}")
|
@Value("${app.drawing.base-path:F:}")
|
||||||
private String basePath;
|
private String basePath;
|
||||||
|
|
||||||
@ -112,79 +111,84 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
private String statusUrl;
|
private String statusUrl;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IFigureSaveService iFigureSaveService;
|
private IFigureSaveService iFigureSaveService;
|
||||||
|
|
||||||
|
private interface SpecStrategy {
|
||||||
|
ProductInfo build(FigureSave figureSave);
|
||||||
|
}
|
||||||
|
|
||||||
private Map<String, SpecStrategy> specStrategies;
|
private Map<String, SpecStrategy> specStrategies;
|
||||||
|
|
||||||
public static String[] getNullPropertyNames(Object source) {
|
|
||||||
BeanWrapper src = new BeanWrapperImpl(source);
|
|
||||||
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
|
|
||||||
|
|
||||||
Set<String> emptyNames = new HashSet<>();
|
|
||||||
for (java.beans.PropertyDescriptor pd : pds) {
|
|
||||||
Object srcValue = src.getPropertyValue(pd.getName());
|
|
||||||
if (srcValue == null) emptyNames.add(pd.getName());
|
|
||||||
}
|
|
||||||
return emptyNames.toArray(new String[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void copyPropertiesIgnoreNull(Object src, Object target) {
|
|
||||||
BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initStrategies() {
|
private void initStrategies() {
|
||||||
if (specStrategies != null) return;
|
if (specStrategies != null) return;
|
||||||
specStrategies = new HashMap<>();
|
specStrategies = new HashMap<>();
|
||||||
specStrategies.put("35R", figureSave -> {
|
specStrategies.put("35R", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec35r> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec35r> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(DeviceSpec35r::getBoxType, figureSave.getBoxType()).eq(DeviceSpec35r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec35r::getItemType, figureSave.getProductType());
|
wrapper.eq(DeviceSpec35r::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec35r::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec35r::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec35r device = deviceSpec35rMapper.selectOne(wrapper);
|
DeviceSpec35r device = deviceSpec35rMapper.selectOne(wrapper);
|
||||||
if (device == null) return null;
|
if (device == null) return null;
|
||||||
return buildProductInfo(figureSave, device);
|
return buildProductInfo(figureSave, device);
|
||||||
});
|
});
|
||||||
specStrategies.put("30S", figureSave -> {
|
specStrategies.put("30S", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec30s> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec30s> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(DeviceSpec30s::getBoxType, figureSave.getBoxType()).eq(DeviceSpec30s::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec30s::getItemType, figureSave.getProductType());
|
wrapper.eq(DeviceSpec30s::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec30s::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec30s::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec30s device = deviceSpec30sMapper.selectOne(wrapper);
|
DeviceSpec30s device = deviceSpec30sMapper.selectOne(wrapper);
|
||||||
if (device == null) return null;
|
if (device == null) return null;
|
||||||
return buildProductInfo30S(figureSave, device);
|
return buildProductInfo30S(figureSave, device);
|
||||||
});
|
});
|
||||||
specStrategies.put("30D", figureSave -> {
|
specStrategies.put("30D", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec30d> w = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec30d> w = new LambdaQueryWrapper<>();
|
||||||
w.eq(DeviceSpec30d::getBoxType, figureSave.getBoxType()).eq(DeviceSpec30d::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec30d::getItemType, figureSave.getProductType());
|
w.eq(DeviceSpec30d::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec30d::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec30d::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec30d d = deviceSpec30dMapper.selectOne(w);
|
DeviceSpec30d d = deviceSpec30dMapper.selectOne(w);
|
||||||
if (d == null) return null;
|
if (d == null) return null;
|
||||||
return buildProductInfoGeneric(figureSave, d);
|
return buildProductInfoGeneric(figureSave, d);
|
||||||
});
|
});
|
||||||
specStrategies.put("40R", figureSave -> {
|
specStrategies.put("40R", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec40r> w = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec40r> w = new LambdaQueryWrapper<>();
|
||||||
w.eq(DeviceSpec40r::getBoxType, figureSave.getBoxType()).eq(DeviceSpec40r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec40r::getItemType, figureSave.getProductType());
|
w.eq(DeviceSpec40r::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec40r::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec40r::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec40r d = deviceSpec40rMapper.selectOne(w);
|
DeviceSpec40r d = deviceSpec40rMapper.selectOne(w);
|
||||||
if (d == null) return null;
|
if (d == null) return null;
|
||||||
return buildProductInfoGeneric(figureSave, d);
|
return buildProductInfoGeneric(figureSave, d);
|
||||||
});
|
});
|
||||||
specStrategies.put("40S", figureSave -> {
|
specStrategies.put("40S", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec40s> w = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec40s> w = new LambdaQueryWrapper<>();
|
||||||
w.eq(DeviceSpec40s::getBoxType, figureSave.getBoxType()).eq(DeviceSpec40s::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec40s::getItemType, figureSave.getProductType());
|
w.eq(DeviceSpec40s::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec40s::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec40s::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec40s d = deviceSpec40sMapper.selectOne(w);
|
DeviceSpec40s d = deviceSpec40sMapper.selectOne(w);
|
||||||
if (d == null) return null;
|
if (d == null) return null;
|
||||||
return buildProductInfoGeneric(figureSave, d);
|
return buildProductInfoGeneric(figureSave, d);
|
||||||
});
|
});
|
||||||
specStrategies.put("60R", figureSave -> {
|
specStrategies.put("60R", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec60r> w = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec60r> w = new LambdaQueryWrapper<>();
|
||||||
w.eq(DeviceSpec60r::getBoxType, figureSave.getBoxType()).eq(DeviceSpec60r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec60r::getItemType, figureSave.getProductType());
|
w.eq(DeviceSpec60r::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec60r::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec60r::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec60r d = deviceSpec60rMapper.selectOne(w);
|
DeviceSpec60r d = deviceSpec60rMapper.selectOne(w);
|
||||||
if (d == null) return null;
|
if (d == null) return null;
|
||||||
return buildProductInfoGeneric(figureSave, d);
|
return buildProductInfoGeneric(figureSave, d);
|
||||||
});
|
});
|
||||||
specStrategies.put("80R", figureSave -> {
|
specStrategies.put("80R", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec80r> w = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec80r> w = new LambdaQueryWrapper<>();
|
||||||
w.eq(DeviceSpec80r::getBoxType, figureSave.getBoxType()).eq(DeviceSpec80r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec80r::getItemType, figureSave.getProductType());
|
w.eq(DeviceSpec80r::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec80r::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec80r::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec80r d = deviceSpec80rMapper.selectOne(w);
|
DeviceSpec80r d = deviceSpec80rMapper.selectOne(w);
|
||||||
if (d == null) return null;
|
if (d == null) return null;
|
||||||
return buildProductInfoGeneric(figureSave, d);
|
return buildProductInfoGeneric(figureSave, d);
|
||||||
});
|
});
|
||||||
specStrategies.put("100R", figureSave -> {
|
specStrategies.put("100R", figureSave -> {
|
||||||
LambdaQueryWrapper<DeviceSpec100r> w = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DeviceSpec100r> w = new LambdaQueryWrapper<>();
|
||||||
w.eq(DeviceSpec100r::getBoxType, figureSave.getBoxType()).eq(DeviceSpec100r::getTravelLength, Objects.toString(figureSave.getJdInventory(), "")).eq(DeviceSpec100r::getItemType, figureSave.getProductType());
|
w.eq(DeviceSpec100r::getBoxType, figureSave.getBoxType())
|
||||||
|
.eq(DeviceSpec100r::getTravelLength, Objects.toString(figureSave.getJdInventory(), ""))
|
||||||
|
.eq(DeviceSpec100r::getItemType, figureSave.getProductType());
|
||||||
DeviceSpec100r d = deviceSpec100rMapper.selectOne(w);
|
DeviceSpec100r d = deviceSpec100rMapper.selectOne(w);
|
||||||
if (d == null) return null;
|
if (d == null) return null;
|
||||||
return buildProductInfoGeneric(figureSave, d);
|
return buildProductInfoGeneric(figureSave, d);
|
||||||
@ -219,7 +223,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
if (st != null) return st;
|
if (st != null) return st;
|
||||||
}
|
}
|
||||||
for (String prefix : specStrategies.keySet()) {
|
for (String prefix : specStrategies.keySet()) {
|
||||||
if (key.startsWith(prefix)) {
|
if (key.startsWith(prefix)){
|
||||||
return specStrategies.get(prefix);
|
return specStrategies.get(prefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -282,109 +286,25 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
// 下载excel文件
|
// 下载excel文件
|
||||||
log.info("下载excel文件.." + bo.getProductionOrderNo());
|
log.info("下载excel文件.." + bo.getProductionOrderNo());
|
||||||
SmbUtils.downloadExcelFiles(bo.getProductionOrderNo());
|
SmbUtils.downloadExcelFiles(bo.getProductionOrderNo());
|
||||||
|
/* //同时推送至企业微信群
|
||||||
|
String fileName = LOCAL_DIR + "/" + bo.getProductionOrderNo()+"汇总表" + FILE_EXTENSION;
|
||||||
|
File file = new File(fileName);
|
||||||
|
wxRobotUtil.sendFileToWeChatGroup(file, ROBOTID);
|
||||||
|
//拼接要发送到的信息markdown格式
|
||||||
|
String msg = "生产令号:" + bo.getProductionOrderNo() + "\n" +
|
||||||
|
"生产名称:" + bo.getProductionName() + "\n" +
|
||||||
|
"图纸号:" + bo.getDrawingNo() + "\n" +
|
||||||
|
"图纸名称:" + bo.getDrawingName() + "\n" +
|
||||||
|
"计划完工时间:" + bo.getPlanEndTime() + "\n" +
|
||||||
|
"计划开工时间:" + bo.getPlanStartTime() + "\n" ;
|
||||||
|
wxRobotUtil.sendMsgToWeChatGroup(msg, ROBOTID,true);*/
|
||||||
ProcessOrderPro add = BeanUtil.toBean(bo, ProcessOrderPro.class);
|
ProcessOrderPro add = BeanUtil.toBean(bo, ProcessOrderPro.class);
|
||||||
//创建人换成昵称
|
|
||||||
Long userId = LoginHelper.getUserId();
|
|
||||||
if (userId != null) {
|
|
||||||
SysUser user = userService.selectUserById(userId);
|
|
||||||
if (user != null) {
|
|
||||||
add.setCreateBy(user.getNickName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 如果出图时间为空,默认为当前时间
|
|
||||||
if (add.getDrawingTime() == null) {
|
|
||||||
add.setDrawingTime(new Date());
|
|
||||||
bo.setDrawingTime(add.getDrawingTime());
|
|
||||||
}
|
|
||||||
add.setRouteStatus(0L);
|
|
||||||
add.setBomStatus(0L);
|
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setId(add.getId());
|
bo.setId(add.getId());
|
||||||
// 异步发送钉钉卡片
|
|
||||||
CompletableFuture.runAsync(() -> {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
||||||
try {
|
|
||||||
// 获取 AccessToken
|
|
||||||
String accessToken = DingUtil.getAccessToken(dingTalkProperties.getAppKey(), dingTalkProperties.getAppSecret());
|
|
||||||
// 处理图片上传
|
|
||||||
String imgMediaId = ""; // 默认图片
|
|
||||||
if (StringUtils.isNotEmpty(bo.getDrawingPath())) {
|
|
||||||
try {
|
|
||||||
Long ossId = Long.parseLong(bo.getDrawingPath());
|
|
||||||
SysOssVo ossVo = iSysOssService.getById(ossId);
|
|
||||||
if (ossVo != null) {
|
|
||||||
String suffix = FileUtil.getSuffix(ossVo.getOriginalName());
|
|
||||||
File tempFile = FileUtil.createTempFile("ding_img", StringUtils.isNotEmpty(suffix) ? "." + suffix : ".jpg", true);
|
|
||||||
try (InputStream is = OssFactory.instance().getObjectContent(ossVo.getUrl()); OutputStream os = Files.newOutputStream(tempFile.toPath())) {
|
|
||||||
IoUtil.copy(is, os);
|
|
||||||
}
|
|
||||||
imgMediaId = DingUtil.uploadMedia(accessToken, "image", tempFile.getAbsolutePath());
|
|
||||||
FileUtil.del(tempFile);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("上传图片到钉钉失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 构造卡片数据
|
|
||||||
Map<String, String> cardDataMap = new HashMap<>();
|
|
||||||
|
|
||||||
cardDataMap.put("drawing_time", bo.getDrawingTime() != null ? sdf.format(bo.getDrawingTime()) : "待定");
|
|
||||||
cardDataMap.put("production_order_no", StringUtils.defaultIfEmpty(bo.getProductionOrderNo(), ""));
|
|
||||||
cardDataMap.put("production_name", StringUtils.defaultIfEmpty(bo.getProductionName(), ""));
|
|
||||||
cardDataMap.put("drawing_by", StringUtils.defaultIfEmpty(bo.getDrawingBy(), "暂无"));
|
|
||||||
cardDataMap.put("bom_uptime", bo.getBomUptime() != null ? sdf.format(bo.getBomUptime()) : "未上传");
|
|
||||||
cardDataMap.put("drawing_type", StringUtils.defaultIfEmpty(bo.getDrawingType(), ""));
|
|
||||||
cardDataMap.put("project_end_time", bo.getProjectEndTime() != null ? sdf.format(bo.getProjectEndTime()) : "待定");
|
|
||||||
cardDataMap.put("route_uptime", bo.getRouteUptime() != null ? sdf.format(bo.getRouteUptime()) : "未上传");
|
|
||||||
cardDataMap.put("material_count", bo.getMaterialCount() != null ? String.valueOf(bo.getMaterialCount()) : "0");
|
|
||||||
cardDataMap.put("route_count", bo.getRouteCount() != null ? String.valueOf(bo.getRouteCount()) : "0");
|
|
||||||
cardDataMap.put("plan_uptime", bo.getPlanUptime() != null ? sdf.format(bo.getPlanUptime()) : "未上传");
|
|
||||||
cardDataMap.put("bom_count", bo.getBomCount() != null ? String.valueOf(bo.getBomCount()) : "0");
|
|
||||||
cardDataMap.put("img_id", imgMediaId);
|
|
||||||
String outTrackId = "project-card-" + System.currentTimeMillis();
|
|
||||||
String outTrackId1 = DingUtil.createAndDeliverCard(accessToken, dingTalkProperties.getProjectCardTemplateId(), dingTalkProperties.getRobotCode(), dingTalkProperties.getOpenConversationId(), outTrackId, cardDataMap, dingTalkProperties.getCallbackRouteKey());
|
|
||||||
//同时发送给设计人员
|
|
||||||
List<String> designers = StringUtils.splitList(bo.getDrawingBy());
|
|
||||||
// 收集手机号用于@
|
|
||||||
List<String> receiverMobiles = new ArrayList<>();
|
|
||||||
|
|
||||||
for (String designer : designers) {
|
|
||||||
SysUser sysUser = userService.selectUserByUserName(designer);
|
|
||||||
if (sysUser != null && StringUtils.isNotEmpty(sysUser.getPhonenumber())) {
|
|
||||||
receiverMobiles.add(sysUser.getPhonenumber());
|
|
||||||
log.info("添加发送消息用户 {}: {}", sysUser.getNickName(), sysUser.getPhonenumber());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!receiverMobiles.isEmpty()) {
|
|
||||||
// 去重
|
|
||||||
receiverMobiles = receiverMobiles.stream().distinct().collect(Collectors.toList());
|
|
||||||
try {
|
|
||||||
log.info("发送群消息并@用户(手机号): {}", receiverMobiles);
|
|
||||||
DingUtil.sendSessionText("https://oapi.dingtalk.com/robot/send?access_token=61525f1eccca9dde871df334918b1aac47f08e4ef71b8c689b46a091b3d45450",
|
|
||||||
bo.getProductionOrderNo() + " 项目已创建", null, receiverMobiles);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("发送@消息失败", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 更新数据库中的 auditCardId
|
|
||||||
ProcessOrderPro update = new ProcessOrderPro();
|
|
||||||
update.setId(add.getId());
|
|
||||||
update.setUpdateBy("Dingding");
|
|
||||||
update.setNotificationCardId(outTrackId1);
|
|
||||||
log.info("更新项目令号 {} 卡片id {}", add.getProductionOrderNo(), outTrackId1);
|
|
||||||
baseMapper.updateById(update);
|
|
||||||
|
|
||||||
bo.setAuditCardId(outTrackId1);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("发送钉钉卡片异常", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
@ -464,6 +384,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
return baseMapper.selectOne(wrapper);
|
return baseMapper.selectOne(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -529,6 +450,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
return baseMapper.selectList(qw);
|
return baseMapper.selectList(qw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addProduct(RigidChainModelDTO orderPro) {
|
public void addProduct(RigidChainModelDTO orderPro) {
|
||||||
FigureSave figureSave = new FigureSave();
|
FigureSave figureSave = new FigureSave();
|
||||||
@ -548,7 +470,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
box = m.group("box");
|
box = m.group("box");
|
||||||
} else {
|
} else {
|
||||||
axial = Objects.toString(orderPro.getAxialType(), "");
|
axial = Objects.toString(orderPro.getAxialType(), "");
|
||||||
type = Objects.toString(orderPro.getProductType(), "");
|
type = Objects.toString(orderPro.getProductType(),"");
|
||||||
journey = Objects.toString(orderPro.getJourney(), "");
|
journey = Objects.toString(orderPro.getJourney(), "");
|
||||||
box = Objects.toString(orderPro.getBoxType(), "");
|
box = Objects.toString(orderPro.getBoxType(), "");
|
||||||
}
|
}
|
||||||
@ -596,137 +518,10 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
pwProductionBill.setProduct(productInfos);
|
pwProductionBill.setProduct(productInfos);
|
||||||
|
|
||||||
// 6. 调用API
|
// 6. 调用API
|
||||||
try {
|
return callDrawingApi(pwProductionBill, orderPro);
|
||||||
return callDrawingApi(pwProductionBill, orderPro);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("调用出图API失败", e);
|
|
||||||
throw e;
|
|
||||||
} finally {
|
|
||||||
// 无论成功失败,都发送通知和文件
|
|
||||||
CompletableFuture.runAsync(() -> {
|
|
||||||
try {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|
||||||
// 获取 AccessToken
|
|
||||||
String accessToken = DingUtil.getAccessToken(dingTalkProperties.getAppKey(), dingTalkProperties.getAppSecret());
|
|
||||||
|
|
||||||
// 构造Markdown消息内容
|
|
||||||
StringBuilder markdownText = new StringBuilder();
|
|
||||||
markdownText.append("**项目创建出图完成,请及时填写工艺**\n\n");
|
|
||||||
markdownText.append("> **时间**: ").append(sdf.format(new Date())).append("\n\n");
|
|
||||||
markdownText.append("> **项目令号**: ").append(StringUtils.defaultIfEmpty(orderPro.getProductionOrderNo(), "")).append("\n\n");
|
|
||||||
markdownText.append("> **项目名称**: ").append(StringUtils.defaultIfEmpty(orderPro.getProductionName(), "")).append("\n\n");
|
|
||||||
|
|
||||||
// 补充更多实体信息(若库中尚无记录,processOrderPro 可能为 null)
|
|
||||||
ProcessOrderPro po = processOrderPro;
|
|
||||||
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
|
|
||||||
if (po != null) {
|
|
||||||
if (StringUtils.isNotBlank(po.getDrawingNo())) {
|
|
||||||
markdownText.append("> **图号**: ").append(po.getDrawingNo()).append("\n\n");
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(po.getDrawingName())) {
|
|
||||||
markdownText.append("> **图纸名称**: ").append(po.getDrawingName()).append("\n\n");
|
|
||||||
}
|
|
||||||
String planStart = po.getPlanStartTime() == null ? "" : sdfDate.format(po.getPlanStartTime());
|
|
||||||
String planEnd = po.getPlanEndTime() == null ? "" : sdfDate.format(po.getPlanEndTime());
|
|
||||||
if (StringUtils.isNotBlank(planStart) || StringUtils.isNotBlank(planEnd)) {
|
|
||||||
markdownText.append("> **计划周期**: ").append(planStart).append(" ~ ").append(planEnd).append("\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(po.getUnit()) || po.getQuantity() != null) {
|
|
||||||
markdownText.append("> **单位/数量**: ").append(StringUtils.defaultIfEmpty(po.getUnit(), "")).append(StringUtils.isNotBlank(po.getUnit()) && po.getQuantity() != null ? " / " : "").append(po.getQuantity() == null ? "" : po.getQuantity()).append("\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (po.getIsEnterpriseStandard() != null) {
|
|
||||||
markdownText.append("> **是否企标**: ").append(po.getIsEnterpriseStandard() == 1 ? "是" : "否").append("\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
String bomStatus = null;
|
|
||||||
if (po.getBomStatus() != null) {
|
|
||||||
if (po.getBomStatus() == 0) bomStatus = "未完成";
|
|
||||||
else if (po.getBomStatus() == 1) bomStatus = "完成";
|
|
||||||
else if (po.getBomStatus() == 2) bomStatus = "已上传";
|
|
||||||
else bomStatus = String.valueOf(po.getBomStatus());
|
|
||||||
}
|
|
||||||
String routeStatus = null;
|
|
||||||
if (po.getRouteStatus() != null) {
|
|
||||||
if (po.getRouteStatus() == 0) routeStatus = "未审核";
|
|
||||||
else if (po.getRouteStatus() == 1) routeStatus = "已审核";
|
|
||||||
else routeStatus = String.valueOf(po.getRouteStatus());
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(bomStatus) || StringUtils.isNotBlank(routeStatus)) {
|
|
||||||
markdownText.append("> **BOM/工艺状态**: ").append(StringUtils.defaultIfEmpty(bomStatus, "-")).append(" / ").append(StringUtils.defaultIfEmpty(routeStatus, "-")).append("\n\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (po.getDrawingTime() != null) {
|
|
||||||
markdownText.append("> **出图时间**: ").append(sdf.format(po.getDrawingTime())).append("\n\n");
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(po.getDrawingBy())) {
|
|
||||||
markdownText.append("> **出图人**: ").append(po.getDrawingBy()).append("\n\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
markdownText.append("\n请相关人员及时处理。");
|
|
||||||
|
|
||||||
// 发送Markdown消息
|
|
||||||
DingUtil.sendOrgGroupMarkdown(accessToken, dingTalkProperties.getRobotCode(), dingTalkProperties.getOpenConversationId(), "生产项目创建通知", markdownText.toString());
|
|
||||||
|
|
||||||
// 下载并发送Excel文件
|
|
||||||
log.info("开始下载并发送Excel文件: {}", orderPro.getProductionOrderNo());
|
|
||||||
|
|
||||||
// 1. 解析年份
|
|
||||||
String productionCode = orderPro.getProductionOrderNo();
|
|
||||||
String year = "2025"; // 默认
|
|
||||||
if (productionCode != null) {
|
|
||||||
if (productionCode.startsWith("EY")) {
|
|
||||||
if (productionCode.length() >= 4) {
|
|
||||||
try {
|
|
||||||
Integer.parseInt(productionCode.substring(2, 4));
|
|
||||||
year = "20" + productionCode.substring(2, 4);
|
|
||||||
} catch (Exception ignore) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int firstDash = productionCode.indexOf("-");
|
|
||||||
if (firstDash >= 0 && firstDash + 3 <= productionCode.length()) {
|
|
||||||
try {
|
|
||||||
Integer.parseInt(productionCode.substring(firstDash + 1, firstDash + 3));
|
|
||||||
year = "20" + productionCode.substring(firstDash + 1, firstDash + 3);
|
|
||||||
} catch (Exception ignore) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. 构建FTP路径和本地路径
|
|
||||||
String ftpPath = "/" + year + "/" + productionCode;
|
|
||||||
String localPath = "D:\\file\\";
|
|
||||||
|
|
||||||
// 3. 下载文件(只下载汇总表.xlsx)
|
|
||||||
R<String> downloadResult = FtpUtil.downloadFtpDirectoryFiles("192.168.5.18", "admin", "hbyt2025", 21, ftpPath, localPath, "汇总表.xlsx");
|
|
||||||
if (downloadResult == null || downloadResult.getCode() != 200) {
|
|
||||||
log.warn("Excel文件下载可能失败: productionCode={}, ftpPath={}, result={}", productionCode, ftpPath, downloadResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4. 构建本地文件路径并发送钉钉文件
|
|
||||||
String filePath = localPath + productionCode + "汇总表.xlsx";
|
|
||||||
File excelFile = new File(filePath);
|
|
||||||
if (excelFile.exists() && excelFile.length() > 0) {
|
|
||||||
// Upload media
|
|
||||||
String mediaId = DingUtil.uploadMedia(accessToken, "file", filePath);
|
|
||||||
// Send file
|
|
||||||
DingUtil.sendOrgGroupFile(accessToken, dingTalkProperties.getRobotCode(), dingTalkProperties.getOpenConversationId(), mediaId, excelFile.getName(), "sampleFile");
|
|
||||||
log.info("Excel文件发送成功");
|
|
||||||
} else {
|
|
||||||
log.warn("Excel文件未找到或为空: {}", filePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception ex) {
|
|
||||||
log.error("发送出图通知/文件失败", ex);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void validateOrderPro(ProcessOrderProBo orderPro) {
|
private void validateOrderPro(ProcessOrderProBo orderPro) {
|
||||||
if (orderPro == null || StringUtils.isBlank(orderPro.getProductionOrderNo())) {
|
if (orderPro == null || StringUtils.isBlank(orderPro.getProductionOrderNo())) {
|
||||||
throw new IllegalArgumentException("生产令号不能为空");
|
throw new IllegalArgumentException("生产令号不能为空");
|
||||||
@ -784,11 +579,22 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
|
|
||||||
private List<ProductInfo> buildProductInfos(Long orderId) {
|
private List<ProductInfo> buildProductInfos(Long orderId) {
|
||||||
List<FigureSave> figureSaveList = figureSaveMapper.selectList(new LambdaQueryWrapper<FigureSave>().eq(FigureSave::getPid, orderId));
|
List<FigureSave> figureSaveList = figureSaveMapper.selectList(new LambdaQueryWrapper<FigureSave>().eq(FigureSave::getPid, orderId));
|
||||||
return figureSaveList.stream().map(fs -> {
|
return figureSaveList.stream()
|
||||||
SpecStrategy st = getStrategyForType(fs.getProductType());
|
.map(fs -> {
|
||||||
ProductInfo pi = st != null ? st.build(fs) : null;
|
SpecStrategy st = getStrategyForType(fs.getProductType());
|
||||||
return pi != null ? pi : buildProductInfoFallback(fs);
|
ProductInfo pi = st != null ? st.build(fs) : null;
|
||||||
}).collect(Collectors.toList());
|
return pi != null ? pi : buildProductInfoFallback(fs);
|
||||||
|
})
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
//出图时如果不是标准的产品,而是零件图的话,变量会为空
|
||||||
|
private ProductInfo buildProductInfoFallback(FigureSave figureSave) {
|
||||||
|
ProductInfo productInfo = new ProductInfo();
|
||||||
|
productInfo.setAssembledrawing(figureSave.getFigureNumber());
|
||||||
|
productInfo.setNumber(String.valueOf(figureSave.getFigureNum()));
|
||||||
|
productInfo.setSourcefile(figureSave.getDrawPath().replace("/", "\\"));
|
||||||
|
productInfo.setVars(new DataInfo());
|
||||||
|
return productInfo;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
private ProductInfo buildProductInfo(FigureSave figureSave, PcRigidChain rigidChain) {
|
private ProductInfo buildProductInfo(FigureSave figureSave, PcRigidChain rigidChain) {
|
||||||
@ -802,16 +608,6 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
return productInfo;
|
return productInfo;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
//出图时如果不是标准的产品,而是零件图的话,变量会为空
|
|
||||||
private ProductInfo buildProductInfoFallback(FigureSave figureSave) {
|
|
||||||
ProductInfo productInfo = new ProductInfo();
|
|
||||||
productInfo.setAssembledrawing(figureSave.getFigureNumber());
|
|
||||||
productInfo.setNumber(String.valueOf(figureSave.getFigureNum()));
|
|
||||||
productInfo.setSourcefile(figureSave.getDrawPath().replace("/", "\\"));
|
|
||||||
productInfo.setVars(new DataInfo());
|
|
||||||
return productInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ProductInfo buildProductInfo(FigureSave figureSave, DeviceSpec35r device) {
|
private ProductInfo buildProductInfo(FigureSave figureSave, DeviceSpec35r device) {
|
||||||
ProductInfo productInfo = new ProductInfo();
|
ProductInfo productInfo = new ProductInfo();
|
||||||
productInfo.setAssembledrawing(figureSave.getFigureNumber());
|
productInfo.setAssembledrawing(figureSave.getFigureNumber());
|
||||||
@ -822,7 +618,6 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
productInfo.setVars(datainfo);
|
productInfo.setVars(datainfo);
|
||||||
return productInfo;
|
return productInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProductInfo buildProductInfo30S(FigureSave figureSave, DeviceSpec30s device) {
|
private ProductInfo buildProductInfo30S(FigureSave figureSave, DeviceSpec30s device) {
|
||||||
ProductInfo productInfo = new ProductInfo();
|
ProductInfo productInfo = new ProductInfo();
|
||||||
productInfo.setAssembledrawing(figureSave.getFigureNumber());
|
productInfo.setAssembledrawing(figureSave.getFigureNumber());
|
||||||
@ -858,9 +653,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
setDataInfoFields(datainfo, device);
|
setDataInfoFields(datainfo, device);
|
||||||
}
|
}
|
||||||
return datainfo;
|
return datainfo;
|
||||||
}
|
} private DataInfo buildDataInfo30S(DeviceSpec30s device) {
|
||||||
|
|
||||||
private DataInfo buildDataInfo30S(DeviceSpec30s device) {
|
|
||||||
DataInfo datainfo = new DataInfo();
|
DataInfo datainfo = new DataInfo();
|
||||||
if (device != null) {
|
if (device != null) {
|
||||||
setDataInfoFields(datainfo, device);
|
setDataInfoFields(datainfo, device);
|
||||||
@ -1034,7 +827,6 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建35R变量实体
|
* 创建35R变量实体
|
||||||
*
|
|
||||||
* @param datainfo
|
* @param datainfo
|
||||||
* @param device
|
* @param device
|
||||||
*/
|
*/
|
||||||
@ -1068,10 +860,8 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
datainfo.setG6(Objects.toString(device.getG6(), ""));
|
datainfo.setG6(Objects.toString(device.getG6(), ""));
|
||||||
datainfo.setG7(Objects.toString(device.getG7(), ""));
|
datainfo.setG7(Objects.toString(device.getG7(), ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建30S变量实体
|
* 创建30S变量实体
|
||||||
*
|
|
||||||
* @param datainfo
|
* @param datainfo
|
||||||
* @param device
|
* @param device
|
||||||
*/
|
*/
|
||||||
@ -1186,14 +976,14 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
try {
|
try {
|
||||||
emitter.send(SseEmitter.event().name("error").data(Objects.toString(ex.getMessage(), "error")));
|
emitter.send(SseEmitter.event().name("error").data(Objects.toString(ex.getMessage(), "error")));
|
||||||
} catch (Exception ignore) {
|
} catch (Exception ignore) {}
|
||||||
}
|
|
||||||
emitter.completeWithError(ex);
|
emitter.completeWithError(ex);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
return emitter;
|
return emitter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param id
|
* @param id
|
||||||
*/
|
*/
|
||||||
@ -1246,7 +1036,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
//如果这个是EY开头的那就取EY后面的数字 25 26 27 作为年份 2025 2026 2027
|
//如果这个是EY开头的那就取EY后面的数字 25 26 27 作为年份 2025 2026 2027
|
||||||
try {
|
try {
|
||||||
String year = "2025"; // 默认2025
|
String year = "2025"; // 默认2025
|
||||||
|
|
||||||
if (productionCode != null) {
|
if (productionCode != null) {
|
||||||
if (productionCode.startsWith("EY")) {
|
if (productionCode.startsWith("EY")) {
|
||||||
// EY开头,取第2位开始的两位 (索引2和3)
|
// EY开头,取第2位开始的两位 (索引2和3)
|
||||||
@ -1328,7 +1118,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
String watermarkedPdfDir = arr + code + "/zip";
|
String watermarkedPdfDir = arr + code + "/zip";
|
||||||
String productionOrderNo = processOrderPro.getProductionOrderNo();
|
String productionOrderNo = processOrderPro.getProductionOrderNo();
|
||||||
|
|
||||||
classifyPdfByWorkCenterToTarget(productionOrderNo, watermarkedPdfDir, code, arr + code + "/zip");
|
classifyPdfByWorkCenterToTarget(productionOrderNo,watermarkedPdfDir, code, arr + code + "/zip");
|
||||||
|
|
||||||
// 8.1 删除 zip/ 根目录中未分类的 PDF 文件(只保留分类目录)
|
// 8.1 删除 zip/ 根目录中未分类的 PDF 文件(只保留分类目录)
|
||||||
File[] zipPdfFiles = new File(watermarkedPdfDir).listFiles((dir, name) -> name.toLowerCase().endsWith(".pdf"));
|
File[] zipPdfFiles = new File(watermarkedPdfDir).listFiles((dir, name) -> name.toLowerCase().endsWith(".pdf"));
|
||||||
@ -1395,7 +1185,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
/**
|
/**
|
||||||
* 将 PDF 按工作中心分类复制到目标目录(如 zip/工作中心/)
|
* 将 PDF 按工作中心分类复制到目标目录(如 zip/工作中心/)
|
||||||
*/
|
*/
|
||||||
private void classifyPdfByWorkCenterToTarget(String productionOrderNo, String sourceDirPath, String code, String targetBaseDirPath) {
|
private void classifyPdfByWorkCenterToTarget(String productionOrderNo,String sourceDirPath, String code, String targetBaseDirPath) {
|
||||||
/* //按工作中心 分类时 查找是否有采购申请单 和生产订单
|
/* //按工作中心 分类时 查找是否有采购申请单 和生产订单
|
||||||
//获取这个项目的所有生产令号
|
//获取这个项目的所有生产令号
|
||||||
List<String> orderList = JdUtil.getOrderNumberCollection(productionOrderNo);
|
List<String> orderList = JdUtil.getOrderNumberCollection(productionOrderNo);
|
||||||
@ -1421,9 +1211,9 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
unmovedMaterials.add(materialCode);
|
unmovedMaterials.add(materialCode);
|
||||||
workCenter = "未匹配订单";
|
workCenter = "未匹配订单";
|
||||||
} else {*/
|
} else {*/
|
||||||
workCenter = iProcessRouteService.getRouteCode(materialCode, code);
|
workCenter = iProcessRouteService.getRouteCode(materialCode, code);
|
||||||
if (iProductionOrderService.isPurchas(productionOrderNo, materialCode)) workCenter = "外购件";
|
if (iProductionOrderService.isPurchas(productionOrderNo, materialCode)) workCenter = "外购件";
|
||||||
if (workCenter == null || workCenter.isEmpty()) workCenter = "无工段";
|
if (workCenter == null || workCenter.isEmpty()) workCenter = "无工段";
|
||||||
/*}*/
|
/*}*/
|
||||||
|
|
||||||
File workCenterDir = new File(targetBaseDirPath, workCenter);
|
File workCenterDir = new File(targetBaseDirPath, workCenter);
|
||||||
@ -1643,6 +1433,7 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String uploadContractPDF(Integer id, String originalFilename, MultipartFile filePath) {
|
public String uploadContractPDF(Integer id, String originalFilename, MultipartFile filePath) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
@ -1769,10 +1560,13 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
return projects;
|
return projects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 辅助方法:将 java.util.Date 转换为 LocalDate
|
// 辅助方法:将 java.util.Date 转换为 LocalDate
|
||||||
private LocalDate convertToLocalDate(Date date) {
|
private LocalDate convertToLocalDate(Date date) {
|
||||||
if (date != null) {
|
if (date != null) {
|
||||||
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
return date.toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDate();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -1817,7 +1611,9 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
List<MaterialBom> allBoms = materialBomService.selectByProCode(proRoot);
|
List<MaterialBom> allBoms = materialBomService.selectByProCode(proRoot);
|
||||||
|
|
||||||
// 建立 routlist 的 Map 方便查找
|
// 建立 routlist 的 Map 方便查找
|
||||||
Map<String, ProcessRoute> routeMap1 = routlist.stream().filter(r -> r.getMaterialCode() != null).collect(Collectors.toMap(ProcessRoute::getMaterialCode, r -> r));
|
Map<String, ProcessRoute> routeMap1 = routlist.stream()
|
||||||
|
.filter(r -> r.getMaterialCode() != null)
|
||||||
|
.collect(Collectors.toMap(ProcessRoute::getMaterialCode, r -> r));
|
||||||
|
|
||||||
// 合并数据
|
// 合并数据
|
||||||
for (ProcessRoute route : allRoutes) {
|
for (ProcessRoute route : allRoutes) {
|
||||||
@ -1843,7 +1639,9 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
// 合并 material keys
|
// 合并 material keys
|
||||||
LinkedHashSet<String> materialKeys = new LinkedHashSet<>();
|
LinkedHashSet<String> materialKeys = new LinkedHashSet<>();
|
||||||
materialKeys.addAll(routeMap.keySet());
|
materialKeys.addAll(routeMap.keySet());
|
||||||
orderMap.keySet().stream().filter(key -> !materialKeys.contains(key)).forEach(materialKeys::add);
|
orderMap.keySet().stream()
|
||||||
|
.filter(key -> !materialKeys.contains(key))
|
||||||
|
.forEach(materialKeys::add);
|
||||||
|
|
||||||
for (String key : materialKeys) {
|
for (String key : materialKeys) {
|
||||||
List<ProcessRoute> processRoutes = routeMap.getOrDefault(key, Collections.emptyList());
|
List<ProcessRoute> processRoutes = routeMap.getOrDefault(key, Collections.emptyList());
|
||||||
@ -1851,17 +1649,35 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
ProductionOrderVo orderVo = orderMap.get(key);
|
ProductionOrderVo orderVo = orderMap.get(key);
|
||||||
|
|
||||||
// 优先从 processRoutes 取值,其次才用 orderVo,最后才用 BOM 或 key
|
// 优先从 processRoutes 取值,其次才用 orderVo,最后才用 BOM 或 key
|
||||||
String originalMaterialCode = !processRoutes.isEmpty() ? processRoutes.get(0).getMaterialCode().trim() : (orderVo != null ? (orderVo.getDrawingNo() != null ? orderVo.getDrawingNo().trim() : null) : (!materialBoms.isEmpty() ? (materialBoms.get(0).getParentMaterialCode() != null ? materialBoms.get(0).getParentMaterialCode().trim() : null) : key));
|
String originalMaterialCode = !processRoutes.isEmpty()
|
||||||
|
? processRoutes.get(0).getMaterialCode().trim()
|
||||||
|
: (orderVo != null
|
||||||
|
? (orderVo.getDrawingNo() != null ? orderVo.getDrawingNo().trim() : null)
|
||||||
|
: (!materialBoms.isEmpty()
|
||||||
|
? (materialBoms.get(0).getParentMaterialCode() != null ? materialBoms.get(0).getParentMaterialCode().trim() : null)
|
||||||
|
: key));
|
||||||
|
|
||||||
String originalMaterialName = !processRoutes.isEmpty() ? (processRoutes.get(0).getMaterialName() != null ? processRoutes.get(0).getMaterialName().trim() : null) : (orderVo != null ? (orderVo.getDrawingName() != null ? orderVo.getDrawingName().trim() : null) : null);
|
String originalMaterialName = !processRoutes.isEmpty()
|
||||||
|
? (processRoutes.get(0).getMaterialName() != null ? processRoutes.get(0).getMaterialName().trim() : null)
|
||||||
|
: (orderVo != null ? (orderVo.getDrawingName() != null ? orderVo.getDrawingName().trim() : null) : null);
|
||||||
|
|
||||||
String originalMaterial = !processRoutes.isEmpty() ? (processRoutes.get(0).getMaterial() != null ? processRoutes.get(0).getMaterial().trim() : null) : (orderVo != null ? (orderVo.getMaterial() != null ? orderVo.getMaterial().trim() : null) : null);
|
String originalMaterial = !processRoutes.isEmpty()
|
||||||
|
? (processRoutes.get(0).getMaterial() != null ? processRoutes.get(0).getMaterial().trim() : null)
|
||||||
|
: (orderVo != null ? (orderVo.getMaterial() != null ? orderVo.getMaterial().trim() : null) : null);
|
||||||
|
|
||||||
Double originalUnitWeight = !processRoutes.isEmpty() ? processRoutes.get(0).getDiscWeight() : (orderVo != null ? orderVo.getSingleWeight() : null);
|
Double originalUnitWeight = !processRoutes.isEmpty() ? processRoutes.get(0).getDiscWeight() : (orderVo != null ? orderVo.getSingleWeight() : null);
|
||||||
// 新增两个数量字段
|
// 新增两个数量字段
|
||||||
Double unitQuantity = !processRoutes.isEmpty() ? processRoutes.get(0).getUnitQuantity() : (orderVo != null ? orderVo.getQuantity() : null);
|
Double unitQuantity = !processRoutes.isEmpty()
|
||||||
|
? processRoutes.get(0).getUnitQuantity()
|
||||||
|
: (orderVo != null ? orderVo.getQuantity() : null);
|
||||||
|
|
||||||
Double batchQuantity = !processRoutes.isEmpty() ? (processRoutes.get(0).getBatchQuantity() != null ? processRoutes.get(0).getBatchQuantity() : 0) : (orderVo != null ? (orderVo.getBatchQuantity() != null ? Double.valueOf(orderVo.getBatchQuantity()) : null) : null);
|
Double batchQuantity = !processRoutes.isEmpty()
|
||||||
|
? (processRoutes.get(0).getBatchQuantity() != null ? processRoutes.get(0).getBatchQuantity() : 0)
|
||||||
|
: (orderVo != null
|
||||||
|
? (orderVo.getBatchQuantity() != null
|
||||||
|
? Double.valueOf(orderVo.getBatchQuantity())
|
||||||
|
: null)
|
||||||
|
: null);
|
||||||
|
|
||||||
int maxSize = Math.max(processRoutes.size(), materialBoms.size());
|
int maxSize = Math.max(processRoutes.size(), materialBoms.size());
|
||||||
if (maxSize == 0 && orderVo != null) maxSize = 1;
|
if (maxSize == 0 && orderVo != null) maxSize = 1;
|
||||||
@ -1939,7 +1755,19 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService {
|
|||||||
return R.ok(jsonStr == null ? "" : jsonStr);
|
return R.ok(jsonStr == null ? "" : jsonStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface SpecStrategy {
|
public static String[] getNullPropertyNames(Object source) {
|
||||||
ProductInfo build(FigureSave figureSave);
|
BeanWrapper src = new BeanWrapperImpl(source);
|
||||||
|
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
|
||||||
|
|
||||||
|
Set<String> emptyNames = new HashSet<>();
|
||||||
|
for (java.beans.PropertyDescriptor pd : pds) {
|
||||||
|
Object srcValue = src.getPropertyValue(pd.getName());
|
||||||
|
if (srcValue == null) emptyNames.add(pd.getName());
|
||||||
|
}
|
||||||
|
return emptyNames.toArray(new String[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void copyPropertiesIgnoreNull(Object src, Object target) {
|
||||||
|
BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.system.domain.ProcessOrderPro;
|
import com.ruoyi.system.domain.ProcessOrderPro;
|
||||||
import com.ruoyi.system.domain.vo.DesignerProjectSummaryVo;
|
|
||||||
import com.ruoyi.system.domain.vo.ExpiryProjectVo;
|
import com.ruoyi.system.domain.vo.ExpiryProjectVo;
|
||||||
import com.ruoyi.system.domain.vo.OverdueProjectVo;
|
import com.ruoyi.system.domain.vo.OverdueProjectVo;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -25,10 +24,6 @@ import java.time.ZoneId;
|
|||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.function.BiConsumer;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 方案管理Service业务层处理
|
* 方案管理Service业务层处理
|
||||||
*
|
*
|
||||||
@ -236,55 +231,4 @@ public class ProcessPlanServiceImpl implements IProcessPlanService {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<DesignerProjectSummaryVo> getDesignerProjectSummary() {
|
|
||||||
Map<String, DesignerProjectSummaryVo> summaryMap = new HashMap<>();
|
|
||||||
|
|
||||||
// 获取时间点
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
// 本周一 (注意:Java DayOfWeek.MONDAY 是周一,如果需要周日作为第一天请调整)
|
|
||||||
LocalDateTime weekStart = now.with(java.time.DayOfWeek.MONDAY).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
||||||
// 如果今天是周日,with(MONDAY) 会返回本周一(如果周一是第一天),或者上周一。
|
|
||||||
// Java 的 with(DayOfWeek) 是调整到本周的某一天。
|
|
||||||
// 为了确保逻辑正确,如果今天是周日(7),我们需要判断一周的起始。
|
|
||||||
// 简单起见,假设 create_time >= 本周一即可。
|
|
||||||
|
|
||||||
LocalDateTime monthStart = now.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
||||||
LocalDateTime yearStart = now.withDayOfYear(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
||||||
|
|
||||||
// 1. 本周
|
|
||||||
countByDesigner(weekStart, summaryMap, (vo, count) -> vo.setWeeklyCount(count));
|
|
||||||
// 2. 本月
|
|
||||||
countByDesigner(monthStart, summaryMap, (vo, count) -> vo.setMonthlyCount(count));
|
|
||||||
// 3. 本年
|
|
||||||
countByDesigner(yearStart, summaryMap, (vo, count) -> vo.setYearlyCount(count));
|
|
||||||
|
|
||||||
return new ArrayList<>(summaryMap.values());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void countByDesigner(LocalDateTime startTime, Map<String, DesignerProjectSummaryVo> summaryMap, BiConsumer<DesignerProjectSummaryVo, Long> setter) {
|
|
||||||
QueryWrapper<ProcessPlan> wrapper = new QueryWrapper<>();
|
|
||||||
wrapper.select("designer", "count(*) as count")
|
|
||||||
.ge("create_time", startTime)
|
|
||||||
.isNotNull("designer")
|
|
||||||
.ne("designer", "")
|
|
||||||
.groupBy("designer");
|
|
||||||
|
|
||||||
List<Map<String, Object>> list = baseMapper.selectMaps(wrapper);
|
|
||||||
for (Map<String, Object> map : list) {
|
|
||||||
String designer = (String) map.get("designer");
|
|
||||||
Long count = ((Number) map.get("count")).longValue();
|
|
||||||
|
|
||||||
DesignerProjectSummaryVo vo = summaryMap.computeIfAbsent(designer, k -> {
|
|
||||||
DesignerProjectSummaryVo newVo = new DesignerProjectSummaryVo();
|
|
||||||
newVo.setDesigner(k);
|
|
||||||
newVo.setWeeklyCount(0L);
|
|
||||||
newVo.setMonthlyCount(0L);
|
|
||||||
newVo.setYearlyCount(0L);
|
|
||||||
return newVo;
|
|
||||||
});
|
|
||||||
setter.accept(vo, count);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -171,22 +171,6 @@ public class WlStockDataServiceImpl implements IWlStockDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<WlStockData> generateDoc() {
|
public List<WlStockData> generateDoc() {
|
||||||
List<WlStockData> wlStockDataList = generateDataInternal();
|
|
||||||
// 批量保存数据
|
|
||||||
if (!wlStockDataList.isEmpty()) {
|
|
||||||
boolean success = baseMapper.insertBatch(wlStockDataList);
|
|
||||||
logger.info("批量插入{}条数据: {}", wlStockDataList.size(), success);
|
|
||||||
logMessages("批量插入" + wlStockDataList.size() + "条数据成功");
|
|
||||||
}
|
|
||||||
return wlStockDataList;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<WlStockData> generateStockDataOnly() {
|
|
||||||
return generateDataInternal();
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<WlStockData> generateDataInternal() {
|
|
||||||
List<SafetyStock> safetyStocks = safetyStockMapper.selectList();
|
List<SafetyStock> safetyStocks = safetyStockMapper.selectList();
|
||||||
if (CollectionUtils.isEmpty(safetyStocks)) {
|
if (CollectionUtils.isEmpty(safetyStocks)) {
|
||||||
logger.warn("没有找到安全库存数据");
|
logger.warn("没有找到安全库存数据");
|
||||||
@ -219,6 +203,13 @@ public class WlStockDataServiceImpl implements IWlStockDataService {
|
|||||||
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
|
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]))
|
||||||
.get(5, TimeUnit.MINUTES); // 设置整体超时时间
|
.get(5, TimeUnit.MINUTES); // 设置整体超时时间
|
||||||
|
|
||||||
|
// 批量保存数据
|
||||||
|
if (!wlStockDataList.isEmpty()) {
|
||||||
|
boolean success = baseMapper.insertBatch(wlStockDataList);
|
||||||
|
logger.info("批量插入{}条数据: {}", wlStockDataList.size(), success);
|
||||||
|
logMessages("批量插入" + wlStockDataList.size() + "条数据成功");
|
||||||
|
}
|
||||||
|
|
||||||
return wlStockDataList;
|
return wlStockDataList;
|
||||||
|
|
||||||
} catch (TimeoutException e) {
|
} catch (TimeoutException e) {
|
||||||
|
|||||||
3
ruoyi-system/src/main/resources/mapper/package-info.md
Normal file
3
ruoyi-system/src/main/resources/mapper/package-info.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
java包使用 `.` 分割 resource 目录使用 `/` 分割
|
||||||
|
<br>
|
||||||
|
此文件目的 防止文件夹粘连找不到 `xml` 文件
|
||||||
@ -25,16 +25,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="bomStatus" column="bom_status"/>
|
<result property="bomStatus" column="bom_status"/>
|
||||||
<result property="routeStatus" column="route_status"/>
|
<result property="routeStatus" column="route_status"/>
|
||||||
<result property="routeLog" column="route_log"/>
|
<result property="routeLog" column="route_log"/>
|
||||||
<result property="routeUptime" column="route_uptime"/>
|
|
||||||
<result property="planUptime" column="plan_uptime"/>
|
|
||||||
<result property="bomUptime" column="bom_uptime"/>
|
|
||||||
<result property="bomCount" column="bom_count"/>
|
|
||||||
<result property="materialCount" column="material_count"/>
|
|
||||||
<result property="routeCount" column="route_count"/>
|
|
||||||
<result property="drawingBy" column="drawing_by"/>
|
|
||||||
<result property="drawingTime" column="drawing_time"/>
|
|
||||||
<result property="auditCardId" column="audit_card_id"/>
|
|
||||||
<result property="notificationCardId" column="notification_card_id"/>
|
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<!-- 根据项目编号查询 -->
|
<!-- 根据项目编号查询 -->
|
||||||
<select id="selectByProjectNumber" resultType="com.ruoyi.system.domain.ProcessOrderPro">
|
<select id="selectByProjectNumber" resultType="com.ruoyi.system.domain.ProcessOrderPro">
|
||||||
|
|||||||
@ -33,7 +33,6 @@
|
|||||||
<result property="planEndTime" column="plan_end_time"/>
|
<result property="planEndTime" column="plan_end_time"/>
|
||||||
<result property="xuStartTime" column="xu_start_time"/>
|
<result property="xuStartTime" column="xu_start_time"/>
|
||||||
<result property="xuEndTime" column="xu_end_time"/>
|
<result property="xuEndTime" column="xu_end_time"/>
|
||||||
<result property="stateImportance" column="state_importance"/>
|
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="existsByProcessNoAndMaterialCode" resultType="boolean">
|
<select id="existsByProcessNoAndMaterialCode" resultType="boolean">
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user