ludc
2023-08-30 d33ba05da2fbe74d8b85d393eca2a336f20f8688
本地提交
已修改2个文件
219 ■■■■ 文件已修改
Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 192 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml
@@ -1,19 +1,3 @@
<<<<<<<< HEAD:Source/UBCS/ubcs-gateway/src/main/resources/application-prod.yml
========
server:
  port: 37000
spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
    loadbalancer:
      retry:
        enabled: true
>>>>>>>> origin/master:Source/UBCS/ubcs-gateway/src/main/resources/application-dev.yml
blade:
  #多团队协作服务配置
  loadbalancer:
@@ -25,14 +9,3 @@
    prior-ip-pattern:
      - 192.168.0.*
      - 127.0.0.1
server:
  port: 80
spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
    loadbalancer:
      retry:
        enabled: true
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.ubcs.code.applyjtcodeservice.feign.IMdmInterJtClient;
import com.vci.ubcs.code.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
@@ -11,6 +12,7 @@
import com.vci.ubcs.code.entity.CodeAllCode;
import com.vci.ubcs.code.enumpack.CodeDefaultLC;
import com.vci.ubcs.code.enumpack.CodeLevelTypeEnum;
import com.vci.ubcs.code.enumpack.sysIntegrationPushTypeEnum;
import com.vci.ubcs.code.lifecycle.CodeAllCodeLC;
import com.vci.ubcs.code.mapper.CommonsMapper;
import com.vci.ubcs.code.service.*;
@@ -154,7 +156,11 @@
     */
    @Autowired
    private IBtmTypeClient btmTypeClient;
    /***
     * 申请集团编码服务
     */
    @Resource
    private IMdmInterJtClient mdmInterJtClient;
    /***
     * 密级服务
     */
