diff --git a/intc-admin/pom.xml b/intc-admin/pom.xml
index 8f83bc0..3e99ddd 100644
--- a/intc-admin/pom.xml
+++ b/intc-admin/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- intc-vue-plus
+ intc-vue-ultra
com.intc
${revision}
diff --git a/intc-admin/src/main/java/com/intc/IntcApplication.java b/intc-admin/src/main/java/com/intc/IntcUltraApplication.java
similarity index 90%
rename from intc-admin/src/main/java/com/intc/IntcApplication.java
rename to intc-admin/src/main/java/com/intc/IntcUltraApplication.java
index 29f43cf..2cfd5bd 100644
--- a/intc-admin/src/main/java/com/intc/IntcApplication.java
+++ b/intc-admin/src/main/java/com/intc/IntcUltraApplication.java
@@ -11,10 +11,10 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
*/
@SpringBootApplication
-public class IntcApplication {
+public class IntcUltraApplication {
public static void main(String[] args) {
- SpringApplication application = new SpringApplication(IntcApplication.class);
+ SpringApplication application = new SpringApplication(IntcUltraApplication.class);
application.setApplicationStartup(new BufferingApplicationStartup(2048));
application.run(args);
System.out.println("(♥◠‿◠)ノ゙ Intc-Vue-Plus启动成功 ლ(´ڡ`ლ)゙");
diff --git a/intc-admin/src/main/java/com/intc/IntcServletInitializer.java b/intc-admin/src/main/java/com/intc/IntcUltraServletInitializer.java
similarity index 70%
rename from intc-admin/src/main/java/com/intc/IntcServletInitializer.java
rename to intc-admin/src/main/java/com/intc/IntcUltraServletInitializer.java
index e13e60d..2432f94 100644
--- a/intc-admin/src/main/java/com/intc/IntcServletInitializer.java
+++ b/intc-admin/src/main/java/com/intc/IntcUltraServletInitializer.java
@@ -8,11 +8,11 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
*
* @author Lion Li
*/
-public class IntcServletInitializer extends SpringBootServletInitializer {
+public class IntcUltraServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(IntcApplication.class);
+ return application.sources(IntcUltraApplication.class);
}
}
diff --git a/intc-admin/src/main/resources/application-dev.yml b/intc-admin/src/main/resources/application-dev.yml
index 5a0531d..4620112 100644
--- a/intc-admin/src/main/resources/application-dev.yml
+++ b/intc-admin/src/main/resources/application-dev.yml
@@ -100,11 +100,11 @@ spring:
spring.data:
redis:
# 地址
- host: 117.72.197.29
+ host: 154.8.147.51
# 端口,默认为6379
port: 6379
# 数据库索引
- database: 6
+ database: 1
# redis 密码必须配置
password: intc@123987
# 连接超时时间
diff --git a/intc-admin/src/test/java/com/intc/test/AssertUnitTest.java b/intc-admin/src/test/java/com/intc/test/AssertUnitTest.java
deleted file mode 100644
index d207764..0000000
--- a/intc-admin/src/test/java/com/intc/test/AssertUnitTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.intc.test;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.api.Test;
-
-/**
- * 断言单元测试案例
- *
- * @author Lion Li
- */
-@DisplayName("断言单元测试案例")
-public class AssertUnitTest {
-
- @DisplayName("测试 assertEquals 方法")
- @Test
- public void testAssertEquals() {
- Assertions.assertEquals("666", new String("666"));
- Assertions.assertNotEquals("666", new String("666"));
- }
-
- @DisplayName("测试 assertSame 方法")
- @Test
- public void testAssertSame() {
- Object obj = new Object();
- Object obj1 = obj;
- Assertions.assertSame(obj, obj1);
- Assertions.assertNotSame(obj, obj1);
- }
-
- @DisplayName("测试 assertTrue 方法")
- @Test
- public void testAssertTrue() {
- Assertions.assertTrue(true);
- Assertions.assertFalse(true);
- }
-
- @DisplayName("测试 assertNull 方法")
- @Test
- public void testAssertNull() {
- Assertions.assertNull(null);
- Assertions.assertNotNull(null);
- }
-
-}
diff --git a/intc-admin/src/test/java/com/intc/test/DemoUnitTest.java b/intc-admin/src/test/java/com/intc/test/DemoUnitTest.java
deleted file mode 100644
index 2d351e5..0000000
--- a/intc-admin/src/test/java/com/intc/test/DemoUnitTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.intc.test;
-
-import com.intc.common.web.config.properties.CaptchaProperties;
-import org.junit.jupiter.api.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * 单元测试案例
- *
- * @author Lion Li
- */
-@SpringBootTest // 此注解只能在 springboot 主包下使用 需包含 main 方法与 yml 配置文件
-@DisplayName("单元测试案例")
-public class DemoUnitTest {
-
- @Autowired
- private CaptchaProperties captchaProperties;
-
- @DisplayName("测试 @SpringBootTest @Test @DisplayName 注解")
- @Test
- public void testTest() {
- System.out.println(captchaProperties);
- }
-
- @Disabled
- @DisplayName("测试 @Disabled 注解")
- @Test
- public void testDisabled() {
- System.out.println(captchaProperties);
- }
-
- @Timeout(value = 2L, unit = TimeUnit.SECONDS)
- @DisplayName("测试 @Timeout 注解")
- @Test
- public void testTimeout() throws InterruptedException {
- Thread.sleep(3000);
- System.out.println(captchaProperties);
- }
-
-
- @DisplayName("测试 @RepeatedTest 注解")
- @RepeatedTest(3)
- public void testRepeatedTest() {
- System.out.println(666);
- }
-
- @BeforeAll
- public static void testBeforeAll() {
- System.out.println("@BeforeAll ==================");
- }
-
- @BeforeEach
- public void testBeforeEach() {
- System.out.println("@BeforeEach ==================");
- }
-
- @AfterEach
- public void testAfterEach() {
- System.out.println("@AfterEach ==================");
- }
-
- @AfterAll
- public static void testAfterAll() {
- System.out.println("@AfterAll ==================");
- }
-
-}
diff --git a/intc-admin/src/test/java/com/intc/test/ParamUnitTest.java b/intc-admin/src/test/java/com/intc/test/ParamUnitTest.java
deleted file mode 100644
index 80dfe6f..0000000
--- a/intc-admin/src/test/java/com/intc/test/ParamUnitTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.intc.test;
-
-import com.intc.common.core.enums.UserType;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.DisplayName;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.EnumSource;
-import org.junit.jupiter.params.provider.MethodSource;
-import org.junit.jupiter.params.provider.NullSource;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Stream;
-
-/**
- * 带参数单元测试案例
- *
- * @author Lion Li
- */
-@DisplayName("带参数单元测试案例")
-public class ParamUnitTest {
-
- @DisplayName("测试 @ValueSource 注解")
- @ParameterizedTest
- @ValueSource(strings = {"t1", "t2", "t3"})
- public void testValueSource(String str) {
- System.out.println(str);
- }
-
- @DisplayName("测试 @NullSource 注解")
- @ParameterizedTest
- @NullSource
- public void testNullSource(String str) {
- System.out.println(str);
- }
-
- @DisplayName("测试 @EnumSource 注解")
- @ParameterizedTest
- @EnumSource(UserType.class)
- public void testEnumSource(UserType type) {
- System.out.println(type.getUserType());
- }
-
- @DisplayName("测试 @MethodSource 注解")
- @ParameterizedTest
- @MethodSource("getParam")
- public void testMethodSource(String str) {
- System.out.println(str);
- }
-
- public static Stream getParam() {
- List list = new ArrayList<>();
- list.add("t1");
- list.add("t2");
- list.add("t3");
- return list.stream();
- }
-
- @BeforeEach
- public void testBeforeEach() {
- System.out.println("@BeforeEach ==================");
- }
-
- @AfterEach
- public void testAfterEach() {
- System.out.println("@AfterEach ==================");
- }
-
-
-}
diff --git a/intc-admin/src/test/java/com/intc/test/TagUnitTest.java b/intc-admin/src/test/java/com/intc/test/TagUnitTest.java
deleted file mode 100644
index 4acf84d..0000000
--- a/intc-admin/src/test/java/com/intc/test/TagUnitTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.intc.test;
-
-import org.junit.jupiter.api.*;
-import org.springframework.boot.test.context.SpringBootTest;
-
-/**
- * 标签单元测试案例
- *
- * @author Lion Li
- */
-@SpringBootTest
-@DisplayName("标签单元测试案例")
-public class TagUnitTest {
-
- @Tag("dev")
- @DisplayName("测试 @Tag dev")
- @Test
- public void testTagDev() {
- System.out.println("dev");
- }
-
- @Tag("prod")
- @DisplayName("测试 @Tag prod")
- @Test
- public void testTagProd() {
- System.out.println("prod");
- }
-
- @Tag("local")
- @DisplayName("测试 @Tag local")
- @Test
- public void testTagLocal() {
- System.out.println("local");
- }
-
- @Tag("exclude")
- @DisplayName("测试 @Tag exclude")
- @Test
- public void testTagExclude() {
- System.out.println("exclude");
- }
-
- @BeforeEach
- public void testBeforeEach() {
- System.out.println("@BeforeEach ==================");
- }
-
- @AfterEach
- public void testAfterEach() {
- System.out.println("@AfterEach ==================");
- }
-
-
-}
diff --git a/intc-common/pom.xml b/intc-common/pom.xml
index d34ccac..2849f36 100644
--- a/intc-common/pom.xml
+++ b/intc-common/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- intc-vue-plus
+ intc-vue-ultra
com.intc
${revision}
diff --git a/intc-extend/pom.xml b/intc-extend/pom.xml
index 691e274..5b8e4a6 100644
--- a/intc-extend/pom.xml
+++ b/intc-extend/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- intc-vue-plus
+ intc-vue-ultra
com.intc
${revision}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/LinkedCtrlController.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/LinkedCtrlController.java
new file mode 100644
index 0000000..33990f6
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/LinkedCtrlController.java
@@ -0,0 +1,105 @@
+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.LinkedCtrlVo;
+import com.intc.fishery.domain.bo.LinkedCtrlBo;
+import com.intc.fishery.service.ILinkedCtrlService;
+import com.intc.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 溶解氧联动控制
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/fishery/linkedCtrl")
+public class LinkedCtrlController extends BaseController {
+
+ private final ILinkedCtrlService linkedCtrlService;
+
+ /**
+ * 查询溶解氧联动控制列表
+ */
+ @SaCheckPermission("fishery:linkedCtrl:list")
+ @GetMapping("/list")
+ public TableDataInfo list(LinkedCtrlBo bo, PageQuery pageQuery) {
+ return linkedCtrlService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出溶解氧联动控制列表
+ */
+ @SaCheckPermission("fishery:linkedCtrl:export")
+ @Log(title = "溶解氧联动控制", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(LinkedCtrlBo bo, HttpServletResponse response) {
+ List list = linkedCtrlService.queryList(bo);
+ ExcelUtil.exportExcel(list, "溶解氧联动控制", LinkedCtrlVo.class, response);
+ }
+
+ /**
+ * 获取溶解氧联动控制详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("fishery:linkedCtrl:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(linkedCtrlService.queryById(id));
+ }
+
+ /**
+ * 新增溶解氧联动控制
+ */
+ @SaCheckPermission("fishery:linkedCtrl:add")
+ @Log(title = "溶解氧联动控制", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody LinkedCtrlBo bo) {
+ return toAjax(linkedCtrlService.insertByBo(bo));
+ }
+
+ /**
+ * 修改溶解氧联动控制
+ */
+ @SaCheckPermission("fishery:linkedCtrl:edit")
+ @Log(title = "溶解氧联动控制", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody LinkedCtrlBo bo) {
+ return toAjax(linkedCtrlService.updateByBo(bo));
+ }
+
+ /**
+ * 删除溶解氧联动控制
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("fishery:linkedCtrl:remove")
+ @Log(title = "溶解氧联动控制", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(linkedCtrlService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TimingCtrlController.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TimingCtrlController.java
new file mode 100644
index 0000000..bd05380
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/controller/TimingCtrlController.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.TimingCtrlVo;
+import com.intc.fishery.domain.bo.TimingCtrlBo;
+import com.intc.fishery.service.ITimingCtrlService;
+import com.intc.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 开关定时控制
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/fishery/timingCtrl")
+public class TimingCtrlController extends BaseController {
+
+ private final ITimingCtrlService timingCtrlService;
+
+ /**
+ * 查询开关定时控制列表
+ */
+ @SaCheckPermission("fishery:timingCtrl:list")
+ @GetMapping("/list")
+ public TableDataInfo list(TimingCtrlBo bo, PageQuery pageQuery) {
+ return timingCtrlService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出开关定时控制列表
+ */
+ @SaCheckPermission("fishery:timingCtrl:export")
+ @Log(title = "开关定时控制", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(TimingCtrlBo bo, HttpServletResponse response) {
+ List list = timingCtrlService.queryList(bo);
+ ExcelUtil.exportExcel(list, "开关定时控制", TimingCtrlVo.class, response);
+ }
+
+ /**
+ * 获取开关定时控制详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("fishery:timingCtrl:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(timingCtrlService.queryById(id));
+ }
+
+ /**
+ * 新增开关定时控制
+ */
+ @SaCheckPermission("fishery:timingCtrl:add")
+ @Log(title = "开关定时控制", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody TimingCtrlBo bo) {
+ return toAjax(timingCtrlService.insertByBo(bo));
+ }
+
+ /**
+ * 修改开关定时控制
+ */
+ @SaCheckPermission("fishery:timingCtrl:edit")
+ @Log(title = "开关定时控制", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody TimingCtrlBo bo) {
+ return toAjax(timingCtrlService.updateByBo(bo));
+ }
+
+ /**
+ * 删除开关定时控制
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("fishery:timingCtrl:remove")
+ @Log(title = "开关定时控制", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(timingCtrlService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/LinkedCtrl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/LinkedCtrl.java
new file mode 100644
index 0000000..2de03cf
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/LinkedCtrl.java
@@ -0,0 +1,70 @@
+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;
+import java.util.Date;
+
+/**
+ * 溶解氧联动控制对象 aqu_linked_ctrl
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("aqu_linked_ctrl")
+public class LinkedCtrl extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ private Long deviceId;
+
+ /**
+ * 溶解氧上限开关
+ */
+ private Integer oxyUpperOpen;
+
+ /**
+ * 溶解氧上限值
+ */
+ private Double oxyUpperValue;
+
+ /**
+ * 溶解氧下限开关
+ */
+ private Integer oxyLowerOpen;
+
+ /**
+ * 溶解氧下限值
+ */
+ private Double oxyLowerValue;
+
+ /**
+ * 是否触发上限关闭操作
+ */
+ private Integer isOxyUpperTrigger;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ private Date createTime;
+
+ private Date updateTime;
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TimingCtrl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TimingCtrl.java
new file mode 100644
index 0000000..36fe937
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/TimingCtrl.java
@@ -0,0 +1,69 @@
+package com.intc.fishery.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.intc.common.tenant.core.TenantEntity;
+import com.intc.common.translation.annotation.Translation;
+import com.intc.common.translation.constant.TransConstant;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serial;
+
+/**
+ * 开关定时控制对象 aqu_timing_ctrl
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("aqu_timing_ctrl")
+public class TimingCtrl extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 开关id
+ */
+ private Long switchId;
+
+ /**
+ * 开启时间
+ */
+ private Date openTime;
+
+ /**
+ * 关闭时间
+ */
+ private Date closeTime;
+
+ /**
+ * 循环类型
+ */
+ private Long loopType;
+
+ /**
+ * 是否启用
+ */
+ private Long isOpen;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ private Date createTime;
+
+ private Date updateTime;
+
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/LinkedCtrlBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/LinkedCtrlBo.java
new file mode 100644
index 0000000..bc0fb64
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/LinkedCtrlBo.java
@@ -0,0 +1,70 @@
+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.LinkedCtrl;
+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_linked_ctrl
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = LinkedCtrl.class, reverseConvertGenerate = false)
+public class LinkedCtrlBo extends BaseEntity {
+
+ /**
+ * 主键id
+ */
+ @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @NotNull(message = "设备id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long deviceId;
+
+ /**
+ * 溶解氧上限开关
+ */
+ @NotNull(message = "溶解氧上限开关不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer oxyUpperOpen;
+
+ /**
+ * 溶解氧上限值
+ */
+ @NotNull(message = "溶解氧上限值不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Double oxyUpperValue;
+
+ /**
+ * 溶解氧下限开关
+ */
+ @NotNull(message = "溶解氧下限开关不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer oxyLowerOpen;
+
+ /**
+ * 溶解氧下限值
+ */
+ @NotNull(message = "溶解氧下限值不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Double oxyLowerValue;
+
+ /**
+ * 是否触发上限关闭操作
+ */
+ @NotNull(message = "是否触发上限关闭操作不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer isOxyUpperTrigger;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TimingCtrlBo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TimingCtrlBo.java
new file mode 100644
index 0000000..d9f475c
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/bo/TimingCtrlBo.java
@@ -0,0 +1,66 @@
+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.TimingCtrl;
+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;
+
+/**
+ * 开关定时控制业务对象 aqu_timing_ctrl
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = TimingCtrl.class, reverseConvertGenerate = false)
+public class TimingCtrlBo extends BaseEntity {
+
+ /**
+ * 主键id
+ */
+ @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 开关id
+ */
+ @NotNull(message = "开关id不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long switchId;
+
+ /**
+ * 开启时间
+ */
+ @NotNull(message = "开启时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date openTime;
+
+ /**
+ * 关闭时间
+ */
+ @NotNull(message = "关闭时间不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Date closeTime;
+
+ /**
+ * 循环类型
+ */
+ @NotNull(message = "循环类型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long loopType;
+
+ /**
+ * 是否启用
+ */
+ @NotNull(message = "是否启用不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long isOpen;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceSwitchVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceSwitchVo.java
index ac406ac..8e7b193 100644
--- a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceSwitchVo.java
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/DeviceSwitchVo.java
@@ -1,18 +1,18 @@
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.json.handler.DoubleSerializer;
import com.intc.fishery.domain.DeviceSwitch;
+
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
-import java.io.Serial;
-import java.io.Serializable;
-
/**
* 测控一体机开关视图对象 aqu_device_switch
@@ -131,6 +131,24 @@ public class DeviceSwitchVo implements Serializable {
@ExcelProperty(value = "是否联动控制")
private Integer isLinkedCtrl;
+ /**
+ * 用户名
+ */
+ @ExcelProperty(value = "用户名")
+ private String userName;
+
+ /**
+ * 用户手机号
+ */
+ @ExcelProperty(value = "用户手机号")
+ private String mobilePhone;
+
+ /**
+ * 定时控制数量
+ */
+ @ExcelProperty(value = "定时控制数量")
+ private Integer timingCtrlCount;
+
private Date createTime;
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/LinkedCtrlVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/LinkedCtrlVo.java
new file mode 100644
index 0000000..bc04cc4
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/LinkedCtrlVo.java
@@ -0,0 +1,113 @@
+package com.intc.fishery.domain.vo;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+import com.intc.common.excel.annotation.ExcelDictFormat;
+import com.intc.common.excel.convert.ExcelDictConvert;
+import com.intc.fishery.domain.LinkedCtrl;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+
+
+/**
+ * 溶解氧联动控制视图对象 aqu_linked_ctrl
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = LinkedCtrl.class)
+public class LinkedCtrlVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @ExcelProperty(value = "主键id")
+ private Long id;
+
+ /**
+ * 设备id
+ */
+ @ExcelProperty(value = "设备id")
+ private Long deviceId;
+
+ /**
+ * 溶解氧上限开关
+ */
+ @ExcelProperty(value = "溶解氧上限开关", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "open_close")
+ private Integer oxyUpperOpen;
+
+ /**
+ * 溶解氧上限值
+ */
+ @ExcelProperty(value = "溶解氧上限值")
+ private Double oxyUpperValue;
+
+ /**
+ * 溶解氧下限开关
+ */
+ @ExcelProperty(value = "溶解氧下限开关", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "open_close")
+ private Integer oxyLowerOpen;
+
+ /**
+ * 溶解氧下限值
+ */
+ @ExcelProperty(value = "溶解氧下限值")
+ private Double oxyLowerValue;
+
+ /**
+ * 是否触发上限关闭操作
+ */
+ @ExcelProperty(value = "是否触发上限关闭操作", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "yes_no")
+ private Integer isOxyUpperTrigger;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+ /**
+ * 设备名称
+ */
+ @ExcelProperty(value = "塘口名称")
+ private String pondName;
+
+ /**
+ * 设备名称
+ */
+ @ExcelProperty(value = "设备名称")
+ private String deviceName;
+
+ /**
+ * 设备编号
+ */
+ @ExcelProperty(value = "设备编号")
+ private String serialNum;
+
+ /**
+ * 用户手机号
+ */
+ @ExcelProperty(value = "用户手机号")
+ private String mobilePhone;
+
+ /**
+ * 用户名
+ */
+ @ExcelProperty(value = "用户名")
+ private String userName;
+
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TimingCtrlVo.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TimingCtrlVo.java
new file mode 100644
index 0000000..0b48e8c
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/domain/vo/TimingCtrlVo.java
@@ -0,0 +1,106 @@
+package com.intc.fishery.domain.vo;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.intc.common.excel.annotation.ExcelDictFormat;
+import com.intc.common.excel.convert.ExcelDictConvert;
+import com.intc.fishery.domain.TimingCtrl;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+
+
+/**
+ * 开关定时控制视图对象 aqu_timing_ctrl
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = TimingCtrl.class)
+public class TimingCtrlVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @ExcelProperty(value = "主键id")
+ private Long id;
+
+ /**
+ * 开关id
+ */
+ @ExcelProperty(value = "开关id")
+ private Long switchId;
+
+ /**
+ * 开启时间
+ */
+ @ExcelProperty(value = "开启时间")
+ private Date openTime;
+
+ /**
+ * 关闭时间
+ */
+ @ExcelProperty(value = "关闭时间")
+ private Date closeTime;
+
+ /**
+ * 循环类型
+ */
+ @ExcelProperty(value = "循环类型", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(dictType = "loop_type")
+ private Long loopType;
+
+ /**
+ * 是否启用
+ */
+ @ExcelProperty(value = "是否启用")
+ private Long isOpen;
+
+ /**
+ * 备注
+ */
+ @ExcelProperty(value = "备注")
+ private String remark;
+
+ /**
+ * 开关名称
+ */
+ @ExcelProperty(value = "开关名称")
+ private String switchName;
+
+ /**
+ * 设备名称
+ */
+ @ExcelProperty(value = "设备名称")
+ private String deviceName;
+
+ /**
+ * 设备编号
+ */
+ @ExcelProperty(value = "设备编号")
+ private String serialNum;
+
+ /**
+ * 用户手机号
+ */
+ @ExcelProperty(value = "用户手机号")
+ private String mobilePhone;
+
+ /**
+ * 用户名
+ */
+ @ExcelProperty(value = "用户名")
+ private String userName;
+
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/LinkedCtrlMapper.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/LinkedCtrlMapper.java
new file mode 100644
index 0000000..a7f2aed
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/LinkedCtrlMapper.java
@@ -0,0 +1,15 @@
+package com.intc.fishery.mapper;
+
+import com.intc.common.mybatis.core.mapper.BaseMapperPlusJoin;
+import com.intc.fishery.domain.LinkedCtrl;
+import com.intc.fishery.domain.vo.LinkedCtrlVo;
+
+/**
+ * 溶解氧联动控制Mapper接口
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+public interface LinkedCtrlMapper extends BaseMapperPlusJoin {
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TimingCtrlMapper.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TimingCtrlMapper.java
new file mode 100644
index 0000000..f7d67e6
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/mapper/TimingCtrlMapper.java
@@ -0,0 +1,15 @@
+package com.intc.fishery.mapper;
+
+import com.intc.common.mybatis.core.mapper.BaseMapperPlusJoin;
+import com.intc.fishery.domain.TimingCtrl;
+import com.intc.fishery.domain.vo.TimingCtrlVo;
+
+/**
+ * 开关定时控制Mapper接口
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+public interface TimingCtrlMapper extends BaseMapperPlusJoin {
+
+}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ILinkedCtrlService.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ILinkedCtrlService.java
new file mode 100644
index 0000000..6a836de
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ILinkedCtrlService.java
@@ -0,0 +1,68 @@
+package com.intc.fishery.service;
+
+import com.intc.fishery.domain.vo.LinkedCtrlVo;
+import com.intc.fishery.domain.bo.LinkedCtrlBo;
+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 ILinkedCtrlService {
+
+ /**
+ * 查询溶解氧联动控制
+ *
+ * @param id 主键
+ * @return 溶解氧联动控制
+ */
+ LinkedCtrlVo queryById(Long id);
+
+ /**
+ * 分页查询溶解氧联动控制列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 溶解氧联动控制分页列表
+ */
+ TableDataInfo queryPageList(LinkedCtrlBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的溶解氧联动控制列表
+ *
+ * @param bo 查询条件
+ * @return 溶解氧联动控制列表
+ */
+ List queryList(LinkedCtrlBo bo);
+
+ /**
+ * 新增溶解氧联动控制
+ *
+ * @param bo 溶解氧联动控制
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(LinkedCtrlBo bo);
+
+ /**
+ * 修改溶解氧联动控制
+ *
+ * @param bo 溶解氧联动控制
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(LinkedCtrlBo 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/ITimingCtrlService.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ITimingCtrlService.java
new file mode 100644
index 0000000..9ca835f
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/ITimingCtrlService.java
@@ -0,0 +1,68 @@
+package com.intc.fishery.service;
+
+import com.intc.fishery.domain.vo.TimingCtrlVo;
+import com.intc.fishery.domain.bo.TimingCtrlBo;
+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 ITimingCtrlService {
+
+ /**
+ * 查询开关定时控制
+ *
+ * @param id 主键
+ * @return 开关定时控制
+ */
+ TimingCtrlVo queryById(Long id);
+
+ /**
+ * 分页查询开关定时控制列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 开关定时控制分页列表
+ */
+ TableDataInfo queryPageList(TimingCtrlBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的开关定时控制列表
+ *
+ * @param bo 查询条件
+ * @return 开关定时控制列表
+ */
+ List queryList(TimingCtrlBo bo);
+
+ /**
+ * 新增开关定时控制
+ *
+ * @param bo 开关定时控制
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(TimingCtrlBo bo);
+
+ /**
+ * 修改开关定时控制
+ *
+ * @param bo 开关定时控制
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(TimingCtrlBo 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/DeviceSwitchServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceSwitchServiceImpl.java
index 43124fe..6afabc0 100644
--- a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceSwitchServiceImpl.java
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/DeviceSwitchServiceImpl.java
@@ -16,6 +16,7 @@ import com.intc.fishery.domain.vo.DeviceSwitchVo;
import com.intc.fishery.domain.DeviceSwitch;
import com.intc.fishery.domain.Device;
import com.intc.fishery.domain.Pond;
+import com.intc.fishery.domain.AquUser;
import com.intc.fishery.mapper.DeviceSwitchMapper;
import com.intc.fishery.service.IDeviceSwitchService;
@@ -106,8 +107,13 @@ public class DeviceSwitchServiceImpl implements IDeviceSwitchService {
.selectAs(Device::getDeviceName, DeviceSwitchVo::getDeviceName)
.selectAs(Device::getSerialNum, DeviceSwitchVo::getSerialNum)
.selectAs(Pond::getPondName, DeviceSwitchVo::getPondName)
+ .selectAs(AquUser::getUserName, DeviceSwitchVo::getUserName)
+ .selectAs(AquUser::getMobilePhone, DeviceSwitchVo::getMobilePhone)
+ // 使用子查询统计定时控制数量
+ .select("(SELECT COUNT(*) FROM aqu_timing_ctrl tc WHERE tc.switch_id = t.id) AS timing_ctrl_count")
.leftJoin(Device.class, Device::getId, DeviceSwitch::getDeviceId)
.leftJoin(Pond.class, Pond::getId, DeviceSwitch::getPondId)
+ .leftJoin(AquUser.class, AquUser::getId, Device::getUserId)
.eq(bo.getDeviceId() != null, DeviceSwitch::getDeviceId, bo.getDeviceId())
.eq(bo.getIndex() != null, DeviceSwitch::getIndex, bo.getIndex())
.like(StringUtils.isNotBlank(bo.getSwitchName()), DeviceSwitch::getSwitchName, bo.getSwitchName())
@@ -116,7 +122,7 @@ public class DeviceSwitchServiceImpl implements IDeviceSwitchService {
.eq(bo.getIsOpen() != null, DeviceSwitch::getIsOpen, bo.getIsOpen())
.eq(bo.getLinkedCtrlId() != null, DeviceSwitch::getLinkedCtrlId, bo.getLinkedCtrlId())
.eq(bo.getLastTurnTime() != null, DeviceSwitch::getLastTurnTime, bo.getLastTurnTime())
- .orderByAsc(DeviceSwitch::getId);
+ .orderByDesc(DeviceSwitch::getCreateTime);
// 处理额外的查询参数
if (params != null && !params.isEmpty()) {
@@ -156,16 +162,13 @@ public class DeviceSwitchServiceImpl implements IDeviceSwitchService {
.like(Device::getSerialNum, deviceKeyword));
}
- // 处理设备名称模糊查询
- String deviceName = (String) params.get("deviceName");
- if (StringUtils.isNotBlank(deviceName)) {
- wrapper.like(Device::getDeviceName, deviceName);
- }
- // 处理设备编号模糊查询
- String serialNum = (String) params.get("serialNum");
- if (StringUtils.isNotBlank(serialNum)) {
- wrapper.like(Device::getSerialNum, serialNum);
+ // 处理用户名或用户手机号模糊查询
+ String userKeyword = (String) params.get("userKeyword");
+ if (StringUtils.isNotBlank(userKeyword)) {
+ wrapper.and(w -> w.like(AquUser::getUserName, userKeyword)
+ .or()
+ .like(AquUser::getMobilePhone, userKeyword));
}
}
diff --git a/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/LinkedCtrlServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/LinkedCtrlServiceImpl.java
new file mode 100644
index 0000000..4dd9a8e
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/LinkedCtrlServiceImpl.java
@@ -0,0 +1,200 @@
+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 com.intc.fishery.domain.*;
+import com.intc.fishery.domain.vo.DeviceSwitchVo;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import com.intc.fishery.domain.bo.LinkedCtrlBo;
+import com.intc.fishery.domain.vo.LinkedCtrlVo;
+import com.intc.fishery.mapper.LinkedCtrlMapper;
+import com.intc.fishery.service.ILinkedCtrlService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 溶解氧联动控制Service业务层处理
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class LinkedCtrlServiceImpl implements ILinkedCtrlService {
+
+ private final LinkedCtrlMapper baseMapper;
+
+ /**
+ * 查询溶解氧联动控制
+ *
+ * @param id 主键
+ * @return 溶解氧联动控制
+ */
+ @Override
+ public LinkedCtrlVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询溶解氧联动控制列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 溶解氧联动控制分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(LinkedCtrlBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo);
+ Page result = baseMapper.selectJoinPage(pageQuery.build(), LinkedCtrlVo.class, wrapper);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的溶解氧联动控制列表
+ *
+ * @param bo 查询条件
+ * @return 溶解氧联动控制列表
+ */
+ @Override
+ public List queryList(LinkedCtrlBo bo) {
+ MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo);
+ return baseMapper.selectJoinList(LinkedCtrlVo.class, wrapper);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(LinkedCtrlBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper wrapper = new MPJLambdaWrapper()
+ .selectAll(LinkedCtrl.class)
+ .selectAs(Device::getDeviceName, DeviceSwitchVo::getDeviceName)
+ .selectAs(Device::getSerialNum, DeviceSwitchVo::getSerialNum)
+ .selectAs(Pond::getPondName, DeviceSwitchVo::getPondName)
+ .selectAs(AquUser::getUserName, DeviceSwitchVo::getUserName)
+ .selectAs(AquUser::getMobilePhone, DeviceSwitchVo::getMobilePhone)
+ .leftJoin(Device.class, Device::getId, LinkedCtrl::getDeviceId)
+ .leftJoin(Pond.class, Pond::getId, Device::getPondId)
+ .leftJoin(AquUser.class, AquUser::getId, Device::getUserId)
+ .orderByDesc(LinkedCtrl::getCreateTime)
+ .eq(bo.getDeviceId() != null, LinkedCtrl::getDeviceId, bo.getDeviceId())
+ .eq(bo.getOxyUpperOpen() != null, LinkedCtrl::getOxyUpperOpen, bo.getOxyUpperOpen())
+ .eq(bo.getOxyLowerOpen() != null, LinkedCtrl::getOxyLowerOpen, bo.getOxyLowerOpen())
+ .eq(bo.getIsOxyUpperTrigger() != null, LinkedCtrl::getIsOxyUpperTrigger, bo.getIsOxyUpperTrigger());
+ // 处理额外的查询参数
+ if (params != null && !params.isEmpty()) {
+ handleExtraParams(wrapper, params);
+ }
+ return wrapper;
+ }
+
+ /**
+ * 处理额外的查询参数
+ *
+ * @param wrapper 查询包装器
+ * @param params 额外参数
+ */
+ private void handleExtraParams(MPJLambdaWrapper wrapper, Map params) {
+ // 处理设备名称或设备编号模糊查询
+ String deviceKeyword = (String) params.get("deviceKeyword");
+ if (StringUtils.isNotBlank(deviceKeyword)) {
+ wrapper.and(w -> w.like(Device::getDeviceName, deviceKeyword)
+ .or()
+ .like(Device::getSerialNum, deviceKeyword));
+ }
+
+
+ // 处理用户名或用户手机号模糊查询
+ String userKeyword = (String) params.get("userKeyword");
+ if (StringUtils.isNotBlank(userKeyword)) {
+ wrapper.and(w -> w.like(AquUser::getUserName, userKeyword)
+ .or()
+ .like(AquUser::getMobilePhone, userKeyword));
+ }
+ }
+
+
+ /**
+ * 构建关联查询条件
+ *
+ * @param bo 查询条件
+ * @return 关联查询Wrapper
+ */
+ private MPJLambdaWrapper buildJoinQueryWrapper(LinkedCtrlBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper wrapper = new MPJLambdaWrapper()
+ .selectAll(LinkedCtrl.class)
+ .selectAs(Device::getDeviceName, LinkedCtrlVo::getDeviceName)
+ .selectAs(Device::getSerialNum, LinkedCtrlVo::getSerialNum)
+ .selectAs(AquUser::getMobilePhone, LinkedCtrlVo::getMobilePhone)
+ .selectAs(AquUser::getUserName, LinkedCtrlVo::getUserName)
+ .leftJoin(Device.class, Device::getId, LinkedCtrl::getDeviceId)
+ .leftJoin(AquUser.class, AquUser::getId, Device::getUserId)
+ .orderByAsc(LinkedCtrl::getId)
+ .eq(bo.getDeviceId() != null, LinkedCtrl::getDeviceId, bo.getDeviceId())
+ .eq(bo.getOxyUpperOpen() != null, LinkedCtrl::getOxyUpperOpen, bo.getOxyUpperOpen())
+ .eq(bo.getOxyLowerOpen() != null, LinkedCtrl::getOxyLowerOpen, bo.getOxyLowerOpen())
+ .eq(bo.getIsOxyUpperTrigger() != null, LinkedCtrl::getIsOxyUpperTrigger, bo.getIsOxyUpperTrigger());
+ return wrapper;
+ }
+
+ /**
+ * 新增溶解氧联动控制
+ *
+ * @param bo 溶解氧联动控制
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(LinkedCtrlBo bo) {
+ LinkedCtrl add = MapstructUtils.convert(bo, LinkedCtrl.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改溶解氧联动控制
+ *
+ * @param bo 溶解氧联动控制
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(LinkedCtrlBo bo) {
+ LinkedCtrl update = MapstructUtils.convert(bo, LinkedCtrl.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(LinkedCtrl 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/TimingCtrlServiceImpl.java b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/TimingCtrlServiceImpl.java
new file mode 100644
index 0000000..bf8e576
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/java/com/intc/fishery/service/impl/TimingCtrlServiceImpl.java
@@ -0,0 +1,198 @@
+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 com.intc.fishery.domain.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import com.intc.fishery.domain.bo.TimingCtrlBo;
+import com.intc.fishery.domain.vo.TimingCtrlVo;
+import com.intc.fishery.mapper.TimingCtrlMapper;
+import com.intc.fishery.service.ITimingCtrlService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 开关定时控制Service业务层处理
+ *
+ * @author intc
+ * @date 2025-10-23
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TimingCtrlServiceImpl implements ITimingCtrlService {
+
+ private final TimingCtrlMapper baseMapper;
+
+ /**
+ * 查询开关定时控制
+ *
+ * @param id 主键
+ * @return 开关定时控制
+ */
+ @Override
+ public TimingCtrlVo queryById(Long id){
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 分页查询开关定时控制列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 开关定时控制分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(TimingCtrlBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo);
+ Page result = baseMapper.selectJoinPage(pageQuery.build(), TimingCtrlVo.class, wrapper);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的开关定时控制列表
+ *
+ * @param bo 查询条件
+ * @return 开关定时控制列表
+ */
+ @Override
+ public List queryList(TimingCtrlBo bo) {
+ MPJLambdaWrapper wrapper = buildJoinQueryWrapper(bo);
+ return baseMapper.selectJoinList(TimingCtrlVo.class, wrapper);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(TimingCtrlBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.orderByAsc(TimingCtrl::getId);
+ lqw.eq(bo.getSwitchId() != null, TimingCtrl::getSwitchId, bo.getSwitchId());
+ lqw.eq(bo.getLoopType() != null, TimingCtrl::getLoopType, bo.getLoopType());
+ lqw.eq(bo.getIsOpen() != null, TimingCtrl::getIsOpen, bo.getIsOpen());
+ return lqw;
+ }
+
+ /**
+ * 构建关联查询条件
+ *
+ * @param bo 查询条件
+ * @return 关联查询Wrapper
+ */
+ private MPJLambdaWrapper buildJoinQueryWrapper(TimingCtrlBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper wrapper = new MPJLambdaWrapper()
+ .selectAll(TimingCtrl.class)
+ .selectAs(DeviceSwitch::getSwitchName, TimingCtrlVo::getSwitchName)
+ .selectAs(Device::getDeviceName, TimingCtrlVo::getDeviceName)
+ .selectAs(Device::getSerialNum, TimingCtrlVo::getSerialNum)
+ .selectAs(AquUser::getMobilePhone, TimingCtrlVo::getMobilePhone)
+ .selectAs(AquUser::getUserName, TimingCtrlVo::getUserName)
+ .leftJoin(DeviceSwitch.class, DeviceSwitch::getId, TimingCtrl::getSwitchId)
+ .leftJoin(Device.class, Device::getId, DeviceSwitch::getDeviceId)
+ .leftJoin(AquUser.class, AquUser::getId, Device::getUserId)
+ .orderByDesc(TimingCtrl::getCreateTime)
+ .eq(bo.getSwitchId() != null, TimingCtrl::getSwitchId, bo.getSwitchId())
+ .eq(bo.getLoopType() != null, TimingCtrl::getLoopType, bo.getLoopType())
+ .eq(bo.getIsOpen() != null, TimingCtrl::getIsOpen, bo.getIsOpen());
+ // 处理额外的查询参数
+ if (params != null && !params.isEmpty()) {
+ handleExtraParams(wrapper, params);
+ }
+
+
+ return wrapper;
+ }
+
+ /**
+ * 处理额外的查询参数
+ *
+ * @param wrapper 查询包装器
+ * @param params 额外参数
+ */
+ private void handleExtraParams(MPJLambdaWrapper wrapper, Map params) {
+
+ // 处理设备名称或设备编号模糊查询
+ String switchKeyword = (String) params.get("switchKeyword");
+ if (StringUtils.isNotBlank(switchKeyword)) {
+ wrapper.and(w -> w.like(DeviceSwitch::getSwitchName, switchKeyword));
+ }
+
+ // 处理设备名称或设备编号模糊查询
+ String deviceKeyword = (String) params.get("deviceKeyword");
+ if (StringUtils.isNotBlank(deviceKeyword)) {
+ wrapper.and(w -> w.like(Device::getDeviceName, deviceKeyword)
+ .or()
+ .like(Device::getSerialNum, deviceKeyword));
+ }
+
+
+ // 处理用户名或用户手机号模糊查询
+ String userKeyword = (String) params.get("userKeyword");
+ if (StringUtils.isNotBlank(userKeyword)) {
+ wrapper.and(w -> w.like(AquUser::getUserName, userKeyword)
+ .or()
+ .like(AquUser::getMobilePhone, userKeyword));
+ }
+ }
+
+ /**
+ * 新增开关定时控制
+ *
+ * @param bo 开关定时控制
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(TimingCtrlBo bo) {
+ TimingCtrl add = MapstructUtils.convert(bo, TimingCtrl.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改开关定时控制
+ *
+ * @param bo 开关定时控制
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(TimingCtrlBo bo) {
+ TimingCtrl update = MapstructUtils.convert(bo, TimingCtrl.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(TimingCtrl 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/LinkedCtrlMapper.xml b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/LinkedCtrlMapper.xml
new file mode 100644
index 0000000..a0b6965
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/LinkedCtrlMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/intc-modules/intc-fishery/src/main/resources/mapper/fishery/TimingCtrlMapper.xml b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/TimingCtrlMapper.xml
new file mode 100644
index 0000000..8d89990
--- /dev/null
+++ b/intc-modules/intc-fishery/src/main/resources/mapper/fishery/TimingCtrlMapper.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/intc-modules/intc-generator/src/main/resources/generator.yml b/intc-modules/intc-generator/src/main/resources/generator.yml
index 943b329..67e5562 100644
--- a/intc-modules/intc-generator/src/main/resources/generator.yml
+++ b/intc-modules/intc-generator/src/main/resources/generator.yml
@@ -3,7 +3,7 @@ gen:
# 作者
author: intc
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
- packageName: org.dromara.fishery
+ packageName: com.intc.fishery
# 自动去除表前缀,默认是false
autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
diff --git a/intc-modules/intc-generator/src/main/resources/vm/java/bo.java.vm b/intc-modules/intc-generator/src/main/resources/vm/java/bo.java.vm
index f313c87..d3066d8 100644
--- a/intc-modules/intc-generator/src/main/resources/vm/java/bo.java.vm
+++ b/intc-modules/intc-generator/src/main/resources/vm/java/bo.java.vm
@@ -1,5 +1,6 @@
package ${packageName}.domain.bo;
-
+import com.intc.common.core.validate.AddGroup;
+import com.intc.common.core.validate.EditGroup;
import ${packageName}.domain.${ClassName};
import com.intc.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
diff --git a/intc-modules/intc-generator/src/main/resources/vm/java/controller.java.vm b/intc-modules/intc-generator/src/main/resources/vm/java/controller.java.vm
index 236be14..88adffd 100644
--- a/intc-modules/intc-generator/src/main/resources/vm/java/controller.java.vm
+++ b/intc-modules/intc-generator/src/main/resources/vm/java/controller.java.vm
@@ -1,7 +1,7 @@
package ${packageName}.controller;
import java.util.List;
-
+import com.intc.common.excel.utils.ExcelUtil;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
@@ -16,7 +16,6 @@ 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;
-com.intc
import ${packageName}.domain.vo.${ClassName}Vo;
import ${packageName}.domain.bo.${ClassName}Bo;
import ${packageName}.service.I${ClassName}Service;
diff --git a/intc-modules/intc-generator/src/main/resources/vm/java/domain.java.vm b/intc-modules/intc-generator/src/main/resources/vm/java/domain.java.vm
index 5a8d0c4..ed336cc 100644
--- a/intc-modules/intc-generator/src/main/resources/vm/java/domain.java.vm
+++ b/intc-modules/intc-generator/src/main/resources/vm/java/domain.java.vm
@@ -6,10 +6,10 @@ package ${packageName}.domain;
#end
#end
#if($IsTenant==1)
-com.intc
#else
#end
import com.baomidou.mybatisplus.annotation.*;
+import com.intc.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
#foreach ($import in $importList)
diff --git a/intc-modules/intc-generator/src/main/resources/vm/java/serviceImpl.java.vm b/intc-modules/intc-generator/src/main/resources/vm/java/serviceImpl.java.vm
index c12eacf..0001fac 100644
--- a/intc-modules/intc-generator/src/main/resources/vm/java/serviceImpl.java.vm
+++ b/intc-modules/intc-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -1,6 +1,7 @@
package ${packageName}.service.impl;
import com.intc.common.core.utils.MapstructUtils;
+import com.intc.common.core.utils.StringUtils;
#if($table.crud)
import com.intc.common.mybatis.core.page.TableDataInfo;
import com.intc.common.mybatis.core.page.PageQuery;
diff --git a/intc-modules/intc-generator/src/main/resources/vm/java/vo.java.vm b/intc-modules/intc-generator/src/main/resources/vm/java/vo.java.vm
index c2ee6ef..a922614 100644
--- a/intc-modules/intc-generator/src/main/resources/vm/java/vo.java.vm
+++ b/intc-modules/intc-generator/src/main/resources/vm/java/vo.java.vm
@@ -6,8 +6,8 @@ import ${import};
import ${packageName}.domain.${ClassName};
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
-com.intc
-com.intc
+import com.intc.common.excel.annotation.ExcelDictFormat;
+import com.intc.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
@@ -62,5 +62,7 @@ public class ${ClassName}Vo implements Serializable {
#end
#end
#end
+ private Date createTime;
+ private Date updateTime;
}
diff --git a/intc-modules/intc-system/src/main/java/com/intc/system/domain/SysNotice.java b/intc-modules/intc-system/src/main/java/com/intc/system/domain/SysNotice.java
index d041aca..58ab6a2 100644
--- a/intc-modules/intc-system/src/main/java/com/intc/system/domain/SysNotice.java
+++ b/intc-modules/intc-system/src/main/java/com/intc/system/domain/SysNotice.java
@@ -6,6 +6,8 @@ import com.intc.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import java.util.Date;
+
/**
* 通知公告表 sys_notice
@@ -48,4 +50,14 @@ public class SysNotice extends TenantEntity {
*/
private String remark;
+ /**
+ * 优先级
+ */
+ private Integer priority;
+
+ /**
+ * 有效期
+ */
+ private Date deadTime;
+
}
diff --git a/intc-modules/intc-system/src/main/java/com/intc/system/domain/bo/SysNoticeBo.java b/intc-modules/intc-system/src/main/java/com/intc/system/domain/bo/SysNoticeBo.java
index 03ecee9..9a4b53b 100644
--- a/intc-modules/intc-system/src/main/java/com/intc/system/domain/bo/SysNoticeBo.java
+++ b/intc-modules/intc-system/src/main/java/com/intc/system/domain/bo/SysNoticeBo.java
@@ -9,6 +9,8 @@ import com.intc.common.core.xss.Xss;
import com.intc.common.mybatis.core.domain.BaseEntity;
import com.intc.system.domain.SysNotice;
+import java.util.Date;
+
/**
* 通知公告业务对象 sys_notice
*
@@ -58,4 +60,14 @@ public class SysNoticeBo extends BaseEntity {
*/
private String createByName;
+ /**
+ * 优先级
+ */
+ private Integer priority;
+
+ /**
+ * 有效期
+ */
+ private Date deadTime;
+
}
diff --git a/intc-modules/intc-system/src/main/java/com/intc/system/domain/vo/SysNoticeVo.java b/intc-modules/intc-system/src/main/java/com/intc/system/domain/vo/SysNoticeVo.java
index 01bc42b..85f9779 100644
--- a/intc-modules/intc-system/src/main/java/com/intc/system/domain/vo/SysNoticeVo.java
+++ b/intc-modules/intc-system/src/main/java/com/intc/system/domain/vo/SysNoticeVo.java
@@ -70,4 +70,14 @@ public class SysNoticeVo implements Serializable {
*/
private Date createTime;
+ /**
+ * 优先级
+ */
+ private Integer priority;
+
+ /**
+ * 有效期
+ */
+ private Date deadTime;
+
}
diff --git a/intc-modules/pom.xml b/intc-modules/pom.xml
index 16d96f8..a99163b 100644
--- a/intc-modules/pom.xml
+++ b/intc-modules/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- intc-vue-plus
+ intc-vue-ultra
com.intc
${revision}
diff --git a/pom.xml b/pom.xml
index 3a6ce82..82e556c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,10 +5,10 @@
4.0.0
com.intc
- intc-vue-plus
+ intc-vue-ultra
${revision}
- intc-vue-plus
+ intc-vue-ultra
https://gitee.com/dromara/RuoYi-Vue-Plus
intc-vue-plus多租户管理系统