package com.fzzy.igds.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.fzzy.igds.constant.RedisConst; import com.fzzy.igds.domain.Camera; import com.fzzy.igds.mapper.CameraMapper; import com.fzzy.igds.utils.ContextUtil; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @Description * @Author CZT * @Date 2025/11/28 10:48 */ @Slf4j @Service public class SecCameraService { @Resource private CameraMapper cameraMapper; @Resource private RedisCache redisCache; public void listPageCamera(Page page, Camera param) { QueryWrapper queryWrapper = new QueryWrapper<>(); param.setCompanyId(ContextUtil.getCompanyId()); param.setDeptId(ContextUtil.subDeptId(null)); queryWrapper.eq("company_id", param.getCompanyId()); queryWrapper.eq("dept_id", param.getDeptId()); if(StringUtils.isNotBlank(param.getName())){ queryWrapper.like("name", param.getName()); } if(StringUtils.isNotBlank(param.getBrand())){ queryWrapper.eq("brand", param.getBrand()); } if(StringUtils.isNotBlank(param.getSpjklx())){ queryWrapper.eq("spjklx", param.getSpjklx()); } if(StringUtils.isNotBlank(param.getSpdwlx())){ queryWrapper.eq("spdwlx", param.getSpdwlx()); } cameraMapper.selectPage(page, queryWrapper); } /** * 查询库区下所有监控 * @return */ public List listCamera(String companyId, String deptId) { QueryWrapper queryWrapper = new QueryWrapper<>(); if(StringUtils.isNotBlank(companyId)){ queryWrapper.eq("company_id", companyId); } if(StringUtils.isNotBlank(deptId)){ queryWrapper.eq("dept_id", deptId); } return cameraMapper.selectList(queryWrapper); } /** * 保存数据 * @param data */ public void saveCamera(Camera data) { if (StringUtils.isEmpty(data.getCompanyId())) { data.setCompanyId(ContextUtil.getCompanyId()); } if (StringUtils.isEmpty(data.getDeptId())) { data.setDeptId(ContextUtil.subDeptId(null)); } if (data.getChanNum() == 0) { data.setChanNum(1); } if(StringUtils.isEmpty(data.getId())){ data.setId(ContextUtil.generateId()); data.setCreateBy(ContextUtil.getLoginUserName()); data.setCreateTime(new Date()); } data.setUpdateBy(ContextUtil.getLoginUserName()); data.setUpdateTime(new Date()); cameraMapper.insert(data); } /** * 删除数据 * @param data * @return */ public String delCamera(Camera data) { cameraMapper.deleteById(data); return null; } /** * 设置缓存 * @param companyId */ public void refreshCache(String companyId) { if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } List list = this.listCamera(companyId,null); redisCache.setCacheObject(RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST), list); } /** * 获取缓存中监控信息 * @param companyId * @return */ public List getAllCacheCamera(String companyId) { if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } String key = RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST); List list = redisCache.getCacheObject(key); if (null == list || list.isEmpty()) { list = this.listCamera(companyId,null); redisCache.setCacheObject(key, list); } return list; } /** * 根据库区编码获取监控信息 * @param companyId * @param deptId * @return */ public List getCameraByDeptId(String companyId, String deptId) { if (StringUtils.isEmpty(deptId)) { return null; } if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } List list = this.getAllCacheCamera(companyId); if (null == list || list.isEmpty()){ return null; } List result = new ArrayList<>(); for (Camera data : list) { if (data.getDeptId().equals(deptId)){ result.add(data); } } return result; } /** * 根据监控ID获取监控信息 * @param companyId * @param cameraId * @return */ public Camera getCameraById(String companyId, String cameraId) { if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } List list = this.getAllCacheCamera(companyId); if (null == list || list.isEmpty()){ return null; } for (Camera data : list) { if (data.getId().equals(cameraId)){ return data; } } return null; } /** * 更新设置位置 * @param param */ public void updatePos(Camera param) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", param.getId()).set("pos_x", param.getPosX()).set("pos_y", param.getPosY()); cameraMapper.update(null, updateWrapper); } }