@@ -1962,6 +1968,7 @@
        CodeImportResultVO keyResultVO = batchCheckKeyAttrOnOrder(classifyFullInfo, templateVO, cboList);
        Set<String> selfRepeatRowIndexList = keyResultVO.getSelfRepeatRowIndexList();
        Set<String> keyAttrRepeatRowIndexList = keyResultVO.getKeyAttrRepeatRowIndexList();
        Map<String,List<String>>keyAttrOkOidTORepeatOidMap= keyResultVO.getKeyAttrOkOidTORepeatOidMap();
        if(!CollectionUtils.isEmpty(selfRepeatRowIndexList)){
            selfRepeatRowIndexList.stream().forEach(rowIndex->{
               /* //传入数据之间关键属性的校验
@@ -2064,8 +2071,8 @@
                            String lcstatus =newCbo.getLcStatus();
                            String newOid =newCbo.getOid();
                            Date ts =newCbo.getTs();
                            groupCode=newCbo.getData().get("GROUPCODE");
                            code=newCbo.getId();
                            code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
                            groupCode=newCbo.getData().getOrDefault("GROUPCODE","");
                            String lastmodifier=newCbo.getLastModifier();
                            if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
                                newCbo.setOid(newOid);
@@ -2083,7 +2090,8 @@
                            XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                            if(isCodeOrGroupCode) {
                                if(StringUtils.isBlank(groupCode)){
                                    mes+=";等待集团编码赋值";
                                    errorid="1";
                                    mes+=";申请的编码类型为集团码,等待集团编码赋值";
                                }
                                resultDataObjectDetailDO.setCode(groupCode);
                            }else{
@@ -2130,22 +2138,41 @@
                allNeedSaveCboList.add(baseModel.getOid());
            });
            try {
                List<String>applyGroupCodeIdList=new ArrayList<>();
                productCodeService.productCodeAndSaveData(classifyFullInfo, templateVO, ruleVO, orderDTO.getSecDTOList(), dataCBOList);
                //如果是编码生成失败,则直接就失败了,其他的判断出来有错误的我们都统一返回到excel里面
                engineService.batchSaveSelectChar(templateVO, dataCBOList);
                // if(!isProcess){
                dataCBOList.stream().forEach(needSaveCbo->{
                    XMLResultDataObjectDetailDO resultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
                    resultDataObjectDetailDO.setCode(needSaveCbo.getId());
                    String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
                    String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
                    //resultDataObjectDetailDO.setCode(needSaveCbo.getId());
                    String msg="申请编码成功";
                    String oid=needSaveCbo.getOid();
                    String sourceOid=oid;
                    applyGroupCodeIdList.add(oid);
                    if(codeOidToSystemOidMap.containsKey(oid)){
                        sourceOid=codeOidToSystemOidMap.get(oid);
                    }
                    resultDataObjectDetailDO.setId(sourceOid);
                    if(isCodeOrGroupCode) {
                        if(StringUtils.isBlank(groupCode)){
                            resultDataObjectDetailDO.setErrorid("1");
                            msg="申请的编码类型为集团码,等待集团编码赋值";
                        }
                        resultDataObjectDetailDO.setCode(groupCode);
                    }else{
                        resultDataObjectDetailDO.setCode(code);
                    resultDataObjectDetailDO.setErrorid("0");
                    resultDataObjectDetailDO.setMsg("申请编码成功");
                    }
                    resultDataObjectDetailDO.setId(sourceOid);
                    resultDataObjectDetailDO.setMsg(msg);
                    resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
                    //处理传送的数据中关键属性重复的,直接拿到已经申请到编码的数据编码直接将赋给关键属性重复的数据
                    LinkedList<XMLResultDataObjectDetailDO> repeatDataObjectDetailDOS=handleApplyDataKeyAttrRepeat(keyAttrOkOidTORepeatOidMap,codeOidToSystemOidMap,needSaveCbo,isCodeOrGroupCode);
                    resultDataObjectDetailDOs.addAll(repeatDataObjectDetailDOS);
                });
               /* }else{
                    needSaveCboList.stream().forEach(needSaveCbo->{
@@ -2163,6 +2190,13 @@
                    });
                }*/
                //是否调用集团接口申请接口
                if(isCodeOrGroupCode){
                    if(!CollectionUtils.isEmpty(applyGroupCodeIdList)) {
                        this.sendApplyGroupcode(applyGroupCodeIdList, classifyFullInfo.getTopClassifyVO().getId(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
                    }
                }
            }catch (Throwable e){
                e.printStackTrace();
                needSaveCboList.stream().forEach(needSaveCbo->{
@@ -2185,14 +2219,59 @@
    }
    /***
     *给同一批申请编码存在关键属性的数据赋上一致编码
     * @param keyAttrOkOidTORepeatOidMap 一批申请数据关键属性一致的重复数据映射关系
     * @param codeOidToSystemOidMap
     * @param needSaveCbo
     * @param isCodeOrGroupCode
     */
    private LinkedList<XMLResultDataObjectDetailDO> handleApplyDataKeyAttrRepeat(Map<String,List<String>>keyAttrOkOidTORepeatOidMap,Map<String,String> codeOidToSystemOidMap,BaseModel needSaveCbo,boolean isCodeOrGroupCode){
        LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs=new LinkedList<>();
        String oid=needSaveCbo.getOid();
        if(keyAttrOkOidTORepeatOidMap.containsKey(oid)){
            List<String> repeatOidList= keyAttrOkOidTORepeatOidMap.get(oid);
            if(!CollectionUtils.isEmpty(repeatOidList)){
                String sourceNewOid=needSaveCbo.getOid();
                String sourceOid=sourceNewOid;
                if(codeOidToSystemOidMap.containsKey(oid)){
                    sourceOid=codeOidToSystemOidMap.get(oid);
                }
                String code=StringUtils.isBlank(needSaveCbo.getId())?" ":needSaveCbo.getId();
                String groupCode=needSaveCbo.getData().getOrDefault("GROUPCODE"," ");
                String finalSourceOid = sourceOid;
                repeatOidList.stream().forEach(repeatOid->{
                    if(codeOidToSystemOidMap.containsKey(repeatOid)){
                        XMLResultDataObjectDetailDO repeatresultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
                        String repeatSourceOid=codeOidToSystemOidMap.get(repeatOid);
                        String repeatMsg="此数据与申请的编码数据id为【"+ finalSourceOid +"】的关键属性一致,则取相同编码";
                        if(isCodeOrGroupCode) {
                            if(StringUtils.isBlank(groupCode)){
                                repeatMsg="申请的编码类型为集团码,等待集团编码赋值";
                            }
                            repeatresultDataObjectDetailDO.setCode(groupCode);
                        }else{
                            repeatresultDataObjectDetailDO.setCode(code);
                        }
                        repeatresultDataObjectDetailDO.setId(repeatSourceOid);
                        repeatresultDataObjectDetailDO.setErrorid("0");
                        repeatresultDataObjectDetailDO.setMsg(repeatMsg);
                        resultDataObjectDetailDOs.add(repeatresultDataObjectDetailDO);
                    }
                });
            }
        }
        return  resultDataObjectDetailDOs;
    }
    /***
     * 集成批量同步更新接口
     * @param codeClassifyVO;
     * @param dataObjectVO 数据信息
     * @param resultDataObjectDetailDOs 错误信息
     * @param isCodeOrGroupCode 是否更集团系统数据
     */
    @Transactional(rollbackFor = VciBaseException.class)
    @Override
    public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs) {
    public void batchSyncEditDatas(CodeClassifyVO codeClassifyVO, DataObjectVO dataObjectVO, LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs,boolean isCodeOrGroupCode) {
        String errorid="";
        String msg="";
        //查询分类和模板
@@ -2217,8 +2296,8 @@
        List<String> titleRowData = dataObjectVO.getColName();
        Map<String/**中文名称**/, String/**英文名称**/> attrNameIdMap = attrVOS.stream().collect(Collectors.toMap(s -> s.getName(), t -> t.getId().toLowerCase(Locale.ROOT), (o1, o2) -> o2));
        getFieldIndexMap(titleRowData, attrNameIdMap, fieldIndexMap);
        Map<String, String> cboOidMap = new HashMap<>();
        cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
        //Map<String, String> cboOidMap = new HashMap<>();
        //cboOidMap.put("id", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])) + ")");
        String tableName ="";
        try {
            R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(templateVO.getBtmTypeId());
@@ -2248,15 +2327,21 @@
        sb.append(" select * from ");
        sb.append(tableName);
        sb.append(" where 1=1 ");
        sb.append(" id in (");
        sb.append(" and lastr=1 and lastv=1" );
        if(isCodeOrGroupCode) {
            sb.append(" and groupcode in (");
        }else{
            sb.append(" and id in (");
        }
        sb.append(VciBaseUtil.toInSql(codeDataMap.keySet().toArray(new String[0])));
        sb.append(")");
        List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString());
        List<ClientBusinessObject> cboList=    ChangeMapTOClientBusinessObjects(dataMapList);
        Map<String, ClientBusinessObject> codeSystemObjectMap = cboList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
        Map<String, String> errorMap = new HashMap<>();
        List<CodeOrderDTO> codeOrderDTOList = new ArrayList<>();
        this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap);
        this.getCodeOrderDTOs(codeClassifyVO, templateVO, codeDataMap, codeSystemObjectMap, codeOrderDTOList, errorMap,isCodeOrGroupCode);
        // List<CodeClassifyProcessTempVO> codeClassifyProcessTempVOS=codeClassifyProcessTempService.listProcessTemplate(templateVO.getOid(),"code_cls_flow_use_order");
        boolean isProcess=false;
        /**  if(!CollectionUtils.isEmpty(codeClassifyProcessTempVOS)){
@@ -2278,7 +2363,7 @@
            RowDatas rowData=codeDataMap.get(code);
            String status=rowData.getStatus();
            String operation=rowData.getOperation();
            if (cbo.getTs().compareTo(orderDTO.getTs())==0?true:false) {
            if (cbo.getTs().compareTo(orderDTO.getTs())==0?false:true) {
                // throw new VciBaseException("数据不是最新的,可能他人已经修改,请刷新后再试");
                errorMap.put(orderDTO.getId(),errorMap.getOrDefault(orderDTO.getId(),"")+";数据不是最新的,可能他人已经修改,请刷新后再试");
            }
@@ -2320,7 +2405,7 @@
                List<CodeAllCode>newCodeAllCodeList= codeAllCodeService.selectByWrapper(Wrappers.<CodeAllCode>query().lambda().eq(CodeAllCode::getCreateCodeOid, cbo.getOid()));
                if (!CollectionUtils.isEmpty(newCodeAllCodeList)) {
                    CodeAllCode codeCbo = codeAllCodeList.get(0);
                    CodeAllCode codeCbo = newCodeAllCodeList.get(0);
                    log.info("codeCbos code:" + codeCbo.getId());
                    codeCbo.setLcStatus(status);
                    codeAllCodeList.add(codeCbo);
@@ -2397,9 +2482,16 @@
            //存储数据
            try {
                engineService.updateBatchByBaseModel(classifyFullInfo.getTopClassifyVO().getBtmTypeId(),updateList);
                codeAllCodeService.saveBatch(codeAllCodeList);
                codeAllCodeService.saveOrUpdateBatch(codeAllCodeList);
                if(deleteList.size()>0) {
                    commonsMapper.deleteByTaleAndOid(tableName, VciBaseUtil.array2String(deleteList.toArray(new String[]{})));
                }
                //是否调用集团接口申请接口
                if(isCodeOrGroupCode){
                    List<String> IdList=resultDataObjectDetailDOs.stream().filter(xMLResultDataObjectDetailDO-> com.alibaba.cloud.commons.lang.StringUtils.isNotBlank(xMLResultDataObjectDetailDO.getId())).map(XMLResultDataObjectDetailDO::getId).distinct().collect(Collectors.toList());
                    if(!CollectionUtils.isEmpty(IdList)) {
                        this.sendApplyGroupcode(IdList, classifyFullInfo.getTopClassifyVO().getBtmTypeId(),sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue());
                    }
                }
                errorid="0";
                msg="更新/状态更改/删除成功!";
@@ -2524,17 +2616,22 @@
        //没有限制分类,但是一个模板只可能在一个业务类型里面,所以直接查询这个业务类型即可
        if (!CollectionUtils.isEmpty(conditionMap)) {
            final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()) + " where 1 = 1 "};
            final String[] sql = {"select count(*) from " + VciBaseUtil.getTableName(classifyFullInfo.getTopClassifyVO().getBtmTypeId()) + " t where 1 = 1 "};
            conditionMap.forEach((key, value) -> {
                if(StringUtils.isBlank(value)||value.equals(QueryOptionConstant.ISNULL)){
                    sql[0] += " and " + key + " is null ";
                }else{
                sql[0] += " and " + key + " = " + value;
                }
            });
            if (StringUtils.isNotBlank(orderDTO.getOid())) {
                //修改的时候,需要排除自己
                sql[0] += " and oid != '" + orderDTO.getOid() + "'";
                sql[0] += " and t.oid != '" + orderDTO.getOid() + "'";
            } else if (StringUtils.isNotBlank(orderDTO.getCopyFromVersion())) {
                sql[0] += " and oid != '" + orderDTO.getCopyFromVersion() + "'";
                sql[0] += " and t.oid != '" + orderDTO.getCopyFromVersion() + "'";
            }
            sql[0] += " and lastR = '1' and lastV = '1' ";
            sql[0] += " and t.lastR = '1' and t.lastV = '1' ";
            if (commonsMapper.queryCountBySql(sql[0]) > 0) {
                String ruleInfoMsg = keyRuleVO == null ? "" : "查询规则:去除空格--{0},忽略大小写--{1},忽略全半角--{2},忽略全部空格--{3}";
                String[] objs = new String[]{trim ? "是" : "否", ignoreCase ? "是" : "否", ignoreWidth ? "是" : "否", trimAll ? "是" : "否"};
@@ -2734,17 +2831,24 @@
     * @param errorMap
     * @return
     */
    private void   getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap){
        codeDataMap.keySet().forEach(code->{
    private void getCodeOrderDTOs(CodeClassifyVO codeClassifyVO,CodeClassifyTemplateVO templateVO,Map<String ,RowDatas>codeDataMap,Map<String, ClientBusinessObject> codeSystemObjectMap,List<CodeOrderDTO> codeOrderDTOList,Map<String,String> errorMap,boolean isCodeOrGroupCode){
        codeSystemObjectMap.keySet().forEach(code->{
            ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
            if(isCodeOrGroupCode){
                code=sysDataObject.getAttributeValue("GROUPCODE");
            }
            CodeOrderDTO orderDTO = new CodeOrderDTO();
            if(codeDataMap.containsKey(code)){
            RowDatas rowDatas=codeDataMap.get(code);
            Map<String, String> data= rowDatas.getFiledValue();
            CodeOrderDTO orderDTO = new CodeOrderDTO();
            if(codeSystemObjectMap.containsKey(code)){
                ClientBusinessObject sysDataObject= codeSystemObjectMap.get(code);
                orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
                orderDTO.setOid(sysDataObject.getOid());//数据oid
                orderDTO.setLcStatus(rowDatas.getStatus());//状态
                if(isCodeOrGroupCode){
                    orderDTO.setId(sysDataObject.getId());
                }else{
                orderDTO.setId(code);
                }
                orderDTO.setTs(sysDataObject.getTs());
                orderDTO.setBtmname(codeClassifyVO.getBtmname());//业务类型
                orderDTO.setDescription("集成调用:更新");//数据描述
@@ -3665,7 +3769,8 @@
        CodeImportResultVO resultVO = new CodeImportResultVO();
        resultVO.setKeyAttrRuleInfo(String.format(keyRuleVO ==null?"":"查询规则:去除空格--{0},忽略大小写--{1},忽略全半角--{2},忽略全部空格--{3}",
            new String[]{trim?"是":"否",ignoreCase?"是":"否",ignoreWidth?"是":"否",trimAll?"是":"否"}));
        resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
        //resultVO.setSelfRepeatRowIndexList(getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO));
        getSelfRepeatRowIndex(ketAttrMap,cboList,keyRuleVO,resultVO);
        if(!CollectionUtils.isEmpty(resultVO.getSelfRepeatRowIndexList())){
            //我们移除本身重复的数据
            cboList = cboList.stream().filter(s->!resultVO.getSelfRepeatRowIndexList().contains(s.getAttributeValue(IMPORT_ROW_INDEX))).collect(Collectors.toList());
@@ -3824,9 +3929,10 @@
     * @param keyRuleVO 关键属性控制规则
     * @return 重复的行号
     */
    private Set<String> getSelfRepeatRowIndex(Map<String/**属性的编号**/, CodeClassifyTemplateAttrVO> ketAttrMap,
                                              List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO){
    private void getSelfRepeatRowIndex(Map<String/**属性的编号**/, CodeClassifyTemplateAttrVO> ketAttrMap,
                                       List<ClientBusinessObject> dataList,CodeKeyAttrRepeatVO keyRuleVO,CodeImportResultVO resultVO){
        Set<String> selfRepeatRowIndexList = new CopyOnWriteArraySet<>();
        Map<String,List<String>> keyAttrOkOidTORepeatOidMap=new HashMap<>();
        boolean trimAll =keyRuleVO ==null?false: VciBaseUtil.getBoolean(keyRuleVO.getIgnoreallspaceflag());
        //全部去空的优先级大于去空
        boolean trim =keyRuleVO ==null?false:  VciBaseUtil.getBoolean(keyRuleVO.getIgnorespaceflag());
@@ -3835,8 +3941,10 @@
        //必须将属性按照顺序排序好
        List<CodeClassifyTemplateAttrVO> attrVOList = ketAttrMap.values().stream().sorted(((o1, o2) -> o1.getOrderNum().compareTo(o2.getOrderNum()))).collect(Collectors.toList());
        Map<String/**行号**/,String/**关键属性的组合内容**/> rowIndexKeyStringMap = new HashMap<>();
        Map<String/**关键属性的组合内容**/,String/**第一个关键属性的数据oid**/> okOidKeyStringMap = new HashMap<>();
        dataList.parallelStream().forEach(cbo-> {
            String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
            String oid=cbo.getOid();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < attrVOList.size(); i++) {
                CodeClassifyTemplateAttrVO attrVO = attrVOList.get(i);
@@ -3862,12 +3970,25 @@
            String keyString = sb.toString();
            if(rowIndexKeyStringMap.containsValue(keyString) && StringUtils.isNotBlank(keyString)){
                selfRepeatRowIndexList.add(rowIndex);
                String okOid=okOidKeyStringMap.getOrDefault(keyString,"");
                if(StringUtils.isNotBlank(okOid)){
                    List<String>newOidList=new ArrayList<>();
                    newOidList.add(oid);
                    if(keyAttrOkOidTORepeatOidMap.containsKey(okOid)){
                        List<String> oldOidList=    keyAttrOkOidTORepeatOidMap.get(okOid);
                        newOidList.addAll(oldOidList);
                    }
                    keyAttrOkOidTORepeatOidMap.put(okOid,newOidList);
                }
            }else {
                okOidKeyStringMap.put(sb.toString(),oid);
                rowIndexKeyStringMap.put(rowIndex, sb.toString());
            }
        });
        //因为只是关键属性重复,所以我们不能重复的多条选一条来报错
        return selfRepeatRowIndexList;
        resultVO.setKeyAttrRepeatRowIndexList(selfRepeatRowIndexList);
        resultVO.setKeyAttrOkOidTORepeatOidMap(keyAttrOkOidTORepeatOidMap);
    }
    /**
     * excel的标题上获取字段所在的位置
@@ -3901,7 +4022,7 @@
            DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
            for (String key:dataMap.keySet()){
                Object value= dataMap.getOrDefault(key,"");
                clientBusinessObject.setAttributeValue(key,value.toString());
                clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
            }
            clientBusinessObjectList.add(clientBusinessObject);
        });
@@ -4329,4 +4450,17 @@
        }
    }
    /***
     * 申请集团编码
     * @param idList
     * @param btmName
     */
    private void sendApplyGroupcode(List<String> idList,String btmName,String operationType){
        String oids=VciBaseUtil.array2String(idList.toArray(new String[]{}));
        if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue())) {
            mdmInterJtClient.applyGroupCode(oids,btmName);
        }else if(operationType.equals(sysIntegrationPushTypeEnum.ACCPET_EDITCODE)){
            mdmInterJtClient.receiveEditApply(oids,btmName);
        }
    }
}