zxl
2025-04-17 da269c70838314527ca3e5c281be54e19fde1b2f
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -30,6 +30,7 @@
import enumeration.general.PublishType;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -145,66 +146,76 @@
    /**
     * 查询考核积分卡片列表
     *
     * 这里显示当天的成绩如果没有当天成绩则显示最后一次成绩
     * @param checkScore 考核积分
     * @return 考核积分
     */
    @Override
    @DataScope(deptAlias = "d", userAlias = "u")
    public Map<Long, List<CheckScore>> selectCheckScoreList(CheckScore checkScore) {
    public Map<Long, List<CheckScore>> selectCheckScoreList(CheckScore query) {
        CheckScore checkScore = new CheckScore();
        BeanUtils.copyProperties(query,checkScore);
        //区县只能看已发布
        roleControl(checkScore);
        // 获取数据日期时间
        Calendar calendar = Calendar.getInstance();
        getCheckScore(checkScore, calendar);
        // 转换数据日期时间、标签
        getCheckScore(checkScore);
        // 一号查询之前的数据
        if (LocalDateTime.now().getDayOfMonth() == 1) {
            calendar.add(Calendar.DAY_OF_MONTH, -1);
        }
//        // 一号查询之前的数据
//        if (LocalDateTime.now().getDayOfMonth() == 1) {
//            calendar.add(Calendar.DAY_OF_MONTH, -1);
//        }
        List<CheckScore> checkScores = scoreMapper.selectCheckScoreMap(checkScore);
        log.error("打印:{}",checkScores);
        // 如果数据为空,则查询之前的数据
        if (checkScores.isEmpty()) {
        if (CollectionUtils.isEmpty(checkScores) && (query.getStartDate() ==null || query.getStartDate() ==null)) {
            CheckScore one = scoreMapper.getLast(checkScore);
            if (Objects.nonNull(one)) {
                calendar.setTime(one.getCreateTime());
                getCheckScore(checkScore, calendar);
                checkScore.setStartDate(one.getCreateTime());
                checkScore.setEndDate(one.getCreateTime());
                getCheckScore(checkScore);
                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));
        Map<Long, List<CheckScore>> map = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
        for (Map.Entry<Long, List<CheckScore>> entry : map.entrySet()) {
            List<CheckScore> tempList = getCheckScores(entry);
            // 迭代结束后,将新元素添加到原始列表中
            entry.getValue().addAll(tempList);
        }
        return map;
    }
    private void getCheckScore(CheckScore checkScore, Calendar calendar) {
        // 0.省厅月度 1.省厅季度 2.市局月度 3.市局季度 4.公安部月度 5.公安部季度
        switch (checkScore.getExamineTag()) {
            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 1, 3, 5:
                checkScore.setStartDate(DateUtils.getQuarterStart(calendar).getTime());
                checkScore.setEndDate(DateUtils.getQuarterEnd(calendar).getTime());
                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;
    private List<CheckScore> getCheckScores(Map.Entry<Long, List<CheckScore>> entry) {
        List<CheckScore> tempList = new ArrayList<>(); // 临时存储需要添加的元素
        for (CheckScore listCheckScore : entry.getValue()) {
            if (listCheckScore.getExamineCategory() == 1 && entry.getValue().size() == 1) {
                CheckScore face = new CheckScore();
                face.setExamineCategory((short) 2);
                face.setScore(new BigDecimal("0.0"));
                CheckScore car = new CheckScore();
                car.setExamineCategory((short) 3);
                car.setScore(new BigDecimal("0.0"));
                tempList.add(face);
                tempList.add(car);
            }
        }
        return tempList;
    }
    private void getCheckScore(CheckScore checkScore) {
        checkScore.setStartDate(DateUtils.getDayStart(checkScore.getStartDate()));
        checkScore.setEndDate(DateUtils.getDayEnd(checkScore.getEndDate()));
        // 0.省厅 1.市局 2.公安部
        if (checkScore.getExamineTag() == 0)
            checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Province + ""));
        if (checkScore.getExamineTag() == 1)
            checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_County + ""));
        if (checkScore.getExamineTag() == 2)
            checkScore.setExamineTag(Integer.valueOf(CheckConstants.Examine_Tag_Dept + ""));
    }
    /**
@@ -522,7 +533,11 @@
    @Override
    public List<Map<String, Object>> home() {
        return baseMapper.home();
        Date now = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -7);
        Date startTime = calendar.getTime();
        return baseMapper.home(startTime,now);
    }