田源
2024-03-19 33d8416c5a16fee7464df9774678bc60e47ff956
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -55,6 +55,7 @@
import com.vci.ubcs.system.vo.RoleVO;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
@@ -68,6 +69,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -280,10 +283,12 @@
         systemId = interParameterVO.getData().getSystemId();
         UserVO userVo = interParameterVO.getData().getUser();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest());
         AuthUtil.getUser();
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT), this.getRequest());
         }catch (Throwable e){
            errorid[0] ="1";
            throw new Throwable("用户鉴权失败.");
         }
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
         //这是账号信息
@@ -314,7 +319,7 @@
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig=null;
                  dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
                  if(dockingSystemConfig==null){
                  if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
                     errorid[0] ="101";
                     throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
@@ -328,7 +333,8 @@
               log.info("end:模板查询完毕");
               ApplyDatasVO applyDatasVO = classVO.getObjects();
               DataObjectVO dataObjectVO = new DataObjectVO();
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                  ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
               ).collect(Collectors.toList());
               this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
               log.info("end:数据组织完毕");
@@ -366,7 +372,6 @@
                     resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                  });
               }else{
                  XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                  xmlResultDataObjectDetailDO.setCode("");
                  xmlResultDataObjectDetailDO.setId("");
@@ -375,6 +380,7 @@
                  resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               }
               e.printStackTrace();
               log.error(e.getMessage());
            }finally {
               XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
               resultClassfyVO.setClassCode(classVO.getClassCode());
@@ -393,6 +399,7 @@
      }catch (Throwable e){
         e.printStackTrace();
         msg="申请编码失败:"+e.getMessage();
         log.error(msg);
          /*  XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
            XMLResultSystemVO.setErrorid(errorid);
            XMLResultSystemVO.setMsg("申请编码失败:->"+e.getMessage());
@@ -414,10 +421,10 @@
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
               resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
                  xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
                     if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
                     if (!(objec.getErrorid().equals("0")||objec.getErrorid().equals("201") ||objec.getErrorid().equals("205")|| objec.getErrorid().equals("204"))) {
                        issucess[0] = false;
                        msg=objec.getMsg();
                     }
                     msg=objec.getMsg();
                  });
               });
            }
@@ -428,6 +435,7 @@
            this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
         }catch (Throwable e){
            e.printStackTrace();
            log.error(e.getMessage());
         }
      }
      log.info("返回参数:"+resultStr);
@@ -459,7 +467,11 @@
            if(personData==null){
               throw new Throwable("传入参数为null");
            }
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(Locale.ROOT),this.getRequest());
            try {
               passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest());
            }catch (Throwable e){
               throw new Throwable("用户鉴权失败");
            }
            masterDataList = personData.getMasterData();
            String personLibrary = personAndDeptConfig.getPersonLibrary();
            if (StringUtils.isBlank(personLibrary)) {
@@ -484,7 +496,8 @@
               throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
            }
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
               ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
            ).collect(Collectors.toList());
            List<PersonMasterData> personMasterDataList= personData.getMasterData();
@@ -560,11 +573,12 @@
            sb.append(VciBaseUtil.toInSql(codeList.toArray(new String[0])));
            sb.append(")");
            List<Map<String,String>> dataMapList=commonsMapper.queryByOnlySqlForMap(sb.toString());
            List<ClientBusinessObject> cboList=   ChangeMapTOClientBusinessObjects(dataMapList);
            ApplyDatasVO applyDatasVO=new ApplyDatasVO();
            ApplyDatasVO editDatasVO=new ApplyDatasVO();
            if(!CollectionUtils.isEmpty(cboList)){
            Map<String,ClientBusinessObject> oldpplyDataVOMap=   cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
            Map<String,ClientBusinessObject> oldpplyDataVOMap =   cboList.stream().filter(data -> data != null && StringUtils.isNotBlank(data.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
               //数据库不存在的
               List<ApplyDataVO> applyApplyDataVOList = applyDataVOList.stream().filter(cbo -> {
                  String code =cbo.getCode();
@@ -735,8 +749,11 @@
               throw new Throwable("传入参数为null");
            }
            systemCode=orgData.getSystemCode();
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest());
            try {
               passwordFreeLoginService.pwdFreeLoginByBoolean(systemCode.toLowerCase(),this.getRequest());
            }catch (Throwable e){
               throw new Throwable("用户鉴权失败");
            }
            orgMasterDataList = orgData.getMasterData();
            String personLibrary = personAndDeptConfig.getPersonLibrary();
            if (StringUtils.isBlank(personLibrary)) {
@@ -761,7 +778,8 @@
               throw  new  Throwable ("根据传输的分类,未获取MDM系统中对应模板");
            }
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
            List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
               ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
            ).collect(Collectors.toList());
            List<Map> dataList=new ArrayList<>();
            List<String> codeList=new ArrayList<>();
@@ -1031,7 +1049,12 @@
         UserVO userVo = interParameterVO.getData().getUser();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(Locale.ROOT),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            throw new Throwable("用户鉴权失败");
         }
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
         //这是账号信息
@@ -1059,7 +1082,7 @@
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue(),codeClassifyVO.getOid());
                  if(dockingSystemConfig==null){
                  if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
                     objerrorCode ="101";
                     throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
@@ -1076,7 +1099,8 @@
               ApplyDatasVO applyDatasVO = classVO.getObjects();
               DataObjectVO dataObjectVO = new DataObjectVO();
               //将默认的属性全部替换掉
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
               List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
                  ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
               ).collect(Collectors.toList());
               this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
               log.info("end:数据构建完毕");
@@ -1138,10 +1162,10 @@
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
               resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
                  xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
                     if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
                     if (!(objec.getErrorid().equals("0")||objec.getErrorid().equals("201") ||objec.getErrorid().equals("205")|| objec.getErrorid().equals("204"))) {
                        issucess[0] = false;
                        msg=objec.getMsg();
                     }
                     msg=objec.getMsg();
                  });
               });
            }
@@ -1206,7 +1230,12 @@
         systemId=queryData.getSystemId();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            throw new Throwable("用户鉴权失败");
         }
         QueryLibraryVO libraryVO= queryData.getLibrary();
         String libId= libraryVO.getId();
@@ -1367,7 +1396,12 @@
         UserVO userVo=condtionsVO.getUser();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            throw new Throwable("用户鉴权失败");
         }
         CondtionVO condtionVO= condtionsVO.getCondtion();
         SessionInfo sessionInfo = new SessionInfo();
         sessionInfo.setUserId(userVo.getUserName());
@@ -1415,7 +1449,7 @@
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue(),currentCodeClassify[0].getOid());
                  if(dockingSystemConfig==null){
                  if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
                     errorid ="101";
                     throw new Throwable("系统标识为【"+ systemId +"】,集成分类为【"+currentCodeClassify[0].getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
@@ -1585,7 +1619,12 @@
         systemId=queryData.getSystemId();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(),this.getRequest());
         passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid = "1";
            throw new Throwable("用户鉴权失败");
         }
         QueryLibraryVO libraryVO= queryData.getLibrary();
         String libId= libraryVO.getId();
@@ -2043,7 +2082,12 @@
         UserVO userVo = applyBZParamVO.getData().getUser();
         //免密登录申请token,request中添加用户信息
         //passwordFreeLoginService.pwdFreeLoginByBoolean(userVo.getUserName(), this.getRequest());
         passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         try {
            passwordFreeLoginService.pwdFreeLoginByBoolean(systemId.toLowerCase(),this.getRequest());
         }catch (Throwable e){
            errorid[0] = "1";
            throw new Throwable("用户鉴权失败");
         }
         //这是账号信息
         SessionInfo sessionInfo = new SessionInfo();
         sessionInfo.setUserId(userVo.getUserName());
@@ -2066,7 +2110,7 @@
            //校验是否配置
            DockingSystemConfig dockingSystemConfig=null;
            dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
            if(dockingSystemConfig==null){
            if(dockingSystemConfig==null||StringUtils.isBlank(dockingSystemConfig.getOid())){
               errorid[0] ="101";
               throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
            }
@@ -2080,7 +2124,8 @@
         log.info("end:模板查询完毕");
         ApplyBZDatasVO applyBZDatasVO = classfyBZVO.getObjects();
            DataObjectVO dataObjectVO = new DataObjectVO();
         List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) && VciBaseUtil.getBoolean(s.getFormDisplayFlag())
         List<CodeClassifyTemplateAttrVO> attrVOS = templateVO.getAttributes().stream().filter(s -> !DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
            ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
         ).collect(Collectors.toList());
         List<ApplyBZDataVO> applyBZDataVOList=   applyBZDatasVO.getObject();
         if(applyBZDataVOList.size()>1){
@@ -2135,6 +2180,7 @@
               codeBZApplyDTO.setLastModifier(applyBZDataVO.getEditor());
               codeBZApplyDTO.setLcStatus(applyBZDataVO.getStatus());
               ApplyBZDatasVO newApplyBZDatasVO=new ApplyBZDatasVO();
               applyBZDataVO.setProp(proppertyVOList);
               newApplyBZDatasVO.setObject(Arrays.asList(applyBZDataVO));
               log.info("end:数据组织完毕");
               this.getConfigDatas(finalSystemId, finalLibray, newApplyBZDatasVO, attrVOS, dataObjectVO);
@@ -2182,10 +2228,10 @@
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
               resultClassfyVOList.stream().forEach(xMLResultClassfyVO -> {
                  xMLResultClassfyVO.getObjects().stream().forEach(objec -> {
                     if (!(objec.getErrorid().equals("0") || objec.getErrorid().equals("204"))) {
                     if (!(objec.getErrorid().equals("0")||objec.getErrorid().equals("201")||objec.getErrorid().equals("205") || objec.getErrorid().equals("204"))) {
                        issucess[0] = false;
                        msg=objec.getMsg();
                     }
                     msg=objec.getMsg();
                  });
               });
            }
@@ -2295,9 +2341,11 @@
   private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
      List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
      DefaultAttrAssimtUtil.mapToLowerCase(oldDataMap,true);
      final BladeUser user = AuthUtil.getUser();
      oldDataMap.stream().forEach(dataMap->{
         ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
         DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
         DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject,false,user);
         for (String key:dataMap.keySet()){
            Object value= dataMap.getOrDefault(key,"");
            clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
@@ -2306,7 +2354,6 @@
      });
      return clientBusinessObjectList;
   }
   private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOsBZ(CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo){
      List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2320,9 +2367,8 @@
      return codeOrderSecDTOList;
   }
   /***
    * 根据穿入的参数信息校验码段规则
    * 根据传入的参数信息校验码段规则
    */
   private List<CodeOrderSecDTO> getRuleCodeOrderSecDTOs(List<SectionVO> SectionVOList,CodeRuleVO ruleVO,CodeClassifyFullInfoBO classifyFullInfo) throws Throwable{
      List<CodeBasicSecVO>  codeBasicSecVOS= ruleVO.getSecVOList();
@@ -2372,7 +2418,7 @@
               CodeOrderSecDTO.setSecValue(sectypeValue);
               codeOrderSecDTOList.add(CodeOrderSecDTO);
            } else {
               message="传入的码段规则缺少" + name + "码段";
               message="传入的码段规则缺少" + name;
               errorMap.put("error",errorMap.getOrDefault("error","")+";"+message);
            }
         }
