Browse Source

通道,参数

tjf 1 week ago
parent
commit
635759dab4

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/manage/ChannelNumberController.java

@@ -76,7 +76,7 @@ public class ChannelNumberController extends BaseController {
     @Log(title = "通道管理", businessType = BusinessType.INSERT)
     @Log(title = "通道管理", businessType = BusinessType.INSERT)
     @PostMapping
     @PostMapping
     public AjaxResult add(@RequestBody ChannelNumber channelNumber) {
     public AjaxResult add(@RequestBody ChannelNumber channelNumber) {
-        return toAjax(channelNumberService.insertChannelNumber(channelNumber));
+        return channelNumberService.insertChannelNumber(channelNumber);
     }
     }
 
 
     /**
     /**
@@ -86,7 +86,7 @@ public class ChannelNumberController extends BaseController {
     @Log(title = "通道管理", businessType = BusinessType.UPDATE)
     @Log(title = "通道管理", businessType = BusinessType.UPDATE)
     @PostMapping("/put")
     @PostMapping("/put")
     public AjaxResult edit(@RequestBody ChannelNumber channelNumber) {
     public AjaxResult edit(@RequestBody ChannelNumber channelNumber) {
-        return toAjax(channelNumberService.updateChannelNumber(channelNumber));
+        return channelNumberService.updateChannelNumber(channelNumber);
     }
     }
 
 
     /**
     /**

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/manage/EquipmentManageController.java

@@ -76,7 +76,7 @@ public class EquipmentManageController extends BaseController {
     @Log(title = "设备管理", businessType = BusinessType.INSERT)
     @Log(title = "设备管理", businessType = BusinessType.INSERT)
     @PostMapping
     @PostMapping
     public AjaxResult add(@RequestBody EquipmentManage equipmentManage) {
     public AjaxResult add(@RequestBody EquipmentManage equipmentManage) {
-        return toAjax(equipmentManageService.insertEquipmentManage(equipmentManage));
+        return equipmentManageService.insertEquipmentManage(equipmentManage);
     }
     }
 
 
     /**
     /**
@@ -86,7 +86,7 @@ public class EquipmentManageController extends BaseController {
     @Log(title = "设备管理", businessType = BusinessType.UPDATE)
     @Log(title = "设备管理", businessType = BusinessType.UPDATE)
     @PostMapping("/put")
     @PostMapping("/put")
     public AjaxResult edit(@RequestBody EquipmentManage equipmentManage) {
     public AjaxResult edit(@RequestBody EquipmentManage equipmentManage) {
-        return toAjax(equipmentManageService.updateEquipmentManage(equipmentManage));
+        return equipmentManageService.updateEquipmentManage(equipmentManage);
     }
     }
 
 
     /**
     /**

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/manage/ParameterSetController.java

@@ -66,7 +66,7 @@ public class ParameterSetController extends BaseController {
     @Log(title = "参数设置", businessType = BusinessType.INSERT)
     @Log(title = "参数设置", businessType = BusinessType.INSERT)
     @PostMapping
     @PostMapping
     public AjaxResult add(@RequestBody ParameterSet parameterSet) {
     public AjaxResult add(@RequestBody ParameterSet parameterSet) {
-        return toAjax(parameterSetService.insertParameterSet(parameterSet));
+        return parameterSetService.insertParameterSet(parameterSet);
     }
     }
 
 
     /**
     /**
@@ -76,7 +76,7 @@ public class ParameterSetController extends BaseController {
     @Log(title = "参数设置", businessType = BusinessType.UPDATE)
     @Log(title = "参数设置", businessType = BusinessType.UPDATE)
     @PostMapping("/put")
     @PostMapping("/put")
     public AjaxResult edit(@RequestBody ParameterSet parameterSet) {
     public AjaxResult edit(@RequestBody ParameterSet parameterSet) {
-        return toAjax(parameterSetService.updateParameterSet(parameterSet));
+        return parameterSetService.updateParameterSet(parameterSet);
     }
     }
 
 
     /**
     /**

+ 18 - 7
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -6,11 +6,10 @@ import java.util.Locale;
 
 
 /**
 /**
  * 通用常量信息
  * 通用常量信息
- * 
+ *
  * @author ruoyi
  * @author ruoyi
  */
  */
-public class Constants
-{
+public class Constants {
     /**
     /**
      * UTF-8 字符集
      * UTF-8 字符集
      */
      */
@@ -159,19 +158,31 @@ public class Constants
     /**
     /**
      * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
      * 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
      */
      */
-    public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" };
+    public static final String[] JSON_WHITELIST_STR = {"org.springframework", "com.ruoyi"};
 
 
     /**
     /**
      * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
      * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
      */
      */
-    public static final String[] JOB_WHITELIST_STR = { "com.ruoyi.quartz.task" };
+    public static final String[] JOB_WHITELIST_STR = {"com.ruoyi.quartz.task"};
 
 
     /**
     /**
      * 定时任务违规的字符
      * 定时任务违规的字符
      */
      */
-    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
-            "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config", "com.ruoyi.generator" };
+    public static final String[] JOB_ERROR_STR = {"java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
+            "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config", "com.ruoyi.generator"};
 
 
     public static final String Y = "Y";
     public static final String Y = "Y";
     public static final String N = "N";
     public static final String N = "N";
+    //坐标
+    public static final String DETECTION_RECT = "detection/rect";
+    //离岗时间
+    public static final String DETECTION_LEAVETIME = "detection/leavetime";
+    //玩手机时间
+    public static final String DETECTION_PLAYTIME = "detection/playtime";
+    //离岗相似度
+    public static final String DETECTION_LEAVERATE = "detection/leaverate";
+    //玩手机相似度
+    public static final String DETECTION_PLAYRATE = "detection/playrate";
+    //rtsp地址
+    public static final String DETECTION_RTSP = "detection/rtsp";
 }
 }

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/domain/ChannelNumber.java

