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<UnattendedOperationMapper, UnattendedOperation> implements UnattendedOperationService {
|
|
|
private UnattendedOperationMapper unattendedOperationMapper;
|
|
@Override
|
public List<UnattendedOperationVo> weighbridgeDailyReport(LocalDateTime startDate, LocalDateTime endDate) {
|
List<UnattendedOperation> unattendedOperations = unattendedOperationMapper.selectList(Wrappers.<UnattendedOperation>lambdaQuery().between(UnattendedOperation::getWeightTime, startDate, endDate));
|
Map<LocalDateTime, List<UnattendedOperation>> listMap = unattendedOperations.stream().collect(Collectors.groupingBy(UnattendedOperation::getWeightTime));
|
List<UnattendedOperationVo> 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;
|
}
|
}
|