Pārlūkot izejas kodu

张浩---第一次提交:
移动模块admin部分工具类至模块common;
告警管理模块taphole-warn新增音频和异常记录子模块;
设备管理模块taphole-device新增设备厂家子模块(未完善);

zhanghao 6 mēneši atpakaļ
vecāks
revīzija
cd1f44a52f
70 mainītis faili ar 1822 papildinājumiem un 54 dzēšanām
  1. 5 0
      taphole-admin/pom.xml
  2. 3 2
      taphole-admin/src/main/java/com/sckj/admin/aop/aspect/LogAspect.java
  3. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/AlbumsController.java
  4. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/ArtCateController.java
  5. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/ArticleController.java
  6. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/CrontabController.java
  7. 35 2
      taphole-admin/src/main/java/com/sckj/admin/controller/UploadController.java
  8. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/UserController.java
  9. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/channel/ChannelH5Controller.java
  10. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/channel/ChannelMpController.java
  11. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/channel/ChannelOaController.java
  12. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/decorate/DecoratePagesController.java
  13. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/decorate/DecorateTabbarController.java
  14. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/monitor/MonitorCacheController.java
  15. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/monitor/MonitorServerController.java
  16. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingCopyrightController.java
  17. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingDictDataController.java
  18. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingDictTypeController.java
  19. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingLoginController.java
  20. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingNoticeController.java
  21. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingProtocolController.java
  22. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingSearchController.java
  23. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingSmsController.java
  24. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingStorageController.java
  25. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingUserController.java
  26. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingWebsiteController.java
  27. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemAuthAdminController.java
  28. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemAuthMenuController.java
  29. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemAuthRoleController.java
  30. 1 1
      taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemCacheController.java
  31. 1 1
      taphole-admin/src/main/java/com/sckj/admin/service/impl/SystemAuthDeptServiceImpl.java
  32. 1 1
      taphole-admin/src/main/java/com/sckj/admin/service/impl/SystemAuthPostServiceImpl.java
  33. 2 2
      taphole-admin/src/main/java/com/sckj/admin/service/impl/SystemAuthRoleServiceImpl.java
  34. 1 3
      taphole-common/src/main/java/com/sckj/common/aop/Log.java
  35. 1 1
      taphole-common/src/main/java/com/sckj/common/aop/RequestType.java
  36. 9 0
      taphole-common/src/main/java/com/sckj/common/config/GlobalConfig.java
  37. 2 1
      taphole-common/src/main/java/com/sckj/common/enums/AlbumEnum.java
  38. 13 1
      taphole-common/src/main/java/com/sckj/common/plugin/storage/StorageDriver.java
  39. 6 1
      taphole-common/src/main/java/com/sckj/common/plugin/storage/engine/LocalStorage.java
  40. 69 0
      taphole-device/src/main/java/com/sckj/device/controller/TDeviceFactoryController.java
  41. 50 0
      taphole-device/src/main/java/com/sckj/device/entity/TDeviceFactory.java
  42. 13 0
      taphole-device/src/main/java/com/sckj/device/mapper/TDeviceFactoryMapper.java
  43. 60 0
      taphole-device/src/main/java/com/sckj/device/service/ITDeviceFactoryService.java
  44. 161 0
      taphole-device/src/main/java/com/sckj/device/service/impl/TDeviceFactoryServiceImpl.java
  45. 51 0
      taphole-device/src/main/java/com/sckj/device/validate/TDeviceFactoryCreateValidate.java
  46. 31 0
      taphole-device/src/main/java/com/sckj/device/validate/TDeviceFactorySearchValidate.java
  47. 51 0
      taphole-device/src/main/java/com/sckj/device/validate/TDeviceFactoryUpdateValidate.java
  48. 42 0
      taphole-device/src/main/java/com/sckj/device/vo/TDeviceFactoryDetailVo.java
  49. 36 0
      taphole-device/src/main/java/com/sckj/device/vo/TDeviceFactoryListedVo.java
  50. 1 12
      taphole-warn/pom.xml
  51. 78 0
      taphole-warn/src/main/java/com/sckj/warn/controller/TAudioController.java
  52. 69 0
      taphole-warn/src/main/java/com/sckj/warn/controller/TExceptionLogController.java
  53. 51 0
      taphole-warn/src/main/java/com/sckj/warn/entity/TAudio.java
  54. 51 0
      taphole-warn/src/main/java/com/sckj/warn/entity/TExceptionLog.java
  55. 14 0
      taphole-warn/src/main/java/com/sckj/warn/mapper/TAudioMapper.java
  56. 13 0
      taphole-warn/src/main/java/com/sckj/warn/mapper/TExceptionLogMapper.java
  57. 68 0
      taphole-warn/src/main/java/com/sckj/warn/service/ITAudioService.java
  58. 60 0
      taphole-warn/src/main/java/com/sckj/warn/service/ITExceptionLogService.java
  59. 193 0
      taphole-warn/src/main/java/com/sckj/warn/service/impl/TAudioServiceImpl.java
  60. 164 0
      taphole-warn/src/main/java/com/sckj/warn/service/impl/TExceptionLogServiceImpl.java
  61. 49 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TAudioCreateValidate.java
  62. 37 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TAudioSearchValidate.java
  63. 45 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TAudioUpdateValidate.java
  64. 51 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogCreateValidate.java
  65. 42 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogSearchValidate.java
  66. 24 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogUpdateValidate.java
  67. 36 0
      taphole-warn/src/main/java/com/sckj/warn/vo/TAudioDetailVo.java
  68. 48 0
      taphole-warn/src/main/java/com/sckj/warn/vo/TAudioListedVo.java
  69. 19 0
      taphole-warn/src/main/java/com/sckj/warn/vo/TExceptionLogDetailVo.java
  70. 39 0
      taphole-warn/src/main/java/com/sckj/warn/vo/TExceptionLogListedVo.java

+ 5 - 0
taphole-admin/pom.xml

@@ -59,6 +59,11 @@
             <artifactId>taphole-camera</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckj</groupId>
+            <artifactId>taphole-warn</artifactId>
+        </dependency>
+
     </dependencies>
 
     <!-- 插件管理 -->

+ 3 - 2
taphole-admin/src/main/java/com/sckj/admin/aop/aspect/LogAspect.java

@@ -2,7 +2,8 @@ package com.sckj.admin.aop.aspect;
 
 import com.alibaba.fastjson2.JSON;
 import com.sckj.admin.TapholeAdminThreadLocal;
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
+import com.sckj.common.aop.RequestType;
 import com.sckj.common.entity.system.SystemLogOperate;
 import com.sckj.common.mapper.system.SystemLogOperateMapper;
 import com.sckj.common.util.IpUtils;
