设计人员连续保存多个内部图纸版本(A9/A10/A11)后,物料详情或打印页面仍展示较旧版本。所有入口应选择语义上的最高版本 A11,而非按字符串排序。
// InternalVersionHelper.java — 图纸版本排序逻辑
// 问题:A9、A10、A11 的字符串 compareTo 顺序 ≠ 业务版本顺序
public static String pickLatestByVersion(List<String> versions) {
return versions.stream()
.max(String::compareTo) // BUG: "A9" > "A11" 字符串序
.orElse(null);
}
// BizMaterialListServiceImpl.java — 物料详情图纸
private String pickLatestDrawing(List<BizDrawing> drawings) {
return drawings.stream()
.map(BizDrawing::getInternalVersion)
.max(String::compareTo)
.orElse(null);
}
// BizProductionInfoPrintServiceImpl.java — 打印图纸
private String getDrawingVersionForPrint(String designTaskId) {
List<BizDrawing> list = drawingMapper.selectByTaskId(designTaskId);
if (list.isEmpty()) return "";
list.sort((a, b) -> a.getInternalVersion().compareTo(b.getInternalVersion()));
return list.get(list.size() - 1).getInternalVersion();
}