BaseCameraManagementServiceImpl.java 25 KB

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