package cn.iocoder.yudao.module.erp.service.statistics; import cn.iocoder.yudao.module.erp.dal.mysql.statistics.ErpPurchaseStatisticsMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDateTime; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.erp.controller.admin.statistics.vo.purchase.ErpPurchasePriceRespVO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; /** * ERP 采购统计 Service 实现类 * * @author 超级管理员 */ @Service public class ErpPurchaseStatisticsServiceImpl implements ErpPurchaseStatisticsService { @Resource private ErpPurchaseStatisticsMapper purchaseStatisticsMapper; @Override public BigDecimal getPurchasePrice(LocalDateTime beginTime, LocalDateTime endTime) { return purchaseStatisticsMapper.getPurchasePrice(beginTime, endTime); } @Override public PageResult getPriceAnalysis(PageParam page, Long productId, LocalDateTime[] orderTime) { LocalDateTime begin = orderTime != null && orderTime.length > 0 ? orderTime[0] : null; LocalDateTime end = orderTime != null && orderTime.length > 1 ? orderTime[1] : null; var result = purchaseStatisticsMapper.selectPriceAnalysis(new Page<>(page.getPageNo(), page.getPageSize()), productId, begin, end); result.getRecords().forEach(row -> row.setPriceChangeRate(PurchasePriceMetrics.changeRate(row.getLatestPrice(), row.getPreviousPrice()))); return new PageResult<>(result.getRecords(), result.getTotal()); } }