Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -49,6 +49,7 @@
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.system.cache.NacosConfigCache;
import com.vci.ubcs.system.feign.ISysClient;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -92,7 +93,7 @@
   private IBtmTypeClient btmTypeClient;
   @Resource
   private CommonsMapper commonsMapper;
   private ISysClient sysClient;
   /**
    * 日志
@@ -582,18 +583,67 @@
         return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
            .getLcStatus()) ? (" 【停用】 ") : "");
      });
      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);
      //超管显示所有分类
      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 {
         // 那些分类具备查看权限
         R<List<String>> viewClassByRoleIds = sysClient.getViewClassByRoleIds(Arrays.asList(AuthUtil.getUser().getRoleId().split(",")));
         // 请求失败或者请求得到的具备查看权限的分类id集合为空
         if(!viewClassByRoleIds.isSuccess() && !viewClassByRoleIds.getData().isEmpty()){
            return new ArrayList<>();
         }
         // 过滤
         filterTreeNodes(tree,viewClassByRoleIds.getData());
      }
      return tree;
   }
   /**
    * 分类授权过滤掉没有权限的分类
    * @param trees
    * @param classifyIds
    */
   private void filterTreeNodes(List<Tree> trees, List<String> classifyIds) {
      Iterator<Tree> iterator = trees.iterator();
      while (iterator.hasNext()) {
         Tree tree = iterator.next();
         Boolean checkHasChild = codeClassifyMapper.checkHasChild(tree.getOid());
         tree.setLeaf(!checkHasChild);
         if (classifyIds.contains(tree.getOid())) {
            // 如果顶层节点存在于 classifyIds 中,直接保留其子节点集合
            continue;
         }
         if (tree.getChildren() != null && !tree.getChildren().isEmpty()) {
            filterTreeNodes(tree.getChildren(), classifyIds);
         }
         if (!hasMatchingChild(tree, classifyIds)) {
            iterator.remove();
         }
      }
   }
   private boolean hasMatchingChild(Tree tree, List<String> classifyIds) {
      if (classifyIds.contains(tree.getOid())) {
         return true;
      }
      if (tree.getChildren() != null) {
         for (Tree child : tree.getChildren()) {
            if (hasMatchingChild(child, classifyIds)) {
               return true;
            }
         }
      }
      return false;
   }
   /**
@@ -688,7 +738,10 @@
      if(codeClassifies.isEmpty()){
         return "";
      }
      String oids = codeClassifies.stream().map(CodeClassify::getOid).collect(Collectors.joining(","));
      String oids = codeClassifies.stream()
         .map(CodeClassify::getOid)
         .map(s -> "'" + s + "'")
         .collect(Collectors.joining(","));;
      return oids;
   }
@@ -697,7 +750,6 @@
    */
   @Override
   public R flowingDependencyGen(String classifyOid) {
      //查询此分类下面的所有分类
      List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(classifyOid,AuthUtil.getTenantId(),null);
      //查询码值表,获取最大流水
@@ -705,6 +757,17 @@
         .map(classfiy -> classfiy.getOid()).collect(Collectors.joining("','")) + "'","'${sav}'");
      //往流水表里面加数据,有则更新,无则添加数据。
      for (CodeAllCode codeAllCodeVO : codeAllCodeVOS) {
         if(Func.isEmpty(codeAllCodeVO.getSerialUnit())){
            throw new ServiceException("编码为:" + codeAllCodeVO.getId() + "的码值数据流水依赖不能为空!");
         }
         try {
            CodeRuleVO codeRuleVO = codeRuleService.getObjectByOid(codeAllCodeVO.getCodeRuleOid());
            if(Func.isEmpty(codeRuleVO)){
               continue;
            }
         }catch (Exception e){
            continue;
         }
         QueryWrapper<CodeBasicSec> secWrapper = new QueryWrapper<>();
         secWrapper.eq("PKCODERULE",codeAllCodeVO.getCodeRuleOid());
         secWrapper.eq("SECTYPE","codeserialsec");
@@ -1405,6 +1468,19 @@
   }
   /**
    * 查询所有上层父节点的oid
    * @param oid
    * @return
    */
   @Override
   public List<String> selectAllParentOid(String oid){
      if(Func.isBlank(oid)){
         return new ArrayList<>();
      }
      return this.codeClassifyMapper.selectAllParentOid(oid);
   }
   /**
    * 使用分类主键获取分类相关的所有信息
    *
    * @param codeClassifyOid 分类的主键