ludc
2023-08-01 ddab14a4547255236c60b1cd039013c2eaecf18f
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -15,7 +15,9 @@
import com.vci.ubcs.code.mapper.CodeClassifyTemplateAttrMapper;
import com.vci.ubcs.code.mapper.CodeClassifyTemplateMapper;
import com.vci.ubcs.code.service.ICodeClassifyTemplateAttrService;
import com.vci.ubcs.code.service.ICodeReferConfigService;
import com.vci.ubcs.code.service.ICodeTempphaseService;
import com.vci.ubcs.code.vo.CodeReferConfigVO;
import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateAttrVO;
import com.vci.ubcs.code.wrapper.CodeClassifyTemplateAttrWrapper;
import com.vci.ubcs.omd.feign.IAttributeClient;
@@ -39,7 +41,9 @@
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
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.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
@@ -69,16 +73,14 @@
   @Resource
   private CodeClassifyTemplateAttrMapper codeClassifyTemplateAttrMapper;
   //   @Resource
   //   CodeClstempattrMapper codeClstempattrMapper;
      //   @Resource
   //   ICodeTempphaseService codeTempphaseService;
   @Resource
   IDictBizClient iDictBizClient;
   @Resource
   CodeClassifyTemplateMapper codeClassifyTemplateMapper;
   @Resource
   private ICodeReferConfigService codeReferConfigService;
   @Resource
   @Lazy
@@ -361,8 +363,10 @@
         throw new VciBaseException("模板属性英文名称【{0}】重复",new String[]{ repeatIdList.stream().collect(Collectors.joining(","))});
      }
      //模板oid
      // 模板oid
      String CLASSIFYTEMPLATEOID = null;
      //
      CodeReferConfigVO codeReferConfigVO = null;
      //转换
      List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOInsert = new ArrayList<CodeClassifyTemplateAttr>();
      List<String> prefix = new ArrayList<>();
@@ -403,7 +407,7 @@
            throw new VciBaseException("{0}{1}属性的时间格式不符合要求",new String[]{codeClassifyTemplateAttrDO.getId(),codeClassifyTemplateAttrDO.getName()});
         }
         //如果是组合规则,里面使用的属性不能缺失,也都得显示
         String componentrule = codeClassifyTemplateAttrDTO.getComponentrule();
         String componentrule = codeClassifyTemplateAttrDTO.getComponentRule();
         boolean isContainsDynamicParameter = PatternUtil.isContainsDynamicParameter(componentrule);
         if(isContainsDynamicParameter){
            List<String> userdAttrList =  PatternUtil.getKeyListByContent(componentrule);//包含的所有${xxx}中的xxx
@@ -414,7 +418,7 @@
               }
               //要看看表单是否显示
               String unFormDisplayAttr = userdAttrList.stream().filter(s -> !VciBaseUtil.getBoolean(attrDTOMap.getOrDefault(s.toLowerCase(Locale.ROOT),
                  new CodeClassifyTemplateAttrDTO()).getFormdisplayflag())).collect(Collectors.joining(","));
                  new CodeClassifyTemplateAttrDTO()).getFormDisplayFlag())).collect(Collectors.joining(","));
               if(StringUtils.isNotBlank(unFormDisplayAttr)){
                  throw new VciBaseException("{0}属性是组合规则,但是规则里包含的属性[{1}]在当前模板中没有设置 表单显示 ",new String[]{codeClassifyTemplateAttrDO.getName(),unFormDisplayAttr});
               }
@@ -422,7 +426,13 @@
         }
         if(CLASSIFYTEMPLATEOID==null){
            CLASSIFYTEMPLATEOID = codeClassifyTemplateAttrDTO.getClassifytemplateoid();
            CLASSIFYTEMPLATEOID = codeClassifyTemplateAttrDTO.getClassifyTemplateOid();
         }
         // 参照配置是否需要持久化
         codeReferConfigVO = JSONObject.parseObject(codeClassifyTemplateAttrDTO.getReferConfig(), CodeReferConfigVO.class);
         if(Func.isNotEmpty(codeReferConfigVO) && codeReferConfigVO.getIsPersistence()=="true"){
            codeReferConfigService.insert(codeReferConfigVO);
         }
      }
@@ -444,9 +454,12 @@
      }