@@ -51,7 +52,7 @@ public class LogAspect {
     /**
      * 声明切面点拦截那些类
      */
-    @Pointcut("@annotation(com.sckj.admin.aop.Log)")
+    @Pointcut("@annotation(com.sckj.common.aop.Log)")
     private void pointCutMethodController() {}
 
     /**

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/AlbumsController.java

@@ -1,7 +1,7 @@
 package com.sckj.admin.controller;
 
 import com.alibaba.fastjson2.JSONArray;
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IAlbumsService;
 import com.sckj.admin.validate.album.AlbumCateValidate;
 import com.sckj.admin.validate.album.AlbumMoveValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/ArtCateController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IArtCateService;
 import com.sckj.admin.validate.article.ArtCateCreateValidate;
 import com.sckj.admin.validate.article.ArtCateSearchValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/ArticleController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IArticleService;
 import com.sckj.admin.validate.article.ArticleCreateValidate;
 import com.sckj.admin.validate.article.ArticleSearchValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/CrontabController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ICrontabService;
 import com.sckj.admin.validate.commons.IdValidate;
 import com.sckj.admin.validate.commons.PageValidate;

+ 35 - 2
taphole-admin/src/main/java/com/sckj/admin/controller/UploadController.java

@@ -1,8 +1,8 @@
 package com.sckj.admin.controller;
 
 import com.sckj.admin.TapholeAdminThreadLocal;
-import com.sckj.admin.aop.Log;
-import com.sckj.admin.aop.aspect.RequestType;
+import com.sckj.common.aop.Log;
+import com.sckj.common.aop.RequestType;
 import com.sckj.admin.service.IAlbumsService;
 import com.sckj.common.core.AjaxResult;
 import com.sckj.common.enums.AlbumEnum;
@@ -97,4 +97,37 @@ public class UploadController {
         return AjaxResult.success(vo);
     }
 
+    @Log(title = "上传音频", requestType = RequestType.File)
+    @PostMapping("/audio")
+    @ApiOperation(value="上传音频")
+    public AjaxResult<Object> uploadAudio(HttpServletRequest request) {
+        MultipartFile multipartFile;
+        try {
+            multipartFile = ((MultipartRequest) request).getFile("file");
+        } catch (Exception e) {
+            throw new OperateException("请正确选择上传音频!");
+        }
+
+        if (multipartFile == null) {
+            throw new OperateException("请选择上传音频!");
+        }
+
+        StorageDriver storageDriver = new StorageDriver();
+        UploadFilesVo vo = storageDriver.upload(multipartFile, "audio", AlbumEnum.Audio.getCode());
+        String cid = StringUtils.isNotEmpty(request.getParameter("cid")) ? request.getParameter("cid") : "0";
+
+        Map<String, String> album = new LinkedHashMap<>();
+        album.put("cid", cid);
+        album.put("aid", String.valueOf(TapholeAdminThreadLocal.getAdminId()));
+        album.put("type", String.valueOf(AlbumEnum.Video.getCode()));
+        album.put("ext", vo.getExt());
+        album.put("size", vo.getSize().toString());
+        album.put("url", vo.getUrl());
+        album.put("name", vo.getName());
+        Integer id = iAlbumsService.albumAdd(album);
+
+        vo.setId(id);
+        return AjaxResult.success(vo);
+    }
+
 }

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/UserController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IUserService;
 import com.sckj.admin.validate.commons.PageValidate;
 import com.sckj.admin.validate.user.UserSearchValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/channel/ChannelH5Controller.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.channel;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IChannelH5ConfigService;
 import com.sckj.admin.validate.channel.ChannelH5Validate;
 import com.sckj.admin.vo.channel.ChannelH5Vo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/channel/ChannelMpController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.channel;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IChannelMpConfigService;
 import com.sckj.admin.validate.channel.ChannelMpValidate;
 import com.sckj.admin.vo.channel.ChannelMpVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/channel/ChannelOaController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.channel;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IChannelOaConfigService;
 import com.sckj.admin.validate.channel.ChannelOaValidate;
 import com.sckj.admin.vo.channel.ChannelOaVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/decorate/DecoratePagesController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.decorate;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IDecoratePageService;
 import com.sckj.admin.validate.decorate.DecoratePageValidate;
 import com.sckj.admin.vo.decorate.DecoratePageVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/decorate/DecorateTabbarController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.decorate;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.IDecorateTabbarService;
 import com.sckj.admin.validate.decorate.DecorateTabsValidate;
 import com.sckj.admin.vo.decorate.DecorateTabbarVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/monitor/MonitorCacheController.java

@@ -1,7 +1,7 @@
 package com.sckj.admin.controller.monitor;
 
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.common.core.AjaxResult;
 import com.sckj.common.util.StringUtils;
 import io.swagger.annotations.Api;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/monitor/MonitorServerController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.monitor;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.common.core.AjaxResult;
 import com.sckj.common.core.ServerResult;
 import io.swagger.annotations.Api;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingCopyrightController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingCopyrightService;
 import com.sckj.admin.validate.setting.SettingCopyrightValidate;
 import com.sckj.admin.vo.setting.SettingCopyrightVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingDictDataController.java

@@ -1,7 +1,7 @@
 package com.sckj.admin.controller.setting;
 
 import com.baomidou.mybatisplus.core.toolkit.Assert;
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingDictDataService;
 import com.sckj.admin.validate.commons.IdsValidate;
 import com.sckj.admin.validate.commons.PageValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingDictTypeController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingDictTypeService;
 import com.sckj.admin.validate.commons.IdsValidate;
 import com.sckj.admin.validate.commons.PageValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingLoginController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingLoginService;
 import com.sckj.admin.validate.setting.SettingLoginValidate;
 import com.sckj.admin.vo.setting.SettingLoginVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingNoticeController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingNoticeService;
 import com.sckj.admin.vo.setting.SettingNoticeDetailVo;
 import com.sckj.admin.vo.setting.SettingNoticeListedVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingProtocolController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingProtocolService;
 import com.sckj.admin.validate.setting.SettingProtocolValidate;
 import com.sckj.admin.vo.setting.SettingProtocolDetailVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingSearchController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingSearchService;
 import com.sckj.admin.validate.setting.SettingSearchValidate;
 import com.sckj.admin.vo.setting.SettingSearchDetailVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingSmsController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingSmsService;
 import com.sckj.common.core.AjaxResult;
 import io.swagger.annotations.Api;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingStorageController.java

@@ -1,7 +1,7 @@
 package com.sckj.admin.controller.setting;
 
 import com.baomidou.mybatisplus.core.toolkit.Assert;
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingStorageService;
 import com.sckj.common.core.AjaxResult;
 import io.swagger.annotations.Api;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingUserController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingUserService;
 import com.sckj.admin.validate.setting.SettingUserValidate;
 import com.sckj.admin.vo.setting.SettingUserVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/setting/SettingWebsiteController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.setting;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISettingWebsiteService;
 import com.sckj.admin.validate.setting.SettingWebsiteValidate;
 import com.sckj.admin.vo.setting.SettingWebsiteVo;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemAuthAdminController.java

@@ -1,7 +1,7 @@
 package com.sckj.admin.controller.system;
 
 import com.sckj.admin.TapholeAdminThreadLocal;
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISystemAuthAdminService;
 import com.sckj.admin.validate.commons.IdValidate;
 import com.sckj.admin.validate.commons.PageValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemAuthMenuController.java

@@ -2,7 +2,7 @@ package com.sckj.admin.controller.system;
 
 import com.alibaba.fastjson2.JSONArray;
 import com.sckj.admin.TapholeAdminThreadLocal;
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISystemAuthMenuService;
 import com.sckj.admin.validate.commons.IdValidate;
 import com.sckj.admin.validate.system.SystemMenuCreateValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemAuthRoleController.java

@@ -1,6 +1,6 @@
 package com.sckj.admin.controller.system;
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISystemAuthRoleService;
 import com.sckj.admin.validate.commons.IdValidate;
 import com.sckj.admin.validate.commons.PageValidate;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/controller/system/SystemCacheController.java

@@ -1,7 +1,7 @@
 package com.sckj.admin.controller.system;
 
 
-import com.sckj.admin.aop.Log;
+import com.sckj.common.aop.Log;
 import com.sckj.admin.service.ISystemCacheService;
 import com.sckj.common.core.AjaxResult;
 import io.swagger.annotations.Api;

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/service/impl/SystemAuthDeptServiceImpl.java

@@ -217,7 +217,7 @@ class SystemAuthDeptServiceImpl implements ISystemAuthDeptService {
 
         SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.selectOne(new QueryWrapper<SystemAuthAdmin>()
                 .select("id,nickname")
-                .eq("dept_id", id)
+                .eq("dept_ids", id)  //Author:张浩 Date: 2024/10/16  更改"dept_id" -> "dept_ids"
                 .eq("is_delete", 0)
                 .last("limit 1"));
 

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/service/impl/SystemAuthPostServiceImpl.java

@@ -214,7 +214,7 @@ public class SystemAuthPostServiceImpl implements ISystemAuthPostService {
 
         SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.selectOne(new QueryWrapper<SystemAuthAdmin>()
                 .select("id,nickname")
-                .eq("post_id", id)
+                .eq("post_ids", id) //Author:张浩 Date: 2024/10/16  更改"post_id" -> "post_ids"
                 .eq("is_delete", 0)
                 .last("limit 1"));
 

+ 2 - 2
taphole-admin/src/main/java/com/sckj/admin/service/impl/SystemAuthRoleServiceImpl.java

@@ -209,8 +209,8 @@ public class SystemAuthRoleServiceImpl implements ISystemAuthRoleService {
                 "角色已不存在!");
 
         Assert.isNull(systemAuthAdminMapper.selectOne(new QueryWrapper<SystemAuthAdmin>()
-                .select("id", "role", "nickname")
-                .eq("role", id)
+                .select("id", "role_ids", "nickname")   // Author:张浩 Date: 2024/10/16  更改列名 "role" -> "role_ids"
+                .eq("role_ids", id)    // Author:张浩 Date: 2024/10/16  更改列名 "role" -> "role_ids"
                 .eq("is_delete", 0)),
                 "角色已被管理员使用,请先移除");
 

+ 1 - 3
taphole-admin/src/main/java/com/sckj/admin/aop/Log.java → taphole-common/src/main/java/com/sckj/common/aop/Log.java

@@ -1,6 +1,4 @@
-package com.sckj.admin.aop;
-
-import com.sckj.admin.aop.aspect.RequestType;
+package com.sckj.common.aop;
 
 import java.lang.annotation.*;
 

+ 1 - 1
taphole-admin/src/main/java/com/sckj/admin/aop/aspect/RequestType.java → taphole-common/src/main/java/com/sckj/common/aop/RequestType.java

@@ -1,4 +1,4 @@
-package com.sckj.admin.aop.aspect;
+package com.sckj.common.aop;
 
 /**
  * 请求参数类

+ 9 - 0
taphole-common/src/main/java/com/sckj/common/config/GlobalConfig.java

@@ -38,4 +38,13 @@ public class GlobalConfig {
     // 上传视频扩展
     public static String[] uploadVideoExt = new String[] {"mp4", "mp3", "avi", "flv", "rmvb", "mov"};
 
+
+    /**
+     * @author zhanghao
+     * 上传音频限制
+     * 上传音频扩展
+     */
+    public static Integer uploadAudioSize = 1024 * 1024 * 30;
+    public static String[] uploadAudioExt = new String[] {"wav", "mp3", "ogg", "aac", "flav", "m4a"};
+
 }

