fuliqi
2024-09-30 b5df1cee65f3e9dcf554efcd3f1642a8c79d1e76
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -3,6 +3,7 @@
import annotation.DataScope;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.base.CheckIndex;
import com.ycl.platform.domain.dto.CheckResultExportDTO;
@@ -10,11 +11,9 @@
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.query.DashboardQuery;
import com.ycl.platform.domain.vo.*;
import com.ycl.platform.mapper.CheckRuleMapper;
import com.ycl.platform.mapper.CheckScoreMapper;
import com.ycl.platform.mapper.CheckTemplateMapper;
import com.ycl.platform.mapper.CheckTemplateRuleMapper;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ICheckIndexFaceService;
import com.ycl.platform.service.ICheckIndexVideoService;
@@ -27,6 +26,7 @@
import com.ycl.utils.SecurityUtils;
import com.ycl.utils.StringUtils;
import constant.CheckConstants;
import enumeration.general.AreaDeptEnum;
import enumeration.general.PublishType;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@@ -40,6 +40,7 @@
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
@@ -71,7 +72,8 @@
    private ICheckIndexVideoService indexVideoService;
    @Autowired
    private ISysDeptService deptService;
    @Autowired
    private PlatformMapper platformMapper;
    /**
     * 查询考核积分指标
@@ -173,27 +175,34 @@
                checkScores = scoreMapper.selectCheckScoreMap(checkScore);
            }
        }
        //分数保留一位小数
        checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
        return checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
    }
    private void getCheckScore(CheckScore checkScore, Calendar calendar) {
        // 0 省厅月度 1 市局月度 2 省厅季度 3 市局季度
        // 0.省厅月度 1.省厅季度 2.市局月度 3.市局季度 4.公安部月度 5.公安部季度
        switch (checkScore.getExamineTag()) {
            case 0, 1:
            case 0, 2 ,4:
                checkScore.setEndDate(calendar.getTime());
                calendar.set(Calendar.DAY_OF_MONTH, 1);
                checkScore.setStartDate(calendar.getTime());
                if(checkScore.getExamineTag() == 0) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Province+""));
                if(checkScore.getExamineTag() == 2) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_County+""));
                if(checkScore.getExamineTag() == 4) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Dept+""));
                break;
            case 2, 3:
            case 1, 3, 5:
                checkScore.setStartDate(DateUtils.getQuarterStart(calendar).getTime());
                checkScore.setEndDate(DateUtils.getQuarterEnd(calendar).getTime());
                checkScore.setExamineTag(checkScore.getExamineTag() == 2 ? 0 : 1);
                if(checkScore.getExamineTag() == 1) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Province+""));
                if(checkScore.getExamineTag() == 3) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_County+""));
                if(checkScore.getExamineTag() == 5) checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Dept+""));
                break;
        }
    }
    /**
     * 查询考核积分卡片列表
     * 查询考核积分卡片折线图
     *
     * @param checkScore 考核积分
     * @return 考核积分
@@ -217,6 +226,8 @@
            checkScore.setDate(date);
        }
        List<CheckScore> checkScores = scoreMapper.selectCheckScoreList(checkScore);
        //分数保留一位小数
        checkScores.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
        return checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
    }
@@ -231,7 +242,9 @@
    public List<CheckScore> page(CheckScore checkScore) {
        //区县只能看已发布
        roleControl(checkScore);
        return scoreMapper.selectCheckScoreList(checkScore);
        List<CheckScore> scoreList = scoreMapper.selectCheckScoreList(checkScore);
        scoreList.stream().forEach(item -> item.setScore(item.getScore().setScale(1, RoundingMode.HALF_UP)));
        return scoreList;
    }
    /**
@@ -291,31 +304,37 @@
     */
    @Override
    public void exportIndex(HttpServletResponse response, CheckResultExportDTO exportDTO) throws IOException {
        String date = exportDTO.getDate();
//        String date = exportDTO.getDate();
        //如果请求参数时间为空,查这条记录的时间
        if (StringUtils.isEmpty(exportDTO.getDate()) && CollectionUtils.isEmpty(exportDTO.getQuarter())) {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
            if (exportDTO.getId() != null) {
                CheckScore checkScore = getById(exportDTO.getId());
                Date createTime = checkScore.getCreateTime();
                date = formatter.format(createTime);
            } else {
                //防止卡片页面导出不传scoreId,导致报错
                date = formatter.format(new Date());
            }
        }
//        if (StringUtils.isEmpty(exportDTO.getDate()) && CollectionUtils.isEmpty(exportDTO.getQuarter())) {
//            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
//            if (exportDTO.getId() != null) {
//                CheckScore checkScore = getById(exportDTO.getId());
//                Date createTime = checkScore.getCreateTime();
//                date = formatter.format(createTime);
//            } else {
//                //防止卡片页面导出不传scoreId,导致报错
//                date = formatter.format(new Date());
//            }
//        }
        /** 导三张sheet */
        //车辆
        CheckIndexCar checkIndexCar = new CheckIndexCar();
        checkIndexCar.setDate(date);
//        checkIndexCar.setDate(date);
        checkIndexCar.setQuarter(exportDTO.getQuarter());
        checkIndexCar.setDeptId(exportDTO.getDeptId());
        checkIndexCar.setDeptIds(exportDTO.getDeptIds());
        checkIndexCar.setExamineTags(exportDTO.getExamineTags());
        //权限控制 只能查看已发布
        roleControl(checkIndexCar);
        List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(checkIndexCar);
        List<CheckIndexCar> checkIndexCars = new ArrayList<>();
        for (Integer examineTag : exportDTO.getExamineTags()) {
            checkIndexCar.setExamineTag(Short.valueOf(examineTag + ""));
            if (examineTag == 0) {
                checkIndexCar.setExamineTagQuery(1);
            }
            checkIndexCars.addAll(indexCarService.selectCheckIndexCarList(checkIndexCar));
        }
        //计算平均值放在excel最后
        if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexCars)) {
            //先区分考核标签,再区分区县
@@ -350,14 +369,20 @@
        ExcelExp e1 = new ExcelExp("车辆考核指标数据", checkIndexCarVOS, CheckIndexCarVO.class);
        //人脸
        CheckIndexFace checkIndexFace = new CheckIndexFace();
        checkIndexFace.setDate(date);
//        checkIndexFace.setDate(date);
        checkIndexFace.setQuarter(exportDTO.getQuarter());
        checkIndexFace.setDeptId(exportDTO.getDeptId());
        checkIndexFace.setDeptIds(exportDTO.getDeptIds());
        checkIndexFace.setExamineTags(exportDTO.getExamineTags());
        //权限控制 只能查看已发布
        roleControl(checkIndexFace);
        List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(checkIndexFace);
        List<CheckIndexFace> checkIndexFaces = new ArrayList<>();
        for (Integer examineTag : exportDTO.getExamineTags()) {
            checkIndexFace.setExamineTag(Short.valueOf(examineTag + ""));
            if (examineTag == 0) {
                checkIndexFace.setExamineTagQuery(1);
            }
            checkIndexFaces.addAll(indexFaceService.selectCheckIndexFaceList(checkIndexFace));
        }
        //计算平均值放在excel最后
        if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexFaces)) {
            //先区分考核标签,再区分区县
@@ -392,14 +417,20 @@
        ExcelExp e2 = new ExcelExp("人脸考核指标数据", checkIndexFaceVOS, CheckIndexFaceVO.class);
        //视频
        CheckIndexVideo checkIndexVideo = new CheckIndexVideo();
        checkIndexVideo.setDate(date);
//        checkIndexVideo.setDate(date);
        checkIndexVideo.setQuarter(exportDTO.getQuarter());
        checkIndexVideo.setDeptId(exportDTO.getDeptId());
        checkIndexVideo.setDeptIds(exportDTO.getDeptIds());
        checkIndexVideo.setExamineTags(exportDTO.getExamineTags());
        //权限控制 只能查看已发布
        roleControl(checkIndexVideo);
        List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(checkIndexVideo);
        List<CheckIndexVideo> checkIndexVideos = new ArrayList<>();
        for (Integer examineTag : exportDTO.getExamineTags()) {
            checkIndexVideo.setExamineTag(Short.valueOf(examineTag + ""));
            if (examineTag == 0) {
                checkIndexVideo.setExamineTagQuery(1);
            }
            checkIndexVideos.addAll(indexVideoService.selectCheckIndexVideoList(checkIndexVideo));
        }
        //计算平均值放在excel最后
        if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexVideos)) {
            //先区分考核标签,再区分区县
@@ -500,6 +531,29 @@
        return scoreMapper.calculate(startDate, endDate, category);
    }
    //大屏展示考核得分
    @Override
    public Map<String, Map<String, Object>> dashboard(DashboardQuery dashboardQuery) {
        Date now = new Date();
        dashboardQuery.setStartTime(DateUtils.getMouthStart(now));
        dashboardQuery.setEndTime(DateUtils.getMouthEnd(now));
        List<CheckScore> dashboard = scoreMapper.dashboard(dashboardQuery);
        //初始化各个区县数据
        Map<String, Map<String, Object>> resultMap = new HashMap<>();
        for (AreaDeptEnum value : AreaDeptEnum.values()) {
            Map<String, Object> map = new HashMap<>();
            map.put("score", 0);
            resultMap.put(value.getName(), map);
        }
        //填充各个区县数据
        for (CheckScore checkScore : dashboard) {
            Map<String, Object> map = new HashMap<>();
            map.put("score", checkScore.getScore().setScale(1,RoundingMode.HALF_UP));
            resultMap.put(checkScore.getDeptName(), map);
        }
        return resultMap;
    }
    //    /**
//     * 新增考核积分
//     *