ludc
2023-08-04 9d96f11fb1de77d1ad4fb0be04a10ae8eb7f46c9
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -23,7 +23,7 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
import com.vci.ubcs.code.dto.CodeBasicSecDTO;
import com.vci.ubcs.code.dto.CodeRuleDTO;
import com.vci.ubcs.code.entity.*;
@@ -32,10 +32,7 @@
import com.vci.ubcs.code.mapper.CodeRuleMapper;
import com.vci.ubcs.code.mapper.CodeSerialValueMapper;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.ICodeAllCodeService;
import com.vci.ubcs.code.service.ICodeBasicSecService;
import com.vci.ubcs.code.service.ICodeClassifyService;
import com.vci.ubcs.code.service.ICodeRuleService;
import com.vci.ubcs.code.service.*;
import com.vci.ubcs.code.vo.pagemodel.CodeBasicSecVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyVO;
import com.vci.ubcs.code.vo.pagemodel.CodeFixedValueVO;
@@ -45,8 +42,10 @@
import com.vci.ubcs.omd.cache.EnumCache;
import com.vci.ubcs.omd.enums.EnumEnum;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.revision.model.TreeQueryObject;
import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
import com.vci.ubcs.starter.util.MdmBtmTypeConstant;
import com.vci.ubcs.starter.util.UBCSCondition;
import com.vci.ubcs.starter.web.pagemodel.*;
import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
@@ -103,6 +102,8 @@
   private ICodeAllCodeService codeAllcodeService;
   @Resource
   private ICodeBasicSecService codeBasicSecService;
   @Resource
   private ICodeClassifyValueService iCodeClassifyValueService;
   /**
    * 对象的操作
@@ -162,11 +163,14 @@
    */
   @Override
   public boolean checkCodeRuleRepeat(CodeRuleDTO codeRuleDTO){
      List<CodeRule> codeRulesList = this.codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda().eq(CodeRule::getId, codeRuleDTO.getId()));
      // 根据规则id查询编号
      List<CodeRule> codeRulesList = this.codeRuleMapper.selectList(Wrappers.<CodeRule>query()
         .lambda().eq(CodeRule::getId, codeRuleDTO.getId())
         .eq(CodeRule::getTenantId,AuthUtil.getTenantId().equals(this.tenantId) ? "":codeRuleDTO.getTenantId()));
      if(!codeRulesList.isEmpty()){
         return codeRulesList.parallelStream().anyMatch(codeRule -> {
            if(StringUtils.isNotBlank(codeRuleDTO.getOid())){
               // 代表是修改
               // 代表是修改,不是将编号修改相同的编号
               return !codeRule.getOid().equals(codeRuleDTO.getOid());
            }else {
               return true;
@@ -516,7 +520,7 @@
      String secTypes = releaseCodeRule.getSecVOList().stream().map(CodeBasicSecVO::getSecType).collect(Collectors.joining(","));
      // 查询出所有已发布的编码规则中码段类型顺序与当前要发布的规则顺序一致的编码规则,此时已近过滤掉大部分规则,运算量减小
      List<CodeRule> codeRuleList = codeRuleMapper.selectList(Wrappers.<CodeRule>query().lambda()
         .eq(CodeRule::getLcStatus, FrameWorkDefaultValueConstant.FRAMEWORK_RELEASE_RELEASED)
         .eq(CodeRule::getLcStatus, CodeRuleLC.RELEASED.getValue())
         .eq(CodeRule::getBasicSecTypes,secTypes)
      );
      // 为空,证明不存在类同的编码规则直接返回
@@ -564,7 +568,9 @@
                  break;
               // 分类码段比对按升序排序码值
               case "codeclassifysec":
                  if(!releasedBasicSec.getReferCodeClassifyOid().equals(releaseBasicSec.getReferCodeClassifyOid())){
                  String classifyValueStr = this.iCodeClassifyValueService.getClassifyValueStr(releasedBasicSec.getOid());
                  String classifyValueStr1 = this.iCodeClassifyValueService.getClassifyValueStr(releaseBasicSec.getOid());
                  if(classifyValueStr.equals(classifyValueStr1)){
                     flag = false;
                  }
                  break;
@@ -596,16 +602,24 @@
                  }
                  break;
            }
            if (!flag) {
               break;
            }
         }
         // 满足所有码段类型比对条件的规则
         if (flag) {
            lastCodeRule.add(item);
         }
      });
      StringBuffer resMsg = new StringBuffer();
      resMsg.append("存在如下相似规则,是否继续发布?\n");
      // 最后将结果进行处理并返回
      return null;
      lastCodeRule.stream().forEach(item->{
         resMsg.append(item.getName());
         resMsg.append(item.getId());
         resMsg.append("编码规则;\n");
      });
      return R.fail(resMsg.toString());
   }
   /**