+ 2 - 1
taphole-common/src/main/java/com/sckj/common/enums/AlbumEnum.java

@@ -6,7 +6,8 @@ package com.sckj.common.enums;
 public enum AlbumEnum {
 
     IMAGE(10, "图片"),
-    Video(20, "视频");
+    Video(20, "视频"),
+    Audio(30, "音频");
 
     /**
      * 构造方法

+ 13 - 1
taphole-common/src/main/java/com/sckj/common/plugin/storage/StorageDriver.java

@@ -104,7 +104,7 @@ public class StorageDriver {
      *
      * @author fzr
      * @param multipartFile 文件对象
-     * @param type 类型: 10=图片, 20=视频
+     * @param type 类型: 10=图片, 20=视频, 30=音频
      */
     private void checkFile(MultipartFile multipartFile, Integer type) {
         String fileName = Objects.requireNonNull(multipartFile.getOriginalFilename());
@@ -126,6 +126,18 @@ public class StorageDriver {
                 throw new OperateException("上传视频不能超出限制:" + (GlobalConfig.uploadVideoSize / 1024 / 1024) + "M");
             }
         }
+        /**
+         * @author zhanghao
+         * 音频检查
+         */
+        else if (type == 30) {
+            if (!Arrays.asList(GlobalConfig.uploadAudioExt).contains(fileExt)) {
+                throw new OperateException("不被支持的扩展:" + fileExt);
+            }
+            if (fileSize > GlobalConfig.uploadAudioSize) {
+                throw new OperateException("上传视频不能超出限制:" + (GlobalConfig.uploadAudioSize / 1024 / 1024) + "M");
+            }
+        }
     }
 
 }

+ 6 - 1
taphole-common/src/main/java/com/sckj/common/plugin/storage/engine/LocalStorage.java

