Browse Source

视频监控、音柱管理

crazycat 2 years atrás
parent
commit
5b800b5c6b
35 changed files with 905 additions and 17 deletions
  1. 5 0
      pom.xml
  2. 9 0
      src/main/java/com/welampiot/configuration/BroadcastConfig.java
  3. 322 4
      src/main/java/com/welampiot/controller/BroadcastController.java
  4. 31 0
      src/main/java/com/welampiot/controller/SmartLockController.java
  5. 12 0
      src/main/java/com/welampiot/controller/SuperPowerController.java
  6. 108 0
      src/main/java/com/welampiot/controller/VideoController.java
  7. 4 0
      src/main/java/com/welampiot/dao/BroadcastDao.java
  8. 8 0
      src/main/java/com/welampiot/dao/BroadcastProListDao.java
  9. 2 0
      src/main/java/com/welampiot/dao/SmartLockDevInfoDao.java
  10. 11 0
      src/main/java/com/welampiot/dao/VideoGbInfoDao.java
  11. 1 1
      src/main/java/com/welampiot/dao/VideoMonitorDao.java
  12. 1 1
      src/main/java/com/welampiot/dto/BroadcastItemDTO.java
  13. 1 0
      src/main/java/com/welampiot/dto/BroadcastProListDTO.java
  14. 1 1
      src/main/java/com/welampiot/dto/SmartLockDevInfoDTO.java
  15. 1 0
      src/main/java/com/welampiot/dto/SuperPowerDevInfoDTO.java
  16. 12 0
      src/main/java/com/welampiot/dto/VideoGbInfoDTO.java
  17. 2 0
      src/main/java/com/welampiot/dto/VideoMonitorDTO.java
  18. 9 0
      src/main/java/com/welampiot/service/BroadcastProListService.java
  19. 5 0
      src/main/java/com/welampiot/service/BroadcastService.java
  20. 2 0
      src/main/java/com/welampiot/service/SmartLockDevInfoService.java
  21. 11 0
      src/main/java/com/welampiot/service/VideoGbInfoService.java
  22. 1 0
      src/main/java/com/welampiot/service/VideoMonitorService.java
  23. 18 0
      src/main/java/com/welampiot/service/impl/BroadcastProListServiceImpl.java
  24. 10 0
      src/main/java/com/welampiot/service/impl/BroadcastServiceImpl.java
  25. 5 0
      src/main/java/com/welampiot/service/impl/SmartLockDevInfoServiceImpl.java
  26. 32 0
      src/main/java/com/welampiot/service/impl/VideoGbInfoServiceImpl.java
  27. 5 0
      src/main/java/com/welampiot/service/impl/VideoMonitorServiceImpl.java
  28. 133 0
      src/main/java/com/welampiot/utils/BroadcastUtil.java
  29. 65 4
      src/main/java/com/welampiot/utils/VideoUtil.java
  30. 14 2
      src/main/resources/mapper/BroadcastItemMapper.xml
  31. 17 2
      src/main/resources/mapper/BroadcastMapper.xml
  32. 9 0
      src/main/resources/mapper/BroadcastProListMapper.xml
  33. 5 1
      src/main/resources/mapper/SmartLockDevInfoMapper.xml
  34. 26 0
      src/main/resources/mapper/VideoGbInfoMapper.xml
  35. 7 1
      src/main/resources/mapper/VideoMonitorMapper.xml

+ 5 - 0
pom.xml

@@ -164,6 +164,11 @@
             <artifactId>httpclient</artifactId>
             <version>4.5.10</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpmime</artifactId>
+            <version>4.5.12</version>
+        </dependency>
 
     </dependencies>
 

+ 9 - 0
src/main/java/com/welampiot/configuration/BroadcastConfig.java

@@ -0,0 +1,9 @@
+package com.welampiot.configuration;
+
+public class BroadcastConfig {
+    public static String xiaoBoShuHost = "120.24.31.58";// 小播鼠指令发送地址
+    public static String broadcastTcpHost = "127.0.0.1";// 音柱tcp服务地址
+    public static int broadcastTcpPort = 8071;// 音柱tcp服务端口
+    public static int xiaoBoShuPort = 6006;// 小播鼠指令发送端口
+    public static String shiBangHost = "http://112.74.87.184"; // 世邦平台地址
+}

+ 322 - 4
src/main/java/com/welampiot/controller/BroadcastController.java

@@ -1,17 +1,20 @@
 package com.welampiot.controller;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.configuration.BroadcastConfig;
+import com.welampiot.dao.BroadcastProListDao;
 import com.welampiot.dto.*;