@@ -2384,41 +2430,60 @@
      return codeOrderSecDTOList;
   }
   /***
    * 读取属性映射配置信息
    * @param systemId
    * @param libray
    * @param applyDatasVO
    * @param codeClassifyTemplateAttrVOList
    * @param dataObjectVO
    * @throws Throwable
    */
   public void getConfigDatas(String systemId,String libray, ApplyBZDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
      LinkedHashMap<String,LinkedHashMap<String,String>> dataKeyValueMap=new LinkedHashMap<>();
      //如果将数据转换成所需要的数据对象
      Map<String, String> attrMapConfigMap=new HashMap<>();
      Map<String, String> propMaps=new HashMap<>();
      try {
         log.info("开始读取系统配置文件 start");
         Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
         log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
         //stringStringMap.put("RLM","D:\\RLM.xml");
         if(!CollectionUtils.isEmpty(stringStringMap)) {
      log.info("开始读取系统配置文件 start");
      Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
      log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
      //stringStringMap.put("RLM","D:\\RLM.xml");
      if(!CollectionUtils.isEmpty(stringStringMap)) {
         List<LibraryClsfDO> libraryClsfDOList=new ArrayList<>();
         try {
            log.info("info:需要读取配置文件");
            LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap);
            List<LibraryClsfDO> libraryClsfDOList = libraryDO.getClsf();
            if(!CollectionUtils.isEmpty(libraryClsfDOList)) {
               Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
               String path=stringStringMap.get(systemId);
               if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
                  List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
                  propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
               }else{
                  throw new Throwable("根据系统标识【"+systemId+"】找到对应的配置文件:【"+path+"】,但未获取到对应的库【"+libray+"】属性映射信息配置");
               }
            }
            libraryClsfDOList = libraryDO.getClsf();
         } catch (Throwable e) {
            objerrorCode = "1";
            e.printStackTrace();
            throw new Throwable("集成系统标识为:【" + systemId + "】,分类库为:【" + libray + "】的集成属性配置文件读取失败");
         }
         log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      }catch (Throwable e){
         objerrorCode="1";
         e.printStackTrace();
         throw new Throwable("MDM集成属性配置文件读取失败");
         // String path = stringStringMap.get(systemId);
         // 忽略key大小写,获取配置的映射文件路径
         String path = VciBaseUtil.getMapStrValueIgnoreCase(stringStringMap,systemId);
         if (!CollectionUtils.isEmpty(libraryClsfDOList)) {
            Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
            log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
            if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
               List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
               propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
            } else {
               objerrorCode = "1";
               throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
            }
         }else{
            objerrorCode = "1";
            throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
         }
      }else{
         objerrorCode = "1";
         throw new Throwable("未获取到集成属性映射系统配置信息");
      }
      log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      LinkedList<String> rowNameList=new LinkedList<>();
      LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
      //根据分类模板组织数据