@@ -40,7 +40,12 @@ public class LocalStorage {
 
         // 保存文件
         try {
-            File dest = new File(savePath, saveName);
+            /**
+             * @author zhanghao
+             * 修改  File dest = new File(savePath, saveName);
+             */
+            File des = new File(savePath);
+            File dest = new File(des.getAbsolutePath(), saveName);
             multipartFile.transferTo(dest);
         } catch (Exception e) {
             throw new OperateException("上传文件失败:"+e.getMessage());

+ 69 - 0
taphole-device/src/main/java/com/sckj/device/controller/TDeviceFactoryController.java

@@ -0,0 +1,69 @@
+package com.sckj.device.controller;
+
+import com.sckj.common.aop.Log;
+import com.sckj.device.service.ITDeviceFactoryService;
+import com.sckj.common.validate.commons.IdValidate;
+import com.sckj.device.validate.TDeviceFactoryCreateValidate;
+import com.sckj.device.validate.TDeviceFactoryUpdateValidate;
+import com.sckj.device.validate.TDeviceFactorySearchValidate;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.device.vo.TDeviceFactoryListedVo;
+import com.sckj.device.vo.TDeviceFactoryDetailVo;
+import com.sckj.common.core.AjaxResult;
+import com.sckj.common.core.PageResult;
+import com.sckj.common.validator.annotation.IDMust;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("api/device")
+@Api(tags = "设备厂家管理")
+public class TDeviceFactoryController {
+
+    @Resource
+    ITDeviceFactoryService iTDeviceFactoryService;
+
+    @GetMapping("/list")
+    @ApiOperation(value="设备厂家列表")
+    public AjaxResult<PageResult<TDeviceFactoryListedVo>> list(@Validated PageValidate pageValidate,
+                                                     @Validated TDeviceFactorySearchValidate searchValidate) {
+        PageResult<TDeviceFactoryListedVo> list = iTDeviceFactoryService.list(pageValidate, searchValidate);
+        return AjaxResult.success(list);
+    }
+
+    @GetMapping("/detail")
+    @ApiOperation(value="设备厂家详情")
+    public AjaxResult<TDeviceFactoryDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
+        TDeviceFactoryDetailVo detail = iTDeviceFactoryService.detail(id);
+        return AjaxResult.success(detail);
+    }
+
+    @Log(title = "设备厂家新增")
+    @PostMapping("/add")
+    @ApiOperation(value="设备厂家新增")
+    public AjaxResult<Object> add(@Validated @RequestBody TDeviceFactoryCreateValidate createValidate) {
+        iTDeviceFactoryService.add(createValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "设备厂家编辑")
+    @PostMapping("/edit")
+    @ApiOperation(value="设备厂家编辑")
+    public AjaxResult<Object> edit(@Validated @RequestBody TDeviceFactoryUpdateValidate updateValidate) {
+        iTDeviceFactoryService.edit(updateValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "设备厂家删除")
+    @PostMapping("/del")
+    @ApiOperation(value="设备厂家删除")
+    public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
+        iTDeviceFactoryService.del(idValidate.getId());
+        return AjaxResult.success();
+    }
+
+}

+ 50 - 0
taphole-device/src/main/java/com/sckj/device/entity/TDeviceFactory.java

@@ -0,0 +1,50 @@
+package com.sckj.device.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("设备厂家实体")
+public class TDeviceFactory implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @TableId(value="id", type= IdType.AUTO)
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    @ApiModelProperty(value = "厂家名称")
+    private String factoryName;
+
+    @ApiModelProperty(value = "联系方式")
+    private String factoryPhone;
+
+    @ApiModelProperty(value = "厂家地址")
+    private String factoryAddress;
+
+    @ApiModelProperty(value = "厂家详细地址")
+    private String factoryAddressDetail;
+
+    @ApiModelProperty(value = "质量认证证书路径")
+    private String qcPath;
+
+}

+ 13 - 0
taphole-device/src/main/java/com/sckj/device/mapper/TDeviceFactoryMapper.java

@@ -0,0 +1,13 @@
+package com.sckj.device.mapper;
+
+import com.sckj.common.core.basics.IBaseMapper;
+import com.sckj.device.entity.TDeviceFactory;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 设备厂家Mapper
+ * @author zhanghao
+ */
+@Mapper
+public interface TDeviceFactoryMapper extends IBaseMapper<TDeviceFactory> {
+}

+ 60 - 0
taphole-device/src/main/java/com/sckj/device/service/ITDeviceFactoryService.java

@@ -0,0 +1,60 @@
+package com.sckj.device.service;
+
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.device.validate.TDeviceFactoryCreateValidate;
+import com.sckj.device.validate.TDeviceFactoryUpdateValidate;
+import com.sckj.device.validate.TDeviceFactorySearchValidate;
+import com.sckj.device.vo.TDeviceFactoryListedVo;
+import com.sckj.device.vo.TDeviceFactoryDetailVo;
+import com.sckj.common.core.PageResult;
+
+/**
+ * 设备厂家服务接口类
+ * @author zhanghao
+ */
+public interface ITDeviceFactoryService {
+
+    /**
+     * 设备厂家列表
+     *
+     * @author zhanghao
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TDeviceFactoryListedVo>
+     */
+    PageResult<TDeviceFactoryListedVo> list(PageValidate pageValidate, TDeviceFactorySearchValidate searchValidate);
+
+    /**
+     * 设备厂家详情
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     * @return TDeviceFactoryDetailVo
+     */
+    TDeviceFactoryDetailVo detail(Integer id);
+
+    /**
+     * 设备厂家新增
+     *
+     * @author zhanghao
+     * @param createValidate 参数
+     */
+    void add(TDeviceFactoryCreateValidate createValidate);
+
+    /**
+     * 设备厂家编辑
+     *
+     * @author zhanghao
+     * @param updateValidate 参数
+     */
+    void edit(TDeviceFactoryUpdateValidate updateValidate);
+
+    /**
+     * 设备厂家删除
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    void del(Integer id);
+
+}

+ 161 - 0
taphole-device/src/main/java/com/sckj/device/service/impl/TDeviceFactoryServiceImpl.java

@@ -0,0 +1,161 @@
+package com.sckj.device.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.query.MPJQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.device.service.ITDeviceFactoryService;
+import com.sckj.device.validate.TDeviceFactoryCreateValidate;
+import com.sckj.device.validate.TDeviceFactoryUpdateValidate;
+import com.sckj.device.validate.TDeviceFactorySearchValidate;
+import com.sckj.device.vo.TDeviceFactoryListedVo;
+import com.sckj.device.vo.TDeviceFactoryDetailVo;
+import com.sckj.common.config.GlobalConfig;
+import com.sckj.common.core.PageResult;
+import com.sckj.device.entity.TDeviceFactory;
+import com.sckj.device.mapper.TDeviceFactoryMapper;
+import com.sckj.common.util.ListUtils;
+import com.sckj.common.util.TimeUtils;
+import com.sckj.common.util.UrlUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 设备厂家实现类
+ * @author zhanghao
+ */
+@Service
+public class TDeviceFactoryServiceImpl implements ITDeviceFactoryService {
+        
+    @Resource
+    TDeviceFactoryMapper tDeviceFactoryMapper;
+
+    /**
+     * 设备厂家列表
+     *
+     * @author zhanghao
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TDeviceFactoryListedVo>
+     */
+    @Override
+    public PageResult<TDeviceFactoryListedVo> list(PageValidate pageValidate, TDeviceFactorySearchValidate searchValidate) {
+        Integer page  = pageValidate.getPageNo();
+        Integer limit = pageValidate.getPageSize();
+
+        QueryWrapper<TDeviceFactory> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByDesc("id");
+
+        tDeviceFactoryMapper.setSearch(queryWrapper, searchValidate, new String[]{
+            "datetime:createTimeStart-createTimeEnd@create_time:str",
+            "like:factoryName@factory_name:str",
+            "=:factoryPhone@factory_phone:str",
+            "=:factoryAddress@factory_address:str",
+        });
+
+        IPage<TDeviceFactory> iPage = tDeviceFactoryMapper.selectPage(new Page<>(page, limit), queryWrapper);
+
+        List<TDeviceFactoryListedVo> list = new LinkedList<>();
+        for(TDeviceFactory item : iPage.getRecords()) {
+            TDeviceFactoryListedVo vo = new TDeviceFactoryListedVo();
+            BeanUtils.copyProperties(item, vo);
+            vo.setCreateTime(TimeUtils.timestampToDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getCreateTime())));
+            list.add(vo);
+        }
+
+        return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
+    }
+
+    /**
+     * 设备厂家详情
+     *
+     * @author zhanghao
+     * @param id 主键参数
+     * @return TDeviceFactory
+     */
+    @Override
+    public TDeviceFactoryDetailVo detail(Integer id) {
+        TDeviceFactory model = tDeviceFactoryMapper.selectOne(
+                new QueryWrapper<TDeviceFactory>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在");
+
+        TDeviceFactoryDetailVo vo = new TDeviceFactoryDetailVo();
+        BeanUtils.copyProperties(model, vo);
+        vo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(model.getUpdateTime()));
+        return vo;
+    }
+
+    /**
+     * 设备厂家新增
+     *
+     * @author zhanghao
+     * @param createValidate 参数
+     */
+    @Override
+    public void add(TDeviceFactoryCreateValidate createValidate) {
+        TDeviceFactory model = new TDeviceFactory();
+        model.setCreateBy(createValidate.getCreateBy());
+        model.setCreateTime(new Date(System.currentTimeMillis()));
+        model.setUpdateBy(createValidate.getUpdateBy());
+        model.setUpdateTime(new Date(System.currentTimeMillis()));
+        model.setFactoryName(createValidate.getFactoryName());
+        model.setFactoryPhone(createValidate.getFactoryPhone());
+        model.setFactoryAddress(createValidate.getFactoryAddress());
+        model.setFactoryAddressDetail(createValidate.getFactoryAddressDetail());
+        model.setQcPath(createValidate.getQcPath());
+        tDeviceFactoryMapper.insert(model);
+    }
+
+    /**
+     * 设备厂家编辑
+     *
+     * @author zhanghao
+     * @param updateValidate 参数
+     */
+    @Override
+    public void edit(TDeviceFactoryUpdateValidate updateValidate) {
+        TDeviceFactory model = tDeviceFactoryMapper.selectOne(
+                new QueryWrapper<TDeviceFactory>()
+                    .eq("id",  updateValidate.getId())
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        model.setUpdateBy(updateValidate.getUpdateBy());
+        model.setUpdateTime(new Date(System.currentTimeMillis()));
+        model.setFactoryName(updateValidate.getFactoryName());
+        model.setFactoryPhone(updateValidate.getFactoryPhone());
+        model.setFactoryAddress(updateValidate.getFactoryAddress());
+        model.setFactoryAddressDetail(updateValidate.getFactoryAddressDetail());
+        model.setQcPath(updateValidate.getQcPath());
+        tDeviceFactoryMapper.updateById(model);
+    }
+
+    /**
+     * 设备厂家删除
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    @Override
+    public void del(Integer id) {
+        TDeviceFactory model = tDeviceFactoryMapper.selectOne(
+                new QueryWrapper<TDeviceFactory>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        tDeviceFactoryMapper.delete(new QueryWrapper<TDeviceFactory>().eq("id", id));
+    }
+
+}

+ 51 - 0
taphole-device/src/main/java/com/sckj/device/validate/TDeviceFactoryCreateValidate.java

@@ -0,0 +1,51 @@
+package com.sckj.device.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+@Data
+@ApiModel("设备厂家创建参数")
+public class TDeviceFactoryCreateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "createBy参数缺失")
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull(message = "createTime参数缺失")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @NotNull(message = "factoryName参数缺失")
+    @ApiModelProperty(value = "厂家名称")
+    private String factoryName;
+
+    @NotNull(message = "factoryPhone参数缺失")
+    @ApiModelProperty(value = "联系方式")
+    private String factoryPhone;
+
+    @NotNull(message = "factoryAddress参数缺失")
+    @ApiModelProperty(value = "厂家地址")
+    private String factoryAddress;
+
+    @NotNull(message = "factoryAddressDetail参数缺失")
+    @ApiModelProperty(value = "厂家详细地址")
+    private String factoryAddressDetail;
+
+    @NotNull(message = "qcPath参数缺失")
+    @ApiModelProperty(value = "质量认证证书路径")
+    private String qcPath;
+
+}

+ 31 - 0
taphole-device/src/main/java/com/sckj/device/validate/TDeviceFactorySearchValidate.java

@@ -0,0 +1,31 @@
+package com.sckj.device.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("设备厂家搜素参数")
+public class TDeviceFactorySearchValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "开始时间")
+    private String createTimeStart;
+
+    @ApiModelProperty(value = "结束时间")
+    private String createTimeEnd;
+
+    @ApiModelProperty(value = "厂家名称")
+    private String factoryName;
+
+    @ApiModelProperty(value = "联系方式")
+    private String factoryPhone;
+
+    @ApiModelProperty(value = "厂家地址")
+    private String factoryAddress;
+
+}

+ 51 - 0
taphole-device/src/main/java/com/sckj/device/validate/TDeviceFactoryUpdateValidate.java

@@ -0,0 +1,51 @@
+package com.sckj.device.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 设备厂家参数
+ * @author zhanghao
+ */
+@Data
+@ApiModel("设备厂家更新参数")
+public class TDeviceFactoryUpdateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "id参数必传")
+    @ApiModelProperty(value = "厂家ID")
+    private Long id;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @NotNull(message = "factoryName参数缺失")
+    @ApiModelProperty(value = "厂家名称")
+    private String factoryName;
+
+    @NotNull(message = "factoryPhone参数缺失")
+    @ApiModelProperty(value = "联系方式")
+    private String factoryPhone;
+
+    @NotNull(message = "factoryAddress参数缺失")
+    @ApiModelProperty(value = "厂家地址")
+    private String factoryAddress;
+
+    @NotNull(message = "factoryAddressDetail参数缺失")
+    @ApiModelProperty(value = "厂家详细地址")
+    private String factoryAddressDetail;
+
+    @NotNull(message = "qcPath参数缺失")
+    @ApiModelProperty(value = "质量认证证书路径")
+    private String qcPath;
+
+}

