ReportService.java 5.21 KB
package com.ruoyi.service;

import com.ruoyi.driver.domain.Driver;
import com.ruoyi.driver.mapper.DriverMapper;
import com.ruoyi.driver.mapper.DriverSchedulingMapper;
import com.ruoyi.eexception.domain.EquipmentException;
import com.ruoyi.eexception.mapper.EquipmentExceptionMapper;
import com.ruoyi.in.domain.SignIn;
import com.ruoyi.in.mapper.SignInMapper;
import com.ruoyi.pojo.entity.DriverScheduling;
import com.ruoyi.pojo.request.ReportViewRequestVo;
import com.ruoyi.pojo.request.ReportErrorRequestVo;
import com.ruoyi.pojo.response.ReportErrorResponseVo;
import com.ruoyi.pojo.response.ReportSignInResponseVo;
import com.ruoyi.pojo.response.ReportViewResponseVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

import static com.ruoyi.common.ErrorTypeProperties.EQUIPMENT_ERROR;
import static com.ruoyi.common.ErrorTypeProperties.SIGN_IN_ERROR;

/**
 * @author 20412
 */
@Service
public class ReportService {

    @Autowired
    private SignInMapper signInMapper;

    @Autowired
    private EquipmentExceptionMapper exceptionMapper;

    @Autowired
    private DriverMapper driverMapper;

    @Resource
    private SchedulingService schedulingService;

    @Autowired
    private DriverSchedulingMapper schedulingMapper;

    /**
     * 查询报表信息
     */
    public List<ReportViewResponseVo> getReportScrollViewTable(ReportViewRequestVo requestVo, HttpServletResponse response) {
        List<ReportViewResponseVo> reportScrollViewTable = schedulingService.queryReportTableResponseVo(requestVo,response);
        return reportScrollViewTable;
    }

    public List<ReportErrorResponseVo> getErrorReportList(ReportErrorRequestVo request) {
        // 获取基础报表信息
        List<SignIn> signInList = signInMapper.getSignErrorList(request);
        List<EquipmentException> exceptionList = exceptionMapper.getEquipmentErrorList(request);
        // 封装到集合返回前端
        List<ReportErrorResponseVo> responses = new ArrayList<>();
        // 获取对应名称
        Set<String> jobCodes = new HashSet<>();
        signInList.stream().forEach(item -> {
            jobCodes.add(item.getJobCode());
        });
        exceptionList.stream().forEach(item -> {
            jobCodes.add(item.getJobCode());
        });
        Map<String, String> names = driverMapper.getNameByJobCode(jobCodes).stream().collect(Collectors.toMap(Driver::getJobCode, Driver::getPersonnelName));
        if (SIGN_IN_ERROR.equals(request.getErrorType())) {
            copyToResponse(names, signInList, responses);
        } else if (EQUIPMENT_ERROR.equals(request.getErrorType())) {
            copyToResponseByException(names, exceptionList, responses);
        } else {
            copyToResponse(names, signInList, responses);
            copyToResponseByException(names, exceptionList, responses);
        }
        responses = sortListByCreateTime(responses);

        // 清除缓存
        jobCodes.clear();
        signInList.clear();
        exceptionList.clear();
        return responses;
    }

    private List<ReportErrorResponseVo> sortListByCreateTime(List<ReportErrorResponseVo> responses) {
        responses = responses.stream().sorted(Comparator.comparing(ReportErrorResponseVo::getCreateTime, Comparator.reverseOrder())).collect(Collectors.toList());
        return responses;
    }

    private void copyToResponseByException(Map<String, String> names, List<EquipmentException> exceptionList, List<ReportErrorResponseVo> responses) {
        exceptionList.forEach(item -> {
            ReportErrorResponseVo vo = new ReportErrorResponseVo();
            vo.setName(names.get(item.getJobCode()));
            vo.setImage(item.getImage());
            vo.setRemark(item.getRemark());
            vo.setCreateTime(item.getCreateTime());
            vo.setDeviceId(item.getDeviceId());
            vo.setErrorType(EQUIPMENT_ERROR);
            responses.add(vo);
        });
    }

    private void copyToResponse(Map<String, String> names, List<SignIn> signInList, List<ReportErrorResponseVo> responses) {
        signInList.forEach(item -> {
            ReportErrorResponseVo vo = new ReportErrorResponseVo();
            vo.setName(names.get(item.getJobCode()));
            vo.setImage(item.getImage());
            vo.setRemark(item.getRemark());
            vo.setCreateTime(item.getCreateTime());
            vo.setJobCode(item.getJobCode());
//            vo.setDeviceId();
            vo.setErrorType(SIGN_IN_ERROR);
            responses.add(vo);
        });
    }

    public String getDateDay(Date createTime) {
        SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");
        return simple.format(createTime);
    }

    public List<ReportViewResponseVo> exportReportList(ReportViewRequestVo requestVo, HttpServletResponse response) {

        return null;
    }

    public List<DriverScheduling> getReportDetail(ReportViewRequestVo vo, HttpServletResponse response) {
        List<DriverScheduling> toDay = schedulingMapper.queryToDay(vo.getDate(), vo.getName(), vo.getJobCode(), vo.getLineName());
        return null;
    }
}