From 9ca86187d65db0180f6d23b8efd13136b6db394c Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 20 九月 2024 11:45:40 +0800
Subject: [PATCH] 考核成绩导出优化

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java |  204 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 142 insertions(+), 62 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
index 1294a76..e05e86c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -10,6 +10,7 @@
 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;
@@ -173,6 +174,8 @@
                 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));
     }
 
@@ -193,7 +196,7 @@
     }
 
     /**
-     * 鏌ヨ鑰冩牳绉垎鍗$墖鍒楄〃
+     * 鏌ヨ鑰冩牳绉垎鍗$墖鎶樼嚎鍥�
      *
      * @param checkScore 鑰冩牳绉垎
      * @return 鑰冩牳绉垎
@@ -217,6 +220,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 +236,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,45 +298,62 @@
      */
     @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());
+//            }
+//        }
 
         /** 瀵间笁寮爏heet */
         //杞﹁締
         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));
+        }
         //璁$畻骞冲潎鍊兼斁鍦╡xcel鏈�鍚�
-        if (exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexCars)) {
-            //鍏堝尯鍒嗗悇涓尯鍘匡紝鍐嶅尯鍒嗚�冩牳鏍囩
-            Map<Long, List<CheckIndexCar>> carMap = checkIndexCars.stream().collect(Collectors.groupingBy(CheckIndexCar::getDeptId));
-            carMap.forEach((deptId,list)->{
-                List<CheckIndexCar> provinceList = list.stream().filter(car -> CheckConstants.Examine_Tag_Province.equals(car.getExamineTag())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(provinceList)) {
-                    checkIndexCars.add(CheckIndexCar.calculateAverage(provinceList));
-                }
-                List<CheckIndexCar> countyList = list.stream().filter(car -> CheckConstants.Examine_Tag_County.equals(car.getExamineTag())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(countyList)) {
-                    checkIndexCars.add(CheckIndexCar.calculateAverage(countyList));
-                }
-            });
+        if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexCars)) {
+            //鍏堝尯鍒嗚�冩牳鏍囩锛屽啀鍖哄垎鍖哄幙
+            List<CheckIndexCar> countyList = checkIndexCars.stream().filter(car -> CheckConstants.Examine_Tag_County.equals(car.getExamineTag())).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(countyList)) {
+                Map<Long, List<CheckIndexCar>> carMap = countyList.stream().collect(Collectors.groupingBy(CheckIndexCar::getDeptId));
+                List<CheckIndexCar> cars = new ArrayList<>();
+                carMap.forEach((deptId, list) -> {
+                    CheckIndexCar car = CheckIndexCar.calculateAverage(list);
+                    cars.add(car);
+                });
+                //鏍规嵁绉垎闄嶅簭
+                checkIndexCars.addAll(cars.stream().sorted(Comparator.comparing(CheckIndexCar::getScore).reversed()).collect(Collectors.toList()));
+            }
+            List<CheckIndexCar> provinceList = checkIndexCars.stream().filter(car -> CheckConstants.Examine_Tag_Province.equals(car.getExamineTag())).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(provinceList)) {
+                Map<Long, List<CheckIndexCar>> carMap = provinceList.stream().collect(Collectors.groupingBy(CheckIndexCar::getDeptId));
+                List<CheckIndexCar> cars = new ArrayList<>();
+                carMap.forEach((deptId, list) -> {
+                    CheckIndexCar car = CheckIndexCar.calculateAverage(list);
+                    cars.add(car);
+                });
+                //鏍规嵁绉垎闄嶅簭
+                checkIndexCars.addAll(cars.stream().sorted(Comparator.comparing(CheckIndexCar::getScore).reversed()).collect(Collectors.toList()));
+            }
         }
         List<CheckIndexCarVO> checkIndexCarVOS = new ArrayList<>();
         for (CheckIndexCar indexCar : checkIndexCars) {
@@ -339,28 +363,45 @@
         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));
+        }
         //璁$畻骞冲潎鍊兼斁鍦╡xcel鏈�鍚�
-        if (exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexFaces)) {
-            //鍏堝尯鍒嗗悇涓尯鍘匡紝鍐嶅尯鍒嗚�冩牳鏍囩
-            Map<Long, List<CheckIndexFace>> faceMap = checkIndexFaces.stream().collect(Collectors.groupingBy(CheckIndexFace::getDeptId));
-            faceMap.forEach((deptId,list)->{
-                List<CheckIndexFace> provinceList = list.stream().filter(face -> CheckConstants.Examine_Tag_Province.equals(face.getExamineTag())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(provinceList)) {
-                    checkIndexFaces.add(CheckIndexFace.calculateAverage(provinceList));
-                }
-                List<CheckIndexFace> countyList = list.stream().filter(face -> CheckConstants.Examine_Tag_County.equals(face.getExamineTag())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(countyList)) {
-                    checkIndexFaces.add(CheckIndexFace.calculateAverage(countyList));
-                }
-            });
+        if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexFaces)) {
+            //鍏堝尯鍒嗚�冩牳鏍囩锛屽啀鍖哄垎鍖哄幙
+            List<CheckIndexFace> countyList = checkIndexFaces.stream().filter(face -> CheckConstants.Examine_Tag_County.equals(face.getExamineTag())).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(countyList)) {
+                Map<Long, List<CheckIndexFace>> faceMap = countyList.stream().collect(Collectors.groupingBy(CheckIndexFace::getDeptId));
+                List<CheckIndexFace> faces = new ArrayList<>();
+                faceMap.forEach((deptId, list) -> {
+                    CheckIndexFace face = CheckIndexFace.calculateAverage(list);
+                    faces.add(face);
+                });
+                //鏍规嵁绉垎闄嶅簭
+                checkIndexFaces.addAll(faces.stream().sorted(Comparator.comparing(CheckIndexFace::getScore).reversed()).collect(Collectors.toList()));
+            }
+            List<CheckIndexFace> provinceList = checkIndexFaces.stream().filter(face -> CheckConstants.Examine_Tag_Province.equals(face.getExamineTag())).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(provinceList)) {
+                Map<Long, List<CheckIndexFace>> faceMap = provinceList.stream().collect(Collectors.groupingBy(CheckIndexFace::getDeptId));
+                List<CheckIndexFace> faces = new ArrayList<>();
+                faceMap.forEach((deptId, list) -> {
+                    CheckIndexFace face = CheckIndexFace.calculateAverage(list);
+                    faces.add(face);
+                });
+                //鏍规嵁绉垎闄嶅簭
+                checkIndexFaces.addAll(faces.stream().sorted(Comparator.comparing(CheckIndexFace::getScore).reversed()).collect(Collectors.toList()));
+            }
         }
         List<CheckIndexFaceVO> checkIndexFaceVOS = new ArrayList<>();
         for (CheckIndexFace indexFace : checkIndexFaces) {
@@ -370,28 +411,45 @@
         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));
