package com.ruoyi.unattended.service.impl; 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.account.mapper.AccountReconciliationMapper; import com.ruoyi.account.pojo.AccountReconciliation; import com.ruoyi.account.service.AccountReconciliationService; import com.ruoyi.unattended.mapper.UnattendedOperationMapper; import com.ruoyi.unattended.pojo.UnattendedOperation; import com.ruoyi.unattended.pojo.vo.UnattendedOperationVo; import com.ruoyi.unattended.service.UnattendedOperationService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @AllArgsConstructor @Service public class UnattendedOperationServiceImpl extends ServiceImpl implements UnattendedOperationService { private UnattendedOperationMapper unattendedOperationMapper; @Override public List weighbridgeDailyReport(LocalDateTime startDate, LocalDateTime endDate) { List unattendedOperations = unattendedOperationMapper.selectList(Wrappers.lambdaQuery().between(UnattendedOperation::getWeightTime, startDate, endDate)); Map> listMap = unattendedOperations.stream().collect(Collectors.groupingBy(UnattendedOperation::getWeightTime)); List list = listMap.entrySet().stream().map(entry -> { UnattendedOperationVo unattendedOperationVo = new UnattendedOperationVo(); unattendedOperationVo.setDate(entry.getKey().toLocalDate()); unattendedOperationVo.setTripCount((long) entry.getValue().size()); unattendedOperationVo.setCargoVolume(entry.getValue().stream().map(UnattendedOperation::getGrossWeight).mapToLong(BigDecimal::longValue).sum()); long sum = entry.getValue().stream().map(UnattendedOperation::getPositionOffset).mapToLong(BigDecimal::longValue).sum(); unattendedOperationVo.setDeviationRate(BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(entry.getValue().size()), 4, BigDecimal.ROUND_HALF_UP)); return unattendedOperationVo; }).collect(Collectors.toList()); return list; } }