From 1f455e5cda9016054c531bbae6b1639fe646628f Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期四, 27 十一月 2025 19:36:37 +0800
Subject: [PATCH] 框架调整,及库区切换

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

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java
new file mode 100644
index 0000000..36fbb15
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java
@@ -0,0 +1,269 @@
+package com.fzzy.igds.service;
+
+import com.fzzy.igds.constant.RedisConst;
+import com.fzzy.igds.domain.Depot;
+import com.fzzy.igds.domain.DepotStore;
+import com.fzzy.igds.repository.DepotRepository;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.mapper.SysDeptMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2025/11/27 13:43
+ */
+@Slf4j
+@Service
+public class DepotService {
+
+    @Resource
+    private DepotRepository depotRepository;
+    @Resource
+    private RedisCache redisCache;
+
+    /**
+     * jpa鏌ヨ浠撳簱鍒楄〃
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Depot> getData(String companyId, String deptId) {
+
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+        if (StringUtils.isEmpty(deptId)) {
+            deptId = ContextUtil.subDeptId(null);
+        }
+        return depotRepository.getDepot(companyId, deptId);
+    }
+
+    /**
+     * jpa鏌ヨ浠撳簱鍒楄〃
+     * @param ids
+     * @return
+     */
+    public List<Depot> getDepotByIds(List<String> ids) {
+        if (null == ids ||ids.isEmpty()) {
+            return null;
+        }
+        return depotRepository.getDepotByIds(ids);
+    }
+
+    /**
+     * jpa淇濆瓨鏇存柊浠撳簱淇℃伅
+     * @param depot
+     */
+    public void saveDepot(Depot depot) {
+        if (StringUtils.isEmpty(depot.getCompanyId())) {
+            depot.setCompanyId(ContextUtil.getCompanyId());
+        }
+        if (StringUtils.isEmpty(depot.getDeptId())) {
+            depot.setDeptId(ContextUtil.subDeptId(null));
+        }
+        //涓婚敭ID
+        if (StringUtils.isEmpty(depot.getId())) {
+            depot.setId(getStrId(depot.getDeptId()));
+            depot.setCreateBy(ContextUtil.getLoginUserName());
+            depot.setCreateTime(new Date());
+        }
+        //榛樿椤哄簭鍙�
+        if(null == depot.getOrderNum()){
+            depot.setOrderNum(1);
+        }
+        depot.setUpdateBy(ContextUtil.getLoginUserName());
+        depot.setUpdateTime(new Date());
+        depotRepository.save(depot);
+        flushCache(depot.getCompanyId());
+    }
+
+    /**
+     * 鑾峰彇涓婚敭ID
+     * @param deptId
+     * @param deptId
+     */
+    public String getStrId(String deptId) {
+        List<Depot> depots = depotRepository.getDepotMaxId(deptId);
+        String oldOrderId = null;
+        if(null != depots && depots.size() > 0){
+            oldOrderId = depots.get(0).getId().substring(deptId.length());
+        }
+        return deptId + ContextUtil.getOrderId(oldOrderId, 3);
+    }
+
+    /**
+     * jpa鏇存柊浠撳簱鐘舵��
+     * @param depotId
+     * @param status
+     */
+    public void updateDepotStatus(String depotId, String status) {
+        if (StringUtils.isEmpty(depotId)) {
+            return;
+        }
+        depotRepository.updateDepotStatus(status, depotId);
+    }
+
+    /**
+     * jpa鍒犻櫎浠撳簱璐т綅淇℃伅
+     * @param depot
+     */
+    public void deleteDepot(Depot depot) {
+        depotRepository.delete(depot);
+
+        //鍒犻櫎閰嶇疆缂撳瓨
+        this.delCacheDepot(depot, depot.getCompanyId());
+    }
+
+    /**
+     * 鍒锋柊浠撳簱璐т綅缂撳瓨
+     * @param companyId
+     */
+    public void flushCache(String companyId) {
+        if (StringUtils.isEmpty(companyId)) {
+            companyId = ContextUtil.getCompanyId();
+        }
+
+        List<Depot> list = depotRepository.getDepotByCompanyId(companyId);
+
+        this.setCacheDepotList(list, companyId);
+    }
+
+    /**
+     * 璁剧疆缂撳瓨
+     * @param list
+     * @param companyId
+     */
+    public void setCacheDepotList(List<Depot> list, String companyId) {
+        if (null == list) return;
+        String key;
+        for (Depot depot : list) {
+            key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
+            redisCache.setCacheObject(key, depot);
+        }
+    }
+
+    /**
+     * 鍒犻櫎缂撳瓨淇℃伅
+     * @param depot
+     * @param companyId
+     */
+    public void delCacheDepot(Depot depot, String companyId) {
+        if (null == depot) {
+            return;
+        }
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
+        redisCache.deleteObject(key);
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱闆嗗悎
+     * @param companyId
+     * @return
+     */
+    public List<Depot> getCacheDepotList(String companyId) {
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT) + "*";
+
+        Collection<String> keys = redisCache.keys(patten);
+        if (null == keys) {
+            return null;
+        }
+
+        List<Depot> list = new ArrayList<>();
+        for (String key : keys) {
+            list.add((Depot) redisCache.getCacheObject(key));
+        }
+        //缂撳瓨鑾峰彇涓虹┖锛屽垯鏌ヨ鏁版嵁搴�
+        if(list.size() < 1){
+            list = depotRepository.getDepotByCompanyId(companyId);
+            setCacheDepotList(list, companyId);
+        }
+
+        //閲嶆柊鎺掑簭
+        Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        return list;
+    }
+
+    /**
+     * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦粨搴撻泦鍚�
+     * @param companyId
+     * @param deptId
+     * @return
+     */
+    public List<Depot> getCacheDepotList(String companyId, String deptId) {
+        if (StringUtils.isEmpty(deptId)) {
+            return null;
+        }
+        List<Depot> list = getCacheDepotList(companyId);
+        if(null == list || list.isEmpty()){
+            return null;
+        }
+        List<Depot> result = new ArrayList<>();
+        for (Depot depot : list) {
+            if (deptId.equals(depot.getDeptId())) {
+                result.add(depot);
+            }
+        }
+        //閲嶆柊鎺掑簭
+        Collections.sort(result, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        return result;
+    }
+
+    /**
+     * 鑾峰彇浠撳簱淇℃伅-鏍规嵁浠撳簱缂栫爜鑾峰彇缂撳瓨淇℃伅
+     * @param companyId
+     * @param depotId
+     * @return
+     */
+    public Depot getCacheDepot(String companyId, String depotId) {
+        if (StringUtils.isEmpty(depotId)) {
+            return null;
+        }
+        if(StringUtils.isEmpty(companyId)){
+            companyId = ContextUtil.getCompanyId();
+        }
+        String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depotId);
+        Depot depot = redisCache.getCacheObject(key);
+        if(null == depot){
+            depot = depotRepository.getDepotById(companyId, depotId);
+            redisCache.setCacheObject(key, depot);
+        }
+        return depot;
+    }
+
+    /**
+     * 鏍规嵁搴撳瓨淇℃伅鏇存柊浠撳簱淇℃伅
+     * @param data
+     */
+    public void updateByStore(DepotStore data) {
+
+        Depot depot = this.getCacheDepot(data.getCompanyId(), data.getDepotId());
+        if (null == depot) {
+            return;
+        }
+
+        depot.setStorageReal(data.getStorageReal());
+        depot.setDepotStatus(data.getDepotStatus());
+        depot.setFoodLevel(data.getFoodLevel());
+        depot.setFoodLocation(data.getFoodLocation());
+        depot.setFoodVariety(data.getFoodVariety());
+        depot.setFoodType(data.getFoodType());
+        depot.setFoodYear(data.getFoodYear());
+        if (null != data.getStoreDate()) {
+            depot.setStoreDate(data.getStoreDate());
+        }
+
+        this.saveDepot(depot);
+    }
+}

--
Gitblit v1.9.3