ludc
2023-11-15 4136c16e52716975ff05e3b066f6719c5b7e2bd8
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +14,7 @@
import com.vci.ubcs.code.enumpack.FrameworkDataLCStatus;
import com.vci.ubcs.code.mapper.CodeClassifyMapper;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.po.CodeClassifyPO;
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.ICodeKeyAttrRepeatService;
@@ -69,6 +71,7 @@
import java.util.stream.Stream;
import static com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant.*;
import static com.vci.ubcs.starter.web.util.VciBaseUtil.getTableName;
@Service
public class CodeClassifyServiceImpl extends ServiceImpl<CodeClassifyMapper, CodeClassify> implements ICodeClassifyService {
@@ -84,6 +87,9 @@
   @Resource
   private IBtmTypeClient btmTypeClient;
   @Resource
   private CommonsMapper commonsMapper;
   /**
    * 日志
@@ -442,7 +448,7 @@
      List<CodeClassifyVO> voList = new ArrayList<CodeClassifyVO>();
      if(!CollectionUtils.isEmpty(codeClassifys)){
         for(CodeClassify s: codeClassifys){
            CodeClassifyVO vo =  codeClassifyDO2VO(s);
            CodeClassifyVO vo = codeClassifyDO2VO(s);
            if(vo != null){
               voList.add(vo);
            }
@@ -522,20 +528,21 @@
         lcStatus = treeQueryObject.getConditionMap().getOrDefault("lcStatus",null);
      }
      if(StringUtils.isNotBlank(id) || StringUtils.isNotBlank(lcStatus) ){
         //String tableName = this.getTableName(treeQueryObject.getConditionMap().get("btmTypeId"),treeQueryObject.getConditionMap().get("id"), treeQueryObject.getConditionMap().get("lcStatus"));
         doList = codeClassifyMapper
            .selectCodeClassifyDOByTree(treeQueryObject.getConditionMap().get("id"),treeQueryObject.getConditionMap().get("lcStatus"),treeQueryObject.getParentOid(), AuthUtil.getTenantId()
               .equals(
                  NacosConfigCache
                     .getAdminUserInfo()
                     .getTenantId()
               ) ? null:AuthUtil.getTenantId());
            .selectCodeClassifyDOByTree(
               treeQueryObject.getConditionMap().get("id"),
               treeQueryObject.getConditionMap().get("lcStatus"),
               treeQueryObject.getParentOid(),
               VciBaseUtil.checkAdminTenant() ? null:AuthUtil.getTenantId()
               /*tableName*/
            );
      }else{
         doList =codeClassifyMapper.selectCodeClassifyVOByTree(treeQueryObject.getParentOid(), AuthUtil.getTenantId()
            .equals(
               NacosConfigCache
                  .getAdminUserInfo()
                  .getTenantId()
            ) ? null:AuthUtil.getTenantId());
         // 只要前端会传参数过来就不会出现走这句的情况,所以查询总数没在这儿添加
         doList =codeClassifyMapper.selectCodeClassifyVOByTree(
            treeQueryObject.getParentOid(),
            VciBaseUtil.checkAdminTenant() ? null:AuthUtil.getTenantId()
         );
      }
      List<CodeClassifyVO> voList = codeClassifyDO2VOs(doList);
      TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions(PARENT_FIELD_NAME);
@@ -545,6 +552,7 @@
         return s.getId() + " " + s.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equalsIgnoreCase(s
            .getLcStatus()) ? (" 【停用】 ") : "");
      });
      Iterator var6 =  tree.listIterator();
      while(var6.hasNext()){
         Tree trees = (Tree) var6.next();
@@ -556,6 +564,28 @@
         }
      }
      return tree;
   }
   /**
    * 分类加载时获取业务类型id,拼接业务类型表名
    * @return
    */
   private String getTableName(String btmTypeId,String id,String lcStatus){
      if(Func.isNotEmpty(btmTypeId)){
         return VciBaseUtil.getTableName(btmTypeId,true);
      }
      LambdaQueryWrapper<CodeClassify> wrapper = Wrappers.<CodeClassify>query()
         .lambda().select(CodeClassify::getBtmTypeId)
         .eq(CodeClassify::getLcStatus, lcStatus)
         .isNotNull(CodeClassify::getBtmTypeId)
         .last("limit 1")
         .eq(CodeClassify::getId,id).isNull(CodeClassify::getParentCodeClassifyOid);
      CodeClassify codeClassify = codeClassifyMapper.selectOne(wrapper);
      if(Func.isEmpty(codeClassify) || Func.isEmpty(codeClassify.getBtmTypeId())){
         throw new ServiceException("查询主数据总数时,未获取到业务类型ID!");
      }
      return VciBaseUtil.getTableName(codeClassify.getBtmTypeId(),true);
   }
   /**
@@ -609,12 +639,13 @@
    * @param oid
    * @return
    */
   public List<CodeClassifyVO> selectAllClassifyByOid(String oid){
      List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId());
   public List<CodeClassifyVO> selectAllClassifyByOid(String oid, String fieldInPath){
      List<CodeClassify>  codeClassifyList=codeClassifyMapper.selectAllClassifyByOid(oid,AuthUtil.getTenantId(),fieldInPath);
      List<CodeClassifyVO> voList = codeClassifyDO2VOs(codeClassifyList);
      return voList;
   }
   /***
    * 根据分类描述备注和库节点查询分类信息
    * @param desc
@@ -777,9 +808,8 @@
   @Override
   public List<CodeClassifyVO> listChildrenClassify(String codeClassifyOid, boolean allLevel, String fieldInPath, boolean enable) {
      if(allLevel){
         List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath);
         List<CodeClassify> classifyDOS = codeClassifyMapper.selectAllLevelChildHasPath(codeClassifyOid,fieldInPath,AuthUtil.getTenantId());
         if(!CollectionUtils.isEmpty(classifyDOS)){
            // 这儿用stream有点慢
            classifyDOS = classifyDOS.parallelStream().filter(s->FRAMEWORK_DATA_ENABLED.equalsIgnoreCase(s.getLcStatus())).collect(Collectors.toList());
         }
         return codeClassifyDO2VOs(classifyDOS);
@@ -898,7 +928,7 @@
      Map<String/**路径**/,String/**主键**/> oidPathMap = new HashMap<>();
      //我们需要查询所有已经存在的分类,主要是路径,用来判断分类的数据
      List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null);
      List<CodeClassify> existClassifyDOs = codeClassifyMapper.selectAllLevelChildHasPath("",null,AuthUtil.getTenantId());
      Map<String/**路径**/, CodeClassify/**已经存在的数据**/> pathDOMap = Optional.ofNullable(existClassifyDOs).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(s -> {
         String path = s.getPath();
         if(StringUtils.isNotBlank(path) && path.startsWith("#")){
@@ -1234,7 +1264,7 @@
         return null;
      }
      List<Tree> treeList = trees.stream().filter(tree -> !CollectionUtils.isEmpty(btmTypeVOS.stream().filter(btmType -> {
               if(Objects.equals(tree.getAttributes().get("id"), btmType.getId())){
               if(Objects.equals(tree.getAttributes().get("btmTypeId"), btmType.getId())){
                  tree.getAttributes().put("btmTypeOid",btmType.getOid());
                  return true;
               }