From eea5bc9be7deb06106d6274abeb29ebe4b83af44 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 30 四月 2024 13:40:35 +0800
Subject: [PATCH] 考核结果指标详情页面

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java |  157 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 130 insertions(+), 27 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 b9a135e..b1568b9 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
@@ -1,32 +1,45 @@
 package com.ycl.platform.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.platform.base.BaseSelect;
+import com.ycl.platform.base.CheckIndex;
 import com.ycl.platform.domain.dto.CheckScoreDTO;
-import com.ycl.platform.domain.entity.CheckRule;
-import com.ycl.platform.domain.entity.CheckScore;
-import com.ycl.platform.domain.entity.CheckTemplate;
-import com.ycl.platform.domain.entity.CheckTemplateRule;
+import com.ycl.platform.domain.dto.CheckScoreIndexDTO;
+import com.ycl.platform.domain.entity.*;
 import com.ycl.platform.domain.vo.CheckScoreDetailVO;
 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.service.ICheckIndexCarService;
+import com.ycl.platform.service.ICheckIndexFaceService;
+import com.ycl.platform.service.ICheckIndexVideoService;
 import com.ycl.platform.service.ICheckScoreService;
+import com.ycl.system.Result;
 import com.ycl.system.entity.SysRole;
+import com.ycl.system.service.ISysDeptService;
 import com.ycl.utils.SecurityUtils;
+import com.ycl.utils.StringUtils;
+import com.ycl.utils.poi.ExcelUtil;
+import constant.CheckConstants;
+import enumeration.general.CheckScoreType;
 import enumeration.general.PublishType;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import pojo.ExcelExp;
 import utils.DateUtils;
+import utils.poi.ExcelUtilManySheet;
 
+import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 鑰冩牳绉垎鏄庣粏Service涓氬姟灞傚鐞�
@@ -36,7 +49,7 @@
  */
 @Service
 @Slf4j
