package com.ruoyi.project.system.user.controller; 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.doublePrevention.controller.RiskAndPeopleInfoController; import com.ruoyi.doublePrevention.entity.dto.req.RiskAndPeopleInfoReqBO; import com.ruoyi.doublePrevention.entity.dto.resp.RiskAndPeopleInfoRespDTO; import com.ruoyi.doublePrevention.service.baseService.RiskAndPeopleInfoService; import com.ruoyi.doublePrevention.vo.ResultVO; 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; import org.springframework.web.bind.annotation.GetMapping; import com.ruoyi.framework.config.RuoYiConfig; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.project.system.config.service.IConfigService; import com.ruoyi.project.system.menu.domain.Menu; import com.ruoyi.project.system.menu.service.IMenuService; import com.ruoyi.project.system.user.domain.User; /** * 首页 业务处理 * * @author ruoyi */ @Controller public class IndexController extends BaseController { @Autowired private IMenuService menuService; @Autowired private IConfigService configService; @Autowired private ICompanyService companyService; @Autowired private RuoYiConfig ruoYiConfig; @Autowired private IRoleService roleService; @Autowired private ReportMapper reportMapper; @Autowired private RiskAndPeopleInfoService riskAndPeopleInfoService; // 系统首页 @GetMapping("/index") public String index(ModelMap mmap) { // 取身份信息 User user = getSysUser(); // 根据用户id取出菜单 List menus = menuService.selectMenusByUser(user); mmap.put("menus", menus); mmap.put("user", user); mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme")); mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName")); mmap.put("copyrightYear", ruoYiConfig.getCopyrightYear()); mmap.put("demoEnabled", ruoYiConfig.isDemoEnabled()); // List fourColorPic = getFourColorPic(companyId); // //四色图 // mmap.put("fourColorMapUrl", fourColorPic); Set 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) { return "skin"; } // 系统介绍 @GetMapping("/system/main") public String main(ModelMap mmap){ User user = getSysUser(); long companyId = user.getCompanyId(); List fourColorPic = getFourColorPic(companyId); //四色图 mmap.put("fourColorMapUrl", fourColorPic); List riskDomains = reportMapper.selectPublicityRisk(companyId); //风险总量 mmap.put("allRiskCount", riskDomains.size()); AtomicReference lowRiskCount = new AtomicReference<>(0); AtomicReference normalRiskCount = new AtomicReference<>(0); AtomicReference middleRiskCount = new AtomicReference<>(0); AtomicReference seriesRiskCount = new AtomicReference<>(0); ArrayList 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 dangers = reportMapper.selectPublicityDanger(companyId); ArrayList seriesDangers = new ArrayList<>(); AtomicReference 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 dangerByTimes = reportMapper.selectDangersByYear(companyId); return handleYearlyDangers(dangerByTimes); } private Map handleYearlyDangers(List 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 reportNames = new ArrayList<>(); ArrayList normalDanger = new ArrayList<>(); ArrayList 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 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 dangerByTimes = reportMapper.selectDangersByMonths(date, companyId); return handleMonthlyDangers(date, dangerByTimes); } private Map handleMonthlyDangers(Date date, List list) { ArrayList reportNames = new ArrayList<>(); ArrayList normalDanger = new ArrayList<>(); ArrayList 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 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 values = colorPicMap.values(); ArrayList colorPic = new ArrayList<>(); values.forEach(v -> { v = v.replaceAll("^http:\\/\\/[^/]+", ""); colorPic.add(v); }); return colorPic; } // 数据统计 @GetMapping("/system/main_two") public String mainTwo(ModelMap mmap){ mmap.put("version", ruoYiConfig.getVersion()); return "main_two"; } @GetMapping("/system/riskAndPeopleInfo") public String riskAndPeopleInfo(ModelMap mmap){ RiskAndPeopleInfoReqBO reqBO = new RiskAndPeopleInfoReqBO(); reqBO.setPageSize(10); reqBO.setPageNum(1); ResultVO result = riskAndPeopleInfoService.listRiskAndPeoplePage(reqBO); // RiskAndPeopleInfoRespDTO data = (RiskAndPeopleInfoRespDTO) result.getData(); // resultVO.setPageSize(result.getPageSize()); // resultVO.setPageNum(result.getPageNum()); // resultVO.setCount(result.getCount()); // resultVO.setData(result.getData()); // TableDataInfo dataTable = getDataTable(data.getRiskAndPeopleInfoDTO()); // dataTable.setTotal(result.getCount()); // mmap.put("riskAndPeopleInfo", ((RiskAndPeopleInfoRespDTO) result.getData()).getRiskAndPeopleInfoDTO()); mmap.put("count", ((RiskAndPeopleInfoRespDTO) result.getData()).getCount()); mmap.put("complete", ((RiskAndPeopleInfoRespDTO) result.getData()).getComplete()); mmap.put("completeRatio", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteRatio()); mmap.put("countOfHandle", ((RiskAndPeopleInfoRespDTO) result.getData()).getCountOfHandle()); mmap.put("completeOfHandle", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteOfHandle()); mmap.put("completeRatioOfHandle", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteRatioOfHandle()); mmap.put("countOfTechnology", ((RiskAndPeopleInfoRespDTO) result.getData()).getCountOfTechnology()); mmap.put("completeOfTechnology", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteOfTechnology()); mmap.put("completeRatioOfTechnology", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteRatioOfTechnology()); mmap.put("countOfMain", ((RiskAndPeopleInfoRespDTO) result.getData()).getCountOfMain()); mmap.put("completeOfMain", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteOfMain()); mmap.put("completeRatioOfMain", ((RiskAndPeopleInfoRespDTO) result.getData()).getCompleteRatioOfMain()); // mmap.put("version", ruoYiConfig.getVersion()); return "tr/riskAndPeopleInfo/riskAndPeopleInfo"; } }