package com.ruoyi.ehsIndexStatistics.service.impl;

import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ehsDocument.mapper.EhsDocumentMapper;
import com.ruoyi.ehsEnterprise.service.IEhsEnterpriseService;
import com.ruoyi.ehsIndexStatistics.mapper.EhsIndexStatisticsMapper;
import com.ruoyi.ehsIndexStatistics.service.EhsIndexStatisticsService;
import com.ruoyi.ehsIndexStatistics.vo.EhsIndexStatistics;
import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerRankVo;
import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerStatisticsVo;
import com.ruoyi.ehsIndexStatistics.vo.HiddenDangerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 功能描述
 *
 * @author: 马腾达
 * @date: 2023年12月12日 15:06
 */
@Service
public class EhsIndexStatisticsServiceImpl implements EhsIndexStatisticsService {
    @Autowired
    private EhsIndexStatisticsMapper mapper;
    @Override
    public EhsIndexStatistics getEhsIndexStatistics() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getEhsIndexStatistics(deptId);
    }
    @Override
    public EhsIndexStatistics getSuperviseAndHandle() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getSuperviseAndHandle(deptId);
    }
    @Override
    public List<EhsIndexStatistics> getEhsIndexStatisticsList() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getEhsIndexStatisticsList(deptId);
    }

    @Override
    public List<HiddenDangerVo> getHiddenDangerVoList(HiddenDangerVo vo) {
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            vo.setDeptId(currentUser.getDept().getDeptId().longValue());
        }
        return mapper.getHiddenDangerVoList(vo);
    }

    @Override
    public List<HiddenDangerStatisticsVo> getHiddenDangerSituationList() {
        return mapper.getHiddenDangerSituationList();
    }
    @Override
    public List<HiddenDangerStatisticsVo> getHiddenDangerSituationByEnterpriseNameList() {
        return mapper.getHiddenDangerSituationByEnterpriseNameList();
    }

    @Override
    public List<HiddenDangerRankVo> getHiddenDangerRankVoList() {
        return mapper.getHiddenDangerRankVoList();
    }
    @Override
    public List<HiddenDangerRankVo> getHiddenDangerRankVoByDeptIdList() {
        return mapper.getHiddenDangerRankVoByDeptIdList();
    }
    @Override
    public List<Map<String,Object>> getEnterpriseMapList() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getEnterpriseMapList(deptId);
    }
    @Override
    public List<Map<String,Object>> geteconomicTypeMapList() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.geteconomicTypeMapList(deptId);
    }
    @Override
    public List<Map<String,Object>> getenterpriseScaleMapList() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getenterpriseScaleMapList(deptId);
    }
    @Override
    public List<Map<String,Object>> getHiddenDangerTypeMapList() {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getHiddenDangerTypeMapList(deptId);
    }
    @Override
    public List<Map<String,Object>> getHiddenDangerDataMapList(String yearStr) {
        Long deptId = null;
        // 如果登录用户不是超级管理员,并且他的部门不是唐河县应急管理局(根节点),那么只能查询当前登录用户他的部门创建的公文
        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
        List<Long> roleIds = currentUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList());
        Long deptParentId = currentUser.getDept().getParentId();
        if (!roleIds.contains(1L) &&
                deptParentId != null &&
                deptParentId.longValue() != 0) {
            deptId = currentUser.getDept().getDeptId().longValue();
        }
        return mapper.getHiddenDangerDataMapList(yearStr,deptId);
    }
}
