Przeglądaj źródła

喇叭优化处理

hanzhiwei 2 lat temu
rodzic
commit
a6dd5830a8

+ 9 - 1
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java

@@ -375,6 +375,14 @@ public interface RemoteLaboratoryService {
     public R<Object> getSpeakerBySub(@PathVariable("floorId") Long floorId, @PathVariable("subId") Long subId);
 
     /**
+     * 根据实验室id获取喇叭列表
+     */
+    @ApiOperation(value = "根据实验室id获取喇叭列表")
+    @RequestMapping("/sparseHardware/getSpeakerBySubId")
+    public R<Object> getSpeakerBySubId(@RequestParam("subId") Long subId);
+
+
+    /**
      * 获取喇叭总数
      * @Return com.zd.model.domain.R<java.lang.Object>
      **/
@@ -480,7 +488,7 @@ public interface RemoteLaboratoryService {
     @PutMapping("/hardware/update")
     R<Integer> update(@RequestParam("operate") HardwareOperate operate, @RequestParam("ipAddress") String ipAddress);
 
-    @ApiOperation(value = "一件灭火接火焰预警")
+    @ApiOperation(value = "一件灭火接火焰预警")
     @PostMapping("/plan/oneClickFire")
     ResultData oneClickFire(@RequestBody OneClickFireDTO oneClickFireDTO);
 

+ 5 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLaboratoryFallbackFactory.java

@@ -351,6 +351,11 @@ public class RemoteLaboratoryFallbackFactory implements FallbackFactory<RemoteLa
             }
 
             @Override
+            public R<Object> getSpeakerBySubId(Long subId) {
+                throw new RuntimeException("根据楼层获取喇叭列表失败!" + cause.getMessage());
+            }
+
+            @Override
             public R<Object> selectSpeakerCount() {
                 throw new RuntimeException("获取喇叭总数失败!" + cause.getMessage());
             }

+ 23 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/controller/SpeakerController.java

@@ -260,4 +260,27 @@ public class SpeakerController {
         boolean isTrue=iSpeakerService.stopPlayMusic(sn,ip);
         return AjaxResult.success(isTrue);
     }
+
+    /**
+     * 根据楼层查询喇叭并语音播放
+     * @Param [floorIds 楼层ids(多个楼层,分隔), musicUrl 音乐地址]
+     * @Return com.zd.model.domain.AjaxResult
+     **/
+    @PostMapping("/openSpeakByFloorId")
+    @ApiOperation(value = "根据楼层查询喇叭并语音播放", notes = "根据楼层查询喇叭并语音播放")
+    public AjaxResult openSpeakByFloorId(@RequestParam("floorId") Long floorId,@RequestParam("musicUrl") String musicUrl) {
+        return iSpeakerService.openSpeakByFloorId(floorId,musicUrl);
+    }
+
+    /**
+     * 开启实验室喇叭
+     * @Param [subId 实验室id, musicUrl 音乐地址]
+     * @Return com.zd.model.domain.AjaxResult
+     **/
+    @PostMapping("/openSpeakBySubId")
+    @ApiOperation(value = "开启实验室喇叭", notes = "开启实验室喇叭")
+    public AjaxResult openSpeakBySubId(@RequestParam("subId") Long subId,@RequestParam("musicUrl") String musicUrl) {
+        return iSpeakerService.openSpeakBySubId(subId,musicUrl);
+    }
+
 }

+ 20 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/domain/RemoteSpeakerDTO.java

@@ -0,0 +1,20 @@
+package com.zd.alg.speaker.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description 远程调用喇叭DTO
+ * @Author hzw
+ * @Date 2023/3/9 9:37
+ * @Version 2.0
+ */
+@Data
+public class RemoteSpeakerDTO {
+
+    private List<Long> floorId;
+    private List<Long> subId;
+    private String musicUrl;
+
+}

+ 15 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/service/ISpeakerService.java

@@ -2,6 +2,7 @@ package com.zd.alg.speaker.service;
 
 
 import com.zd.algorithm.api.speaker.entity.PlayVo;
+import com.zd.model.domain.AjaxResult;
 
 import java.util.List;
 
@@ -121,4 +122,18 @@ public interface ISpeakerService {
      * @param sns 设备sn
      */
     boolean stopPriorityMusic(String[] sns);
+
+    /**
+     * 开启实验室喇叭
+     * @Param [subId, musicUrl]
+     * @Return com.zd.model.domain.AjaxResult
+     **/
+    AjaxResult openSpeakBySubId(Long subId, String musicUrl);
+
+    /**
+     *
+     * @Param [floorId, musicUrl]
+     * @Return com.zd.model.domain.AjaxResult
+     **/
+    AjaxResult openSpeakByFloorId(Long floorId, String musicUrl);
 }

+ 68 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/speaker/service/impl/SpeakerServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zd.alg.speaker.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.alg.speaker.domain.RemoteAddress;
 import com.zd.alg.speaker.service.ISpeakerService;
@@ -9,6 +10,9 @@ import com.zd.algorithm.api.speaker.entity.PlayVo;
 import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.StringUtils;