+ 42 - 0
taphole-device/src/main/java/com/sckj/device/vo/TDeviceFactoryDetailVo.java

@@ -0,0 +1,42 @@
+package com.sckj.device.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("设备厂家详情Vo")
+public class TDeviceFactoryDetailVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private String updateTime;
+
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    @ApiModelProperty(value = "厂家名称")
+    private String factoryName;
+
+    @ApiModelProperty(value = "联系方式")
+    private String factoryPhone;
+
+    @ApiModelProperty(value = "厂家地址")
+    private String factoryAddress;
+
+    @ApiModelProperty(value = "厂家详细地址")
+    private String factoryAddressDetail;
+
+    @ApiModelProperty(value = "质量认证证书路径")
+    private String qcPath;
+
+
+}

+ 36 - 0
taphole-device/src/main/java/com/sckj/device/vo/TDeviceFactoryListedVo.java

@@ -0,0 +1,36 @@
+package com.sckj.device.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("设备厂家列表Vo")
+public class TDeviceFactoryListedVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    @ApiModelProperty(value = "厂家名称")
+    private String factoryName;
+
+    @ApiModelProperty(value = "联系方式")
+    private String factoryPhone;
+
+    @ApiModelProperty(value = "厂家地址")
+    private String factoryAddress;
+
+    @ApiModelProperty(value = "厂家详细地址")
+    private String factoryAddressDetail;
+
+
+}

+ 1 - 12
taphole-warn/pom.xml

@@ -19,18 +19,7 @@
             <groupId>com.sckj</groupId>
             <artifactId>taphole-common</artifactId>
         </dependency>
-        <!-- collections工具类 -->
-        <dependency>
-            <groupId>commons-collections</groupId>
-            <artifactId>commons-collections</artifactId>
-            <version>3.2.2</version>
-        </dependency>
-        <!--velocity代码生成使用模板 -->
-        <dependency>
-            <groupId>org.apache.velocity</groupId>
-            <artifactId>velocity-engine-core</artifactId>
-            <version>2.3</version>
-        </dependency>
+
     </dependencies>
 
 </project>

+ 78 - 0
taphole-warn/src/main/java/com/sckj/warn/controller/TAudioController.java

@@ -0,0 +1,78 @@
+package com.sckj.warn.controller;
+
+import com.sckj.common.aop.Log;
+import com.sckj.common.core.AjaxResult;
+import com.sckj.common.core.PageResult;
+import com.sckj.common.validate.commons.IdValidate;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.common.validator.annotation.IDMust;
+import com.sckj.warn.service.ITAudioService;
+import com.sckj.warn.validate.TAudioCreateValidate;
+import com.sckj.warn.validate.TAudioSearchValidate;
+import com.sckj.warn.validate.TAudioUpdateValidate;
+import com.sckj.warn.vo.TAudioDetailVo;
+import com.sckj.warn.vo.TAudioListedVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("api/audio")
+@Api(tags = "音频管理")
+public class TAudioController {
+
+    @Resource
+    ITAudioService iTAudioService;
+
+    @GetMapping("/list")
+    @ApiOperation(value="音频列表")
+    public AjaxResult<PageResult<TAudioListedVo>> list(@Validated PageValidate pageValidate,
+                                                     @Validated TAudioSearchValidate searchValidate) {
+        PageResult<TAudioListedVo> list = iTAudioService.list(pageValidate, searchValidate);
+        return AjaxResult.success(list);
+    }
+
+    @GetMapping("/detail")
+    @ApiOperation(value="音频详情")
+    public AjaxResult<TAudioDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
+        TAudioDetailVo detail = iTAudioService.detail(id);
+        return AjaxResult.success(detail);
+    }
+
+    @Log(title = "音频新增")
+    @PostMapping("/add")
+    @ApiOperation(value="音频新增")
+    public AjaxResult<Object> add(@Validated @RequestBody TAudioCreateValidate createValidate) {
+        iTAudioService.add(createValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "音频编辑")
+    @PostMapping("/edit")
+    @ApiOperation(value="音频编辑")
+    public AjaxResult<Object> edit(@Validated @RequestBody TAudioUpdateValidate updateValidate) {
+        if (iTAudioService.edit(updateValidate) == 1){
+            return AjaxResult.success();
+        }
+        return AjaxResult.failed("音频信息更改失败");
+    }
+
+    @Log(title = "音频删除")
+    @PostMapping("/del")
+    @ApiOperation(value="音频删除")
+    public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
+        iTAudioService.del(idValidate.getId());
+        return AjaxResult.success();
+    }
+
+    @Log(title = "音频地址查询")
+    @PostMapping("/searchPath")
+    @ApiOperation(value="音频地址查询")
+    public String searchPath(@Validated @RequestBody IdValidate idValidate) {
+        return iTAudioService.searchPath(Long.valueOf(idValidate.getId()));
+    }
+
+}

+ 69 - 0
taphole-warn/src/main/java/com/sckj/warn/controller/TExceptionLogController.java

@@ -0,0 +1,69 @@
+package com.sckj.warn.controller;
+
+import com.sckj.common.aop.Log;
+import com.sckj.warn.service.ITExceptionLogService;
+import com.sckj.common.validate.commons.IdValidate;
+import com.sckj.warn.validate.TExceptionLogCreateValidate;
+import com.sckj.warn.validate.TExceptionLogUpdateValidate;
+import com.sckj.warn.validate.TExceptionLogSearchValidate;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.warn.vo.TExceptionLogListedVo;
+import com.sckj.warn.vo.TExceptionLogDetailVo;
+import com.sckj.common.core.AjaxResult;
+import com.sckj.common.core.PageResult;
+import com.sckj.common.validator.annotation.IDMust;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("api/exception_log")
+@Api(tags = "异常情况记录管理")
+public class TExceptionLogController {
+
+    @Resource
+    ITExceptionLogService iTExceptionLogService;
+
+    @GetMapping("/list")
+    @ApiOperation(value="异常情况记录列表")
+    public AjaxResult<PageResult<TExceptionLogListedVo>> list(@Validated PageValidate pageValidate,
+                                                     @Validated TExceptionLogSearchValidate searchValidate) {
+        PageResult<TExceptionLogListedVo> list = iTExceptionLogService.list(pageValidate, searchValidate);
+        return AjaxResult.success(list);
+    }
+
+    @GetMapping("/detail")
+    @ApiOperation(value="异常情况记录详情")
+    public AjaxResult<TExceptionLogDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
+        TExceptionLogDetailVo detail = iTExceptionLogService.detail(id);
+        return AjaxResult.success(detail);
+    }
+
+    @Log(title = "异常情况记录新增")
+    @PostMapping("/add")
+    @ApiOperation(value="异常情况记录新增")
+    public AjaxResult<Object> add(@Validated @RequestBody TExceptionLogCreateValidate createValidate) {
+        iTExceptionLogService.add(createValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "异常情况记录编辑")
+    @PostMapping("/edit")
+    @ApiOperation(value="异常情况记录编辑")
+    public AjaxResult<Object> edit(@Validated @RequestBody TExceptionLogUpdateValidate updateValidate) {
+        iTExceptionLogService.edit(updateValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "异常情况记录删除")
+    @PostMapping("/del")
+    @ApiOperation(value="异常情况记录删除")
+    public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
+        iTExceptionLogService.del(idValidate.getId());
+        return AjaxResult.success();
+    }
+
+}