@@ -3,6 +3,8 @@ package com.ruoyi.manage.domain;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.domain.BaseEntity;
 
 
+import javax.validation.constraints.NotNull;
+
 /**
 /**
  * 通道管理对象 channel_number
  * 通道管理对象 channel_number
  * 
  * 
@@ -17,6 +19,7 @@ public class ChannelNumber extends BaseEntity
     private Long channelId;
     private Long channelId;
 
 
     /** 设备ID */
     /** 设备ID */
+    @NotNull
     private Long equipmentId;
     private Long equipmentId;
     /** 设备编号 */
     /** 设备编号 */
     @Excel(name = "设备编号")
     @Excel(name = "设备编号")
@@ -27,6 +30,7 @@ public class ChannelNumber extends BaseEntity
     private String equipmentName;
     private String equipmentName;
     /** 通道编号 */
     /** 通道编号 */
     @Excel(name = "通道编号")
     @Excel(name = "通道编号")
+    @NotNull
     private String channelNum;
     private String channelNum;
 
 
     /**
     /**

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/domain/EquipmentManage.java

@@ -6,6 +6,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 
+import javax.validation.constraints.NotNull;
 import java.util.Date;
 import java.util.Date;
 
 
 /**
 /**
@@ -23,6 +24,7 @@ public class EquipmentManage extends BaseEntity
 
 
     /** 设备编号 */
     /** 设备编号 */
     @Excel(name = "设备编号")
     @Excel(name = "设备编号")
+    @NotNull
     private String equipmentNum;
     private String equipmentNum;
 
 
     /** 设备名称 */
     /** 设备名称 */

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/mapper/ChannelNumberMapper.java

@@ -18,6 +18,7 @@ public interface ChannelNumberMapper
      * @return 通道管理
      * @return 通道管理
      */
      */
     public ChannelNumber selectChannelNumberByChannelId(Long channelId);
     public ChannelNumber selectChannelNumberByChannelId(Long channelId);
+    public ChannelNumber selectChannelNumberByChannelNum(ChannelNumber channelNumber);
 
 
     /**
     /**
      * 查询通道管理列表
      * 查询通道管理列表

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/manage/mapper/EquipmentManageMapper.java

@@ -27,6 +27,7 @@ public interface EquipmentManageMapper
      * @return 设备管理集合
      * @return 设备管理集合
      */
      */
     public List<EquipmentManage> selectEquipmentManageList(EquipmentManage equipmentManage);
     public List<EquipmentManage> selectEquipmentManageList(EquipmentManage equipmentManage);
