package com.huimv.admin.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huimv.admin.common.utils.Result;
import com.huimv.admin.common.utils.ResultCode;
import com.huimv.admin.common.utils.ResultUtil;
import com.huimv.admin.entity.CameraArea;
import com.huimv.admin.entity.CameraBase;
import com.huimv.admin.entity.CameraBrand;
import com.huimv.admin.entity.hkwsdto.CameraDto1;
import com.huimv.admin.entity.vo.CameraListVo;
import com.huimv.admin.entity.vo.CameraListsVo;
import com.huimv.admin.entity.vo.CameraVo;
import com.huimv.admin.mapper.CameraAreaMapper;
import com.huimv.admin.mapper.CameraBaseMapper;
import com.huimv.admin.mapper.CameraBrandMapper;
import com.huimv.admin.service.ICameraBaseService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author author
* @since 2023-02-16
*/
@Service
public class CameraBaseServiceImpl extends ServiceImpl implements ICameraBaseService {
@Autowired
private CameraAreaMapper cameraAreaMapper;
@Autowired
private CameraBrandMapper cameraBrandMapper;
@Override
public Result listPage(CameraListVo cameraListVo) {
Integer current = cameraListVo.getCurrent();
String strchStr = cameraListVo.getStrchStr();
Integer size = cameraListVo.getSize();
Integer areaId = cameraListVo.getAreaId();
Integer sort = cameraListVo.getSort();
Integer farmId = cameraListVo.getFarmId();
Integer onLineStatus = cameraListVo.getOnLineStatus();
QueryWrapper wrapper = new QueryWrapper<>();
if (null == current ) {
current =1;
}
if (null ==size) {
size =10;
}
if (farmId != null) {
wrapper.eq("farm_id", farmId);
}
if (areaId != null) {
wrapper.eq("area_id", areaId);
}
if (onLineStatus != null) {
wrapper.eq("is_online", onLineStatus);
}
if (StringUtils.isNotBlank(strchStr)) {
wrapper.and(i -> i.like("camera_name", strchStr));
}
if (sort == null) {
wrapper.orderByDesc("id");
} else if (sort == 1) {
wrapper.orderByDesc("sort");
} else {
wrapper.orderByAsc("sort");
}
wrapper.orderByDesc("id");
Page page = page(new Page(current, size), wrapper);
return new Result(ResultCode.SUCCESS, page);
}
@Override
public Result getCameraDetails(CameraListsVo cameraListsVo) {
List cameraIds = cameraListsVo.getCameraIds();
CameraBrand cameraBrand = cameraBrandMapper.selectById(18);
List list = new ArrayList();
for (Integer cameraId : cameraIds) {
CameraBase cameraBase = this.getById(cameraId);
String regionUuid = cameraBase.getRegionUuid();
CameraArea cameraArea = cameraAreaMapper.selectOne(new QueryWrapper().eq("region_uuid", regionUuid));
// http://61.153.248.106:6713/mag/hls/6bf5d2cf30bb440cad3fc126512f5188/1/live.m3u8
String hls ="http://"+cameraArea.getPublicUrl()+cameraBrand.getStreamType()+cameraBase.getCameraUuid()+"/"+ cameraBrand.getMainStream()+"/"+"live.m3u8";
CameraVo cameraVo = new CameraVo();
cameraVo.setHlsUrl(hls);
cameraVo.setId(cameraBase.getId());
cameraVo.setCameraName(cameraBase.getCameraName());
list.add(cameraVo);
}
return ResultUtil.list(list);
}
@Override
public void sync(Map params, List list) {
Integer farmId = params.get("farmId");
//先删除
this.remove(new QueryWrapper().eq("farm_id",farmId));
System.out.println(list.size());
//
for (CameraDto1 cameraDto1 : list) {
CameraBase cameraBase = new CameraBase();
BeanUtil.copyProperties(cameraDto1,cameraBase);
CameraArea cameraArea = cameraAreaMapper.selectOne(new QueryWrapper().eq("region_uuid", cameraDto1.getRegionUuid()));
if (ObjectUtil.isNotEmpty(cameraArea)){
cameraBase.setAreaName(cameraArea.getAreaName());
}
cameraBase.setBrandName("海康威视");
cameraBase.setFarmId(farmId);
this.save(cameraBase);
}
}
//更新摄像头状态
@Override
public void updateCameraOnlin(List list) {
for (CameraDto1 cameraDto1 : list) {
String cameraUuid = cameraDto1.getCameraUuid();
CameraBase one = this.getOne(new QueryWrapper().eq("camera_uuid", cameraUuid));
one.setOnLineStatus(1 ==cameraDto1.getOnLineStatus());
}
}
}