@@ -2493,7 +2558,13 @@
   }
   /***
    * 根据属性映射转换编码所需字段
    * 读取属性映射配置信息
    * @param systemId
    * @param libray
    * @param applyDatasVO
    * @param codeClassifyTemplateAttrVOList
    * @param dataObjectVO
    * @throws Throwable
    */
   public void getConfigDatas(String systemId,String libray, ApplyDatasVO applyDatasVO,List<CodeClassifyTemplateAttrVO> codeClassifyTemplateAttrVOList,DataObjectVO dataObjectVO) throws Throwable {
@@ -2501,40 +2572,55 @@
      //如果将数据转换成所需要的数据对象
      Map<String, String> attrMapConfigMap=new HashMap<>();
      Map<String, String> propMaps=new HashMap<>();
      try {
         log.info("开始读取系统配置文件 start");
         Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
         log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
         //stringStringMap.put("RLM","D:\\RLM.xml");
         if(!CollectionUtils.isEmpty(stringStringMap)) {
      log.info("开始读取系统配置文件 start");
      Map<String, String> stringStringMap=attributeMapConfig.getSystem_attrmap();
      log.info("集成系统属性映射配置文件条目数-》"+stringStringMap.size());
      //stringStringMap.put("RLM","D:\\RLM.xml");
      if(!CollectionUtils.isEmpty(stringStringMap)) {
         List<LibraryClsfDO> libraryClsfDOList=new ArrayList<>();
         try {
            log.info("info:需要读取配置文件");
            LibraryDO libraryDO = gennerAttrMapUtil.getNewInstance().gennerAttrMapBySystem(systemId, stringStringMap);
            List<LibraryClsfDO> libraryClsfDOList = libraryDO.getClsf();
            if(!CollectionUtils.isEmpty(libraryClsfDOList)) {
               Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
               String path=stringStringMap.get(systemId);
               if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
                  List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
                  propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
                  log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
               }else{
                  throw new Throwable("根据系统标识【"+systemId+"】找到对应的配置文件:【"+path+"】,但未获取到对应的库【"+libray+"】属性映射信息配置");
               }
            }
            libraryClsfDOList = libraryDO.getClsf();
         } catch (Throwable e) {
            objerrorCode = "1";
            e.printStackTrace();
            throw new Throwable("集成系统标识为:【" + systemId + "】,分类库为:【" + libray + "】的集成属性配置文件读取失败");
         }
         log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      }catch (Throwable e){
         objerrorCode="1";
         e.printStackTrace();
         throw new Throwable("MDM集成属性配置文件读取失败");
         // String path = stringStringMap.get(systemId);
         // 忽略key大小写,获取配置的映射文件路径
         String path = VciBaseUtil.getMapStrValueIgnoreCase(stringStringMap,systemId);
         if (!CollectionUtils.isEmpty(libraryClsfDOList)) {
            Map<String, List<ClsfAttrMappingDO>> libPropMaps = libraryClsfDOList.stream().collect(Collectors.toMap(LibraryClsfDO::getLibrary, LibraryClsfDO::getProp, (key1, key2) -> key2));
            log.info("根据参数:libray:-》" + libray + "从配置文件中找对应属性映射配置");
            if (libPropMaps.containsKey(libray.toUpperCase(Locale.ROOT))) {
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息");
               List<ClsfAttrMappingDO> clsfAttrMappingDOList = libPropMaps.get(libray.toUpperCase(Locale.ROOT));
               propMaps = clsfAttrMappingDOList.stream().collect(Collectors.toMap(ClsfAttrMappingDO::getSourceKey, ClsfAttrMappingDO::getTargetKey, (key1, key2) -> key2));
               log.info("根据参数:libray:-》" + libray + "匹配到相应的属性映射信息,属性映射条目数+" + clsfAttrMappingDOList.size());
            } else {
               objerrorCode = "1";
               throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
            }
         }else{
            objerrorCode = "1";
            throw new Throwable("根据系统标识【" + systemId + "】找到对应的配置文件:【" + path + "】,但未获取到对应的库【" + libray + "】属性映射信息配置");
         }
      }else{
         objerrorCode = "1";
         throw new Throwable("未获取到集成属性映射系统配置信息");
      }
      log.info("根据参数:libray:-》"+libray+"从配置文件中找对应属性映射配置 end ");
      LinkedList<String> rowNameList=new LinkedList<>();
      LinkedHashMap<String,Integer> filedIndexMap=new LinkedHashMap<>();
      //根据分类模板组织数据
      final int[] index = {0};
      try {
         //除去默认的属性.还有只有具有分类注入的才过滤出来
         codeClassifyTemplateAttrVOList = codeClassifyTemplateAttrVOList.stream().filter(
            s ->!DEFAULT_SYNC_ATTR_LIST.contains(s.getId()) &&
               ((Func.isNotEmpty(s.getClassifyInvokeAttr()) || Func.isNotEmpty(s.getClassifyInvokeAttrName())) || VciBaseUtil.getBoolean(s.getFormDisplayFlag()))
         ).collect(Collectors.toList());
         codeClassifyTemplateAttrVOList.stream().forEach(codeClassifyTemplateAttrVO -> {
            String attrName = codeClassifyTemplateAttrVO.getName();
            String field = codeClassifyTemplateAttrVO.getId();
@@ -2715,8 +2801,15 @@
    */
   private DockingSystemConfig  checkIspass(String systemId,String type,String operationType,String classOid){
      log.info("systemId:"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType)+",classOid:"+classOid);
      CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid);
      classOid=codeClassifyVO.getOid();
      //CodeClassifyVO codeClassifyVO= classifyService.getObjectByOid(classOid);
      List<CodeClassify> codeClassifyList=  classifyService.selectAllLevelParentByOid(classOid);
      List<String> classifyOids=new ArrayList<>();
      if(!CollectionUtils.isEmpty(codeClassifyList)) {
         classifyOids = codeClassifyList.stream().map(CodeClassify::getOid).collect(Collectors.toList());
      }else{
         return null;
      }
      //classOid=codeClassifyVO.getOid();
      //根据类型去查询需要集成的分类或者数据
      LambdaQueryWrapper<DockingSystemConfig> queryWrapper = Wrappers.<DockingSystemConfig>lambdaQuery();
      queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE);
@@ -2724,11 +2817,16 @@
      queryWrapper.eq(DockingSystemConfig::getDataFlowType,type);
      queryWrapper.eq(DockingSystemConfig::getPushType,operationType);
      if(StringUtils.isNotBlank(classOid)){
         queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid);
         queryWrapper.in(DockingSystemConfig::getClassifyOid,classifyOids);
      }
      List<DockingSystemConfig> dockingSystemConfigList=new ArrayList<>();
      dockingSystemConfigList=   dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper);
      if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
         return   dockingSystemConfigList.get(0);
      }else{
         return null;
      }
      /*if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
       return   dockingSystemConfigList.get(0);
      }else{
         if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) {
@@ -2739,6 +2837,6 @@
         return dockingSystemConfigList.get(0);
      }else{
         return   new DockingSystemConfig();
      }
      }*/
   }
}