+    public EquipmentManage selectEquipmentManageByEquipmentNum(EquipmentManage equipmentManage);
 
 
     /**
     /**
      * 新增设备管理
      * 新增设备管理

+ 3 - 2
ruoyi-system/src/main/java/com/ruoyi/manage/service/IChannelNumberService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.manage.service;
 package com.ruoyi.manage.service;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.manage.domain.ChannelNumber;
 import com.ruoyi.manage.domain.ChannelNumber;
 
 
 import java.util.List;
 import java.util.List;
@@ -35,7 +36,7 @@ public interface IChannelNumberService
      * @param channelNumber 通道管理
      * @param channelNumber 通道管理
      * @return 结果
      * @return 结果
      */
      */
-    public int insertChannelNumber(ChannelNumber channelNumber);
+    public AjaxResult insertChannelNumber(ChannelNumber channelNumber);
 
 
     /**
     /**
      * 修改通道管理
      * 修改通道管理
@@ -43,7 +44,7 @@ public interface IChannelNumberService
      * @param channelNumber 通道管理
      * @param channelNumber 通道管理
      * @return 结果
      * @return 结果
      */
      */
-    public int updateChannelNumber(ChannelNumber channelNumber);
+    public AjaxResult updateChannelNumber(ChannelNumber channelNumber);
 
 
     /**
     /**
      * 批量删除通道管理
      * 批量删除通道管理

+ 3 - 2
ruoyi-system/src/main/java/com/ruoyi/manage/service/IEquipmentManageService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.manage.service;
 package com.ruoyi.manage.service;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.manage.domain.EquipmentManage;
 import com.ruoyi.manage.domain.EquipmentManage;
 
 
 import java.util.List;
 import java.util.List;
@@ -34,7 +35,7 @@ public interface IEquipmentManageService
      * @param equipmentManage 设备管理
      * @param equipmentManage 设备管理
      * @return 结果
      * @return 结果
      */
      */
-    public int insertEquipmentManage(EquipmentManage equipmentManage);
+    public AjaxResult insertEquipmentManage(EquipmentManage equipmentManage);
 
 
     /**
     /**
      * 修改设备管理
      * 修改设备管理
@@ -42,7 +43,7 @@ public interface IEquipmentManageService
      * @param equipmentManage 设备管理
      * @param equipmentManage 设备管理
      * @return 结果
      * @return 结果
      */
      */
-    public int updateEquipmentManage(EquipmentManage equipmentManage);
+    public AjaxResult updateEquipmentManage(EquipmentManage equipmentManage);
 
 
     /**
     /**
      * 批量删除设备管理
      * 批量删除设备管理

+ 3 - 2
ruoyi-system/src/main/java/com/ruoyi/manage/service/IParameterSetService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.manage.service;
 package com.ruoyi.manage.service;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.manage.domain.ParameterSet;
 import com.ruoyi.manage.domain.ParameterSet;
 
 
 import java.util.List;
 import java.util.List;
@@ -34,7 +35,7 @@ public interface IParameterSetService
      * @param parameterSet 参数设置
      * @param parameterSet 参数设置
      * @return 结果
      * @return 结果
      */
      */
-    public int insertParameterSet(ParameterSet parameterSet);
+    public AjaxResult insertParameterSet(ParameterSet parameterSet);
 
 
     /**
     /**
      * 修改参数设置
      * 修改参数设置
@@ -42,7 +43,7 @@ public interface IParameterSetService
      * @param parameterSet 参数设置
      * @param parameterSet 参数设置
      * @return 结果
      * @return 结果
      */
      */