+ 51 - 0
taphole-warn/src/main/java/com/sckj/warn/entity/TAudio.java

@@ -0,0 +1,51 @@
+package com.sckj.warn.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel("音频实体")
+@TableName("t_audio")
+public class TAudio implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @TableId(value="id", type= IdType.AUTO)
+    @ApiModelProperty(value = "音频编号")
+    private Long id;
+
+    @ApiModelProperty(value = "音频名称")
+    private String name;
+
+    @ApiModelProperty(value = "异常类型")
+    private String exceptionType;
+
+    @ApiModelProperty(value = "危害程度")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "音频地址;存放音频路径文件")
+    private String path;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+}

+ 51 - 0
taphole-warn/src/main/java/com/sckj/warn/entity/TExceptionLog.java

@@ -0,0 +1,51 @@
+package com.sckj.warn.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel("异常情况记录实体")
+@TableName("t_exception_log")
+public class TExceptionLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "异常类型(开口耗时、出铁时间、出铁量、流速、铁水温度变化)")
+    private Integer exceptionType;
+
+    @ApiModelProperty(value = "异常区域(铁口区域,目前只有1号铁口区域)")
+    private String exceptionArea;
+
+    @ApiModelProperty(value = "危害程度(轻微、中等、重度)")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "上报状态,将异常事件上报至视频以及 AI 融合系统(1是 0否)")
+    private String reportedStatus;
+
+    @ApiModelProperty(value = "锅炉编号")
+    private Integer glId;
+
+}

+ 14 - 0
taphole-warn/src/main/java/com/sckj/warn/mapper/TAudioMapper.java

@@ -0,0 +1,14 @@
+package com.sckj.warn.mapper;
+
+import com.sckj.common.core.basics.IBaseMapper;
+import com.sckj.warn.entity.TAudio;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 音频Mapper
+ *
+ * @author zhanghao
+ */
+@Mapper
+public interface TAudioMapper extends IBaseMapper<TAudio> {
+}

+ 13 - 0
taphole-warn/src/main/java/com/sckj/warn/mapper/TExceptionLogMapper.java

@@ -0,0 +1,13 @@
+package com.sckj.warn.mapper;
+
+import com.sckj.common.core.basics.IBaseMapper;
+import com.sckj.warn.entity.TExceptionLog;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 异常情况记录Mapper
+ * @author zhanghao
+ */
+@Mapper
+public interface TExceptionLogMapper extends IBaseMapper<TExceptionLog> {
+}

+ 68 - 0
taphole-warn/src/main/java/com/sckj/warn/service/ITAudioService.java

