From 2f432f52c1cfb1567dadcf6e040c5d38b0a26a79 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期五, 28 十一月 2025 17:31:49 +0800
Subject: [PATCH] 数量检测配置页面

---
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java |  177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 177 insertions(+), 0 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
new file mode 100644
index 0000000..fd95374
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
@@ -0,0 +1,177 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.Camera;
+import com.fzzy.igds.repository.SecCameraRepository;
+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.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+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 SecCameraRepository secCameraRepository;
+    @Resource
+    private RedisCache redisCache;
+
+    /**
+     * JPA鍒嗛〉鏌ヨ鏁版嵁
+     *
+     * @param specification
+     * @param pageable
+     * @return
+     */
+    public Page<Camera> findAll(Specification<Camera> specification, Pageable pageable) {
+        return secCameraRepository.findAll(specification, pageable);
+    }
+
+    /**
+     * JPA - 鏌ヨ搴撳尯涓嬫墍鏈夌洃鎺�
+     * @return
+     */
+    public List<Camera> listCamera() {
+        return secCameraRepository.listCamera(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null));
+    }
+
+    /**
+     * JPA - 淇濆瓨鏁版嵁
+     * @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());
+        secCameraRepository.save(data);
+    }
+
+    /**
+     * JPA - 鍒犻櫎鏁版嵁
+     * @param data
+     * @return
+     */
+    public String delCamera(Camera data) {
+        secCameraRepository.delete(data);
+        return null;
+    }
+
+    /**
+     * 璁剧疆缂撳瓨
+     * @param companyId
+     */
+    public void refreshCache(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        List<Camera> list = secCameraRepository.listCameraByCompanyId(companyId);
+        redisCache.setCacheObject(RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST), list);
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨涓洃鎺т俊鎭�
+     * @param companyId
+     * @return
+     */
+    public List<Camera> getAllCacheCamera(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_CAMERA_LIST);
+        List<Camera> list =  redisCache.getCacheObject(key);
+
+        if (null == list || list.isEmpty()) {
+            list = secCameraRepository.listCameraByCompanyId(companyId);
+            redisCache.setCacheObject(key, list);
+        }
+        return list;
+    }
+
+    /**
+     * 鏍规嵁搴撳尯缂栫爜鑾峰彇鐩戞帶淇℃伅
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Camera> getCameraByDeptId(String companyId, String deptId) {
+        if (StringUtils.isEmpty(deptId)) {
+            return null;
+        }
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        List<Camera> list = this.getAllCacheCamera(companyId);
+
+        if (null == list || list.isEmpty()){
+            return null;
+        }
+        List<Camera> 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<Camera> 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) {
+        secCameraRepository.updatePosById(param.getId(), param.getPosX(), param.getPosY());
+    }
+
+}

--
Gitblit v1.9.3