-    public int updateParameterSet(ParameterSet parameterSet);
+    public AjaxResult updateParameterSet(ParameterSet parameterSet);
 
 
     /**
     /**
      * 批量删除参数设置
      * 批量删除参数设置

+ 56 - 25
ruoyi-system/src/main/java/com/ruoyi/manage/service/impl/ChannelNumberServiceImpl.java

@@ -1,6 +1,9 @@
 package com.ruoyi.manage.service.impl;
 package com.ruoyi.manage.service.impl;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.mqtt.MqttService;
 import com.ruoyi.manage.domain.ChannelNumber;
 import com.ruoyi.manage.domain.ChannelNumber;
 import com.ruoyi.manage.domain.ParameterSet;
 import com.ruoyi.manage.domain.ParameterSet;
 import com.ruoyi.manage.mapper.ChannelNumberMapper;
 import com.ruoyi.manage.mapper.ChannelNumberMapper;
@@ -8,36 +11,41 @@ import com.ruoyi.manage.mapper.ParameterSetMapper;
 import com.ruoyi.manage.service.IChannelNumberService;
 import com.ruoyi.manage.service.IChannelNumberService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+
 import java.util.List;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 
-import static com.ruoyi.common.constant.Constants.N;
-import static com.ruoyi.common.constant.Constants.Y;
+import static com.ruoyi.common.constant.Constants.*;
 
 
 
 
 /**
 /**
  * 通道管理Service业务层处理
  * 通道管理Service业务层处理
- * 
+ *
  * @author boman
  * @author boman
  * @date 2025-05-07
  * @date 2025-05-07
  */
  */
 @Service
 @Service