@@ -0,0 +1,68 @@
+package com.sckj.warn.service;
+
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.warn.validate.TAudioCreateValidate;
+import com.sckj.warn.validate.TAudioUpdateValidate;
+import com.sckj.warn.validate.TAudioSearchValidate;
+import com.sckj.warn.vo.TAudioListedVo;
+import com.sckj.warn.vo.TAudioDetailVo;
+import com.sckj.common.core.PageResult;
+
+/**
+ * 音频服务接口类
+ * @author zhanghao
+ */
+public interface ITAudioService {
+
+    /**
+     * 音频列表
+     *
+     * @author zhanghao
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TAudioListedVo>
+     */
+    PageResult<TAudioListedVo> list(PageValidate pageValidate, TAudioSearchValidate searchValidate);
+
+    /**
+     * 音频详情
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     * @return TAudioDetailVo
+     */
+    TAudioDetailVo detail(Integer id);
+
+    /**
+     * 音频新增
+     *
+     * @author zhanghao
+     * @param createValidate 参数
+     */
+    void add(TAudioCreateValidate createValidate);
+
+    /**
+     * 音频编辑
+     *
+     * @author zhanghao
+     * @param updateValidate 参数
+     */
+    int edit(TAudioUpdateValidate updateValidate);
+
+    /**
+     * 音频删除
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    void del(Integer id);
+
+    /**
+     * 音频地址查询
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    String searchPath(Long id);
+
+}

+ 60 - 0
taphole-warn/src/main/java/com/sckj/warn/service/ITExceptionLogService.java

@@ -0,0 +1,60 @@
+package com.sckj.warn.service;
+
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.warn.validate.TExceptionLogCreateValidate;
+import com.sckj.warn.validate.TExceptionLogUpdateValidate;
+import com.sckj.warn.validate.TExceptionLogSearchValidate;
+import com.sckj.warn.vo.TExceptionLogListedVo;
+import com.sckj.warn.vo.TExceptionLogDetailVo;
+import com.sckj.common.core.PageResult;
+
+/**
+ * 异常情况记录服务接口类
+ * @author zhanghao
+ */
+public interface ITExceptionLogService {
+
+    /**
+     * 异常情况记录列表
+     *
+     * @author zhanghao
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TExceptionLogListedVo>
+     */
+    PageResult<TExceptionLogListedVo> list(PageValidate pageValidate, TExceptionLogSearchValidate searchValidate);
+
+    /**
+     * 异常情况记录详情
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     * @return TExceptionLogDetailVo
+     */
+    TExceptionLogDetailVo detail(Integer id);
+
+    /**
+     * 异常情况记录新增
+     *
+     * @author zhanghao
+     * @param createValidate 参数
+     */
+    void add(TExceptionLogCreateValidate createValidate);
+
+    /**
+     * 异常情况记录编辑
+     *
+     * @author zhanghao
+     * @param updateValidate 参数
+     */
+    void edit(TExceptionLogUpdateValidate updateValidate);
+
+    /**
+     * 异常情况记录删除
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    void del(Integer id);
+
+}

+ 193 - 0
taphole-warn/src/main/java/com/sckj/warn/service/impl/TAudioServiceImpl.java

@@ -0,0 +1,193 @@
+package com.sckj.warn.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.query.MPJQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.warn.service.ITAudioService;
+import com.sckj.warn.validate.TAudioCreateValidate;
+import com.sckj.warn.validate.TAudioUpdateValidate;
+import com.sckj.warn.validate.TAudioSearchValidate;
+import com.sckj.warn.vo.TAudioListedVo;
+import com.sckj.warn.vo.TAudioDetailVo;
+import com.sckj.common.config.GlobalConfig;
+import com.sckj.common.core.PageResult;
+import com.sckj.warn.entity.TAudio;
+import com.sckj.warn.mapper.TAudioMapper;
+import com.sckj.common.util.ListUtils;
+import com.sckj.common.util.TimeUtils;
+import com.sckj.common.util.UrlUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * 音频实现类
+ * @author zhanghao
+ */
+@Service
+public class TAudioServiceImpl implements ITAudioService {
+        
+    @Resource
+    TAudioMapper tAudioMapper;
+
+    /**
+     * 音频列表
+     *
+     * @author zhanghao
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TAudioListedVo>
+     */
+    @Override
+    public PageResult<TAudioListedVo> list(PageValidate pageValidate, TAudioSearchValidate searchValidate) {
+        Integer page  = pageValidate.getPageNo();
+        Integer limit = pageValidate.getPageSize();
+
+        QueryWrapper<TAudio> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByDesc("id");
+
+        tAudioMapper.setSearch(queryWrapper, searchValidate, new String[]{
+            "=:createBy@create_by:str",
+            "=:updateBy@update_by:str",
+            "like:name:str",
+            "=:exceptionType@exception_type:str",
+            "=:exceptionLevel@exception_level:str",
+            "=:path:str",
+            "=:status:str",
+        });
+
+        IPage<TAudio> iPage = tAudioMapper.selectPage(new Page<>(page, limit), queryWrapper);
+
+        List<TAudioListedVo> list = new LinkedList<>();
+        for(TAudio item : iPage.getRecords()) {
+            TAudioListedVo vo = new TAudioListedVo();
+            BeanUtils.copyProperties(item, vo);
+            vo.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getCreateTime()));
+            vo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getUpdateTime()));
+            list.add(vo);
+        }
+
+        return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
+    }
+
+    /**
+     * 音频详情
+     *
+     * @author zhanghao
+     * @param id 主键参数
+     * @return TAudio
+     */
+    @Override
+    public TAudioDetailVo detail(Integer id) {
+        TAudio model = tAudioMapper.selectOne(
+                new QueryWrapper<TAudio>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在");
+
+        TAudioDetailVo vo = new TAudioDetailVo();
+        BeanUtils.copyProperties(model, vo);
+        return vo;
+    }
+
+    /**
+     * 音频新增
+     *
+     * @author zhanghao
+     * @param createValidate 参数
+     */
+    @Override
+    public void add(TAudioCreateValidate createValidate) {
+        TAudio model = new TAudio();
+        model.setCreateBy(createValidate.getCreateBy());
+        model.setCreateTime(new Date(System.currentTimeMillis()));//gg
+        model.setUpdateBy(createValidate.getUpdateBy());
+        model.setUpdateTime(new Date(System.currentTimeMillis()));//gg
+        model.setName(createValidate.getName());
+        model.setPath(createValidate.getPath().substring(6));//获取第六位后的字符串
+        model.setExceptionType(createValidate.getExceptionType());
+        model.setExceptionLevel(createValidate.getExceptionLevel());
+        model.setStatus(createValidate.getStatus());
+        tAudioMapper.insert(model);
+    }
+
+    /**
+     * 音频编辑
+     *
+     * @author zhanghao
+     * @param updateValidate 参数
+     */
+    @Override
+    public int edit(TAudioUpdateValidate updateValidate) {
+        TAudio model = tAudioMapper.selectOne(
+                new QueryWrapper<TAudio>()
+                    .eq("id",  updateValidate.getId())
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+        if (!model.getStatus().equals(updateValidate.getStatus()) && updateValidate.getStatus().equals("1")){
+            /*修改音频状态为启用*/
+            //首先查找是否存在同异常类型同危害程度的已启用音频
+            TAudio tAudio = tAudioMapper.selectOne(
+                    new QueryWrapper<TAudio>()
+                            .eq("exception_type",  updateValidate.getExceptionType())
+                            .eq("exception_level",  updateValidate.getExceptionLevel())
+                            .eq("status",  "1")
+                            .last("limit 1"));
+            //存在冲突
+            if (tAudio.getId() != null){
+                return 0;
+            }
+        }
+        /*未修改音频状态或停用音频或不存在启用状态冲突*/
+        model.setName(updateValidate.getName());
+        model.setPath(updateValidate.getPath());
+        model.setExceptionType(updateValidate.getExceptionType());
+        model.setExceptionLevel(updateValidate.getExceptionLevel());
+        model.setStatus(updateValidate.getStatus());
+        tAudioMapper.updateById(model);
+        return 1;
+    }
+
+    /**
+     * 音频删除
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    @Override
+    public void del(Integer id) {
+        TAudio model = tAudioMapper.selectOne(
+                new QueryWrapper<TAudio>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        tAudioMapper.delete(new QueryWrapper<TAudio>().eq("id", id));
+    }
+
+    /**
+     * 音频地址查询
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    public String searchPath(Long id){
+        TAudio model = tAudioMapper.selectOne(
+                new QueryWrapper<TAudio>()
+                        .eq("id",  id)
+                        .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+        return model.getPath();
+    }
+
+}

+ 164 - 0
taphole-warn/src/main/java/com/sckj/warn/service/impl/TExceptionLogServiceImpl.java

@@ -0,0 +1,164 @@
+package com.sckj.warn.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sckj.common.util.StringUtils;
+import com.sckj.warn.service.ITExceptionLogService;
+import com.sckj.common.core.PageResult;
+import com.sckj.common.util.TimeUtils;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.warn.entity.TExceptionLog;
+import com.sckj.warn.mapper.TExceptionLogMapper;
+import com.sckj.warn.validate.TExceptionLogCreateValidate;
+import com.sckj.warn.validate.TExceptionLogSearchValidate;
+import com.sckj.warn.validate.TExceptionLogUpdateValidate;
+import com.sckj.warn.vo.TExceptionLogDetailVo;
+import com.sckj.warn.vo.TExceptionLogListedVo;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 异常情况记录实现类
+ * @author zhanghao
+ */
+@Service
+public class TExceptionLogServiceImpl implements ITExceptionLogService {
+        
+    @Resource
+    TExceptionLogMapper tExceptionLogMapper;
+
+    /**
+     * 异常情况记录列表
+     *
+     * @author zhanghao
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TExceptionLogListedVo>
+     */
+    @Override
+    public PageResult<TExceptionLogListedVo> list(PageValidate pageValidate, TExceptionLogSearchValidate searchValidate) {
+        Integer page  = pageValidate.getPageNo();
+        Integer limit = pageValidate.getPageSize();
+
+        QueryWrapper<TExceptionLog> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByDesc("id");
+
+        /*数据库时间类型为datetime不可走setSearch()*/
+        if (StringUtils.isNotEmpty(searchValidate.getCreateTimeStart()) && StringUtils.isNotEmpty(searchValidate.getCreateTimeEnd())){
+            queryWrapper.ge("create_time", searchValidate.getCreateTimeStart())
+                    .le("create_time", searchValidate.getCreateTimeEnd());
+        }
+
+        //setSearch()时间参数移除
+        /*"datetime:createTimeStart-createTimeEnd@create_time:str",
+        "datetime:updateTimeStart-updateTimeEnd@update_time:str",*/
+
+        tExceptionLogMapper.setSearch(queryWrapper, searchValidate, new String[]{
+            "=:exceptionType@exception_type:int",
+            "=:exceptionArea@exception_area:str",
+            "=:exceptionLevel@exception_level:str",
+            "=:reportedStatus@reported_status:str",
+            "=:glId@gl_id:int",
+        });
+
+        IPage<TExceptionLog> iPage = tExceptionLogMapper.selectPage(new Page<>(page, limit), queryWrapper);
+
+        List<TExceptionLogListedVo> list = new LinkedList<>();
+        for(TExceptionLog item : iPage.getRecords()) {
+            TExceptionLogListedVo vo = new TExceptionLogListedVo();
+            BeanUtils.copyProperties(item, vo);
+            vo.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getCreateTime())); //由于QueryWrapper或IPage的原因导致JsonFormat注解未生效,此处手动转换格式
+            list.add(vo);
+        }
+
+        return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
+    }
+
+    /**
+     * 异常情况记录详情
+     *
+     * @author zhanghao
+     * @param id 主键参数
+     * @return TExceptionLog
+     */
+    @Override
+    public TExceptionLogDetailVo detail(Integer id) {
+        TExceptionLog model = tExceptionLogMapper.selectOne(
+                new QueryWrapper<TExceptionLog>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在");
+
+        TExceptionLogDetailVo vo = new TExceptionLogDetailVo();
+        BeanUtils.copyProperties(model, vo);
+        return vo;
+    }
+
+    /**
+     * 异常情况记录新增
+     *
+     * @author zhanghao
+     * @param createValidate 参数
+     */
+    @Override
+    public void add(TExceptionLogCreateValidate createValidate) {
+        TExceptionLog model = new TExceptionLog();
+        model.setCreateBy(createValidate.getCreateBy());
+        model.setCreateTime(new Date(System.currentTimeMillis()));//gg
+        model.setUpdateBy(createValidate.getUpdateBy());
+        model.setUpdateTime(new Date(System.currentTimeMillis()));//gg
+        model.setExceptionType(createValidate.getExceptionType());
+        model.setExceptionArea(createValidate.getExceptionArea());
+        model.setExceptionLevel(createValidate.getExceptionLevel());
+        model.setReportedStatus(createValidate.getReportedStatus());
+        model.setGlId(createValidate.getGlId());
+        tExceptionLogMapper.insert(model);
+    }
+
+    /**
+     * 异常情况记录编辑
+     *
+     * @author zhanghao
+     * @param updateValidate 参数
+     */
+    @Override
+    public void edit(TExceptionLogUpdateValidate updateValidate) {
+        TExceptionLog model = tExceptionLogMapper.selectOne(
+                new QueryWrapper<TExceptionLog>()
+                    .eq("id",  updateValidate.getId())
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        model.setUpdateTime(new Date(System.currentTimeMillis()));//gg
+        tExceptionLogMapper.updateById(model);
+    }
+
+    /**
+     * 异常情况记录删除
+     *
+     * @author zhanghao
+     * @param id 主键ID
+     */
+    @Override
+    public void del(Integer id) {
+        TExceptionLog model = tExceptionLogMapper.selectOne(
+                new QueryWrapper<TExceptionLog>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        tExceptionLogMapper.delete(new QueryWrapper<TExceptionLog>().eq("id", id));
+    }
+
+}

+ 49 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TAudioCreateValidate.java

@@ -0,0 +1,49 @@
+package com.sckj.warn.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+import javax.validation.constraints.*;
+
+@Data
+@ApiModel("音频创建参数")
+public class TAudioCreateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @NotNull(message = "name参数缺失")
+    @ApiModelProperty(value = "音频名称")
+    private String name;
+
+    @NotNull(message = "exceptionType参数缺失")
+    @ApiModelProperty(value = "异常类型")
+    private String exceptionType;
+
+    @NotNull(message = "exceptionLevel参数缺失")
+    @ApiModelProperty(value = "危害程度")
+    private String exceptionLevel;
+
+    @NotNull(message = "path参数缺失")
+    @ApiModelProperty(value = "音频地址;存放音频路径文件")
+    private String path;
+
+    @NotNull(message = "status参数缺失")
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+}

+ 37 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TAudioSearchValidate.java

@@ -0,0 +1,37 @@
+package com.sckj.warn.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("音频搜素参数")
+public class TAudioSearchValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "音频名称")
+    private String name;
+
+    @ApiModelProperty(value = "异常类型")
+    private String exceptionType;
+
+    @ApiModelProperty(value = "危害程度")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "音频地址;存放音频路径文件")
+    private String path;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+}

