BaseCameraManagementServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. package com.ozs.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.baomidou.mybatisplus.generator.config.IFileCreate;
  7. import com.github.pagehelper.PageHelper;
  8. import com.ozs.common.core.domain.AjaxResult;
  9. import com.ozs.common.exception.ServiceException;
  10. import com.ozs.common.utils.StringUtils;
  11. import com.ozs.common.utils.bean.BeanUtils;
  12. import com.ozs.common.utils.bean.BeanValidators;
  13. import com.ozs.entity.*;
  14. import com.ozs.entity.vo.BaseCameraManagementHomeVo;
  15. import com.ozs.entity.vo.BaseCameraManagementVo;
  16. import com.ozs.entity.vo.BaseCameraManagementVos;
  17. import com.ozs.entity.vo.BaseVehicleTerminalDto;
  18. import com.ozs.mapper.*;
  19. import com.ozs.service.BaseCameraManagementService;
  20. import com.ozs.service.BaseRailwayManagementService;
  21. import com.ozs.service.BaseUserService;
  22. import com.ozs.utils.CameraUtil;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.util.ObjectUtils;
  26. import javax.annotation.Resource;
  27. import javax.validation.Validator;
  28. import java.math.BigDecimal;
  29. import java.math.RoundingMode;
  30. import java.util.*;
  31. /**
  32. * <p>
  33. * 相机台账管理表 服务实现类
  34. * </p>
  35. *
  36. * @author ozs
  37. * @since 2023-02-17
  38. */
  39. @Service
  40. public class BaseCameraManagementServiceImpl extends ServiceImpl<BaseCameraManagementMapper, BaseCameraManagement> implements BaseCameraManagementService {
  41. public static final String PATTERN = "^(\\d+.\\d{1,3}|\\d+)$";
  42. @Autowired
  43. protected Validator validator;
  44. @Autowired
  45. BaseDeviceDynamicManagementMapper baseDeviceDynamicManagementMapper;
  46. @Resource
  47. private BaseCameraManagementMapper baseCameraManagementMapper;
  48. @Resource
  49. private BaseUserService baseUserService;
  50. @Resource
  51. private BaseUserMapper baseUserMapper;
  52. @Resource
  53. private MsgAlarmMapper msgAlarmMapper;
  54. @Autowired
  55. private BaseDeptMapper baseDeptMapper;
  56. @Autowired
  57. private BaseRailwayManagementService baseRailwayManagementService;
  58. @Autowired
  59. private SkynetHeartbeatLogMapper skynetHeartbeatLogMapper;
  60. /**
  61. * 相机台账管理表导入
  62. *
  63. * @param accountManageList 相机台账列表
  64. * @param updateSupport 是否更新支持,如果已存在,则进行更新数据
  65. * @return
  66. */
  67. @Override
  68. public String importBaseAccountManagement(List<BaseCameraManagementVos> accountManageList, boolean updateSupport, String userId) {
  69. if (StringUtils.isEmptySunhh(accountManageList) || accountManageList.size() == 0) {
  70. throw new ServiceException("导入相机台账列表信息不能为空!");
  71. }
  72. int successNum = 0;
  73. int failureNum = 0;
  74. StringBuilder successMsg = new StringBuilder();
  75. StringBuilder failureMsg = new StringBuilder();
  76. for (BaseCameraManagementVos cameraManagementVos : accountManageList) {
  77. try {
  78. BaseCameraManagement accountManagement = new BaseCameraManagement();
  79. BeanUtils.copyProperties(cameraManagementVos, accountManagement);
  80. // 判断相机编码是否存在
  81. LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
  82. if (!StringUtils.isEmptySunhh(accountManagement.getCameraCode())) {
  83. lw.eq(BaseCameraManagement::getCameraCode, accountManagement.getCameraCode());
  84. }
  85. BaseCameraManagement baseAccountManagement = baseCameraManagementMapper.selectOne(lw);
  86. if (StringUtils.isEmptySunhh(baseAccountManagement)) {
  87. BeanValidators.validateWithException(validator, accountManagement);
  88. accountManagement.setUpdateBy(userId);
  89. accountManagement.setCreateBy(userId);
  90. // Long deptId = baseDeptMapper.selectDeptByDeptName(accountManagement.getDeptName());
  91. // log.debug(accountManagement.getDeptName() + "主键id:" + deptId);
  92. // if (!ObjectUtils.isEmpty(deptId)) {
  93. // accountManagement.setDeptId(deptId);
  94. LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
  95. if (!StringUtils.isEmptySunhh(accountManagement.getRailwayName())) {
  96. queryWrapper.eq(BaseRailwayManagement::getRailwayName, accountManagement.getRailwayName());
  97. }
  98. // List<BaseRailwayManagement> list = baseRailwayManagementService.list(queryWrapper);
  99. BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
  100. if (!StringUtils.isEmptySunhh(baseRailwayManagement)) {
  101. if (!accountManagement.getBeginMile().toString().matches(PATTERN) || !accountManagement.getInstallMile().toString().matches(PATTERN) || !accountManagement.getEndMile().toString().matches(PATTERN)) {
  102. failureNum++;
  103. failureMsg.append(failureNum + "、相机编码为: " + accountManagement.getCameraCode() + "的数据,里程位置填写格式不正确,请填写数字");
  104. } else {
  105. accountManagement.setRailwayCode(baseRailwayManagement.getRailwayCode());
  106. if (!StringUtils.isEmptySunhh(accountManagement.getBeginMileBD())) {
  107. if (!accountManagement.getBeginMileBD().toString().matches(PATTERN)) {
  108. failureNum++;
  109. String msg = failureNum + "、监控范围开始里程位置填写格式不正确";
  110. failureMsg.append(msg);
  111. log.error(msg);
  112. // return error("监控范围开始里程位置填写格式不正确");
  113. } else {
  114. BigDecimal begin = accountManagement.getBeginMileBD().setScale(3, RoundingMode.HALF_UP);
  115. // BigDecimal begin = BigDecimal.parseDouble(baseCameraManagement.getBeginMile().toString());
  116. accountManagement.setBeginMile(begin.multiply(new BigDecimal("1000")).intValue());
  117. }
  118. }
  119. if (!StringUtils.isEmptySunhh(accountManagement.getInstallMileBD())) {
  120. if (!accountManagement.getInstallMileBD().toString().matches(PATTERN)) {
  121. failureNum++;
  122. String msg = failureNum + "、监控相机安装里程位置填写格式不正确";
  123. failureMsg.append(msg);
  124. log.error(msg);
  125. // return error("监控相机安装里程位置填写格式不正确");
  126. } else {
  127. BigDecimal install = accountManagement.getInstallMileBD().setScale(3, RoundingMode.HALF_UP);
  128. // double install = Double.parseDouble(baseCameraManagement.getInstallMile().toString());
  129. accountManagement.setInstallMile(install.multiply(new BigDecimal("1000")).intValue());
  130. }
  131. }
  132. if (!StringUtils.isEmptySunhh(accountManagement.getInstallMileBD())) {
  133. if (!accountManagement.getInstallMileBD().toString().matches(PATTERN)) {
  134. failureNum++;
  135. String msg = failureNum + "、监控范围结束里程位置填写格式不正确";
  136. failureMsg.append(msg);
  137. log.error(msg);
  138. // return error("监控范围结束里程位置填写格式不正确");
  139. } else {
  140. BigDecimal end = accountManagement.getInstallMileBD().setScale(3, RoundingMode.HALF_UP);
  141. // double end = Double.parseDouble(baseCameraManagement.getEndMile().toString());
  142. accountManagement.setEndMile(end.multiply(new BigDecimal("1000")).intValue());
  143. }
  144. }
  145. // accountManagement.setInstallMile(accountManagement.getInstallMileBD() * 1000);
  146. // accountManagement.setEndMile(accountManagement.getEndMile() * 1000);
  147. // accountManagement.setBeginMile(accountManagement.getBeginMile() * 1000);
  148. if (accountManagement.getBeginMile() < accountManagement.getEndMile()) {
  149. baseCameraManagementMapper.insert(accountManagement);
  150. BaseDeviceDynamicManagement baseDeviceDynamicManagement = new BaseDeviceDynamicManagement();
  151. baseDeviceDynamicManagement.setCameraCode(accountManagement.getCameraCode());
  152. baseDeviceDynamicManagement.setUpdateBy(userId);
  153. baseDeviceDynamicManagement.setCreateBy(userId);
  154. baseDeviceDynamicManagementMapper.insert(baseDeviceDynamicManagement);
  155. successNum++;
  156. successMsg.append(successNum + "、相机编码 " + accountManagement.getCameraCode() + " 导入成功");
  157. } else {
  158. failureNum++;
  159. failureMsg.append(failureNum + "、相机编码为: " + accountManagement.getCameraCode() + "的数据,监控范围开始里程位置不能大于监控范围结束里程位置");
  160. }
  161. }
  162. } else {
  163. failureNum++;
  164. String msg = failureNum + "、相机所属线路名称 " + accountManagement.getRailwayName() + "不存在, 导入失败:";
  165. failureMsg.append(msg);
  166. log.error(msg);
  167. }
  168. // } else {
  169. // failureNum++;
  170. // String msg = failureNum + "、相机所属工务段 " + accountManagement.getDeptName() + "不存在, 导入失败:";
  171. // failureMsg.append(msg);
  172. // log.error(msg);
  173. // }
  174. } else if (updateSupport) {
  175. BeanValidators.validateWithException(validator, accountManagement);
  176. accountManagement.setUpdateBy(userId);
  177. Long deptId = baseDeptMapper.selectDeptByDeptName(accountManagement.getDeptName());
  178. log.debug(accountManagement.getDeptName() + "主键id:" + deptId);
  179. // if (!ObjectUtils.isEmpty(deptId)) {
  180. accountManagement.setDeptId(deptId);
  181. baseCameraManagementMapper.update(accountManagement, lw);
  182. LambdaQueryWrapper<BaseDeviceDynamicManagement> wrapper = new LambdaQueryWrapper<BaseDeviceDynamicManagement>();
  183. if (!StringUtils.isEmptySunhh(baseAccountManagement.getCameraCode())) {
  184. wrapper.eq(BaseDeviceDynamicManagement::getCameraCode, baseAccountManagement.getCameraCode());
  185. }
  186. BaseDeviceDynamicManagement baseDeviceDynamicManagement = baseDeviceDynamicManagementMapper.selectOne(wrapper);
  187. baseDeviceDynamicManagement.setCameraCode(accountManagement.getCameraCode());
  188. baseDeviceDynamicManagement.setUpdateBy(userId);
  189. baseDeviceDynamicManagementMapper.updateById(baseDeviceDynamicManagement);
  190. successNum++;
  191. successMsg.append(successNum + "、相机编码 " + accountManagement.getCameraCode() + " 更新成功");
  192. // } else {
  193. // failureNum++;
  194. // String msg = failureNum + "、相机所属工务段 " + accountManagement.getDeptName() + "不存在, 导入失败:";
  195. // failureMsg.append(msg);
  196. // log.error(msg);
  197. // }
  198. } else {
  199. failureNum++;
  200. failureMsg.append(failureNum + "、相机编码 " + accountManagement.getCameraCode() + " 已存在");
  201. }
  202. } catch (Exception e) {
  203. String msg = null;
  204. failureNum++;
  205. if (ObjectUtils.isEmpty(cameraManagementVos)) {
  206. msg = "导入的文档格式不正确";
  207. } else {
  208. msg = failureNum + "、相机编码 " + cameraManagementVos.getCameraCode() + " 导入失败:";
  209. }
  210. failureMsg.append(msg);
  211. log.error(msg, e);
  212. }
  213. }
  214. if (failureNum > 0) {
  215. failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
  216. throw new ServiceException(failureMsg.toString());
  217. } else {
  218. successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条。");
  219. }
  220. return successMsg.toString();
  221. }
  222. /**
  223. * 获取相机列表+数据权限
  224. *
  225. * @return
  226. */
  227. @Override
  228. public List<BaseCameraManagementHomeVo> selectCameraAll(BaseCameraManagementVo baseCameraManagementVo) {
  229. // List<String> userIdList = getUserIds(userId);
  230. // LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
  231. // if (!StringUtils.isEmpty(userIdList)) {
  232. // lw.in(BaseCameraManagement::getCreateBy, userIdList);
  233. // }
  234. // List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementMapper.selectList(lw);
  235. List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementMapper.selectCameraManagementList(baseCameraManagementVo);
  236. List<BaseCameraManagementHomeVo> allListVo = BeanUtils.entityListToVOList(baseCameraManagementList, BaseCameraManagementHomeVo.class);
  237. for (BaseCameraManagementHomeVo baseCameraManagementHomeVo : allListVo) {
  238. Integer isRelease = msgAlarmMapper.selectCameraCode(baseCameraManagementHomeVo.getCameraCode());
  239. baseCameraManagementHomeVo.setIsRelease(isRelease != null ? isRelease : 1);
  240. }
  241. return allListVo;
  242. }
  243. /**
  244. * 根据当前登陆用户ID 查询当前用户数据权限
  245. *
  246. * @param userId
  247. * @return
  248. */
  249. /* public List<String> getUserIds(String userId) {
  250. BaseUser baseUser = baseUserService.getUser(userId);
  251. if (StringUtils.isNull(baseUser) || StringUtils.isNull(baseUser.getDataPermission())
  252. || StringUtils.isNull(baseUser.getDeptId())) {
  253. return null;
  254. }
  255. // 数据权限 1:本人;2:本部门;3:本部门及下级部门;4:本人及本级部门;5:本人及本部门及下级部门;6:全部
  256. Integer dataPermission = baseUser.getDataPermission();
  257. Long deptId = baseUser.getDeptId();
  258. Set<String> set = new HashSet<>();
  259. if (1 == dataPermission) {
  260. set = baseUserMapper.getUserIdList(userId);
  261. } else if (2 == dataPermission) {
  262. set = baseUserMapper.getUserIdByDeptId(deptId);
  263. } else if (3 == dataPermission) {
  264. // 获取部门数据
  265. List<Long> deptList = baseUserMapper.getDeptId(deptId);
  266. // 获取用户列表
  267. set = baseUserMapper.getUserIdByDeptIds(deptList);
  268. } else if (4 == dataPermission) {
  269. set = baseUserMapper.getUserIdByDeptIdAndUserId(userId, deptId);
  270. } else if (5 == dataPermission) {
  271. // 获取本人
  272. Set<String> setUser = baseUserMapper.getUserIdListBy5(userId);
  273. // 获取部门数据
  274. List<Long> deptList5 = baseUserMapper.getDeptId(deptId);
  275. // 获取用户列表
  276. Set<String> setUsers = baseUserMapper.getUserIdByDeptIdsBy5(deptList5);
  277. set.addAll(setUser);
  278. set.addAll(setUsers);
  279. } else if (6 == dataPermission) {
  280. set = baseUserMapper.getUserIdList6();
  281. }
  282. List<String> list = new ArrayList<>(set);
  283. return list;
  284. }*/
  285. /**
  286. * 根据当前登陆用户ID 查询当前用户数据权限
  287. *
  288. * @param userId
  289. * @return
  290. */
  291. @Override
  292. public List<String> getUserIdList(String userId) {
  293. BaseUser baseUser = baseUserService.getUser(userId);
  294. if (StringUtils.isNull(baseUser) || StringUtils.isNull(baseUser.getDataPermission())
  295. || StringUtils.isNull(baseUser.getDeptId())) {
  296. return null;
  297. }
  298. // 数据权限 1:本人;2:本部门;3:本部门及下级部门;4:本人及本级部门;5:本人及本部门及下级部门;6:全部
  299. Integer dataPermission = baseUser.getDataPermission();
  300. Long deptId = baseUser.getDeptId();
  301. Set<String> set = new HashSet<>();
  302. if (1 == dataPermission) {
  303. set = baseUserMapper.getUserIdList(userId);
  304. } else if (2 == dataPermission) {
  305. set = baseUserMapper.getUserIdByDeptId(deptId);
  306. } else if (3 == dataPermission) {
  307. // 获取部门数据
  308. List<Long> deptList = baseUserMapper.getDeptId(deptId);
  309. // 获取用户列表
  310. set = baseUserMapper.getUserIdByDeptIds(deptList);
  311. } else if (4 == dataPermission) {
  312. set = baseUserMapper.getUserIdByDeptIdAndUserId(userId, deptId);
  313. } else if (5 == dataPermission) {
  314. // 获取本人
  315. Set<String> setUser = baseUserMapper.getUserIdListBy5(userId);
  316. // 获取部门数据
  317. List<Long> deptList5 = baseUserMapper.getDeptId(deptId);
  318. // 获取用户列表
  319. Set<String> setUsers = baseUserMapper.getUserIdByDeptIdsBy5(deptList5);
  320. set.addAll(setUser);
  321. set.addAll(setUsers);
  322. } else if (6 == dataPermission) {
  323. set = baseUserMapper.getUserIdsList();
  324. }
  325. List<String> list = new ArrayList<>(set);
  326. return list;
  327. }
  328. @Override
  329. public IPage<BaseCameraManagement> queryPage(BaseCameraManagementVo baseCameraManagementVo) {
  330. int pageNum = Integer.parseInt(baseCameraManagementVo.getPageNum().toString());
  331. int pageSize = Integer.parseInt(baseCameraManagementVo.getPageSize().toString());
  332. com.github.pagehelper.Page<BaseCameraManagement> page = PageHelper.startPage(pageNum, pageSize)
  333. .doSelectPage(() -> baseCameraManagementMapper.selectCameraManagementList(baseCameraManagementVo));
  334. com.baomidou.mybatisplus.extension.plugins.pagination.Page<BaseCameraManagement> pageR =
  335. new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(pageNum, pageSize);
  336. pageR.setRecords(page.getResult());
  337. pageR.setTotal(page.getTotal());
  338. return pageR;
  339. }
  340. @Override
  341. public List<BaseCameraManagement> baseCameraManagementList(BaseCameraManagementVo baseCameraManagementVo) {
  342. return baseCameraManagementMapper.selectCameraManagementList(baseCameraManagementVo);
  343. }
  344. @Override
  345. public Map<String, Integer> getMessageStatisticsCamera() {
  346. LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<>();
  347. List<BaseCameraManagement> baseCameraManagements = baseCameraManagementMapper.selectList(lw);
  348. int online = 0;
  349. int offline = 0;
  350. for (BaseCameraManagement baseCameraManagement : baseCameraManagements) {
  351. if (!StringUtils.isEmptySunhh(baseCameraManagement) && !StringUtils.isEmptySunhh(baseCameraManagement.getCameraCode())) {
  352. SkynetHeartbeatLog skynetHeartbeatLog = baseCameraManagementMapper.selectSkynetHeartbeatLogByCameraCode(baseCameraManagement.getCameraCode());
  353. if (StringUtils.isEmptySunhh(skynetHeartbeatLog)) {
  354. offline++;
  355. baseCameraManagement.setOnline(1);
  356. } else {
  357. long timeNow = System.currentTimeMillis();
  358. long createTime = skynetHeartbeatLog.getCreateTime().getTime();
  359. long thereHourMillis = 60 * 60 * 1000 * 3;
  360. long timeNew = timeNow - thereHourMillis;
  361. if (timeNew <= createTime) {
  362. baseCameraManagement.setOnline(2);
  363. online++;
  364. } else {
  365. // baseCameraManagement.setOnline(1);
  366. offline++;
  367. }
  368. }
  369. baseCameraManagementMapper.updateById(baseCameraManagement);
  370. }
  371. }
  372. Map<String, Integer> map = new HashMap<>();
  373. map.put("countAllCamera", baseCameraManagements.size());
  374. map.put("online", online);
  375. map.put("offline", offline);
  376. return map;
  377. }
  378. @Override
  379. public AjaxResult nonContactAlarmCamera(String cameraCode) {
  380. List<BaseCameraManagement> list = new ArrayList<>();
  381. QueryWrapper<MsgAlarm> wrapper = new QueryWrapper<>();
  382. wrapper.eq("is_release", 2);
  383. List<MsgAlarm> msgAlarms = msgAlarmMapper.selectList(wrapper);
  384. if (!ObjectUtils.isEmpty(msgAlarms)) {
  385. for (MsgAlarm msgAlarm : msgAlarms) {
  386. LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
  387. camera.ge(BaseCameraManagement::getEndMile, msgAlarm.getAlarmMile());
  388. camera.le(BaseCameraManagement::getBeginMile, msgAlarm.getAlarmMile());
  389. camera.eq(BaseCameraManagement::getLineDir, msgAlarm.getLineDir());
  390. camera.eq(BaseCameraManagement::getRailwayCode, msgAlarm.getRailwayCode());
  391. camera.eq(BaseCameraManagement::getOnline, 2);
  392. camera.like(BaseCameraManagement::getEnableOrNot, 1);
  393. if (StringUtils.isNotEmpty(cameraCode)){
  394. wrapper.eq("camera_code", cameraCode);
  395. }
  396. List<BaseCameraManagement> baseCameraManagementList = this.list(camera);
  397. if (!ObjectUtils.isEmpty(baseCameraManagementList)) {
  398. list.addAll(baseCameraManagementList);
  399. }
  400. }
  401. }
  402. return AjaxResult.success(list);
  403. }
  404. @Override
  405. public List<String> videoCaptureUrl(BaseVehicleTerminalDto baseVehicleTerminalDto) {
  406. List<String> urlList = new ArrayList<>();
  407. LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
  408. camera.ge(BaseCameraManagement::getBeginMile, baseVehicleTerminalDto.getTravelMile());
  409. camera.eq(BaseCameraManagement::getLineDir, baseVehicleTerminalDto.getLineDir());
  410. camera.eq(BaseCameraManagement::getRailwayCode, baseVehicleTerminalDto.getRailwayCode());
  411. camera.eq(BaseCameraManagement::getOnline, 2);
  412. camera.eq(BaseCameraManagement::getEnableOrNot, 1);
  413. camera.orderByDesc(BaseCameraManagement::getCreateTime);
  414. camera.last("limit 4");
  415. List<BaseCameraManagement> baseCameraManagementList = this.list(camera);
  416. if (!ObjectUtils.isEmpty(baseCameraManagementList)) {
  417. List<BaseCameraManagement> list = new ArrayList<>(baseCameraManagementList);
  418. for (BaseCameraManagement baseCameraManagement : list) {
  419. String flv = CameraUtil.getPlayFlv(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
  420. urlList.add(flv);
  421. }
  422. }
  423. return urlList;
  424. }
  425. }