weidy
2023-07-05 84e53f29d2c7eaceace2c7dd29d4f7125f211b76
Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.exception.NacosException;
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.omd.constant.BtmTypeConstant;
@@ -387,7 +388,7 @@
      ddlDTO.setBtmTypeList(btmTypeVOList);
      try {
         // 将以前的checkDifferent和reflexDifferent结合了
         R result = DomainRepeater.checkDifferent(ddlDTO,btmTypeVO.getDomain());
         R result = DomainRepeater.checkDifferent(ddlDTO,btmTypeVO.getBizDomain());
         if (result.isSuccess()){
            List<ModifyAttributeInfo> infoList = new ArrayList<>();
            Object data = result.getData();
@@ -494,12 +495,13 @@
      }
      checkBtmTypeBeforeSave(btmTypeDTO);
      BtmType btmTypeDO = Optional.ofNullable(BeanUtil.copy(btmTypeDTO, BtmType.class)).orElseGet(BtmType::new);
      btmTypeDO.setBizDomain(btmTypeDTO.getDomain());
      List<BtmTypeLinkAttributesDTO> attributes = btmTypeDTO.getAttributes();
      List<BtmTypeAttributeVO> afterAttributes;
      if (StringUtils.isBlank(btmTypeDO.getOid())){
         btmTypeDO = BtmTypeWrapper.build().entityBeforeInsert(btmTypeDO);
         if (StringUtils.isBlank(btmTypeDO.getTableName())) {
            btmTypeDO.setTableName(getTableName(btmTypeDO.getId(),btmTypeDO.getDomain()));
            btmTypeDO.setTableName(getTableName(btmTypeDO.getId(),btmTypeDO.getBizDomain()));
         }
         // 添加属性
         btmTypeDTO.setOid(btmTypeDO.getOid());
@@ -602,13 +604,12 @@
      if (btmTypeDTO.isRevisionFlag()){
         // 需要控制版本
         // 检查使用的版本规则是否存在
            if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) {
               if (!revisionRuleService.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) {
                  throw new VciBaseException("版本规则{0}[{1}]在系统中不存在,请先查证",
                     new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()});
               }
         if (StringUtils.isNotBlank(btmTypeDTO.getRevisionRuleId())) {
            if (!revisionRuleService.checkRevisionRuleExist(btmTypeDTO.getRevisionRuleId())) {
               throw new VciBaseException("版本规则{0}[{1}]在系统中不存在,请先查证",
                  new Object[]{btmTypeDTO.getRevisionRuleId(), btmTypeDTO.getRevisionRuleName()});
            }
         btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.REVISION_MANAGE_FIELD_MAP));
         }
      }
      if (btmTypeDTO.isLifeCycleFlag()){
         // 需要控制生命周期
@@ -626,11 +627,9 @@
//                     new Object[]{btmTypeDTO.getSubLifeCycleId(), btmTypeDTO.getSubLifeCycleName()});
//               }
//            }
//         btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.LIFECYCLE_MANAGE_FIELD_MAP));
      }
      if (btmTypeDTO.isSecretFlag()){
         // 需要控制密级
//         btmTypeDTO.setAttributes(addAttributeByFieldMap(btmTypeDTO.getAttributes(),BtmTypeFieldConstant.SECRET_MANAGE_FIELD_MAP));
      }
   }
   @Override
@@ -653,7 +652,7 @@
      try {
         Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(DomainVO::getValue, DomainVO::getLabel));
         List<BtmTypeVO> vos = BtmTypeWrapper.build().listEntityVO(baseMapper.selectAll());
         Map<String, List<BtmTypeVO>> domainMap = vos.stream().sorted(Comparator.comparing(BtmTypeVO::getId)).collect(Collectors.groupingBy(BtmTypeVO::getDomain));
         Map<String, List<BtmTypeVO>> domainMap = vos.stream().sorted(Comparator.comparing(BtmTypeVO::getId)).collect(Collectors.groupingBy(BtmTypeVO::getBizDomain));
         List<BtmTreeVO> treeList = new ArrayList<>();
         domainMap.forEach((k,v)-> {
            if (domain.containsKey(k)){
@@ -736,7 +735,7 @@
         btmType.setCreator(user);
         btmType.setBtmName(BtmTypeConstant.BTMTYPE);
         btmType.setCreateTime(now);
         btmType.setDomain(domain);
         btmType.setBizDomain(domain);
         btmType.setLastModifyTime(now);
         btmType.setLastModifier(user);
         btmType.setName(dto.getDescription());
@@ -870,4 +869,84 @@
      btmType.setAttributes(btmTypeAttributeService.getAllAttribute(btmType));
      return btmType;
   }
   /**
    * 获取引用某个生命周期的业务类型
    *
    * @param lifeId 生命周期的编号
    * @return 业务类型显示对象
    */
   @Override
   public List<BtmTypeVO> selectByLifeId(String lifeId) {
      if(StringUtils.isBlank(lifeId)){
         return new ArrayList<>();
      }
      LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>();
      query.eq(BtmType::getLifeCycleId,lifeId);
      return BtmTypeWrapper.build().listEntityVO(getBaseMapper().selectList(query));
   }
   /**
    * 获取引用某些生命周期的业务类型
    *
    * @param lifeIds 生命周期的编号集合
    * @return 业务类型显示对象
    */
   @Override
   public List<BtmTypeVO> selectByLifeIds(Collection<String> lifeIds) {
      if(CollectionUtils.isEmpty(lifeIds)){
         return new ArrayList<>();
      }
      List<BtmType> btmTypeList = new ArrayList<>();
      VciBaseUtil.switchCollectionForOracleIn(lifeIds).stream().forEach(ids->{
         LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>();
         ids.stream().forEach(id->{
            query.eq(BtmType::getLifeCycleId,id);
            query.or();
         });
         query.eq(BtmType::getLifeCycleId,"-1");
         btmTypeList.addAll(baseMapper.selectList(query));
      });
      return BtmTypeWrapper.build().listEntityVO(btmTypeList);
   }
   /**
    * 统计引用某个生命周期的业务类型
    *
    * @param lifeId 生命周期的编号
    * @return 个数
    */
   @Override
   public Integer countByLifeId(String lifeId) {
      if(StringUtils.isBlank(lifeId)){
         return 0;
      }
      LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>();
      query.eq(BtmType::getLifeCycleId,lifeId);
      return baseMapper.selectCount(query).intValue();
   }
   /**
    * 统计引用某些生命周期的业务类型
    *
    * @param lifeIds 生命周期的编号集合
    * @return 个数
    */
   @Override
   public Integer countByLifeIds(Collection<String> lifeIds) {
      if(CollectionUtils.isEmpty(lifeIds)){
         return 0;
      }
      final Integer[] total = {0};
      VciBaseUtil.switchCollectionForOracleIn(lifeIds).stream().forEach(ids->{
         LambdaQueryWrapper<BtmType> query = new LambdaQueryWrapper<BtmType>();
         ids.stream().forEach(id->{
            query.eq(BtmType::getLifeCycleId,id);
            query.or();
         });
         query.eq(BtmType::getLifeCycleId,"-1");
         total[0] += baseMapper.selectCount(query).intValue();
      });
      return total[0];
   }
}