ludc
2024-01-18 735b8b4c7eea4a5a6d42f25f070944f85e9603d9
分类查询接口优化
已修改4个文件
43 ■■■■■ 文件已修改
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeRuleCharacterController.java
@@ -19,6 +19,7 @@
public class CodeRuleCharacterController {
    @Resource
     private ICodeRuleCharacterService iCodeRuleCharacterService;
    /**
     * 使用编码规则oid获取数据
     * @param codeRuleId 规则oid
@@ -28,6 +29,7 @@
    public R<List<Map<String,String>>> getDataByOid(@RequestParam("codeRuleId")String codeRuleId,@RequestParam("chartType")String chartType){
        return R.data(iCodeRuleCharacterService.getDataByRuleId(codeRuleId,chartType));
    }
    /**
     * 保存规则对象
     * @param codeRuleCharacterVO 规则字符对象
@@ -37,6 +39,7 @@
    public R addSave(@RequestBody CodeRuleCharacterVO codeRuleCharacterVO){
        return iCodeRuleCharacterService.saveOrUpdate(codeRuleCharacterVO,1);
    }
    /**
     * 修改规则对象
     * @param codeRuleCharacterVO 规则字符对象
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -71,6 +71,7 @@
import java.awt.event.ItemEvent;
import java.io.File;
import java.util.*;
import java.util.concurrent.ForkJoinPool;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -116,6 +117,12 @@
    @Resource
    private CodeBasicSecMapper codeBasicSecMapper;
    /**
     * 自定义并发ForkJoinPool
     */
    private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors()-1);
    /**
     * 上级节点的属性名称
     */
@@ -578,33 +585,30 @@
        List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
        TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
        treeWrapperOptions.copyFromTreeQuery(treeQueryObject);
        List<Tree> tree= revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyVO s) ->{
        List<Tree> tree = revisionModelUtil.doList2Trees(voList,treeWrapperOptions,(CodeClassifyVO s) ->{
            //可以在这里处理树节点的显示
            return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
                .getLcStatus()) ? (" 【停用】 ") : "");
        });
        //超管显示所有分类
        if(VciBaseUtil.checkAdminTenant()){
            Iterator var6 =  tree.listIterator();
            while(var6.hasNext()){
                Tree trees = (Tree) var6.next();
                boolean checkHasChild=codeClassifyMapper.checkHasChild(trees.getOid());
                if(checkHasChild){
                    trees.setLeaf(false);
                }else{
                    trees.setLeaf(true);
                }
            }
        }else {
        // 非超管过滤未授权的分类
        if(!VciBaseUtil.checkAdminTenant()){
            // 那些分类具备查看权限
            R<List<String>> viewClassByRoleIds = sysClient.getViewClassByRoleIds(Arrays.asList(AuthUtil.getUser().getRoleId().split(",")),treeQueryObject.getConditionMap().getOrDefault("authType","classify_auth"),treeQueryObject.getConditionMap().getOrDefault("menuCode","classify_view"));
            // 请求失败或者请求得到的具备查看权限的分类id集合为空
            if(!viewClassByRoleIds.isSuccess() && viewClassByRoleIds.getData().isEmpty()){
                throw new ServiceException("主数据查看权限未配置,或配置有误!");
            }
            long startTime = System.currentTimeMillis();
            // 过滤
            filterTreeNodes(tree,viewClassByRoleIds.getData());
            long endTime = System.currentTimeMillis();
            System.out.println(("执行时间:"+(endTime-startTime)/1000)+"s");
        }
        // 加载分类是否具有子分类
        tree.parallelStream().forEach(item -> {
            boolean checkHasChild = checkHasChild(item.getOid());
            item.setLeaf(!checkHasChild);
        });
        return tree;
    }
@@ -617,8 +621,8 @@
        Iterator<Tree> iterator = trees.iterator();
        while (iterator.hasNext()) {
            Tree tree = iterator.next();
            Boolean checkHasChild = codeClassifyMapper.checkHasChild(tree.getOid());
            tree.setLeaf(!checkHasChild);
            /*Boolean checkHasChild = checkHasChild(tree.getOid());
            tree.setLeaf(!checkHasChild);*/
            if (classifyIds.contains(tree.getOid())) {
                // 如果顶层节点存在于 classifyIds 中,直接保留其子节点集合
                continue;
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -99,7 +99,6 @@
        List<Menu> allMenus = baseMapper.allMenu();
        List<Menu> roleMenus;
        // 超级管理员并且不是顶部菜单请求则返回全部菜单
        // if (AuthUtil.isAdministrator() && Func.isEmpty(topMenuId)) {
        if (VciBaseUtil.checkAdminTenant() && Func.isEmpty(topMenuId)) {
            roleMenus = allMenus;
        }
@@ -229,6 +228,7 @@
     * 租户菜单权限自定义筛选
     */
    private List<Menu> tenantPackageMenu(List<Menu> menu) {
        // 租户包配置查询
        TenantPackage tenantPackage = SysCache.getTenantPackage(AuthUtil.getTenantId());
        if (Func.isNotEmpty(tenantPackage) && tenantPackage.getId() > 0L) {
            List<Long> menuIds = Func.toLongList(tenantPackage.getMenuId());
Source/UBCS/ubcs-service/ubcs-system/src/main/resources/mapper/MenuMapper.xml
@@ -242,7 +242,7 @@
        WHERE
        ps."CATEGORY" = 1
        <if test="roleId != null and roleId != ''">
            AND ps.ID = prom.MENU_ID
            AND pm.ID = prom.MENU_ID
            AND prom.ROLE_ID = #{roleId}
        </if>
        AND pm.IS_DELETED = 0