Newer
Older
casic-iot-br / casic-public / src / main / java / com / casic / missiles / server / CommonServer.java
casic_zt on 12 May 4 KB excel问题修改
package com.casic.missiles.server;


import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.context.AbstractPermissionContext;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.datascope.ScopeEnums;
import com.casic.missiles.core.model.auth.AuthUser;
import com.casic.missiles.modular.system.model.Dept;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@Service
public class CommonServer {

    private final AbstractDeptService abstractDeptService;
    private final AbstractPermissionContext permissionContext;

    @Cacheable(value = "deptNameCache", key = "#deptId")
    public String getDeptNamesByDeptId(Long deptId) {
        List<Long> deptIds = this.getParentListById(deptId);
        deptIds.add(deptId);
        QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
        queryWrapper.in("id", deptIds);
        queryWrapper.orderByAsc("pids");
        List<Dept> deptList = abstractDeptService.list(queryWrapper);
        List<String> nameList = deptList.stream().filter(dept -> ObjectUtil.isNotEmpty(dept.getTips())).map(Dept::getFullName).collect(Collectors.toList());
        String deptName = String.join("/", nameList);
        return deptName.indexOf("北京燃气集团/") == 0 ? deptName.replace("北京燃气集团/", "") : deptName;
    }

    //    @Cacheable(value = "deptIdsCache")
    public String getDeptIds() {
        return getDeptIds(permissionContext.getAuthService().getLoginUser());
    }

    public List<Long> getDeptIds(Long deptId) {
        if (ObjectUtil.isNotEmpty(deptId)) {
            //获取子级单位
            List<Long> deptIds = abstractDeptService.getIdsRecursionByPid(deptId, "");
            deptIds.add(deptId);
            return deptIds;
        }
        return null;
    }

    public String getDeptIdStrs(Long deptId) {
        if (ObjectUtil.isNotEmpty(deptId)) {
            //获取子级单位
            List<Long> deptIds = abstractDeptService.getIdsRecursionByPid(deptId, "");
            deptIds.add(deptId);
            return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(","));
        }
        return "";
    }


    @Cacheable(value = "deptScopeIdsCache", key = "#authUser.getId()")
    public String getDeptIds(AuthUser authUser) {
        String scopeType = authUser.getScopeType();
        if (!ScopeEnums.ALL_TYPE.getCode().equals(scopeType)) {
            return authUser.getDataScope()
                    .stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(","));
        }
        return "";
    }

    //todo:账户加缓存
    public String getDeptScopeIds(Long deptId) {
        if (ObjectUtil.isNotEmpty(deptId)) {
            //获取子级单位
            List<Long> deptIds = abstractDeptService.getIdsRecursionByPid(deptId, "");
            deptIds.add(deptId);
            return deptIds.stream().map(id -> Convert.toStr(id)).collect(Collectors.joining(","));
        } else {
            //获取登录权限
            return getDeptIds(permissionContext.getAuthService().getLoginUser());
        }
    }


    public List<Long> getParentListById(Serializable deptId) {
        if ((new Long(0L)).equals(deptId)) {
            return new ArrayList();
        } else {
            Dept dept = (Dept) this.abstractDeptService.getById(deptId);
            if (null == dept) return new ArrayList();
            return (List) CharSequenceUtil.split(dept.getPids(), ",").stream().filter(CharSequenceUtil::isNotEmpty).map((s) -> {
                return new Long(CharSequenceUtil.removeSuffix(CharSequenceUtil.removePrefix(s, "["), "]"));
            }).collect(Collectors.toList());
        }
    }

    public Long getLoginUserId() {
        AuthUser user = permissionContext.getAuthService().getLoginUser();
        return null != user ? user.getId() : null;
    }

    public AuthUser getLoginUser() {
       return permissionContext.getAuthService().getLoginUser();
    }
}