-import com.welampiot.service.BroadcastItemService;
-import com.welampiot.service.BroadcastPolicyInfoService;
-import com.welampiot.service.BroadcastService;
-import com.welampiot.service.UserService;
+import com.welampiot.service.*;
+import com.welampiot.utils.BroadcastUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.BroadcastDetailsVO;
 import com.welampiot.vo.BroadcastItemVO;
 import com.welampiot.vo.BroadcastProListVO;
 import com.welampiot.vo.BroadcastVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -22,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -53,6 +57,9 @@ public class BroadcastController {
     @Autowired
     private BroadcastPolicyInfoService broadcastPolicyInfoService;
 
+    @Autowired
+    private BroadcastProListService broadcastProListService;
+
     /**
      * 获取音柱列表
      * @param request
@@ -270,4 +277,315 @@ public class BroadcastController {
         broadcastItemVO1.setTotal(total);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,broadcastItemVO1);
     }
+    /**
+     * 调节设备音量
+     * @param request
+     * @return 调节设备音量
+     */
+    @RequestMapping(value = "/setVol", method = RequestMethod.POST)
+    public BaseResult<?> setVol(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer id = request.getParameter("id") == null ? 0 : Integer.parseInt(request.getParameter("id"));
+        Integer vol = request.getParameter("vol") == null ? 0 : Integer.parseInt(request.getParameter("vol"));
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+
+        BroadcastDTO broadcastById = broadcastService.getBroadcastById(id);
+        if (broadcastById.getType() == 0){ // 小播鼠
+            String s = "{\"mode\":1009,\"snlist\":[\""+broadcastById.getAddress()+"\"],\"vol\":"+vol+",\"vols\":"+vol+"}";
+            s = s.length()+"\n"+s;
+            BroadcastUtil.sendBroadcastXiaoBoshu(s, 10);
+            BroadcastDTO broadcastDTO = new BroadcastDTO();
+            broadcastDTO.setVol(vol);
+            broadcastDTO.setId(id);
+            broadcastService.updateBroadcastById(broadcastDTO);
+        } else if (broadcastById.getType() == 1) {  // 世邦
+            String url = BroadcastConfig.shiBangHost+"/php/setterminal.php";
+            int i = vol / 63 * 15;
+            HashMap<String, Object> stringStringHashMap = new HashMap<>();
+            stringStringHashMap.put("jsondata[tname]",broadcastById.getName());
+            stringStringHashMap.put("jsondata[tid]",broadcastById.getDevId());
+            stringStringHashMap.put("jsondata[tbcoutv]",i);
+            BroadcastUtil.sendBroadcastShiBang(url, stringStringHashMap, 5000);
+            BroadcastDTO broadcastDTO = new BroadcastDTO();
+            broadcastDTO.setVol(vol);
+            broadcastDTO.setId(id);
+            broadcastService.updateBroadcastById(broadcastDTO);
+        } else if (broadcastById.getType() == 3){  // 威西尔
+
+        } else if (broadcastById.getType() == 4){  // 迪士普
+
+        }else{  // 先科
+
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    /**
+     * 播放停止节目
+     * @param request
+     * @return 播放停止节目
+     */
+    @RequestMapping(value = "/itemPlay", method = RequestMethod.POST)
+    public BaseResult<?> itemPlay(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer id = request.getParameter("id") == null ? 0 : Integer.parseInt(request.getParameter("id"));
+        Integer status = request.getParameter("status") == null ? 0 : Integer.parseInt(request.getParameter("status"));
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+
+        BroadcastItemDTO broadcastItemDTOById = broadcastItemService.getBroadcastItemDTOById(id);
+        if (broadcastItemDTOById.getProType() == 1){
+            String[] broadcastId = broadcastItemDTOById.getBroadcastId().split(",");
+            if (status == 1){
+                for (String s:broadcastId) {
+                    BroadcastDTO broadcastDTO = new BroadcastDTO();
+                    broadcastDTO.setId(Integer.valueOf(s));
+                    broadcastDTO.setPolicyId(id);
+                    broadcastDTO.setItemId(id);
+                    broadcastService.updateBroadcastById(broadcastDTO);
+                }
+            }else {
+                for (String s:broadcastId) {
+                    BroadcastDTO broadcastDTO = new BroadcastDTO();
+                    broadcastDTO.setId(Integer.valueOf(s));
+                    broadcastDTO.setPolicyId(0);
+                    broadcastDTO.setItemId(0);
+                    broadcastService.updateBroadcastById(broadcastDTO);
+                }
+                if (!broadcastItemDTOById.getGuid().isEmpty() || !broadcastItemDTOById.getNumber().isEmpty()){
+                    String url = BroadcastConfig.shiBangHost+"/php/exeRealPlayFile.php";
+                    HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+                    stringObjectHashMap.put("jsondata[rtype]","stopbct");
+                    stringObjectHashMap.put("jsondata[param1]",broadcastItemDTOById.getNumber());
+                    stringObjectHashMap.put("jsondata[param2]",broadcastItemDTOById.getGuid());
+                    BroadcastUtil.sendBroadcastShiBang(url,stringObjectHashMap,50);
+                }
+            }
+            BroadcastItemDTO broadcastItemDTO = new BroadcastItemDTO();
+            broadcastItemDTO.setId(id);
+            broadcastItemDTO.setStatus(status);
+            broadcastItemService.updateCommonProgramData(broadcastItemDTO);
+
+            // 世邦
+            if (!broadcastItemDTOById.getTaskId().isEmpty()){
+                String[] split = broadcastItemDTOById.getTaskId().split(",");
+                for (String s:split) {
+                    HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+                    if (status == 1){
+                        stringObjectHashMap.put("jsondata[isDisable]",0);
+                    }else {
+                        String url = BroadcastConfig.shiBangHost+"/php/exetaskcmd.php";
+                        stringObjectHashMap.put("jsondata[taskCommand]","stoptaskinfo");
+                        stringObjectHashMap.put("jsondata[taskId]",s);
+                        BroadcastUtil.sendBroadcastShiBang(url,stringObjectHashMap,50);
+
+                        stringObjectHashMap = new HashMap<>();
+                        stringObjectHashMap.put("jsondata[isDisable]",1);
+                    }
+                    String url = BroadcastConfig.shiBangHost+"/php/exceptionable.php";
+                    stringObjectHashMap.put("jsondata[taskId]",s);
+                    String s1 = BroadcastUtil.sendBroadcastShiBang(url, stringObjectHashMap, 5000);
+                    if (s1.isEmpty()) return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version);
+                }
+            }
+
+            // 威西尔
+            if (!broadcastItemDTOById.getWeiErXiId().isEmpty()){
+
+            }
+            return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+        }
+
+        JSONObject seedCode = new JSONObject();
+        JSONArray proList = new JSONArray();
+        JSONArray proList2 = new JSONArray();
+        if (status == 0){
+            if (broadcastItemDTOById.getProId1() != null && broadcastItemDTOById.getProId1() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId1(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId1(),1));
+            }
+            if (broadcastItemDTOById.getProId2() != null && broadcastItemDTOById.getProId2() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId2(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId2(),1));
+            }
+            if (broadcastItemDTOById.getProId3() != null && broadcastItemDTOById.getProId3() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId3(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId3(),1));
+            }
+            if (broadcastItemDTOById.getProId4() != null && broadcastItemDTOById.getProId4() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId4(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId4(),1));
+            }
+            if (broadcastItemDTOById.getProId5() != null && broadcastItemDTOById.getProId5() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId5(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId5(),1));
+            }
+            if (broadcastItemDTOById.getProId6() != null && broadcastItemDTOById.getProId6() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId6(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId6(),1));
+            }
+            if (broadcastItemDTOById.getProId7() != null && broadcastItemDTOById.getProId7() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId7(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId7(),1));
+            }
+            if (broadcastItemDTOById.getProId8() != null && broadcastItemDTOById.getProId8() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId8(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId8(),1));
+            }
+            if (broadcastItemDTOById.getProId9() != null && broadcastItemDTOById.getProId9() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId9(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId9(),1));
+            }
+            if (broadcastItemDTOById.getProId10() != null && broadcastItemDTOById.getProId10() != 0){
+                proList.add(this.getProInfo(broadcastItemDTOById.getProId10(),0));
+                proList2.add(this.getProInfo(broadcastItemDTOById.getProId10(),1));
+            }
+            seedCode.put("type","cmd");
+        }else {
+            seedCode.put("type","stop");
+        }
+        List<BroadcastDTO> listByIds = broadcastService.getListByIds(broadcastItemDTOById.getBroadcastId());
+        JSONArray devList = new JSONArray();
+        ArrayList yuAddress = new ArrayList();
+        for (BroadcastDTO dto : listByIds) {
+            if (dto.getOnline() == 0) continue;
+            JSONObject jsonObject = new JSONObject();
+            if (dto.getType() == 0){
+//                jsonObject.put("address",dto.getAddress());
+//                jsonObject.put("proList",proList);
+//                jsonObject.put("playType",broadcastItemDTOById.getPlayType());
+//                jsonObject.put("vol",dto.getVol());
+//                devList.add(jsonObject);
+                yuAddress.add(dto.getAddress());
+            } else if (dto.getType() == 2) {
+                jsonObject.put("address",dto.getDevId());
+                jsonObject.put("name",dto.getAddress());
+                jsonObject.put("proList",proList2);
+                jsonObject.put("playType",broadcastItemDTOById.getPlayType());
+                jsonObject.put("devType",2);
+                jsonObject.put("vol",dto.getVol());
+                devList.add(jsonObject);
+            } else if (dto.getType() == 4) {
+                jsonObject.put("address",dto.getAddress());
+                jsonObject.put("proList",proList);
+                jsonObject.put("playType",broadcastItemDTOById.getPlayType());
+                jsonObject.put("devType",4);
+                jsonObject.put("vol",dto.getVol());
+                devList.add(jsonObject);
+            }
+        }
+        if (!yuAddress.isEmpty()){
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("address", StringUtils.join(yuAddress,","));
+            jsonObject.put("proList",proList);
+            jsonObject.put("playType",broadcastItemDTOById.getPlayType());
+            devList.add(jsonObject);
+        }
+        seedCode.put("devList",devList);
+        String string = seedCode.toJSONString();
+        BroadcastUtil.sendBroadcastByTcp(string,2000);
+        // 世邦
+        if (!broadcastItemDTOById.getTaskId().isEmpty()){
+            HashMap data2 = new HashMap<>();
+            String url;
+            if (broadcastItemDTOById.getProType() == 1){
+                url = BroadcastConfig.shiBangHost+"/php/exetaskenable.php";
+                if (status == 0){
+                    String url2 = BroadcastConfig.shiBangHost+"/php/exetaskcmd.php";
+                    data2.put("jsondata[taskCommand]","stoptaskinfo");
+                    data2.put("jsondata[taskId]",broadcastItemDTOById.getTaskId());
+                    BroadcastUtil.sendBroadcastShiBang(url2, data2, 5000);
+                    data2 = new HashMap<>();
+                    data2.put("jsondata[isDisable]",0);
+                    data2.put("jsondata[taskId]",broadcastItemDTOById.getTaskId());
+                }else {
+                    data2 = new HashMap<>();
+                    data2.put("jsondata[isDisable]",1);
+                    data2.put("jsondata[taskId]",broadcastItemDTOById.getTaskId());
+                }
+            }else {
+                url = BroadcastConfig.shiBangHost+"/php/exetaskcmd.php";
+                if (status == 0){
+                    data2 = new HashMap<>();
+                    data2.put("jsondata[taskCommand]","runtaskinfo");
+                    data2.put("jsondata[taskId]",broadcastItemDTOById.getTaskId());
+                }else {
+                    data2.put("jsondata[taskCommand]","stoptaskinfo");
+                    data2.put("jsondata[taskId]",broadcastItemDTOById.getTaskId());
+                }
+            }
+
+            String s1 = BroadcastUtil.sendBroadcastShiBang(url, data2, 5000);
+            if (s1.isEmpty()) return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version);
+        }
+
+        // 威西尔
+        if (!broadcastItemDTOById.getWeiErXiId().isEmpty()){
+
+        }
+        String[] split = broadcastItemDTOById.getBroadcastId().split(",");
+        for (String s:split) {
+            BroadcastDTO broadcastDTO = new BroadcastDTO();
+            broadcastDTO.setItemId(id);
+            broadcastDTO.setId(Integer.valueOf(s));
+            broadcastService.updateBroadcastById(broadcastDTO);
+        }
+        BroadcastItemDTO broadcastItemDTO = new BroadcastItemDTO();
+        broadcastItemDTO.setId(id);
+        broadcastItemDTO.setStatus(status);
+        broadcastItemService.updateCommonProgramData(broadcastItemDTO);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    private JSONObject getProInfo(Integer proId,int type){
+        BroadcastProListDTO oneById = broadcastProListService.getOneById(proId);
+        JSONObject pro = new JSONObject();
+        String s = oneById.getXianKeName().substring(0, oneById.getXianKeName().length() - 6) + oneById.getXianKeName().substring(oneById.getXianKeName().length() - 4);
+        if (type == 0){
+            pro.put("url",oneById.getUrl());
+            pro.put("time",oneById.getTime()+4);
+        }else {
+            pro.put("url",s);
+            pro.put("time",oneById.getTime());
+        }
+        pro.put("xianke_name",s);
+        pro.put("xianke_id",oneById.getXianKeId());
+        pro.put("disipu_id",oneById.getDiSiPuId());
+        pro.put("id",proId);
+        return pro;
+    }
+
+    /**
+     * 停止播放设备
+     * @param request
+     * @return 停止播放设备
+     */
+    @RequestMapping(value = "/devStop", method = RequestMethod.POST)
+    public BaseResult<?> devStop(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        Integer id = request.getParameter("id") == null ? 0 : Integer.parseInt(request.getParameter("id"));
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+
+        BroadcastDTO broadcastById = broadcastService.getBroadcastById(id);
+        if (broadcastById.getType() == 0){
+            String cmd = "{\"type\":\"stop\",\"devList\":[{\"address\":\""+broadcastById.getAddress()+"\"}]}";
+            BroadcastUtil.sendBroadcastByTcp(cmd,0);
+        } else if (broadcastById.getType() == 1) {
+            String url = BroadcastConfig.shiBangHost+"/php/exesdkcommand.php";
+            HashMap<String, Object> stringObjectHashMap = new HashMap<>();
+            stringObjectHashMap.put("jsondata[target]",broadcastById.getDevId());
+            stringObjectHashMap.put("jsondata[source]",broadcastById.getDevId());
+            stringObjectHashMap.put("jsondata[commandtype]",3);
+            stringObjectHashMap.put("jsondata[commandtype]",1);
+            stringObjectHashMap.put("jsondata[commandtype]",0);
+            String s = BroadcastUtil.sendBroadcastShiBang(url, stringObjectHashMap, 10000);
+            if (s == null || s.length() == 0) return toolUtils.response(InterfaceResultEnum.SEND_CMD_TIME_OUT,version);
+        } else if (broadcastById.getType() == 3) {
+
+        } else if (broadcastById.getType() == 4) {
+
+        } else {
+
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

+ 31 - 0
src/main/java/com/welampiot/controller/SmartLockController.java

@@ -3,7 +3,10 @@ package com.welampiot.controller;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.dto.SmartLockDevInfoDTO;
+import com.welampiot.dto.WifiDTO;
 import com.welampiot.service.SmartLockDevInfoService;
+import com.welampiot.service.WifiInfoLogService;
+import com.welampiot.service.WifiService;
 import com.welampiot.utils.ExcelUtil;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.vo.SmartLockDevInfoVO;
@@ -37,6 +40,9 @@ public class SmartLockController {
     @Autowired
     private ToolUtils toolUtils;
 
+    @Autowired
+    private WifiService wifiService;
+
     /**
      * 获取智能门锁列表
      * @param request 分页
@@ -110,4 +116,29 @@ public class SmartLockController {
         }
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,vo);
     }
+
+
+    /**
+     * 智能门锁远程开关
+     * @param request
+     * @return 智能门锁远程开关
+     */
+//    @RequestMapping(value = "/setStatus", method = RequestMethod.POST)
+//    public BaseResult<?> setStatus(HttpServletRequest request){
+//        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+//        Integer id = (Integer) toolUtils.getRequestContent(request,"id",1);
+//        Integer status = (Integer) toolUtils.getRequestContent(request,"status",1);
+//        if (id == null || id.intValue() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+//        SmartLockDevInfoDTO oneById = smartLockDevInfoService.getOneById(id);
+//        WifiDTO wifiDTO = new WifiDTO();
+//        wifiDTO.setLampPoleId(oneById.getLampPoleId());
+//        wifiDTO = wifiService.getDetailByDTO(wifiDTO);
+//        if (oneById.getFactory() == 0){ // 生久集团
+//
+//        }else if (oneById.getFactory() == 1){ // 云之声
+//
+//        }else {
+//
+//        }
+//    }
 }

+ 12 - 0
src/main/java/com/welampiot/controller/SuperPowerController.java

@@ -329,4 +329,16 @@ public class SuperPowerController {
         superPowerDevInfoLogVO.setTotalElectricArr(totalElectricList);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,superPowerDevInfoLogVO);
     }
+
+    /**
+     * 设置超级电源
+     * @param superPowerDevInfoDTO
+     * @return
+     */
+//    @RequestMapping(value = "setPowerOutInfo", method = RequestMethod.POST)
+//    public BaseResult setPowerOutInfo(SuperPowerDevInfoDTO superPowerDevInfoDTO){
+//        int version = superPowerDevInfoDTO.getVersion();
+//        Integer id = superPowerDevInfoDTO.getId();
+//        if (id == null || id.intValue() == 0) return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+//    }
 }

