From a9187da8138ce4c62a628c1c46388b9eb530b5d3 Mon Sep 17 00:00:00 2001 From: tianyongbao Date: Fri, 24 Oct 2025 20:44:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=AE=BE=E5=A4=87=E6=8A=A5=E8=AD=A6=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E3=80=81=E5=BE=AE=E4=BF=A1=E7=BC=93=E5=AD=98=E7=94=A8=E6=88=B7?= =?UTF-8?q?=EF=BC=8C=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- intc-admin/Dockerfile | 10 +- .../java/com/intc/IntcUltraApplication.java | 2 +- .../DeviceWarnCombineController.java | 104 ++++++++++ .../controller/DeviceWarnOneController.java | 106 +++++++++++ .../controller/MessageOpRecordController.java | 104 ++++++++++ .../controller/TecentUserCacheController.java | 104 ++++++++++ .../fishery/domain/DeviceWarnCombine.java | 83 ++++++++ .../intc/fishery/domain/DeviceWarnOne.java | 83 ++++++++ .../intc/fishery/domain/MessageOpRecord.java | 61 ++++++ .../intc/fishery/domain/TecentUserCache.java | 46 +++++ .../domain/bo/DeviceWarnCombineBo.java | 87 +++++++++ .../domain/bo/DeviceWarnOneBatchUpdateBo.java | 52 +++++ .../fishery/domain/bo/DeviceWarnOneBo.java | 89 +++++++++ .../fishery/domain/bo/MessageOpRecordBo.java | 63 +++++++ .../fishery/domain/bo/TecentUserCacheBo.java | 46 +++++ .../domain/vo/DeviceWarnCombineVo.java | 99 ++++++++++ .../fishery/domain/vo/DeviceWarnOneVo.java | 120 ++++++++++++ .../fishery/domain/vo/MessageOpRecordVo.java | 101 ++++++++++ .../fishery/domain/vo/TecentUserCacheVo.java | 58 ++++++ .../mapper/DeviceWarnCombineMapper.java | 15 ++ .../fishery/mapper/DeviceWarnOneMapper.java | 15 ++ .../fishery/mapper/MessageOpRecordMapper.java | 15 ++ .../fishery/mapper/TecentUserCacheMapper.java | 15 ++ .../service/IDeviceWarnCombineService.java | 68 +++++++ .../service/IDeviceWarnOneService.java | 70 +++++++ .../service/IMessageOpRecordService.java | 68 +++++++ .../service/ITecentUserCacheService.java | 68 +++++++ .../impl/DeviceWarnCombineServiceImpl.java | 177 ++++++++++++++++++ .../impl/DeviceWarnOneServiceImpl.java | 154 +++++++++++++++ .../impl/MessageOpRecordServiceImpl.java | 159 ++++++++++++++++ .../impl/TecentUserCacheServiceImpl.java | 131 +++++++++++++ .../fishery/DeviceWarnCombineMapper.xml | 6 + .../mapper/fishery/DeviceWarnOneMapper.xml | 6 + .../mapper/fishery/MessageOpRecordMapper.xml | 6 + .../mapper/fishery/TecentUserCacheMapper.xml | 6 + 35 files changed, 2391 insertions(+), 6 deletions(-) create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnCombineController.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnOneController.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/MessageOpRecordController.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TecentUserCacheController.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnCombine.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnOne.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/MessageOpRecord.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TecentUserCache.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnCombineBo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBatchUpdateBo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/MessageOpRecordBo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TecentUserCacheBo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnCombineVo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnOneVo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/MessageOpRecordVo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TecentUserCacheVo.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnCombineMapper.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnOneMapper.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/MessageOpRecordMapper.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TecentUserCacheMapper.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnCombineService.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnOneService.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IMessageOpRecordService.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ITecentUserCacheService.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnCombineServiceImpl.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnOneServiceImpl.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/MessageOpRecordServiceImpl.java create mode 100644 intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/TecentUserCacheServiceImpl.java create mode 100644 intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnCombineMapper.xml create mode 100644 intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnOneMapper.xml create mode 100644 intc-modules/intc-fishery/src/main/resources/mapper/fishery/MessageOpRecordMapper.xml create mode 100644 intc-modules/intc-fishery/src/main/resources/mapper/fishery/TecentUserCacheMapper.xml diff --git a/intc-admin/Dockerfile b/intc-admin/Dockerfile index 0394ccb..f033571 100644 --- a/intc-admin/Dockerfile +++ b/intc-admin/Dockerfile @@ -5,11 +5,11 @@ FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds LABEL maintainer="Lion Li" -RUN mkdir -p /ruoyi/server/logs \ - /ruoyi/server/temp \ - /ruoyi/skywalking/agent +RUN mkdir -p /intc/server/logs \ + /intc/server/temp \ + /intc/skywalking/agent -WORKDIR /ruoyi/server +WORKDIR /intc/server ENV SERVER_PORT=8080 SNAIL_PORT=28080 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="" @@ -17,7 +17,7 @@ EXPOSE ${SERVER_PORT} # 暴露 snail job 客户端端口 用于定时任务调度中心通信 EXPOSE ${SNAIL_PORT} -ADD ./target/ruoyi-admin.jar ./app.jar +ADD ./target/intc-admin.jar ./app.jar SHELL ["/bin/bash", "-c"] diff --git a/intc-admin/src/main/java/com/intc/IntcUltraApplication.java b/intc-admin/src/main/java/com/intc/IntcUltraApplication.java index 2cfd5bd..2479cb9 100644 --- a/intc-admin/src/main/java/com/intc/IntcUltraApplication.java +++ b/intc-admin/src/main/java/com/intc/IntcUltraApplication.java @@ -17,7 +17,7 @@ public class IntcUltraApplication { SpringApplication application = new SpringApplication(IntcUltraApplication.class); application.setApplicationStartup(new BufferingApplicationStartup(2048)); application.run(args); - System.out.println("(♥◠‿◠)ノ゙ Intc-Vue-Plus启动成功 ლ(´ڡ`ლ)゙"); + System.out.println("(♥◠‿◠)ノ゙ Intc-Vue-Ultra启动成功 ლ(´ڡ`ლ)゙"); } } diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnCombineController.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnCombineController.java new file mode 100644 index 0000000..32902ce --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnCombineController.java @@ -0,0 +1,104 @@ +package com.intc.fishery.controller; + +import java.util.List; +import com.intc.common.excel.utils.ExcelUtil; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.intc.common.idempotent.annotation.RepeatSubmit; +import com.intc.common.log.annotation.Log; +import com.intc.common.web.core.BaseController; +import com.intc.common.mybatis.core.page.PageQuery; +import com.intc.common.core.domain.R; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.common.log.enums.BusinessType; +import com.intc.fishery.domain.vo.DeviceWarnCombineVo; +import com.intc.fishery.domain.bo.DeviceWarnCombineBo; +import com.intc.fishery.service.IDeviceWarnCombineService; +import com.intc.common.mybatis.core.page.TableDataInfo; + +/** + * 设备告警信息 + * + * @author intc + * @date 2025-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fishery/deviceWarnCombine") +public class DeviceWarnCombineController extends BaseController { + + private final IDeviceWarnCombineService deviceWarnCombineService; + + /** + * 查询设备告警信息列表 + */ + @SaCheckPermission("fishery:deviceWarnCombine:list") + @GetMapping("/list") + public TableDataInfo list(DeviceWarnCombineBo bo, PageQuery pageQuery) { + return deviceWarnCombineService.queryPageList(bo, pageQuery); + } + + /** + * 导出设备告警信息列表 + */ + @SaCheckPermission("fishery:deviceWarnCombine:export") + @Log(title = "设备告警信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceWarnCombineBo bo, HttpServletResponse response) { + List list = deviceWarnCombineService.queryList(bo); + ExcelUtil.exportExcel(list, "设备告警信息", DeviceWarnCombineVo.class, response); + } + + /** + * 获取设备告警信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fishery:deviceWarnCombine:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(deviceWarnCombineService.queryById(id)); + } + + /** + * 新增设备告警信息 + */ + @SaCheckPermission("fishery:deviceWarnCombine:add") + @Log(title = "设备告警信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceWarnCombineBo bo) { + return toAjax(deviceWarnCombineService.insertByBo(bo)); + } + + /** + * 修改设备告警信息 + */ + @SaCheckPermission("fishery:deviceWarnCombine:edit") + @Log(title = "设备告警信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceWarnCombineBo bo) { + return toAjax(deviceWarnCombineService.updateByBo(bo)); + } + + /** + * 删除设备告警信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("fishery:deviceWarnCombine:remove") + @Log(title = "设备告警信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(deviceWarnCombineService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnOneController.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnOneController.java new file mode 100644 index 0000000..1533bc2 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/DeviceWarnOneController.java @@ -0,0 +1,106 @@ +package com.intc.fishery.controller; + +import java.util.List; +import com.intc.common.excel.utils.ExcelUtil; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.intc.common.idempotent.annotation.RepeatSubmit; +import com.intc.common.log.annotation.Log; +import com.intc.common.web.core.BaseController; +import com.intc.common.mybatis.core.page.PageQuery; +import com.intc.common.core.domain.R; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.common.log.enums.BusinessType; +import com.intc.fishery.domain.vo.DeviceWarnOneVo; +import com.intc.fishery.domain.bo.DeviceWarnOneBo; +import com.intc.fishery.domain.bo.DeviceWarnOneBatchUpdateBo; +import com.intc.fishery.service.IDeviceWarnOneService; +import com.intc.common.mybatis.core.page.TableDataInfo; + +/** + * 设备报警明细 + * + * @author intc + * @date 2025-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fishery/deviceWarnOne") +public class DeviceWarnOneController extends BaseController { + + private final IDeviceWarnOneService deviceWarnOneService; + + /** + * 查询设备报警明细列表 + */ + @SaCheckPermission("fishery:deviceWarnOne:list") + @GetMapping("/list") + public TableDataInfo list(DeviceWarnOneBo bo, PageQuery pageQuery) { + return deviceWarnOneService.queryPageList(bo, pageQuery); + } + + /** + * 导出设备报警明细列表 + */ + @SaCheckPermission("fishery:deviceWarnOne:export") + @Log(title = "设备报警明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(DeviceWarnOneBo bo, HttpServletResponse response) { + List list = deviceWarnOneService.queryList(bo); + ExcelUtil.exportExcel(list, "设备报警明细", DeviceWarnOneVo.class, response); + } + + /** + * 获取设备报警明细详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fishery:deviceWarnOne:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(deviceWarnOneService.queryById(id)); + } + + /** + * 新增设备报警明细 + */ + @SaCheckPermission("fishery:deviceWarnOne:add") + @Log(title = "设备报警明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody DeviceWarnOneBo bo) { + return toAjax(deviceWarnOneService.insertByBo(bo)); + } + + /** + * 修改设备报警明细 + */ + @SaCheckPermission("fishery:deviceWarnOne:edit") + @Log(title = "设备报警明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody DeviceWarnOneBo bo) { + return toAjax(deviceWarnOneService.updateByBo(bo)); + } + + /** + * 删除设备报警明细 + * + * @param ids 主键串 + */ + @SaCheckPermission("fishery:deviceWarnOne:remove") + @Log(title = "设备报警明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(deviceWarnOneService.deleteWithValidByIds(List.of(ids), true)); + } + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/MessageOpRecordController.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/MessageOpRecordController.java new file mode 100644 index 0000000..e1a0be0 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/MessageOpRecordController.java @@ -0,0 +1,104 @@ +package com.intc.fishery.controller; + +import java.util.List; +import com.intc.common.excel.utils.ExcelUtil; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.intc.common.idempotent.annotation.RepeatSubmit; +import com.intc.common.log.annotation.Log; +import com.intc.common.web.core.BaseController; +import com.intc.common.mybatis.core.page.PageQuery; +import com.intc.common.core.domain.R; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.common.log.enums.BusinessType; +import com.intc.fishery.domain.vo.MessageOpRecordVo; +import com.intc.fishery.domain.bo.MessageOpRecordBo; +import com.intc.fishery.service.IMessageOpRecordService; +import com.intc.common.mybatis.core.page.TableDataInfo; + +/** + * 用户操作记录 + * + * @author intc + * @date 2025-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fishery/messageOpRecord") +public class MessageOpRecordController extends BaseController { + + private final IMessageOpRecordService messageOpRecordService; + + /** + * 查询用户操作记录列表 + */ + @SaCheckPermission("fishery:messageOpRecord:list") + @GetMapping("/list") + public TableDataInfo list(MessageOpRecordBo bo, PageQuery pageQuery) { + return messageOpRecordService.queryPageList(bo, pageQuery); + } + + /** + * 导出用户操作记录列表 + */ + @SaCheckPermission("fishery:messageOpRecord:export") + @Log(title = "用户操作记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(MessageOpRecordBo bo, HttpServletResponse response) { + List list = messageOpRecordService.queryList(bo); + ExcelUtil.exportExcel(list, "用户操作记录", MessageOpRecordVo.class, response); + } + + /** + * 获取用户操作记录详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fishery:messageOpRecord:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(messageOpRecordService.queryById(id)); + } + + /** + * 新增用户操作记录 + */ + @SaCheckPermission("fishery:messageOpRecord:add") + @Log(title = "用户操作记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody MessageOpRecordBo bo) { + return toAjax(messageOpRecordService.insertByBo(bo)); + } + + /** + * 修改用户操作记录 + */ + @SaCheckPermission("fishery:messageOpRecord:edit") + @Log(title = "用户操作记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody MessageOpRecordBo bo) { + return toAjax(messageOpRecordService.updateByBo(bo)); + } + + /** + * 删除用户操作记录 + * + * @param ids 主键串 + */ + @SaCheckPermission("fishery:messageOpRecord:remove") + @Log(title = "用户操作记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(messageOpRecordService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TecentUserCacheController.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TecentUserCacheController.java new file mode 100644 index 0000000..b1b7b97 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TecentUserCacheController.java @@ -0,0 +1,104 @@ +package com.intc.fishery.controller; + +import java.util.List; +import com.intc.common.excel.utils.ExcelUtil; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.intc.common.idempotent.annotation.RepeatSubmit; +import com.intc.common.log.annotation.Log; +import com.intc.common.web.core.BaseController; +import com.intc.common.mybatis.core.page.PageQuery; +import com.intc.common.core.domain.R; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.common.log.enums.BusinessType; +import com.intc.fishery.domain.vo.TecentUserCacheVo; +import com.intc.fishery.domain.bo.TecentUserCacheBo; +import com.intc.fishery.service.ITecentUserCacheService; +import com.intc.common.mybatis.core.page.TableDataInfo; + +/** + * 公众号用户缓存 + * + * @author intc + * @date 2025-10-23 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fishery/tecentUserCache") +public class TecentUserCacheController extends BaseController { + + private final ITecentUserCacheService tecentUserCacheService; + + /** + * 查询公众号用户缓存列表 + */ + @SaCheckPermission("fishery:tecentUserCache:list") + @GetMapping("/list") + public TableDataInfo list(TecentUserCacheBo bo, PageQuery pageQuery) { + return tecentUserCacheService.queryPageList(bo, pageQuery); + } + + /** + * 导出公众号用户缓存列表 + */ + @SaCheckPermission("fishery:tecentUserCache:export") + @Log(title = "公众号用户缓存", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(TecentUserCacheBo bo, HttpServletResponse response) { + List list = tecentUserCacheService.queryList(bo); + ExcelUtil.exportExcel(list, "公众号用户缓存", TecentUserCacheVo.class, response); + } + + /** + * 获取公众号用户缓存详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fishery:tecentUserCache:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(tecentUserCacheService.queryById(id)); + } + + /** + * 新增公众号用户缓存 + */ + @SaCheckPermission("fishery:tecentUserCache:add") + @Log(title = "公众号用户缓存", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody TecentUserCacheBo bo) { + return toAjax(tecentUserCacheService.insertByBo(bo)); + } + + /** + * 修改公众号用户缓存 + */ + @SaCheckPermission("fishery:tecentUserCache:edit") + @Log(title = "公众号用户缓存", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody TecentUserCacheBo bo) { + return toAjax(tecentUserCacheService.updateByBo(bo)); + } + + /** + * 删除公众号用户缓存 + * + * @param ids 主键串 + */ + @SaCheckPermission("fishery:tecentUserCache:remove") + @Log(title = "公众号用户缓存", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(tecentUserCacheService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnCombine.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnCombine.java new file mode 100644 index 0000000..fd66478 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnCombine.java @@ -0,0 +1,83 @@ +package com.intc.fishery.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.intc.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 设备告警信息对象 mgr_device_warn_combine + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("mgr_device_warn_combine") +public class DeviceWarnCombine extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 设备编号 + */ + private String deviceSerialNum; + + /** + * 设备类型 + */ + private Integer deviceType; + + /** + * 参数类型 + */ + private Integer thresholdType; + + /** + * 进展状态 + */ + private Integer processStatus; + + /** + * 故障类型 + */ + private Integer warnType; + + /** + * 告警总数量 + */ + private Integer totalCount; + + /** + * 备注 + */ + private String remarkContent; + + /** + * 处理人 + */ + private String handlerName; + + /** + * 处理时间 + */ + private Date processTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnOne.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnOne.java new file mode 100644 index 0000000..b9fa30b --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/DeviceWarnOne.java @@ -0,0 +1,83 @@ +package com.intc.fishery.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.intc.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 设备报警明细对象 mgr_device_warn_one + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("mgr_device_warn_one") +public class DeviceWarnOne extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 报警主表id + */ + private Long warnCombineId; + + /** + * 用户id + */ + private Long userId; + + /** + * 告警最大值 + */ + private Double limitUpper; + + /** + * 告警最小值 + */ + private Double limitLower; + + /** + * 告警当前值 + */ + private Double curValue; + + /** + * 进展状态 + */ + private Integer processStatus; + + /** + * 故障类型 + */ + private Integer warnType; + + /** + * 处理人 + */ + private String handlerName; + + /** + * 处理时间 + */ + private Date processTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/MessageOpRecord.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/MessageOpRecord.java new file mode 100644 index 0000000..310585c --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/MessageOpRecord.java @@ -0,0 +1,61 @@ +package com.intc.fishery.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.intc.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 用户操作记录对象 aqu_message_op_record + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("aqu_message_op_record") +public class MessageOpRecord extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 操作用户id + */ + private Long opUserId; + + /** + * 操作标题 + */ + private String title; + + /** + * 操作内容 + */ + private String message; + + /** + * 操作方式 + */ + private Integer opType; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TecentUserCache.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TecentUserCache.java new file mode 100644 index 0000000..6e3de43 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TecentUserCache.java @@ -0,0 +1,46 @@ +package com.intc.fishery.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.intc.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 公众号用户缓存对象 aqu_tecent_user_cache + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("aqu_tecent_user_cache") +public class TecentUserCache extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * openId + */ + private String openId; + + /** + * unionId + */ + private String unionId; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnCombineBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnCombineBo.java new file mode 100644 index 0000000..34e325d --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnCombineBo.java @@ -0,0 +1,87 @@ +package com.intc.fishery.domain.bo; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.fishery.domain.DeviceWarnCombine; +import com.intc.common.mybatis.core.domain.BaseEntity; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 设备告警信息业务对象 mgr_device_warn_combine + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DeviceWarnCombine.class, reverseConvertGenerate = false) +public class DeviceWarnCombineBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 设备编号 + */ + @NotBlank(message = "设备编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String deviceSerialNum; + + /** + * 设备类型 + */ + @NotNull(message = "设备类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer deviceType; + + /** + * 参数类型 + */ + @NotNull(message = "参数类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer thresholdType; + + /** + * 进展状态 + */ + @NotNull(message = "进展状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer processStatus; + + /** + * 故障类型 + */ + @NotNull(message = "故障类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer warnType; + + /** + * 告警总数量 + */ + @NotNull(message = "告警总数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer totalCount; + + /** + * 备注 + */ + private String remarkContent; + + /** + * 处理人 + */ + private String handlerName; + + /** + * 处理时间 + */ + private Date processTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBatchUpdateBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBatchUpdateBo.java new file mode 100644 index 0000000..bc47ef6 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBatchUpdateBo.java @@ -0,0 +1,52 @@ +package com.intc.fishery.domain.bo; + +import java.util.Date; + +import com.intc.common.mybatis.core.domain.BaseEntity; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 设备报警明细批量更新业务对象 + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class DeviceWarnOneBatchUpdateBo extends BaseEntity { + + /** + * 报警主表id(必填,用于批量更新条件) + */ + @NotNull(message = "报警主表id不能为空") + private Long warnCombineId; + + /** + * 进展状态 + */ + private Integer processStatus; + + /** + * 故障类型 + */ + private Integer warnType; + + /** + * 处理人 + */ + private String handlerName; + + /** + * 处理时间 + */ + private Date processTime; + + /** + * 备注 + */ + private String remark; + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBo.java new file mode 100644 index 0000000..71178a6 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/DeviceWarnOneBo.java @@ -0,0 +1,89 @@ +package com.intc.fishery.domain.bo; +import java.util.Date; + +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.common.mybatis.core.domain.BaseEntity; +import com.intc.fishery.domain.DeviceWarnOne; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 设备报警明细业务对象 mgr_device_warn_one + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = DeviceWarnOne.class, reverseConvertGenerate = false) +public class DeviceWarnOneBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 报警主表id + */ + @NotNull(message = "报警主表id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long warnCombineId; + + /** + * 用户id + */ + @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 告警最大值 + */ + @NotNull(message = "告警最大值不能为空", groups = { AddGroup.class, EditGroup.class }) + private Double limitUpper; + + /** + * 告警最小值 + */ + @NotNull(message = "告警最小值不能为空", groups = { AddGroup.class, EditGroup.class }) + private Double limitLower; + + /** + * 告警当前值 + */ + @NotNull(message = "告警当前值不能为空", groups = { AddGroup.class, EditGroup.class }) + private Double curValue; + + /** + * 进展状态 + */ + @NotNull(message = "进展状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer processStatus; + + /** + * 故障类型 + */ + @NotNull(message = "故障类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer warnType; + + /** + * 处理人 + */ + private String handlerName; + + /** + * 处理时间 + */ + private Date processTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/MessageOpRecordBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/MessageOpRecordBo.java new file mode 100644 index 0000000..a7e4979 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/MessageOpRecordBo.java @@ -0,0 +1,63 @@ +package com.intc.fishery.domain.bo; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.fishery.domain.MessageOpRecord; +import com.intc.common.mybatis.core.domain.BaseEntity; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 用户操作记录业务对象 aqu_message_op_record + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = MessageOpRecord.class, reverseConvertGenerate = false) +public class MessageOpRecordBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 用户id + */ + @NotNull(message = "用户id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 操作用户id + */ + private Long opUserId; + + /** + * 操作标题 + */ + @NotBlank(message = "操作标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 操作内容 + */ + @NotBlank(message = "操作内容不能为空", groups = { AddGroup.class, EditGroup.class }) + private String message; + + /** + * 操作方式 + */ + @NotNull(message = "操作方式不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer opType; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TecentUserCacheBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TecentUserCacheBo.java new file mode 100644 index 0000000..0ff4318 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TecentUserCacheBo.java @@ -0,0 +1,46 @@ +package com.intc.fishery.domain.bo; +import com.intc.common.core.validate.AddGroup; +import com.intc.common.core.validate.EditGroup; +import com.intc.fishery.domain.TecentUserCache; +import com.intc.common.mybatis.core.domain.BaseEntity; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 公众号用户缓存业务对象 aqu_tecent_user_cache + * + * @author intc + * @date 2025-10-23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = TecentUserCache.class, reverseConvertGenerate = false) +public class TecentUserCacheBo extends BaseEntity { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * openId + */ + @NotBlank(message = "openId不能为空", groups = { AddGroup.class, EditGroup.class }) + private String openId; + + /** + * unionId + */ + @NotBlank(message = "unionId不能为空", groups = { AddGroup.class, EditGroup.class }) + private String unionId; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnCombineVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnCombineVo.java new file mode 100644 index 0000000..f125ece --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnCombineVo.java @@ -0,0 +1,99 @@ +package com.intc.fishery.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.intc.fishery.domain.DeviceWarnCombine; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.intc.common.excel.annotation.ExcelDictFormat; +import com.intc.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 设备告警信息视图对象 mgr_device_warn_combine + * + * @author intc + * @date 2025-10-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DeviceWarnCombine.class) +public class DeviceWarnCombineVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 设备编号 + */ + @ExcelProperty(value = "设备编号") + private String deviceSerialNum; + + /** + * 设备类型 + */ + @ExcelProperty(value = "设备类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "aqu_device_type") + private Integer deviceType; + + /** + * 参数类型 + */ + @ExcelProperty(value = "参数类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "threshold_type") + private Integer thresholdType; + + /** + * 进展状态 + */ + @ExcelProperty(value = "进展状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "process_status") + private Integer processStatus; + + /** + * 故障类型 + */ + @ExcelProperty(value = "故障类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "risk_type") + private Integer warnType; + + /** + * 告警总数量 + */ + @ExcelProperty(value = "告警总数量") + private Integer totalCount; + + /** + * 处理人 + */ + @ExcelProperty(value = "处理人") + private String handlerName; + + /** + * 处理时间 + */ + @ExcelProperty(value = "处理时间") + private Date processTime; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + + private Date updateTime; +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnOneVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnOneVo.java new file mode 100644 index 0000000..e80506c --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceWarnOneVo.java @@ -0,0 +1,120 @@ +package com.intc.fishery.domain.vo; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.intc.common.excel.annotation.ExcelDictFormat; +import com.intc.common.excel.convert.ExcelDictConvert; +import com.intc.common.json.handler.DoubleSerializer; +import com.intc.fishery.domain.DeviceWarnOne; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + + + +/** + * 设备报警明细视图对象 mgr_device_warn_one + * + * @author intc + * @date 2025-10-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = DeviceWarnOne.class) +public class DeviceWarnOneVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 报警主表id + */ + @ExcelProperty(value = "报警主表id") + private Long warnCombineId; + + /** + * 用户id + */ + @ExcelProperty(value = "用户id") + private Long userId; + + /** + * 告警最大值 + */ + @ExcelProperty(value = "告警最大值") + private Double limitUpper; + + /** + * 告警最小值 + */ + @ExcelProperty(value = "告警最小值") + private Double limitLower; + + /** + * 告警当前值 + */ + @ExcelProperty(value = "告警当前值") + @JsonSerialize(using = DoubleSerializer.class) + private Double curValue; + + /** + * 进展状态 + */ + @ExcelProperty(value = "进展状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "process_status") + private Integer processStatus; + + /** + * 故障类型 + */ + @ExcelProperty(value = "故障类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "risk_type") + private Integer warnType; + + /** + * 处理人 + */ + @ExcelProperty(value = "处理人") + private String handlerName; + + /** + * 处理时间 + */ + @ExcelProperty(value = "处理时间") + private Date processTime; + + /** + * 设备编号 + */ + @ExcelProperty(value = "设备编号") + private String deviceSerialNum; + + /** + * 设备类型 + */ + @ExcelProperty(value = "设备类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "aqu_device_type") + private Integer deviceType; + + /** + * 参数类型 + */ + @ExcelProperty(value = "参数类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "threshold_type") + private Integer thresholdType; + + private Date createTime; + + private Date updateTime; +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/MessageOpRecordVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/MessageOpRecordVo.java new file mode 100644 index 0000000..17caae9 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/MessageOpRecordVo.java @@ -0,0 +1,101 @@ +package com.intc.fishery.domain.vo; + +import com.intc.fishery.domain.MessageOpRecord; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.intc.common.excel.annotation.ExcelDictFormat; +import com.intc.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 用户操作记录视图对象 aqu_message_op_record + * + * @author intc + * @date 2025-10-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = MessageOpRecord.class) +public class MessageOpRecordVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 用户id + */ + @ExcelProperty(value = "用户id") + private Long userId; + + /** + * 操作用户id + */ + @ExcelProperty(value = "操作用户id") + private Long opUserId; + + /** + * 操作标题 + */ + @ExcelProperty(value = "操作标题") + private String title; + + /** + * 操作内容 + */ + @ExcelProperty(value = "操作内容") + private String message; + + /** + * 操作方式 + */ + @ExcelProperty(value = "操作方式", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "op_type") + private Integer opType; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 用户名(关联查询) + */ + @ExcelProperty(value = "用户名") + private String userName; + + /** + * 用户手机号(关联查询) + */ + @ExcelProperty(value = "用户手机号") + private String userPhonenumber; + + /** + * 操作用户名(关联查询) + */ + @ExcelProperty(value = "操作用户名") + private String opUserName; + + /** + * 操作用户手机号(关联查询) + */ + @ExcelProperty(value = "操作用户手机号") + private String opUserPhonenumber; + + private Date createTime; + + private Date updateTime; +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TecentUserCacheVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TecentUserCacheVo.java new file mode 100644 index 0000000..19e210d --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TecentUserCacheVo.java @@ -0,0 +1,58 @@ +package com.intc.fishery.domain.vo; + +import com.intc.fishery.domain.TecentUserCache; +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import com.intc.common.excel.annotation.ExcelDictFormat; +import com.intc.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 公众号用户缓存视图对象 aqu_tecent_user_cache + * + * @author intc + * @date 2025-10-23 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = TecentUserCache.class) +public class TecentUserCacheVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * openId + */ + @ExcelProperty(value = "openId") + private String openId; + + /** + * unionId + */ + @ExcelProperty(value = "unionId") + private String unionId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + private Date createTime; + + private Date updateTime; +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnCombineMapper.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnCombineMapper.java new file mode 100644 index 0000000..d12e532 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnCombineMapper.java @@ -0,0 +1,15 @@ +package com.intc.fishery.mapper; + +import com.intc.common.mybatis.core.mapper.BaseMapperPlusJoin; +import com.intc.fishery.domain.DeviceWarnCombine; +import com.intc.fishery.domain.vo.DeviceWarnCombineVo; + +/** + * 设备告警信息Mapper接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface DeviceWarnCombineMapper extends BaseMapperPlusJoin { + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnOneMapper.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnOneMapper.java new file mode 100644 index 0000000..9f77c3e --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/DeviceWarnOneMapper.java @@ -0,0 +1,15 @@ +package com.intc.fishery.mapper; + +import com.intc.common.mybatis.core.mapper.BaseMapperPlusJoin; +import com.intc.fishery.domain.DeviceWarnOne; +import com.intc.fishery.domain.vo.DeviceWarnOneVo; + +/** + * 设备报警明细Mapper接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface DeviceWarnOneMapper extends BaseMapperPlusJoin { + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/MessageOpRecordMapper.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/MessageOpRecordMapper.java new file mode 100644 index 0000000..93adba9 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/MessageOpRecordMapper.java @@ -0,0 +1,15 @@ +package com.intc.fishery.mapper; + +import com.intc.fishery.domain.MessageOpRecord; +import com.intc.fishery.domain.vo.MessageOpRecordVo; +import com.intc.common.mybatis.core.mapper.BaseMapperPlusJoin; + +/** + * 用户操作记录Mapper接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface MessageOpRecordMapper extends BaseMapperPlusJoin { + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TecentUserCacheMapper.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TecentUserCacheMapper.java new file mode 100644 index 0000000..16be422 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TecentUserCacheMapper.java @@ -0,0 +1,15 @@ +package com.intc.fishery.mapper; + +import com.intc.fishery.domain.TecentUserCache; +import com.intc.fishery.domain.vo.TecentUserCacheVo; +import com.intc.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 公众号用户缓存Mapper接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface TecentUserCacheMapper extends BaseMapperPlus { + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnCombineService.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnCombineService.java new file mode 100644 index 0000000..9a8f407 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnCombineService.java @@ -0,0 +1,68 @@ +package com.intc.fishery.service; + +import com.intc.fishery.domain.vo.DeviceWarnCombineVo; +import com.intc.fishery.domain.bo.DeviceWarnCombineBo; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 设备告警信息Service接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface IDeviceWarnCombineService { + + /** + * 查询设备告警信息 + * + * @param id 主键 + * @return 设备告警信息 + */ + DeviceWarnCombineVo queryById(Long id); + + /** + * 分页查询设备告警信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设备告警信息分页列表 + */ + TableDataInfo queryPageList(DeviceWarnCombineBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设备告警信息列表 + * + * @param bo 查询条件 + * @return 设备告警信息列表 + */ + List queryList(DeviceWarnCombineBo bo); + + /** + * 新增设备告警信息 + * + * @param bo 设备告警信息 + * @return 是否新增成功 + */ + Boolean insertByBo(DeviceWarnCombineBo bo); + + /** + * 修改设备告警信息 + * + * @param bo 设备告警信息 + * @return 是否修改成功 + */ + Boolean updateByBo(DeviceWarnCombineBo bo); + + /** + * 校验并批量删除设备告警信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnOneService.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnOneService.java new file mode 100644 index 0000000..decd3b9 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IDeviceWarnOneService.java @@ -0,0 +1,70 @@ +package com.intc.fishery.service; + +import com.intc.fishery.domain.vo.DeviceWarnOneVo; +import com.intc.fishery.domain.bo.DeviceWarnOneBo; +import com.intc.fishery.domain.bo.DeviceWarnOneBatchUpdateBo; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 设备报警明细Service接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface IDeviceWarnOneService { + + /** + * 查询设备报警明细 + * + * @param id 主键 + * @return 设备报警明细 + */ + DeviceWarnOneVo queryById(Long id); + + /** + * 分页查询设备报警明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设备报警明细分页列表 + */ + TableDataInfo queryPageList(DeviceWarnOneBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设备报警明细列表 + * + * @param bo 查询条件 + * @return 设备报警明细列表 + */ + List queryList(DeviceWarnOneBo bo); + + /** + * 新增设备报警明细 + * + * @param bo 设备报警明细 + * @return 是否新增成功 + */ + Boolean insertByBo(DeviceWarnOneBo bo); + + /** + * 修改设备报警明细 + * + * @param bo 设备报警明细 + * @return 是否修改成功 + */ + Boolean updateByBo(DeviceWarnOneBo bo); + + /** + * 校验并批量删除设备报警明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IMessageOpRecordService.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IMessageOpRecordService.java new file mode 100644 index 0000000..f137e64 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/IMessageOpRecordService.java @@ -0,0 +1,68 @@ +package com.intc.fishery.service; + +import com.intc.fishery.domain.vo.MessageOpRecordVo; +import com.intc.fishery.domain.bo.MessageOpRecordBo; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 用户操作记录Service接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface IMessageOpRecordService { + + /** + * 查询用户操作记录 + * + * @param id 主键 + * @return 用户操作记录 + */ + MessageOpRecordVo queryById(Long id); + + /** + * 分页查询用户操作记录列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 用户操作记录分页列表 + */ + TableDataInfo queryPageList(MessageOpRecordBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的用户操作记录列表 + * + * @param bo 查询条件 + * @return 用户操作记录列表 + */ + List queryList(MessageOpRecordBo bo); + + /** + * 新增用户操作记录 + * + * @param bo 用户操作记录 + * @return 是否新增成功 + */ + Boolean insertByBo(MessageOpRecordBo bo); + + /** + * 修改用户操作记录 + * + * @param bo 用户操作记录 + * @return 是否修改成功 + */ + Boolean updateByBo(MessageOpRecordBo bo); + + /** + * 校验并批量删除用户操作记录信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ITecentUserCacheService.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ITecentUserCacheService.java new file mode 100644 index 0000000..659f937 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ITecentUserCacheService.java @@ -0,0 +1,68 @@ +package com.intc.fishery.service; + +import com.intc.fishery.domain.vo.TecentUserCacheVo; +import com.intc.fishery.domain.bo.TecentUserCacheBo; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 公众号用户缓存Service接口 + * + * @author intc + * @date 2025-10-23 + */ +public interface ITecentUserCacheService { + + /** + * 查询公众号用户缓存 + * + * @param id 主键 + * @return 公众号用户缓存 + */ + TecentUserCacheVo queryById(Long id); + + /** + * 分页查询公众号用户缓存列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 公众号用户缓存分页列表 + */ + TableDataInfo queryPageList(TecentUserCacheBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的公众号用户缓存列表 + * + * @param bo 查询条件 + * @return 公众号用户缓存列表 + */ + List queryList(TecentUserCacheBo bo); + + /** + * 新增公众号用户缓存 + * + * @param bo 公众号用户缓存 + * @return 是否新增成功 + */ + Boolean insertByBo(TecentUserCacheBo bo); + + /** + * 修改公众号用户缓存 + * + * @param bo 公众号用户缓存 + * @return 是否修改成功 + */ + Boolean updateByBo(TecentUserCacheBo bo); + + /** + * 校验并批量删除公众号用户缓存信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnCombineServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnCombineServiceImpl.java new file mode 100644 index 0000000..5fbcd99 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnCombineServiceImpl.java @@ -0,0 +1,177 @@ +package com.intc.fishery.service.impl; + +import com.intc.common.core.utils.MapstructUtils; +import com.intc.common.core.utils.StringUtils; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.intc.fishery.domain.bo.DeviceWarnCombineBo; +import com.intc.fishery.domain.vo.DeviceWarnCombineVo; +import com.intc.fishery.domain.DeviceWarnCombine; +import com.intc.fishery.domain.DeviceWarnOne; +import com.intc.fishery.mapper.DeviceWarnCombineMapper; +import com.intc.fishery.mapper.DeviceWarnOneMapper; +import com.intc.fishery.service.IDeviceWarnCombineService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 设备告警信息Service业务层处理 + * + * @author intc + * @date 2025-10-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class DeviceWarnCombineServiceImpl implements IDeviceWarnCombineService { + + private final DeviceWarnCombineMapper baseMapper; + private final DeviceWarnOneMapper deviceWarnOneMapper; + + /** + * 查询设备告警信息 + * + * @param id 主键 + * @return 设备告警信息 + */ + @Override + public DeviceWarnCombineVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询设备告警信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设备告警信息分页列表 + */ + @Override + public TableDataInfo queryPageList(DeviceWarnCombineBo bo, PageQuery pageQuery) { + MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo); + Page result = baseMapper.selectJoinPage(pageQuery.build(), DeviceWarnCombineVo.class, wrapper); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的设备告警信息列表 + * + * @param bo 查询条件 + * @return 设备告警信息列表 + */ + @Override + public List queryList(DeviceWarnCombineBo bo) { + MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo); + return baseMapper.selectJoinList(DeviceWarnCombineVo.class, wrapper); + } + + private MPJLambdaWrapper buildJoinQueryWrapper(DeviceWarnCombineBo bo) { + Map params = bo.getParams(); + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(DeviceWarnCombine.class) + .selectCount(DeviceWarnOne::getId, DeviceWarnCombineVo::getTotalCount) + .leftJoin(DeviceWarnOne.class, DeviceWarnOne::getWarnCombineId, DeviceWarnCombine::getId) + .eq(StringUtils.isNotBlank(bo.getDeviceSerialNum()), DeviceWarnCombine::getDeviceSerialNum, bo.getDeviceSerialNum()) + .eq(bo.getDeviceType() != null, DeviceWarnCombine::getDeviceType, bo.getDeviceType()) + .eq(bo.getThresholdType() != null, DeviceWarnCombine::getThresholdType, bo.getThresholdType()) + .eq(bo.getProcessStatus() != null, DeviceWarnCombine::getProcessStatus, bo.getProcessStatus()) + .eq(bo.getWarnType() != null, DeviceWarnCombine::getWarnType, bo.getWarnType()) + .groupBy(DeviceWarnCombine::getId) + .orderByDesc(DeviceWarnCombine::getUpdateTime); + return wrapper; + } + + /** + * 新增设备告警信息 + * + * @param bo 设备告警信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(DeviceWarnCombineBo bo) { + DeviceWarnCombine add = MapstructUtils.convert(bo, DeviceWarnCombine.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改设备告警信息 + * + * @param bo 设备告警信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(DeviceWarnCombineBo bo) { + DeviceWarnCombine update = MapstructUtils.convert(bo, DeviceWarnCombine.class); + validEntityBeforeSave(update); + boolean result = baseMapper.updateById(update) > 0; + + // 如果更新成功,同时批量更新关联的DeviceWarnOne记录 + if (result) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.eq(DeviceWarnOne::getWarnCombineId, bo.getId()); + + // 只更新非空字段 + updateWrapper.set(bo.getProcessStatus() != null, DeviceWarnOne::getProcessStatus, bo.getProcessStatus()); + updateWrapper.set(bo.getWarnType() != null, DeviceWarnOne::getWarnType, bo.getWarnType()); + updateWrapper.set(StringUtils.isNotBlank(bo.getHandlerName()), DeviceWarnOne::getHandlerName, bo.getHandlerName()); + updateWrapper.set(bo.getProcessTime() != null, DeviceWarnOne::getProcessTime, bo.getProcessTime()); + updateWrapper.set(StringUtils.isNotBlank(bo.getRemark()), DeviceWarnOne::getRemark, bo.getRemark()); + + int updatedCount = deviceWarnOneMapper.update(null, updateWrapper); + log.info("更新DeviceWarnCombine[id={}]成功,同时批量更新了{}条DeviceWarnOne记录", bo.getId(), updatedCount); + } + + return result; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceWarnCombine entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设备告警信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + + // 先删除关联的DeviceWarnOne记录 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(DeviceWarnOne::getWarnCombineId, ids); + int deletedDetailCount = deviceWarnOneMapper.delete(queryWrapper); + log.info("删除DeviceWarnCombine记录前,先删除了{}条关联的DeviceWarnOne记录", deletedDetailCount); + + // 再删除主表DeviceWarnCombine记录 + boolean result = baseMapper.deleteByIds(ids) > 0; + + if (result) { + log.info("成功删除{}条DeviceWarnCombine记录", ids.size()); + } + + return result; + } +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnOneServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnOneServiceImpl.java new file mode 100644 index 0000000..225b1b4 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceWarnOneServiceImpl.java @@ -0,0 +1,154 @@ +package com.intc.fishery.service.impl; + +import com.intc.common.core.utils.MapstructUtils; +import com.intc.common.core.utils.StringUtils; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.intc.fishery.domain.bo.DeviceWarnOneBo; +import com.intc.fishery.domain.bo.DeviceWarnOneBatchUpdateBo; +import com.intc.fishery.domain.vo.DeviceWarnOneVo; +import com.intc.fishery.domain.DeviceWarnOne; +import com.intc.fishery.domain.DeviceWarnCombine; +import com.intc.fishery.mapper.DeviceWarnOneMapper; +import com.intc.fishery.service.IDeviceWarnOneService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 设备报警明细Service业务层处理 + * + * @author intc + * @date 2025-10-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class DeviceWarnOneServiceImpl implements IDeviceWarnOneService { + + private final DeviceWarnOneMapper baseMapper; + + /** + * 查询设备报警明细 + * + * @param id 主键 + * @return 设备报警明细 + */ + @Override + public DeviceWarnOneVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询设备报警明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设备报警明细分页列表 + */ + @Override + public TableDataInfo queryPageList(DeviceWarnOneBo bo, PageQuery pageQuery) { + MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo); + Page result = baseMapper.selectJoinPage(pageQuery.build(), DeviceWarnOneVo.class, wrapper); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的设备报警明细列表 + * + * @param bo 查询条件 + * @return 设备报警明细列表 + */ + @Override + public List queryList(DeviceWarnOneBo bo) { + MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo); + return baseMapper.selectJoinList(DeviceWarnOneVo.class, wrapper); + } + + private MPJLambdaWrapper buildJoinQueryWrapper(DeviceWarnOneBo bo) { + Map params = bo.getParams(); + + // 从params中获取关联表查询条件并转换类型 + String deviceSerialNum = (String) params.get("deviceSerialNum"); + Integer deviceType = params.get("deviceType") != null ? Integer.parseInt(params.get("deviceType").toString()) : null; + Integer thresholdType = params.get("thresholdType") != null ? Integer.parseInt(params.get("thresholdType").toString()) : null; + + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(DeviceWarnOne.class) + .select(DeviceWarnCombine::getDeviceSerialNum) + .select(DeviceWarnCombine::getDeviceType) + .select(DeviceWarnCombine::getThresholdType) + .leftJoin(DeviceWarnCombine.class, DeviceWarnCombine::getId, DeviceWarnOne::getWarnCombineId) + .eq(bo.getWarnCombineId() != null, DeviceWarnOne::getWarnCombineId, bo.getWarnCombineId()) + .eq(bo.getUserId() != null, DeviceWarnOne::getUserId, bo.getUserId()) + .eq(bo.getProcessStatus() != null, DeviceWarnOne::getProcessStatus, bo.getProcessStatus()) + .eq(bo.getWarnType() != null, DeviceWarnOne::getWarnType, bo.getWarnType()) + .like(StringUtils.isNotBlank(bo.getHandlerName()), DeviceWarnOne::getHandlerName, bo.getHandlerName()) + .like(StringUtils.isNotBlank(deviceSerialNum), DeviceWarnCombine::getDeviceSerialNum, deviceSerialNum) + .eq(deviceType != null, DeviceWarnCombine::getDeviceType, deviceType) + .eq(thresholdType != null, DeviceWarnCombine::getThresholdType, thresholdType) + .orderByDesc(DeviceWarnOne::getUpdateTime); + return wrapper; + } + + /** + * 新增设备报警明细 + * + * @param bo 设备报警明细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(DeviceWarnOneBo bo) { + DeviceWarnOne add = MapstructUtils.convert(bo, DeviceWarnOne.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改设备报警明细 + * + * @param bo 设备报警明细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(DeviceWarnOneBo bo) { + DeviceWarnOne update = MapstructUtils.convert(bo, DeviceWarnOne.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(DeviceWarnOne entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设备报警明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/MessageOpRecordServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/MessageOpRecordServiceImpl.java new file mode 100644 index 0000000..a38bdce --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/MessageOpRecordServiceImpl.java @@ -0,0 +1,159 @@ +package com.intc.fishery.service.impl; + +import com.intc.common.core.utils.MapstructUtils; +import com.intc.common.core.utils.StringUtils; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.intc.fishery.domain.bo.MessageOpRecordBo; +import com.intc.fishery.domain.vo.MessageOpRecordVo; +import com.intc.fishery.domain.MessageOpRecord; +import com.intc.fishery.domain.AquUser; +import com.intc.fishery.mapper.MessageOpRecordMapper; +import com.intc.fishery.service.IMessageOpRecordService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 用户操作记录Service业务层处理 + * + * @author intc + * @date 2025-10-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class MessageOpRecordServiceImpl implements IMessageOpRecordService { + + private final MessageOpRecordMapper baseMapper; + + /** + * 查询用户操作记录 + * + * @param id 主键 + * @return 用户操作记录 + */ + @Override + public MessageOpRecordVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询用户操作记录列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 用户操作记录分页列表 + */ + @Override + public TableDataInfo queryPageList(MessageOpRecordBo bo, PageQuery pageQuery) { + MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo); + Page result = baseMapper.selectJoinPage(pageQuery.build(), MessageOpRecordVo.class, wrapper); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的用户操作记录列表 + * + * @param bo 查询条件 + * @return 用户操作记录列表 + */ + @Override + public List queryList(MessageOpRecordBo bo) { + MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo); + return baseMapper.selectJoinList(MessageOpRecordVo.class, wrapper); + } + + private MPJLambdaWrapper buildJoinQueryWrapper(MessageOpRecordBo bo) { + Map params = bo.getParams(); + + // 获取用户关键字搜索参数 + String userKeyword = params.get("userKeyword") != null ? params.get("userKeyword").toString() : null; + + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + .selectAll(MessageOpRecord.class) + // 关联查询AquUser用户信息 + .selectAs("u1.user_name", MessageOpRecordVo::getUserName) + .selectAs("u1.mobile_phone", MessageOpRecordVo::getUserPhonenumber) + // 关联查询操作用户信息 + .selectAs("u2.user_name", MessageOpRecordVo::getOpUserName) + .selectAs("u2.mobile_phone", MessageOpRecordVo::getOpUserPhonenumber) + // 关联aqu_user表(用户) + .leftJoin("aqu_user u1 on u1.id = t.user_id") + // 关联aqu_user表(操作用户) + .leftJoin("aqu_user u2 on u2.id = t.op_user_id") + .eq(bo.getUserId() != null, MessageOpRecord::getUserId, bo.getUserId()) + .eq(bo.getOpUserId() != null, MessageOpRecord::getOpUserId, bo.getOpUserId()) + .like(StringUtils.isNotBlank(bo.getTitle()), MessageOpRecord::getTitle, bo.getTitle()) + .like(StringUtils.isNotBlank(bo.getMessage()), MessageOpRecord::getMessage, bo.getMessage()) + .eq(bo.getOpType() != null, MessageOpRecord::getOpType, bo.getOpType()) + // 根据用户关键字模糊查询用户名或手机号 + .and(StringUtils.isNotBlank(userKeyword), w -> w + .like("u1.user_name", userKeyword) + .or() + .like("u1.mobile_phone", userKeyword) + ) + .orderByDesc(MessageOpRecord::getCreateTime); + return wrapper; + } + + /** + * 新增用户操作记录 + * + * @param bo 用户操作记录 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(MessageOpRecordBo bo) { + MessageOpRecord add = MapstructUtils.convert(bo, MessageOpRecord.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改用户操作记录 + * + * @param bo 用户操作记录 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(MessageOpRecordBo bo) { + MessageOpRecord update = MapstructUtils.convert(bo, MessageOpRecord.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(MessageOpRecord entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除用户操作记录信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/TecentUserCacheServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/TecentUserCacheServiceImpl.java new file mode 100644 index 0000000..56d17d4 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/TecentUserCacheServiceImpl.java @@ -0,0 +1,131 @@ +package com.intc.fishery.service.impl; + +import com.intc.common.core.utils.MapstructUtils; +import com.intc.common.core.utils.StringUtils; +import com.intc.common.mybatis.core.page.TableDataInfo; +import com.intc.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.intc.fishery.domain.bo.TecentUserCacheBo; +import com.intc.fishery.domain.vo.TecentUserCacheVo; +import com.intc.fishery.domain.TecentUserCache; +import com.intc.fishery.mapper.TecentUserCacheMapper; +import com.intc.fishery.service.ITecentUserCacheService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 公众号用户缓存Service业务层处理 + * + * @author intc + * @date 2025-10-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class TecentUserCacheServiceImpl implements ITecentUserCacheService { + + private final TecentUserCacheMapper baseMapper; + + /** + * 查询公众号用户缓存 + * + * @param id 主键 + * @return 公众号用户缓存 + */ + @Override + public TecentUserCacheVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询公众号用户缓存列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 公众号用户缓存分页列表 + */ + @Override + public TableDataInfo queryPageList(TecentUserCacheBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的公众号用户缓存列表 + * + * @param bo 查询条件 + * @return 公众号用户缓存列表 + */ + @Override + public List queryList(TecentUserCacheBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(TecentUserCacheBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(TecentUserCache::getCreateTime); + return lqw; + } + + /** + * 新增公众号用户缓存 + * + * @param bo 公众号用户缓存 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(TecentUserCacheBo bo) { + TecentUserCache add = MapstructUtils.convert(bo, TecentUserCache.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改公众号用户缓存 + * + * @param bo 公众号用户缓存 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(TecentUserCacheBo bo) { + TecentUserCache update = MapstructUtils.convert(bo, TecentUserCache.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(TecentUserCache entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除公众号用户缓存信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnCombineMapper.xml b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnCombineMapper.xml new file mode 100644 index 0000000..b262939 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnCombineMapper.xml @@ -0,0 +1,6 @@ + + + + diff --git a/intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnOneMapper.xml b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnOneMapper.xml new file mode 100644 index 0000000..8e984b6 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/DeviceWarnOneMapper.xml @@ -0,0 +1,6 @@ + + + + diff --git a/intc-modules/intc-fishery/src/main/resources/mapper/fishery/MessageOpRecordMapper.xml b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/MessageOpRecordMapper.xml new file mode 100644 index 0000000..1539e82 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/MessageOpRecordMapper.xml @@ -0,0 +1,6 @@ + + + + diff --git a/intc-modules/intc-fishery/src/main/resources/mapper/fishery/TecentUserCacheMapper.xml b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/TecentUserCacheMapper.xml new file mode 100644 index 0000000..c312cf4 --- /dev/null +++ b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/TecentUserCacheMapper.xml @@ -0,0 +1,6 @@ + + + +