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 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; } 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 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 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("éæ ·æ¶é´çéæ ¼å¼ä¸æ£ç¡®ï¼åºä¸º yyyy-MM"); } } return baseMapper.selectInsOrderRates(page, wrapper); return wrapper; } @Override 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