xiejun
2023-09-05 eeeee637b25f37ebc0c7336bb78a7533c704f976
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -27,6 +27,7 @@
import com.vci.ubcs.code.vo.webserviceModel.classify.ResultClassifyVO;
import com.vci.ubcs.code.vo.webserviceModel.coderule.*;
import com.vci.ubcs.code.vo.webserviceModel.data.*;
import com.vci.ubcs.code.vo.webserviceModel.data.ResultDataVO;
import com.vci.ubcs.code.vo.webserviceModel.result.json.*;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultClassfyVO;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
@@ -58,7 +59,8 @@
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static com.vci.ubcs.code.constant.MdmEngineConstant.DEFAULT_SYNC_ATTR_LIST;
@@ -128,6 +130,7 @@
   @Autowired
   private ICodeClassifyValueService codeClassifyValueService;
   /***
    * 集成接口日志服务的配置
    */
@@ -149,7 +152,7 @@
   @Override
   public String applyCode(String data, String dataType) throws Throwable {
      String resultStr = "";
      String errorid="0";
      final String[] errorid = {"0"};
      msg="成功";
      objerrorCode="0";
      objerrorMsg="成功";
@@ -159,7 +162,7 @@
      List<XMLResultClassfyVO> resultClassfyVOList = new ArrayList<>();
      try {
         if(StringUtils.isBlank(data)) {
            errorid="101";
            errorid[0] ="101";
            throw new Throwable("接口参数:传递为空");
         }
         InterParameterVO interParameterVO  =new InterParameterVO();
@@ -175,17 +178,11 @@
               interParameterVO = JSONObject.toJavaObject(JSONObject.parseObject(data), InterParameterVO.class);
            }
         }catch (Throwable e){
            errorid="101";
            errorid[0] ="101";
            throw new Throwable("接口参数:传入数据参数解析失败");
         }
         ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
         systemId = interParameterVO.getData().getSystemId();
         //校验是否配置
         boolean checkPass= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue());
         if(!checkPass){
            errorid="101";
            throw new Throwable("系统标识为【"+systemId+"】,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
         }
         UserVO userVo = interParameterVO.getData().getUser();
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
@@ -196,20 +193,33 @@
         sessionInfo.setUserName(userVo.getTrueName());
         sessionInfo.setIp(userVo.getIp());
         VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
//         List<XMLResultDataObjectDetailDO> allResultDataObjectDetailDOS=new ArrayList<>();
         String finalSystemId = systemId;
         classVOList.stream().forEach(classVO -> {
            log.info("参数:分类COde:" + classVO.getClassCode());
            boolean isCodeOrGroupCode=false;
            LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
            String libray ="";
            //获取分类信息
            try {
               String libray = classVO.getLibrary();
               CodeClassifyVO codeClassifyVO = getClassfy(classVO);
               libray = classVO.getLibrary();
               CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray);
               log.info("end:分类查询完毕");
               //获取分类模板信息
               if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
                  objerrorCode="100";
                  throw  new  Throwable ("根据传输的分类,未获取到分类信息");
               }
               String operation="";
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig=null;
                  dockingSystemConfig=checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_APPCODE.getValue(),codeClassifyVO.getOid());
                  if(dockingSystemConfig==null){
                     errorid[0] ="101";
                     throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_APPCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
                  isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false;
               }
               CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
               if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
@@ -241,15 +251,30 @@
               CodeOrderDTO orderDTO = new CodeOrderDTO();
               orderDTO.setCodeClassifyOid(codeClassifyVO.getOid());//分类主键
               orderDTO.setSecDTOList(codeOrderSecDTOList);//分类码段
               mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs);
               mdmIOService.batchSyncApplyCode(orderDTO, dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode);
               //allResultDataObjectDetailDOS.add(resultDataObjectDetailDOs);
               log.info("end:申请获取完毕");
            } catch (Throwable e) {
               XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
               xmlResultDataObjectDetailDO.setCode("");
               xmlResultDataObjectDetailDO.setId("");
               xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
               xmlResultDataObjectDetailDO.setMsg("编码申请失败:"+e.getMessage());
               resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               List<ApplyDataVO> applyDataVOList= classVO.getObjects().getObject();
               objerrorCode="1";
               if(!CollectionUtils.isEmpty(applyDataVOList)) {
                  applyDataVOList.stream().forEach(applyDataVO -> {
                     XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                     xmlResultDataObjectDetailDO.setCode("");
                     xmlResultDataObjectDetailDO.setId(applyDataVO.getId());
                     xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                     xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage());
                     resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                  });
               }else{
                  XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                  xmlResultDataObjectDetailDO.setCode("");
                  xmlResultDataObjectDetailDO.setId("");
                  xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                  xmlResultDataObjectDetailDO.setMsg("编码申请失败:" + e.getMessage());
                  resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               }
               e.printStackTrace();
            }finally {
               XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
@@ -260,13 +285,14 @@
               resultClassfyVOList.add(resultClassfyVO);
            }
         });
         XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
         xmlResultSystemVO.setClassifys(resultClassfyVOList);
         xmlResultSystemVO.setMsg(msg);
         xmlResultSystemVO.setErrorid(errorid);
         xmlResultSystemVO.setErrorid(errorid[0]);
         resultStr= transferResultXMl(xmlResultSystemVO,dataType);
      }catch (Throwable e){
         e.printStackTrace();;
         e.printStackTrace();
         msg="申请编码失败:"+e.getMessage();
          /*  XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
            XMLResultSystemVO.setErrorid(errorid);
@@ -280,10 +306,10 @@
         XMLResultSystemVO xmlResultSystemVO=new XMLResultSystemVO();
         xmlResultSystemVO.setClassifys(resultClassfyVOList);
         xmlResultSystemVO.setMsg(msg);
         xmlResultSystemVO.setErrorid(errorid);
         xmlResultSystemVO.setErrorid(errorid[0]);
         resultStr= transferResultXMl(xmlResultSystemVO,dataType);
         final boolean[] issucess = {true};
         if(!errorid.equals("0")) {
         if(!errorid[0].equals("0")) {
            issucess[0] = false;
         }else {
            if(!CollectionUtils.isEmpty(resultClassfyVOList)) {
@@ -306,9 +332,10 @@
         }
      }
      log.info("返回参数:"+resultStr);
      //调用集团申请接口申请集团码
      return resultStr;
   }
   /***
    * 统一更新接口(更改状态,更改属性信息)接口
@@ -353,13 +380,6 @@
         }
         ClassfysVO classfysVO = interParameterVO.getData().getClassifys();
         systemId = interParameterVO.getData().getSystemId();
         //校验是否配置
         boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue());
         if (!checkPass) {
            errorid = "101";
            throw new Throwable("系统标识为【" + systemId + "】," + sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText() + "接口配置已停用或者未配置,请联系编码管理员!");
         }
         UserVO userVo = interParameterVO.getData().getUser();
         List<ClassfyVO> classVOList = classfysVO.getClassify();
         InterParameterVO finalInterParameterVO = interParameterVO;
@@ -372,16 +392,30 @@
         String finalSystemId = systemId;
         classVOList.stream().forEach(classVO->{
            log.info("参数:分类COde:" + classVO.getClassCode());
            boolean isCodeOrGroupCode=false;
            LinkedList<XMLResultDataObjectDetailDO> resultDataObjectDetailDOs = new LinkedList<>();
            String libray ="";
            //获取分类信息
            try {
               String libray = classVO.getLibrary();
               CodeClassifyVO codeClassifyVO = getClassfy(classVO);
               libray = classVO.getLibrary();
               CodeClassifyVO codeClassifyVO = getClassfy(classVO,libray);
               if(codeClassifyVO==null || StringUtils.isBlank(codeClassifyVO.getOid())){
                  objerrorCode="100";
                  throw  new  Throwable ("根据传输的分类,未获取到分类信息");
               }
               log.info("end:分类查询完毕");
               String operation="";
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig= checkIspass(finalSystemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getValue(),codeClassifyVO.getOid());
                  if(dockingSystemConfig==null){
                     objerrorCode ="101";
                     throw new Throwable("系统标识为【"+ finalSystemId +"】,集成分类为【"+codeClassifyVO.getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_EDITCODE.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
                  isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false;
               }
               //获取分类模板信息
               CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(codeClassifyVO.getOid());
               if(templateVO==null||StringUtils.isBlank(templateVO.getOid())){
@@ -397,15 +431,29 @@
               this.getConfigDatas(finalSystemId, libray, applyDatasVO, attrVOS, dataObjectVO);
               log.info("end:数据构建完毕");
               log.info("start:修改数据执行完毕");
               mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs);
               mdmIOService.batchSyncEditDatas(codeClassifyVO,dataObjectVO, resultDataObjectDetailDOs,isCodeOrGroupCode);
               log.info("end:修改数据执行完毕");
            } catch (Throwable e) {
               XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO=new XMLResultDataObjectDetailDO();
               xmlResultDataObjectDetailDO.setCode("");
               xmlResultDataObjectDetailDO.setId("");
               xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
               xmlResultDataObjectDetailDO.setMsg("编码更改/状态更改/删除:"+e.getMessage());
               resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               List<ApplyDataVO> applyDataVOList= classVO.getObjects().getObject();
               objerrorCode="1";
               if(!CollectionUtils.isEmpty(applyDataVOList)) {
                  applyDataVOList.stream().forEach(applyDataVO -> {
                     XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                     xmlResultDataObjectDetailDO.setCode("");
                     xmlResultDataObjectDetailDO.setId(applyDataVO.getId());
                     xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                     xmlResultDataObjectDetailDO.setMsg("编码更改/状态更改/删除:" + e.getMessage());
                     resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
                  });
               }else {
                  XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                  xmlResultDataObjectDetailDO.setCode("");
                  xmlResultDataObjectDetailDO.setId("");
                  xmlResultDataObjectDetailDO.setErrorid(objerrorCode);
                  xmlResultDataObjectDetailDO.setMsg("编码更改/状态更改/删除:" + e.getMessage());
                  resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
               }
               e.printStackTrace();
            }finally {
               XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
@@ -415,7 +463,6 @@
               resultClassfyVO.setObjects(resultDataObjectDetailDOs);
               resultClassfyVOList.add(resultClassfyVO);
            }
         });
      }catch (Throwable e){
         e.printStackTrace();;
@@ -680,15 +727,15 @@
            throw new Throwable(msg);
         }
         //校验是否配置
      /*   //校验是否配置
         boolean checkPass = checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue());
         if (!checkPass) {
            errorid = "101";
            throw new Throwable("系统标识为【" + systemId + "】," + sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText() + "接口配置已停用或者未配置,请联系编码管理员!");
         }
      */
         //先简称是否有关联模板,有模板要先删除
         boolean isCodeOrGroupCode=false;
         List<CodeClassify> libIdDos =classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId,library));
         if(!CollectionUtils.isEmpty(libIdDos)){
            CodeClassify libCodeClassify=libIdDos.get(0);
@@ -706,6 +753,17 @@
                  msg = "接口参数:classCode 未查询到对应的分类信息";
                  throw new Throwable(msg);
               }
               String operation="";
               if(CODE_CHECKCONFIG) {
                  //校验是否配置
                  DockingSystemConfig dockingSystemConfig= checkIspass(systemId, SysIntegrationDataFlowTypeEnum.ACCEPT.getValue(), sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getValue(),currentCodeClassify[0].getOid());
                  if(dockingSystemConfig==null){
                     errorid ="101";
                     throw new Throwable("系统标识为【"+ systemId +"】,集成分类为【"+currentCodeClassify[0].getName()+"】以上分类,"+sysIntegrationPushTypeEnum.ACCPET_QUERYDATA.getText()+"接口配置已停用或者未配置,请联系编码管理员!");
                  }
                  isCodeOrGroupCode="true".equals(dockingSystemConfig.getIsGroupCodeFlag())?true:false;
               }
               List<CodeClassifyVO> dataCodeClassifyVOList =new ArrayList<>();
               String oid= currentCodeClassify[0].getOid();
               TreeQueryObject treeQueryObject=new TreeQueryObject();
