库存用千克维护,物料清单用克填写需求时,系统直接比较数字判断齐套。2kg 库存 vs 1200g 需求被误判为缺料。
// BizMaterialListServiceImpl.java — 齐套判断
private boolean isStockSufficient(BizMaterialListItem item, StockRecord stock) {
// BUG: 直接比较数字,忽略单位差异
// stockCount 单位是 kg,count 单位是 g,不可直接比较
BigDecimal stockCount = stock.getCount();
BigDecimal required = item.getCount();
return stockCount.compareTo(required) >= 0;
// 2 (kg) vs 1200 (g) → false,实际 2000g > 1200g 是足够的
}
// 更隐蔽的问题:单位字段分散在不同实体中
// 库存表字段叫 countUnit,物料行叫 materialUnit,请购单叫 quantityUnit
// 同一业务概念三个不同字段名,极易遗漏单位转换