Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsWarehouseServiceImpl.java
Joshi e99d7709d2 feat(warehouse): 添加仓库使用次数统计功能
- 在WmsMaterialCoilMapper中新增selectWarehouseIdCount方法用于统计仓库钢卷数量
- 在WmsWarehouseBo中新增orderByUseCount字段支持按使用次数排序
- 修改WmsWarehouseServiceImpl实现按使用次数或序号排序逻辑
- 创建WarehouseUseCountTask定时任务每晚1点更新仓库使用次数
- 实现定时计算各仓库中钢卷数量并更新到useCount字段功能
2026-04-16 14:25:54 +08:00

110 lines
3.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsWarehouseBo;
import com.klp.domain.vo.WmsWarehouseVo;
import com.klp.domain.WmsWarehouse;
import com.klp.mapper.WmsWarehouseMapper;
import com.klp.service.IWmsWarehouseService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 仓库/库区/库位自关联Service业务层处理
*
* @author JR
* @date 2025-07-18
*/
@RequiredArgsConstructor
@Service
public class WmsWarehouseServiceImpl implements IWmsWarehouseService {
private final WmsWarehouseMapper baseMapper;
/**
* 查询仓库/库区/库位自关联
*/
@Override
public WmsWarehouseVo queryById(Long warehouseId){
return baseMapper.selectVoById(warehouseId);
}
/**
* 查询仓库/库区/库位自关联列表
*/
@Override
public List<WmsWarehouseVo> queryList(WmsWarehouseBo bo) {
LambdaQueryWrapper<WmsWarehouse> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsWarehouse> buildQueryWrapper(WmsWarehouseBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getParentId() != null, WmsWarehouse::getParentId, bo.getParentId());
lqw.eq(StringUtils.isNotBlank(bo.getWarehouseCode()), WmsWarehouse::getWarehouseCode, bo.getWarehouseCode());
lqw.like(StringUtils.isNotBlank(bo.getWarehouseName()), WmsWarehouse::getWarehouseName, bo.getWarehouseName());
lqw.eq(bo.getWarehouseType() != null, WmsWarehouse::getWarehouseType, bo.getWarehouseType());
lqw.eq(bo.getSortNo() != null, WmsWarehouse::getSortNo, bo.getSortNo());
lqw.eq(bo.getUseCount() != null, WmsWarehouse::getUseCount, bo.getUseCount());
lqw.eq(bo.getIsEnabled() != null, WmsWarehouse::getIsEnabled, bo.getIsEnabled());
// 排序逻辑orderByUseCount为true时按useCount降序否则按sortNo升序
if (Boolean.TRUE.equals(bo.getOrderByUseCount())) {
lqw.orderByDesc(WmsWarehouse::getUseCount).orderByAsc(WmsWarehouse::getSortNo);
} else {
lqw.orderByAsc(WmsWarehouse::getSortNo);
}
return lqw;
}
/**
* 新增仓库/库区/库位自关联
*/
@Override
public Boolean insertByBo(WmsWarehouseBo bo) {
WmsWarehouse add = BeanUtil.toBean(bo, WmsWarehouse.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setWarehouseId(add.getWarehouseId());
}
return flag;
}
/**
* 修改仓库/库区/库位自关联
*/
@Override
public Boolean updateByBo(WmsWarehouseBo bo) {
WmsWarehouse update = BeanUtil.toBean(bo, WmsWarehouse.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsWarehouse entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除仓库/库区/库位自关联
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}