//      BatchCBO batchCBOTemplateDelete = new BatchCBO();
      if(!CollectionUtils.isEmpty(oids)){
         baseMapper.deleteBatchIds(oids);
         this.removeBatchByIds(oids);
      }
      String tenantId = AuthUtil.getTenantId().toString();
      codeClassifyTemplateAttrDOInsert.parallelStream().forEach(item->{
         item.setTenantId(tenantId);
      });
      //再新增
      if(!CollectionUtils.isEmpty(codeClassifyTemplateAttrDOInsert)){
         this.saveBatch(codeClassifyTemplateAttrDOInsert);
@@ -465,8 +478,8 @@
         for (String s : prefix) {
            DictBiz dictBiz = new DictBiz();
            dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
            dictBiz.setDictKey(s);
            dictBiz.setDictValue("prefix");
            dictBiz.setDictKey("prefix");
            dictBiz.setDictValue(s);
            iDictBizClient.getCheck(dictBiz) ;
         }
//            .saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"prefix",prefix,sessionInfo);
@@ -475,8 +488,8 @@
         for (String s : suffix) {
            DictBiz dictBiz = new DictBiz();
            dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
            dictBiz.setDictKey(s);
            dictBiz.setDictValue("suffix");
            dictBiz.setDictKey("suffix");
            dictBiz.setDictValue(s);
            iDictBizClient.getCheck(dictBiz) ;
         }
//         charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"suffix",suffix,sessionInfo);
@@ -485,8 +498,8 @@
         for (String s : dateFormates) {
            DictBiz dictBiz = new DictBiz();
            dictBiz.setCode(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR);
            dictBiz.setDictKey(s);
            dictBiz.setDictValue("dateFormates");
            dictBiz.setDictKey("dateFormates");
            dictBiz.setDictValue(s);
            iDictBizClient.getCheck(dictBiz) ;
         }
//         charService.saveBySameNamespaceAndFlag(MdmBtmTypeConstant.CODE_CLASSIFY_TEMPLATE_ATTR,"dateFormates",dateFormates,sessionInfo);
@@ -547,7 +560,7 @@
      }
      //判断传过来的参照配置是否是json格式
      if(StringUtils.isNotBlank(codeClassifyTemplateAttrDTO.getReferbtmid())&&!checkKVObj(codeClassifyTemplateAttrDTO.getReferbtmid())){
      if(StringUtils.isNotBlank(codeClassifyTemplateAttrDTO.getReferBtmId())&&!checkKVObj(codeClassifyTemplateAttrDTO.getReferBtmId())){
         throw new VciBaseException("枚举注入数据格式错误!");
      }
@@ -718,27 +731,27 @@
      }
      //这个业务类型下的所有属性
      R<BtmTypeVO> btmTypeVOR = btmTypeClient.getAllAttributeByBtmId(codeClassifyTemplateDO.getBtmTypeId());
      if(btmTypeVOR.getCode() != 200){
         throw new ServiceException("业务类型feign调用失败!");
      if(!btmTypeVOR.isSuccess()){
         throw new ServiceException("业务类型feign调用错误!");
      }
      //这个模板下已经有的属性
//      VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
//      queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
      // VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
      // queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
      Map<String,Object> condition = new HashMap<>(1);
      condition.put("CLASSIFYTEMPLATEOID",templateAttrOid);
      List<CodeClassifyTemplateAttr> codeClassifyTemplateAttrDOList = baseMapper.selectByMap(condition);
      List<String> btmOids = new ArrayList<String>();
      List<String> btmIds = new ArrayList<String>();
      for (CodeClassifyTemplateAttr codeClassifyTemplateAttrDO:codeClassifyTemplateAttrDOList){
         btmOids.add(codeClassifyTemplateAttrDO.getId());
         btmIds.add(codeClassifyTemplateAttrDO.getId());
      }
      //过滤掉已经存在的属性
      List<BtmTypeAttributeVO> boAttrss = new ArrayList<BtmTypeAttributeVO>();
      for (BtmTypeAttributeVO osBtmTypeAttributeVO:btmTypeVOR.getData().getAttributes()){
         if(!btmOids.contains(osBtmTypeAttributeVO.getId())){
         if(!btmIds.contains(osBtmTypeAttributeVO.getId())){
            //看看是不是有模糊查询
            boolean inSearch = true;
            if(StringUtils.isNotBlank(name) && !osBtmTypeAttributeVO.getName().contains(name.replace("*",""))){
@@ -752,6 +765,8 @@
            }
         }
      }
      // 按照id升序排序
      boAttrss = boAttrss.stream().sorted(Comparator.comparing(BtmTypeAttributeVO::getId)).collect(Collectors.toList());
      dataGrid.setData(boAttrss);
      dataGrid.setTotal(boAttrss.size());
      return dataGrid;
@@ -779,21 +794,13 @@
      CodeClassifyTemplate codeClassifyTemplateDO = codeClassifyTemplateMapper.selectById(templateAttrOid);
      //这个业务类型下的所有属性
      // TODO 待完善
      List<BtmTypeAttributeVO> boAttrs =  null; // (List<BtmTypeAttributeVO>) attributeClient.selectById(codeClassifyTemplateDO.getBtmTypeId());//this.btmService.listAttributeByBtmIdHasDefault(codeClassifyTemplateDO.getBtmTypeId());
//      codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId());
//      BeanUtils.copyProperties(codeOsbtmtypeattributeMapper.selectById(codeClassifyTemplateDO.getBtmTypeId()),boAttrs);
      // TODO 已完善
      List<BtmTypeAttributeVO> boAttrs =  (List<BtmTypeAttributeVO>) btmTypeClient.getAllAttributeByBtmId(codeClassifyTemplateDO.getBtmTypeId());
      //这个模板下已经有的属性
      //把默认的属性也添加到boAttrs
      if(boAttrs == null){
         boAttrs = new ArrayList<>();
      }
//      VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(CodeClassifyTemplateAttrDO.class);
//      queryWrapper.addQueryMap("CLASSIFYTEMPLATEOID",templateAttrOid);
//      Map<String,Object> condition = new HashMap<>(1);
//      condition.put("CLASSIFYTEMPLATEOID",templateAttrOid);
      QueryWrapper<CodeClassifyTemplateAttr> wrapper=new QueryWrapper<>();
      wrapper.eq("CLASSIFYTEMPLATEOID",templateAttrOid);