src/main/java/com/ruoyi/dto/MapDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/home/dto/AnalysisCustomerContractAmountsDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/home/dto/HomeBusinessDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/dto/MapDto.java
@@ -18,7 +18,7 @@ private String name; @ApiModelProperty(value = "数量") private BigDecimal value; private String value; @ApiModelProperty(value = "占比") private String rate; src/main/java/com/ruoyi/home/dto/AnalysisCustomerContractAmountsDto.java
@@ -17,7 +17,7 @@ public class AnalysisCustomerContractAmountsDto { @ApiModelProperty(value = "合同总金额") private BigDecimal sum; private String sum; @ApiModelProperty(value = "日环比") private String chain; src/main/java/com/ruoyi/home/dto/HomeBusinessDto.java
@@ -15,21 +15,21 @@ public class HomeBusinessDto { @ApiModelProperty("本月销售金额") private BigDecimal monthSaleMoney; private String monthSaleMoney = "0.00"; @ApiModelProperty("本月销售未开票金额") private BigDecimal monthSaleHaveMoney; private String monthSaleHaveMoney = "0.00"; @ApiModelProperty("本月采购金额") private BigDecimal monthPurchaseMoney; private String monthPurchaseMoney = "0.00"; @ApiModelProperty("本月采购未开票金额") private BigDecimal monthPurchaseHaveMoney; private String monthPurchaseHaveMoney = "0.00"; @ApiModelProperty("当前库存数量") private BigDecimal inventoryNum; private String inventoryNum = "0.00"; @ApiModelProperty("今日库存数量") private BigDecimal todayInventoryNum; private String todayInventoryNum = "0.00"; } src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -103,8 +103,8 @@ BigDecimal noInvoiceAmountTotal = salesLedgerProducts.stream().map(SalesLedgerProduct::getNoInvoiceAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); homeBusinessDto.setMonthSaleMoney(contractAmount); homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal); homeBusinessDto.setMonthSaleMoney(contractAmount.setScale(2, RoundingMode.HALF_UP).toString()); homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal.setScale(2, RoundingMode.HALF_UP).toString()); // 创建LambdaQueryWrapper LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.ge(PurchaseLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 大于等于本月第一天 @@ -153,10 +153,10 @@ .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); homeBusinessDto.setMonthPurchaseMoney(receiveAmount); homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount); homeBusinessDto.setInventoryNum(stock); homeBusinessDto.setTodayInventoryNum(stockAmount1); homeBusinessDto.setMonthPurchaseMoney(receiveAmount.setScale(2, RoundingMode.HALF_UP).toString()); homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString()); homeBusinessDto.setInventoryNum(stock.setScale(2, RoundingMode.HALF_UP).toString()); homeBusinessDto.setTodayInventoryNum(stockAmount1.setScale(2, RoundingMode.HALF_UP).toString()); return homeBusinessDto; } @@ -178,7 +178,7 @@ LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY); List<SalesLedger> salesLedgers1 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>() .ge(SalesLedger::getEntryDate, startOfWeek) // 大于等于本周周一 .gt(SalesLedger::getEntryDate, endOfWeek)); .lt(SalesLedger::getEntryDate, endOfWeek.plusDays(1))); // 修改:使用 lt 并加上一天来包含周日 BigDecimal weekContractAmount = salesLedgers1.stream().map(SalesLedger::getContractAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -187,7 +187,7 @@ LocalDate lastYearEndOfWeek = today.minusYears(1).with(DayOfWeek.SUNDAY); List<SalesLedger> salesLedgers2 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>() .ge(SalesLedger::getEntryDate, lastYearStartOfWeek) // 大于等于去年本周周一 .gt(SalesLedger::getEntryDate, lastYearEndOfWeek)); .lt(SalesLedger::getEntryDate, lastYearEndOfWeek.plusDays(1))); // 修改:使用 lt 并加上一天来包含周日 BigDecimal lastYearWeekContractAmount = salesLedgers2.stream().map(SalesLedger::getContractAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -205,18 +205,18 @@ LocalDate yesterday = today.minusDays(1); LocalDate plusDays = today.plusDays(1); List<SalesLedger> salesLedgers3 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>() .ge(SalesLedger::getEntryDate, today) // 大于等于昨天 .lt(SalesLedger::getEntryDate, plusDays)); BigDecimal yesterdayContractAmount = salesLedgers3.stream().map(SalesLedger::getContractAmount) .ge(SalesLedger::getEntryDate, today) // 大于等于今天 .lt(SalesLedger::getEntryDate, plusDays)); // 修改:使用 lt 并加上一天来包含当天 BigDecimal todayContractAmount = salesLedgers3.stream().map(SalesLedger::getContractAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); List<SalesLedger> salesLedgers4 = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>() .ge(SalesLedger::getEntryDate, yesterday) // 大于等于去年昨天 .lt(SalesLedger::getEntryDate, today)); .ge(SalesLedger::getEntryDate, yesterday) // 大于等于昨天 .lt(SalesLedger::getEntryDate, today)); // 修改:使用 lt 而不是 gt BigDecimal lastYearYesterdayContractAmount = salesLedgers4.stream().map(SalesLedger::getContractAmount) .filter(Objects::nonNull) .reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal subtract1 = yesterdayContractAmount.subtract(lastYearYesterdayContractAmount); BigDecimal subtract1 = todayContractAmount.subtract(lastYearYesterdayContractAmount); // 修改:使用 todayContractAmount 而不是 yesterdayContractAmount // 日环比 String chain = ""; if(subtract1.compareTo(BigDecimal.ZERO) == 0 || lastYearYesterdayContractAmount.compareTo(BigDecimal.ZERO) == 0){ @@ -227,7 +227,8 @@ AnalysisCustomerContractAmountsDto analysisCustomerContractAmountsDto = new AnalysisCustomerContractAmountsDto(); analysisCustomerContractAmountsDto.setSum(contractAmount); // 修改:将合同金额保留两位小数 analysisCustomerContractAmountsDto.setSum(contractAmount.setScale(2, RoundingMode.HALF_UP).toString()); analysisCustomerContractAmountsDto.setYny(weekYny); analysisCustomerContractAmountsDto.setChain(chain); @@ -237,7 +238,8 @@ collect.forEach((k,v)->{ MapDto mapDto = new MapDto(); mapDto.setName(k); mapDto.setValue(v); // 修改:将金额值保留两位小数 mapDto.setValue(v.setScale(2, RoundingMode.HALF_UP).toString()); if(contractAmount.compareTo(new BigDecimal(0)) == 0){ mapDto.setRate("0"); }else{ @@ -249,6 +251,7 @@ return analysisCustomerContractAmountsDto; } @Override public QualityStatisticsDto qualityStatistics() { // 获取一周数据 src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java
@@ -166,7 +166,7 @@ @Override public IPage<InvoicePurchaseReportDto> listPurchaseReport(Page page, InvoicePurchaseReportDto invoicePurchaseReportDto) { // 增值税 = 销售的(含税总价-不含税总价)减去采购的(含税总价-不含税总价) return invoicePurchaseMapper.selectPurchaseReport(page, invoicePurchaseReportDto); } src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml
@@ -14,6 +14,9 @@ <if test="req.tenantId != null and req.tenantId != ''"> and tenant_id = #{req.tenantId} </if> <if test="req.status != null and req.status != ''"> and status = #{req.status} </if> order by update_time desc </select> </mapper> src/main/resources/mapper/purchase/InvoicePurchaseMapper.xml
@@ -6,29 +6,48 @@ <select id="selectPurchaseReport" resultType="com.ruoyi.purchase.dto.InvoicePurchaseReportDto"> select A.*, FORMAT(A.contract_amount-A.sale_tax_exclusive_total_price-A.purchase_amount+A.tax_exclusive_total_price,2) as balance_amount from (select sl.customer_contract_no, SELECT A.*, FORMAT(A.sales_tax_amount - A.purchase_tax_amount, 2) AS balance_amount FROM ( SELECT sl.customer_contract_no, sl.id, pl.id as pl_id, pl.id AS pl_id, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount as purchase_amount, sum(slp.tax_exclusive_total_price) /count(slp.id) as sale_tax_exclusive_total_price, sum(slp1.tax_exclusive_total_price) as tax_exclusive_total_price, (sl.contract_amount - pl.contract_amount) as balance, CONCAT(FORMAT((sl.contract_amount - pl.contract_amount) / sl.contract_amount * 100, 2), '%') AS balance_ratio from purchase_ledger pl left join sales_ledger sl on pl.sales_ledger_id = sl.id left join sales_ledger_product slp on slp.sales_ledger_id = sl.id and slp.type = 1 left join sales_ledger_product slp1 on slp1.sales_ledger_id = pl.id and slp1.type = 2 group by sl.customer_contract_no, sl.customer_name, sl.project_name, sl.contract_amount, pl.contract_amount,sl.id,pl.id having sl.customer_contract_no is not null) A slp.tax_inclusive_total_price - slp.tax_exclusive_total_price AS contract_amount, SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price) AS purchase_amount, (slp.tax_exclusive_total_price) / COUNT(slp.id) AS sale_tax_exclusive_total_price, SUM(slp1.tax_exclusive_total_price) AS tax_exclusive_total_price, (slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) - SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price) AS balance, CONCAT( FORMAT( ((slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) - SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price)) / (slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) * 100, 2), '%' ) AS balance_ratio, (slp.tax_inclusive_total_price - slp.tax_exclusive_total_price) AS sales_tax_amount, SUM(slp1.tax_inclusive_total_price - slp1.tax_exclusive_total_price) AS purchase_tax_amount FROM purchase_ledger pl LEFT JOIN sales_ledger sl ON pl.sales_ledger_id = sl.id LEFT JOIN sales_ledger_product slp ON slp.sales_ledger_id = sl.id AND slp.type = 1 LEFT JOIN sales_ledger_product slp1 ON slp1.sales_ledger_id = pl.id AND slp1.type = 2 GROUP BY sl.customer_contract_no, sl.customer_name, sl.project_name, sl.id, pl.id HAVING sl.customer_contract_no IS NOT NULL ) A <where> <if test="c.customerName != null and c.customerName != ''"> and sl.customer_name like concat('%',#{c.customerName},'%') AND A.customer_name LIKE CONCAT('%', #{c.customerName}, '%') </if> </where> </select>