From 3728fa293e1faf4bf4f9bf41105b84ddb43dc82e Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 02 十一月 2026 16:53:02 +0800
Subject: [PATCH] feat(order-rates): 新增筛选条件下全部订单费用汇总接口
---
inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderRatesSummaryDto.java | 16 ++++++++
inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml | 34 ++++++++++++-----
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java | 16 +++++++
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java | 3 +
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java | 6 +++
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java | 3 +
6 files changed, 67 insertions(+), 11 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java
index 1e1fdbe..4a9d969 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java
@@ -44,6 +44,12 @@
}
+ @Operation(summary = "姹囨�荤瓫閫夋潯浠朵笅鍏ㄩ儴璁㈠崟璐圭敤")
+ @GetMapping("/selectRatesSummary")
+ public Result selectRatesSummary(SampleOrderDto sampleOrderDto, String startMonth, String endMonth) {
+ return Result.success(insOrderRatesService.selectRatesSummary(sampleOrderDto, startMonth, endMonth));
+ }
+
/**
* 鏇存柊璐圭敤浼樻儬涓庡娉�
* @param insOrder
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderRatesSummaryDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderRatesSummaryDto.java
new file mode 100644
index 0000000..47d8d2f
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/OrderRatesSummaryDto.java
@@ -0,0 +1,16 @@
+package com.ruoyi.inspect.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "璁㈠崟璐圭敤姹囨��")
+public class OrderRatesSummaryDto {
+
+ @Schema(description = "绛涢�夋潯浠朵笅鐨勮鍗曟�绘暟锛堝寘鍚墍鏈夊垎椤碉級")
+ private Long count;
+
+ // 閲戦浠ュ瓧绗︿覆杩斿洖锛岄伩鍏嶆祻瑙堝櫒娴偣鏁拌浆鎹㈡崯澶辩簿搴︺��
+ @Schema(description = "绛涢�夋潯浠朵笅鐨勮垂鐢ㄥ悎璁★紙鍏冿級锛屾湁浼樻儬鏃舵寜浼樻儬鍚庨噾棰濊绠楋紝浠ュ瓧绗︿覆杩斿洖")
+ private String totalAmount;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java
index b151a85..b09d1dc 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.inspect.dto.SampleOrderDto;
+import com.ruoyi.inspect.dto.OrderRatesSummaryDto;
import com.ruoyi.inspect.dto.TemplateRateDto;
import com.ruoyi.inspect.pojo.InsOrderRates;
import org.apache.ibatis.annotations.Param;
@@ -19,6 +20,8 @@
*/
public interface InsOrderRatesMapper extends BaseMapper<InsOrderRates> {
+ OrderRatesSummaryDto selectRatesSummary(@Param("ew") QueryWrapper<SampleOrderDto> ew);
+
/**
* 鏌ヨ璁㈠崟璐圭敤鍒楄〃
* @return
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java
index 9043094..ba95326 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.dto.SampleOrderDto;
+import com.ruoyi.inspect.dto.OrderRatesSummaryDto;
import com.ruoyi.inspect.dto.TemplateRateDto;
import com.ruoyi.inspect.pojo.InsOrderRates;
@@ -17,6 +18,8 @@
*/
public interface InsOrderRatesService extends IService<InsOrderRates> {
+ OrderRatesSummaryDto selectRatesSummary(SampleOrderDto sampleOrderDto, String startMonth, String endMonth);
+
/**
* 鏌ヨ璁㈠崟璐圭敤鍒楄〃锛堝彲鎸夐�佹牱鏈堜唤鍖洪棿绛涢�夛級
* @param page
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java
index 49afc1e..137adb6 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.dto.SampleOrderDto;
+import com.ruoyi.inspect.dto.OrderRatesSummaryDto;
import com.ruoyi.inspect.dto.TemplateRateDto;
import com.ruoyi.inspect.mapper.InsOrderRatesMapper;
import com.ruoyi.inspect.pojo.InsOrderRates;
@@ -38,12 +39,25 @@
*/
@Override
public IPage<SampleOrderDto> selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto, String startMonth, String endMonth) {
+ return baseMapper.selectInsOrderRates(page, ratesFilter(sampleOrderDto, startMonth, endMonth));
+ }
+
+ @Override
+ public OrderRatesSummaryDto selectRatesSummary(SampleOrderDto sampleOrderDto, String startMonth, String endMonth) {
+ return baseMapper.selectRatesSummary(ratesFilter(sampleOrderDto, startMonth, endMonth));
+ }
+
+ private QueryWrapper<SampleOrderDto> ratesFilter(SampleOrderDto sampleOrderDto, String startMonth, String endMonth) {
QueryWrapper<SampleOrderDto> wrapper = QueryWrappers.queryWrappers(sampleOrderDto);
if (wrapper == null) {
wrapper = Wrappers.query();
}
if (StrUtil.isNotBlank(startMonth) || StrUtil.isNotBlank(endMonth)) {
try {
+ if (StrUtil.isNotBlank(startMonth) && StrUtil.isNotBlank(endMonth)
+ && YearMonth.parse(startMonth).isAfter(YearMonth.parse(endMonth))) {
+ throw new ErrorException("寮�濮嬫湀浠戒笉鑳芥櫄浜庣粨鏉熸湀浠�");
+ }
if (StrUtil.isNotBlank(startMonth)) {
wrapper.ge("sample_date", YearMonth.parse(startMonth).atDay(1));
}
@@ -54,7 +68,7 @@
throw new ErrorException("閫佹牱鏃堕棿绛涢�夋牸寮忎笉姝g‘锛屽簲涓� yyyy-MM");
}
}
- return baseMapper.selectInsOrderRates(page, wrapper);
+ return wrapper;
}
@Override
diff --git a/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml
index 0778648..d12bbc5 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderRatesMapper.xml
@@ -1,30 +1,44 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.ruoyi.inspect.mapper.InsOrderRatesMapper">
- <!-- 鏌ヨ璐圭敤鍒楄〃 -->
- <select id="selectInsOrderRates" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
- select *
- from (select io.*,
+ <!-- 鍒楄〃鍜屽叏閮ㄦ眹鎬诲叡鐢ㄧ浉鍚岃鍗曡寖鍥达紝姣忎釜璁㈠崟浠呰璐逛竴娆°�� -->
+ <sql id="ratesOrders">
+ select io.*,
case
when
io.type_source = 0
then io.sample_view
else io.sample end sampleStr,
GROUP_CONCAT(DISTINCT isa.model SEPARATOR ' ') AS sample_model,
- COALESCE(sum(st.price), 0) total_price
+ MAX(rates.total_price) total_price
from ins_order io
LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
- left join ins_order_standard_template iost on iost.ins_order_id = io.id
- left join standard_template st on st.id = iost.template_id
- where iost.id is not null
- and io.state != 5
- group by io.id) a
+ join (select iost.ins_order_id, COALESCE(sum(st.price), 0) total_price
+ from ins_order_standard_template iost
+ left join standard_template st on st.id = iost.template_id
+ group by iost.ins_order_id) rates on rates.ins_order_id = io.id
+ where io.state != 5
+ group by io.id
+ </sql>
+ <sql id="ratesFilter">
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
+ </sql>
+ <select id="selectInsOrderRates" resultType="com.ruoyi.inspect.dto.SampleOrderDto">
+ select * from (<include refid="ratesOrders"/>) a
+ <include refid="ratesFilter"/>
order by a.sample_date desc, a.id desc
</select>
+ <select id="selectRatesSummary" resultType="com.ruoyi.inspect.dto.OrderRatesSummaryDto">
+ select count(*) as count,
+ COALESCE(sum(case when a.is_discount = 1 and a.discount_amount is not null
+ then a.discount_amount else a.total_price end), 0) as total_amount
+ from (<include refid="ratesOrders"/>) a
+ <include refid="ratesFilter"/>
+ </select>
+
<!-- 鏇存柊璁㈠崟鐨勮垂鐢ㄤ紭鎯犱笌澶囨敞 -->
<update id="updateOrderFee">
update ins_order
--
Gitblit v1.9.3