src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
@@ -29,7 +29,7 @@ @Schema(description = "计划运行时间") @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @Excel(name = "计划运行时间",sort = 10,dateFormat = "yyyy-MM-dd") @Excel(name = "计划运行时间",sort = 9,dateFormat = "yyyy-MM-dd") private Date planRuntimeTime; /** @@ -51,46 +51,43 @@ private String unit; /** * 数量 * 数量(不在导入模板/导出中展示,导入时按 1 台处理) */ @Excel(name = "数量",sort = 5, type = Excel.Type.EXPORT) private BigDecimal number = BigDecimal.ONE; /** * 含税单价 */ @Excel(name = "含税单价",sort = 6) @Excel(name = "含税单价",sort = 5) private BigDecimal taxIncludingPriceUnit; /** * 含税总价 * 含税总价(不在导入模板/导出中展示,导入时按 含税单价 × 数量 计算) */ @Excel(name = "含税总价",sort = 7, type = Excel.Type.EXPORT) private BigDecimal taxIncludingPriceTotal; /** * 税率 */ @Excel(name = "税率",sort = 8) @Excel(name = "税率",sort = 6) private BigDecimal taxRate; /** * 不含税总价 * 不含税总价(不在导入模板/导出中展示,按税率折算) */ @Excel(name = "不含税总价",sort = 9, type = Excel.Type.EXPORT) private BigDecimal unTaxIncludingPriceTotal; /** * 是否启用 1-启用 0-停用 */ @Excel(name = "启用状态", sort = 9, readConverterExp = "1=启用,0=停用") @Excel(name = "启用状态", sort = 7, readConverterExp = "1=启用,0=停用") private Integer isEnabled; /** * 录入人 */ @Excel(name = "录入人",sort = 9) @Excel(name = "录入人",sort = 8) private String createUser; src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -190,13 +190,20 @@ deviceLedger.setCreateUser(SecurityUtils.getUserId().intValue()); } BeanUtils.copyProperties(c, deviceLedger); // 通过含税单价、数量、税率计算含税总价,不含税总价 deviceLedger.setTaxIncludingPriceTotal(c.getTaxIncludingPriceUnit()); deviceLedger.setNumber(BigDecimal.ONE); // 数量:Excel 未填时按 1 台处理 if (deviceLedger.getNumber() == null) { deviceLedger.setNumber(BigDecimal.ONE); } // 含税总价:Excel 未填时按 含税单价 × 数量 计算 if (deviceLedger.getTaxIncludingPriceTotal() == null && deviceLedger.getTaxIncludingPriceUnit() != null) { deviceLedger.setTaxIncludingPriceTotal(deviceLedger.getTaxIncludingPriceUnit().multiply(deviceLedger.getNumber())); } deviceLedger.setPlanRuntimeTime(DateUtils.toLocalDate(c.getPlanRuntimeTime())); // 计算不含税总价,处理空值情况 if (deviceLedger.getTaxIncludingPriceTotal() != null && c.getTaxRate() != null) { deviceLedger.setUnTaxIncludingPriceTotal(deviceLedger.getTaxIncludingPriceTotal().divide(BigDecimal.ONE.add(c.getTaxRate()), 2, RoundingMode.HALF_UP)); // 不含税总价:含税总价与税率都有值时按税率折算,税率按百分数存储(13 表示 13%),与台账现有数据口径一致 if (deviceLedger.getTaxIncludingPriceTotal() != null && deviceLedger.getTaxRate() != null) { BigDecimal rate = deviceLedger.getTaxRate().divide(new BigDecimal(100), 4, RoundingMode.HALF_UP); deviceLedger.setUnTaxIncludingPriceTotal(deviceLedger.getTaxIncludingPriceTotal() .divide(BigDecimal.ONE.add(rate), 2, RoundingMode.HALF_UP)); } return deviceLedger; }