-public class ChannelNumberServiceImpl implements IChannelNumberService
-{
+public class ChannelNumberServiceImpl implements IChannelNumberService {
     @Autowired
     @Autowired
     private ChannelNumberMapper channelNumberMapper;
     private ChannelNumberMapper channelNumberMapper;
 
 
     @Autowired
     @Autowired
     private ParameterSetMapper parameterSetMapper;
     private ParameterSetMapper parameterSetMapper;
 
 
+    @Autowired
+    private MqttService mqttService;
+
     /**
     /**
      * 查询通道管理
      * 查询通道管理
-     * 
+     *
      * @param channelId 通道管理主键
      * @param channelId 通道管理主键
      * @return 通道管理
      * @return 通道管理
      */
      */
     @Override
     @Override
-    public ChannelNumber selectChannelNumberByChannelId(Long channelId)
-    {
+    public ChannelNumber selectChannelNumberByChannelId(Long channelId) {
         ChannelNumber channelNumber = channelNumberMapper.selectChannelNumberByChannelId(channelId);
         ChannelNumber channelNumber = channelNumberMapper.selectChannelNumberByChannelId(channelId);
         channelNumber.setIsChannel(N);
         channelNumber.setIsChannel(N);
         //判断是否设置过参数
         //判断是否设置过参数
@@ -51,63 +59,86 @@ public class ChannelNumberServiceImpl implements IChannelNumberService
 
 
     /**
     /**
      * 查询通道管理列表
      * 查询通道管理列表
-     * 
+     *
      * @param channelNumber 通道管理
      * @param channelNumber 通道管理
      * @return 通道管理
      * @return 通道管理
      */
      */
     @Override
     @Override
-    public List<ChannelNumber> selectChannelNumberList(ChannelNumber channelNumber)
-    {
+    public List<ChannelNumber> selectChannelNumberList(ChannelNumber channelNumber) {
         return channelNumberMapper.selectChannelNumberList(channelNumber);
         return channelNumberMapper.selectChannelNumberList(channelNumber);
     }
     }
 
 
     /**
     /**
      * 新增通道管理
      * 新增通道管理
-     * 
+     *
      * @param channelNumber 通道管理
      * @param channelNumber 通道管理
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int insertChannelNumber(ChannelNumber channelNumber)
-    {
+    public AjaxResult insertChannelNumber(ChannelNumber channelNumber) {
+        ChannelNumber channelNumberOld = channelNumberMapper.selectChannelNumberByChannelNum(channelNumber);
+        if (channelNumberOld != null) {
+            return AjaxResult.error("设备已存在当前通道编号");
+        }
+        String videoAddress = channelNumber.getVideoAddress();
+        if (StringUtils.isNotEmpty(videoAddress)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_RTSP, videoAddress);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_RTSP);
+            }
+        }
         channelNumber.setCreateTime(DateUtils.getNowDate());
         channelNumber.setCreateTime(DateUtils.getNowDate());
-        return channelNumberMapper.insertChannelNumber(channelNumber);
+        channelNumberMapper.insertChannelNumber(channelNumber);
+        return AjaxResult.success();
     }
     }
 
 
     /**
     /**
      * 修改通道管理
      * 修改通道管理
-     * 
+     *
      * @param channelNumber 通道管理
      * @param channelNumber 通道管理
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int updateChannelNumber(ChannelNumber channelNumber)
-    {
+    public AjaxResult updateChannelNumber(ChannelNumber channelNumber) {
+        ChannelNumber channelNumberOld = channelNumberMapper.selectChannelNumberByChannelNum(channelNumber);
+        if (channelNumberOld != null && !channelNumber.getChannelId().equals(channelNumberOld.getChannelId())) {
+            return AjaxResult.error("设备已存在当前通道编号");
+        }
+        String videoAddress = channelNumber.getVideoAddress();
+        if (StringUtils.isNotEmpty(videoAddress)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_RTSP, videoAddress);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_RTSP);
+            }
+        }
         channelNumber.setUpdateTime(DateUtils.getNowDate());
         channelNumber.setUpdateTime(DateUtils.getNowDate());
-        return channelNumberMapper.updateChannelNumber(channelNumber);
+        channelNumberMapper.updateChannelNumber(channelNumber);
+        return AjaxResult.success();
     }
     }
 
 
     /**
     /**
      * 批量删除通道管理
      * 批量删除通道管理
-     * 
+     *
      * @param channelIds 需要删除的通道管理主键
      * @param channelIds 需要删除的通道管理主键
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int deleteChannelNumberByChannelIds(Long[] channelIds)
-    {
+    public int deleteChannelNumberByChannelIds(Long[] channelIds) {
         return channelNumberMapper.deleteChannelNumberByChannelIds(channelIds);
         return channelNumberMapper.deleteChannelNumberByChannelIds(channelIds);
     }
     }
 
 
     /**
     /**
      * 删除通道管理信息
      * 删除通道管理信息
-     * 
+     *
      * @param channelId 通道管理主键
      * @param channelId 通道管理主键
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int deleteChannelNumberByChannelId(Long channelId)
-    {
+    public int deleteChannelNumberByChannelId(Long channelId) {
         return channelNumberMapper.deleteChannelNumberByChannelId(channelId);
         return channelNumberMapper.deleteChannelNumberByChannelId(channelId);
     }
     }
 }
 }

+ 29 - 23
ruoyi-system/src/main/java/com/ruoyi/manage/service/impl/EquipmentManageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.manage.service.impl;
 package com.ruoyi.manage.service.impl;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.manage.domain.EquipmentManage;
 import com.ruoyi.manage.domain.EquipmentManage;
 import com.ruoyi.manage.mapper.EquipmentManageMapper;
 import com.ruoyi.manage.mapper.EquipmentManageMapper;
@@ -11,87 +12,92 @@ import java.util.List;
 
 
 /**
 /**
  * 设备管理Service业务层处理
  * 设备管理Service业务层处理
- * 
+ *
  * @author boman
  * @author boman
  * @date 2025-05-07
  * @date 2025-05-07
  */
  */
 @Service
 @Service
-public class EquipmentManageServiceImpl implements IEquipmentManageService
-{
+public class EquipmentManageServiceImpl implements IEquipmentManageService {
     @Autowired
     @Autowired
     private EquipmentManageMapper equipmentManageMapper;
     private EquipmentManageMapper equipmentManageMapper;
 
 
     /**
     /**
      * 查询设备管理
      * 查询设备管理
-     * 
+     *
      * @param equipmentId 设备管理主键
      * @param equipmentId 设备管理主键
      * @return 设备管理
      * @return 设备管理
      */
      */
     @Override
     @Override
-    public EquipmentManage selectEquipmentManageByEquipmentId(Long equipmentId)
-    {
+    public EquipmentManage selectEquipmentManageByEquipmentId(Long equipmentId) {
         return equipmentManageMapper.selectEquipmentManageByEquipmentId(equipmentId);
         return equipmentManageMapper.selectEquipmentManageByEquipmentId(equipmentId);
     }
     }
 
 
     /**
     /**
      * 查询设备管理列表
      * 查询设备管理列表
-     * 
+     *
      * @param equipmentManage 设备管理
      * @param equipmentManage 设备管理
      * @return 设备管理
      * @return 设备管理
      */
      */
     @Override
     @Override
-    public List<EquipmentManage> selectEquipmentManageList(EquipmentManage equipmentManage)
-    {
+    public List<EquipmentManage> selectEquipmentManageList(EquipmentManage equipmentManage) {
         return equipmentManageMapper.selectEquipmentManageList(equipmentManage);
         return equipmentManageMapper.selectEquipmentManageList(equipmentManage);
     }
     }
 
 
     /**
     /**
      * 新增设备管理
      * 新增设备管理
-     * 
+     *
      * @param equipmentManage 设备管理
      * @param equipmentManage 设备管理
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int insertEquipmentManage(EquipmentManage equipmentManage)
-    {
+    public AjaxResult insertEquipmentManage(EquipmentManage equipmentManage) {
+        EquipmentManage equipmentManageOld = equipmentManageMapper.selectEquipmentManageByEquipmentNum(equipmentManage);
+        if (equipmentManageOld != null) {
+            return AjaxResult.error("当前设备编号已存在");
+        }
         equipmentManage.setCreateTime(DateUtils.getNowDate());
         equipmentManage.setCreateTime(DateUtils.getNowDate());
-        return equipmentManageMapper.insertEquipmentManage(equipmentManage);
+        equipmentManageMapper.insertEquipmentManage(equipmentManage);
+        return AjaxResult.success();
     }
     }
 
 
     /**
     /**
      * 修改设备管理
      * 修改设备管理
-     * 
+     *
      * @param equipmentManage 设备管理
      * @param equipmentManage 设备管理
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int updateEquipmentManage(EquipmentManage equipmentManage)
-    {
+    public AjaxResult updateEquipmentManage(EquipmentManage equipmentManage) {
+        EquipmentManage equipmentManageOld = equipmentManageMapper.selectEquipmentManageByEquipmentNum(equipmentManage);
+        if (equipmentManageOld != null && !equipmentManage.getEquipmentId().equals(equipmentManageOld.getEquipmentId())) {
+            return AjaxResult.error("当前设备编号已存在");
+        }
         equipmentManage.setUpdateTime(DateUtils.getNowDate());
         equipmentManage.setUpdateTime(DateUtils.getNowDate());
-        return equipmentManageMapper.updateEquipmentManage(equipmentManage);
+        equipmentManageMapper.updateEquipmentManage(equipmentManage);
+        return AjaxResult.success();
     }
     }
 
 
+
     /**
     /**
      * 批量删除设备管理
      * 批量删除设备管理
-     * 
+     *
      * @param equipmentIds 需要删除的设备管理主键
      * @param equipmentIds 需要删除的设备管理主键
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int deleteEquipmentManageByEquipmentIds(Long[] equipmentIds)
-    {
+    public int deleteEquipmentManageByEquipmentIds(Long[] equipmentIds) {
         return equipmentManageMapper.deleteEquipmentManageByEquipmentIds(equipmentIds);
         return equipmentManageMapper.deleteEquipmentManageByEquipmentIds(equipmentIds);
     }
     }
 
 
     /**
     /**
      * 删除设备管理信息
      * 删除设备管理信息
-     * 
+     *
      * @param equipmentId 设备管理主键
      * @param equipmentId 设备管理主键
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int deleteEquipmentManageByEquipmentId(Long equipmentId)
-    {
+    public int deleteEquipmentManageByEquipmentId(Long equipmentId) {
         return equipmentManageMapper.deleteEquipmentManageByEquipmentId(equipmentId);
         return equipmentManageMapper.deleteEquipmentManageByEquipmentId(equipmentId);
     }
     }
 }
 }
+

+ 89 - 23
ruoyi-system/src/main/java/com/ruoyi/manage/service/impl/ParameterSetServiceImpl.java

@@ -1,6 +1,9 @@
 package com.ruoyi.manage.service.impl;
 package com.ruoyi.manage.service.impl;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.mqtt.MqttService;
 import com.ruoyi.manage.domain.ParameterSet;
 import com.ruoyi.manage.domain.ParameterSet;
 import com.ruoyi.manage.mapper.ParameterSetMapper;
 import com.ruoyi.manage.mapper.ParameterSetMapper;
 import com.ruoyi.manage.service.IParameterSetService;
 import com.ruoyi.manage.service.IParameterSetService;
@@ -8,90 +11,153 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import static com.ruoyi.common.constant.Constants.*;
 
 
 /**
 /**
  * 参数设置Service业务层处理
  * 参数设置Service业务层处理
- * 
+ *
  * @author boman
  * @author boman
  * @date 2025-06-18
  * @date 2025-06-18
  */
  */
 @Service
 @Service
-public class ParameterSetServiceImpl implements IParameterSetService 
-{
+public class ParameterSetServiceImpl implements IParameterSetService {
     @Autowired
     @Autowired
     private ParameterSetMapper parameterSetMapper;
     private ParameterSetMapper parameterSetMapper;
+    @Autowired
+    private MqttService mqttService;
 
 
     /**
     /**
      * 查询参数设置
      * 查询参数设置
-     * 
+     *
      * @param parameterId 参数设置主键
      * @param parameterId 参数设置主键
      * @return 参数设置
      * @return 参数设置
      */
      */
     @Override
     @Override
-    public ParameterSet selectParameterSetByParameterId(Long parameterId)
-    {
+    public ParameterSet selectParameterSetByParameterId(Long parameterId) {
         return parameterSetMapper.selectParameterSetByParameterId(parameterId);
         return parameterSetMapper.selectParameterSetByParameterId(parameterId);
     }
     }
 
 
     /**
     /**
      * 查询参数设置列表
      * 查询参数设置列表
-     * 
+     *
      * @param parameterSet 参数设置
      * @param parameterSet 参数设置
      * @return 参数设置
      * @return 参数设置
      */
      */
     @Override
     @Override
-    public List<ParameterSet> selectParameterSetList(ParameterSet parameterSet)
-    {
+    public List<ParameterSet> selectParameterSetList(ParameterSet parameterSet) {
         return parameterSetMapper.selectParameterSetList(parameterSet);
         return parameterSetMapper.selectParameterSetList(parameterSet);
     }
     }
 
 
     /**
     /**
      * 新增参数设置
      * 新增参数设置
-     * 
+     *
      * @param parameterSet 参数设置
      * @param parameterSet 参数设置
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int insertParameterSet(ParameterSet parameterSet)
-    {
+    public AjaxResult insertParameterSet(ParameterSet parameterSet) {
+        Long channelId = parameterSet.getChannelId();
+        ParameterSet parameterSetOld = parameterSetMapper.selectParameterSetByChannelId(channelId);
+        if (parameterSetOld != null) {
+            return AjaxResult.error("当前通道已设置参数,请勿重复新增");
+        }
+        AjaxResult ajaxResult = checkParameter(parameterSet);
+        if (ajaxResult.isError()) {
+            return ajaxResult;
+        }
         parameterSet.setCreateTime(DateUtils.getNowDate());
         parameterSet.setCreateTime(DateUtils.getNowDate());
-        return parameterSetMapper.insertParameterSet(parameterSet);
+        parameterSetMapper.insertParameterSet(parameterSet);
+        return AjaxResult.success();
+    }
+
+    //校验是否需要下发参数
+    public AjaxResult checkParameter(ParameterSet parameterSet) {
+        //下发指令
+        String channelRange = parameterSet.getChannelRange();
+        String leaveTime = parameterSet.getLeaveTime();
+        String playTime = parameterSet.getPlayTime();
+        String leaveRate = parameterSet.getLeaveRate();
+        String playRate = parameterSet.getPlayRate();
+        if (StringUtils.isNotEmpty(channelRange)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_RECT, channelRange);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_RECT);
+            }
+        } else if (StringUtils.isNotEmpty(leaveTime)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_LEAVETIME, leaveTime);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_LEAVETIME);
+            }
+        } else if (StringUtils.isNotEmpty(playTime)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_PLAYTIME, playTime);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_PLAYTIME);
+            }
+        } else if (StringUtils.isNotEmpty(leaveRate)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_LEAVERATE, leaveRate);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_LEAVERATE);
+            }
+        } else if (StringUtils.isNotEmpty(playRate)) {
+            try {
+                CompletableFuture<Void> future = mqttService.publish(DETECTION_PLAYRATE, playRate);
+                future.get(10, TimeUnit.SECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                return AjaxResult.error("发布消息失败:" + DETECTION_PLAYRATE);
+            }
+        }
+        return AjaxResult.success();
     }
     }
 
 
     /**
     /**
      * 修改参数设置
      * 修改参数设置
-     * 
+     *
      * @param parameterSet 参数设置
      * @param parameterSet 参数设置
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int updateParameterSet(ParameterSet parameterSet)
-    {
+    public AjaxResult updateParameterSet(ParameterSet parameterSet) {
+        AjaxResult ajaxResult = checkParameter(parameterSet);
+        if (ajaxResult.isError()) {
+            return ajaxResult;
+        }
         parameterSet.setUpdateTime(DateUtils.getNowDate());
         parameterSet.setUpdateTime(DateUtils.getNowDate());
-        return parameterSetMapper.updateParameterSet(parameterSet);
+        parameterSetMapper.updateParameterSet(parameterSet);
+        return AjaxResult.success();
     }
     }
 
 
     /**
     /**
      * 批量删除参数设置
      * 批量删除参数设置
-     * 
+     *
      * @param parameterIds 需要删除的参数设置主键
      * @param parameterIds 需要删除的参数设置主键
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int deleteParameterSetByParameterIds(Long[] parameterIds)
-    {
+    public int deleteParameterSetByParameterIds(Long[] parameterIds) {
         return parameterSetMapper.deleteParameterSetByParameterIds(parameterIds);
         return parameterSetMapper.deleteParameterSetByParameterIds(parameterIds);
     }
     }
 
 
     /**
     /**
      * 删除参数设置信息
      * 删除参数设置信息
-     * 
+     *
      * @param parameterId 参数设置主键
      * @param parameterId 参数设置主键
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public int deleteParameterSetByParameterId(Long parameterId)
-    {
+    public int deleteParameterSetByParameterId(Long parameterId) {
         return parameterSetMapper.deleteParameterSetByParameterId(parameterId);
         return parameterSetMapper.deleteParameterSetByParameterId(parameterId);
     }
     }
 }
 }

+ 9 - 2
ruoyi-system/src/main/resources/mapper/manage/ChannelNumberMapper.xml

@@ -40,11 +40,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         </where>
     </select>
     </select>
     
     
-    <select id="selectChannelNumberByChannelId" parameterType="Long" resultMap="ChannelNumberResult">
+    <select id="selectChannelNumberByChannelId" parameterType="ChannelNumber" resultMap="ChannelNumberResult">
         <include refid="selectChannelNumberVo"/>
         <include refid="selectChannelNumberVo"/>
         where channel_id = #{channelId}
         where channel_id = #{channelId}
     </select>
     </select>
-
+    <select id="selectChannelNumberByChannelNum" parameterType="string" resultMap="ChannelNumberResult">
+        <include refid="selectChannelNumberVo"/>
+        <where>
+            <if test="equipmentId != null "> and equipment_id  =#{equipmentId}</if>
+            <if test="channelNum != null  and channelNum != ''"> and channel_num = #{channelNum}</if>
+        </where>
+        limit 1
+    </select>
     <insert id="insertChannelNumber" parameterType="ChannelNumber" useGeneratedKeys="true" keyProperty="channelId">
     <insert id="insertChannelNumber" parameterType="ChannelNumber" useGeneratedKeys="true" keyProperty="channelId">
         insert into channel_number
         insert into channel_number
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 7 - 1
ruoyi-system/src/main/resources/mapper/manage/EquipmentManageMapper.xml

@@ -39,7 +39,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="runState != null  and runState != ''"> and run_state = #{runState}</if>
             <if test="runState != null  and runState != ''"> and run_state = #{runState}</if>
         </where>
         </where>
     </select>
     </select>
-    
+
+    <select id="selectEquipmentManageByEquipmentNum" parameterType="EquipmentManage" resultMap="EquipmentManageResult">
+        <include refid="selectEquipmentManageVo"/>
+        <where>
+            <if test="equipmentNum != null  and equipmentNum != ''">and equipment_num = #{equipmentNum}</if>
+        </where>
+    </select>
     <select id="selectEquipmentManageByEquipmentId" parameterType="Long" resultMap="EquipmentManageResult">
     <select id="selectEquipmentManageByEquipmentId" parameterType="Long" resultMap="EquipmentManageResult">
         <include refid="selectEquipmentManageVo"/>
         <include refid="selectEquipmentManageVo"/>
         where equipment_id = #{equipmentId}
         where equipment_id = #{equipmentId}