+        }
         //璁$畻骞冲潎鍊兼斁鍦╡xcel鏈�鍚�
-        if (exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexVideos)) {
-            //鍏堝尯鍒嗗悇涓尯鍘匡紝鍐嶅尯鍒嗚�冩牳鏍囩
-            Map<Long, List<CheckIndexVideo>> videoMap = checkIndexVideos.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId));
-            videoMap.forEach((deptId,list)->{
-                List<CheckIndexVideo> provinceList = list.stream().filter(video -> CheckConstants.Examine_Tag_Province.equals(video.getExamineTag())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(provinceList)) {
-                    checkIndexVideos.add(CheckIndexVideo.calculateAverage(provinceList));
-                }
-                List<CheckIndexVideo> countyList = list.stream().filter(video -> CheckConstants.Examine_Tag_County.equals(video.getExamineTag())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(countyList)) {
-                    checkIndexVideos.add(CheckIndexVideo.calculateAverage(countyList));
-                }
-            });
+        if (exportDTO.getAverage() != null && exportDTO.getAverage() && !CollectionUtils.isEmpty(checkIndexVideos)) {
+            //鍏堝尯鍒嗚�冩牳鏍囩锛屽啀鍖哄垎鍖哄幙
+            List<CheckIndexVideo> countyList = checkIndexVideos.stream().filter(video -> CheckConstants.Examine_Tag_County.equals(video.getExamineTag())).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(countyList)) {
+                Map<Long, List<CheckIndexVideo>> videoMap = countyList.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId));
+                List<CheckIndexVideo> videos = new ArrayList<>();
+                videoMap.forEach((deptId, list) -> {
+                    CheckIndexVideo video = CheckIndexVideo.calculateAverage(list);
+                    videos.add(video);
+                });
+                //鏍规嵁绉垎闄嶅簭
+                checkIndexVideos.addAll(videos.stream().sorted(Comparator.comparing(CheckIndexVideo::getScore).reversed()).collect(Collectors.toList()));
+            }
+            List<CheckIndexVideo> provinceList = checkIndexVideos.stream().filter(video -> CheckConstants.Examine_Tag_Province.equals(video.getExamineTag())).collect(Collectors.toList());
+            if (!CollectionUtils.isEmpty(provinceList)) {
+                Map<Long, List<CheckIndexVideo>> videoMap = provinceList.stream().collect(Collectors.groupingBy(CheckIndexVideo::getDeptId));
+                List<CheckIndexVideo> videos = new ArrayList<>();
+                videoMap.forEach((deptId, list) -> {
+                    CheckIndexVideo video = CheckIndexVideo.calculateAverage(list);
+                    videos.add(video);
+                });
+                //鏍规嵁绉垎闄嶅簭
+                checkIndexVideos.addAll(videos.stream().sorted(Comparator.comparing(CheckIndexVideo::getScore).reversed()).collect(Collectors.toList()));
+            }
         }
         List<CheckIndexVideoVO> checkIndexVideoVOS = new ArrayList<>();
         for (CheckIndexVideo indexVideo : checkIndexVideos) {
@@ -467,6 +525,28 @@
         return scoreMapper.calculate(startDate, endDate, category);
     }
 
+    //澶у睆灞曠ず鑰冩牳寰楀垎
+    @Override
+    //TODO:鑰冭檻limit bug
+    public Map<String, List<Map<String, Object>>> dashboard(DashboardQuery dashboardQuery) {
+        List<CheckScore> dashboard = scoreMapper.dashboard(dashboardQuery);
+        Map<String, List<Map<String, Object>>> resultMap = new HashMap<>();
+
+        for (CheckScore checkScore : dashboard) {
+            List<Map<String, Object>> list = new ArrayList<>();
+            Map<String, Object> map = new HashMap<>();
+            map.put("value", checkScore.getScore());
+            if (dashboardQuery.getDataScope() == 1) {
+                map.put("name", "鐪佸巺寰楀垎");
+            } else {
+                map.put("name", "鍖哄幙寰楀垎");
+            }
+            list.add(map);
+            resultMap.put(checkScore.getDeptName(), list);
+        }
+        return resultMap;
+    }
+
     //    /**
 //     * 鏂板鑰冩牳绉垎
 //     *

--
Gitblit v1.8.0