czt
2025-12-01 096296cd7485c5583c8194d88cca700e3c4d84a0
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/DepotService.java
@@ -1,13 +1,13 @@
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.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -23,46 +23,43 @@
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.eq("dept_id", deptId);
        }
        return depotRepository.getDepot(companyId, deptId);
        if(idDesc){
            //ID倒序
            queryWrapper.orderByDesc("id");
        }else {
            //序号正序
            queryWrapper.orderByAsc("order_num");
        }
        return depotMapper.selectList(queryWrapper);
    }
    /**
     * 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) {
@@ -72,15 +69,42 @@
        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更新仓库状态
     * 获取主键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 +112,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 +132,7 @@
    /**
     * 刷新仓库货位缓存
     *
     * @param companyId
     */
    public void flushCache(String companyId) {
@@ -111,13 +140,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
     */
@@ -132,6 +162,7 @@
    /**
     * 删除缓存信息
     *
     * @param depot
     * @param companyId
     */
@@ -139,7 +170,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,11 +179,12 @@
    /**
     * 获取缓存-根据组织编码获取仓库集合
     *
     * @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) + "*";
@@ -167,8 +199,8 @@
            list.add((Depot) redisCache.getCacheObject(key));
        }
        //缓存获取为空,则查询数据库
        if(list.size() < 1){
            list = depotRepository.getDepotByCompanyId(companyId);
        if (list.size() < 1) {
            list = this.getData(companyId,null, false);
            setCacheDepotList(list, companyId);
        }
@@ -179,6 +211,7 @@
    /**
     * 获取缓存-根据组织编码和库区编码获取仓库集合
     *
     * @param companyId
     * @param deptId
     * @return
@@ -188,7 +221,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<>();
@@ -204,6 +237,7 @@
    /**
     * 获取仓库信息-根据仓库编码获取缓存信息
     *
     * @param companyId
     * @param depotId
     * @return
@@ -212,40 +246,15 @@
        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
     */
    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);
    }
}