From fbddf74600d036ba46b311147847be978904e002 Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期二, 10 三月 2026 10:32:58 +0800
Subject: [PATCH] 出入库详单,导入,时间格式兼容yy/mm/dd

---
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java |  247 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 178 insertions(+), 69 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
index aa162a1..1eb635b 100644
--- 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
@@ -1,17 +1,21 @@
 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.Depot;
 import com.fzzy.igds.domain.DepotStore;
-import com.fzzy.igds.repository.DepotRepository;
+import com.fzzy.igds.mapper.DepotMapper;
 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.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.stereotype.Service;
+
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @Description
@@ -23,46 +27,57 @@
 public class DepotService {
 
     @Resource
-    private DepotRepository depotRepository;
+    private DepotMapper depotMapper;
     @Resource
     private RedisCache redisCache;
     @Resource
-    private SysDeptMapper deptMapper;
-    @Resource
     private DepotStoreService depotStoreService;
 
-
     /**
-     * jpa鏌ヨ浠撳簱鍒楄〃
+     * 鏌ヨ搴撳尯涓嬩粨搴撳垪琛�
+     *
      * @param companyId
      * @param deptId
+     * @param idDesc    鏄惁ID鍊掑簭鎺掑垪
      * @return
      */
-    public List<Depot> getData(String companyId, String deptId) {
-
+    public List<Depot> getData(String companyId, String deptId, boolean idDesc) {
         if (StringUtils.isEmpty(companyId)) {
             companyId = ContextUtil.getCompanyId();
         }
-        if (StringUtils.isEmpty(deptId)) {
-            deptId = ContextUtil.subDeptId(null);
+
+        QueryWrapper<Depot> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("company_id", companyId);
+        if (StringUtils.isNotBlank(deptId)) {
+            queryWrapper.likeRight("dept_id", deptId);
         }
-        return depotRepository.getDepot(companyId, deptId);
+
+        if (idDesc) {
+            //ID鍊掑簭
+            queryWrapper.orderByDesc("id");
+        } else {
+            //搴忓彿姝e簭
+            queryWrapper.orderByAsc("order_num");
+        }
+
+        return depotMapper.selectList(queryWrapper);
     }
 
     /**
-     * jpa鏌ヨ浠撳簱鍒楄〃
-     * @param ids
-     * @return
+     * 鏍规嵁搴撳瓨琛ㄤ俊鎭紝鏇存柊浠撳簱搴撳瓨
+     *
+     * @param data
      */
-    public List<Depot> getDepotByIds(List<String> ids) {
-        if (null == ids ||ids.isEmpty()) {
-            return null;
-        }
-        return depotRepository.getDepotByIds(ids);
+    public void updateByDepotStore(DepotStore data) {
+        UpdateWrapper<Depot> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", data.getDepotId()).set("storage_real", data.getStorageReal());
+
+        depotMapper.update(null, updateWrapper);
     }
 
     /**
-     * jpa淇濆瓨鏇存柊浠撳簱淇℃伅
+     * 淇濆瓨鏇存柊浠撳簱淇℃伅
+     *
      * @param depot
      */
     public void saveDepot(Depot depot) {
@@ -72,15 +87,86 @@
         if (StringUtils.isEmpty(depot.getDeptId())) {
             depot.setDeptId(ContextUtil.subDeptId(null));
         }
-        if(null == depot.getOrderNum()){
+        //榛樿椤哄簭鍙�
+        if (null == depot.getOrderNum()) {
             depot.setOrderNum(1);
         }
-        depotRepository.save(depot);
+        //涓婚敭ID
+        if (StringUtils.isEmpty(depot.getId())) {
+            depot.setId(getStrId(depot.getDeptId()));
+            depot.setCreateBy(ContextUtil.getLoginUserName());
+            depot.setCreateTime(new Date());
+            depotMapper.insert(depot);
+        } else {
+            depot.setUpdateBy(ContextUtil.getLoginUserName());
+            depot.setUpdateTime(new Date());
+            depotMapper.updateById(depot);
+        }
         flushCache(depot.getCompanyId());
     }
 
     /**
-     * jpa鏇存柊浠撳簱鐘舵��
+     * 鏇存柊搴撳瓨淇℃伅
+     *
+     * @param depot
+     */
+    public void updateStorageReal(Depot depot) {
+
+        Depot cacheDepot = this.getCacheDepot(depot.getCompanyId(), depot.getId());
+
+        depot.setUpdateBy(ContextUtil.getLoginUserName());
+        depot.setUpdateTime(new Date());
+        depot.setRemark("銆�" + ContextUtil.getLoginUserName() + "銆戜簬[" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss") + "]淇敼搴撳瓨锛�" + cacheDepot.getStorageReal() + "-->" + depot.getStorageReal());
+        depotMapper.updateById(depot);
+
+        DepotStore lastData = new DepotStore();
+
+        //涓婚敭ID瑙勫垯锛歽yyyMMddHHmm_浠撳簱缂栫爜
+        lastData.setId(DateFormatUtils.format(new Date(), "yyyyMMddHHmm") + "_" + depot.getId() + "_HAND");
+        lastData.setCompanyId(depot.getCompanyId());
+        lastData.setDeptId(depot.getDeptId());
+        lastData.setDepotId(depot.getId());
+        lastData.setStorageReal(0.0);
+        lastData.setUpdateTime(new Date());
+        lastData.setUpdateBy("绯荤粺瀹氭椂缁熻");
+
+
+        lastData.setDepotStatus(depot.getDepotStatus());
+        lastData.setFoodVariety(depot.getFoodVariety());
+        lastData.setFoodLevel(depot.getFoodLevel());
+        lastData.setFoodLocation(depot.getFoodLocation());
+        lastData.setFoodLocationId(depot.getFoodLocationId());
+        lastData.setFoodType(depot.getFoodType());
+        lastData.setFoodYear(depot.getFoodYear());
+
+
+        lastData.setStorageReal(depot.getStorageReal());
+        lastData.setCreateTime(new Date()); //璁剧疆涓烘渶鏂版椂闂达紝鍏朵粬绯荤粺鍙互閫氳繃姝ゆ椂闂存煡璇㈡暟鎹槸鍚︽湁鏇存柊淇敼锛屽悓姝ュ埌鐪佸钩鍙版帴鍙c��
+        lastData.setCreateBy(ContextUtil.getLoginUserName());
+        lastData.setRemark("銆�" + ContextUtil.getLoginUserName() + "銆戜簬[" + DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss") + "]淇敼搴撳瓨涓猴細" + depot.getStorageReal());
+
+        depotStoreService.updateAndSave(lastData);
+        flushCache(depot.getCompanyId());
+    }
+
+    /**
+     * 鑾峰彇涓婚敭ID
+     *
+     * @param deptId
+     * @param deptId
+     */
+    public String getStrId(String deptId) {
+        List<Depot> depots = this.getData(null, deptId, true);
+        String oldOrderId = null;
+        if (null != depots && depots.size() > 0) {
+            oldOrderId = depots.get(0).getId().substring(deptId.length());
+        }
+        return deptId + ContextUtil.getOrderId(oldOrderId, 3);
+    }
+
+    /**
+     * 鏇存柊浠撳簱鐘舵��
+     *
      * @param depotId
      * @param status
      */
@@ -88,15 +174,19 @@
         if (StringUtils.isEmpty(depotId)) {
             return;
         }
-        depotRepository.updateDepotStatus(status, depotId);
+
+        UpdateWrapper<Depot> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.eq("id", depotId).set("depot_status", status);
+        depotMapper.update(null, updateWrapper);
     }
 
     /**
-     * jpa鍒犻櫎浠撳簱璐т綅淇℃伅
+     * 鍒犻櫎浠撳簱璐т綅淇℃伅
+     *
      * @param depot
      */
     public void deleteDepot(Depot depot) {
-        depotRepository.delete(depot);
+        depotMapper.deleteById(depot);
 
         //鍒犻櫎閰嶇疆缂撳瓨
         this.delCacheDepot(depot, depot.getCompanyId());
@@ -104,6 +194,7 @@
 
     /**
      * 鍒锋柊浠撳簱璐т綅缂撳瓨
+     *
      * @param companyId
      */
     public void flushCache(String companyId) {
@@ -111,13 +202,14 @@
             companyId = ContextUtil.getCompanyId();
         }
 
-        List<Depot> list = depotRepository.getDepotByCompanyId(companyId);
+        List<Depot> list = this.getData(companyId, null, false);
 
         this.setCacheDepotList(list, companyId);
     }
 
     /**
      * 璁剧疆缂撳瓨
+     *
      * @param list
      * @param companyId
      */
@@ -126,12 +218,13 @@
         String key;
         for (Depot depot : list) {
             key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
-            redisCache.setCacheObject(key, depot);
+            redisCache.setCacheObject(key, depot, 24, TimeUnit.HOURS);
         }
     }
 
     /**
      * 鍒犻櫎缂撳瓨淇℃伅
+     *
      * @param depot
      * @param companyId
      */
@@ -139,7 +232,7 @@
         if (null == depot) {
             return;
         }
-        if(StringUtils.isEmpty(companyId)){
+        if (StringUtils.isEmpty(companyId)) {
             companyId = ContextUtil.getCompanyId();
         }
         String key = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT, depot.getId());
@@ -148,37 +241,49 @@
 
     /**
      * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鑾峰彇浠撳簱闆嗗悎
+     *
      * @param companyId
      * @return
      */
     public List<Depot> getCacheDepotList(String companyId) {
-        if(StringUtils.isEmpty(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));
+
+        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEPOT) + "*";
+        Collection<String> keys = redisCache.keys(patten);
+        if (null != keys) {
+            for (String key : keys) {
+                if(null == redisCache.getCacheObject(key)){
+                    list = new ArrayList<>();
+                    break;
+                }
+                list.add((Depot) redisCache.getCacheObject(key));
+            }
         }
+
         //缂撳瓨鑾峰彇涓虹┖锛屽垯鏌ヨ鏁版嵁搴�
-        if(list.size() < 1){
-            list = depotRepository.getDepotByCompanyId(companyId);
+        if (list.isEmpty()) {
+            list = this.getData(companyId, null, false);
             setCacheDepotList(list, companyId);
         }
-
-        //閲嶆柊鎺掑簭
-        Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        if (!list.isEmpty()) {
+            // 妫�鏌ユ槸鍚︽湁浠撳簱鐨勬帓搴忓彿涓虹┖
+            for (Depot depot : list) {
+                if (null == depot.getOrderNum()) {
+                    //鎺掑簭鍙蜂负绌猴紝鍒欓粯璁ょ粰1
+                    depot.setOrderNum(1);
+                }
+            }
+            Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        }
         return list;
     }
 
     /**
      * 鑾峰彇缂撳瓨-鏍规嵁缁勭粐缂栫爜鍜屽簱鍖虹紪鐮佽幏鍙栦粨搴撻泦鍚�
+     *
      * @param companyId
      * @param deptId
      * @return
@@ -188,7 +293,7 @@
             return null;
         }
         List<Depot> list = getCacheDepotList(companyId);
-        if(null == list || list.isEmpty()){
+        if (null == list || list.isEmpty()) {
             return null;
         }
         List<Depot> result = new ArrayList<>();
@@ -197,13 +302,16 @@
                 result.add(depot);
             }
         }
-        //閲嶆柊鎺掑簭
-        Collections.sort(result, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        if (!result.isEmpty()) {
+            //閲嶆柊鎺掑簭
+            Collections.sort(list, (p1, p2) -> p1.getOrderNum() - p2.getOrderNum());
+        }
         return result;
     }
 
     /**
      * 鑾峰彇浠撳簱淇℃伅-鏍规嵁浠撳簱缂栫爜鑾峰彇缂撳瓨淇℃伅
+     *
      * @param companyId
      * @param depotId
      * @return
@@ -212,40 +320,41 @@
         if (StringUtils.isEmpty(depotId)) {
             return null;
         }
-        if(StringUtils.isEmpty(companyId)){
+        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);
+        if (null == depot) {
+            depot = depotMapper.selectById(depotId);
             redisCache.setCacheObject(key, depot);
         }
         return depot;
     }
 
     /**
-     * 鏍规嵁搴撳瓨淇℃伅鏇存柊浠撳簱淇℃伅
-     * @param data
+     * 鑾峰彇浠撳簱淇℃伅-鏍规嵁浠撳簱鍚嶇О鑾峰彇浠撳簱ID
+     *
+     * @param deptId
+     * @return
      */
-    public void updateByStore(DepotStore data) {
-
-        Depot depot = this.getCacheDepot(data.getCompanyId(), data.getDepotId());
-        if (null == depot) {
-            return;
+    public String getDepotId(String deptId, String depotName) {
+        if (StringUtils.isEmpty(deptId)) {
+            return null;
+        }
+        if (StringUtils.isEmpty(depotName)) {
+            return null;
         }
 
-        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());
+        List<Depot> depotList = getCacheDepotList(ContextUtil.getCompanyId(), deptId);
+        if (null == depotList || depotList.isEmpty()) {
+            return null;
         }
-
-        this.saveDepot(depot);
+        for (Depot depot : depotList) {
+            if (depotName.equals(depot.getName())) {
+                return depot.getId();
+            }
+        }
+        return null;
     }
 }

--
Gitblit v1.9.3