xiejun
2023-10-19 04c7d6cd080dc32ac866a44c90d1cbcaf1451aa8
Merge remote-tracking branch 'origin/master'
已修改13个文件
127 ■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleMenuService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MdmCountConfigServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleMenuServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java
@@ -94,7 +94,7 @@
     * @return
     */
    @GetMapping(MENU_BY_CODES)
    R<List<Menu>> getMenuByCodes(@RequestParam("codes") List<String> codes);
    R<List<Menu>> getMenuByCodes(@RequestParam("codes") List<String> codes,@RequestParam("userId") Long userId);
    /**
     * 获取用配置的主数据统计
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java
@@ -38,7 +38,7 @@
    }
    @Override
    public R<List<Menu>> getMenuByCodes(List<String> codes) {
    public R<List<Menu>> getMenuByCodes(List<String> codes,Long userId) {
        return R.fail("获取数据失败");
    }
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MybatisParameterUtil.java
@@ -148,5 +148,4 @@
        return newList;
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeBasicSecController.java
@@ -243,7 +243,7 @@
    @GetMapping("/getMaxSerialNumberForCodeRule")
    @ApiOperationSupport(order = 15)
    @ApiOperation(value = "查询编码规则的所有流水依赖的最大流水", notes = "传入oid")
    public R getMaxSerialNumberForCodeRule(@RequestBody CodeOrderDTO codeOrderDTO){
    public R getMaxSerialNumberForCodeRule(CodeOrderDTO codeOrderDTO){
        return R.data(codeBasicSecService.getMaxSerialNumberForCodeRule(codeOrderDTO));
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateController.java
@@ -100,7 +100,6 @@
     */
    @PostMapping( "/copy")
    public R copyTemplate(@RequestBody CodeClassifyTemplateDTO codeClassifyDTO) {
        return plCodeClstemplateService.copyTemplate(codeClassifyDTO);
    }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClstemplateServiceImpl.java
