package com.ruoyi.inspect.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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; import com.ruoyi.inspect.service.InsOrderRatesService; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.YearMonth; import java.time.format.DateTimeParseException; /** * 订单费用表 * * @author zhuo * @since 2025-02-28 */ @Service public class InsOrderRatesServiceImpl extends ServiceImpl implements InsOrderRatesService { /** * 查询订单费用列表(可按送样月份区间筛选) * @param page * @param sampleOrderDto * @param startMonth 起始月份 yyyy-MM * @param endMonth 结束月份 yyyy-MM * @return */ @Override public IPage 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 ratesFilter(SampleOrderDto sampleOrderDto, String startMonth, String endMonth) { QueryWrapper 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)); } if (StrUtil.isNotBlank(endMonth)) { wrapper.le("sample_date", YearMonth.parse(endMonth).atEndOfMonth()); } } catch (DateTimeParseException e) { throw new ErrorException("送样时间筛选格式不正确,应为 yyyy-MM"); } } return wrapper; } @Override public boolean updateOrderFee(Integer id, Integer isDiscount, BigDecimal discountAmount, String feeRemark) { return baseMapper.updateOrderFee(id, isDiscount, discountAmount, feeRemark) > 0; } @Override public IPage selectTemplateRatesDetail(Page page, Integer insOrderId) { return baseMapper.selectTemplateRatesDetail(page, insOrderId); } }