From 685a27db221bd4033ff040d933e1fb03f15689b2 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期五, 11 十一月 2022 14:23:46 +0800
Subject: [PATCH] controller中首页调用方法

---
 src/main/java/com/ruoyi/project/system/user/controller/IndexController.java |  213 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 207 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java b/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java
index cb952ea..d3670b9 100644
--- a/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java
+++ b/src/main/java/com/ruoyi/project/system/user/controller/IndexController.java
@@ -1,12 +1,21 @@
 package com.ruoyi.project.system.user.controller;
 
-import java.util.List;
-import java.util.Set;
+import java.text.DecimalFormat;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
 
+import com.alibaba.fastjson.JSON;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.security.ShiroUtils;
+import com.ruoyi.project.system.company.domain.Company;
 import com.ruoyi.project.system.company.service.ICompanyService;
 import com.ruoyi.project.system.role.domain.Role;
 import com.ruoyi.project.system.role.service.IRoleService;
+import com.ruoyi.project.tr.report.domain.Danger;
+import com.ruoyi.project.tr.report.domain.DangerByTime;
+import com.ruoyi.project.tr.report.domain.RiskDomain;
+import com.ruoyi.project.tr.report.mapper.ReportMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
@@ -17,7 +26,6 @@
 import com.ruoyi.project.system.menu.domain.Menu;
 import com.ruoyi.project.system.menu.service.IMenuService;
 import com.ruoyi.project.system.user.domain.User;