@@ -716,52 +774,55 @@
               Map<String, CodeClassifyVO> oidCodeclassifyDOMap = dataCodeClassifyVOList.stream().filter(systeDataObject -> systeDataObject != null && StringUtils.isNotBlank(systeDataObject.getOid())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
               List<PropertyVO>  propertyVOS=condtionVO.getPro();
               /*Map<String,String> condtionMap=new HashMap<>();
               propertyVOS.stream().forEach(propertyVO -> {
                  condtionMap.put(propertyVO.getFiledName(),propertyVO.getFiledValue());
               });
               condtionMap.put("codeclsfid", QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) + ")");
               List<String>statusList=new ArrayList<>();
               statusList.add(CodeDefaultLC.RELEASED.getValue());
               statusList.add(CodeDefaultLC.DISABLE.getValue());
               statusList.add(CodeDefaultLC.TASK_BACK.getValue());
               condtionMap.put("Lcstatus",  QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) + ")" );
               condtionMap.put("islastr", "1");
               condtionMap.put("islastv", "1");*/
               List<String>statusList=new ArrayList<>();
               statusList.add(CodeDefaultLC.RELEASED.getValue());
               statusList.add(CodeDefaultLC.DISABLE.getValue());
               statusList.add(CodeDefaultLC.TASK_BACK.getValue());
               R<BtmTypeVO>  r= btmTypeClient.getDetail(libCodeClassify.getBtmTypeId());
               BtmTypeVO btmTypeVO =r.getData();
               String tableName=btmTypeVO.getTableName();
               String tableName="";
               R<BtmTypeVO> r = btmTypeClient.getAllAttributeByBtmId(libCodeClassify.getBtmTypeId());
               if(!r.isSuccess()) {
                  throw new Throwable(r.getMsg());
               }
               BtmTypeVO btmTypeVO = r.getData();
               if (btmTypeVO == null) {
                  throw new Throwable("根据业务类型未查询到业务类型对象!");
               }
               tableName = btmTypeVO.getTableName();
               if (com.alibaba.nacos.common.utils.StringUtils.isBlank(tableName)) {
                  throw new Throwable("根据业务类型未查询到业务类型相关联的表");
               }
               StringBuffer sb=new StringBuffer();
               sb.append(" select * from  ");
               sb.append(tableName);
               sb.append(" where 1=1");
               propertyVOS.stream().forEach(propertyVO -> {
                  sb.append( " and  "+propertyVO.getFiledName()+"='"+propertyVO.getFiledValue()+"'");
               });
               if(isCodeOrGroupCode){
                  sb.append(" and groupcode is not null ");
               }
               if(!CollectionUtils.isEmpty(propertyVOS)) {
                  propertyVOS.stream().forEach(propertyVO -> {
                     sb.append(" and  " + propertyVO.getFiledName() + "='" + propertyVO.getFiledValue() + "'");
                  });
               }
               sb.append(" and lastr=1 and lastv=1" );
               sb.append(" and codeclsfid in (" + VciBaseUtil.toInSql(oidCodeclassifyDOMap.keySet().toArray(new String[0])) +")");
               sb.append(" and Lcstatus in (" + VciBaseUtil.toInSql(statusList.toArray(new String[]{})) +")");
               List<Map<String,String>>  newDataList= commonsMapper.queryByOnlySqlForMap(sb.toString());
               List<ClientBusinessObject>clientBusinessObjects=new ArrayList<>();
               newDataList.stream().forEach(stringStringMap -> {
                  ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
                  DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,clientBusinessObject);
                  clientBusinessObjects.add(clientBusinessObject);
               });
               List<ClientBusinessObject> clientBusinessObjects=   ChangeMapTOClientBusinessObjects(newDataList);
               List<com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO> dataObjectVOS=new ArrayList<>();
               if(!CollectionUtils.isEmpty(clientBusinessObjects)){
                  CodeClassifyTemplateVO templateVO = engineService.getUsedTemplateByClassifyOid(currentCodeClassify[0].getOid());
                  Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId(), t -> t));
                  Map<String, CodeClassifyTemplateAttrVO> filedAttributeMap = templateVO.getAttributes().stream().filter(attribute -> attribute != null && StringUtils.isNotBlank(attribute.getId())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
                  boolean finalIsCodeOrGroupCode = isCodeOrGroupCode;
                  clientBusinessObjects.stream().forEach(cbo -> {
                     com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO dataObjectVO=new com.vci.ubcs.code.vo.webserviceModel.data.DataObjectVO();
                     dataObjectVO.setCode(cbo.getId());
                     String code="";
                     if(finalIsCodeOrGroupCode){
                        code= cbo.getAttributeValue("groupcode");
                     }else {
                        code=cbo.getId();
                     }
                     dataObjectVO.setCode(code);
                     dataObjectVO.setStatus(cbo.getLcStatus());
                     String codeclsfid=cbo.getAttributeValue("codeclsfid");
                     if(oidCodeclassifyDOMap.containsKey(codeclsfid)){
@@ -772,9 +833,9 @@
                     String [] newQueryFileds=queryFileds.split(",");
                     List<PropertyVO> propertyVOList=new ArrayList<>();
                     for(String filed:newQueryFileds){
                        String value=cbo.getAttributeValue(filed);
                        if(filedAttributeMap.containsKey(filed)){
                           CodeClassifyTemplateAttrVO attrVO=  filedAttributeMap.get(filed);
                        if(filedAttributeMap.containsKey(filed.toLowerCase(Locale.ROOT))){
                           String value=cbo.getAttributeValue(filed);
                           CodeClassifyTemplateAttrVO attrVO=  filedAttributeMap.get(filed.toLowerCase(Locale.ROOT));
                           PropertyVO propertyVO=new PropertyVO();
                           propertyVO.setFiledName(filed);
                           propertyVO.setFiledValue(value);
@@ -818,7 +879,7 @@
         resultStr = object.toString();
      }
      try {    //记录日志
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryData");
      }catch (Throwable e){
         e.printStackTrace();
      }
@@ -1270,7 +1331,7 @@
      }
      try {
         //记录日志
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassify");
         this.saveLogs(systemId, systemId, data, resultStr, issucess, msg, "queryClassifyRule");
      }catch (Throwable e){
         e.printStackTrace();
      }
@@ -1282,7 +1343,7 @@
    * 查询校验分类信息
    * @param classfyVO
    */
   private  CodeClassifyVO getClassfy(ClassfyVO classfyVO) throws Throwable{
   private  CodeClassifyVO getClassfy(ClassfyVO classfyVO,String libray) throws Throwable{
      CodeClassifyVO classifyVO = new CodeClassifyVO();
      try {
         String classCode = classfyVO.getClassCode();
@@ -1291,13 +1352,19 @@
         if (StringUtils.isNotBlank(classfyVO.getClassCode())) {
            Map<String, String> conditionMap = new HashMap<>();
            List<CodeClassify> codeClassifyList = classifyService.selectByWrapper(Wrappers.<CodeClassify>query().lambda().eq(CodeClassify::getId, classCode));
            final CodeClassify[] newCodeClassify = {new CodeClassify()};
            if (!CollectionUtils.isEmpty(codeClassifyList)) {
               CodeClassify classifyDO = codeClassifyList.get(0);
               //将DTO转换为DO
               codeClassifyList.stream().forEach(codeClassify -> {
                  CodeClassifyVO codeClassifyVO=  classifyService.getTopClassifyVO(codeClassify.getOid());
                  if(codeClassifyVO.getId().equals(libray)){
                     newCodeClassify[0] =codeClassify;
                  }
               });
               classifyVO = new CodeClassifyVO();
               BeanUtilForVCI.copyPropertiesIgnoreCase(classifyDO, classifyVO);
               BeanUtilForVCI.copyPropertiesIgnoreCase(newCodeClassify[0], classifyVO);
               //将DTO转换为DO
               if(StringUtils.isBlank(classifyVO.getOid())){
                  throw new  Throwable("根据分类代号未查询到相应的分类信息");
                  throw new  Throwable("申请编码的分类:【"+classCode+"】不属于库节点【"+libray+"】,请检查参数分类节点/库节点信息是否匹配");
               }
            }else{
               throw new  Throwable("根据分类代号未查询到相应的分类信息");
@@ -1310,19 +1377,21 @@
         }
      }catch (Throwable e){
         objerrorCode="100";
         new  Throwable("获取分类信息失败:"+e.getMessage());
         throw    new  Throwable("获取分类信息失败:"+e.getMessage());
      }
      return classifyVO;
   }
   private List<ClientBusinessObject> ChangeMapTOClientBusinessObjects(List<Map<String,String>> oldDataMap){
      List<ClientBusinessObject> clientBusinessObjectList=new CopyOnWriteArrayList<>();
      oldDataMap.parallelStream().forEach(dataMap->{
      List<ClientBusinessObject> clientBusinessObjectList=new ArrayList<>();
      oldDataMap.stream().forEach(dataMap->{
         ClientBusinessObject clientBusinessObject=new ClientBusinessObject();
         DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(dataMap,clientBusinessObject);
         dataMap.forEach((key,value)->{
            clientBusinessObject.setAttributeValue(key,value);
         });
         for (String key:dataMap.keySet()){
            Object value= dataMap.getOrDefault(key,"");
            clientBusinessObject.setAttributeValue(key.toLowerCase(Locale.ROOT),value==null?"":value.toString());
         }
         clientBusinessObjectList.add(clientBusinessObject);
      });
      return clientBusinessObjectList;
   }
@@ -1521,6 +1590,7 @@
      dockingLoge.setParamString(parmaData);//参数信息
      dockingLoge.setReturnString(result);//返回信息
      dockingLoge.setType(operation);//日志操作类型
      dockingLoge.setCreateTime(new Date());
      if(isSucess) {
         dockingLoge.setInterfaceStatus("true");//接口集成状态
      }else{
@@ -1587,6 +1657,7 @@
    * @return
    */
   private boolean checkIspass(String systemId,String type,String operationType){
      log.info("systemId:"+systemId+",type:"+SysIntegrationDataFlowTypeEnum.getTextByValue(type)+",operationType:"+sysIntegrationPushTypeEnum.getTextByValue(operationType));
      if(!CODE_CHECKCONFIG) {
         return true;
      }
@@ -1598,4 +1669,35 @@
      queryWrapper.eq(DockingSystemConfig::getPushType,operationType);
      return dockingSystemConfigService.count(queryWrapper)>0?true:false;
   }
   /***
    * 校验是否做了配置
    * @param systemId,系统标识
    * @param type:接口类型
    * @param operationType:接口操作类型
    * @return
    */
   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();
      //根据类型去查询需要集成的分类或者数据
      LambdaQueryWrapper<DockingSystemConfig> queryWrapper = Wrappers.<DockingSystemConfig>lambdaQuery();
      queryWrapper.eq(DockingSystemConfig::getUsedFlag, MdmDuckingConstant.SEND_FLAG_TRUE);
      queryWrapper.eq(DockingSystemConfig::getSysBaseId,systemId);
      queryWrapper.eq(DockingSystemConfig::getDataFlowType,type);
      queryWrapper.eq(DockingSystemConfig::getPushType,operationType);
      if(StringUtils.isNotBlank(classOid)){
         queryWrapper.in(DockingSystemConfig::getClassifyOid,classOid);
      }
      List<DockingSystemConfig> dockingSystemConfigList=   dockingSystemConfigList=dockingSystemConfigService.list(queryWrapper);
      if(!CollectionUtils.isEmpty(dockingSystemConfigList)){
       return   dockingSystemConfigList.get(0);
      }else{
         if(StringUtils.isNotBlank(codeClassifyVO.getParentCodeClassifyOid())) {
            return checkIspass(systemId, type, operationType, codeClassifyVO.getParentCodeClassifyOid());
         }
      }
      return dockingSystemConfigList.get(0);
   }
}