feat(wms): 添加钢卷库区操作记录的查询和删除功能
- 新增根据钢卷ID、操作类型和出入库类型删除操作记录的方法 - 新增根据二级库区ID和时间范围查询操作记录的功能 - 在WmsCoilWarehouseOperationLogVo中添加创建时间和关联对象字段 - 实现递归查询子库区ID的功能支持范围查询 - 添加钢卷和库区信息的关联查询和映射 - 在控制器中暴露新的API接口供前端调用
This commit is contained in:
@@ -2,6 +2,7 @@ package com.klp.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -96,4 +97,37 @@ public class WmsCoilWarehouseOperationLogController extends BaseController {
|
||||
@PathVariable Long[] logIds) {
|
||||
return toAjax(iWmsCoilWarehouseOperationLogService.deleteWithValidByIds(Arrays.asList(logIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据钢卷 ID、操作类型及出入库类型删除钢卷库区操作记录
|
||||
*
|
||||
* @param coilId 钢卷 ID
|
||||
* @param operationType 操作类型
|
||||
* @param inOutType 出入库类型
|
||||
*/
|
||||
@Log(title = "钢卷库区操作记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/byCoilId")
|
||||
public R<Void> removeByCoilId(@NotNull(message = "钢卷 ID 不能为空")
|
||||
@RequestParam Long coilId,
|
||||
@NotNull(message = "操作类型不能为空")
|
||||
@RequestParam String operationType,
|
||||
@NotNull(message = "出入库类型不能为空")
|
||||
@RequestParam String inOutType) {
|
||||
return toAjax(iWmsCoilWarehouseOperationLogService.deleteByCoilIdAndTypes(coilId, operationType, inOutType));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据二级库区ID和时间范围查询操作记录及钢卷信息
|
||||
*
|
||||
* @param secondWarehouseId 二级库区ID
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
*/
|
||||
@GetMapping("/byWarehouseAndTime")
|
||||
public R<List<WmsCoilWarehouseOperationLogVo>> getByWarehouseAndTime(
|
||||
@RequestParam Long secondWarehouseId,
|
||||
@RequestParam(required = false) Date startTime,
|
||||
@RequestParam(required = false) Date endTime) {
|
||||
return R.ok(iWmsCoilWarehouseOperationLogService.queryBySecondWarehouseIdAndTimeRange(secondWarehouseId, startTime, endTime));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,12 @@ package com.klp.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.klp.common.annotation.ExcelDictFormat;
|
||||
import com.klp.common.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
@@ -55,5 +58,11 @@ public class WmsCoilWarehouseOperationLogVo {
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
private WmsWarehouseVo warehouse;
|
||||
|
||||
private WmsMaterialCoilVo coil;
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,9 @@ import com.klp.domain.bo.WmsCoilWarehouseOperationLogBo;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -46,4 +48,16 @@ public interface IWmsCoilWarehouseOperationLogService {
|
||||
* 校验并批量删除钢卷库区操作记录信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
boolean deleteByCoilIdAndTypes(@NotNull(message = "钢卷 ID 不能为空") Long coilId, @NotNull(message = "操作类型不能为空") String operationType, @NotNull(message = "出入库类型不能为空") String inOutType);
|
||||
|
||||
/**
|
||||
* 根据二级库区ID和时间范围查询操作记录及钢卷信息
|
||||
*
|
||||
* @param secondWarehouseId 二级库区ID
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @return 操作记录列表(含钢卷信息和库区信息)
|
||||
*/
|
||||
List<WmsCoilWarehouseOperationLogVo> queryBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Date startTime, Date endTime);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user