|
@@ -1,5 +1,9 @@
|
|
|
package com.huimv.guowei.admin.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.RandomUtil;
|
|
|
+import cn.hutool.poi.excel.ExcelReader;
|
|
|
+import cn.hutool.poi.excel.ExcelUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
@@ -8,24 +12,26 @@ import com.huimv.guowei.admin.common.utils.Result;
|
|
|
import com.huimv.guowei.admin.common.utils.ResultCode;
|
|
|
import com.huimv.guowei.admin.entity.SysCamera;
|
|
|
import com.huimv.guowei.admin.entity.SysCameraArea;
|
|
|
-import com.huimv.guowei.admin.entity.vo.CameraBaseVo;
|
|
|
-import com.huimv.guowei.admin.entity.vo.CameraListVo;
|
|
|
-import com.huimv.guowei.admin.entity.vo.CameraNameDto;
|
|
|
+import com.huimv.guowei.admin.entity.SysCameraBrand;
|
|
|
+import com.huimv.guowei.admin.entity.vo.*;
|
|
|
import com.huimv.guowei.admin.mapper.SysCameraAreaMapper;
|
|
|
+import com.huimv.guowei.admin.mapper.SysCameraBrandMapper;
|
|
|
import com.huimv.guowei.admin.mapper.SysCameraMapper;
|
|
|
import com.huimv.guowei.admin.service.ISysCameraService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import javafx.scene.Camera;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
- * 服务实现类
|
|
|
+ * 服务实现类
|
|
|
* </p>
|
|
|
*
|
|
|
* @author author
|
|
@@ -38,71 +44,160 @@ public class SysCameraServiceImpl extends ServiceImpl<SysCameraMapper, SysCamera
|
|
|
private SysCameraMapper cameraBaseMapper;
|
|
|
@Autowired
|
|
|
private SysCameraAreaMapper cameraAreaMapper;
|
|
|
+ @Autowired
|
|
|
+ private SysCameraBrandMapper cameraBrandMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public Result listPage(CameraListVo cameraListVo) {
|
|
|
Integer current = cameraListVo.getCurrent();
|
|
|
String strchStr = cameraListVo.getStrchStr();
|
|
|
Integer size = cameraListVo.getSize();
|
|
|
-// Integer areaId = cameraListVo.getAreaId();
|
|
|
+ Integer areaId = cameraListVo.getAreaId();
|
|
|
+ Integer brandId = cameraListVo.getBrandId();
|
|
|
Integer sort = cameraListVo.getSort();
|
|
|
Integer farmId = cameraListVo.getFarmId();
|
|
|
- Integer onLineStatus = cameraListVo.getOnLineStatus();
|
|
|
- String regionUuid = cameraListVo.getRegionUuid();
|
|
|
+ Integer isOnline = cameraListVo.getIsOnline();
|
|
|
+
|
|
|
QueryWrapper<SysCamera> wrapper = new QueryWrapper<>();
|
|
|
- if (null == current) {
|
|
|
- current = 1;
|
|
|
- }
|
|
|
- if (null == size) {
|
|
|
- size = 10;
|
|
|
+ if (StringUtils.isNotBlank(strchStr)) {
|
|
|
+ wrapper.and(i -> i.like("camera_name", strchStr)
|
|
|
+ .or().like("camera_ip", strchStr));
|
|
|
}
|
|
|
+
|
|
|
if (farmId != null) {
|
|
|
- wrapper.eq("cb.farm_id", farmId);
|
|
|
+ wrapper.eq("farm_id", farmId);
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(regionUuid)) {
|
|
|
- wrapper.eq("cb.region_uuid", regionUuid);
|
|
|
+
|
|
|
+ if (areaId != null) {
|
|
|
+ wrapper.eq("area_id", areaId);
|
|
|
}
|
|
|
- if (onLineStatus != null) {
|
|
|
- wrapper.eq("cb.on_line_status", onLineStatus);
|
|
|
+
|
|
|
+ if (brandId != null) {
|
|
|
+ wrapper.eq("brand_id", brandId);
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(strchStr)) {
|
|
|
- wrapper.and(i -> i.like("cb.camera_name", strchStr));
|
|
|
+
|
|
|
+ if (isOnline != null) {
|
|
|
+ wrapper.eq("is_online", isOnline);
|
|
|
}
|
|
|
+
|
|
|
if (sort == null) {
|
|
|
- wrapper.orderByDesc("cb.id");
|
|
|
+ wrapper.orderByDesc("id");
|
|
|
} else if (sort == 1) {
|
|
|
- wrapper.orderByDesc("cb.sort");
|
|
|
+ wrapper.orderByDesc("sort");
|
|
|
} else {
|
|
|
- wrapper.orderByAsc("cb.sort");
|
|
|
+ wrapper.orderByAsc("sort");
|
|
|
}
|
|
|
- wrapper.orderByDesc("cb.id");
|
|
|
- Page<SysCamera> page = new Page<>(current,size);
|
|
|
- IPage<CameraBaseVo> cameraBaseVoIPage = cameraBaseMapper.listPage(page, wrapper);
|
|
|
- return new Result(ResultCode.SUCCESS, cameraBaseVoIPage);
|
|
|
+ wrapper.orderByDesc("id");
|
|
|
+ return new Result(ResultCode.SUCCESS, page(new Page<>(current, size), wrapper));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Result list(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
|
|
|
- String farmId = paramsMap.get("farmId");
|
|
|
- QueryWrapper<SysCameraArea> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.eq("farm_id", farmId);
|
|
|
- List<SysCameraArea> cameraAreas = cameraAreaMapper.selectList(queryWrapper);
|
|
|
+ public List getCameraDetails(CameraListsVo cameraListsVo) {
|
|
|
+ List<Integer> cameraIds = cameraListsVo.getCameraIds();
|
|
|
+ CameraListVo cameraListVo = new CameraListsVo();
|
|
|
+ cameraListVo.setCurrent(1);
|
|
|
+ cameraListVo.setSize(10000);
|
|
|
+ cameraListVo.setStrchStr(cameraListsVo.getStrchStr());
|
|
|
+ cameraListVo.setAreaId(cameraListsVo.getAreaId());
|
|
|
+ cameraListVo.setBrandId(cameraListsVo.getBrandId());
|
|
|
+ cameraListVo.setSort(cameraListsVo.getSort());
|
|
|
|
|
|
- List<CameraNameDto> cameraNameDtoList = new LinkedList();
|
|
|
- for (SysCameraArea cameraArea : cameraAreas) {
|
|
|
- CameraNameDto cameraNameDto = new CameraNameDto();
|
|
|
- QueryWrapper<SysCamera> baseQueryWrapper = new QueryWrapper<>();
|
|
|
- baseQueryWrapper.eq("farm_id", farmId).eq("area_name", cameraArea.getAreaName());
|
|
|
- List<SysCamera> cameraBases = cameraBaseMapper.selectList(baseQueryWrapper);
|
|
|
+ if (cameraIds == null || cameraIds.size() == 0) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ List cameraDetailsList = new ArrayList();
|
|
|
+ IPage<SysCamera> page = (IPage<SysCamera>) this.listPage(cameraListVo).getData();
|
|
|
+ List<SysCamera> list = page.getRecords();
|
|
|
+ int i = 0;
|
|
|
+ final String farmAppPort = "8081";
|
|
|
+ final String farmVideoApp = "/appleVideo/play?";
|
|
|
+ final String hlsMediaPort = "85";
|
|
|
+ for (SysCamera camera : list) {
|
|
|
+ for (Integer cameraId : cameraIds) {
|
|
|
+ if (cameraId.equals(camera.getId())) {
|
|
|
|
|
|
- cameraNameDto.setCameraBases(cameraBases);
|
|
|
- cameraNameDto.setId(cameraArea.getId());
|
|
|
- cameraNameDto.setAreaName(cameraArea.getAreaName());
|
|
|
+ String cameraAccount = camera.getAccount();
|
|
|
+ String cameraPassword = camera.getPassword();
|
|
|
+ String camerIp = camera.getCameraIp();
|
|
|
+ String cameraName = camera.getCameraName();
|
|
|
+ Integer areaId = camera.getAreaId();
|
|
|
+ String url = cameraAreaMapper.selectById(areaId).getPublicUrl();
|
|
|
+ String rtsp;
|
|
|
+ SysCameraBrand cameraBrand = cameraBrandMapper.selectById(camera.getBrandId());
|
|
|
+ Integer type = cameraBrand.getStreamType();
|
|
|
+ if (type == 0) {
|
|
|
+ rtsp = cameraBrand.getMainStream();
|
|
|
+ } else {
|
|
|
+ rtsp = cameraBrand.getAssistStream();
|
|
|
+ }
|
|
|
+ CameraVo cameraVo = new CameraVo();
|
|
|
+ cameraVo.setId(camera.getId());
|
|
|
+ cameraVo.setAreaId(areaId);
|
|
|
|
|
|
- cameraNameDtoList.add(cameraNameDto);
|
|
|
+ cameraVo.setWsUrl("ws://" + url + "/camera_relay?tcpaddr=" + cameraAccount + "%3A" + cameraPassword + "%40" + camerIp /*+ "/h265/ch1/main/av_stream"*/);
|
|
|
+ cameraVo.setRtspUrl("rtsp://" + cameraAccount + ":" + cameraPassword + "@" + camerIp + rtsp);
|
|
|
|
|
|
+ cameraVo.setCameraName(cameraName);
|
|
|
+ cameraVo.setHttpUrl(handleHlsHttpUrl(url, cameraAccount, cameraPassword, camerIp, farmAppPort, farmVideoApp, hlsMediaPort));
|
|
|
+ if (i > 0) {
|
|
|
+ cameraVo.setLastId(list.get(i - 1).getId());
|
|
|
+ }
|
|
|
+ if (i < list.size() - 1) {
|
|
|
+ cameraVo.setNextId(list.get(i + 1).getId());
|
|
|
+ }
|
|
|
+ cameraDetailsList.add(cameraVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ return cameraDetailsList;
|
|
|
+ }
|
|
|
|
|
|
+ //构造HlsHttp地址
|
|
|
+ private String handleHlsHttpUrl(String url, String cameraAccount, String cameraPassword, String camerIp, String farmAppPort, String farmVideoApp, String hlsMediaPort) {
|
|
|
+ url = url.substring(0, url.indexOf(":"));
|
|
|
+ url = "http://" + url;
|
|
|
+ //return url+":"+farmAppPort+farmVideoApp+"url="+cameraAccount + ":" + cameraPassword + "@" + camerIp+"&name="+"&dt=3000&targetUrl="+url+":"+hlsMediaPort;
|
|
|
+ return url + ":" + farmAppPort + farmVideoApp + "url=" + cameraAccount + ":" + cameraPassword + "@" + camerIp + "&dt=3000&targetUrl=" + url + ":" + hlsMediaPort;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result add(SysCamera camera) {
|
|
|
+ Integer areaId = camera.getAreaId();
|
|
|
+ Integer brandId = camera.getBrandId();
|
|
|
+
|
|
|
+ int brandName = this.count(new QueryWrapper<SysCamera>().eq("camera_name", camera.getCameraName()).eq("farm_id", camera.getFarmId()));
|
|
|
+ if (brandName > 0) {
|
|
|
+ return new Result(10001, "摄像头名称重复", false);
|
|
|
}
|
|
|
+ if (areaId != null) {
|
|
|
+ camera.setAreaName(cameraAreaMapper.selectById(areaId).getAreaName());
|
|
|
+ }
|
|
|
+ if (brandId != null) {
|
|
|
+ camera.setBrandName(cameraBrandMapper.selectById(brandId).getBrandName());
|
|
|
+ }
|
|
|
+ this.save(camera);
|
|
|
|
|
|
- return new Result(ResultCode.SUCCESS, cameraNameDtoList);
|
|
|
+ return new Result(10000, "添加成功", true);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result updates(SysCamera camera) {
|
|
|
+ Integer areaId = camera.getAreaId();
|
|
|
+ Integer brandId = camera.getBrandId();
|
|
|
+ this.updateById(camera);
|
|
|
+ int brandName = this.count(new QueryWrapper<SysCamera>().eq("camera_name", camera.getCameraName()));
|
|
|
+ if (brandName > 1) {
|
|
|
+ return new Result(10001, "摄像头名称重复", false);
|
|
|
+ }
|
|
|
+ if (areaId != null) {
|
|
|
+ camera.setAreaName(cameraAreaMapper.selectById(areaId).getAreaName());
|
|
|
+ }
|
|
|
+ if (brandId != null) {
|
|
|
+ camera.setBrandName(cameraBrandMapper.selectById(brandId).getBrandName());
|
|
|
+ }
|
|
|
+ this.updateById(camera);
|
|
|
+ return new Result(10000, "修改成功", true);
|
|
|
+ }
|
|
|
+
|
|
|
}
|