fuliqi
2024-09-04 74ae355248c0bccadc80fb37bdb36aee5318fee8
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -1,12 +1,15 @@
package com.ycl.platform.service.impl;
import annotation.DataScope;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.dto.CheckScoreDTO;
import com.ycl.platform.domain.dto.CheckScoreIndexDTO;
import com.ycl.platform.domain.dto.ScoreIndexDTO;
import com.ycl.platform.domain.entity.*;
import com.ycl.platform.domain.vo.CheckIndexCarVO;
import com.ycl.platform.domain.vo.CheckIndexFaceVO;
import com.ycl.platform.domain.vo.CheckIndexVideoVO;
import com.ycl.platform.domain.vo.CheckScoreDetailVO;
import com.ycl.platform.mapper.CheckRuleMapper;
import com.ycl.platform.mapper.CheckScoreMapper;
@@ -22,6 +25,7 @@
import com.ycl.utils.DateUtils;
import com.ycl.utils.SecurityUtils;
import com.ycl.utils.StringUtils;
import constant.CheckConstants;
import enumeration.general.PublishType;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@@ -77,8 +81,18 @@
        CheckScoreDetailVO checkScoreDetailVO = new CheckScoreDetailVO();
        //根据id读取score
        CheckScore checkScore = scoreMapper.selectCheckScoreById(checkScoreId);
        Integer templateId = 0;
        //方便切换改为:根据score考核类别和dto考核标签查模板规则和权重,注意同种类同标签只能有一个模板
        QueryWrapper<CheckTemplate> wrapper = new QueryWrapper<>();
        wrapper.eq("examine_tag",checkScoreIndexDTO.getExamineTag());
        wrapper.eq("examine_category",checkScore.getExamineCategory());
        Optional<CheckTemplate> first = templateMapper.selectList(wrapper).stream().findFirst();
        if(first.isPresent()){
            CheckTemplate checkTemplate = first.get();
            templateId = checkTemplate.getId();
        }
        //读取规则以及权重
        List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(checkScore.getTemplateId());
        List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(templateId);
        List<CheckRule> checkRules = new ArrayList<>();
        //读取模板对应所有规则
@@ -99,7 +113,7 @@
                .setDate(checkScoreIndexDTO.getDate())
                .setQuarter(checkScoreIndexDTO.getQuarter());
        scoreIndexDTO.setParams(checkScoreIndexDTO.getParams());
        scoreIndexDTO.setExamineTag(checkScore.getExamineTag());
        scoreIndexDTO.setExamineTag(checkScoreIndexDTO.getExamineTag());
        //获当月份
        if (StringUtils.isEmpty(scoreIndexDTO.getDate()) && CollectionUtils.isEmpty(checkScoreIndexDTO.getQuarter())) {
            //如果查询条件不含参数,查询积分对应创建时间
@@ -144,7 +158,7 @@
        // 如果数据为空,则查询之前的数据
        if (checkScores.isEmpty()) {
            CheckScore one = new LambdaQueryChainWrapper<>(baseMapper).select(CheckScore::getCreateTime).last("order by create_time desc limit 1").one();
            CheckScore one = scoreMapper.getLast(checkScore);
            if (Objects.nonNull(one)) {
                calendar.setTime(one.getCreateTime());
                getCheckScore(checkScore, calendar);
@@ -244,14 +258,12 @@
    @Override
    public void exportIndex(HttpServletResponse response, CheckScore checkScoreDTO) throws IOException {
        String date = checkScoreDTO.getDate();
        Integer examineTag = null;
        //如果请求参数时间为空,查这条记录的时间
        if (StringUtils.isEmpty(checkScoreDTO.getDate()) && CollectionUtils.isEmpty(checkScoreDTO.getQuarter())) {
            CheckScore checkScore = getById(checkScoreDTO.getId());
            Date createTime = checkScore.getCreateTime();
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
            date = formatter.format(createTime);
            examineTag = checkScore.getExamineTag();
        }
        /** 导三张sheet */
@@ -259,29 +271,35 @@
        CheckIndexCar checkIndexCar = new CheckIndexCar();
        checkIndexCar.setDate(date);
        checkIndexCar.setQuarter(checkScoreDTO.getQuarter());
        if (examineTag != null) {
            checkIndexCar.setExamineTag(Short.parseShort(examineTag + ""));
        }
        List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(checkIndexCar);
        ExcelExp e1 = new ExcelExp("车辆考核指标数据", checkIndexCars, CheckIndexCar.class);
        List<CheckIndexCarVO> checkIndexCarVOS = new ArrayList<>();
        for (CheckIndexCar indexCar : checkIndexCars) {
            CheckIndexCarVO excelVo = CheckIndexCar.getExcelVo(indexCar);
            checkIndexCarVOS.add(excelVo);
        }
        ExcelExp e1 = new ExcelExp("车辆考核指标数据", checkIndexCarVOS, CheckIndexCarVO.class);
        //人脸
        CheckIndexFace checkIndexFace = new CheckIndexFace();
        checkIndexFace.setDate(date);
        checkIndexFace.setQuarter(checkScoreDTO.getQuarter());
        if (examineTag != null) {
            checkIndexFace.setExamineTag(Short.parseShort(examineTag + ""));
        }
        List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(checkIndexFace);
        ExcelExp e2 = new ExcelExp("人脸考核指标数据", checkIndexFaces, CheckIndexFace.class);
        List<CheckIndexFaceVO> checkIndexFaceVOS = new ArrayList<>();
        for (CheckIndexFace indexFace : checkIndexFaces) {
            CheckIndexFaceVO excelVo = CheckIndexFace.getExcelVo(indexFace);
            checkIndexFaceVOS.add(excelVo);
        }
        ExcelExp e2 = new ExcelExp("人脸考核指标数据", checkIndexFaceVOS, CheckIndexFaceVO.class);
        //视频
        CheckIndexVideo checkIndexVideo = new CheckIndexVideo();
        checkIndexVideo.setDate(date);
        checkIndexVideo.setQuarter(checkScoreDTO.getQuarter());
        if (examineTag != null) {
            checkIndexVideo.setExamineTag(Short.parseShort(examineTag + ""));
        }
        List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(checkIndexVideo);
        ExcelExp e3 = new ExcelExp("视频考核指标数据", checkIndexVideos, CheckIndexVideo.class);
        List<CheckIndexVideoVO> checkIndexVideoVOS = new ArrayList<>();
        for (CheckIndexVideo indexVideo : checkIndexVideos) {
            CheckIndexVideoVO excelVo = CheckIndexVideo.getExcelVo(indexVideo);
            checkIndexVideoVOS.add(excelVo);
        }
        ExcelExp e3 = new ExcelExp("视频考核指标数据", checkIndexVideoVOS, CheckIndexVideoVO.class);
        List<ExcelExp> mysheet = new ArrayList<>();
        mysheet.add(e1);
@@ -297,7 +315,7 @@
        SysUser user = SecurityUtils.getLoginUser().getUser();
        if (!user.isAdmin()) {
            for (SysRole role : roles) {
                if (role.getPermissions().contains("check:score:publish")) {
                if (role.getPermissions().contains("check:score:role:publish")) {
                    Map<String, Object> params = checkScore.getParams();
                    params.put("publish", PublishType.PUBLISHED.getCode());
                }