+import com.zd.laboratory.api.feign.RemoteLaboratoryService;
+import com.zd.model.domain.AjaxResult;
+import com.zd.model.domain.R;
 import com.zd.model.entity.UrlVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,6 +52,9 @@ public class SpeakerServiceImpl implements ISpeakerService {
     @Autowired
     private RedisService redisService;
 
+    @Autowired
+    private RemoteLaboratoryService remoteLaboratoryService;
+
 
     @Override
     public String getToken() {
@@ -202,6 +209,67 @@ public class SpeakerServiceImpl implements ISpeakerService {
     }
 
     @Override
+    public AjaxResult openSpeakBySubId(Long subId, String musicUrl) {
+        if(subId == null || StringUtils.isBlank(musicUrl)){
+            return AjaxResult.error("实验室id或音乐地址为空!");
+        }
+        R r=remoteLaboratoryService.getSpeakerBySubId(subId);
+        if(r.getCode()!=200){
+            return AjaxResult.error("获取设备列表失败!");
+        }
+        List<Map<String,Object>> mapList= (List<Map<String, Object>>) r.getData();
+        String responseStr = getDeviceList(1, 1000);
+        if(StringUtils.isEmpty(responseStr)){
+            return AjaxResult.error("获取设备列表失败!");
+        }
+        JSONObject jsonObject=JSONObject.parseObject(responseStr);
+        JSONArray jsonArray=JSONArray.parseArray(jsonObject.getString("rows"));
+        for(Map<String,Object> map: mapList){
+            for(int i=0;i<jsonArray.size();i++){
+                JSONObject extra=jsonArray.getJSONObject(i).getJSONObject("extra");
+                JSONObject obj = extra.getJSONObject("config");
+                if(obj.getString("mac").equals(map.getOrDefault("hardwareNum","").toString())){
+                    map.put("deviceSn",obj.getString("sn"));
+                    map.put("deviceIp",extra.getString("ip"));
+                    map.put("operate",extra.getString("online"));
+                }
+            }
+        }
+        return AjaxResult.success(mapList);
+
+    }
+
+    @Override
+    public AjaxResult openSpeakByFloorId(Long floorId, String musicUrl) {
+        if(floorId == null || StringUtils.isBlank(musicUrl)){
+            return AjaxResult.error("楼层id或音乐地址为空!");
+        }
+        R r=remoteLaboratoryService.getSpeakerByFloor(floorId);
+        if(r.getCode()!=200){
+            return AjaxResult.error("获取设备列表失败!");
+        }
+        List<Map<String,Object>> mapList= (List<Map<String, Object>>) r.getData();
+        String responseStr = getDeviceList(1, 1000);
+        if(StringUtils.isEmpty(responseStr)){
+            return AjaxResult.error("获取设备列表失败!");
+        }
+        JSONObject jsonObject=JSONObject.parseObject(responseStr);
+        JSONArray jsonArray=JSONArray.parseArray(jsonObject.getString("rows"));
+        for(Map<String,Object> map: mapList){
+            for(int i=0;i<jsonArray.size();i++){
+                JSONObject extra=jsonArray.getJSONObject(i).getJSONObject("extra");
+                JSONObject obj = extra.getJSONObject("config");
+                if(obj.getString("mac").equals(map.getOrDefault("hardwareNum","").toString())){
+                    map.put("deviceSn",obj.getString("sn"));
+                    map.put("deviceIp",extra.getString("ip"));
+                    map.put("operate",extra.getString("online"));
+                }
+            }
+        }
+        return AjaxResult.success(mapList);
+    }
+
+    @Override
     public boolean stopPlayMusic(String sn, String ip) {
         logger.info("********************" + sn + "********************");
         String remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort() + "/api/sendtodevice";

+ 14 - 4
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabSparseHardwareController.java

@@ -85,7 +85,7 @@ public class LabSparseHardwareController extends BaseController {
     @ApiOperation(value = "根据楼层获取喇叭列表")
     @RequestMapping(value = "getSpeakerByFloor/{floorId}")
     public ResultData<List<Map<String,Object>>> getSpeakerByFloor(@PathVariable("floorId") Long floorId) {
-        return ResultData.success(labSparseHardwareService.selectSpeakerByFloorId(floorId, null));
+        return ResultData.success(labSparseHardwareService.selectSpeakerByFloorIdAndSubId(floorId, null));
     }
 
     /**
@@ -98,20 +98,30 @@ public class LabSparseHardwareController extends BaseController {
         if (floorId == -99L && subId != null) {
             return ResultData.success(labSparseHardwareService.selectSpeakerBySubId(subId));
         }
-        return ResultData.success(labSparseHardwareService.selectSpeakerByFloorId(floorId, subId));
+        return ResultData.success(labSparseHardwareService.selectSpeakerByFloorIdAndSubId(floorId, subId));
     }
 
     /**
      * 根据实验室id获取喇叭列表
      */
     @ApiOperation(value = "根据实验室id获取喇叭列表")
-    @RequestMapping(value = "/getSpeakerBySubId/{subId}")
-    public ResultData<List<Map<String,Object>>> getSpeakerBySubId(@PathVariable("subId") Long subId) {
+    @RequestMapping(value = "/getSpeakerBySubId")
+    public ResultData<List<Map<String,Object>>> getSpeakerBySubId(@RequestParam("subId") Long subId) {
         return ResultData.success(labSparseHardwareService.selectSpeakerBySubId(subId));
     }
 
 
     /**
+     * 根据楼层获取摄像头列表
+     */
+    @ApiOperation(value = "根据楼层id获取喇叭列表")
+    @RequestMapping(value = "/getSpeakerByFloorId")
+    public ResultData<List<Map<String,Object>>> getSpeakerByFloorId(@RequestParam("floorId") Long floorId) {
+        return ResultData.success(labSparseHardwareService.selectSpeakerByFloorId(floorId));
+    }
+
+
+    /**
      * 新增疏散硬件
      */
     @ApiOperation(value = "新增疏散硬件")

+ 8 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabSparseHardwareMapper.java

@@ -80,7 +80,14 @@ public interface LabSparseHardwareMapper
      * @param type
      * @return
      */
-    List<Map<String,Object>> selectListByFloorId(@Param("floorId") Long floorId, @Param("subId") Long subId, @Param("type") int type);
+    List<Map<String,Object>> selectListByFloorIdAndSubId(@Param("floorId") Long floorId, @Param("subId") Long subId, @Param("type") int type);
+
+    /**
+     * 根据楼层id查询设备列表
+     * @param floorId
+     * @return
+     */
+    List<Map<String, Object>> selectListByFloorId(@Param("floorId") Long floorId);
 
     /**
      * 根据实验室id查询喇叭列表

+ 10 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabSparseHardwareService.java

@@ -73,11 +73,19 @@ public interface ILabSparseHardwareService
      * @param floorId
      * @return
      */
-    List<Map<String,Object>> selectSpeakerByFloorId(Long floorId, Long subId);
+    List<Map<String,Object>> selectSpeakerByFloorIdAndSubId(Long floorId, Long subId);
+
+
+    /**
+     * 根据楼层id查询喇叭列表
+     * @param floorId 楼层id
+     * @return
+     */
+    List<Map<String,Object>> selectSpeakerByFloorId(Long floorId);
 
     /**
      * 根据实验室id查询喇叭列表
-     * @param subId
+     * @param subId 实验室id
      * @return
      */
     List<Map<String,Object>> selectSpeakerBySubId(Long subId);

+ 7 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSparseHardwareServiceImpl.java

@@ -112,8 +112,8 @@ public class LabSparseHardwareServiceImpl implements ILabSparseHardwareService {
     }
 
     @Override
-    public List<Map<String,Object>> selectSpeakerByFloorId(Long floorId, Long subId) {
-        return labSparseHardwareMapper.selectListByFloorId(floorId, subId,2);
+    public List<Map<String,Object>> selectSpeakerByFloorIdAndSubId(Long floorId, Long subId) {
+        return labSparseHardwareMapper.selectListByFloorIdAndSubId(floorId, subId,2);
     }
 
     @Override
@@ -122,6 +122,11 @@ public class LabSparseHardwareServiceImpl implements ILabSparseHardwareService {
     }
 
     @Override
+    public List<Map<String, Object>> selectSpeakerByFloorId(Long floorId) {
+        return labSparseHardwareMapper.selectListByFloorId(floorId);
+    }
+
+    @Override
     public Integer selectSpeakerCount() {
         return labSparseHardwareMapper.selectSpeakerCount();
     }

+ 13 - 1
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabSparseHardwareMapper.xml

@@ -107,7 +107,7 @@
         where id = #{id}
     </select>
 
-    <select id="selectListByFloorId" resultType="java.util.Map">
+    <select id="selectListByFloorIdAndSubId" resultType="java.util.Map">
         SELECT t.hardware_num as hardwareNum,t.`name`,t.operate,t.port,t.device_vol as deviceVol FROM lab_sparse_hardware t LEFT JOIN lab_build_floor d ON t.floor_id = d.id
         WHERE t.floor_id=#{floorId} AND t.`type`=#{type}
         <if test="subId != null">
@@ -115,6 +115,18 @@
         </if>
     </select>
 
+    <select id="selectListByFloorId" resultType="java.util.Map">
+        SELECT t.hardware_num as hardwareNum,
+            t.`name`,
+            t.operate,
+            t.port,
+            t.device_vol as deviceVol
+        FROM lab_sparse_hardware t
+            LEFT JOIN lab_build_floor d ON t.floor_id = d.id
+        WHERE t.floor_id=#{floorId}
+            AND t.`type`= 2
+    </select>
+
     <select id="selectListBySubId" resultType="java.util.Map">
         SELECT t.hardware_num as hardwareNum,t.`name`,t.operate,t.port,t.device_vol as deviceVol FROM lab_sparse_hardware t LEFT JOIN lab_build_floor d ON t.floor_id = d.id
         WHERE t.`type`= 2