package com.ard.work.device.camera.service.impl; import com.ard.common.core.utils.StringUtils; import com.ard.common.security.utils.SecurityUtils; import com.ard.work.device.camera.domain.ArdCameraPtzScope; import com.ard.work.device.camera.mapper.ArdCameraPtzScopeMapper; import com.ard.work.device.camera.service.IArdCameraPtzScopeService; import com.ard.work.sdk.model.PtzScope; import jakarta.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.List; /** * 摄像头PTZ范围Service业务层处理 * * @author 刘苏义 * @date 2024-09-05 */ @Service public class ArdCameraPtzScopeServiceImpl implements IArdCameraPtzScopeService { private static final Logger log = LoggerFactory.getLogger(ArdCameraPtzScopeServiceImpl.class); @Resource private ArdCameraPtzScopeMapper ardCameraPtzScopeMapper; /** * 查询摄像头PTZ范围 */ @Override public ArdCameraPtzScope selectArdCameraPtzScopeById(Long id) { return ardCameraPtzScopeMapper.selectArdCameraPtzScopeById(id); } /** * 查询摄像头PTZ范围列表 */ @Override public List selectArdCameraPtzScopeList(ArdCameraPtzScope ardCameraPtzScope) { return ardCameraPtzScopeMapper.selectArdCameraPtzScopeList(ardCameraPtzScope); } /** * 新增摄像头PTZ范围 */ @Override public int insertArdCameraPtzScope(ArdCameraPtzScope ardCameraPtzScope) { ardCameraPtzScope.setCreateBy(StringUtils.isNotEmpty(ardCameraPtzScope.getCreateBy()) ? ardCameraPtzScope.getCreateBy() : SecurityUtils.getUsername()); return ardCameraPtzScopeMapper.insertArdCameraPtzScope(ardCameraPtzScope); } /** * 修改摄像头PTZ范围 */ @Override public int updateArdCameraPtzScope(ArdCameraPtzScope ardCameraPtzScope) { ardCameraPtzScope.setUpdateBy(SecurityUtils.getUsername()); return ardCameraPtzScopeMapper.updateArdCameraPtzScope(ardCameraPtzScope); } /** * 批量删除摄像头PTZ范围 */ @Override public int deleteArdCameraPtzScopeByIds(String[] ids) { return ardCameraPtzScopeMapper.deleteArdCameraPtzScopeByIds(ids); } /** * 删除摄像头PTZ范围信息 */ @Override public int deleteArdCameraPtzScopeById(Long id) { return ardCameraPtzScopeMapper.deleteArdCameraPtzScopeById(id); } /** * 登录成功后保存PTZ范围(存在则更新) */ @Override @Transactional public void saveOnLoginSuccess(String cameraId,PtzScope ptzScope) { if (ptzScope == null) { log.warn("PTZ范围为空,忽略存储,cameraId: {}", cameraId); return; } ArdCameraPtzScope entity = new ArdCameraPtzScope(); entity.setCameraId(cameraId); entity.setPMax(BigDecimal.valueOf(ptzScope.getPMax())); entity.setPMin(BigDecimal.valueOf(ptzScope.getPMin())); entity.setTMax(BigDecimal.valueOf(ptzScope.getTMax())); entity.setTMin(BigDecimal.valueOf(ptzScope.getTMin())); entity.setZMax(BigDecimal.valueOf(ptzScope.getZMax())); entity.setZMin(BigDecimal.valueOf(ptzScope.getZMin())); int result = ardCameraPtzScopeMapper.insertOrUpdate(entity); if (result > 0) { log.info("PTZ范围存储成功,cameraId: {}, 范围: P[{}-{}], T[{}-{}], Z[{}-{}]", cameraId, ptzScope.getPMin(), ptzScope.getPMax(), ptzScope.getTMin(), ptzScope.getTMax(), ptzScope.getZMin(), ptzScope.getZMax()); } else { log.error("PTZ范围存储失败,cameraId: {}", cameraId); } } /** * 根据摄像头ID获取PTZ范围(供SDK调用) */ @Override public PtzScope getPtzScopeByCameraId(String cameraId) { if (StringUtils.isEmpty(cameraId)) { return null; } ArdCameraPtzScope entity = ardCameraPtzScopeMapper.selectArdCameraPtzScopeByCameraId(cameraId); if (entity == null) { log.debug("数据库中未找到PTZ范围,cameraId: {}", cameraId); return null; } PtzScope ptzScope = new PtzScope(); ptzScope.setPMax(entity.getPMax().floatValue()); ptzScope.setPMin(entity.getPMin().floatValue()); ptzScope.setTMax(entity.getTMax().floatValue()); ptzScope.setTMin(entity.getTMin().floatValue()); ptzScope.setZMax(entity.getZMax().floatValue()); ptzScope.setZMin(entity.getZMin().floatValue()); return ptzScope; } @Override public void clearAll() { ardCameraPtzScopeMapper.clearAll(); } }