| | |
| | | package com.ruoyi.system.service.impl; |
| | | |
| | | import cn.afterturn.easypoi.excel.annotation.Excel; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.basic.PageInfo; |
| | |
| | | import com.ruoyi.system.domain.*; |
| | | import com.ruoyi.system.dto.CheckoutDTO; |
| | | import com.ruoyi.system.dto.TOrderSaleDTO; |
| | | import com.ruoyi.system.export.SumGeneratorClient; |
| | | import com.ruoyi.system.export.SumGeneratorDetailClient; |
| | | import com.ruoyi.system.mapper.TOrderSaleGoodsMapper; |
| | | import com.ruoyi.system.mapper.TOrderSaleMapper; |
| | | import com.ruoyi.system.query.*; |
| | |
| | | public List<GoodsProfitVO> profitDetailsExport(ProfitDetailsQuery query) { |
| | | return this.baseMapper.profitDetailsExport(query); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteByShopId(Long shopId) { |
| | | this.baseMapper.deleteByShopId(shopId); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Double> getDataGeneratorSaleDetailOrderMoney(TDataGeneratorSaleQuery query) { |
| | | if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ |
| | | if(Objects.nonNull(query.getTimeType())){ |
| | | LocalDateTime startTime = null; |
| | | LocalDateTime endTime = null; |
| | | switch (query.getTimeType()){ |
| | | case 1: |
| | | // 今日 |
| | | startTime = DateUtils.getDayStart(LocalDateTime.now()); |
| | | endTime = DateUtils.getDayEnd(LocalDateTime.now()); |
| | | break; |
| | | case 2: |
| | | // 昨日 |
| | | startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); |
| | | endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); |
| | | break; |
| | | case 3: |
| | | // 近7天 |
| | | startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); |
| | | endTime = DateUtils.getDayEnd(LocalDateTime.now()); |
| | | break; |
| | | case 4: |
| | | // 近30天 |
| | | startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); |
| | | endTime = DateUtils.getDayEnd(LocalDateTime.now()); |
| | | break; |
| | | } |
| | | query.setStartTime(DateUtils.localDateTimeToDate(startTime)); |
| | | query.setEndTime(DateUtils.localDateTimeToDate(endTime)); |
| | | } |
| | | } |
| | | return this.baseMapper.getDataGeneratorSaleDetailOrderMoney(query); |
| | | } |
| | | |
| | | @Override |
| | | public SumGeneratorClient sumExport(ProfitDetailsQuery query) { |
| | | List<SumGeneratorDetailClient> sumGeneratorDetailClient = this.baseMapper.sumExport(query); |
| | | |
| | | for (SumGeneratorDetailClient generatorDetailClient : sumGeneratorDetailClient) { |
| | | generatorDetailClient.setSingleAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getOrderCount()),2,BigDecimal.ROUND_DOWN)); |
| | | generatorDetailClient.setPerAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getPerCount()),2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | |
| | | SumGeneratorClient sumGeneratorClient = new SumGeneratorClient(); |
| | | sumGeneratorClient.setActualAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setOrderCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getOrderCount).reduce(Integer::sum).get()); |
| | | sumGeneratorClient.setSingleAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getSingleAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setPerCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerCount).reduce(Integer::sum).get()); |
| | | sumGeneratorClient.setPerAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerAmount).reduce(BigDecimal::add).get()); |
| | | |
| | | sumGeneratorClient.setAllMoney(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get()); |
| | | sumGeneratorClient.setSingleAvgAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getPerCountSum()))); |
| | | sumGeneratorClient.setPerCapitaAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getOrderCountSum()))); |
| | | |
| | | sumGeneratorClient.setOrderStatistics(sumGeneratorDetailClient); |
| | | |
| | | return sumGeneratorClient; |
| | | } |
| | | } |