| | |
| | | import com.ruoyi.business.service.SalesRecordService; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.system.mapper.SysUserMapper; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | public IPage<SalesRecordDto> selectSalesRecordList(Page<SalesRecord> page, SalesRecordDto salesRecordDto) { |
| | | // 1. 创建查询条件,按创建时间倒序排序 |
| | | LambdaQueryWrapper<SalesRecord> queryWrapper = new LambdaQueryWrapper<>(); |
| | | |
| | | // 按日期查询 |
| | | if (salesRecordDto.getSaleDate() != null) { |
| | | queryWrapper.eq(SalesRecord::getSaleDate, salesRecordDto.getSaleDate()); |
| | | } |
| | | |
| | | // 按煤种名称查询 |
| | | if (StringUtils.isNotBlank(salesRecordDto.getCoal())) { |
| | | LambdaQueryWrapper<CoalInfo> coalQueryWrapper = new LambdaQueryWrapper<>(); |
| | | coalQueryWrapper.like(CoalInfo::getCoal, salesRecordDto.getCoal()); |
| | | List<CoalInfo> coalInfos = coalInfoMapper.selectList(coalQueryWrapper); |
| | | |
| | | if (!coalInfos.isEmpty()) { |
| | | List<Long> coalIds = coalInfos.stream() |
| | | .map(CoalInfo::getId) |
| | | .collect(Collectors.toList()); |
| | | queryWrapper.in(SalesRecord::getCoalId, coalIds); |
| | | } else { |
| | | // 如果没有匹配的煤种,直接返回空结果 |
| | | queryWrapper.eq(SalesRecord::getCoalId, -1L); // 使用不可能存在的ID |
| | | } |
| | | } |
| | | |
| | | queryWrapper.orderByDesc(SalesRecord::getCreateTime); |
| | | |
| | | // 2. 获取分页的销售记录 |
| | |
| | | ) |
| | | )); |
| | | |
| | | //构建结果(保持煤种顺序,销量默认为0) |
| | | List<Map<String, Object>> resultMouth = new ArrayList<>(); |
| | | // 2. 创建 resultMouth,存储煤种及其销量(Map 结构) |
| | | Map<String, BigDecimal> resultMouthMap = new LinkedHashMap<>(); |
| | | for (CoalInfo coal : allCoalTypes) { |
| | | Map<String, Object> item = new LinkedHashMap<>(); |
| | | item.put("coal", coal.getCoal()); // 煤种名称 |
| | | item.put("saleQuantity", salesByCoalId.getOrDefault(coal.getId(), BigDecimal.valueOf(0))); // 销量 |
| | | resultMouth.add(item); |
| | | resultMouthMap.put( |
| | | coal.getCoal(), // 煤种名称(如 "无烟煤") |
| | | salesByCoalId.getOrDefault(coal.getId(), BigDecimal.valueOf(0)) // 销量 |
| | | ); |
| | | } |
| | | |
| | | result.put("revenueAmount", revenueAmount.setScale(2, RoundingMode.HALF_UP)); |
| | |
| | | result.put("trendQuantity", trendQuantity); |
| | | result.put("revenueDistribution", revenueDistribution); |
| | | result.put("salesResults", results); |
| | | result.put("resultMouth", resultMouth); |
| | | result.put("resultMouth", resultMouthMap); |
| | | |
| | | return result; |
| | | } |