JX.Li vor 1 Jahr
Ursprung
Commit
513803426c

+ 28 - 6
.idea/workspace.xml

@@ -5,10 +5,24 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="b5706414-aab4-4b84-9189-e0bf939b95e1" name="Changes" comment="提交代码">
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GWarningPilePhoto.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPilePhotoBo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GWarningPilePhotoVo.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPilePhotoMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGWarningPilePhotoService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPilePhotoServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/resources/mapper/GWarningPilePhotoMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/logs/ruoyi-xxl-job-admin.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/ruoyi-xxl-job-admin.log" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/logs/sys-console.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/sys-console.log" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/logs/sys-error.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/sys-error.log" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/logs/sys-info.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/sys-info.log" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mobile/MWarningPileController.java" beforeDir="false" afterPath="$PROJECT_DIR$/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mobile/MWarningPileController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/logs/sys-user.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/sys-user.log" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPileBo.java" beforeDir="false" afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPileBo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GWarningPileVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GWarningPileVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPileMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPileMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPileServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPileServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/ruoyi-gas/src/main/resources/mapper/GWarningPileMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/ruoyi-gas/src/main/resources/mapper/GWarningPileMapper.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -71,7 +85,7 @@
     "SHARE_PROJECT_CONFIGURATION_FILES": "true",
     "WebServerToolWindowFactoryState": "false",
     "git-widget-placeholder": "master",
-    "last_opened_file_path": "D:/project/java/zhendashizheng/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mobile",
+    "last_opened_file_path": "D:/project/java/zhendashizheng/ruoyi-gas/src/main/resources/mapper",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.tslint": "true",
     "node.js.selected.package.eslint": "(autodetect)",
@@ -89,11 +103,11 @@
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\project\java\zhendashizheng\ruoyi-gas\src\main\resources\mapper" />
+      <recent name="D:\project\java\zhendashizheng\ruoyi-gas\src\main\java\com\ruoyi\gas" />
       <recent name="D:\project\java\zhendashizheng\ruoyi-admin\src\main\java\com\ruoyi\web\controller\mobile" />
       <recent name="D:\project\java\zhendashizheng" />
-      <recent name="D:\project\java\zhendashizheng\ruoyi-gas\src\main\java\com\ruoyi\gas" />
       <recent name="D:\project\java\zhendashizheng\ruoyi-admin\src\main\java\com\ruoyi\web\controller\gas" />
-      <recent name="D:\project\java\zhendashizheng\ruoyi-gas\src\main" />
     </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="D:\project\java\zhendashizheng\ruoyi-gas\src\main\resources\mapper" />
@@ -155,7 +169,7 @@
       <workItem from="1698281101623" duration="8631000" />
       <workItem from="1698301838507" duration="2817000" />
       <workItem from="1698308761171" duration="1767000" />
-      <workItem from="1698367022283" duration="13482000" />
+      <workItem from="1698367022283" duration="15071000" />
     </task>
     <task id="LOCAL-00001" summary="提交代码">
       <option name="closed" value="true" />
@@ -197,7 +211,15 @@
       <option name="project" value="LOCAL" />
       <updated>1698392421241</updated>
     </task>
-    <option name="localTasksCounter" value="6" />
+    <task id="LOCAL-00006" summary="提交代码">
+      <option name="closed" value="true" />
+      <created>1698392928011</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1698392928011</updated>
+    </task>
+    <option name="localTasksCounter" value="7" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">

Datei-Diff unterdrückt, da er zu groß ist
+ 3533 - 0
logs/ruoyi-xxl-job-admin.log


Datei-Diff unterdrückt, da er zu groß ist
+ 413 - 0
logs/sys-console.log


+ 159 - 0
logs/sys-error.log

@@ -11505,3 +11505,162 @@ com.ruoyi.common.exception.ServiceException: 获取用户信息异常
 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
 	at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
 	at java.lang.Thread.run(Thread.java:748)
+2023-10-27 16:37:13 [XNIO-1 task-2] ERROR c.r.f.w.e.GlobalExceptionHandler - <0><13593466191480064> 请求地址'/gas/warningPile/list',发生未知异常.
+org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ruoyi.gas.mapper.GWarningPileMapper.getPhoto
+	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init>(MybatisMapperMethod.java:50)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.lambda$cachedInvoker$0(MybatisMapperProxy.java:111)
+	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1688)
+	at com.baomidou.mybatisplus.core.toolkit.CollectionUtils.computeIfAbsent(CollectionUtils.java:115)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.cachedInvoker(MybatisMapperProxy.java:98)
+	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
+	at com.sun.proxy.$Proxy218.getPhoto(Unknown Source)
+	at com.ruoyi.gas.service.impl.GWarningPileServiceImpl.lambda$queryPageList$0(GWarningPileServiceImpl.java:47)
+	at java.util.ArrayList.forEach(ArrayList.java:1257)
+	at com.ruoyi.gas.service.impl.GWarningPileServiceImpl.queryPageList(GWarningPileServiceImpl.java:47)
+	at com.ruoyi.gas.service.impl.GWarningPileServiceImpl$$FastClassBySpringCGLIB$$1.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
+	at com.ruoyi.gas.service.impl.GWarningPileServiceImpl$$EnhancerBySpringCGLIB$$1.queryPageList(<generated>)
+	at com.ruoyi.web.controller.gas.GWarningPileController.list(GWarningPileController.java:52)
+	at com.ruoyi.web.controller.gas.GWarningPileController$$FastClassBySpringCGLIB$$1.invoke(<generated>)
+	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
+	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783)
+	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
+	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
+	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:753)
+	at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)
+	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
+	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
+	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:753)
+	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)
+	at com.ruoyi.web.controller.gas.GWarningPileController$$EnhancerBySpringCGLIB$$1.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:1067)
+	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
+	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.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
+	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	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:61)
+	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
+	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
+	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121)
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter.doFilterInternal(JwtAuthenticationTokenFilter.java:63)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
+	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
+	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
+	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
+	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
+	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
+	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
+	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	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:119)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	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:119)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	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:119)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	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:119)
+	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
+	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.jrHandle(ServletInitialHandler.java:40001)
+	at org.zeroturnaround.javarebel.integration.servlet.undertow.cbp.ServletInitialHandlerCBP.handleRequest(ServletInitialHandlerCBP.java:131)
+	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:280)
+	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:260)
+	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:387)
+	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:1280)
+	at java.lang.Thread.run(Thread.java:748)

