| | |
| | | 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; |
| | |
| | | public class DepotService { |
| | | |
| | | @Resource |
| | | private DepotRepository depotRepository; |
| | | private DepotMapper depotMapper; |
| | | @Resource |
| | | private RedisCache redisCache; |
| | | |
| | | /** |
| | | * 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) { |
| | |
| | | if (StringUtils.isEmpty(depot.getDeptId())) { |
| | | depot.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | //默认顺序号 |
| | | if (null == depot.getOrderNum()) { |
| | | depot.setOrderNum(1); |
| | | } |
| | | //主键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); |
| | | } |
| | | //默认顺序号 |
| | | 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); |
| | | List<Depot> depots = this.getData(null, deptId, true); |
| | | String oldOrderId = null; |
| | | if(null != depots && depots.size() > 0){ |
| | | 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 |
| | | */ |
| | |
| | | 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()); |
| | |
| | | |
| | | /** |
| | | * 刷新仓库货位缓存 |
| | | * |
| | | * @param companyId |
| | | */ |
| | | public void flushCache(String companyId) { |
| | |
| | | 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 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 删除缓存信息 |
| | | * |
| | | * @param depot |
| | | * @param companyId |
| | | */ |
| | |
| | | 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()); |
| | |
| | | |
| | | /** |
| | | * 获取缓存-根据组织编码获取仓库集合 |
| | | * |
| | | * @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) + "*"; |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | |
| | | /** |
| | | * 获取缓存-根据组织编码和库区编码获取仓库集合 |
| | | * |
| | | * @param companyId |
| | | * @param deptId |
| | | * @return |
| | |
| | | return null; |
| | | } |
| | | List<Depot> list = getCacheDepotList(companyId); |
| | | if(null == list || list.isEmpty()){ |
| | | if (null == list || list.isEmpty()) { |
| | | return null; |
| | | } |
| | | List<Depot> result = new ArrayList<>(); |
| | |
| | | |
| | | /** |
| | | * 获取仓库信息-根据仓库编码获取缓存信息 |
| | | * |
| | | * @param companyId |
| | | * @param depotId |
| | | * @return |
| | |
| | | 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); |
| | | } |
| | | } |