liding
2 天以前 6554bbd0dcbf5a83c9f043b8d193ddbc6a887345
src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -246,47 +246,22 @@
            throw new BaseException("数量不能为空");
        }
        // 如果源单位为空,直接返回原值
        if (sourceUnit == null || sourceUnit.isEmpty()) {
        // 源单位或目标单位为空,或单位相同,或任一单位不是吨/公斤,则不转换
        if (sourceUnit == null || sourceUnit.isEmpty()
                || targetUnit == null || targetUnit.isEmpty()
                || sourceUnit.equals(targetUnit)
                || (!"吨".equals(sourceUnit) && !"公斤".equals(sourceUnit) && !"吨".equals(targetUnit) && !"公斤".equals(targetUnit))) {
            return quantity;
        }
        // 如果源单位和目标单位相同,直接返回
        if (sourceUnit.equals(targetUnit)) {
            return quantity;
        // 吨 <-> 公斤 转换
        if ("吨".equals(targetUnit) && "公斤".equals(sourceUnit)) {
            // 公斤转吨:除以1000,保留2位小数
            return quantity.divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP);
        } else if ("公斤".equals(targetUnit) && "吨".equals(sourceUnit)) {
            // 吨转公斤:乘以1000
            return quantity.multiply(BigDecimal.valueOf(1000));
        }
        // 单位转换
        if ("吨".equals(targetUnit)) {
            // 目标单位是吨,需要将源单位转换为吨
            if ("公斤".equals(sourceUnit)) {
                // 公斤转吨:除以1000
                return quantity.divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP);
            } else if ("克".equals(sourceUnit)) {
                // 克转吨:除以1000000
                return quantity.divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP);
            }
        } else if ("公斤".equals(targetUnit)) {
            // 目标单位是公斤
            if ("吨".equals(sourceUnit)) {
                // 吨转公斤:乘以1000
                return quantity.multiply(BigDecimal.valueOf(1000));
            } else if ("克".equals(sourceUnit)) {
                // 克转公斤:除以1000
                return quantity.divide(BigDecimal.valueOf(1000), 2, RoundingMode.HALF_UP);
            }
        } else if ("克".equals(targetUnit)) {
            // 目标单位是克
            if ("吨".equals(sourceUnit)) {
                // 吨转克:乘以1000000
                return quantity.multiply(BigDecimal.valueOf(1000000));
            } else if ("公斤".equals(sourceUnit)) {
                // 公斤转克:乘以1000
                return quantity.multiply(BigDecimal.valueOf(1000));
            }
        }
        // 无法转换时返回原值
        return quantity;
    }