SysCameraServiceImpl.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. package com.huimv.admin.service.impl;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.huimv.admin.common.utils.Result;
  9. import com.huimv.admin.common.utils.ResultCode;
  10. import com.huimv.admin.entity.SysCamera;
  11. import com.huimv.admin.entity.SysCameraBrand;
  12. import com.huimv.admin.entity.vo.*;
  13. import com.huimv.admin.mapper.SysCameraAreaMapper;
  14. import com.huimv.admin.mapper.SysCameraBrandMapper;
  15. import com.huimv.admin.mapper.SysCameraMapper;
  16. import com.huimv.admin.service.ISysCameraService;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Service;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. /**
  22. * <p>
  23. * 服务实现类
  24. * </p>
  25. *
  26. * @author author
  27. * @since 2023-06-01
  28. */
  29. @Service
  30. public class SysCameraServiceImpl extends ServiceImpl<SysCameraMapper, SysCamera> implements ISysCameraService {
  31. @Autowired
  32. private SysCameraMapper cameraBaseMapper;
  33. @Autowired
  34. private SysCameraAreaMapper cameraAreaMapper;
  35. @Autowired
  36. private SysCameraBrandMapper cameraBrandMapper;
  37. // @Autowired
  38. // private BaseScreenCameraAccountMapper cameraAccountMapper;
  39. @Override
  40. public Result listPage(CameraListVo cameraListVo) {
  41. Integer current = cameraListVo.getCurrent();
  42. String strchStr = cameraListVo.getStrchStr();
  43. Integer size = cameraListVo.getSize();
  44. Integer areaId = cameraListVo.getAreaId();
  45. Integer brandId = cameraListVo.getBrandId();
  46. Integer sort = cameraListVo.getSort();
  47. Integer farmId = cameraListVo.getFarmId();
  48. Integer isOnline = cameraListVo.getIsOnline();
  49. QueryWrapper<SysCamera> wrapper = new QueryWrapper<>();
  50. if (StringUtils.isNotBlank(strchStr)) {
  51. wrapper.and(i -> i.like("camera_name", strchStr)
  52. .or().like("camera_ip", strchStr));
  53. }
  54. if (farmId != null) {
  55. wrapper.eq("farm_id", farmId);
  56. }
  57. if (areaId != null) {
  58. wrapper.eq("area_id", areaId);
  59. }
  60. if (brandId != null) {
  61. wrapper.eq("brand_id", brandId);
  62. }
  63. if (isOnline != null) {
  64. wrapper.eq("is_online", isOnline);
  65. }
  66. if (sort == null) {
  67. wrapper.orderByDesc("id");
  68. } else if (sort == 1) {
  69. wrapper.orderByDesc("sort");
  70. } else {
  71. wrapper.orderByAsc("sort");
  72. }
  73. // wrapper.orderByDesc("id");
  74. return new Result(ResultCode.SUCCESS, page(new Page<>(current, size), wrapper));
  75. }
  76. @Override
  77. public List getCameraDetails(CameraListsVo cameraListsVo) throws InterruptedException {
  78. List<Integer> cameraIds = cameraListsVo.getCameraIds();
  79. CameraListVo cameraListVo = new CameraListsVo();
  80. cameraListVo.setCurrent(1);
  81. cameraListVo.setSize(10000);
  82. cameraListVo.setStrchStr(cameraListsVo.getStrchStr());
  83. cameraListVo.setAreaId(cameraListsVo.getAreaId());
  84. cameraListVo.setBrandId(cameraListsVo.getBrandId());
  85. cameraListVo.setSort(cameraListsVo.getSort());
  86. if (cameraIds == null || cameraIds.size() == 0) {
  87. return null;
  88. }
  89. List cameraDetailsList = new ArrayList();
  90. IPage<SysCamera> page = (IPage<SysCamera>) this.listPage(cameraListVo).getData();
  91. List<SysCamera> list = page.getRecords();
  92. int i = 0;
  93. final String farmAppPort = "8081";
  94. final String farmVideoApp = "/appleVideo/play?";
  95. final String hlsMediaPort = "85";
  96. for (Integer cameraId : cameraIds) {
  97. for (SysCamera camera : list) {
  98. if (cameraId.equals(camera.getId())) {
  99. String cameraAccount = camera.getAccount();
  100. String cameraPassword = camera.getPassword();
  101. String camerIp = camera.getCameraIp();
  102. String cameraName = camera.getCameraName();
  103. Integer areaId = camera.getAreaId();
  104. String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
  105. String rtsp;
  106. SysCameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
  107. Integer type = cameraBrand.getStreamType();
  108. if (type == 0) {
  109. rtsp = cameraBrand.getMainStream();
  110. } else {
  111. rtsp = cameraBrand.getAssistStream();
  112. }
  113. CameraVo cameraVo = new CameraVo();
  114. cameraVo.setId(camera.getId());
  115. cameraVo.setAreaId(areaId);
  116. cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp /*+ "/h265/ch1/main/av_stream"*/);
  117. cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
  118. cameraVo.setCameraName(cameraName);
  119. cameraVo.setHttpUrl(handleHlsHttpUrl(url,cameraAccount,cameraPassword,camerIp,farmAppPort,farmVideoApp,hlsMediaPort));
  120. if (i > 0) {
  121. cameraVo.setLastId(list.get(i - 1).getId());
  122. }
  123. if (i < list.size() - 1) {
  124. cameraVo.setNextId(list.get(i + 1).getId());
  125. }
  126. cameraDetailsList.add(cameraVo);
  127. }
  128. }
  129. i++;
  130. }
  131. return cameraDetailsList;
  132. }
  133. //构造HlsHttp地址
  134. private String handleHlsHttpUrl(String url, String cameraAccount, String cameraPassword, String camerIp, String farmAppPort, String farmVideoApp, String hlsMediaPort) {
  135. url = url.substring(0, url.indexOf(":"));
  136. url = "http://" + url;
  137. //return url+":"+farmAppPort+farmVideoApp+"url="+cameraAccount + ":" + cameraPassword + "@" + camerIp+"&name="+"&dt=3000&targetUrl="+url+":"+hlsMediaPort;
  138. return url + ":" + farmAppPort + farmVideoApp + "url=" + cameraAccount + ":" + cameraPassword + "@" + camerIp + "&dt=3000&targetUrl=" + url + ":" + hlsMediaPort;
  139. }
  140. @Override
  141. public Result add(SysCamera camera) {
  142. Integer areaId = camera.getAreaId();
  143. Integer brandId = camera.getBrandId();
  144. int brandName = this.count(new QueryWrapper<SysCamera>().eq("camera_name", camera.getCameraName()).eq("farm_id", camera.getFarmId()));
  145. if (brandName > 0) {
  146. return new Result(10001, "摄像头名称重复", false);
  147. }
  148. if (areaId != null) {
  149. camera.setAreaName(cameraAreaMapper.selectById(areaId).getAreaName());
  150. }
  151. if (brandId != null) {
  152. camera.setBrandName(cameraBrandMapper.selectById(brandId).getBrandName());
  153. }
  154. this.save(camera);
  155. return new Result(10000, "添加成功", true);
  156. }
  157. @Override
  158. public Result updates(SysCamera camera) {
  159. Integer areaId = camera.getAreaId();
  160. Integer brandId = camera.getBrandId();
  161. this.updateById(camera);
  162. int brandName = this.count(new QueryWrapper<SysCamera>().eq("camera_name", camera.getCameraName()));
  163. if (brandName > 1) {
  164. return new Result(10001, "摄像头名称重复", false);
  165. }
  166. if (areaId != null) {
  167. camera.setAreaName(cameraAreaMapper.selectById(areaId).getAreaName());
  168. }
  169. if (brandId != null) {
  170. camera.setBrandName(cameraBrandMapper.selectById(brandId).getBrandName());
  171. }
  172. this.updateById(camera);
  173. return new Result(10000, "修改成功", true);
  174. }
  175. // @Override
  176. // public Result initCamera(Integer farmId, Integer userId) {
  177. // BaseScreenCameraAccount cameraAccount = cameraAccountMapper.selectOne(new QueryWrapper<BaseScreenCameraAccount>().eq("farm_id", farmId).eq("account_id", userId));
  178. // Integer cameraId;
  179. // if (ObjectUtil.isEmpty(cameraAccount)) {
  180. // cameraId = this.getOne(new QueryWrapper<SysCamera>().eq("run_status", 1).eq("farm_id", farmId).last("limit 1")).getId();
  181. // } else {
  182. // cameraId = cameraAccount.getCameraId();
  183. // }
  184. //
  185. //
  186. // SysCamera camera = this.getById(cameraId);
  187. // if (camera.getRunStatus() == 0) {
  188. // return new Result(10001, "该摄像头已经被禁用", false);
  189. // }
  190. //
  191. // return new Result(ResultCode.SUCCESS, getCameraVo(camera));
  192. // }
  193. public CameraVo getCameraVo(SysCamera camera) {
  194. String cameraAccount = camera.getAccount();
  195. String cameraPassword = camera.getPassword();
  196. String camerIp = camera.getCameraIp();
  197. String cameraName = camera.getCameraName();
  198. Integer areaId = camera.getAreaId();
  199. String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
  200. String rtsp;
  201. SysCameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
  202. Integer type = cameraBrand.getStreamType();
  203. if (type == 0) {
  204. rtsp = cameraBrand.getMainStream();
  205. } else {
  206. rtsp = cameraBrand.getAssistStream();
  207. }
  208. CameraVo cameraVo = new CameraVo();
  209. cameraVo.setAreaId(areaId);
  210. cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp);
  211. cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
  212. cameraVo.setCameraName(cameraName);
  213. return cameraVo;
  214. }
  215. }