-
 /**
  * 首页 业务处理
  * 
@@ -40,11 +48,14 @@
 
     @Autowired
     private IRoleService roleService;
-
+    @Autowired
+    private ReportMapper reportMapper;
     // 系统首页
     @GetMapping("/index")
     public String index(ModelMap mmap)
     {
+
+
         // 取身份信息
         User user = getSysUser();
         // 根据用户id取出菜单
@@ -56,14 +67,18 @@
         mmap.put("copyrightYear", ruoYiConfig.getCopyrightYear());
         mmap.put("demoEnabled", ruoYiConfig.isDemoEnabled());
 
+
+//        List fourColorPic = getFourColorPic(companyId);
+//        //四色图
+//        mmap.put("fourColorMapUrl", fourColorPic);
         Set<String> stringSet = roleService.selectRoleKeys(user.getUserId());
         if (stringSet.contains("regionUser")||stringSet.contains("straightRegionUser")){
             return "indexByRegionUser";
         }else{
             return "index";
         }
-    }
 
+    }
     // 切换主题
     @GetMapping("/system/switchSkin")
     public String switchSkin(ModelMap mmap)
@@ -74,10 +89,194 @@
     // 系统介绍
     @GetMapping("/system/main")
     public String main(ModelMap mmap){
-        //返回该公司的四色图
+        User user = getSysUser();
+        long companyId = user.getCompanyId();
+        List fourColorPic = getFourColorPic(companyId);
+        //四色图
+        mmap.put("fourColorMapUrl", fourColorPic);
+        List<RiskDomain> riskDomains = reportMapper.selectPublicityRisk(companyId);
+        //风险总量
+        mmap.put("allRiskCount", riskDomains.size());
+        AtomicReference<Integer> lowRiskCount = new AtomicReference<>(0);
+        AtomicReference<Integer> normalRiskCount = new AtomicReference<>(0);
+        AtomicReference<Integer> middleRiskCount = new AtomicReference<>(0);
+        AtomicReference<Integer> seriesRiskCount = new AtomicReference<>(0);
+        ArrayList<RiskDomain> seriesRisks = new ArrayList<>();
+        riskDomains.forEach(riskDomain -> {
+            if (StringUtils.isNotEmpty(riskDomain.getRiskColor())) {
+                switch (riskDomain.getRiskColor()) {
+                    case "蓝色":
+                        lowRiskCount.getAndSet(lowRiskCount.get() + 1);
+                        break;
+                    case "黄色":
+                        normalRiskCount.getAndSet(normalRiskCount.get() + 1);
+                        break;
+                    case "橙色":
+                        middleRiskCount.getAndSet(middleRiskCount.get() + 1);
+                        break;
+                    case "红色":
+                        seriesRiskCount.getAndSet(seriesRiskCount.get() + 1);
+                        seriesRisks.add(riskDomain);
+                        break;
+                }
+            }
+        });
+        //低风险数量
+        mmap.put("lowRiskCount", lowRiskCount);
+        //一般风险数量
+        mmap.put("normalRiskCount", normalRiskCount);
+        //较大风险数量
+        mmap.put("middleRiskCount", middleRiskCount);
+        //重大风险数量
+        mmap.put("seriesRiskCount", seriesRiskCount);
+        //重大风险公示信息
+        mmap.put("seriesRisks", seriesRisks);
+        List<Danger> dangers = reportMapper.selectPublicityDanger(companyId);
+        ArrayList<Danger> seriesDangers = new ArrayList<>();
+        AtomicReference<Integer> unRectifyDangerCount = new AtomicReference<>(0);
+        dangers.forEach(danger -> {
+            if (danger != null) {
+                if (StringUtils.isNotEmpty(danger.getDangerLevel()) && "1".equals(danger.getDangerLevel())) {
+                    seriesDangers.add(danger);
+                }
+                if (StringUtils.isNotEmpty(danger.getRectifyStatus()) && "0".equals(danger.getRectifyStatus())) {
+                    unRectifyDangerCount.getAndSet(unRectifyDangerCount.get() + 1);
+                }
+            }
+        });
+        //重大隐患公示信息
+        mmap.put("seriesDangers", seriesDangers);
+        //未整改隐患数量
+        mmap.put("unRectifyDangerCount", unRectifyDangerCount);
+        Map monthlyDangerMap = selectMonthlyDangers(companyId);
+        ArrayList normalDanger = (ArrayList) monthlyDangerMap.get("normalDanger");
+        long thisMonthNormalDangerCount = (long) normalDanger.get(normalDanger.size() - 1);
+        ArrayList highDanger = (ArrayList) monthlyDangerMap.get("highDanger");
+        long thisMonthHighDangerCount = (long) highDanger.get(highDanger.size() - 1);
+        //当月一般隐患数量
+        mmap.put("thisMonthNormalDangerCount", thisMonthNormalDangerCount);
+        //当月重大隐患数量
+        mmap.put("thisMonthHighDangerCount", thisMonthHighDangerCount);
+        //月度隐患总量
+        mmap.put("thisMonthDangerCount", thisMonthHighDangerCount + thisMonthNormalDangerCount);
+        Map yearlyDangersMap = selectYearlyDangers(companyId);
+        ArrayList normalDanger1 = (ArrayList) yearlyDangersMap.get("normalDanger");
+        ArrayList highDanger1 = (ArrayList) yearlyDangersMap.get("highDanger");
+        long yearlyDangerCount = (long) normalDanger1.get(normalDanger1.size() - 1) + (long) highDanger1.get(highDanger1.size() - 1);
+        //年度隐患总量
+        mmap.put("yearlyDangerCount", yearlyDangerCount);
+        Long allDangers = (Long) yearlyDangersMap.get("allDangers");
+        double tempPercent = 1.00;
+        if (allDangers != 0) {
+            tempPercent = (double) (allDangers - unRectifyDangerCount.get()) / allDangers;
+        }
+        String dangerRectifyPercent = new DecimalFormat("0.00%").format(tempPercent);
+        //隐患整改率
+        mmap.put("dangerRectifyPercent", dangerRectifyPercent);
+
+
+
         mmap.put("companyImages",companyService.getCompanyImagesById(ShiroUtils.getSysUser().getCompanyId()));
         mmap.put("version", ruoYiConfig.getVersion());
         return "main";
+    }
+
+    public Map selectYearlyDangers(long companyId) {
+        List<DangerByTime> dangerByTimes = reportMapper.selectDangersByYear(companyId);
+        return handleYearlyDangers(dangerByTimes);
+    }
+
+    private Map handleYearlyDangers(List<DangerByTime> list) {
+        String nowYear = DateUtils.parseDateToStr("YYYY", DateUtils.getNowDate());
+        Long allDangers = 0l;
+        String startYear = nowYear;
+        if (list.size() != 0) {
+            startYear = list.get(0).getDateTime();
+            for (int i = 0; i < list.size(); i++) {
+                allDangers += list.get(i).getCount();
+            }
+        }
+        ArrayList<Integer> reportNames = new ArrayList<>();
+        ArrayList<Long> normalDanger = new ArrayList<>();
+        ArrayList<Long> highDanger = new ArrayList<>();
+        for (int i = 0; i <= Integer.parseInt(nowYear) - Integer.parseInt(startYear); i++) {
+            Integer temp = Integer.parseInt(startYear) + i;
+            reportNames.add(temp);
+            normalDanger.add(0l);
+            highDanger.add(0l);
+            int finalI = i;
+            list.forEach(dt -> {
+                if (dt != null) {
+                    if (temp.toString().equals(dt.getDateTime()) && dt.getDangerLevel() != null) {
+                        switch (dt.getDangerLevel()) {
+                            case "0":
+                                normalDanger.set(finalI, dt.getCount());
+                                break;
+                            case "1":
+                                highDanger.set(finalI, dt.getCount());
+                                break;
+                        }
+                    }
+                }
+            });
+        }
+        HashMap<String, Object> reportMap = new HashMap<>();
+        reportMap.put("reportNames", reportNames);
+        reportMap.put("normalDanger", normalDanger);
+        reportMap.put("highDanger", highDanger);
+        reportMap.put("allDangers", allDangers);
+        return reportMap;
+    }
+
+    public Map selectMonthlyDangers(long companyId) {
+        Date date = DateUtils.addMonths(DateUtils.getNowDate(), -12);
+        List<DangerByTime> dangerByTimes = reportMapper.selectDangersByMonths(date, companyId);
+        return handleMonthlyDangers(date, dangerByTimes);
+    }
+    private Map handleMonthlyDangers(Date date, List<DangerByTime> list) {
+        ArrayList<String> reportNames = new ArrayList<>();
+        ArrayList<Long> normalDanger = new ArrayList<>();
+        ArrayList<Long> highDanger = new ArrayList<>();
+        for (int i = 0; i < 12; i++) {
+            date = DateUtils.addMonths(date, 1);
+            String str = DateUtils.parseDateToStr("YYYY-MM", date);
+            reportNames.add(str);
+            normalDanger.add(0l);
+            highDanger.add(0l);
+            int finalI = i;
+            list.forEach(dt -> {
+                if (dt != null) {
+                    if (str.equals(dt.getDateTime()) && dt.getDangerLevel() != null) {
+                        switch (dt.getDangerLevel()) {
+                            case "0":
+                                normalDanger.set(finalI, dt.getCount());
+                                break;
+                            case "1":
+                                highDanger.set(finalI, dt.getCount());
+                                break;
+                        }
+                    }
+                }
+            });
+        }
+        HashMap<String, List> reportMap = new HashMap<>();
+        reportMap.put("reportNames", reportNames);
+        reportMap.put("normalDanger", normalDanger);
+        reportMap.put("highDanger", highDanger);
+        return reportMap;
+    }
+
+    public List getFourColorPic(long companyId) {
+        Company company = companyService.selectCompanyById(companyId);
+        String companyFourColorMapUrl = company.getCompanyFourColorMapUrl();
+        Map colorPicMap = JSON.parseObject(companyFourColorMapUrl);
+        Collection<String> values = colorPicMap.values();
+        ArrayList<String> colorPic = new ArrayList<>();
+        values.forEach(v -> {
+            v = v.replaceAll("^http:\\/\\/[^/]+", "");
+            colorPic.add(v);
+        });
+        return colorPic;
     }
 
     // 数据统计
@@ -87,3 +286,5 @@
         return "main_two";
     }
 }
+
+

--
Gitblit v1.9.2