feat(wms/coil): 新增已绑定钢卷列表按发货计划创建时间倒序排序功能

在钢卷查询业务中,当查询已绑定钢卷列表且未指定计划ID(planId)时,新增按关联的发货计划创建时间倒序排序功能,确保较新的计划优先展示。

主要改动:
1. 在WmsMaterialCoilBo中新增orderByPlanDesc布尔字段,用于控制排序逻辑
2. 在WmsMaterialCoilMapper中新增selectVoPagePlusPlanOrder方法及对应的XML映射,通过关联发货计划表支持按计划创建时间排序
3. 在WmsMaterialCoilServiceImpl中调整查询逻辑:当orderByPlanDesc为true时调用新的查询方法,并在查询条件中补充排序规则
4. 在WmsDeliveryWaybillDetailController中设置orderByPlanDesc条件:当planId为空时启用该排序
5. 重构XML映射文件,提取公共SQL片段以提高可维护性

调整前,已绑定钢卷列表在无planId时仅按状态排序;调整后,新增按发货计划创建时间倒序排序,便于用户快速查看最新计划相关的钢卷。
This commit is contained in:
2026-06-02 11:11:55 +08:00
parent 8572a60044
commit 4295a28f33
5 changed files with 130 additions and 187 deletions

View File

@@ -148,7 +148,10 @@ public class WmsDeliveryWaybillDetailController extends BaseController {
return new TableDataInfo<>();
}
bo.setCoilIds(boundCoilIds.stream().map(String::valueOf).collect(java.util.stream.Collectors.joining(",")));
bo.setStatusFirst(true); // 未发货的排在前面
bo.setStatusFirst(true);
if (planId == null) {
bo.setOrderByPlanDesc(true);
}
return iWmsMaterialCoilService.queryPageListWithBindInfo(bo, pageQuery);
}

View File

@@ -396,5 +396,11 @@ public class WmsMaterialCoilBo extends BaseEntity {
* 镀铬卷号
*/
private String chromePlateCoilNo;
/**
* 是否按计划创建时间倒序排序已绑定钢卷列表无planId时按计划新旧排列
*/
@TableField(exist = false)
private Boolean orderByPlanDesc;
}

View File

@@ -45,6 +45,11 @@ public interface WmsMaterialCoilMapper extends BaseMapperPlus<WmsMaterialCoilMap
*/
Page<WmsMaterialCoilVo> selectVoPagePlusOrderBy(Page<Object> build, @Param("ew") QueryWrapper<WmsMaterialCoil> lqw);
/**
* orderByPlanDesc=true 时使用:包含发货计划 join支持按计划创建时间排序
*/
Page<WmsMaterialCoilVo> selectVoPagePlusPlanOrder(Page<Object> build, @Param("ew") QueryWrapper<WmsMaterialCoil> lqw);
List<WmsMaterialCoilVo> selectVoListWithDynamicJoin(@Param("ew")QueryWrapper<WmsMaterialCoil> lqw);
Map<String, Object> selectCountForSpecSync(@Param("ew") QueryWrapper<WmsMaterialCoil> qw);
@@ -91,7 +96,7 @@ public interface WmsMaterialCoilMapper extends BaseMapperPlus<WmsMaterialCoilMap
* @param coilIds 钢卷ID集合
* @return 发货报表导出数据
*/
List<WmsMaterialCoilDeliveryExportVo> selectDeliveryExportListByCoilIds(@Param("coilIds") java.util.Collection<Long> coilIds);
List<WmsMaterialCoilDeliveryExportVo> selectDeliveryExportListByCoilIds(@Param("coilIds") java.util.Collection<Long> coilIds);
/**
* 退火报表导出按钢卷ID列表联查钢卷 + 退火计划 + 退火计划钢卷关系)

View File

@@ -487,7 +487,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
private Page<WmsMaterialCoilVo> queryMaterialCoilPage(WmsMaterialCoilBo bo, PageQuery pageQuery) {
QueryWrapper<WmsMaterialCoil> qw = buildQueryWrapperPlus(bo);
Page<WmsMaterialCoilVo> result;
if (Boolean.TRUE.equals(bo.getOrderBy())) {
if (Boolean.TRUE.equals(bo.getOrderByPlanDesc())) {
result = baseMapper.selectVoPagePlusPlanOrder(pageQuery.build(), qw);
} else if (Boolean.TRUE.equals(bo.getOrderBy())) {
result = baseMapper.selectVoPagePlusOrderBy(pageQuery.build(), qw);
} else {
result = baseMapper.selectVoPagePlus(pageQuery.build(), qw);
@@ -933,6 +935,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
qw.apply("COALESCE(ca.abnormal_count, 0) >= {0}", bo.getMinAbnormalCount());
}
// 排序:
// 按计划创建时间倒序已绑定钢卷列表无planId时优先按计划排序
if (Boolean.TRUE.equals(bo.getOrderByPlanDesc())) {
qw.orderByDesc("pl.create_time");
}
// 已绑定钢卷列表中,未发货(status=0)的排在前面
if (Boolean.TRUE.equals(bo.getStatusFirst())) {
qw.orderByAsc("mc.status = 1");