Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

hecheng vor 3 Jahren
Ursprung
Commit
1f0933acb3

+ 25 - 3
zd-api/zd-api-system/src/main/java/com/zd/system/api/domain/PlayVo.java

@@ -1,16 +1,34 @@
 package com.zd.system.api.domain;
 
 import com.zd.common.core.utils.StringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.Optional;
 
+/**
+ * @author 董高升
+ * @descript 播放vo
+ */
 public class PlayVo {
+
+    private static Logger logger = LoggerFactory.getLogger(PlayVo.class);
+
+    @ApiModelProperty(required = true, notes = "设备编号")
     private String sn;
+    @ApiModelProperty(required = false, notes = "方便对接时传递任务类型")
     private String type;
+    @ApiModelProperty(required = false, notes = "任务名称")
     private String name;
+    @ApiModelProperty(required = true, notes = "播放速度")
     private Integer speed;
+    @ApiModelProperty(required = false, notes = "播放参数")
     private ParamVo params;
+    @ApiModelProperty(required = true, notes = "远程端口")
     private int port;
+    @ApiModelProperty(required = true, notes = "设备Ip")
+    private String deviceIp;
 
     public String getSn() {
         return sn;
@@ -45,9 +63,6 @@ public class PlayVo {
     }
 
     public ParamVo getParams() {
-        if (params==null){
-            params=new ParamVo();
-        }
         return params;
     }
 
@@ -81,4 +96,11 @@ public class PlayVo {
         this.speed = Optional.ofNullable(speed).orElse(50);
     }
 
+    public String getDeviceIp() {
+        return deviceIp;
+    }
+
+    public void setDeviceIp(String deviceIp) {
+        this.deviceIp = deviceIp;
+    }
 }

+ 31 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/test.java

@@ -0,0 +1,31 @@
+package com.zd.system.api;
+
+import cn.hutool.core.util.NumberUtil;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+public class test {
+    public static void main(String[] args) {
+        String[] urlStr = new String[5];
+        urlStr[0] = "15-31-17.mp4";
+        urlStr[1] = "15-31-29.mp4";
+        urlStr[2] = "15-31-20.mp4";
+        urlStr[3] = "15-31-30.mp4";
+        urlStr[4] = "15-31-15.mp4";
+        List<Map<String,Object>> collect = Arrays.asList(urlStr).stream()
+                .map(a -> {
+                    Map<String,Object> urlMap = new HashMap<String,Object>();
+                    Integer value = Integer.parseInt(a.substring(0, a.lastIndexOf(".")).replaceAll("-", ""));
+                    urlMap.put("key",value);
+                    urlMap.put("value",a);
+                    return urlMap;
+                }).collect(Collectors.toList());
+        Map<String,Object> arrMap = Optional.ofNullable(collect).orElseGet(Collections::emptyList)
+                .stream()
+                .sorted((c, d) -> NumberUtil.compare(Integer.parseInt(d.get("key").toString()),Integer.parseInt(c.get("key").toString())))
+                .collect(Collectors.toList()).get(0);
+
+        System.out.println(arrMap.get("value"));
+    }
+}

+ 1 - 1
zd-modules/zd-camera/src/main/java/com/zd/iot/vmp/storager/dao/DeviceChannelMapper.java

@@ -75,7 +75,7 @@ public interface DeviceChannelMapper {
             "SELECT * FROM device_channel WHERE deviceId in \n" +
             "<foreach collection='deviceIds' index='index' item='item' open='(' separator=',' close=')'>#{item}</foreach> \n"+
             "</script>")
-    List<DeviceChannel> queryChannelByDeviceId(List<String> deviceIds);
+    List<DeviceChannel> queryChannelByDeviceId(@Param("deviceIds") List<String> deviceIds);
 
     @Delete("DELETE FROM device_channel WHERE deviceId=#{deviceId}")
     int cleanChannelsByDeviceId(String deviceId);

+ 1 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabExitLineServiceImpl.java

@@ -496,6 +496,7 @@ public class LabExitLineServiceImpl implements ILabExitLineService
                             if(com.zd.common.core.utils.StringUtils.isNotNull(map.get("deviceSn")) && com.zd.common.core.utils.StringUtils.isNotNull(map.get("port"))){
                                 PlayVo playVo = new PlayVo();
                                 playVo.setSn(map.get("deviceSn")+"");
+                                playVo.setDeviceIp(map.get("deviceIp")+"");
                                 playVo.setPort(Integer.parseInt(map.get("port")+""));
                                 ParamVo paramVo=new ParamVo();
                                 playVo.setParams(paramVo);

+ 1 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabRiskPlanServiceImpl.java

@@ -1144,6 +1144,7 @@ public class LabRiskPlanServiceImpl implements ILabRiskPlanService {
                                 if(StringUtils.isNotNull(map.get("deviceSn")) && StringUtils.isNotNull(map.get("port"))){
                                     PlayVo playVo = new PlayVo();
                                     playVo.setSn(map.get("deviceSn")+"");
+                                    playVo.setDeviceIp(map.get("deviceIp")+"");
                                     playVo.setPort(Integer.parseInt(map.get("port")+""));
                                     ParamVo paramVo=new ParamVo();
                                     playVo.setParams(paramVo);

+ 10 - 3
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabGradeManageRecordMapper.xml

@@ -226,13 +226,20 @@
         JOIN mysql.help_topic t2 ON t2.help_topic_id &lt;( length( mru.user_ids ) - length( REPLACE ( mru.user_ids, ',', '' )) + 1 )
         RIGHT JOIN (
         SELECT
-        substring_index( substring_index( m.sub_ids, ',', t2.help_topic_id + 1 ), ',',- 1 ) subId,
+--         substring_index( substring_index( m.sub_ids, ',', t2.help_topic_id + 1 ), ',',- 1 ) subId,
+        s.id as subId,
         m.id
         FROM
         lab_grade_manage m
-        JOIN mysql.help_topic t2 ON t2.help_topic_id &lt;( length( m.sub_ids ) - length( REPLACE ( m.sub_ids, ',', '' )) + 1 )
+--         JOIN mysql.help_topic t2 ON t2.help_topic_id &lt;( length( m.sub_ids ) - length( REPLACE ( m.sub_ids, ',', '' )) + 1 )
+        LEFT JOIN lab_subject s on m.dept_id = s.dept_id and (
+
+        (m.level = s.level or m.`level` is null)
+        and (m.type_id = s.type_id or m.type_id is null)
+        and (m.mold_id = s.mold_id or m.mold_id is null)
+        )
         WHERE
-        find_in_set( #{subId}, m.sub_ids )
+            s.id = #{subId}
         ) m ON mru.grade_manage_id = m.id
         WHERE
         (mru.cycle = "一天"

+ 1 - 0
zd-modules/zd-speaker/src/main/java/com/zd/speaker/controller/SpeakerController.java

@@ -207,6 +207,7 @@ public class SpeakerController {
         if(StringUtils.isEmpty(text) || playVo.size()==0){
             return AjaxResult.error("参数有误,请检查参数!");
         }
+        text=text.replace("https","http");
         text=text.replace("https://lab.sxitdlc.com/jdlabSystem/","http://192.168.8.101/jdlabSystem/");
         iSpeakerService.textParseVoiceAppIps(text,playVo);
         Map<String,Object> map=new HashMap<>();

+ 10 - 0
zd-modules/zd-speaker/src/main/java/com/zd/speaker/domain/vo/PlayVo.java

@@ -27,6 +27,8 @@ public class PlayVo {
     private ParamVo params;
     @ApiModelProperty(required = true, notes = "远程端口")
     private int port;
+    @ApiModelProperty(required = true, notes = "设备Ip")
+    private String deviceIp;
 
     public String getSn() {
         return sn;
@@ -93,4 +95,12 @@ public class PlayVo {
     public void setSpeed(Integer speed) {
         this.speed = Optional.ofNullable(speed).orElse(50);
     }
+
+    public String getDeviceIp() {
+        return deviceIp;
+    }
+
+    public void setDeviceIp(String deviceIp) {
+        this.deviceIp = deviceIp;
+    }
 }

+ 1 - 0
zd-modules/zd-speaker/src/main/java/com/zd/speaker/service/ISpeakerService.java

@@ -82,6 +82,7 @@ public interface ISpeakerService {
      */
     void textParseVoiceIps(String texts, List<PlayVo> playVo);
 
+
     /**
      * 文字转音频路径
      * @param texts

+ 61 - 17
zd-modules/zd-speaker/src/main/java/com/zd/speaker/service/impl/SpeakerServiceImpl.java

@@ -30,9 +30,13 @@ import java.util.concurrent.TimeUnit;
 @RefreshScope
 public class SpeakerServiceImpl implements ISpeakerService {
 
-    @Value("${speaker.port:}")
+    @Value("${speaker.port:8080}")
     private String port;
 
+    @Value("${speaker.isOnline:0}")
+    private Integer isOnline;
+
+
     private static Logger logger = LoggerFactory.getLogger(SpeakerServiceImpl.class);
     @Autowired
     private OkHttpRequest okHttpRequest;
@@ -163,13 +167,13 @@ public class SpeakerServiceImpl implements ISpeakerService {
 
     @Override
     public void textParseVoiceIps(String texts, List<PlayVo> playVoList) {
-        commonTextParseVoice(texts, playVoList);
+        commonTextParseVoice(texts,playVoList);
     }
 
     @Override
-    public void textParseVoiceAppIps(String texts, List<PlayVo> playVoList) {
+    public void textParseVoiceAppIps(String texts,List<PlayVo> playVoList) {
         if (playVoList.size() == 1) {
-            commonTextParseVoice(texts, playVoList);
+            commonTextUrlVoice(texts, playVoList);
         } else {
             PlayBatchVo playBatchVo = new PlayBatchVo();
             BeanUtils.copyProperties(playVoList.get(0), playBatchVo);
@@ -182,17 +186,18 @@ public class SpeakerServiceImpl implements ISpeakerService {
             for (PlayVo playVo : playVoList) {
                 snsList.add(playVo.getSn());
             }
+            String deviceIp =playVoList.get(0).getDeviceIp();
             playBatchVo.setSns(snsList.toArray(new String[snsList.size()]));
-            boolean isTrue = invokePost(JSONObject.toJSON(playBatchVo).toString(), 1, 0);
+            boolean isTrue = invokePost(JSONObject.toJSON(playBatchVo).toString(), deviceIp,1, 0);
             if (isTrue) {
-                textParseVoiceAppIps(texts, playVoList);
+                textParseVoiceAppIps(texts,playVoList);
             }
         }
     }
 
     @Override
-    public void textParseUrlAppIpsOrigin(String text, List<PlayVo> playVo) {
-        commonTextParseVoice(text, playVo);
+    public void textParseUrlAppIpsOrigin(String text,List<PlayVo> playVo) {
+        commonTextParseVoice(text,playVo);
     }
 
     @Override
@@ -211,7 +216,6 @@ public class SpeakerServiceImpl implements ISpeakerService {
 
     /**
      * 认证失败刷新token
-     *
      * @param requestStr
      * @return
      */
@@ -231,22 +235,54 @@ public class SpeakerServiceImpl implements ISpeakerService {
         return urlVoList;
     }
 
+    private List<UrlVo> getTextParseUrl(String text,PlayVo playVo) {
+        List<UrlVo> urlVoList = new ArrayList<>();
+        String remoteUrl = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getTtsPort() + "/tts_xf.single?text=" + text + "&voice_name=xiaoyan&speed=" + playVo.getSpeed() + "&volume=" + playVo.getParams().getVol();
+        UrlVo urlVo = new UrlVo(text.substring(0, 1), remoteUrl);
+        urlVoList.add(urlVo);
+        return urlVoList;
+    }
+
     /**
      * 公共的文字转语音播放
      *
      * @param texts
      * @param playVoList
      */
-    private void commonTextParseVoice(String texts, List<PlayVo> playVoList) {
+    private void commonTextParseVoice(String texts,List<PlayVo> playVoList) {
         for (PlayVo play : playVoList) {
+            String deviceIp=play.getDeviceIp();
+            List<UrlVo> urlVoList = getTextParseUrl(texts,play);
+            if (null != play.getParams()) {
+                play.getParams().setTid(UUID.randomUUID().toString());
+                play.getParams().setUrls(urlVoList);
+            }
+            boolean isTrue = invokePost(JSONObject.toJSON(play).toString(),deviceIp, 0, play.getPort());
+            if (isTrue) {
+                commonTextParseVoice(texts,playVoList);
+                break;
+            }
+        }
+    }
+
+
+    /**
+     * 公共的语音路径播放
+     * commonTextUrlVoice
+     * @param texts
+     * @param playVoList
+     */
+    private void commonTextUrlVoice(String texts,List<PlayVo> playVoList) {
+        for (PlayVo play : playVoList) {
+            String deviceIp=play.getDeviceIp();
             List<UrlVo> urlVoList = getUrlList(texts);
             if (null != play.getParams()) {
                 play.getParams().setTid(UUID.randomUUID().toString());
                 play.getParams().setUrls(urlVoList);
             }
-            boolean isTrue = invokePost(JSONObject.toJSON(play).toString(), 0, play.getPort());
+            boolean isTrue = invokePost(JSONObject.toJSON(play).toString(),deviceIp, 0, play.getPort());
             if (isTrue) {
-                commonTextParseVoice(texts, playVoList);
+                commonTextParseVoice(texts,playVoList);
                 break;
             }
         }
@@ -256,13 +292,21 @@ public class SpeakerServiceImpl implements ISpeakerService {
      * @param body
      * @param type 0是单个,1是批量
      */
-    private boolean invokePost(String body, Integer type, int port) {
+    private boolean invokePost(String body,String deviceIp, Integer type, int port) {
         logger.info("+++++++++++++++++++++++++++" + body + "+++++++++++++++++++++++++");
         String remoteUrlIp = "";
-        if (type == 0) {
-            remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + port;
-        } else {
-            remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort() + "/api/sendtodevice";
+        if(isOnline==1){
+            if (type == 0) {
+                remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort();
+            } else {
+                remoteUrlIp = remoteAddress.getProtocol() + "://" + remoteAddress.getTtsIp() + ":" + remoteAddress.getRemotePort() + "/api/sendtodevice";
+            }
+        }else{
+            if (type == 0) {
+                remoteUrlIp = remoteAddress.getProtocol() + "://" + deviceIp + ":" + port;
+            } else {
+                remoteUrlIp = remoteAddress.getProtocol() + "://" + deviceIp + ":" + port + "/api/sendtodevice";
+            }
         }
         String token = getToken();
         String responseStr = okHttpRequest.doPostJson(remoteUrlIp, token, body);

+ 1 - 0
zd-modules/zd-speaker/src/main/resources/application.yml

@@ -36,4 +36,5 @@ spring:
 #ip喇叭控制端口
 speaker:
   port: 8888
+  isOnline: 0  #1表示公网部署,0表示局域网部署