feat(wms): 新增钢卷报表查询接口和解锁功能

- 添加 queryReportList 方法用于轻量级报表数据查询
- 新增 listForReport 控制器接口返回必要字段提升传输性能
- 创建 WmsMaterialCoilReportVo 类定义报表数据结构
- 添加 unlockCoil 方法解除钢卷锁定状态
- 实现 unlockCoil 控制器接口支持 PUT 请求
- 更新数据库映射配置移除多余关联查询字段
- 优化报表查询 SQL 仅返回必要字段提升查询效率
This commit is contained in:
2026-05-19 14:18:18 +08:00
parent d50bbb1ce3
commit af3c6314a0
6 changed files with 115 additions and 2 deletions

View File

@@ -61,6 +61,15 @@ public class WmsMaterialCoilController extends BaseController {
return iWmsMaterialCoilService.queryPageList(bo, pageQuery);
}
/**
* 查询钢卷物料表列表报表专用轻量级仅返回coilId、netWeight、warehouseId、qualityStatus、team
* 使用与list相同的查询条件但只返回少量字段以提升传输性能
*/
@GetMapping("/listForReport")
public List<WmsMaterialCoilReportVo> listForReport(WmsMaterialCoilBo bo) {
return iWmsMaterialCoilService.queryReportList(bo);
}
/**
* 查询钢卷物料表列表(包含发货绑定增强字段)
*/
@@ -677,6 +686,16 @@ public class WmsMaterialCoilController extends BaseController {
return R.ok(material, "查询成功");
}
/**
* 解除钢卷锁定状态
* 将钢卷的 exclusiveStatus 字段设置为 0
*/
@Log(title = "钢卷物料表", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/unlock/{coilId}")
public R<Void> unlockCoil(@NotNull(message = "主键不能为空") @PathVariable("coilId") Long coilId) {
return toAjax(iWmsMaterialCoilService.unlockCoil(coilId));
}
}

View File

@@ -0,0 +1,27 @@
package com.klp.domain.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 钢卷物料报表VO轻量级仅返回报表展示所需字段
*
* @author Joshi
* @date 2025-07-18
*/
@Data
public class WmsMaterialCoilReportVo {
// 钢卷ID 用于导出
private Long coilId;
// 用于计算
private BigDecimal netWeight;
// 实际库区ID
private Long warehouseId;
// 质量状态
private String qualityStatus;
// 班组
private String team;
}

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.klp.domain.WmsMaterialCoil;
import com.klp.domain.vo.WmsMaterialCoilAnnealExportVo;
import com.klp.domain.vo.WmsMaterialCoilDeliveryExportVo;
import com.klp.domain.vo.WmsMaterialCoilReportVo;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
@@ -98,6 +99,14 @@ List<WmsMaterialCoilDeliveryExportVo> selectDeliveryExportListByCoilIds(@Param("
*/
List<WmsMaterialCoilAnnealExportVo> selectAnnealExportListByCoilIds(@Param("coilIds") java.util.Collection<Long> coilIds);
/**
* 分页查询钢卷报表数据(轻量级,仅返回必要字段)
*
* @param lqw 查询条件
* @return 分页报表数据
*/
List<WmsMaterialCoilReportVo> selectPageReportList(@Param("ew") QueryWrapper<WmsMaterialCoil> lqw);
List<CoilTrimRawVo> selectCoilTrimStatistics();
List<CategoryWidthRawVo> selectCategoryWidthStatistics();

View File

@@ -314,6 +314,15 @@ public interface IWmsMaterialCoilService {
*/
String queryEarliestHotRolledMaterial(String enterCoilNo);
/**
* 查询钢卷报表数据(轻量级,仅返回必要字段)
* 使用与分页列表相同的查询条件,但只返回少量字段以提升传输性能
*
* @param bo 查询条件
* @return 报表数据
*/
List<WmsMaterialCoilReportVo> queryReportList(WmsMaterialCoilBo bo);
/**
* 退火报表导出数据列表(按 coilIds
*
@@ -322,6 +331,15 @@ public interface IWmsMaterialCoilService {
*/
List<WmsMaterialCoilAnnealExportVo> queryAnnealExportList(WmsMaterialCoilBo bo);
/**
* 解除钢卷锁定状态
* 将钢卷的 exclusiveStatus 字段设置为 0
*
* @param coilId 钢卷ID
* @return 操作结果
*/
Boolean unlockCoil(@NotNull(message = "钢卷ID不能为空") Long coilId);
/**
* 导出异常报表(按 coilIds联查钢卷信息、异常信息、改判原因
* 一个钢卷可能对应多个异常,钢卷信息合并居中,异常信息逐条显示

View File

@@ -3050,6 +3050,17 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
return wmsMaterialCoilDeliveryExportVos;
}
/**
* 查询钢卷报表数据(轻量级,仅返回必要字段)
* 使用与分页列表相同的查询条件,但只返回少量字段以提升传输性能
*/
@Override
@Transactional(readOnly = true)
public List<WmsMaterialCoilReportVo> queryReportList(WmsMaterialCoilBo bo) {
QueryWrapper<WmsMaterialCoil> lqw = buildQueryWrapperPlus(bo);
return baseMapper.selectPageReportList(lqw);
}
/**
* 退火报表导出:按 coilIds 查询钢卷 + 退火计划联查数据
*/
@@ -5709,5 +5720,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
return material;
}
@Override
public Boolean unlockCoil(Long coilId) {
if (coilId == null) {
throw new RuntimeException("钢卷ID不能为空");
}
WmsMaterialCoil coil = baseMapper.selectById(coilId);
if (coil == null) {
throw new RuntimeException("钢卷不存在");
}
LambdaUpdateWrapper<WmsMaterialCoil> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(WmsMaterialCoil::getCoilId, coilId)
.set(WmsMaterialCoil::getExclusiveStatus, 0);
return baseMapper.update(null, updateWrapper) > 0;
}
}