+ 108 - 0
src/main/java/com/welampiot/controller/VideoController.java

@@ -408,4 +408,112 @@ public class VideoController {
         videoPointInfoService.updateVideoPointStatus(videoPointInfoDTO);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
+    /**
+     * 云台控制
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/yunStart", method = RequestMethod.POST)
+    public BaseResult yunStart(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer direction = (Integer) toolUtils.getRequestContent(request,"direction",1);
+        String deviceSerial = (String) toolUtils.getRequestContent(request,"deviceSerial",2);
+
+        if (deviceSerial.length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        String requestData = "{\"moveSpeed\":130,\"zoomSpeed\":130";
+        switch (direction){
+            case 0:
+                requestData += ",\"upDown\":1,\"leftRight\":0,\"inOut\":0";
+            case 1:
+                requestData += ",\"upDown\":2,\"leftRight\":0,\"inOut\":0";
+            case 2:
+                requestData += ",\"upDown\":0,\"leftRight\":1,\"inOut\":0";
+            case 3:
+                requestData += ",\"upDown\":0,\"leftRight\":2,\"inOut\":0";
+            case 4:
+                requestData += ",\"upDown\":1,\"leftRight\":1,\"inOut\":0";
+            case 5:
+                requestData += ",\"upDown\":2,\"leftRight\":1,\"inOut\":0";
+            case 6:
+                requestData += ",\"upDown\":1,\"leftRight\":2,\"inOut\":0";
+            case 7:
+                requestData += ",\"upDown\":2,\"leftRight\":2,\"inOut\":0";
+            case 8:
+                requestData += ",\"upDown\":0,\"leftRight\":0,\"inOut\":2";
+            case 9:
+                requestData += ",\"upDown\":0,\"leftRight\":0,\"inOut\":1";
+        }
+        requestData += "}";
+        VideoMonitorDTO oneByDevId = videoMonitorService.getOneByDevId(deviceSerial);
+        String url1 = Constant.GB_HOST_ADDRESS+"/api/ptz/"+oneByDevId.getGbAddress()+"/34020000001320000001";
+        WebUtils.requestPost(url1, requestData);
+        try {
+            Thread.sleep(500);
+        } catch (InterruptedException e) {
+//            throw new RuntimeException(e);
+        }
+        requestData = "{\"upDown\":0,\"leftRight\":0,\"inOut\":0,\"moveSpeed\":0,\"zoomSpeed\":0}";
+        WebUtils.requestPost(url1, requestData);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    /**
+     * 播放视屏监控
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/videoPlay", method = RequestMethod.POST)
+    public BaseResult videoPlay(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer id = (Integer) toolUtils.getRequestContent(request,"id",1);
+
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        VideoMonitorDTO oneById = videoMonitorService.getOneById(id);
+        String gbPlayAddress = VideoUtil.getGbPlayAddress(oneById.getGbAddress());
+        oneById.setHlsHd(gbPlayAddress);
+        oneById.setRtmp(gbPlayAddress);
+        oneById.setRtmp2(gbPlayAddress);
+        oneById.setRtmpHD2(gbPlayAddress);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,oneById);
+    }
+
+    /**
+     * 播放视屏监控
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/videoPlayAsy", method = RequestMethod.POST)
+    public BaseResult videoPlayAsy(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer id = (Integer) toolUtils.getRequestContent(request,"id",1);
+
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        VideoMonitorDTO oneById = videoMonitorService.getOneById(id);
+        String gbPlayAddress = VideoUtil.getGbPlayAddress(oneById.getGbAddress());
+        oneById.setHlsHd(gbPlayAddress);
+        oneById.setRtmp(gbPlayAddress);
+        oneById.setRtmp2(gbPlayAddress);
+        oneById.setRtmpHD2(gbPlayAddress);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,oneById);
+    }
+
+    /**
+     * 查看点位
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/viewPoint", method = RequestMethod.POST)
+    public BaseResult viewPoint(HttpServletRequest request){
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer id = (Integer) toolUtils.getRequestContent(request,"videoId",1);
+        Integer point = (Integer) toolUtils.getRequestContent(request,"point",1);
+
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        VideoMonitorDTO oneById = videoMonitorService.getOneById(id);
+        point = point + 1;
+        String url = Constant.GB_HOST_ADDRESS+"/api/postion/"+oneById.getGbAddress()+"/34020000001320000001";
+        String param = "{\"code\":2,\"postion\":"+point+"}";
+        WebUtils.requestPost(url, param);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

+ 4 - 0
src/main/java/com/welampiot/dao/BroadcastDao.java

@@ -4,7 +4,9 @@ import com.welampiot.dto.BroadcastDTO;
 import com.welampiot.dto.BroadcastItemDTO;
 import com.welampiot.dto.BroadcastProListDTO;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
 
+import java.lang.reflect.Array;
 import java.util.List;
 
 /**
@@ -40,4 +42,6 @@ public interface BroadcastDao {
     void updateLampPoleBroadcastData(BroadcastDTO dto);
 
     Integer checkBroadcastData(BroadcastDTO dto);
+    void updateBroadcastById(BroadcastDTO dto);
+    List<BroadcastDTO> getListByIds(@Param("ids")String ids);
 }

+ 8 - 0
src/main/java/com/welampiot/dao/BroadcastProListDao.java

@@ -0,0 +1,8 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.BroadcastProListDTO;
+import org.apache.ibatis.annotations.Param;
+
+public interface BroadcastProListDao {
+    BroadcastProListDTO getOneById(@Param("id")int id);
+}

+ 2 - 0
src/main/java/com/welampiot/dao/SmartLockDevInfoDao.java

@@ -1,6 +1,7 @@
 package com.welampiot.dao;
 
 import com.welampiot.dto.SmartLockDevInfoDTO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -17,4 +18,5 @@ public interface SmartLockDevInfoDao {
     List<SmartLockDevInfoDTO> getListBySmartLockDevInfoDTO(SmartLockDevInfoDTO dto);
 
     Integer getSmartLockTotalByDTO(SmartLockDevInfoDTO dto);
+    SmartLockDevInfoDTO getOneById(@Param("id") int id);
 }

+ 11 - 0
src/main/java/com/welampiot/dao/VideoGbInfoDao.java

@@ -0,0 +1,11 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.VideoGbInfoDTO;
+import org.apache.ibatis.annotations.Param;
+
+public interface VideoGbInfoDao {
+    VideoGbInfoDTO getOneByDevId(@Param("devId")String devId);
+    int getCountByDevId(@Param("devId")String devId);
+    void add(VideoGbInfoDTO dto);
+    void update(VideoGbInfoDTO dto);
+}

+ 1 - 1
src/main/java/com/welampiot/dao/VideoMonitorDao.java

@@ -29,7 +29,7 @@ public interface VideoMonitorDao {
 
     VideoMonitorDTO getOneByDbAddress(@Param("gbAddress") String gbAddress);
     void updateBackAddress(VideoMonitorDTO dto);
-
+    VideoMonitorDTO getOneByDevId(@Param("devId")String devId);
     List<VideoMonitorDTO> getVideoListBySectionId(@Param("sectionId") Integer sectionId);
 
     List<VideoMonitorDTO> getVideoListByVO(VideoMonitorVO vo);

+ 1 - 1
src/main/java/com/welampiot/dto/BroadcastItemDTO.java

@@ -63,7 +63,7 @@ public class BroadcastItemDTO implements Serializable {
     private Integer playType;
 
     /** 世邦节目id **/
-    private Integer taskId;
+    private String taskId;
 
     /** 节目类型(0 普通节目,1 策略节目)**/
     private Integer proType;

+ 1 - 0
src/main/java/com/welampiot/dto/BroadcastProListDTO.java

@@ -38,6 +38,7 @@ public class BroadcastProListDTO implements Serializable {
 
     /** 先科素材id **/
     private String xianKeId;
+    private String diSiPuId;
 
     private Integer status;
 

+ 1 - 1
src/main/java/com/welampiot/dto/SmartLockDevInfoDTO.java

@@ -35,7 +35,7 @@ public class SmartLockDevInfoDTO implements Serializable {
     private Integer model;
 
     /** 厂家(0:生久集团 1:云之声 2 :江苏未来城市公共空间)**/
-    private String factory;
+    private int factory;
 
     /** 在线状态(0:离线,1:在线)**/
     private Integer online;

+ 1 - 0
src/main/java/com/welampiot/dto/SuperPowerDevInfoDTO.java

@@ -333,6 +333,7 @@ public class SuperPowerDevInfoDTO implements Serializable {
     private Integer online;
 
     private String keyword;
+    private int version;
 
     private static final long serialVersionUID = 1L;
 }

+ 12 - 0
src/main/java/com/welampiot/dto/VideoGbInfoDTO.java

@@ -0,0 +1,12 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+@Data
+public class VideoGbInfoDTO {
+    private Integer id;
+    private String videoAddress; // 视频监控地址
+    private String gbAddress; // 国标地址
+    private int type; // 设备类型(0 非红外,1带红外)
+    private String gbAddress2; // 红外地址
+}

+ 2 - 0
src/main/java/com/welampiot/dto/VideoMonitorDTO.java

@@ -68,4 +68,6 @@ public class VideoMonitorDTO {
     private String endTime;
     private Integer select;
     private String channelId;
+    private String rtmp2;
+    private String rtmpHD2;
 }

+ 9 - 0
src/main/java/com/welampiot/service/BroadcastProListService.java

@@ -0,0 +1,9 @@
+package com.welampiot.service;
+
+import com.welampiot.dao.BroadcastProListDao;
+import com.welampiot.dto.BroadcastProListDTO;
+import org.apache.ibatis.annotations.Param;
+
+public interface BroadcastProListService {
+    BroadcastProListDTO getOneById(int id);
+}

+ 5 - 0
src/main/java/com/welampiot/service/BroadcastService.java

@@ -4,6 +4,9 @@ import com.welampiot.dto.BroadcastDTO;
 import com.welampiot.vo.BroadcastItemVO;
 import com.welampiot.vo.BroadcastProListVO;
 import com.welampiot.vo.BroadcastVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * ClassName: BroadcastService
@@ -32,4 +35,6 @@ public interface BroadcastService {
     void updateLampPoleBroadcastData(BroadcastDTO dto);
 
     Integer checkBroadcastData(BroadcastDTO dto);
+    void updateBroadcastById(BroadcastDTO dto);
+    List<BroadcastDTO> getListByIds(@Param("ids")String ids);
 }

+ 2 - 0
src/main/java/com/welampiot/service/SmartLockDevInfoService.java

@@ -2,6 +2,7 @@ package com.welampiot.service;
 
 import com.welampiot.dto.SmartLockDevInfoDTO;
 import com.welampiot.vo.SmartLockDevInfoVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * ClassName: SmartLockDevInfoService
@@ -14,4 +15,5 @@ import com.welampiot.vo.SmartLockDevInfoVO;
  */
 public interface SmartLockDevInfoService {
     SmartLockDevInfoVO getListBySmartLockDevInfoDTO(SmartLockDevInfoDTO dto);
+    SmartLockDevInfoDTO getOneById(@Param("id") int id);
 }

+ 11 - 0
src/main/java/com/welampiot/service/VideoGbInfoService.java

@@ -0,0 +1,11 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.VideoGbInfoDTO;
+import org.apache.ibatis.annotations.Param;
+
+public interface VideoGbInfoService {
+    VideoGbInfoDTO getOneByDevId(@Param("devId")String devId);
+    int getCountByDevId(@Param("devId")String devId);
+    void add(VideoGbInfoDTO dto);
+    void update(VideoGbInfoDTO dto);
+}

+ 1 - 0
src/main/java/com/welampiot/service/VideoMonitorService.java

@@ -23,6 +23,7 @@ public interface VideoMonitorService {
     Integer getVideoCountByLampPoleId(Integer lampPoleId);
     VideoMonitorDTO getOneByDbAddress(@Param("gbAddress") String gbAddress);
     void updateBackAddress(VideoMonitorDTO dto);
+    VideoMonitorDTO getOneByDevId(@Param("devId")String devId);
     List<VideoMonitorDTO> getVideoListBySectionId(Integer sectionId);
     List<VideoMonitorDTO> getVideoListByVO(VideoMonitorVO vo);
     VideoMonitorDTO getVideoMonitorDetailsById(VideoMonitorVO vo);

+ 18 - 0
src/main/java/com/welampiot/service/impl/BroadcastProListServiceImpl.java

@@ -0,0 +1,18 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.BroadcastProListDao;
+import com.welampiot.dto.BroadcastProListDTO;
+import com.welampiot.service.BroadcastProListService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class BroadcastProListServiceImpl implements BroadcastProListService {
+    @Autowired
+    private BroadcastProListDao broadcastProListDao;
+
+    @Override
+    public BroadcastProListDTO getOneById(int id) {
+        return broadcastProListDao.getOneById(id);
+    }
+}

+ 10 - 0
src/main/java/com/welampiot/service/impl/BroadcastServiceImpl.java

@@ -158,4 +158,14 @@ public class BroadcastServiceImpl implements BroadcastService {
     public Integer checkBroadcastData(BroadcastDTO dto) {
         return broadcastDao.checkBroadcastData(dto);
     }
+
+    @Override
+    public void updateBroadcastById(BroadcastDTO dto) {
+        broadcastDao.updateBroadcastById(dto);
+    }
+
+    @Override
+    public List<BroadcastDTO> getListByIds(String ids) {
+        return broadcastDao.getListByIds(ids);
+    }
 }

+ 5 - 0
src/main/java/com/welampiot/service/impl/SmartLockDevInfoServiceImpl.java

@@ -117,4 +117,9 @@ public class SmartLockDevInfoServiceImpl implements SmartLockDevInfoService {
         vo.setList(list);
         return vo;
     }
+
+    @Override
+    public SmartLockDevInfoDTO getOneById(int id) {
+        return smartLockDevInfoDao.getOneById(id);
+    }
 }

+ 32 - 0
src/main/java/com/welampiot/service/impl/VideoGbInfoServiceImpl.java

@@ -0,0 +1,32 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.VideoGbInfoDao;
+import com.welampiot.dto.VideoGbInfoDTO;
+import com.welampiot.service.VideoGbInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class VideoGbInfoServiceImpl implements VideoGbInfoService {
+    @Autowired
+    private VideoGbInfoDao videoGbInfoDao;
+    @Override
+    public VideoGbInfoDTO getOneByDevId(String devId) {
+        return videoGbInfoDao.getOneByDevId(devId);
+    }
+
+    @Override
+    public int getCountByDevId(String devId) {
+        return videoGbInfoDao.getCountByDevId(devId);
+    }
+
+    @Override
+    public void add(VideoGbInfoDTO dto) {
+        videoGbInfoDao.add(dto);
+    }
+
+    @Override
+    public void update(VideoGbInfoDTO dto) {
+        videoGbInfoDao.update(dto);
+    }
+}

+ 5 - 0
src/main/java/com/welampiot/service/impl/VideoMonitorServiceImpl.java

@@ -124,4 +124,9 @@ public class VideoMonitorServiceImpl implements VideoMonitorService {
     public Integer checkVideoDevId(VideoMonitorDTO dto) {
         return videoMonitorDao.checkVideoDevId(dto);
     }
+
+    @Override
+    public VideoMonitorDTO getOneByDevId(String devId) {
+        return videoMonitorDao.getOneByDevId(devId);
+    }
 }

+ 133 - 0
src/main/java/com/welampiot/utils/BroadcastUtil.java

@@ -0,0 +1,133 @@
+package com.welampiot.utils;
+
+import com.welampiot.configuration.BroadcastConfig;
+import com.welampiot.configuration.ScreenConfig;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ConnectException;
+import java.net.Socket;
+import java.util.Map;
+import java.util.Set;
+
+public class BroadcastUtil {
+    /**
+     * 小播鼠音柱发送指令
+     * @param msg 指令信息
+     * @param timeout 指令超时时间
+     * @return  指令返回信息
+     */
+    public static String sendBroadcastXiaoBoshu(String msg,int timeout){
+        try {
+            //创建客户端的Socket对象
+            Socket socket = new Socket(BroadcastConfig.xiaoBoShuHost, BroadcastConfig.xiaoBoShuPort);
+            socket.setSoTimeout(timeout);
+
+            //获取输出流,写数据
+            OutputStream outputStream = socket.getOutputStream();
+            outputStream.write(msg.getBytes());
+
+            //接收服务器的反馈
+            InputStream inputStream = socket.getInputStream();
+            byte[] bys = new byte[1024];
+            int len = inputStream.read(bys);
+            String s = new String(bys, 0, len);
+            //释放资源
+            socket.close();
+            return s;
+        }
+        catch (ConnectException e4) {
+        }
+        catch (Exception e5) {
+        }
+        return "";
+    }
+
+    /**
+     * 世邦音柱发送指令
+     * @param msg 指令信息
+     * @param timeout 指令超时时间 毫秒
+     * @return  指令返回信息
+     */
+    public static String sendBroadcastShiBang(String url,Map msg, int timeout){
+
+        HttpClient httpClient = HttpClients.createDefault();
+        HttpPost httpPost = new HttpPost(url);
+
+        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(1000).setSocketTimeout(timeout).build();
+        httpPost.setConfig(requestConfig);
+
+        // 创建一个multipart实体构建器
+        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+
+        // 添加表单字段
+        Set set = msg.keySet();
+        for (Object o :set) {
+            Object o1 = msg.get(o);
+            builder.addTextBody((String) o, (String) o1);
+        }
+
+        // 添加文件字段
+//        File file = new File("path/to/file.txt");
+//        FileBody fileBody = new FileBody(file);
+//        builder.addPart("file", fileBody);
+
+        // 构建请求实体
+        HttpEntity httpEntity = builder.build();
+        httpPost.setEntity(httpEntity);
+
+        try {
+            // 发送请求
+            HttpResponse response = httpClient.execute(httpPost);
+
+            // 处理响应
+            HttpEntity entity = response.getEntity();
+            // 使用EntityUtils工具类将HttpEntity转换为字符串
+            return EntityUtils.toString(entity);
+        } catch (IOException e) {
+//            e.printStackTrace();
+        }
+        return "";
+    }
+
+    /**
+     * 音柱tcp指令
+     * @param msg 指令信息
+     * @param timeout 指令超时时间
+     * @return  指令返回信息
+     */
+    public static String sendBroadcastByTcp(String msg,int timeout){
+        try {
+            //创建客户端的Socket对象
+            Socket socket = new Socket(BroadcastConfig.broadcastTcpHost, BroadcastConfig.broadcastTcpPort);
+            socket.setSoTimeout(timeout);
+
+            //获取输出流,写数据
+            OutputStream outputStream = socket.getOutputStream();
+            outputStream.write(msg.getBytes());
+
+            //接收服务器的反馈
+            InputStream inputStream = socket.getInputStream();
+            byte[] bys = new byte[1024];
+            int len = inputStream.read(bys);
+            String s = new String(bys, 0, len);
+            //释放资源
+            socket.close();
+            return s;
+        }
+        catch (ConnectException e4) {
+        }
+        catch (Exception e5) {
+        }
+        return "";
+    }
+}

+ 65 - 4
src/main/java/com/welampiot/utils/VideoUtil.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.welampiot.common.Constant;
 import com.welampiot.dto.SystemConfigDto;
+import com.welampiot.dto.VideoGbInfoDTO;
 import com.welampiot.dto.VideoMonitorDTO;
 import com.welampiot.service.SystemConfigService;
+import com.welampiot.service.VideoGbInfoService;
 import com.welampiot.service.VideoMonitorService;
 
 /**
@@ -65,7 +67,7 @@ public class VideoUtil {
         String s = WebUtils.requestGet(url);
 
         String s2 = "00000000" + Integer.toString(videoSrc);
-        String gbId = s2.substring(-8);
+        String gbId = s2.substring(s2.length()-8);
 
         JSONObject jsonObject = JSON.parseObject(s);
         JSONArray data = (JSONArray)jsonObject.get("data");
@@ -129,7 +131,7 @@ public class VideoUtil {
         String s = WebUtils.requestGet(url);
 
         String s2 = "00000000" + Integer.toString(videoSrc);
-        String gbId = s2.substring(-8);
+        String gbId = s2.substring(s2.length()-8);
 
         JSONObject jsonObject = JSON.parseObject(s);
         JSONArray data = (JSONArray)jsonObject.get("data");
@@ -177,9 +179,9 @@ public class VideoUtil {
         Boolean back = false;
         String url = Constant.ZK_HOST_ADDRESS+"/index/api/getMediaList?secret=weclouds123";
         String s = WebUtils.requestGet(url);
-        String s4 = channel.substring(-3) + gbAddress.substring(-4);
+        String s4 = channel.substring(channel.length()-3) + gbAddress.substring(gbAddress.length()-4);
         String s2 = "00000000" + Integer.toHexString(Integer.parseInt(s4));
-        String gbId = s2.substring(-8);
+        String gbId = s2.substring(s2.length()-8);
 
         JSONObject jsonObject = JSON.parseObject(s);
         JSONArray data = (JSONArray)jsonObject.get("data");
@@ -202,4 +204,63 @@ public class VideoUtil {
 
         return Constant.GB_PLAY_HOST_ADDRESS+"/gb3/rtp/"+gbId.toUpperCase()+".live.mp4";
     }
+
+    /**
+     * 获取国标摄像头播放地址
+     * @param gbAddress 摄像头国标地址
+     * @return 返回视频播放地址
+     */
+    public  static String getGbPlayAddress(String gbAddress){
+        Boolean back = false;
+        String url = Constant.ZK_HOST_ADDRESS+"/index/api/getMediaList?secret=weclouds123";
+        String s = WebUtils.requestGet(url);
+        String s4 = gbAddress.substring(gbAddress.length()-7);;
+        String s2 = "00000000" + Integer.toHexString(Integer.parseInt(s4));
+        String gbId = s2.substring(s2.length()-8);
+
+        JSONObject jsonObject = JSON.parseObject(s);
+        JSONArray data = (JSONArray)jsonObject.get("data");
+        Boolean flag = true;
+        if (data != null){
+            for (Object j: data) {
+                JSONObject j1 = (JSONObject) j;
+                String stream = (String) j1.get("stream");
+                if (stream.equalsIgnoreCase(gbId)){
+                    flag = false;
+                }
+            }
+        }
+
+        if (flag){
+            int i = Integer.parseInt(s4);
+            url = Constant.GB_HOST_ADDRESS+"/api/play/"+gbAddress+"/"+gbAddress+"/"+i;
+            WebUtils.requestGet(url);
+        }
+
+        return Constant.GB_PLAY_HOST_ADDRESS+"/gb3/rtp/"+gbId.toUpperCase()+".live.mp4";
+    }
+
+    /**
+     * 通过摄像头序列号获取设备国标地址
+     * @param devId 国标地址
+     * @param videoGbInfoService
+     * @return
+     */
+    public static String getGbAddressByDevId(String devId, VideoGbInfoService videoGbInfoService){
+        int countByDevId = videoGbInfoService.getCountByDevId(devId);
+        if (countByDevId == 0){
+            VideoGbInfoDTO videoGbInfoDTO = new VideoGbInfoDTO();
+            videoGbInfoDTO.setVideoAddress(devId);
+            videoGbInfoService.add(videoGbInfoDTO);
+            Integer id = videoGbInfoDTO.getId();
+            String gbAddress = "0000000"+id;
+            gbAddress = "3402000000132"+gbAddress.substring(gbAddress.length()-7);
+            videoGbInfoDTO.setGbAddress(gbAddress);
+            videoGbInfoService.update(videoGbInfoDTO);
+            return gbAddress;
+        }else {
+            VideoGbInfoDTO oneByDevId = videoGbInfoService.getOneByDevId(devId);
+            return oneByDevId.getGbAddress();
+        }
+    }
 }

+ 14 - 2
src/main/resources/mapper/BroadcastItemMapper.xml

@@ -87,8 +87,12 @@
         update
             broadcast_item b
         set
+        <if test="broadcastId != null and broadcastId != 0">
             b.broadcastId = #{broadcastId},
+        </if>
+        <if test="name != null and name != 0">
             b.name = #{name},
+        </if>
         <if test="proId1 != null and proId1 != 0">
             b.proId1 = #{proId1},
         </if>
@@ -122,8 +126,16 @@
         <if test="policyType != null and policyType != 0">
             b.policyType = #{policyType},
         </if>
+        <if test="playType != null and playType != 0">
             b.playType = #{playType},
-            b.proType = #{proType}
+        </if>
+        <if test="proType != null and proType != 0">
+            b.proType = #{proType},
+        </if>
+        <if test="status != null">
+            b.status = #{status},
+        </if>
+            b.id = #{id}
         where
             b.id = #{id}
     </update>
@@ -132,7 +144,7 @@
         select b.id, b.broadcastId,b.`name`, b.userId,
                b.proId1, b.proId2, b.proId3, b.proId4, b.proId5,
                b.proId6, b.proId7, b.proId8, b.proId9, b.proId10,
-               b.playType,b.proType,b.policyType,b.createTime
+               b.playType,b.proType,b.policyType,b.createTime,b.taskId,b.taskId2,b.xiankeId as xianKeId,b.guid as guid,b.number,b.weierxiId as weiErXiId
         from broadcast_item b
         where b.id = #{id}
     </select>

+ 17 - 2
src/main/resources/mapper/BroadcastMapper.xml

@@ -80,7 +80,7 @@
     </delete>
 
     <select id="getBroadcastById" resultType="BroadcastDTO">
-        select b.lamp_pole_id,lp.sectionid as sectionId
+        select b.lamp_pole_id as lampPoleId,lp.sectionid as sectionId,b.address,b.type,b.dev_id as devId,b.name,
         from broadcast b
         left join lamp_pole lp on lp.id = b.lamp_pole_id
         left join section s on lp.sectionid = s.id
@@ -136,5 +136,20 @@
             and e.id = #{id}
         </if>
     </update>
-    
+    <update id="updateBroadcastById" parameterType="BroadcastDTO">
+        update
+        broadcast e
+        set
+        <if test="vol != null and vol != ''">e.vol = #{vol},</if>
+        <if test="policyId != null and policyId != ''">e.policy_id = #{policyId},</if>
+        <if test="itemId != null and itemId != ''">e.itemId = #{itemId},</if>
+        e.id = #{id}
+        where e.id = #{id}
+    </update>
+
+    <select id="getListByIds" resultType="com.welampiot.dto.BroadcastDTO" parameterType="String">
+        select address,online,dev_id as devId,type,vol
+        from broadcast b
+        where id in (#{ids})
+    </select>
 </mapper>

+ 9 - 0
src/main/resources/mapper/BroadcastProListMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.BroadcastProListDao">
+    <select id="getOneById" resultType="BroadcastProListDTO" parameterType="int">
+        select url,time,xianke_name as xianKeName,xianke_id as xianKeId,disipu_id as diSiPuId
+        from broadcast_pro_list
+        where id = #{id}
+    </select>
+</mapper>

+ 5 - 1
src/main/resources/mapper/SmartLockDevInfoMapper.xml

@@ -62,5 +62,9 @@
             </foreach>
         </if>
     </select>
-
+    <select id="getOneById" resultType="com.welampiot.dto.SmartLockDevInfoDTO" parameterType="int">
+        select serial_port as serialPort,address,id,factory,updatetime as updateTime,accessToken,lamp_pole_id as lampPoleId
+        from smart_lock_dev_info
+        where id = #{id}
+    </select>
 </mapper>

+ 26 - 0
src/main/resources/mapper/VideoGbInfoMapper.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.welampiot.dao.VideoGbInfoDao">
+    <select id="getOneByDevId" resultType="com.welampiot.dto.VideoGbInfoDTO" parameterType="String">
+        select id,gb_address as gbAddress
+        from video_gb_info where video_address=#{devId}
+    </select>
+
+    <select id="getCountByDevId" resultType="int" parameterType="String">
+        select count(*)
+        from video_gb_info where video_address=#{devId}
+    </select>
+
+    <insert id="add" parameterType="com.welampiot.dto.VideoGbInfoDTO" keyProperty="id" useGeneratedKeys="true">
+        insert into video_gb_info(video_address) values(#{videoAddress})
+    </insert>
+
+    <update id="update" parameterType="com.welampiot.dto.VideoGbInfoDTO">
+        update
+        video_gb_info
+        set
+        gb_address = #{gbAddress}
+        where
+        id = #{id}
+    </update>
+</mapper>

+ 7 - 1
src/main/resources/mapper/VideoMonitorMapper.xml

@@ -56,7 +56,7 @@
     </update>
 
     <select id="getOneById" resultType="com.welampiot.dto.VideoMonitorDTO" parameterType="int">
-        select a.gb_address as gbAddress,a.netStatus from video_monitor a
+        select a.gb_address as gbAddress,a.netStatus,id,name,status,deviceType,longitude,latitude,devid as devId,password from video_monitor a
         where a.id = #{id}
     </select>
 
@@ -248,6 +248,11 @@
             limit #{limit},#{offset}
         </if>
     </select>
+    <select id="getOneByDevId" resultType="VideoMonitorDTO">
+        select devid as devId,channel,deviceType,gb_address as gbAddress,net_type as netType,type
+        from video_monitor
+        where devid = #{devId}
+    </select>
 
     <select id="getVideoMonitorDetailsById" resultType="VideoMonitorDTO">
         select
@@ -375,4 +380,5 @@
         </if>
     </select>
 
+
 </mapper>