feat(wms): 添加钢卷库区操作记录的查询和删除功能

- 新增根据钢卷ID、操作类型和出入库类型删除操作记录的方法
- 新增根据二级库区ID和时间范围查询操作记录的功能
- 在WmsCoilWarehouseOperationLogVo中添加创建时间和关联对象字段
- 实现递归查询子库区ID的功能支持范围查询
- 添加钢卷和库区信息的关联查询和映射
- 在控制器中暴露新的API接口供前端调用
This commit is contained in:
2026-03-05 13:07:01 +08:00
parent 04de7e267c
commit 625ef6330b
4 changed files with 144 additions and 3 deletions

View File

@@ -1,22 +1,30 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.domain.WmsMaterialCoil;
import com.klp.domain.bo.WmsMaterialCoilBo;
import com.klp.service.IWmsMaterialCoilService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsCoilWarehouseOperationLogBo;
import com.klp.domain.vo.WmsCoilWarehouseOperationLogVo;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.domain.vo.WmsWarehouseVo;
import com.klp.domain.WmsCoilWarehouseOperationLog;
import com.klp.domain.WmsWarehouse;
import com.klp.mapper.WmsCoilWarehouseOperationLogMapper;
import com.klp.mapper.WmsWarehouseMapper;
import com.klp.mapper.WmsMaterialCoilMapper;
import com.klp.service.IWmsCoilWarehouseOperationLogService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
* 钢卷库区操作记录Service业务层处理
@@ -29,6 +37,8 @@ import java.util.Collection;
public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehouseOperationLogService {
private final WmsCoilWarehouseOperationLogMapper baseMapper;
private final WmsWarehouseMapper wmsWarehouseMapper;
private final IWmsMaterialCoilService wmsMaterialCoilService;
/**
* 查询钢卷库区操作记录
@@ -108,4 +118,78 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public boolean deleteByCoilIdAndTypes(Long coilId, String operationType, String inOutType) {
LambdaQueryWrapper<WmsCoilWarehouseOperationLog> lqw = Wrappers.lambdaQuery();
lqw.eq(coilId != null, WmsCoilWarehouseOperationLog::getCoilId, coilId);
lqw.eq(operationType != null, WmsCoilWarehouseOperationLog::getOperationType, operationType);
lqw.eq(inOutType != null, WmsCoilWarehouseOperationLog::getInOutType, inOutType);
return baseMapper.delete(lqw) > 0;
}
@Override
public List<WmsCoilWarehouseOperationLogVo> queryBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Date startTime, Date endTime) {
Set<Long> warehouseIds = getAllChildWarehouseIds(secondWarehouseId);
if (warehouseIds.isEmpty()) {
return new ArrayList<>();
}
LambdaQueryWrapper<WmsCoilWarehouseOperationLog> lqw = Wrappers.lambdaQuery();
lqw.in(WmsCoilWarehouseOperationLog::getActualWarehouseId, warehouseIds);
lqw.eq(WmsCoilWarehouseOperationLog::getOperationType,1);
lqw.eq(WmsCoilWarehouseOperationLog::getInOutType,1);
lqw.ge(startTime != null, WmsCoilWarehouseOperationLog::getCreateTime, startTime);
lqw.le(endTime != null, WmsCoilWarehouseOperationLog::getCreateTime, endTime);
lqw.orderByDesc(WmsCoilWarehouseOperationLog::getCreateTime);
List<WmsCoilWarehouseOperationLogVo> list = baseMapper.selectVoList(lqw);
Set<Long> coilIds = list.stream()
.map(WmsCoilWarehouseOperationLogVo::getCoilId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
Map<Long, WmsMaterialCoilVo> coilMap = new HashMap<>();
if (!coilIds.isEmpty()) {
WmsMaterialCoilBo bo = new WmsMaterialCoilBo();
bo.setCoilIds(coilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
List<WmsMaterialCoilVo> coils = wmsMaterialCoilService.queryList(bo);
for (WmsMaterialCoilVo coil : coils) {
coilMap.put(coil.getCoilId(), coil);
}
}
Map<Long, WmsWarehouseVo> warehouseMap = new HashMap<>();
if (!warehouseIds.isEmpty()) {
LambdaQueryWrapper<WmsWarehouse> warehouseQuery = Wrappers.lambdaQuery();
warehouseQuery.in(WmsWarehouse::getWarehouseId, warehouseIds);
List<WmsWarehouse> warehouses = wmsWarehouseMapper.selectList(warehouseQuery);
for (WmsWarehouse warehouse : warehouses) {
WmsWarehouseVo vo = BeanUtil.toBean(warehouse, WmsWarehouseVo.class);
warehouseMap.put(warehouse.getWarehouseId(), vo);
}
}
for (WmsCoilWarehouseOperationLogVo vo : list) {
vo.setCoil(coilMap.get(vo.getCoilId()));
vo.setWarehouse(warehouseMap.get(vo.getActualWarehouseId()));
}
return list;
}
private Set<Long> getAllChildWarehouseIds(Long parentId) {
Set<Long> result = new HashSet<>();
result.add(parentId);
LambdaQueryWrapper<WmsWarehouse> lqw = Wrappers.lambdaQuery();
lqw.eq(WmsWarehouse::getParentId, parentId);
List<WmsWarehouse> children = wmsWarehouseMapper.selectList(lqw);
for (WmsWarehouse child : children) {
result.addAll(getAllChildWarehouseIds(child.getWarehouseId()));
}
return result;
}
}