@@ -31,6 +31,7 @@
import com.vci.ubcs.code.service.ICodeClstemplateService;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateVO;
import com.vci.ubcs.common.constant.CommonConstant;
import com.vci.ubcs.flow.core.entity.ProcessTemplate;
import com.vci.ubcs.flow.core.feign.IFlowClient;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -627,6 +628,8 @@
        codeClassifyTemplateDO_old.setTs(new Date());
        codeClassifyTemplateDO_old.setCreateTime(new Date());
        codeClassifyTemplateDO_old.setLastModifyTime(new Date());
        // 复制的模板生命周期改为编辑中
        codeClassifyDO_old.setLcStatus(FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_EDITING);
        List<CodeClassifyTemplate> codeClassifyTemplateDOList = new ArrayList<>();
        codeClassifyTemplateDOList.add(codeClassifyTemplateDO_old);
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmCountServiceImpl.java
@@ -12,6 +12,7 @@
import com.vci.ubcs.system.feign.ISysClient;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.stereotype.Service;
@@ -54,7 +55,7 @@
     */
    @Override
    public List<MdmCount> getMdmCounts(String userId) throws ServiceException{
        if(Func.isBlank(userId)){
        if(Func.isBlank(userId) && Func.isBlank(AuthUtil.getUserId().toString())){
            throw new ServiceException("必传参数用户id不能为空");
        }
        /** 1、先查询出各分类顶层节点有哪些主数据,拿到业务类型名称,相当于拿到主数据表名
@@ -66,15 +67,15 @@
            .isNull(CodeClassify::getParentCodeClassifyOid).select(CodeClassify::getBtmTypeId)
            .orderByAsc(CodeClassify::getBtmTypeId);
        List<CodeClassify> codeClassifies = codeClassifyService.list(wrapper);
        List<String> btyTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
        List<String> btmTypeIds = codeClassifies.stream().map(CodeClassify::getBtmTypeId).collect(Collectors.toList());
        // 2、然后feign调用需要查询出菜单路由和图标
        R<List<Menu>> menuList = sysClient.getMenuByCodes(btyTypeIds);
        if(!menuList.isSuccess() && menuList.getData().isEmpty()){
            throw new ServiceException("获取主数据统计时,主数据菜单查询为空,原因:"+menuList.getMsg());
        R<List<Menu>> menuList = sysClient.getMenuByCodes(btmTypeIds,Func.toLong(userId));
        if(!menuList.isSuccess()){
            throw new ServiceException("获取主数据统计时,主数据菜单查询失败,原因:"+menuList.getMsg());
        }
        List<MdmCount> mdmCountList = new ArrayList<>();
        // 3、查询当前登录的用户配置了那些主数据统计项
        R<MdmCountConfig> mdmCountConfig = sysClient.getMdmCountConfig(userId);
        R<MdmCountConfig> mdmCountConfig = sysClient.getMdmCountConfig(Func.isBlank(userId) ? AuthUtil.getUserId().toString():userId);
        if(!mdmCountConfig.isSuccess()){
            throw new ServiceException("获取主数据统计项配置时出现错误,原因:"+mdmCountConfig.getMsg());
        }
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java
@@ -74,8 +74,8 @@
     */
    @Override
    @GetMapping(MENU_BY_CODES)
    public R<List<Menu>> getMenuByCodes(List<String> codes) {
        return R.data(menuService.getMenuByCodes(codes));
    public R<List<Menu>> getMenuByCodes(List<String> codes,Long userId) {
        return R.data(menuService.getMenuByCodes(codes,userId));
    }
    @Override
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java
@@ -175,11 +175,12 @@
    List<Menu> getMenuButtonByType(String btmType);
    /**
     * 根据code查询菜单信息
     * 根据code和用户id查询菜单信息
     * @param codes
     * @param userId
     * @return
     */
    List<Menu> getMenuByCodes(List<String> codes);
    List<Menu> getMenuByCodes(List<String> codes,Long userId);
    /**
     * 对KeepAlive值转换成布尔类型进行封装
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IRoleMenuService.java
@@ -19,6 +19,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.system.entity.RoleMenu;
import java.util.List;
/**
 * 服务类
 *
@@ -26,4 +28,11 @@
 */
public interface IRoleMenuService extends IService<RoleMenu> {
    /**
     * 根据用户id查询,被授权的菜单id
     * @param userId
     * @return
     */
    List<Long> getMenuIdByUserId(Long userId);
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MdmCountConfigServiceImpl.java
@@ -39,7 +39,7 @@
        if(mdmCountConfigVO.getMdmNameList().isEmpty()) {
            return R.status(false);
        }
        if(mdmCountConfigVO.getMdmNameList().size() > 7){
        if(mdmCountConfigVO.getMdmNameList().size() > 8){
            return R.fail("显示的主数据配置项最多为8项");
        }
        boolean res = false;
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -20,10 +20,15 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.vci.ubcs.starter.enumpack.CodeTableNameEnum;
import com.vci.ubcs.starter.util.MybatisParameterUtil;
import com.vci.ubcs.system.cache.NacosConfigCache;
import com.vci.ubcs.system.cache.SysCache;
import com.vci.ubcs.system.dto.MenuDTO;
import com.vci.ubcs.system.entity.*;
import com.vci.ubcs.system.user.entity.User;
import com.vci.ubcs.system.user.feign.IUserClient;
import com.vci.ubcs.system.vo.MenuVO;
import com.vci.ubcs.system.mapper.MenuMapper;
import com.vci.ubcs.system.service.IMenuService;
@@ -47,6 +52,7 @@
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import javax.management.relation.Role;
import java.util.*;
import java.util.stream.Collectors;
@@ -314,16 +320,38 @@
    /**
     * 根据code查询菜单信息
     * @param codes
     * @param userId
     * @return
     */
    @Override
    public List<Menu> getMenuByCodes(List<String> codes) {
    public List<Menu> getMenuByCodes(List<String> codes,Long userId) {
        if(codes.isEmpty()){
            return new ArrayList<>();
        }
        // 查询菜单信息
        LambdaQueryWrapper<Menu> wrapper = Wrappers.<Menu>query()
            .lambda()
            .in(Menu::getCode, codes)
            .eq(Menu::getIsDeleted,0) /*未被删除*/
            .eq(Menu::getCategory,1) /*菜单类型不能为按钮*/
            .orderByAsc(Menu::getCode);  /*根据code排序与classify的btmtypeid对应*/
        // 超管不用根据角色来查询
        if(!AuthUtil.getTenantId().equals(NacosConfigCache.getAdminUserInfo().getTenantId())
            && !AuthUtil.getUserId().equals(NacosConfigCache.getAdminUserInfo().getUserId())
        ){
            if(Func.isBlank(userId.toString()) && Func.isBlank(AuthUtil.getUserId().toString())){
                throw new ServiceException("获取用户id失败");
            }
            List<Long> menuIds = roleMenuService.getMenuIdByUserId(userId);
            if(menuIds.isEmpty()){
                return new ArrayList<>();
            }
            if(menuIds.size()>=1000){
                MybatisParameterUtil.cutInParameter(wrapper,Menu::getId,menuIds);
            }else {
                wrapper.in(Menu::getId,menuIds);
            }
        }
        return this.list(wrapper);
    }
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/RoleMenuServiceImpl.java
@@ -16,11 +16,27 @@
 */
package com.vci.ubcs.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.starter.util.MybatisParameterUtil;
import com.vci.ubcs.system.entity.RoleMenu;
import com.vci.ubcs.system.mapper.RoleMenuMapper;
import com.vci.ubcs.system.service.IRoleMenuService;
import com.vci.ubcs.system.service.IRoleService;
import com.vci.ubcs.system.user.entity.User;
import com.vci.ubcs.system.user.feign.IUserClient;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 服务实现类
@@ -30,4 +46,41 @@
@Service
public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements IRoleMenuService {
    @Resource
    private RoleMenuMapper roleMenuMapper;
    @Resource
    private IUserClient userClient;
    /**
     * 根据用户id查询,被授权的菜单id
     * @param userId
     * @return
     */
    @Override
    public List<Long> getMenuIdByUserId(Long userId) {
        // 根据用户id查询菜单id
        R<User> userR = userClient.userInfoById((Func.isEmpty(userId) ? AuthUtil.getUserId():userId));
        if (!userR.isSuccess() || Func.isEmpty(userR.getData())) {
            throw new ServiceException("用户信息查询失败,原因:"+userR.getMsg());
        }
        // 当查询条件in大于一千条时
        List<String> roleIdList = Func.toStrList(userR.getData().getRoleId());
        //构建查询菜单id的查询条件
        LambdaQueryWrapper<RoleMenu> roleMenuWrapper = Wrappers.<RoleMenu>query()
            .lambda().select(RoleMenu::getMenuId);
        if(roleIdList.size()>=1000){
            MybatisParameterUtil.cutInParameter(roleMenuWrapper,RoleMenu::getRoleId,roleIdList);
        }else {
            roleMenuWrapper.in(RoleMenu::getRoleId,roleIdList);
        }
        List<RoleMenu> roleMenus = roleMenuMapper.selectList(roleMenuWrapper);
        if(roleMenus.isEmpty()){
            return new ArrayList<>();
        }
        return roleMenus.stream().map(RoleMenu::getMenuId).collect(Collectors.toList());
    }
}