+ 168 - 0
logs/sys-info.log

@@ -3581,3 +3581,171 @@
 2023-10-27 15:40:23 [main] INFO  org.jboss.threads - JBoss Threads version 3.1.0.Final
 2023-10-27 15:40:24 [main] INFO  com.ruoyi.RuoYiApplication - Started RuoYiApplication in 12.963 seconds (JVM running for 15.003)
 2023-10-27 15:40:24 [RMI TCP Connection(1)-192.168.4.20] INFO  io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2023-10-27 15:41:55 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248730187008> [PLUS]开始请求 => URL[POST /mobile/user],参数类型[json],参数:[{"jobNum":"10011","password":"10011"}]
+2023-10-27 15:41:55 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248730187008> [PLUS]结束请求 => URL[POST /mobile/user],耗时:[627]毫秒
+2023-10-27 15:41:58 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248931644672> [PLUS]开始请求 => URL[GET /error],参数类型[json],参数:[]
+2023-10-27 15:41:58 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248931644672> [PLUS]结束请求 => URL[GET /error],耗时:[2]毫秒
+2023-10-27 15:41:59 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248990627072> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:41:59 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248994886912> [PLUS]开始请求 => URL[GET /error],参数类型[json],参数:[]
+2023-10-27 15:41:59 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248994886912> [PLUS]结束请求 => URL[GET /error],耗时:[0]毫秒
+2023-10-27 15:41:59 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248990627072> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[83]毫秒
+2023-10-27 15:41:59 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248996328704> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:41:59 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593248996328704> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[24]毫秒
+2023-10-27 15:43:35 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255299908864> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:43:35 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255299908864> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[21]毫秒
+2023-10-27 15:43:36 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255405487360> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:43:36 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255405487360> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[23]毫秒
+2023-10-27 15:43:36 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255408108800> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:43:36 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255409550592> [PLUS]开始请求 => URL[GET /error],参数类型[json],参数:[]
+2023-10-27 15:43:36 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255409550592> [PLUS]结束请求 => URL[GET /error],耗时:[0]毫秒
+2023-10-27 15:43:36 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255408108800> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[22]毫秒
+2023-10-27 15:43:39 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255543244032> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:43:39 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255543244032> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[24]毫秒
+2023-10-27 15:43:39 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255545144576> [PLUS]开始请求 => URL[GET /mobile/sysInfo/dict],参数类型[json],参数:[]
+2023-10-27 15:43:39 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255545341184> [PLUS]开始请求 => URL[GET /error],参数类型[json],参数:[]
+2023-10-27 15:43:39 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255545341184> [PLUS]结束请求 => URL[GET /error],耗时:[0]毫秒
+2023-10-27 15:43:39 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593255545144576> [PLUS]结束请求 => URL[GET /mobile/sysInfo/dict],耗时:[21]毫秒
+2023-10-27 16:20:09 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399102670080> [PLUS]开始请求 => URL[GET /captchaImage],无参数
+2023-10-27 16:20:09 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399102670080> [PLUS]结束请求 => URL[GET /captchaImage],耗时:[232]毫秒
+2023-10-27 16:20:14 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399433168128> [PLUS]开始请求 => URL[GET /captchaImage],无参数
+2023-10-27 16:20:14 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399433168128> [PLUS]结束请求 => URL[GET /captchaImage],耗时:[71]毫秒
+2023-10-27 16:20:18 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399689938176> [PLUS]开始请求 => URL[POST /login],参数类型[json],参数:[{"username":"admin","password":"admin123","code":"6","uuid":"10774b511cbd4c27b80f9b238d3e1b84"}]
+2023-10-27 16:20:19 [schedule-pool-1] INFO  c.r.s.s.i.SysLogininforServiceImpl - <0><13593399689938176> [127.0.0.1]内网IP[admin][Success][登录成功]
+2023-10-27 16:20:19 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399689938176> [PLUS]结束请求 => URL[POST /login],耗时:[971]毫秒
+2023-10-27 16:20:19 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399757047040> [PLUS]开始请求 => URL[GET /getInfo],无参数
+2023-10-27 16:20:19 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399757047040> [PLUS]结束请求 => URL[GET /getInfo],耗时:[8]毫秒
+2023-10-27 16:20:19 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399779460352> [PLUS]开始请求 => URL[GET /getRouters],无参数
+2023-10-27 16:20:19 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593399779460352> [PLUS]结束请求 => URL[GET /getRouters],耗时:[79]毫秒
+2023-10-27 16:26:02 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248019200> [PLUS]开始请求 => URL[GET /system/dept/treeselect],无参数
+2023-10-27 16:26:02 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248084737> [PLUS]开始请求 => URL[GET /system/dict/data/type/sys_normal_disable],无参数
+2023-10-27 16:26:02 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248084738> [PLUS]开始请求 => URL[GET /system/config/configKey/sys.user.initPassword],无参数
+2023-10-27 16:26:02 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248150272> [PLUS]开始请求 => URL[GET /system/dict/data/type/sys_user_sex],无参数
+2023-10-27 16:26:02 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248084736> [PLUS]开始请求 => URL[GET /system/user/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"]}]
+2023-10-27 16:26:02 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248084737> [PLUS]结束请求 => URL[GET /system/dict/data/type/sys_normal_disable],耗时:[60]毫秒
+2023-10-27 16:26:02 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248150272> [PLUS]结束请求 => URL[GET /system/dict/data/type/sys_user_sex],耗时:[59]毫秒
+2023-10-27 16:26:02 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248084738> [PLUS]结束请求 => URL[GET /system/config/configKey/sys.user.initPassword],耗时:[62]毫秒
+2023-10-27 16:26:03 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248084736> [PLUS]结束请求 => URL[GET /system/user/list],耗时:[345]毫秒
+2023-10-27 16:26:03 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422248019200> [PLUS]结束请求 => URL[GET /system/dept/treeselect],耗时:[368]毫秒
+2023-10-27 16:26:07 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422537491712> [PLUS]开始请求 => URL[GET /tool/gen/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"]}]
+2023-10-27 16:26:07 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422537491712> [PLUS]结束请求 => URL[GET /tool/gen/list],耗时:[102]毫秒
+2023-10-27 16:26:09 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422693664000> [PLUS]开始请求 => URL[GET /tool/gen/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["2"]}]
+2023-10-27 16:26:09 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422693664000> [PLUS]结束请求 => URL[GET /tool/gen/list],耗时:[51]毫秒
+2023-10-27 16:26:11 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422854096128> [PLUS]开始请求 => URL[GET /tool/gen/batchGenCode],参数类型[param],参数:[{"tables":["g_warning_pile_photo"]}]
+2023-10-27 16:26:12 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593422854096128> [PLUS]结束请求 => URL[GET /tool/gen/batchGenCode],耗时:[296]毫秒
+2023-10-27 16:26:17 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593423200126209> [PLUS]开始请求 => URL[GET /system/menu/list],无参数
+2023-10-27 16:26:17 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593423200126208> [PLUS]开始请求 => URL[GET /system/dict/type/optionselect],无参数
+2023-10-27 16:26:17 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593423200191744> [PLUS]开始请求 => URL[GET /tool/gen/48],无参数
+2023-10-27 16:26:17 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593423200126208> [PLUS]结束请求 => URL[GET /system/dict/type/optionselect],耗时:[40]毫秒
+2023-10-27 16:26:17 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593423200126209> [PLUS]结束请求 => URL[GET /system/menu/list],耗时:[75]毫秒
+2023-10-27 16:26:17 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593423200191744> [PLUS]结束请求 => URL[GET /tool/gen/48],耗时:[193]毫秒
+2023-10-27 16:28:58 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593433764267264> [PLUS]开始请求 => URL[GET /captchaImage],无参数
+2023-10-27 16:28:58 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593433764267264> [PLUS]结束请求 => URL[GET /captchaImage],耗时:[73]毫秒
+2023-10-27 16:29:06 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434269943040> [PLUS]开始请求 => URL[POST /login],参数类型[json],参数:[{"username":"admin","password":"admin123","code":"16","uuid":"0bb92e5811e4453ea00459fac4641484"}]
+2023-10-27 16:29:06 [schedule-pool-2] INFO  c.r.s.s.i.SysLogininforServiceImpl - <0><13593422854096128> [192.168.4.11]内网IP[admin][Success][登录成功]
+2023-10-27 16:29:06 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434269943040> [PLUS]结束请求 => URL[POST /login],耗时:[702]毫秒
+2023-10-27 16:29:06 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434318898432> [PLUS]开始请求 => URL[GET /getInfo],无参数
+2023-10-27 16:29:06 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434318898432> [PLUS]结束请求 => URL[GET /getInfo],耗时:[3]毫秒
+2023-10-27 16:29:06 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434320995584> [PLUS]开始请求 => URL[GET /getRouters],无参数
+2023-10-27 16:29:06 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434320995584> [PLUS]结束请求 => URL[GET /getRouters],耗时:[29]毫秒
+2023-10-27 16:29:14 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434819069184> [PLUS]开始请求 => URL[GET /system/dict/type/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"]}]
+2023-10-27 16:29:14 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434819069184> [PLUS]结束请求 => URL[GET /system/dict/type/list],耗时:[53]毫秒
+2023-10-27 16:29:15 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434879689984> [PLUS]开始请求 => URL[GET /system/dict/data/type/sys_normal_disable],无参数
+2023-10-27 16:29:15 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434879689984> [PLUS]结束请求 => URL[GET /system/dict/data/type/sys_normal_disable],耗时:[24]毫秒
+2023-10-27 16:29:16 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434962134273> [PLUS]开始请求 => URL[GET /gas/user/getWorker],无参数
+2023-10-27 16:29:16 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434962134272> [PLUS]开始请求 => URL[GET /gas/warningPile/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"]}]
+2023-10-27 16:29:16 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434962134273> [PLUS]结束请求 => URL[GET /gas/user/getWorker],耗时:[82]毫秒
+2023-10-27 16:29:16 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434962134272> [PLUS]结束请求 => URL[GET /gas/warningPile/list],耗时:[155]毫秒
+2023-10-27 16:29:16 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434972751104> [PLUS]开始请求 => URL[GET /system/dict/type/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["2"]}]
+2023-10-27 16:29:16 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593434972751104> [PLUS]结束请求 => URL[GET /system/dict/type/list],耗时:[50]毫秒
+2023-10-27 16:30:44 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440711673088> [PLUS]开始请求 => URL[GET /system/dict/type/list],无参数
+2023-10-27 16:30:44 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440711673089> [PLUS]开始请求 => URL[GET /system/dict/data/type/sys_normal_disable],无参数
+2023-10-27 16:30:44 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440711673090> [PLUS]开始请求 => URL[GET /system/dict/type/111],无参数
+2023-10-27 16:30:44 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440711673089> [PLUS]结束请求 => URL[GET /system/dict/data/type/sys_normal_disable],耗时:[25]毫秒
+2023-10-27 16:30:44 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440711673090> [PLUS]结束请求 => URL[GET /system/dict/type/111],耗时:[252]毫秒
+2023-10-27 16:30:44 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440730940672> [PLUS]开始请求 => URL[GET /system/dict/data/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"],"dictType":["repair_type"]}]
+2023-10-27 16:30:44 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440711673088> [PLUS]结束请求 => URL[GET /system/dict/type/list],耗时:[298]毫秒
+2023-10-27 16:30:44 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593440730940672> [PLUS]结束请求 => URL[GET /system/dict/data/list],耗时:[86]毫秒
+2023-10-27 16:30:55 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441405502720> [PLUS]开始请求 => URL[GET /system/dict/type/list],无参数
+2023-10-27 16:30:55 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441405502722> [PLUS]开始请求 => URL[GET /system/dict/type/109],无参数
+2023-10-27 16:30:55 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441405502721> [PLUS]开始请求 => URL[GET /system/dict/data/type/sys_normal_disable],无参数
+2023-10-27 16:30:55 [XNIO-1 task-3] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441405502721> [PLUS]结束请求 => URL[GET /system/dict/data/type/sys_normal_disable],耗时:[20]毫秒
+2023-10-27 16:30:55 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441405502722> [PLUS]结束请求 => URL[GET /system/dict/type/109],耗时:[23]毫秒
+2023-10-27 16:30:55 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441405502720> [PLUS]结束请求 => URL[GET /system/dict/type/list],耗时:[50]毫秒
+2023-10-27 16:30:55 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441409303808> [PLUS]开始请求 => URL[GET /system/dict/data/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"],"dictType":["district"]}]
+2023-10-27 16:30:55 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593441409303808> [PLUS]结束请求 => URL[GET /system/dict/data/list],耗时:[57]毫秒
+2023-10-27 16:31:45 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593444686038272> [PLUS]开始请求 => URL[GET /gas/warningPile/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"]}]
+2023-10-27 16:31:45 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593444686038273> [PLUS]开始请求 => URL[GET /gas/user/getWorker],无参数
+2023-10-27 16:31:45 [XNIO-1 task-4] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593444686038273> [PLUS]结束请求 => URL[GET /gas/user/getWorker],耗时:[23]毫秒
+2023-10-27 16:31:45 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593444686038272> [PLUS]结束请求 => URL[GET /gas/warningPile/list],耗时:[54]毫秒
+2023-10-27 16:31:48 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593444937434368> [PLUS]开始请求 => URL[GET /gas/warningPile/15684],无参数
+2023-10-27 16:31:48 [XNIO-1 task-5] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593444937434368> [PLUS]结束请求 => URL[GET /gas/warningPile/15684],耗时:[34]毫秒
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  io.undertow - stopping server: Undertow - 2.2.12.Final
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
+2023-10-27 16:36:53 [Thread-43] INFO  com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
+2023-10-27 16:36:53 [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.4.20:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
+2023-10-27 16:36:53 [xxl-job, executor ExecutorRegistryThread] INFO  c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destory.
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
+2023-10-27 16:36:53 [xxl-job, executor JobLogFileCleanThread] INFO  c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destory.
+2023-10-27 16:36:53 [xxl-job, executor TriggerCallbackThread] INFO  c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destory.
+2023-10-27 16:36:53 [Thread-42] INFO  c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destory.
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-0} closing ...
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye
+2023-10-27 16:36:56 [background-preinit] INFO  o.h.validator.internal.util.Version - HV000001: Hibernate Validator 6.2.0.Final
+2023-10-27 16:36:56 [main] INFO  com.ruoyi.RuoYiApplication - Starting RuoYiApplication using Java 1.8.0_202 on DESKTOP-QGKPIJM with PID 844 (D:\project\java\zhendashizheng\ruoyi-admin\target\classes started by Administrator in D:\project\java\zhendashizheng)
+2023-10-27 16:36:56 [main] INFO  com.ruoyi.RuoYiApplication - The following profiles are active: dev
+2023-10-27 16:36:58 [main] INFO  org.redisson.Version - Redisson 3.16.3
+2023-10-27 16:36:58 [redisson-netty-2-32] INFO  o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for 49.232.253.249/49.232.253.249:16379
+2023-10-27 16:36:58 [redisson-netty-2-3] INFO  o.r.c.pool.MasterConnectionPool - 32 connections initialized for 49.232.253.249/49.232.253.249:16379
+2023-10-27 16:36:59 [main] INFO  c.ruoyi.framework.config.RedisConfig - 初始化 redis 配置
+2023-10-27 16:36:59 [main] INFO  io.undertow.servlet - Initializing Spring embedded WebApplicationContext
+2023-10-27 16:36:59 [main] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource detect P6SPY plugin and enabled it
+2023-10-27 16:37:00 [main] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1,master} inited
+2023-10-27 16:37:00 [main] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [slave] success
+2023-10-27 16:37:00 [main] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource - add a datasource named [master] success
+2023-10-27 16:37:00 [main] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
+2023-10-27 16:37:05 [main] INFO  c.r.framework.config.JacksonConfig - 初始化 jackson 配置
+2023-10-27 16:37:05 [main] INFO  c.r.s.s.impl.SysOssConfigServiceImpl - 发布刷新OSS配置 => minio
+2023-10-27 16:37:05 [main] INFO  c.r.s.s.impl.SysOssConfigServiceImpl - 发布刷新OSS配置 => qiniu
+2023-10-27 16:37:05 [main] INFO  c.r.s.s.impl.SysOssConfigServiceImpl - 发布刷新OSS配置 => aliyun
+2023-10-27 16:37:05 [main] INFO  c.r.s.s.impl.SysOssConfigServiceImpl - 发布刷新OSS配置 => qcloud
+2023-10-27 16:37:05 [main] INFO  c.r.s.s.impl.SysOssConfigServiceImpl - 发布刷新OSS配置 => hw
+2023-10-27 16:37:07 [main] INFO  com.ruoyi.job.config.XxlJobConfig - >>>>>>>>>>> xxl-job config init.
+2023-10-27 16:37:08 [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:commandJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@b0b2537[class com.ruoyi.job.service.SampleService#commandJobHandler]
+2023-10-27 16:37:08 [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:shardingJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@50953163[class com.ruoyi.job.service.SampleService#shardingJobHandler]
+2023-10-27 16:37:08 [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:httpJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@3e7d458a[class com.ruoyi.job.service.SampleService#httpJobHandler]
+2023-10-27 16:37:08 [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@13978a7e[class com.ruoyi.job.service.SampleService#demoJobHandler]
+2023-10-27 16:37:08 [main] INFO  c.x.job.core.executor.XxlJobExecutor - >>>>>>>>>>> xxl-job register jobhandler success, name:demoJobHandler2, jobHandler:com.xxl.job.core.handler.impl.MethodJobHandler@41e727a6[class com.ruoyi.job.service.SampleService#demoJobHandler2]
+2023-10-27 16:37:08 [Thread-44] INFO  com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server start success, nettype = class com.xxl.job.core.server.EmbedServer, port = 9101
+2023-10-27 16:37:08 [main] INFO  io.undertow - starting server: Undertow - 2.2.12.Final
+2023-10-27 16:37:08 [main] INFO  org.xnio - XNIO version 3.8.4.Final
+2023-10-27 16:37:08 [main] INFO  org.xnio.nio - XNIO NIO Implementation Version 3.8.4.Final
+2023-10-27 16:37:08 [main] INFO  org.jboss.threads - JBoss Threads version 3.1.0.Final
+2023-10-27 16:37:09 [main] INFO  com.ruoyi.RuoYiApplication - Started RuoYiApplication in 13.266 seconds (JVM running for 15.268)
+2023-10-27 16:37:09 [RMI TCP Connection(3)-192.168.4.20] INFO  io.undertow.servlet - Initializing Spring DispatcherServlet 'dispatcherServlet'
+2023-10-27 16:37:12 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466157991168> [PLUS]开始请求 => URL[GET /getInfo],无参数
+2023-10-27 16:37:12 [XNIO-1 task-1] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466157991168> [PLUS]结束请求 => URL[GET /getInfo],耗时:[74]毫秒
+2023-10-27 16:37:12 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466166117632> [PLUS]开始请求 => URL[GET /getRouters],无参数
+2023-10-27 16:37:12 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466166117632> [PLUS]结束请求 => URL[GET /getRouters],耗时:[41]毫秒
+2023-10-27 16:37:13 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466178045184> [PLUS]开始请求 => URL[GET /gas/user/getWorker],无参数
+2023-10-27 16:37:13 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466178045184> [PLUS]结束请求 => URL[GET /gas/user/getWorker],耗时:[54]毫秒
+2023-10-27 16:37:13 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466191480064> [PLUS]开始请求 => URL[GET /gas/warningPile/list],参数类型[param],参数:[{"pageSize":["10"],"pageNum":["1"]}]
+2023-10-27 16:37:13 [XNIO-1 task-2] INFO  c.r.f.I.PlusWebInvokeTimeInterceptor - <0><13593466191480064> [PLUS]结束请求 => URL[GET /gas/warningPile/list],耗时:[168]毫秒
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  io.undertow - stopping server: Undertow - 2.2.12.Final
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  io.undertow.servlet - Destroying Spring FrameworkServlet 'dispatcherServlet'
+2023-10-27 16:38:19 [Thread-44] INFO  com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server stop.
+2023-10-27 16:38:19 [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.4.20:9101/'}, registryResult:ReturnT [code=200, msg=null, content=null]
+2023-10-27 16:38:19 [xxl-job, executor ExecutorRegistryThread] INFO  c.x.j.c.t.ExecutorRegistryThread - >>>>>>>>>>> xxl-job, executor registry thread destory.
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  com.xxl.job.core.server.EmbedServer - >>>>>>>>>>> xxl-job remoting server destroy success.
+2023-10-27 16:38:19 [xxl-job, executor JobLogFileCleanThread] INFO  c.x.j.c.thread.JobLogFileCleanThread - >>>>>>>>>>> xxl-job, executor JobLogFileCleanThread thread destory.
+2023-10-27 16:38:19 [xxl-job, executor TriggerCallbackThread] INFO  c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor callback thread destory.
+2023-10-27 16:38:19 [Thread-43] INFO  c.x.j.c.thread.TriggerCallbackThread - >>>>>>>>>>> xxl-job, executor retry callback thread destory.
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource start closing ....
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-0} closing ...
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closing ...
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  c.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  c.b.d.d.DynamicRoutingDataSource - dynamic-datasource all closed success,bye

+ 2 - 0
logs/sys-user.log

@@ -35,3 +35,5 @@
 2023-10-27 13:50:30 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====
 2023-10-27 13:51:11 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====
 2023-10-27 15:40:02 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====
+2023-10-27 16:36:53 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====
+2023-10-27 16:38:19 [SpringApplicationShutdownHook] INFO  sys-user - ====关闭后台任务任务线程池====

+ 42 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/GWarningPilePhoto.java

@@ -0,0 +1,42 @@
+package com.ruoyi.gas.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 警示桩照片对象 g_warning_pile_photo
+ *
+ * @author JX.Li
+ * @date 2023-10-27
+ */
+@Data
+@Accessors(chain = true)
+@TableName("g_warning_pile_photo")
+public class GWarningPilePhoto extends BaseEntity {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id")
+    private Long id;
+    /**
+     * 警示桩id
+     */
+    private Long warningPileId;
+    /**
+     * 照片
+     */
+    private String picUrl;
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    private String delFlag;
+
+}

+ 5 - 4
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPileBo.java

@@ -1,16 +1,16 @@
 package com.ruoyi.gas.domain.bo;
 
+import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import javax.validation.constraints.*;
-
-import java.util.Date;
 
-import com.ruoyi.common.core.domain.BaseEntity;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * 警示桩业务对象 g_warning_pile
@@ -24,6 +24,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
 @ApiModel("警示桩业务对象")
 public class GWarningPileBo extends BaseEntity {
 
+    private List<String> photoList;
     /**
      * 主键id
      */

+ 73 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/bo/GWarningPilePhotoBo.java

@@ -0,0 +1,73 @@
+package com.ruoyi.gas.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 警示桩照片业务对象 g_warning_pile_photo
+ *
+ * @author JX.Li
+ * @date 2023-10-27
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("警示桩照片业务对象")
+public class GWarningPilePhotoBo extends BaseEntity {
+
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(value = "主键id", required = true)
+    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 警示桩id
+     */
+    @ApiModelProperty(value = "警示桩id", required = true)
+    @NotNull(message = "警示桩id不能为空", groups = { AddGroup.class, EditGroup.class })
+    private Long warningPileId;
+
+    /**
+     * 照片
+     */
+    @ApiModelProperty(value = "照片", required = true)
+    @NotBlank(message = "照片不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String picUrl;
+
+
+    /**
+     * 分页大小
+     */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    /**
+     * 排序列
+     */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+
+    /**
+     * 排序的方向desc或者asc
+     */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+}

+ 46 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GWarningPilePhotoVo.java

@@ -0,0 +1,46 @@
+package com.ruoyi.gas.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+
+/**
+ * 警示桩照片视图对象 g_warning_pile_photo
+ *
+ * @author JX.Li
+ * @date 2023-10-27
+ */
+@Data
+@ApiModel("警示桩照片视图对象")
+@ExcelIgnoreUnannotated
+public class GWarningPilePhotoVo {
+
+	private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+	@ExcelProperty(value = "主键id")
+	@ApiModelProperty("主键id")
+	private Long id;
+
+    /**
+     * 警示桩id
+     */
+	@ExcelProperty(value = "警示桩id")
+	@ApiModelProperty("警示桩id")
+	private Long warningPileId;
+
+    /**
+     * 照片
+     */
+	@ExcelProperty(value = "照片")
+	@ApiModelProperty("照片")
+	private String picUrl;
+
+
+}

+ 2 - 3
ruoyi-gas/src/main/java/com/ruoyi/gas/domain/vo/GWarningPileVo.java

@@ -2,13 +2,11 @@ package com.ruoyi.gas.domain.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.ruoyi.common.annotation.ExcelDictFormat;
-import com.ruoyi.common.convert.ExcelDictConvert;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import java.util.Date;
 
+import java.util.List;
 
 
 /**
@@ -24,6 +22,7 @@ public class GWarningPileVo {
 
 	private static final long serialVersionUID = 1L;
 
+	private List<String> photoList;
     /**
      * 主键id
      */

+ 3 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPileMapper.java

@@ -3,6 +3,8 @@ package com.ruoyi.gas.mapper;
 import com.ruoyi.gas.domain.GWarningPile;
 import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
 
+import java.util.List;
+
 /**
  * 警示桩Mapper接口
  *
@@ -10,5 +12,6 @@ import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
  * @date 2023-10-26
  */
 public interface GWarningPileMapper extends BaseMapperPlus<GWarningPile> {
+    List<String> getPhoto(Long id);
 
 }

+ 18 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/mapper/GWarningPilePhotoMapper.java

@@ -0,0 +1,18 @@
+package com.ruoyi.gas.mapper;
+
+import com.ruoyi.gas.domain.GWarningPilePhoto;
+import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 警示桩照片Mapper接口
+ *
+ * @author JX.Li
+ * @date 2023-10-27
+ */
+public interface GWarningPilePhotoMapper extends BaseMapperPlus<GWarningPilePhoto> {
+    int deleteByUrl(@Param("warningPileId") Long warningPileId, @Param("list") List<String> list);
+
+}

+ 59 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/IGWarningPilePhotoService.java

@@ -0,0 +1,59 @@
+package com.ruoyi.gas.service;
+
+import com.ruoyi.gas.domain.GWarningPilePhoto;
+import com.ruoyi.gas.domain.vo.GWarningPilePhotoVo;
+import com.ruoyi.gas.domain.bo.GWarningPilePhotoBo;
+import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 警示桩照片Service接口
+ *
+ * @author JX.Li
+ * @date 2023-10-27
+ */
+public interface IGWarningPilePhotoService extends IServicePlus<GWarningPilePhoto, GWarningPilePhotoVo> {
+
+	void deleteByUrl(Long warningPileId, List<String> list);
+
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	GWarningPilePhotoVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+    TableDataInfo<GWarningPilePhotoVo> queryPageList(GWarningPilePhotoBo bo);
+
+	/**
+	 * 查询列表
+	 */
+	List<GWarningPilePhotoVo> queryList(GWarningPilePhotoBo bo);
+
+	/**
+	 * 根据新增业务对象插入警示桩照片
+	 * @param bo 警示桩照片新增业务对象
+	 * @return
+	 */
+	Boolean insertByBo(GWarningPilePhotoBo bo);
+
+	/**
+	 * 根据编辑业务对象修改警示桩照片
+	 * @param bo 警示桩照片编辑业务对象
+	 * @return
+	 */
+	Boolean updateByBo(GWarningPilePhotoBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 93 - 0
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPilePhotoServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.gas.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.core.page.PagePlus;
+import com.ruoyi.common.core.page.TableDataInfo;
+import org.springframework.stereotype.Service;
+import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.gas.domain.bo.GWarningPilePhotoBo;
+import com.ruoyi.gas.domain.vo.GWarningPilePhotoVo;
+import com.ruoyi.gas.domain.GWarningPilePhoto;
+import com.ruoyi.gas.mapper.GWarningPilePhotoMapper;
+import com.ruoyi.gas.service.IGWarningPilePhotoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 警示桩照片Service业务层处理
+ *
+ * @author JX.Li
+ * @date 2023-10-27
+ */
+@Service
+public class GWarningPilePhotoServiceImpl extends ServicePlusImpl<GWarningPilePhotoMapper, GWarningPilePhoto, GWarningPilePhotoVo> implements IGWarningPilePhotoService {
+    @Override
+    public void deleteByUrl(Long warningPileId, List<String> list) {
+        baseMapper.deleteByUrl(warningPileId,list);
+    }
+
+    @Override
+    public GWarningPilePhotoVo queryById(Long id){
+        return getVoById(id);
+    }
+
+    @Override
+    public TableDataInfo<GWarningPilePhotoVo> queryPageList(GWarningPilePhotoBo bo) {
+        PagePlus<GWarningPilePhoto, GWarningPilePhotoVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        return PageUtils.buildDataInfo(result);
+    }
+
+    @Override
+    public List<GWarningPilePhotoVo> queryList(GWarningPilePhotoBo bo) {
+        return listVo(buildQueryWrapper(bo));
+    }
+
+    private LambdaQueryWrapper<GWarningPilePhoto> buildQueryWrapper(GWarningPilePhotoBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<GWarningPilePhoto> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getWarningPileId() != null, GWarningPilePhoto::getWarningPileId, bo.getWarningPileId());
+        lqw.eq(StringUtils.isNotBlank(bo.getPicUrl()), GWarningPilePhoto::getPicUrl, bo.getPicUrl());
+        return lqw;
+    }
+
+    @Override
+    public Boolean insertByBo(GWarningPilePhotoBo bo) {
+        GWarningPilePhoto add = BeanUtil.toBean(bo, GWarningPilePhoto.class);
+        validEntityBeforeSave(add);
+        boolean flag = save(add);
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    @Override
+    public Boolean updateByBo(GWarningPilePhotoBo bo) {
+        GWarningPilePhoto update = BeanUtil.toBean(bo, GWarningPilePhoto.class);
+        validEntityBeforeSave(update);
+        return updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(GWarningPilePhoto entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return removeByIds(ids);
+    }
+}

+ 48 - 2
ruoyi-gas/src/main/java/com/ruoyi/gas/service/impl/GWarningPileServiceImpl.java

@@ -10,14 +10,18 @@ import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.gas.domain.GWarningPile;
 import com.ruoyi.gas.domain.bo.GWarningPileBo;
+import com.ruoyi.gas.domain.bo.GWarningPilePhotoBo;
 import com.ruoyi.gas.domain.vo.GWarningPileVo;
 import com.ruoyi.gas.mapper.GWarningPileMapper;
+import com.ruoyi.gas.service.IGWarningPilePhotoService;
 import com.ruoyi.gas.service.IGWarningPileService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 警示桩Service业务层处理
@@ -28,14 +32,20 @@ import java.util.Map;
 @Service
 public class GWarningPileServiceImpl extends ServicePlusImpl<GWarningPileMapper, GWarningPile, GWarningPileVo> implements IGWarningPileService {
 
+    @Autowired
+    private IGWarningPilePhotoService igWarningPilePhotoService;
+
     @Override
     public GWarningPileVo queryById(Long id){
-        return getVoById(id);
+        GWarningPileVo voById = getVoById(id);
+        voById.setPhotoList(baseMapper.getPhoto(voById.getId()));
+        return voById;
     }
 
     @Override
     public TableDataInfo<GWarningPileVo> queryPageList(GWarningPileBo bo) {
         PagePlus<GWarningPile, GWarningPileVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo));
+        result.getRecordsVo().forEach(item -> item.setPhotoList(baseMapper.getPhoto(item.getId())));
         return PageUtils.buildDataInfo(result);
     }
 
@@ -44,7 +54,9 @@ public class GWarningPileServiceImpl extends ServicePlusImpl<GWarningPileMapper,
         LambdaQueryWrapper<GWarningPile> lqw = Wrappers.lambdaQuery();
         lqw.eq(StringUtils.isNotBlank(bo.getUserId()), GWarningPile::getUserId, bo.getUserId());
         lqw.like(StringUtils.isNotBlank(bo.getName()), GWarningPile::getName, bo.getName());
-        return this.listVo(lqw);
+        List<GWarningPileVo> gWarningPileVos = this.listVo(lqw);
+        gWarningPileVos.forEach(item -> item.setPhotoList(baseMapper.getPhoto(item.getId())));
+        return gWarningPileVos;
     }
 
     @Override
@@ -67,6 +79,16 @@ public class GWarningPileServiceImpl extends ServicePlusImpl<GWarningPileMapper,
         boolean flag = save(add);
         if (flag) {
             bo.setId(add.getId());
+            //添加照片
+            List<String> piclist = bo.getPhotoList();
+            if (piclist != null) {
+                for (int i = 0; i < bo.getPhotoList().size(); i++) {
+                    GWarningPilePhotoBo photo = new GWarningPilePhotoBo();
+                    photo.setWarningPileId(bo.getId());
+                    photo.setPicUrl(bo.getPhotoList().get(i));
+                    igWarningPilePhotoService.insertByBo(photo);
+                }
+            }
         }
         return flag;
     }
@@ -75,6 +97,30 @@ public class GWarningPileServiceImpl extends ServicePlusImpl<GWarningPileMapper,
     public Boolean updateByBo(GWarningPileBo bo) {
         GWarningPile update = BeanUtil.toBean(bo, GWarningPile.class);
         validEntityBeforeSave(update);
+        List<String> piclist = bo.getPhotoList();
+        if (piclist != null) {
+            //原有的照片
+            List<String> photolist = baseMapper.getPhoto(bo.getId());
+            //原有的照片不在新传的照片里
+            List<String> dellist = photolist.stream().filter(i -> !piclist.contains(i)).collect(Collectors.toList());
+            //删除照片
+            if (dellist.size() > 0) {
+                igWarningPilePhotoService.deleteByUrl(bo.getId(), dellist);
+            }
+            //新传的照片不在原有的照片里
+            List<String> inslist = piclist.stream().filter(i -> !photolist.contains(i)).collect(Collectors.toList());
+            if (inslist.size() > 0) {
+                for (int i = 0; i < inslist.size(); i++) {
+                    if (StringUtils.isNotEmpty(inslist.get(i))) {
+                        //添加照片
+                        GWarningPilePhotoBo photo = new GWarningPilePhotoBo();
+                        photo.setWarningPileId(bo.getId());
+                        photo.setPicUrl(inslist.get(i));
+                        igWarningPilePhotoService.insertByBo(photo);
+                    }
+                }
+            }
+        }
         return updateById(update);
     }
 

+ 6 - 1
ruoyi-gas/src/main/resources/mapper/GWarningPileMapper.xml

@@ -18,6 +18,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
     </resultMap>
-
+    <select id="getPhoto" resultType="java.lang.String">
+        select pic_url AS picUrl
+        from g_warning_pile_photo
+        where warning_pile_id = #{id}
+          and del_flag = '0'
+    </select>
 
 </mapper>

+ 26 - 0
ruoyi-gas/src/main/resources/mapper/GWarningPilePhotoMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.gas.mapper.GWarningPilePhotoMapper">
+
+    <resultMap type="com.ruoyi.gas.domain.GWarningPilePhoto" id="GWarningPilePhotoResult">
+        <result property="id" column="id"/>
+        <result property="warningPileId" column="warning_pile_id"/>
+        <result property="picUrl" column="pic_url"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <delete id="deleteByUrl" parameterType="String">
+        delete from g_warning_pile_photo where warning_pile_id = #{warningPileId}
+        and pic_url in
+        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+</mapper>