package com.fdkankan.agent.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fdkankan.agent.common.ResultCode;
import com.fdkankan.agent.entity.AgentNewCamera;
import com.fdkankan.agent.entity.Camera;
import com.fdkankan.agent.entity.CameraDetail;
import com.fdkankan.agent.exception.BusinessException;
import com.fdkankan.agent.mapper.IAgentNewCameraMapper;
import com.fdkankan.agent.request.CameraParam;
import com.fdkankan.agent.service.IAgentNewCameraService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.agent.service.ICameraDetailService;
import com.fdkankan.agent.service.ICameraService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author
* @since 2024-06-18
*/
@Service
@Slf4j
public class AgentNewCameraServiceImpl extends ServiceImpl implements IAgentNewCameraService {
@Autowired
ICameraService cameraService;
@Autowired
ICameraDetailService cameraDetailService;
@Override
public void giveCamera(CameraParam param) {
Camera camera = cameraService.getById(param.getId());
if(camera == null){
throw new BusinessException(ResultCode.CAMERA_EMPTY);
}
CameraDetail cameraDetail = cameraDetailService.getByCameraId(camera.getId());
if(cameraDetail == null){
throw new BusinessException(ResultCode.CAMERA_EMPTY);
}
if(!cameraDetail.getAgentId().equals(param.getAgentId())){
throw new BusinessException(ResultCode.CAMERA_EMPTY);
}
giveCamera(param.getId(),param.getAgentId(),param.getSubAgentId());
}
public void giveCamera(Long cameraId,Integer agentId,Integer subAgentId) {
AgentNewCamera agentNewCamera = this.getByCameraId(cameraId);
if(agentNewCamera == null){
agentNewCamera = new AgentNewCamera();
}
agentNewCamera.setCameraId(cameraId);
agentNewCamera.setAgentId(agentId);
agentNewCamera.setSubAgentId(subAgentId);
this.saveOrUpdate(agentNewCamera);
}
@Override
public Integer giveCameraBatch(List cameraIds, Integer agentId, Integer subAgentId) {
Integer successNum = 0;
for (Long cameraId : cameraIds) {
try {
giveCamera(cameraId,agentId,subAgentId);
successNum ++;
}catch (Exception e){
log.info("分发失败:cameraId:{},agentId:{},subAgentId:{}",cameraId,agentId,subAgentId);
}
}
return successNum;
}
private AgentNewCamera getByCameraId(Long cameraId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(AgentNewCamera::getCameraId,cameraId);
return this.getOne(wrapper);
}
@Override
public List getBySubAgent(Integer subAgentId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(AgentNewCamera::getSubAgentId,subAgentId);
List list = this.list(wrapper);
return list.stream().map(AgentNewCamera::getCameraId).collect(Collectors.toList());
}
@Override
public HashMap getMapByCameraIds(List voCameraIds) {
HashMap map = new HashMap<>();
if(voCameraIds.isEmpty()){
return map;
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.in(AgentNewCamera::getCameraId,voCameraIds);
List list = this.list(wrapper);
list.forEach(e -> map.put(e.getCameraId(),e));
return map;
}
}