feat(wms): 实现钢卷列表按发货状态排序功能

- 在WmsMaterialCoilBo中新增statusFirst字段用于控制排序逻辑
- 在WmsDeliveryWaybillDetailController中设置statusFirst为true以启用新排序
- 在WmsMaterialCoilServiceImpl中实现按发货状态排序的SQL逻辑
- 未发货钢卷(status=0)将排在已发货钢卷之前显示
- 保持原有的仓库ID和创建时间排序规则作为备选方案
This commit is contained in:
2026-03-05 16:30:18 +08:00
parent e8b40d2fa3
commit 4a11ae2079
3 changed files with 12 additions and 3 deletions

View File

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

View File

@@ -249,5 +249,9 @@ public class WmsMaterialCoilBo extends BaseEntity {
// 父钢卷id
private String parentCoilId;
// 已绑定钢卷列表中,未发货(status=0)的排在前面
@TableField(exist = false)
private Boolean statusFirst;
}

View File

@@ -649,9 +649,13 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
qw.apply("COALESCE(ca.abnormal_count, 0) >= {0}", bo.getMinAbnormalCount());
}
// 排序:
// 再按实际库位ID升序库位ID为自增升序即可满足“先生成的库位在前”
// - 否则:保持原有创建时间倒序
if (Boolean.TRUE.equals(bo.getOrderBy())) {
// 已绑定钢卷列表中,未发货(status=0)的排在前面
if (Boolean.TRUE.equals(bo.getStatusFirst())) {
qw.orderByAsc("mc.status = 1");
qw.orderByAsc("mc.status");
} else if (Boolean.TRUE.equals(bo.getOrderBy())) {
// 再按实际库位ID升序库位ID为自增升序即可满足“先生成的库位在前”
// - 否则:保持原有创建时间倒序
// MySQL: false(0) < true(1),因此 "IS NULL" 升序可实现非空在前、空值在后
qw.orderByAsc("mc.actual_warehouse_id IS NULL");
qw.orderByAsc("mc.actual_warehouse_id");