+ 45 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TAudioUpdateValidate.java

@@ -0,0 +1,45 @@
+package com.sckj.warn.validate;
+
+import com.sckj.common.validator.annotation.IDMust;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 音频参数
+ * @author zhanghao
+ */
+@Data
+@ApiModel("音频更新参数")
+public class TAudioUpdateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "id参数必传")
+    @ApiModelProperty(value = "音频编号")
+    private Long id;
+
+    @NotNull(message = "name参数缺失")
+    @ApiModelProperty(value = "音频名称")
+    private String name;
+
+    @NotNull(message = "exceptionType参数缺失")
+    @ApiModelProperty(value = "异常类型")
+    private String exceptionType;
+
+    @NotNull(message = "exceptionLevel参数缺失")
+    @ApiModelProperty(value = "危害程度")
+    private String exceptionLevel;
+
+    @NotNull(message = "path参数缺失")
+    @ApiModelProperty(value = "音频地址;存放音频路径文件")
+    private String path;
+
+    @NotNull(message = "status参数缺失")
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+}

+ 51 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogCreateValidate.java

@@ -0,0 +1,51 @@
+package com.sckj.warn.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel("异常情况记录创建参数")
+public class TExceptionLogCreateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @NotNull(message = "createTime参数缺失")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @NotNull(message = "updateTime参数缺失")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @NotNull(message = "exceptionType参数缺失")
+    @ApiModelProperty(value = "异常类型(开口耗时、出铁时间、出铁量、流速、铁水温度变化)")
+    private Integer exceptionType;
+
+    @NotNull(message = "exceptionArea参数缺失")
+    @ApiModelProperty(value = "异常区域(铁口区域,目前只有1号铁口区域)")
+    private String exceptionArea;
+
+    @NotNull(message = "exceptionLevel参数缺失")
+    @ApiModelProperty(value = "危害程度(轻微、中等、重度)")
+    private String exceptionLevel;
+
+    @NotNull(message = "reportedStatus参数缺失")
+    @ApiModelProperty(value = "上报状态,将异常事件上报至视频以及 AI 融合系统(1是 0否)")
+    private String reportedStatus;
+
+    @NotNull(message = "glId参数缺失")
+    @ApiModelProperty(value = "锅炉编号")
+    private Integer glId;
+
+}

+ 42 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogSearchValidate.java

@@ -0,0 +1,42 @@
+package com.sckj.warn.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("异常情况记录搜素参数")
+public class TExceptionLogSearchValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "开始时间")
+    private String createTimeStart;
+
+    @ApiModelProperty(value = "结束时间")
+    private String createTimeEnd;
+
+    @ApiModelProperty(value = "开始时间")
+    private String updateTimeStart;
+
+    @ApiModelProperty(value = "结束时间")
+    private String updateTimeEnd;
+
+    @ApiModelProperty(value = "异常类型(开口耗时、出铁时间、出铁量、流速、铁水温度变化)")
+    private Integer exceptionType;
+
+    @ApiModelProperty(value = "异常区域(铁口区域,目前只有1号铁口区域)")
+    private String exceptionArea;
+
+    @ApiModelProperty(value = "危害程度(轻微、中等、重度)")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "上报状态,将异常事件上报至视频以及 AI 融合系统(1是 0否)")
+    private String reportedStatus;
+
+    @ApiModelProperty(value = "锅炉编号")
+    private Integer glId;
+
+}

+ 24 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogUpdateValidate.java

@@ -0,0 +1,24 @@
+package com.sckj.warn.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 异常情况记录参数
+ * @author zhanghao
+ */
+@Data
+@ApiModel("异常情况记录更新参数")
+public class TExceptionLogUpdateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "id参数必传")
+    @ApiModelProperty(value = "异常记录Id")
+    private Long id;
+
+}

+ 36 - 0
taphole-warn/src/main/java/com/sckj/warn/vo/TAudioDetailVo.java

@@ -0,0 +1,36 @@
+package com.sckj.warn.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("音频详情Vo")
+public class TAudioDetailVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "音频编号")
+    private Long id;
+
+    @ApiModelProperty(value = "音频名称")
+    private String name;
+
+    @ApiModelProperty(value = "异常类型")
+    private String exceptionType;
+
+    @ApiModelProperty(value = "危害程度")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "音频地址;存放音频路径文件")
+    private String path;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+
+}

+ 48 - 0
taphole-warn/src/main/java/com/sckj/warn/vo/TAudioListedVo.java

@@ -0,0 +1,48 @@
+package com.sckj.warn.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("音频列表Vo")
+public class TAudioListedVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "更新时间")
+    private String updateTime;
+
+    @ApiModelProperty(value = "音频编号")
+    private Long id;
+
+    @ApiModelProperty(value = "音频名称")
+    private String name;
+
+    @ApiModelProperty(value = "异常类型")
+    private String exceptionType;
+
+    @ApiModelProperty(value = "危害程度")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "音频地址;存放音频路径文件")
+    private String path;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+
+}

+ 19 - 0
taphole-warn/src/main/java/com/sckj/warn/vo/TExceptionLogDetailVo.java

@@ -0,0 +1,19 @@
+package com.sckj.warn.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("异常情况记录详情Vo")
+public class TExceptionLogDetailVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+
+}

+ 39 - 0
taphole-warn/src/main/java/com/sckj/warn/vo/TExceptionLogListedVo.java

@@ -0,0 +1,39 @@
+package com.sckj.warn.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Date;
+
+@Data
+@ApiModel("异常情况记录列表Vo")
+public class TExceptionLogListedVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "异常类型(开口耗时、出铁时间、出铁量、流速、铁水温度变化)")
+    private Integer exceptionType;
+
+    @ApiModelProperty(value = "异常区域(铁口区域,目前只有1号铁口区域)")
+    private String exceptionArea;
+
+    @ApiModelProperty(value = "危害程度(轻微、中等、重度)")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "上报状态,将异常事件上报至视频以及 AI 融合系统(1是 0否)")
+    private String reportedStatus;
+
+    @ApiModelProperty(value = "锅炉编号")
+    private Integer glId;
+
+
+}