package com.fdkankan.manage.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fdkankan.manage.common.RedisKeyUtil;
import com.fdkankan.manage.entity.CameraDetail;
import com.fdkankan.manage.entity.SceneCooperation;
import com.fdkankan.manage.entity.SceneResourceCamera;
import com.fdkankan.manage.entity.SceneResourceCooperation;
import com.fdkankan.manage.httpClient.service.LaserService;
import com.fdkankan.manage.mapper.ISceneResourceCameraMapper;
import com.fdkankan.manage.service.ISceneCooperationService;
import com.fdkankan.manage.service.ISceneResourceCameraService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.manage.service.ISceneResourceCooperationService;
import com.fdkankan.manage.util.Dateutils;
import com.fdkankan.redis.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.WeakHashMap;
import java.util.stream.Collectors;
/**
*
* 场景资源和相机关联表 服务实现类
*
*
* @author
* @since 2022-06-17
*/
@Service
public class SceneResourceCameraServiceImpl extends ServiceImpl implements ISceneResourceCameraService {
@Autowired
ISceneCooperationService sceneCooperationService;
@Autowired
ISceneResourceCooperationService sceneResourceCooperationService;
@Autowired
RedisUtil redisUtil;
@Autowired
LaserService laserService;
@Override
public void unbindCamera(Long cameraId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SceneResourceCamera::getCameraId,cameraId);
this.remove(wrapper);
}
@Override
public void setCooperationUser(CameraDetail cameraDetail, String num) {
sceneCooperationService.delByNum(num);
if(cameraDetail.getCooperationUser() == null){
return;
}
List list = this.getByCameraId(cameraDetail.getCameraId());
if(list.size() >0){
List resourceIdList = list.stream().map(SceneResourceCamera::getSceneResourceId).collect(Collectors.toList());
if(resourceIdList.size() >0){
SceneCooperation sceneCooperationEntity = new SceneCooperation();
sceneCooperationEntity.setUserId(cameraDetail.getCooperationUser());
sceneCooperationEntity.setSceneNum(num);
sceneCooperationEntity.setRecStatus("A");
sceneCooperationEntity.setCreateTime(Dateutils.getDate(new Date()));
sceneCooperationEntity.setUpdateTime(Dateutils.getDate(new Date()));
sceneCooperationService.save(sceneCooperationEntity);
redisUtil.hset(RedisKeyUtil.SCENE_COOPERATION_NUM_USERID, sceneCooperationEntity.getSceneNum(), sceneCooperationEntity.getUserId() + "");
List resourceCooperationList = new ArrayList<>();
for (Long resourceId : resourceIdList) {
SceneResourceCooperation sceneResourceCooperation = new SceneResourceCooperation();
sceneResourceCooperation.setSceneResourceId(resourceId);
sceneResourceCooperation.setSceneCooperationId(sceneCooperationEntity.getId());
sceneResourceCooperation.setRecStatus("A");
sceneResourceCooperation.setCreateTime(Dateutils.getDate(new Date()));
sceneResourceCooperation.setUpdateTime(Dateutils.getDate(new Date()));
resourceCooperationList.add(sceneResourceCooperation);
}
if(resourceCooperationList.size() >0){
sceneResourceCooperationService.saveBatch(resourceCooperationList,10000);
}
}
}
}
private List getByCameraId(Long cameraId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SceneResourceCamera::getCameraId,cameraId);
return this.list(wrapper);
}
}