-public class CheckScoreServiceImpl implements ICheckScoreService 
+public class CheckScoreServiceImpl extends ServiceImpl<CheckScoreMapper, CheckScore> implements ICheckScoreService
 {
     @Autowired
     private CheckScoreMapper scoreMapper;
@@ -46,6 +59,14 @@
     private CheckTemplateRuleMapper templateRuleMapper;
     @Autowired
     private CheckRuleMapper ruleMapper;
+    @Autowired
+    private ICheckIndexCarService indexCarService;
+    @Autowired
+    private ICheckIndexFaceService indexFaceService;
+    @Autowired
+    private ICheckIndexVideoService indexVideoService;
+    @Autowired
+    private ISysDeptService deptService;
     /**
      * 鏌ヨ鑰冩牳绉垎
      * 
@@ -53,39 +74,36 @@
      * @return 鑰冩牳绉垎
      */
     @Override
-    public CheckScoreDetailVO selectCheckScoreById(Long id)
+    public CheckScoreDetailVO selectCheckScoreById(CheckScoreIndexDTO checkScoreIndexDTO)
     {
+        Long checkScoreId = checkScoreIndexDTO.getId();
+
         CheckScoreDetailVO checkScoreDetailVO = new CheckScoreDetailVO();
         //鏍规嵁id璇诲彇score
-        CheckScore checkScore = scoreMapper.selectCheckScoreById(id);
+        CheckScore checkScore = scoreMapper.selectCheckScoreById(checkScoreId);
         //璇诲彇瑙勫垯浠ュ強鏉冮噸
         List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(checkScore.getTemplateId());
 
-        //checkRules娣诲姞鑰冩牳瀵硅薄鍜岃�冩牳鏃堕棿
         List<CheckRule> checkRules = new ArrayList<>();
-        CheckRule checkRule1 = new CheckRule();
-        checkRule1.setRuleName("鑰冩牳鏃堕棿");
-        checkRule1.setRuleIndex("create_time");
-        CheckRule checkRule2 = new CheckRule();
-        checkRule2.setRuleName("鑰冩牳瀵硅薄");
-        checkRule2.setRuleIndex("deptId");
         //璇诲彇妯℃澘瀵瑰簲鎵�鏈夎鍒�
         Map<String,Object> scoreMap = new HashMap<>();
         List<Integer> ruleIds = templateRuleList.stream().map(checkTemplateRule -> checkTemplateRule.getCheckRuleId())
                 .collect(Collectors.toList());
         List<CheckRule> ruleIndex = ruleMapper.selectBatchIds(ruleIds);
 
-//        checkRules.add(checkRule1);
-//        checkRules.add(checkRule2);
         checkRules.addAll(ruleIndex);
         //鏍规嵁examineCategory 璇诲彇涓嶅悓index琛�
-        Integer examineCategory = checkScore.getExamineCategory();
-        String[] indexTableArr ={"t_check_index_car","t_check_index_face","t_check_index_video"};
+        Short examineCategory = checkScore.getExamineCategory();
+        String[] indexTableArr ={"","t_check_index_video","t_check_index_car","t_check_index_face"};
         String tableName = indexTableArr[examineCategory];
-        //TODO:鑾峰彇褰撳墠鏈堜唤
-        LocalDate now = LocalDate.now();
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
-        String date = formatter.format(now);
+        //鑾峰綋鏈堜唤
+        String date = checkScoreIndexDTO.getDate();
+        if(StringUtils.isEmpty(date)){
+            //濡傛灉鏌ヨ鏉′欢涓嶅惈鍙傛暟锛屾煡璇㈢Н鍒嗗搴斿垱寤烘椂闂�
+            Date createTime = checkScore.getCreateTime();
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
+            date = formatter.format(createTime);
+        }
         List<Map> map = scoreMapper.selectScoreIndex(tableName,checkScore.getDeptId(),date);
 
         scoreMap.put("tableData",checkRules);
@@ -109,6 +127,17 @@
         //TODO:鏁版嵁鏉冮檺
 
         //鏌ヨ鎴愮哗
+        String date = checkScore.getDate();
+        if(StringUtils.isEmpty(date)){
+            //濡傛灉涓虹┖鏌ユ湰鏈堢殑鏁版嵁
+            Calendar now = Calendar.getInstance();
+            //鍙栨槰澶�
+            now.add(Calendar.DATE, -1);
+            Date yesterday = now.getTime();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+            date = simpleDateFormat.format(yesterday);
+            checkScore.setDate(date);
+        }
         List<CheckScore> checkScores = scoreMapper.selectCheckScoreList(checkScore);
         Map<Long, List<CheckScore>> deptMap = checkScores.stream().collect(Collectors.groupingBy(CheckScore::getDeptId));
         return deptMap;
@@ -124,6 +153,8 @@
         //TODO:鏁版嵁鏉冮檺
         return scoreMapper.selectCheckScoreList(checkScore);
     }
+
+
     /**
      * 鏂板鑰冩牳绉垎
      * 
@@ -188,7 +219,6 @@
         try {
             publishType = PublishType.valueOf(checkScoreDTO.getPublish());
         } catch (IllegalArgumentException e) {
-            log.error("鍙傛暟绫诲瀷涓嶅尮閰�");
             throw new IllegalArgumentException("鍙傛暟绫诲瀷涓嶅尮閰�");
         }
         String code = publishType.getCode();
@@ -197,5 +227,78 @@
         return scoreMapper.publishCheckScore(checkScoreDTO);
     }
 
+    /**
+     * 瀵煎嚭鎸囨爣
+     *
+     * @param checkScore 鑰冩牳绉垎
+     * @return 鑰冩牳绉垎
+     */
+    @Override
+    public void exportIndex(HttpServletResponse response,CheckScore checkScoreDTO) throws IOException {
+        String date = checkScoreDTO.getDate();
+        //濡傛灉璇锋眰鍙傛暟鏃堕棿涓虹┖锛屾煡杩欐潯璁板綍鐨勬椂闂�
+        if(StringUtils.isEmpty(date)) {
+            CheckScore checkScore = getById(checkScoreDTO.getId());
+            Date createTime = checkScore.getCreateTime();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+            date = simpleDateFormat.format(createTime);
+        }
 
+        /** 瀵间笁寮爏heet */
+        //杞﹁締
+        CheckIndexCar checkIndexCar = new CheckIndexCar();
+        checkIndexCar.setDate(date);
+        List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(checkIndexCar);
+        ExcelExp e1 = new ExcelExp("杞﹁締鑰冩牳鎸囨爣鏁版嵁",checkIndexCars,CheckIndexCar.class);
+        //浜鸿劯
+        CheckIndexFace checkIndexFace = new CheckIndexFace();
+        checkIndexFace.setDate(date);
+        List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(checkIndexFace);
+        ExcelExp e2 = new ExcelExp("浜鸿劯鑰冩牳鎸囨爣鏁版嵁",checkIndexFaces,CheckIndexFace.class);
+        //瑙嗛
+        CheckIndexVideo checkIndexVideo = new CheckIndexVideo();
+        checkIndexVideo.setDate(date);
+        List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(checkIndexVideo);
+        ExcelExp e3 = new ExcelExp("瑙嗛鑰冩牳鎸囨爣鏁版嵁",checkIndexVideos,CheckIndexVideo.class);
+
+        List<ExcelExp> mysheet = new ArrayList<>();
+        mysheet.add(e1);
+        mysheet.add(e2);
+        mysheet.add(e3);
+        ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet);
+        util.exportExcelManySheet(response,mysheet);
+
+        //瀵煎崟sheet鐨勬柟寮�
+//        switch (CheckScoreType.fromValue(examineCategory)){
+//            case CHECK_SCORE_TYPE_CAR:
+//                //鏌ヨ溅杈�
+//                List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(new CheckIndexCar());
+//                export(response, depts, checkIndexCars,CheckIndexCar.class);
+//                break;
+//            case CHECK_SCORE_TYPE_FACE:
+//                // 鏌ヤ汉鑴�
+//                List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(new CheckIndexFace());
+//                export(response, depts, checkIndexFaces,CheckIndexFace.class);
+//                break;
+//            case CHECK_SCORE_TYPE_VIDEO:
+//                // 鏌ヨ棰�
+//                List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(new CheckIndexVideo());
+//                export(response, depts, checkIndexVideos,CheckIndexVideo.class);
+//                break;
+//        }
+    }
+
+    private <T extends CheckIndex> void export(HttpServletResponse response, List<BaseSelect> depts, List<T> checkIndexes,Class<T> checkIndexClass) {
+        //鏆傛椂娌$敤锛屽鏋滄暟鎹繃澶э紝鍦╯erver灞傜炕璇戯紝閬垮厤杩炶〃
+        checkIndexes.forEach(checkIndex->{
+            Optional<BaseSelect> first = depts.stream().filter(baseSelect -> checkIndex.getDeptId().equals(Long.valueOf(baseSelect.getId()+""))).findFirst();
+            if(first.isPresent()){
+                checkIndex.setDeptName(first.get().getValue());
+            }
+        });
+
+        ExcelUtil<T> util = new ExcelUtil<T>(checkIndexClass);
+        util.exportExcel(response, checkIndexes, "鑰冩牳绉垎鏄庣粏鏁版嵁");
+
+    }
 }

--
Gitblit v1.8.0